	var curDateBox;
	var curCalendar;
	var show = false;
	
	
	var buttonPOSArray2 = new Array();
	var buttonPOS2;
	var hideTimeOut2;
	var genericMenu;
	
	//returns true or false based on a word being found in a string	
	function countInstances(string, word) {
		var substrings = string.split(word);
		return substrings.length - 1;
	}
	
	function findPos2(obj) {
		var curleft = curtop = 0;
		if (obj.offsetParent) {
			curleft = obj.offsetLeft
			curtop = obj.offsetTop
			while (obj = obj.offsetParent) {
				curleft += obj.offsetLeft
				curtop += obj.offsetTop
			}
		}
		return [curleft,curtop];
	}
	
	doSubmit = true;
	
	function validate(f){
		for(i=0;i<f.elements.length;i++){
			if(countInstances(f.elements[i].className, 'required')){
				if(f.elements[i].value == ""){
					f.elements[i].className = "requiredMissing"
					doSubmit = false;
				}
			}
		}
		if(doSubmit){
			return true;
		}else{
			alert("Shaded fields are required");
			return false;
		}
	}
	
	function showCal(dateField,div){
		curDateBox = dateField;
		curCalendar = document.getElementById(div);
		buttonPOS2 = findPos2(dateField).toString();
		buttonPOSArray2 = buttonPOS2.split(",");
		xPos = parseInt(buttonPOSArray2[0]);
		xPos = xPos.toString() + "px";
		yPos = parseInt(buttonPOSArray2[1]);
		yPos = yPos.toString() + "px";
		curCalendar.style.display = "block";
		curCalendar.style.left = yPos;
		curCalendar.style.left = xPos;
		show = true;
	}
	
	function useDate(type,args,obj){
		var dates = args[0];   
		var date = dates[0];   
		var year = date[0], month = date[1], day = date[2];   
		//var txtDate1 = document.getElementById("date1");
		//txtDate1.value = month + "/" + day + "/" + year;  
		curDateBox.value = month + "/" + day + "/" + year;
		curCalendar.style.display = "none";
		//alert(dates);
	}
	
	function hideCal(){
		hideTimer = setTimeout("hideCal2()",200);
	}
	
	function hideCal2(){
		curCalendar.style.display = "none";
	}
	
	function cancelTimer(){
		show = false;
		clearTimeout(hideTimer);
	}
	
	function doOnClickBody(){
		if(curCalendar){
			if(curCalendar.style.display == "block"){
				if(!show){
					hideCal();
				}
			}
		}
	}
	
	function buildCal(calID){
		myString = "<div id=\"dateField\"><input type=\"text\" size=\"10\" name=\"" + calID + "_input\" value=\"\" onClick=\"showCal(this,'" + calID + "');\" onBlur=\"hideCal();\"></div>";
		myString = myString + "<div id=\"" + calID + "\" style=\"display:none;position:absolute;\"></div>";
		return document.write(myString);
	}
	
	function callCal(calID){
		var cal1 = new YAHOO.widget.Calendar(calID)
		cal1.selectEvent.subscribe(useDate, cal1, true)
		cal1.changePageEvent.subscribe(cancelTimer)
		cal1.render()
	}

	document.onclick = doOnClickBody;
	
	function checkRequired(type,inputField){
		if(type == "normal"){
			if(inputField.value == ""){
				alert("This field is required: Please enter a value");
				inputField.className = "requiredMissing";
			}else{
				inputField.className = "required";
			}
		}else if(type == "email"){
			if((inputField.value == "") || echeck(inputField.value)==false){
				alert("This field is required: Please enter a valid Email Address");
				inputField.className = "requiredMissing";
			}else{
				inputField.className = "required";
			}
		}else if(type == "num"){
			if((inputField.value == "") || IsNotNumber(inputField.value)==false){
				alert("This field is required: Please enter only Numbers");
				inputField.className = "requiredMissing";
			}else{
				inputField.className = "required";
			}
		}
	}
	
	function findRequired(){
		formInputs = document.getElementById("template").getElementsByTagName("input");
		for(i=0;i<formInputs.length;i++){
			if(formInputs[i].className == "required"){
				formInputs[i].onblur = function(){
								checkRequired('normal',this);
							};
			}
			if(formInputs[i].className == "requiredEmail"){
				formInputs[i].onblur = function(){
								checkRequired('email',this);
							};
			}
			if(formInputs[i].className == "requiredNumber"){
				formInputs[i].onblur = function(){
								checkRequired('num',this);
							};
			}
		}	
	}
	
	function IsNotNumber(theString){
		var IsFound = /^-?\d+$/.test(theString);
		return IsFound;
	}
	
	function echeck(str) {
		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 init(){
		findRequired();
	}
	window.onload = init;