
﻿function trim(s)
{return s.replace(/^\s+|\s+$/g,"");}
function clearErrorMessages(errorElement)
{errorElement.className='hide';errorElement.innerHTML='';}
function addErrorMessage(errorElement,message)
{errorElement.className='show';errorElement.innerHTML+=message+'<br />';}
function validate_form(form,errorId)
{var validated=true;var errorElement=document.getElementById(errorId);clearErrorMessages(errorElement);for(i=0;i<form.elements.length;++i)
{var inputElement=form.elements[i];if(inputElement.getAttribute('validation'))
{var validationListings=inputElement.getAttribute('validation')
var validations=validationListings.split(',');for(j=0;j<validations.length;++j)
{var timmedValidation=trim(validations[j]);var message='';var passedValidation=true;switch(timmedValidation)
{case'required':passedValidation=validate_required(inputElement);message=inputElement.name+' is required.';inputElement.focus();break;case'email':passedValidation=validate_email(inputElement);message=inputElement.name+' is not a proper email address.';break;case'url':passedValidation=validate_url(inputElement);message=inputElement.name+' is not a proper url (ie http://www.google.com)';break;case'zip':passedValidation=validate_zip(inputElement);message=inputElement.name+' is not a 5 digit zip code.';break;case'human':passedValidation=validate_human(inputElement);message=inputElement.name+' does not match the expected text.';break;default:alert(timmedValidation);}
if(!passedValidation)
addErrorMessage(errorElement,message);validated=validated&&passedValidation;}}}
return validated;}
function validate_regex(input,pattern)
{var value=trim(input.value);if(value=='')return true;var rx=new RegExp(pattern);var matches=rx.exec(value);return(matches!=null&&value==matches[0]);}
function validate_zip(input)
{return validate_regex(input,'\\d{5}');}
function validate_url(input)
{return validate_regex(input,'http(s)?://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?');}
function validate_email(input)
{return validate_regex(input,'\\w+([-+.\']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*');}
function validate_human(input)
{return input.value=='orange';}
function validate_required(input)
{return input.value!=null&&trim(input.value)!='';}