/*
Script: form.js
	Contains <TForm>

Author:
	Alan Roemen
	July 29, 2008

Class: TForm
	v0.1 - Added function `submit`. Only allows submit to be executed once

Options:
	baseURL: Base directory for script. Default: false
	scriptName: Name of javascript file. Default: 'form'
*/

var TForm = new Class({
	options: {
		baseURL: false,
		scriptName: 'form'
	},	

	initialize: function(options) {
		this.setOptions(options);
		
		// Get script base path
		if(!this.options.baseURL) {
			var elements = document.getElementsByTagName('script');
			for (var i=0; i<elements.length; i++) {
				if (elements[i].src && (elements[i].src.indexOf(this.options.scriptName+'.js') != -1)) {
					var src = elements[i].src;
					this.options.baseURL = src.substring(0, src.lastIndexOf('/'));
					break;
				}
			}
			// Get document base path
			this.documentBasePath = document.location.href;
			if (this.documentBasePath.indexOf('?') != -1)
				this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.indexOf('?'));
			this.documentBasePath = this.documentBasePath.substring(0, this.documentBasePath.lastIndexOf('/'));
			if (this.options.baseURL.indexOf('://') == -1 && this.options.baseURL.charAt(0) != '/')
				this.options.baseURL = this.documentBasePath + "/" + this.options.baseURL;
		}
		
		// Collect Forms
		this.forms = [];
		$$('form').each(function(el){
			var id = this.forms.length;
			el.addEvent('submit', function(e){
				this.submit(e, id);
			}.bindWithEvent(this));
			this.forms.push({
				'form': el,
				'submitted': false
			});
		}.bind(this));
	},

	submit: function(e, id){
		e = new Event(e);
		if(this.forms[id].submitted) { e.stop(); return; }
		this.forms[id].submitted = true;
	}
});

TForm.implement(new Options, new Events);
window.addEvent('domready', function(){ new TForm(); });