var curMuns = new Array();

function dms_to_dec (deg, mi, sec) {
	if (deg < 0) {
		mi = -mi;
		sec = -sec;
	}
	return (parseInt(deg) + parseFloat(mi/60) + parseFloat(sec/3600));
}

function dec_to_dms (decimal) {
	var DMS = new Array(3);
	DMS['D'] = parseInt (decimal);
	DMS['M'] = parseInt((Math.abs(decimal - DMS['D'])*60));
	DMS['S'] = (((Math.abs(decimal - DMS['D']) * 60) - DMS['M']) * 60);
		
	return (DMS);
}

function submitForm(cmd){
	document.defaultFrm.cmd.value = cmd;
	ret = true;

	switch (cmd){
	case "seltype": 
		ret = validateReqd(document.defaultFrm.Province);
		if (ret) ret = validateReqd(document.defaultFrm.act);
		break;
	case "selrequest": 
		ret = validateReqd(document.defaultFrm.req);
		if (ret) ret = validateReqd(document.defaultFrm.act_no);
		break;
	case "saverequest": 
		ret = validateReqd(document.defaultFrm.register_type_ref);
		ret = validateReqd(document.defaultFrm.data_reason);

		if (document.defaultFrm.request_type_ref.value == 'w'){
			ret = validateReqd(document.defaultFrm.data_closing_date);
		}
		if (document.defaultFrm.request_type_ref.value == 'm'){
			ret = validateReqd(document.defaultFrm.data_management_option_ref);
		}
		if (document.defaultFrm.request_type_ref.value == 's'){
			ret = validateReqdLookup(document.defaultFrm.data_sic_code_ref);
		}
		break;
	default:
		ret = doValidation();
	}

	if (ret) document.defaultFrm.submit();
}

function cancelForm(cmd){
	document.defaultFrm.cmd.value = cmd;
	document.defaultFrm.submit();
}	
	
function explodeArray(item,delimiter) {
	tempArray=new Array(1);
	var Count=0;
	var tempString=new String(item);
	
	while (tempString.indexOf(delimiter)>0) {
	    tempArray[Count]=tempString.substr(0,tempString.indexOf(delimiter));
	    tempString=tempString.substr(tempString.indexOf(delimiter)+1,tempString.length-tempString.indexOf(delimiter)+1); 
	    Count=Count+1
	}
	
	tempArray[Count]=tempString;
	return tempArray;
}

function getSiteContact (){
	if (document.defaultFrm.sContact.value > ""){
		arrsContact = explodeArray(document.defaultFrm.sContact.value,";");
		document.defaultFrm.ContactName.value = arrsContact[0];
		document.defaultFrm.ContactSurname.value = arrsContact[1];
		document.defaultFrm.ContactEmail.value = arrsContact[2];
		document.defaultFrm.ContactTelephone.value = arrsContact[3];
		document.defaultFrm.PostalAddress.value = arrsContact[4];
		document.defaultFrm.PostalAddressCity.value = arrsContact[5];
		document.defaultFrm.PostalCode.value = arrsContact[6];
	}
	else
	{
		document.defaultFrm.ContactName.value = document.defaultFrm.AdministratorName.value;
		document.defaultFrm.ContactSurname.value = document.defaultFrm.AdministratorSurname.value;
		document.defaultFrm.ContactEmail.value = document.defaultFrm.AdministratorEmail.value;
		document.defaultFrm.ContactTelephone.value = document.defaultFrm.AdministratorTel.value;
		document.defaultFrm.PostalAddress.value = document.defaultFrm.AdministratorPostalAddress.value;
		document.defaultFrm.PostalAddressCity.value = document.defaultFrm.AdministratorPostalAddressCity.value;
		document.defaultFrm.PostalCode.value = document.defaultFrm.AdministratorPostalCode.value;
	}
}
	
