addOnload(initForms);
addOnload(initYear);
addOnload(newWinLinks);
addOnload(rotate);


function addOnload(newFunction) {
	var oldOnload = window.onload;
	
	if (typeof oldOnload == "function") {
		window.onload = function () {
			if (oldOnload) {
		 		oldOnload();
		 	}
		 	newFunction();
		} 
	}	
	else {
		window.onload = newFunction;
	}	
}


// variable for rotating images on homepage
var thisPix = 0;



//for form validation error
document.onreset = resetError;

//sets copyright year in footer==========================================


function initYear() {
	var d = new Date();
	var cYear = d.getFullYear();
	document.getElementById("copyryear").innerHTML = cYear;
}



//FORM VALIDATION==========================================

//loops thru every form, adds event handler
function initForms() {
	for (var i=0; i< document.forms.length; i++) {
		document.forms[i].onsubmit = function() {return validForm();}
	}
}

function validForm() {
	var allGood = true;
	var allTags = document.getElementsByTagName("*");

	for (var i=0; i<allTags.length; i++) {
		if (!validTag(allTags[i])) {
			allGood = false;
		}
	}
	return allGood;

	function validTag(thisTag) {
		var outClass = "";
		var allClasses = thisTag.className.split(" ");
	
		for (var j=0; j<allClasses.length; j++) {
			outClass += validBasedOnClass(allClasses[j]) + " ";
		}
	
		thisTag.className = outClass;
	
		if (outClass.indexOf("invalid") > -1) {
			invalidLabel(thisTag.parentNode);
			thisTag.focus();
			if (thisTag.nodeName == "INPUT") {
				thisTag.select();
			}
			return false;
		}
		return true;
		
		function validBasedOnClass(thisClass) {
			var classBack = "";
		
			switch(thisClass) {
				case "":
				case "invalid":
					break;
				case "reqd":
					if (allGood && thisTag.value == "") {
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;
				case "radio":
					if (allGood && !radioPicked(thisTag.name)) {
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;
				case "isNum":
					if (allGood && !isNum(thisTag.value)) {
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;
				case "reqdstate":
					if (allGood && thisTag.selectedIndex == 0) {
//						alert("Please select a state")
						document.getElementById("errormess_state").style.display = "inline";
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;					
				case "isZip":
					if (allGood && !isZip(thisTag.value)) {
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;				
				case "isLatLong":
					if (allGood && !validLatLong(thisTag.value)) {
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;				
				case "email":
					if (allGood && !validEmail(thisTag.value)) {
						classBack = "invalid ";
					}
					classBack += thisClass;
					break;
				default:
					classBack += thisClass;
			}
			return classBack;
		}
				
//checks to make sure radio button has been selected
		function radioPicked(radioName) {
			var radioSet = "";

			for (var k=0; k<document.forms.length; k++) {
				if (!radioSet) {
					radioSet = document.forms[k][radioName];
				}
			}
			if (!radioSet) {
				return false;
			}
			for (k=0; k<radioSet.length; k++) {
				if (radioSet[k].checked) {
					return true;
				}
			}
			return false;
		}

//checks to make sure entry is numeric
		function isNum(passedVal) {
			if (passedVal == "") {
				return false;
			}
			for (var k=0; k<passedVal.length; k++) {
				if (passedVal.charAt(k) < "0") {
					return false;
				}
				if (passedVal.charAt(k) > "9") {
					return false;
				}
			}
			return true;
		}
		
//checks zip code		
		function isZip(inZip) {
			if (inZip == "") {
				return false;
			}
			return (isNum(inZip));
		}


//checks email address
		function validEmail(email) {
			var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;

			return re.test(email);
		}

//checks latitude/longitude
		function validLatLong(isLatLong) {
			var latlng = /^\(?\d\d\.\d+\,?\ ?\-\d\d\.\d+\)?/;

			return latlng.test(isLatLong);
		}		
//adds invalid to class to highlight field that needs correcting
//errormess makes error message appear
		function invalidLabel(parentTag) {
			if (parentTag.nodeName == "LABEL") {
				parentTag.className += " invalid";
				document.getElementById("errormess").style.display = "block";
			}
		}
	}
}

function resetError() {
	document.getElementById("errormess_state").style.display = "none";
	document.getElementById("errormess").style.display = "none";
}	



//rotate photos on home page==========================================

function rotate() {
	var pixImages = new Array("images/aerial_photo_1.jpg","images/aerial_photo_2.jpg","images/aerial_photo_3.jpg");
	
	thisPix++;
	if (thisPix == pixImages.length) {
		thisPix = 0;
	}	
	document.getElementById("rotatepix").src = pixImages[thisPix];
	
	setTimeout(rotate, 6 * 1000);
}	





//open link in new window==========================================

function newWinLinks() {
	for (var i=0; i<document.links.length; i++) {
		if (document.links[i].className == "newWin") {
			document.links[i].onclick = newWindow;
		}	
//for the map window:
		if (document.links[i].className == "newWinform") {
			document.links[i].onclick = newWindowform;
		}		
	}
}
function newWindow() {
	var newSite = window.open (this.href, "siteWin");
	newSite.focus();
	return false;
}	
//open order form popup
function newWindowform() {
	var formWindow = window.open(this.href,"formWin","location=no,toolbar=no,menubar=no,scrollbars=no");
	formWindow.moveTo(0,0);
	formWindow.focus();
  	formWindow.resizeTo(width=600,height=750);
	return false;
}


