var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function noSpam(user,domain) {
	locationstring = "mailto:" + user + "@" + domain;
	window.location = locationstring;
	}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr,fldName){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format for the "+fldName+" field should be : mm/dd/yyyy")
		return false
	}
	if (month<1 || month>12){
		//alert("Please enter a valid month in the "+fldName+" field")
		return false
	}
	if (day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day  in the "+fldName+" field")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear +" in the "+fldName+" field")
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date in the "+fldName+" field")
		return false
	}
return true
}
function isEmail(cur){
			var string1=cur
			if (string1.indexOf("@") == -1 || string1.indexOf(".") == -1)
			{
			return false;
			}else{
			return true;}

}


function validate(theForm) {

		var errors="";
		var setFocus=0;
		var started=false;
		var startAt;
		var firstErrorNode;
		var frmInputs = theForm.getElementsByTagName("input");	
		for (f=0; f < frmInputs.length; f++) {
				theField=frmInputs[f];
				
				if(theField.getAttribute('required')=='true' && theField.value == "" )
				{	
					if (!started) {
					started=true;
					startAt=f;
					firstErrorNode="input";
					}
					
					if(theField.getAttribute('message')==undefined){
					 	errors += theField.name.toUpperCase() + ' is required\n';
						 }
					 else
						 {
						 errors += theField.getAttribute('message') + '\n';
					 }			
				}
				else if(theField.getAttribute('validate') != undefined && theField.getAttribute('validate').toUpperCase()=='EMAIL' && !isEmail(theField.value))
				{	
					if (!started) {
					started=true;
					startAt=f;
					firstErrorNode="input";
					}
					
					if(theField.getAttribute('message')==undefined){
					 	 errors += theField.name.toUpperCase() + ' must be a valid email address\n';
						 }
					 else
						 {
						 errors += theField.getAttribute('message') + '\n';
					 }					
				}
				else if(theField.getAttribute('validate') != undefined && theField.getAttribute('validate').toUpperCase()=='MATCH' 
						&& theField.getAttribute('matchfield') != 'undefined' && theField.value != theForm[theField.getAttribute('matchfield')].value)
				{	
					if (!started) {
					started=true;
					startAt=f;
					firstErrorNode="input";
					}
					
					if(theField.getAttribute('message')==undefined){
					 	 errors += theField.name.toUpperCase() + ' must match' + theField.getAttribute('matchfield') + '\n';
						 }
					 else
						 {
						 errors += theField.getAttribute('message') + '\n';
					 }					
				}
				else if(theField.getAttribute('validate') != undefined && theField.getAttribute('validate').toUpperCase()=='DATE' && !isDate(theField.value))
				{	
					if (!started) {
					started=true;
					startAt=f;
					firstErrorNode="input";
					}
					
					if(theField.getAttribute('message')==undefined){
					 	 errors += theField.name.toUpperCase() + ' must be a valid date [4/1/2008]' + '\n';			
						 }
					 else
						 {
						 errors += theField.getAttribute('message') + '\n';
					 }			 
				}
				
		}
		
		var frmTextareas = theForm.getElementsByTagName("textarea");	
		for (f=0; f < frmTextareas.length; f++) {
				theField=frmTextareas[f];
				if(theField.getAttribute('required')=='true' && theField.value == "" )
				{	
					if (!started) {
					started=true;
					startAt=f;
					firstErrorNode="textarea";
					}
					
					if(theField.getAttribute('message')==undefined){
					 	errors += theField.name.toUpperCase() + ' is required\n';
						 }
					 else
						 {
						 errors += theField.getAttribute('message') + '\n';
					 }			
				}	
		}
		
		var frmSelects = theForm.getElementsByTagName("select");	
		for (f=0; f < frmSelects.length; f++) {
				theField=frmSelects[f];
				if(theField.getAttribute('required')=='true' && theField.value == "" )
				{	
					if (!started) {
					started=true;
					startAt=f;
					firstErrorNode="select";
					}
					
					if(theField.getAttribute('message')==undefined){
					 	errors += theField.name.toUpperCase() + ' is required\n';
						 }
					 else
						 {
						 errors += theField.getAttribute('message') + '\n';
					 }			
				}	
		}
		
		if(errors != ""){	
			alert(errors);
			if(firstErrorNode=="input"){
				frmInputs[startAt].focus();
			}
			else if (firstErrorNode=="textarea"){
				frmTextareas[startAt].focus();
			}
			else if (firstErrorNode=="select"){
				frmSelects[startAt].focus();
			}
			return false;
		}
		else
		{
			return true;
		}

}


function submitForm(frm,doaction,theClass){
	
	if(validate(frm)){
		
		if(typeof(doaction) != 'undefined' && (action=='delete' && confirm('Delete ' + theClass +'?') || action!='delete')){
			var frmInputs = frm.getElementsByTagName("input");	
			for (f=0; f < frmInputs.length; f++){
				if(frmInputs[f].getAttribute('name')=='doaction'){
				frmInputs[f].setAttribute('value',doaction);
				}
			}
	
		}

		frm.submit();
	}	
	return false;
}

function loadObject(url,target) {
    // branch for native XMLHttpRequest object
	var req;
	var tg=target;
  
   processReqChange=function() {
		if (req.readyState == 4) {
			// only if "OK"
			if (req.status == 200) {
		  document.getElementById(tg).innerHTML=req.responseText;
			}
		}
	}
	
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}


function isMacIE5(){
			var agt=navigator.userAgent.toLowerCase(); 
			var ie   = (agt.indexOf("msie") != -1);
			var mac    = (agt.indexOf("mac")!=-1); 
			
				if(mac && ie){
					return false;
				}else{
					return true;
				}	
} 

// Son of Suckerfish Dropdowns
sfHover = function() {
	var sfEls = document.getElementById("navPrimary").getElementsByTagName("LI");
	for (var i=0; i<sfEls.length; i++) {
		sfEls[i].onmouseover=function() {
			this.className+=" sfhover";
		}
		sfEls[i].onmouseout=function() {
			this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
		}
	}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);

function addLoadEvent(func) {
   var oldonload = window.onload;
   if (typeof window.onload != 'function') {
    window.onload = func;
   } else {
    window.onload = function() {
     oldonload();
     func();
    }
   }
  }
  
function addUnloadEvent(func) {
   var oldonunload = window.onunload;
   if (typeof window.onunload != 'function') {
    window.onunload = func;
   } else {
    window.onunload = function() {
     oldonunload();
     func();
    }
   }
  }