// JavaScript Document
/* This requires js-functions.js that contains validate_phone & validate_email */
function requestWidget_init() {
	
	$$("form.rwForm").each(function(el){
        el.onsubmit = RW_bind
    });

}

function RW_bind(event) {
	var event = new Event(event);
	// stop default behaviour
    event.preventDefault();    
    // remove click border
    this.blur();	
	if(RW_validateForm(this)) {		
		RW_submitForm(this);
	}
    this.onsubmit = RW_bind;
    return false;
}

function RW_validateForm(form) {
	frmPassed = true;
	for(e=0;e<form.elements.length;e++) {
		el = form.elements[e];
		elClasses = el.className.split(" ");
		elPassed = true;
		elIgnore = true;	
		elMsgId = "";
		for(c=0;c<elClasses.length;c++) {	
			// get class name
			if(elClasses[c].indexOf(':') > -1) {
				thisClass = elClasses[c].substring(0,elClasses[c].indexOf(':'));
				thisClassParams = elClasses[c].substring(elClasses[c].indexOf(':')+1,elClasses[c].length);				
			} else {
				thisClass = elClasses[c];
				thisClassParams = "";
			}
			
			if(thisClass == 'rwRequired') { 
				elIgnore = false;
				if(isEmptyField(el.value)) { 
					elPassed = false; 
				}
			} else if(thisClass == 'rwMinLen') {
				if(!isNaN(thisClassParams)) {
					elIgnore = false;
					if(el.value.length < thisClassParams) { 
						elPassed = false; 
					}
				}
			} else if(thisClass == 'rwEmail') { 
				elIgnore = false;
				if(!validate_email(el.value)) { 
					elPassed = false; 
				}
			} else if (thisClass == 'rwPhone') { 
				elIgnore = false;
				if(!validate_phone(el.value)) { 
					elPassed = false; 
				}
			} else if (thisClass == 'rwMsgId') {
				elMsgId = thisClassParams;
			}
		}
		
		if(!elIgnore) {	RW_hilightElement(el,elPassed,elMsgId) };
		if(!elPassed) { frmPassed = false }
	}
	
	return frmPassed;
}

function RW_hilightElement(el,passed,elMsgId) {
	elClasses = el.className.split(" ");
	if(passed) {
		newClassList = 'rwValidationPassed';
		if(elMsgId != '')$(elMsgId).className = 'rwMessage';
	}
	else {
		newClassList = 'rwValidationFailed';
		if(elMsgId != '')$(elMsgId).className = 'rwMessageFailed';	
	}
	for(c=0;c<elClasses.length;c++) {
		// remove validation hilight classes
		thisClass = elClasses[c];
		if((thisClass != 'rwValidationPassed') && (thisClass != 'rwValidationFailed')) { newClassList += ' '+thisClass}		
	}
	el.className = newClassList;	
}

function RW_submitForm(form) {
	
	if(form.className.indexOf("rwNormalSubmit") != -1) {
		form.submit();
	} else {
		// Get the requested
		new Request.HTML({
			url: form.action,
			update: $(form.parentNode.id),
			onComplete: function() {if(typeof eMT_init == 'function') { eMT_init();	}}
		}).post(form);
	}
}

