

function populateTextboxes(uniqueid)
{	

	var lat=Math.abs(document.getElementById(uniqueid + "_lat").value);
	var lon=Math.abs(document.getElementById(uniqueid + "_lon").value);
	
	lat=Math.round(lat*100000)/100000;
	lon=Math.round(lon*100000)/100000;
	var coordformat=document.getElementById(uniqueid + "_ddlCoordinateFormat").value;
	
	var dmslatdeg=parseInt(lat);
	var dmslondeg=parseInt(lon);
	var dmslatmin=parseInt((lat-parseInt(lat))*60);
	var dmslonmin=parseInt((lon-parseInt(lon))*60);
	var dmslatdec= parseFloat(Math.round((((lat - parseInt(lat)) * 60) - (parseInt((lat - parseInt(lat)) * 60))) * 60 * 100)/100);
	var dmslondec= parseFloat(Math.round((((lon - parseInt(lon)) * 60) - (parseInt((lon - parseInt(lon)) * 60))) * 60 * 100)/100);
	var minlatdeg=parseInt(lat);
	var minlondeg=parseInt(lon);
	var minlatdec=parseFloat(Math.round((lat - parseInt(lat)) * 60 * 1000)/1000);
	var minlondec=parseFloat(Math.round((lon - parseInt(lon)) * 60 * 1000)/1000);
	var declatdec=parseFloat(Math.round(lat*1000000)/1000000);
	var declondec=parseFloat(Math.round(lon*1000000)/1000000);
	
	if (dmslatdeg != 0)
	{
		document.getElementById(uniqueid + "_txtDMSLatDegrees").value = dmslatdeg;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDMSLatDegrees").value = setZeroes(uniqueid + "_txtDMSLatDegrees", uniqueid);
	}
	if (dmslondeg !=0)
	{
	document.getElementById(uniqueid + "_txtDMSLonDegrees").value = dmslondeg;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDMSLonDegrees").value = setZeroes(uniqueid + "_txtDMSLonDegrees", uniqueid);
	}
	if (dmslatmin !=0)
	{
		document.getElementById(uniqueid + "_txtDMSLatMinutes").value = dmslatmin;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDMSLatMinutes").value = setZeroes(uniqueid + "_txtDMSLatMinutes", uniqueid);
	}
	if (dmslonmin != 0)
	{
		document.getElementById(uniqueid + "_txtDMSLonMinutes").value = dmslonmin;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDMSLonMinutes").value = setZeroes(uniqueid + "_txtDMSLonMinutes", uniqueid);
	}
	if (dmslatdec != 0)
	{
		document.getElementById(uniqueid + "_txtDMSLatDecimal").value = dmslatdec;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDMSLatDecimal").value = setZeroes(uniqueid + "_txtDMSLatDecimal", uniqueid);
	}
	if (dmslondec != 0)
	{
		document.getElementById(uniqueid + "_txtDMSLonDecimal").value = dmslondec;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDMSLonDecimal").value = setZeroes(uniqueid + "_txtDMSLonDecimal", uniqueid);
	}
	if (minlatdeg != 0)
	{
		document.getElementById(uniqueid + "_txtMinDecLatDegrees").value = minlatdeg;
	}
	else
	{
		document.getElementById(uniqueid + "_txtMinDecLatDegrees").value = setZeroes(uniqueid + "_txtMinDecLatDegrees", uniqueid);
	}
	if ( minlondeg != 0)
	{
		document.getElementById(uniqueid + "_txtMinDecLonDegrees").value =  minlondeg;
	}
	else
	{
		document.getElementById(uniqueid + "_txtMinDecLonDegrees").value = setZeroes(uniqueid + "_txtMinDecLonDegrees", uniqueid);
	}
	if ( minlatdec != 0)
	{
		document.getElementById(uniqueid + "_txtMinDecLatDecimal").value = minlatdec;
	}
	else
	{
		document.getElementById(uniqueid + "_txtMinDecLatDecimal").value = setZeroes(uniqueid + "_txtMinDecLatDecimal", uniqueid);
	}
	if (minlondec != 0)
	{
		document.getElementById(uniqueid + "_txtMinDecLonDecimal").value = minlondec;
	}
	else
	{
		document.getElementById(uniqueid + "_txtMinDecLonDecimal").value = setZeroes(uniqueid + "_txtMinDecLonDecimal", uniqueid);
	}
	if ( declatdec != 0)
	{
		document.getElementById(uniqueid + "_txtDegDecLat").value = declatdec;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDegDecLat").value = setZeroes(uniqueid + "_txtDegDecLat", uniqueid);
	}
	if (declondec != 0)
	{
		document.getElementById(uniqueid + "_txtDegDecLon").value = declondec;
	}
	else
	{
		document.getElementById(uniqueid + "_txtDegDecLon").value = setZeroes(uniqueid + "_txtDegDecLon", uniqueid);
	}
}

