
window.onload = attachFormHandlers;
function attachFormHandlers() {
	if (document.getElementsByTagName) {
		var objForm = document.getElementsByTagName('form');
		for (var iCounter=0; iCounter<objForm.length; iCounter++)
			objForm[iCounter].onsubmit = function(){return checkForm(this);}
	}
}

function InStr(strSearch, charSearchFor) {
	var i;
	for (i=0; i < Len(strSearch); i++) {
	    if (charSearchFor == Mid(strSearch, i, Len(charSearchFor))) { return i; }
	}
	return -1;
}
function Mid(str, start, len) {
	if (start < 0 || len < 0) return "";
	var iEnd, iLen = String(str).length;
	if (start + len > iLen) { iEnd = iLen; } else { iEnd = start + len; }
	return String(str).substring(start,iEnd);
}
function Len(str) {  return String(str).length;  }
function checkForm(objForm) {
	var arClass, bValid;
	var objField = objForm.getElementsByTagName('*');
	
	var msg = "";
	var errorCount = 0;

	for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++) {
		arClass = objField[iFieldCounter].className.split(' ');
		bValid = true;

		for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++) {
			switch (arClass[iClassCounter]) {
				case 'string':
					bValid = cFisString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
					break;
				case 'number' :
					bValid = cFisNumber(objField[iFieldCounter].value);
					break;
				case 'email' :
					bValid = cFisEmail(objField[iFieldCounter].value);
 					break;
 				case 'select':
 					bValid = cFisSelected(objField[iFieldCounter].value);
 					break;
 				case 'checkbox':
 					bValid = cFisChecked(objField[iFieldCounter]); 					
 					break;
				default:
			}
		}
		var el_alert = document.getElementById("f_"+objField[iFieldCounter].id);
		
		tmpClassName = objField[iFieldCounter].className;
		objField[iFieldCounter].className = tmpClassName.replace(" errorfield","");
		if (bValid == false) {
			msg += 'Please review the value you provided for ' + objField[iFieldCounter].name+'<br/>';
			
			objField[iFieldCounter].className += " errorfield";
			if(errorCount==0) {
				objField[iFieldCounter].focus();
			}
			if(el_alert) { el_alert.style.display=""; }
			errorCount++;
		} else {
			if(el_alert) { el_alert.style.display="none"; }				
		}
	}
	var el_error_msg = document.getElementById("f_error_msg_"+objForm.name);
	if(el_error_msg == null)return true;
	
	if(objForm.name == 'contact'){
		if(document.getElementById("contact_email").value != '' || document.getElementById("contact_phone").value != ''){
			if(document.getElementById("contact_email").value == ''){
				errorCount--;
			}
			if(document.getElementById("contact_phone").value == ''){
				errorCount--;
			}
			
			document.getElementById("contact_email").className = document.getElementById("contact_email").className.replace(" errorfield","");
			document.getElementById("contact_phone").className = document.getElementById("contact_phone").className.replace(" errorfield","");
		}
	}
	if(objForm.name == 'book'){
		if(document.getElementById("book_email").value != '' || document.getElementById("book_phone").value != ''){
			if(document.getElementById("book_email").value == ''){
				errorCount--;
			}
			if(document.getElementById("book_phone").value == ''){
				errorCount--;
			}
			
			document.getElementById("book_email").className = document.getElementById("book_email").className.replace(" errorfield","");
			document.getElementById("book_phone").className = document.getElementById("book_phone").className.replace(" errorfield","");
		}
	}	
			
	if(errorCount==0) {
		el_error_msg.style.display="none";
		if(objForm.name == 'contact')document.getElementById("contact_description").style.display = '';
		if(objForm.name == 'book')document.getElementById("book_description").style.display = '';		
		return true;
	} else {
		el_error_msg.style.display="";
		if(objForm.name == 'contact')document.getElementById("contact_description").style.display = 'none';
		if(objForm.name == 'book')document.getElementById("book_description").style.display = 'none';
		return false;
	}
}

function cFisString(strValue) {
	return (typeof strValue == 'string' && strValue != '' && isNaN(strValue));
}

function cFisSelected(strValue) {
	 if(strValue!='') {
		return true;
 	} else {
 		return false;
 	}
}

function cFisChecked(item) {
	 if(item.checked==true) {
		return true;
 	} else {
 		return false;
 	}
}

function cFisNumber(strValue) {
	strValue = strValue.replace(",",".");
	return (!isNaN(strValue) && strValue != '');
}

function cFisEmail(strValue) {
	var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;
	return (strValue != '' && objRE.test(strValue));
}

