
  function onInputFocus(eventObj) 
  {
		var inputBox=getEventSrc(eventObj);
		if (inputBox==null) 
		{
				return;
		}
		revertToOriginalStyle(inputBox);
		//alert(inputBox.name);
		//revertToOriginalStyle(getInputLabel(inputBox.name));
		if (inputBox.value == inputBox.getAttribute("title")) 
		{
				inputBox.value="";
		}
  }
  
  function onInputBlur(eventObj) 
  {
	var inputBox=getEventSrc(eventObj);
	if (inputBox==null) {
		return;
	}
	if (inputBox.value == "" && inputBox.getAttribute("title") != "") 
	{
		setEmptyInputClass(inputBox);
		inputBox.value=inputBox.getAttribute("title");
	}
  }

 function onFormSubmit(eventObj) 
 {
	var submittedForm=getEventSrc(eventObj);
	if (submittedForm==null) 
	{
		return; 
	}
	var inputElements = submittedForm.getElementsByTagName("input");
	for (var i=0; i<inputElements.length; i++) 
	{
		var inputElement = inputElements[i];
		removeDefaultText(inputElement);
	 }
	return true;
 }
  
function setEmptyInputClass(inputElement) 
{
	changeStyle(inputElement,"EmptyInput");
}


function useDefaultText(inputElement) 
{
	if (inputElement.nodeName.toLowerCase()=="input" && inputElement.getAttribute("type")=="text" && inputElement.getAttribute("title") && inputElement.getAttribute("title").length && ((inputElement.value=="")||(inputElement.value==inputElement.getAttribute("title"))) ) 
	{
        inputElement.value=inputElement.getAttribute("title");
        return true;
    } 
    else 
    {
        return false
    }
}

function removeDefaultText(inputElement) 
{
	if(null != inputElement)
	{
		if (inputElement.nodeName.toLowerCase()=="input" && inputElement.getAttribute("type")=="text" && inputElement.getAttribute("title") && inputElement.value==inputElement.getAttribute("title")) 
		{
			inputElement.value="";
		}
	}
}
  function defaultInputText() {
   if (!document.getElementsByTagName) return;
   var inputElements = document.getElementsByTagName("input");
   for (var i=0; i<inputElements.length; i++) {
    var inputElement = inputElements[i];
    if (useDefaultText(inputElement)) {
        addEvent(inputElement, "focus", onInputFocus);
        addEvent(inputElement, "blur", onInputBlur);
        addEvent(inputElement, "click", onInputFocus);
       // inputElement.setAttribute('autocomplete','off');
	setEmptyInputClass(inputElement);

    }
   }
   for (var i = 0; i < document.forms.length; i++) {
    addEvent(document.forms[i], "submit", onFormSubmit);
   }

  }
  function setSubmitButtonRollovers() 
  {
  
  	var buttonElements = document.getElementsByTagName("input");
  	
	for (var i=0; i<buttonElements.length; i++) 
	{
		var buttonElement = buttonElements[i];	
		if ( (buttonElement.getAttribute("type")=="submit")) {

			//&& (buttonElement.className.indexOf("submit")==0) ) 
		
			addEvent(buttonElement, "mouseover", onButtonMouseOver);
			addEvent(buttonElement, "mouseout", onButtonMouseOut);
		}
	}
}
function onButtonMouseOver(eventObj) {

	var buttonElement=getEventSrc(eventObj);
	changeStyle(buttonElement,"Hover");
	
	
}
function onButtonMouseOut(eventObj) {
	var buttonElement=getEventSrc(eventObj);
	revertToOriginalStyle(buttonElement);
}