function getFormState(uniqueid)
{
	return document.getElementById(uniqueid + "_hidden").value
}


function convertCoords(uniqueid, prev, newval, isLat)
{
var degs
var mins
var secs
var sign
var myval
switch(prev)
	{
	case 0:
		{
			if (isLat==1) /*lat*/
			{
			degs=parseInt(document.getElementById(uniqueid + "_txtDMSLatDegrees").value);
			mins=parseInt(document.getElementById(uniqueid + "_txtDMSLatMinutes").value);
			secs=parseInt(document.getElementById(uniqueid + "_txtDMSLatDecimal").value);
			sign=document.getElementById(uniqueid + "_ddlDMSLatHeading").selectedIndex;
			myval =  degs + (mins * (1.0 / 60.0)) + (secs * (1.0/3600.0)) 
				if (sign!=0)
				{
					myval=myval * -1
				}
			}
			else /*lon*/
			{
			degs=parseInt(document.getElementById(uniqueid + "_txtDMSLonDegrees").value);
			mins=parseInt(document.getElementById(uniqueid + "_txtDMSLonMinutes").value);
			secs=parseFloat(document.getElementById(uniqueid + "_txtDMSLonDecimal").value);
			sign=document.getElementById(uniqueid + "_ddlDMSLonHeading").selectedIndex;
			myval = degs + (mins * (1.0 / 60.0)) + (secs * (1.0/3600.0)) 
				if (sign==1)
				{
					myval=myval * -1
				}
			}
			return myval
		}
	case 1:
		{
			if (isLat==1) /*lat*/
			{
				degs=parseInt(document.getElementById(uniqueid + "_txtMinDecLatDegrees").value);
				secs=parseFloat(document.getElementById(uniqueid + "_txtMinDecLatDecimal").value);
				sign=document.getElementById(uniqueid + "_ddlMinDecLatHeading").selectedIndex;
				myval = degs + (secs * (1.0 / 60.0))
				if (sign!=0)
					{
						myval=myval * -1
					}
				}
			else /*lon*/
			{
				degs=parseInt(document.getElementById(uniqueid + "_txtMinDecLonDegrees").value);
				secs=parseFloat(document.getElementById(uniqueid + "_txtMinDecLonDecimal").value);
				sign=document.getElementById(uniqueid + "_ddlMinDecLonHeading").selectedIndex;
				myval = degs + (secs * (1.0 / 60.0))
				if (sign==1)
					{
						myval=myval * -1
					}
				}
				return myval
		}
	case 2:
		{
		if (isLat==1) /*lat*/
			{
				secs=parseFloat(document.getElementById(uniqueid + "_txtDegDecLat").value);
				sign=document.getElementById(uniqueid + "_ddlDegDecLatHeading").selectedIndex;
				myval=secs
				if (sign!=0)
					{
						myval=myval * -1
					}
			}
			else /*lon*/
			{
				secs=parseFloat(document.getElementById(uniqueid + "_txtDegDecLon").value);
				sign=document.getElementById(uniqueid + "_ddlDegDecLonHeading").selectedIndex;
				myval=secs
				if (sign==1)
					{
						myval=myval * -1
					}
				}
					return myval
		}
	}
}

function throwError(errormsg, uniqueid)
{
	var errordiv = document.getElementById(uniqueid + "_latlonError")
	errordiv.style.display="block";
	errordiv.innerHTML=errormsg;
}

