var validation={error:"",rAlpha:/^([\w\s]+)$/i,rNumeric:/^([\d\.]+)$/,rEmail:/^([a-z][\w\.\-]*@[\w\.\-]+\.[a-z]{2,3})$/i,rPhoneNumber:/^([0-9\(\)\+\s]{6,})$/,rJpg:/(.jpg)$/i,rDoc:/((.doc)|(.pdf))$/i,rDate:/(\d\d\/\d\d\/\d\d\d\d)$/i,init:function(){for(var i in document.forms){if(document.forms[i].validation){document.forms[i].onsubmit=function(){return validation.validate(this);};};};},validate:function(form){var fields=form.validation.value.split(";");for(var i in fields){fields[i]=fields[i].split(":");fields[i][2]=fields[i][2].split(",");field=eval("form."+ fields[i][1])
for(var ii in fields[i][2]){switch(fields[i][2][ii]){case"required":if(field.value==""){validation.showError("'"+ fields[i][0]+"' is a required field.",field);return false;};break
case"alpha":if(field.value!==""&&!validation.rAlpha.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts alpha characters only. (a-Z)",field);return false;};break
case"numeric":if(field.value!==""&&!validation.rNumeric.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts numeric characters only.",field);return false;};break
case"email":if(field.value!==""&&!validation.rEmail.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts valid email addresses only.",field);return false;};break
case"jpg":if(field.value!==""&&!validation.rJpg.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts .jpg files only.",field);return false;};break
case"doc":if(field.value!==""&&!validation.rDoc.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts .doc and .pdf files only.",field);return false;};break
case"date":if(field.value!==""&&!validation.rDate.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts valid dates only. (dd/mm/yyyy)",field);return false;};break};};};},showError:function(error,field){var DIVs=tag("div",field.parentNode.parentNode);for(var i=0;i<DIVs.length;i++){if(DIVs[i].className=="error")DIVs[i].parentNode.removeChild(DIVs[i]);DIVs[i].firstChild.className="";};var errorDiv=document.createElement("div")
errorDiv.className=field.parentNode.firstChild.className="error";errorDiv.appendChild(document.createTextNode(error));field.parentNode.parentNode.insertBefore(errorDiv,field.parentNode);var dy=errorDiv.offsetTop;var thisNode=errorDiv;while(thisNode.offsetParent&&(thisNode.offsetParent!=document.body)){thisNode=thisNode.offsetParent;dy+=thisNode.offsetTop;}
window.scrollTo(0,dy)}};addDOMLoadEvent(validation.init);