function doValidation() {
	ret = true;
	msg = "For this registration to fall within the selected municipality ";
	ret = validateFields();
		
	latdg=document.defaultFrm.DMS_lat_D;
	latmi=document.defaultFrm.DMS_lat_M;
	latse=document.defaultFrm.DMS_lat_S;
	londg=document.defaultFrm.DMS_long_D;
	lonmi=document.defaultFrm.DMS_long_M;
	lonse=document.defaultFrm.DMS_long_S;			
	if (ret && (londg.value>"" || lonmi.value>"" || lonse.value>"" ||
				latdg.value>"" || latmi.value>"" || latse.value>""
		)){
		ret = validateReqd(latdg);
		if (ret) ret = validateReqd(latmi);
		if (ret) ret = validateReqd(latse);			
		if (ret) ret = validateReqd(londg);			
		if (ret) ret = validateReqd(lonmi);
		if (ret) ret = validateReqd(lonse);
		if (ret) latdec = dms_to_dec(latdg.value,latmi.value,latse.value);
		/*
		if (ret) ret = validateRange(latdg, latdec,"Latitude: " ,
				curMuns[document.defaultFrm.MunicipalityRef.value][1], 
				curMuns[document.defaultFrm.MunicipalityRef.value][2], msg);
		*/
		if (ret) londec = dms_to_dec(londg.value,lonmi.value,lonse.value);
		/*
		if (ret) ret = validateRange(londg, londec,"Longitude: ", 
				curMuns[document.defaultFrm.MunicipalityRef.value][3], 
				curMuns[document.defaultFrm.MunicipalityRef.value][4], msg);
		*/
		if (ret) document.defaultFrm.DegreeLatitude.value = latdec;
		if (ret) document.defaultFrm.DegreeLongitude.value = londec;		
	}

	return ret;
}

function validateTest(formObj, regExpStr, msg) {
	regExp = new RegExp(regExpStr);
	tst = regExp.test(formObj.value);
	if (!tst) {
		alert(msg);
		formObj.focus();
		return (false);
	}
	return (true);
}

function validateRange(obj, val, name, rmin, rmax, msg) {
	if (val > rmax || val < rmin) {
		xdms = dec_to_dms(rmax);
		ndms = dec_to_dms(rmin);
		alert(name + ": " + msg + ": The value must be between "  + ndms['D'] + ":" + ndms['M'] + ":" + ndms['S'] + " and " + xdms['D'] + ":" + xdms['M'] + ":" + xdms['S'] );
		obj.focus();
		return (false);
	}
	return (true);
}

function validateReqd(formObj) {
	if (formObj.value == "") {
		alert(formObj.name + ": Value is required.");
		formObj.focus();
		return (false);
	}
	return (true);
}

function validateReqdLookup(formObj) {
	if (formObj.options[formObj.selectedIndex].value == "") {
		alert(formObj.name + ": Value is required.");
		formObj.focus();
		return (false);
	}
	return (true);
}

function validateFields() {
	for (i=0; i<validationArray.length; i++) {
		valField = validationArray[i];
		if (valField[3] == "Y" || (valField[3] == "N" && document.all[valField[0]].value>"")){
			itemRet = validateTest(document.all[valField[0]], valField[1], valField[2]);
		}
		if(itemRet == false){
			return(false);
		}
	}

	return (true);
}

function restrictCodes(formObj,codeArr,resVal){
	for (var i=0; i<codeArr[resVal]; i++){
		formObj.options[i]=new Option(codeArr[resVal][0],codeArr[resVal][1]);
	}
}
function displayMun(formObj, province){
	curMuns = mA[province];

	len = formObj.length;
	for (i = (len-1); i > 0 ; i--){
		formObj.options[i] = null;
	}		

	num=1;		// We do not want to replace the first one (0)
	for (var key in curMuns) {
		formObj.options[num++]=new Option(curMuns[key][0], key);
	}
	/*
	for (var i=0; i<5; i++){
		formObj.options[i]=new Option("option"+i,i);
	}
	*/
}