var validationForms={};
function trim(sString) 
{
	while (sString.substring(0,1) == ' ')
	{
			sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ')
	{
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}

function validateForm(parameter) {
  var eventObj = getEventSrc(parameter);
  var formObj=parameter;
  if (typeof(parameter)=="string") {
  	formObj=document.forms[parameter];
  }
   if ( (typeof(formObj) != "object") || (!formObj.nodeName) ||  (formObj.nodeName.toLowerCase() != "form" ) ) {
	formObj=eventObj;
   }
   var submittedForm=formObj;
   var formname = submittedForm.id;
   var formfieldlist = validationForms[formname];
   if (formfieldlist == null) {
   	// no fields are there to be validated
   	return true;
   } else {
   	var formvalid = true;
   	var firstErrorField = null;
   	// iterate through each field
	for (var fieldname in formfieldlist) {
		// execute each validation function
		if (fieldname!="_callbackfunction") {
			var validationObjectList = formfieldlist[fieldname];
			var inputObject = submittedForm[fieldname];
			
			if(null != inputObject)
			{
     			removeDefaultText(inputObject);
     			inputObject.value=trim(inputObject.value);
     			var inputLabel=null;
				var fieldValid=true;
				for (var i=0;fieldValid && i<validationObjectList.length;i++) {
					// if we get a false result set the style of the input
					inputLabel = validationObjectList[i]["label"];
					if (!validationObjectList[i]["validationFunction"](inputObject)) {
						fieldValid=false;
					} else {
						revertToOriginalStyle(inputLabel);
					}
				}
				if (!fieldValid) {
					formvalid=false;
					useDefaultText(inputObject);
					if (firstErrorField==null) {
						firstErrorField=inputObject;

					}
					changeStyle(inputObject,"FormFieldError");
					changeStyle(inputLabel,"FormFieldError");
				} else {
					revertToOriginalStyle(inputObject);
				}
			}	
			
		}	
	}
	// return the result
	
	if (!formvalid && typeof parameter.cancelable != 'undefined') {
	    	parameter.preventDefault();
	    	parameter.preventDefault();
	 } 
	 if (!formvalid) {
		alert("Sorry. You have not filled in the form correctly. Please check you have filled in all the required fields.");
		if (firstErrorField!=null) {
			firstErrorField.focus();

		}
	 }
	 if (formvalid) {
		if (validationForms[formname]["_callbackfunction"] != null) {
			validationForms[formname]["_callbackfunction"]();
		}
	 }
	return formvalid;
   }
   
}

function requiredField(inputObj) {
	if(null != inputObj)
	{
		return (inputObj.value.length>0);
	}
	return false;
}

function requiredDropDownField(inputObj) {
	if(null != inputObj)
	{
		var selectedNum = inputObj.selectedIndex;
		var selectedOption = inputObj.options[selectedNum];
		return (selectedOption.value.length>0);
	}
	return false;
}
function emailField(inputObj) {
	var str = inputObj.value;
	var at="@";
	var dot=".";
	var lat=str.indexOf(at);
	var lstr=str.length;
	var ldot=str.indexOf(dot);
	if (str.indexOf(at)==-1){
	   return false;
	}

	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false;
	}

	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false;
	}

	 if (str.indexOf(at,(lat+1))!=-1){
	    return false;
	 }

	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false;
	 }

	 if (str.indexOf(dot,(lat+2))==-1){
	    return false;
	 }

	 if (str.indexOf(" ")!=-1){
	    return false;
	 }
 	return true;
}

function getInputLabel(inputname)
{
	if (!document.getElementsByTagName) return null;
  	var labelElements = document.getElementsByTagName("label");
	for (var i=0; i<labelElements.length; i++) 
	{
		var labelElement = labelElements[i];
		if (labelElement.attributes["for"] && (labelElement.attributes["for"].value ==inputname))
		{
			return labelElement;
		}
	}
	
	return null;
}


function createValidatedInputObj(inputname,validationFunction)
{
	var validatedInputObj = new Object();
	validatedInputObj["inputname"] = inputname;
	validatedInputObj["validationFunction"] = validationFunction;
	validatedInputObj["label"] = getInputLabel(inputname);
	
	return validatedInputObj;
}

function callIfFormIsValid(formname,callbackFunction) {
	if (validationForms[formname]==null) {
		validationForms[formname]={};
	}
	validationForms[formname]["_callbackfunction"]=callbackFunction;
}
function addValidatedInput(formname,inputname,validationFunction) {
	if (validationForms[formname]==null) {
		validationForms[formname]={};
  		addEvent(document.forms[formname], "submit", validateForm);
	}
	if (validationForms[formname][inputname]==null) {
		validationForms[formname][inputname]=[];
	}
	var vlInputObj = createValidatedInputObj(inputname,validationFunction);
	validationForms[formname][inputname][validationForms[formname][inputname].length]=vlInputObj;
}
  addEvent(window, "load", defaultInputText);
  addEvent(window, "load", setSubmitButtonRollovers);
  
