﻿
/* Get browser */
function isNS()
{
  return document.getElementById&&!document.all;
}

/* Get DOM element based on its id */
function getElement(id){
  var obj = null;  
  if (document.getElementById)
    obj = document.getElementById(id);
  else if (document.all)
	obj = document.all[name];  
  else if (document.layers)
   	obj = document.layers[name];
  return obj;
}

/*
* var x = new getObj('layername');
* Create object with access to layer and style.
*/

function getObj(name)
{
  if (document.getElementById)
  {
  	this.obj = document.getElementById(name);
	this.style = this.obj.style;
  }
  else if (document.all)
  {
	this.obj = document.all[name];
	this.style = document.all[name].style;
  }
  else if (document.layers)
  {
   	this.obj = document.layers[name];
   	this.style = document.layers[name];
  }
}

function getAbsoluteLeft(id) 
{
    var obj = new getObj(id);
    var o = obj.obj;
    
    var oLeft = o.offsetLeft;
    while(o.offsetParent!=null) 
    {
	    oParent = o.offsetParent;
	    oLeft += oParent.offsetLeft;
	    o = oParent;
    }
    return oLeft;
}

function getAbsoluteTop(id) 
{
	var obj = new getObj(id);
    var o = obj.obj;
    
	var oTop = o.offsetTop;
	while(o.offsetParent!=null) 
	{
		oParent = o.offsetParent;
		oTop += oParent.offsetTop;
		o = oParent;
	}
	return oTop;
}

function getElementHeight(obj) 
{
    var elementHeight=null;
	if (obj.style.pixelHeight) 
	{
		elementHeight = obj.style.pixelHeight;
	} 
	else 
	{
		elementHeight = obj.offsetHeight;
	}
	return parseInt(elementHeight,10);
}

function getElementWidth(obj) 
{
    var elementWidth=null;
	if (obj.style.pixelWidth) 
	{
		elementWidth = obj.style.pixelWidth;
	} 
	else 
	{
		elementWidth = obj.offsetWidth;
	}
	return parseInt(elementWidth,10);
}

function LL2UTM(lat, lon, ZoneNumber)
{
	var a = 6378137;
	var eccSquared = 0.00669438;
	var k0 = 0.9996;

	var PI = 3.14159265;
	var FOURTHPI = PI / 4;
	var deg2rad = PI / 180;
	var rad2deg = 180.0 / PI;
	var LongOrigin;
	var eccPrimeSquared;
	var N, T, C, A, M;
	
	var UTMEasting;
	var UTMNorthing;
	
	//Make sure the longitude is between -180.00 .. 179.9
	//var LongTemp = (lon+180)-Math.floor((lon+180)/360)*360-180; // -180.00 .. 179.9;
	LongTemp=lon;
	var LatRad = lat*deg2rad;
	var LongRad = LongTemp*deg2rad;
	var LongOriginRad;
	
	LongOrigin = (ZoneNumber - 1)*6 - 180 + 3;  
	LongOriginRad = LongOrigin * deg2rad;

	eccPrimeSquared = (eccSquared)/(1-eccSquared);
	N = a/Math.sqrt(1-eccSquared*Math.sin(LatRad)*Math.sin(LatRad));
	T = Math.tan(LatRad)*Math.tan(LatRad);
	C = eccPrimeSquared*Math.cos(LatRad)*Math.cos(LatRad);
	A = Math.cos(LatRad)*(LongRad-LongOriginRad);
	M = a*((1	- eccSquared/4		- 3*eccSquared*eccSquared/64	- 5*eccSquared*eccSquared*eccSquared/256)*LatRad 
				- (3*eccSquared/8	+ 3*eccSquared*eccSquared/32	+ 45*eccSquared*eccSquared*eccSquared/1024)*Math.sin(2*LatRad)
									+ (15*eccSquared*eccSquared/256 + 45*eccSquared*eccSquared*eccSquared/1024)*Math.sin(4*LatRad) 
									- (35*eccSquared*eccSquared*eccSquared/3072)*Math.sin(6*LatRad));
	UTMEasting = (k0*N*(A+(1-T+C)*A*A*A/6
					+ (5-18*T+T*T+72*C-58*eccPrimeSquared)*A*A*A*A*A/120)
					+ 500000.0);

	UTMNorthing = (k0*(M+N*Math.tan(LatRad)*(A*A/2+(5-T+9*C+4*C*C)*A*A*A*A/24
				 + (61-58*T+T*T+600*C-330*eccPrimeSquared)*A*A*A*A*A*A/720)));
	if(lat < 0)
		UTMNorthing += 10000000.0; 
	
	var arr = new Array(2);
	arr[0]=	UTMNorthing;
	arr[1]=	UTMEasting;
	return arr;
}

function getRequestParameter (parameterName ) 
{   
    var queryString = document.location.search;
    var parameterName = parameterName + "=";   
    if ( queryString.length > 0 ) 
    {      
        var start = queryString.indexOf ( parameterName );      
        if ( start != -1 ) 
        {         
            start += parameterName.length;         
            var end = queryString.indexOf ( "&" , start );      
            if ( end == -1 ) {         
                end = queryString.length      
            }
            
            return unescape ( queryString.substring ( start, end ) );   
        }   
    }

    return "";   
}