function updateDropDowns(lat,lon, uniqueid)
{
	if (lat >= 0 == false)
	{
		document.getElementById(uniqueid + "_ddlDMSLatHeading").selectedIndex=1;
		document.getElementById(uniqueid + "_ddlMinDecLatHeading").selectedIndex=1;
		document.getElementById(uniqueid + "_ddlDegDecLatHeading").selectedIndex=1;
	}
	else
	{
		document.getElementById(uniqueid + "_ddlDMSLatHeading").selectedIndex=0;
		document.getElementById(uniqueid + "_ddlMinDecLatHeading").selectedIndex=0;
		document.getElementById(uniqueid + "_ddlDegDecLatHeading").selectedIndex=0;
	}
	if (lon <= 0 == true)
	{
		document.getElementById(uniqueid + "_ddlDMSLonHeading").selectedIndex=1;
		document.getElementById(uniqueid + "_ddlMinDecLonHeading").selectedIndex=1;
		document.getElementById(uniqueid + "_ddlDegDecLonHeading").selectedIndex=1;
	}
	else
	{
		document.getElementById(uniqueid + "_ddlDMSLonHeading").selectedIndex=0;
		document.getElementById(uniqueid + "_ddlMinDecLonHeading").selectedIndex=0;
		document.getElementById(uniqueid + "_ddlDegDecLonHeading").selectedIndex=0;
	}
}

function setZeroes(txt, uniqueid)
{
	switch(txt)
	{
		case uniqueid + "_txtDMSLatDegrees":
		{
			return "00"
		}
		case uniqueid + "_txtDMSLonDegrees":
		{
			return "000"
		}
		case uniqueid + "_txtDMSLatMinutes":
		{
			return "00"
		}
		case uniqueid + "_txtDMSLonMinutes":
		{
			return "00"
		}
		case uniqueid + "_txtDMSLatDecimal":
		{
			return "00.00"
		}
		case uniqueid + "_txtDMSLonDecimal":
		{
			return "00.00"
		}
		case uniqueid + "_txtMinDecLatDegrees":
		{
			return "00"
		}
		case uniqueid + "_txtMinDecLonDegrees":
		{
			return "000"
		}
		case uniqueid + "_txtMinDecLatDecimal":
		{
			return "00.000"
		}
		case uniqueid + "_txtMinDecLonDecimal":
		{
			return "00.000"
		}
		case uniqueid + "_txtDegDecLat":
		{
			return "00.00000"
		}
		case uniqueid + "_txtDegDecLon":
		{
			return "00.00000"
		}
	}
}
function validateTextValues(uniqueid)
{
	if (isNumeric(document.getElementById(uniqueid + "_txtDMSLatDegrees").value) == null)
	{
		document.getElementById(uniqueid + "_txtDMSLatDegrees").setFocus
		return "You must enter a numeric latitude degrees value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDMSLonDegrees").value) == null)
	{
		return "You must enter a numeric longitude degrees value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDMSLatMinutes").value) == null)
	{
		return "You must enter a numeric latitude minutes value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDMSLonMinutes").value) == null)
	{
		return "You must enter a numeric longitude minutes value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDMSLatDecimal").value) == null)
	{
		return "You must enter a numeric latitude decimal value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDMSLonDecimal").value) == null)
	{
		return "You must enter a numeric latitude decimal value."
	}
		if (isNumeric(document.getElementById(uniqueid + "_txtMinDecLatDegrees").value) == null)
	{
		return "You must enter a numeric latitude degrees value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtMinDecLonDegrees").value) == null)
	{
		return "You must enter a numeric longitude degrees value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtMinDecLatDecimal").value) == null)
	{
		return "You must enter a numeric latitude decimal value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtMinDecLonDecimal").value) == null)
	{
		return "You must enter a numeric longitude decimal value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDegDecLat").value) == null)
	{
		return "You must enter a numeric latitude value."
	}
	if (isNumeric(document.getElementById(uniqueid + "_txtDegDecLon").value) == null)
	{
		return "You must enter a numeric longitude value."
	}
	return ""
}

