// JavaScript Document

function form_validate(object,popup) {
	addressSelected = false;
	latLongSelected = false;
	
	if((object.address1.value != '') || (object.city.value != '') || (object.state.value != '') || (object.zip.value != '')) {
		addressSelected = true;
	}
	
	if((object.decimalLat.value != '') || (object.decimalLong.value != '')) {
		latLongSelected = true;	
	}
	
	if (latLongSelected == true) {
		bool = lat_long_validate(object,false);
		if (bool) {
			if (popup==0) object.submit();
			else {
				xr = parseFloat( object.decimalLong.value ) - 0.005;
				xl = parseFloat( object.decimalLong.value ) + 0.005;
				yt = parseFloat( object.decimalLat.value ) + 0.005;
				yb = parseFloat( object.decimalLat.value ) - 0.005;
				window.open("http://www.epa.gov/myenv/MYENVIEW.results2?minx=" + xr + "&maxy=" + yt + "&maxx=" + xl + "&miny=" + yb,"EnviroWindow","");
			}
		}
		return bool;
	}
	else if(addressSelected == true) {
		//if(latLongSelected == true) {
		//	alert('You provided inputs for both A and B options. Please choose only one.');	
		//	return false;
		//}
		bool = address_validate(object);
		if (bool) {
			geocode(object,popup);
		}
		return bool;
	}
	else {
		alert('Please provide the information for either A or B in the form.');	
		return false;
	}
	
}


function address_validate(object) {
	var	obj = null;
	errMsg = '';
	
	if(object.address1.value == '') {
		errMsg += 'Please enter the address.\n';
	}
	if(object.city.value == '') {
		errMsg += 'Please enter the city.\n';
	}
	if(object.state.value == '') {
		errMsg += 'Please select one state.\n';
	}
	if(object.zip.value == '') {
		errMsg += 'Please enter the zip code.\n';
	}
	else if (object.zip.value != '') {
		var valid = "0123456789-";
		var hyphencount = 0;
		var str = object.zip.value;

		if (str.length!=5 && str.length!=10) {
			errMsg += "Please enter your 5 digit or 5 + 4 digit zip code.\n";
		}
		
		forErrMsg = '';

		for (var i=0; i < str.length; i++) {
			temp = "" + str.substring(i, i+1);
			if (temp == "-") hyphencount++;
			if (valid.indexOf(temp) == "-1") {
				forErrMsg = "Invalid characters in your zip code.\n";
			}
		}

		errMsg += forErrMsg;

		if ((hyphencount > 1) || ((str.length==10) && (""+str.charAt(5)!="-")) || ((str.length==5) && (hyphencount > 0))) {
			errMsg += "The hyphen character should be used with a properly formatted 5 + 4 digit zip code, like '12345-6789'.\n";
		}
		
	}
	
	if (errMsg!='') {
		alert(errMsg);
		return false;
	}
	
	return true;
}

function lat_long_validate(object,silent) {
	errMsg = '';
		
	lat = parseFloat(object.decimalLat.value);
	long = parseFloat(object.decimalLong.value);

	//validate latitude
	if (object.decimalLat.value == '') {
		errMsg += 'The Decimal Latitude field is required. \n';	
	}
	else if (isNaN(lat) || ((lat == 0) && (object.decimalLat.value != '0')) || (lat < -90) || (lat > 90)) {
		errMsg += 'The Decimal Latitude field must be numeric between -90.0 and 90.0. \n';	
	}

	//validate longitude
	if (object.decimalLong.value == '') {
		errMsg += errMsg + 'The Decimal Longitude field is required. \n';	
	}
	else if (isNaN(long) || ((long == 0) && (object.decimalLong.value != '0')) || (long < -180) || (long > 180)) {
		errMsg += 'The Decimal Latitude field must be numeric between -180.0 and 180.0. \n';	
	}
	
	if (errMsg != '') {
		if (!silent) alert(errMsg);
		return false;
	}
	
	object.decimalLat.value = lat;
	object.decimalLong.value = long;
	
	return true;
}

function IsNumeric(strString) {
	var strValidChars = "0123456789.-";
   	var strChar;
   	var blnResult = true;

   	for (i = 0; i < strString.length && blnResult == true; i++) {
    	strChar = strString.charAt(i);
      	if (strValidChars.indexOf(strChar) == -1) {
        	blnResult = false;
        }
	}
   	return blnResult;
}
