var validation={error:"",rAlpha:/^([\w\s]+)$/i,rNumeric:/^([\d\.]+)$/,rEmail:/^([a-z0-9][\w\.\-]*@[\w\.\-]+\.[a-z]{2,3})$/i,rJpg:/(.jpg)$/i,rDate:/(\d\d\/\d\d\/\d\d\d\d)$/i,rUrl:/^localhost|^([a-z][\w\-]*\.[\w\-]+(\.[a-z]{2,3})+[\/\w\-]*)$/i,rPostcode:/^([A-PR-UWYZ0-9][A-HK-Y0-9][AEHMNPRTVXY0-9]?[ABEHMNPRVWXY0-9]? {1,2}[0-9][ABD-HJLN-UW-Z]{2}|GIR 0AA)$/,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.substring(0,form.validation.value.length- 1).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,form);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,form);return false;};break
case"numeric":if(field.value!==""&&!validation.rNumeric.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts numeric characters only.",field,form);return false;};break
case"email":if(field.value!==""&&!validation.rEmail.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts valid email addresses only.",field,form);return false;};break
case"jpg":if(field.value!==""&&!validation.rJpg.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts .jpg files only.",field,form);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,form);return false;};break
case"url":if(field.value!==""&&!validation.rUrl.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts valid URLs only.",field,form);return false;};break
case"postcode":if(field.value!==""&&!validation.rPostcode.test(field.value)){validation.showError("'"+ fields[i][0]+"' accepts valid UK postcodes only.",field,form);return false;};break};};};},showError:function(error,field,form){var DIVs=tag("div",form);for(var i=0;i<DIVs.length;i++){if(DIVs[i].className=="error")DIVs[i].parentNode.removeChild(DIVs[i]);if(DIVs[i].firstChild.className)DIVs[i].firstChild.className=DIVs[i].firstChild.className.replace(/(\s)?error/,"");};var errorDiv=document.createElement("div")
errorDiv.className="error";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);