function validateNumericValues(prevIndex, uniqueid)
{
var degs
var mins
var decs
switch(prevIndex)
	{
	case 0:
		{
			/* latitude */
			degs = parseInt(document.getElementById(uniqueid + "_txtDMSLatDegrees").value)
			if (degs < 0 || degs > 89)
			{
				document.getElementById(uniqueid + "_txtDMSLatDegrees").value = "00";
				return "you have selected an incorrect latitude degree value (must be greater than zero and less than 90)"
			} 
			mins = parseInt(document.getElementById(uniqueid + "_txtDMSLatMinutes").value)
			if (mins < 0 || mins > 59)
			{
				document.getElementById(uniqueid + "_txtDMSLatMinutes").value = "00";
				return "you have selected an incorrect latitude minutes value (must be greater than zero and less than 60)"
			}
			decs = parseFloat(document.getElementById(uniqueid + "_txtDMSLatDecimal").value)
			if (decs < 0 || decs >= 60)
			{
				document.getElementById(uniqueid + "_txtDMSLatDecimal").value = "00.00";
				return "you have selected an incorrect latitude decimal value (must be greater than zero and less than 60)"
			}
			/* longitude */
			degs = parseInt(document.getElementById(uniqueid + "_txtDMSLatDegrees").value)
			if (degs < 0 || degs > 179)
			{
				document.getElementById(uniqueid + "_txtDMSLonDegrees").value = "00";
				return "you have selected an incorrect longitude degree value (must be greater than zero and less than 180)"
			} 
			mins = parseInt(document.getElementById(uniqueid + "_txtDMSLonMinutes").value)
			if (mins < 0 || mins > 59)
			{
				document.getElementById(uniqueid + "_txtDMSLonMinutes").value = "00";
				return "you have selected an incorrect longitude minutes value (must be greater than zero and less than 60)"
			}
			decs = parseFloat(document.getElementById(uniqueid + "_txtDMSLonDecimal").value)
			if (decs < 0 || decs >= 60)
			{
				document.getElementById(uniqueid + "_txtDMSLonDecimal").value = "00.00";
				return "you have selected an incorrect latitude decimal value (must be greater than zero and less than 60)"
			}
		}
	case 1:
		{
			/* latitude */
			degs = parseInt(document.getElementById(uniqueid + "_txtMinDecLatDegrees").value)
			if (degs < 0 || degs > 89)
			{
				document.getElementById(uniqueid + "_txtMinDecLatDegrees").value = "00";
				return "you have selected an incorrect latitude degree value (must be greater than zero and less than 90)"
			}
			decs = parseFloat(document.getElementById(uniqueid + "_txtMinDecLatDecimal").value)
			if (decs < 0 || decs >= 60)
			{
				document.getElementById(uniqueid + "_txtMinDecLatDecimal").value = "00.000";
				return "you have selected an incorrect latitude decimal value (must be greater than zero and less than 60)"
			}
			/* longitude */
			
			degs = parseInt(document.getElementById(uniqueid + "_txtMinDecLonDegrees").value)
			if (degs < 0 || degs > 179)
			{
				document.getElementById(uniqueid + "_txtMinDecLonDegrees").value = "00";
				return "you have selected an incorrect longitude degree value (must be greater than zero and less than 180)"
			}
			decs = parseFloat(document.getElementById(uniqueid + "_txtMinDecLonDecimal").value)
			if (decs < 0 || decs >= 60)
			{
				document.getElementById(uniqueid + "_txtMinDecLonDecimal").value = "00.000";
				return "you have selected an incorrect longitude decimal value (must be greater than zero and less than 60)"
			}

		}
	case 2:
		{
			/* latitude */
			degs = parseFloat(document.getElementById(uniqueid + "_txtDegDecLat").value)
			if (degs < 0 || degs >= 90)
			{
				document.getElementById(uniqueid + "_txtDegDecLat").value = "00.00000";
				return "you have selected an incorrect latitude value (must be greater than zero and less than 90)"
			}
			/* longitude */
			degs = parseFloat(document.getElementById(uniqueid + "_txtDegDecLon").value)
			if (degs < 0 || degs >= 180)
			{
				document.getElementById(uniqueid + "_txtDegDecLon").value = "000.00000";
				return "you have selected an incorrect longitude value (must be greater than zero and less than 180)"
			}
		}
	}
	return ""
}


function isChanged(uniqueid)
{
	document.getElementById(uniqueid + "_ischanged").value=1
	document.getElementById(uniqueid + "_latlonError").style.display="none";
}


function isNumeric(x) {

// I use this function like this: if (isNumeric(myVar)) { } 
// regular expression that validates a value is numeric 
var RegExp = /^(-)?(\d*)(\.?)(\d*)$/; // Note: this WILL allow a number that ends in a decimal: -452. 
// compare the argument to the RegEx 
// the 'match' function returns 0 if the value didn't match 
var result = x.match(RegExp);
return result;
}
