// copyright 2008 Damien Watson, damien.watson@gmail.com

var autoform = {

	errs : 0,
	el : null,
	emptyString : /^\s*$/,
	email : /^[^@]+@[^@.]+\.[^@]*\w\w$/,
	msg : '',

	message : function(){
		alert(autoform.msg);
	},

	validate : function(e){

try{

		if (!e) e = window.event;
		if(e.target) autoform.el = e.target
		else if(e.srcElement) autoform.el = e.srcElement;
		else return false;

		// diable button
// 		var e_button = xGetElementById(el);
// 		e_button.disabled = true;
// 		e_button.value = 'Loading ...';
// 		xAddClass(e_button, 'disabled');

		autoform.errs = 0;
		autoform.msg = '';

		var fields = xGetElementsByClassName('validate',autoform.el);

		for(var i = 0, j = fields.length; i < j; i++){

			// required field
			if(autoform.validatePresent(fields[i])){
				xRemoveClass(fields[i], 'error');

				// valid email field
				if(xHasClass(fields[i], 'email')){
					if(!autoform.validateEmail(fields[i])){
	
						autoform.msg += "\tInvalid email address.\n";
	
						xAddClass(fields[i], 'error');
						autoform.errs++;
					}
				}
				// co-ordinates?

			}else{
				autoform.msg += "\t" + ucfirst(fields[i].name) + " is a required field.\n";
				xAddClass(fields[i], 'error');
				autoform.errs++;
			}
		}

		if(autoform.errs > 0){

			var errors;
			if (autoform.errs > 1){
				autoform.msg = "There are errors which need correcting:\n" + autoform.msg;
			}
			if (autoform.errs == 1){
				autoform.msg = "There is an error which needs correcting:\n" + autoform.msg;
			}
			autoform.message();

			e.cancelBubble = true; // ie
			e.returnValue = false; // ie

			if (e.stopPropagation) { // w3c
				e.stopPropagation();
				e.preventDefault();
			}

		}

}catch(e){
	alert(e);
}


	},

	validateEmail : function(oInput){

		if (autoform.email.test(oInput.value)) {
			return true;
		}else{
			return false;
		}
	},

	validatePresent : function(oInput){

		if (autoform.emptyString.test(oInput.value)) {
			return false;
		}else{
			return true;
		}
	},

	validateSelected : function (v_el,i_el){

// 		vfld = xGetElementById(v_el);
// 		ifld = xGetElementById(i_el);
// 	
// 		if(vfld.tagName == 'SELECT'){
// 	
// 			vidx = vfld.selectedIndex;
// 			vval = vfld.options[vidx].value;
// 	
// 			if (vval == 0) {
// 				msg (ifld, "error", "Required field.");
// 				vfld.focus();
// 				return false;
// 			}
// 		}
// 		return true;
	},

	trim : function(str){
		return str.replace(/^\s+|\s+$/g, '');
	}
}

var bom = {

	base: 'http://www.ibistilogy.com:8080',
	events : [],

	load : function(){

		if(xGetElementById('addMessageForm')){
			xAddEventListener(xGetElementById('addMessageForm'), 'submit', autoform.validate);
		}
	},

	unload : function(){

		// destroy event listeners
		for(var i = 0, j = bom.events.length; i < j; i++){
			xRemoveEventListener(bom.events[i][0], bom.events[i][1], bom.events[i][2], bom.events[i][3]);
		}
	}
}

// document.write('<link rel="stylesheet" type="text/css" media="all" href="' + bom.base + '/skins/main/css/javascript.css">');

function ucfirst(s) {
	return s.charAt(0).toUpperCase() + s.substr(1, s.length-1);
}

xAddEventListener(window, 'load', bom.load);
xAddEventListener(window, 'unload', bom.unload);