﻿//google vars...
var googleGeocoder;
 
//VE vars...        
var map;
var centerLat = null;
var centerLng = null;
var mapScale = null;

var footer = null; 
var arrPins = null; 
var working_address_id = "";
var working_ndx = -1;
var AddrDefaultText = "Enter Address";
var AddrDefaultDesc = "Enter Description";

var namespace_val = "";
var maxRows = 11;
var cookies_supported = true; 
var urlPathBase = "../layout/images/pincushion";
var provider = "Google";

//var arrPushPins = new Array(maxRows);
var currentGPolyLine = null;
var currentMarkers = new Array(maxRows);
var currentMarkersText = new Array(maxRows);

//var urlPathBase = "../layout/images/icon_blk";
 
var urlExt = ".gif"; 
  
 
//		'*********************************************************************** 
//		'Name  : GenLatLongItem 
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
function GenLatLongItem(txtLat, txtLng)
{
    var loc = null;
    
//    alert("GenLatLongItem  txtLat.value:" + txtLat + 
//            " txtLng.value:" + txtLng);
      
    
    if (txtLat != null && isNaN(txtLat)==false && txtLat != "" && 
        txtLng != null && isNaN(txtLng)==false && txtLng != "")
    {
        var lat = parseFloat(txtLat);
        var lng = parseFloat(txtLng);
        if (lat != 0 && lng != 0)
        {        
            //alert("GenLatLongItem lat:" + lat + " lng:" + lng);
            loc = new Object();
            loc.Latitude = txtLat;
            loc.Longitude = txtLng;
        }
    }
   
    return loc;
}
// 
////		'*********************************************************************** 
////		'Name  : FindAddress 
////		'Date  :  
////		'Author: 
////		'Desc  : 
////		'*********************************************************************** 
//    function FindAddress(strCtlObj, ndx)
//    {
//         //alert("FindAddress:" + strCtlObj + " ndx:" + ndx);
//    
//          var objAddr = getObj(strCtlObj + "_txtAddress"); 
//          working_address_id = strCtlObj;
//          working_ndx = ndx;
//          
//          var marker =  currentMarkers[ndx];
//          if (marker != null)
//          {
//             map.removeOverlay(marker);
//          }
//          
//          var strAddr = objAddr.value;
//          strAddr += "";
//          strAddr = trimAll(strAddr);
//          //alert(strAddr);
//    
//          if (strAddr != null && strAddr != "" && strAddr.length >=3 && strAddr != AddrDefaultText)
//          {
//            try
//            {
//                //alert("getting addr:" + strAddr);
//                
//                var googleGeocoder = new GClientGeocoder();
//             
//                //showGAddress(strAddr);
//                //googleGeocoder.getLocations(strAddr, processGoogleGeoCodeResults);
//               // googleGeocoder.getLatLng(strAddr, addToMap);
//           
//               
//           
//                

//                // Retrieve location information, pass it to addToMap()
//                
//                alert("to here");
//                googleGeocoder.getLocations(strAddr, addToMap);

//      
//      
//      
//            }  
//            catch(err)
//           {
//            
//                //alert("error");
//            
//             txt="There was an error on this page.\n\n"
//            txt+="Error description: " + err.description + "\n\n"
//            txt+="Click OK to continue.\n\n"
//            alert(txt);
//            }
//          }
//             
//          else
//          {  
//             ClearGAddress(strCtlObj, ndx);
//          }
//    }
       

function showGAddress(address) {
  googleGeocoder.getLatLng(
    address,
    function(point) {
      if (!point) {
        //alert(address + " not found");
      } else {
       
        map.setCenter(point, 13);
        var marker = new GMarker(point);
        map.addOverlay(marker);
        marker.openInfoWindowHtml(address);
      }
    }
  );
}

       
       
       
       
//		'*********************************************************************** 
//		'Name  : onFindResults 
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
    function onFindResults(findResults)         
    {         
         
        var results="Find Results:\n";            
            for (r=0; r<findResults.length; r++)            
            {    
                results+=findResults[r].Name + ", " + findResults[r].Description+"\n";
            }            
            //alert(results);         
    }
      
//       
////		'*********************************************************************** 
////		'Name  : ClearAddress 
////		'Date  :  
////		'Author: 
////		'Desc  : 
////		'*********************************************************************** 
//    function ClearAddress(strAddrObj, strAddrDescObj, strAddrHiddenObj, strLatObj, strLngObj)
//    {
//        //clear all fields - visible and hidden
//        //hide link
//        //show textbox
//        
//       // var objaAdressDesc = getObj(strAddrObj + "_aAddressDesc");
//        var objtxtAddress = getObj(strAddrObj + "_txtAddress"); 
//       // var objAddrHidden = getObj(strAddrObj + "_txtAddressHidden");
//        var objLat = getObj(strAddrObj + "_txtLatitude");  
//        var objLng = getObj(strAddrObj + "_txtLongitude");  
//          
//       // objaAdressDesc.value = "";
//       // objaAdressDesc.innerHTML =  "";
//        objtxtAddress.value =  "";
//        objLat.value =  0;
//        objLng.value =  0;
//        
//       // ToggleAddressFields(1, strAddrObj);
//        
//        
//    }  
//     
       
//		'*********************************************************************** 
//		'Name  : UpdateAddr
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
    function UpdateAddr(strAddrObj, lat, lng, addr, ndx)
    {
//        alert("UpdateAddr strAddrObj:" + strAddrObj 
//            + " lat:" + lat + " lng:" + lng +  " addr:" + addr, " ndx:" + ndx);
    
    
        //var objaAdress = getObj(strAddrObj + "_aAddress");
        var objtxtAddress = getObj(strAddrObj + "_txtAddress"); 
        //var objtxtAddressDesc = getObj(strAddrObj + "_txtAddressDesc"); 
         
        //var objAddrHidden = getObj(strAddrObj + "_txtAddressHidden");
        var objLat = getObj(strAddrObj + "_txtLatitude");  
        var objLng = getObj(strAddrObj + "_txtLongitude");  
            
        //objaAdress.innerHTML =  addr;
        objtxtAddress.value =  addr;
        objLat.value =  lat;
        objLng.value =  lng;
        
        //ToggleAddressFields(0, strAddrObj);
        var objdvAddressSelect = getObj("dvAddressSelect"); 
        objdvAddressSelect.style.visibility = "hidden";
        
        var strPinInfo = "" + "|" +
                addr + "|" + 
                lat + "|" +
                lng;
            
        var objtxtIndex = getObj(strAddrObj + "_txtIndex");        
        var url = urlPathBase + objtxtIndex.value + urlExt;  
        
        LoadSimpleGPin(strPinInfo, url, ndx);
        var arrLatLongList = GenLatLongList(namespace_val);  
        zoomToGMarkers(arrLatLongList,5,2);
 
        return;
    }  


     
//		'*********************************************************************** 
//		'Name  : UpdateAddrDesc 
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
    function UpdateAddrDesc(strAddrObj, ndx)
    {
    /*
    
        //var objaAdress = getObj(strAddrObj + "_aAddress");
        var objtxtAddress = getObj(strAddrObj + "_txtAddress"); 
        var objtxtAddressDesc = getObj(strAddrObj + "_txtAddressDesc"); 
       
        // var objAddrHidden = getObj(strAddrObj + "_txtAddressHidden");
        var objLat = getObj(strAddrObj + "_txtLatitude");  
        var objLng = getObj(strAddrObj + "_txtLongitude");  
        
        working_ndx = ndx;
        var desc = objtxtAddressDesc.value;
        if (desc == AddrDefaultDesc)
        {
            desc = "";
        }
       
        var strPinInfo = desc + "|" +
                objtxtAddress.value + "|" + 
                objLat.value + "|" +
                objLng.value;
                
        var objtxtIndex = getObj(strAddrObj + "_txtIndex");        
        var url = urlPathBase + objtxtIndex.value + urlExt; 
                         
      //  alert("strPinInfo:" + strPinInfo);  
        if (objtxtAddress.value != "" &&
            objLat.value != "" && objLng.value != "" &&
            objLat.value != "0" && objLng.value != "0")
        {
            //LoadSimpleGPin(strPinInfo, strAddrObj + "_txtAddress", url);
            LoadSimpleGPin(strPinInfo, url, working_ndx);
        }
        */
    }  
 

//		'*********************************************************************** 
//		'Name  : UpdateLatLongs
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
    function UpdateLatLongs(working_address_id, strPinInfo)
    {
       // alert("UpdateLatLongs: enter");
    
        var objtxtLat = getObj(working_address_id + "_txtLatitude"); 
        var objtxtLng = getObj(working_address_id + "_txtLongitude"); 
        var pArray = strPinInfo.split("|"); 
        var nm               = pArray[0];
        var addr             = pArray[1];
        var lat              = pArray[2];
        var lng              = pArray[3];
        objtxtLat.value = lat;
        objtxtLng.value = lng;
        
        
        
    }
     

////*********************************************************
//// Google Support methods
////
////*********************************************************
//function GGeoCode(strAddr)
//{
//  
//    
//    alert("googleGeoCode strAddr:" + strAddr);
//    strAddr += "";
//    strAddr = trimAll(strAddr);
//    
//    if (strAddr != null && strAddr != "" && strAddr.length >=3)
//    {
//         try
//        {
//        
//            //alert("googleGeoCode:" + strAddr);
//            googleGeocoder.getLocations(strAddr, processGoogleGeoCodeResults);
//        }
//        
//        catch(err)
//        {
////         txt="There was an error on this page.\n\n"
////        txt+="Error description: " + err.description + "\n\n"
////        txt+="Click OK to continue.\n\n"
////        alert(txt);
//        }
//    } 
//    else
//    {
//        ClearGAddress(strObjName, ndx);
//    }
//    
//   
//}

 

//function processGoogleGeoCodeResults(result)
//{ 
//    
//   
//  //alert("ok result.Status.code:" + result.Status.code + " working_address_id:" + working_address_id );
//   
//  // alert("G_GEO_SUCCESS:" +G_GEO_SUCCESS + 
//  //      " G_GEO_SERVER_ERROR:" + G_GEO_SERVER_ERROR +
//  //      " G_GEO_MISSING_ADDRESS:" + G_GEO_MISSING_ADDRESS + 
// //       " G_GEO_UNKNOWN_ADDRESS:" + G_GEO_UNKNOWN_ADDRESS + 
// //       " G_GEO_BAD_KEY: " + G_GEO_BAD_KEY);
//   
//   
//   
//   
//    if (result.Status.code == G_GEO_SUCCESS) 
//    {
//       if (result.Placemark.length == 1)
//       {
//            //var objtxtAddressDesc = getObj(working_address_id + "_txtAddressDesc"); 
//            var objtxtIndex = getObj(working_address_id + "_txtIndex"); 
//       
//            var strPinInfo = "" + "|" +
//                result.Placemark[0].address + "|" + 
//                result.Placemark[0].Point.coordinates[1] + "|" +
//                result.Placemark[0].Point.coordinates[0];
//            
//            
//     
//            UpdateLatLongs(working_address_id, strPinInfo);             
//            var url = urlPathBase + objtxtIndex.value + urlExt; 

//            //LoadSimpleGPin(strPinInfo,  working_address_id + "_txtAddress", url);
//            LoadSimpleGPin(strPinInfo, url, working_ndx); 
//            
//            var arrLatLongList = GenLatLongList(namespace_val);  
//            zoomToGMarkers(arrLatLongList,5,2);
//          
//       }
//       else
//       {
//       
//            googleBuildSelectPopup(result);
//       }
//    }   
//    else
//    {
//            BuildErrorPopup();
//    }
//    
//    
//    
//}


function googleBuildSelectPopup(result)
{
        //alert("building popup: enter");
     
        // Loop through the results, placing markers
        var inner = "<table bordercolor='999999'  bgcolor='white' cellspacing='3' cellpadding='3' rules='groups' border='1' frame='box'>";
        var lat = "";
        var lng = "";
        var addr = "";
        
        var objtxtAddress = getObj(working_address_id + "_txtAddress");
        //var objtxtAddressDesc = getObj(working_address_id + "_txtAddressDesc"); 
        
         
       
        
         inner += "<tr><td class=bodyTxt >The address search for " + objtxtAddress.value  + 
                " produced the following list. Please select one from the list or close this window " +
                " and modify your address. </td></tr>";  
        
        
        for (var i=0; i<result.Placemark.length; i++) 
        {   
            lat = result.Placemark[i].Point.coordinates[1];
            lng = result.Placemark[i].Point.coordinates[0];
            addr = result.Placemark[i].address;
                
            inner += "<tr><td  ><a class=bodyTxt href=javascript:UpdateAddr('" + 
                        working_address_id + "'," + 
                        lat + "," + lng +  ",'" + 
                         escape(addr) + "'," + working_ndx + ") >" + addr + "</a></td></tr>" ;
        }
        
       // alert("finished for loop");
        
        inner += "<tr><td><br><a  class=bodyTxt href='javascript:googleCloseSelectPopup()'>close X</a></td></tr></table>";
        var objdvAddressSelect = getObj("dvAddressSelect"); 
        objdvAddressSelect.innerHTML = inner;
        objdvAddressSelect.style.visibility = "visible";
       
 }
 
function googleCloseSelectPopup()
{
     var objdvAddressSelect = getObj("dvAddressSelect"); 
     objdvAddressSelect.style.visibility = "hidden";
}
 

function BuildErrorPopup()
{

       // alert("BuildErrorPopup enter");

        var objtxtAddress = getObj(working_address_id + "_txtAddress");
 
        // Loop through the results, placing markers
        var inner = "<table bordercolor='999999'  bgcolor='white' cellspacing='3' cellpadding='3' rules='groups' border='1' frame='box'>";
       
        
         inner += "<tr><td class=errorTxt >The address search for " + objtxtAddress.value  + 
                " did not produce any results. Please close this window, modify your address, and try again. " +
                "</td></tr>";  
        
       
        inner += "<tr><td><br><a class=infoLink href='javascript:googleCloseSelectPopup()'>close X</a></td></tr></table>";
        var objdvAddressSelect = getObj("dvAddressSelect"); 
        objdvAddressSelect.innerHTML = inner;
        objdvAddressSelect.style.visibility = "visible";
       
}   
 

//    
////*********************************************************
//// LoadSimplePin
////
////*********************************************************
//    function LoadSimplePin(strPinInfo, pinId, img)
//    {
//      // alert("LoadSimplePin:" + strPinInfo + " pinId:" + pinId);
//     
//       var pArray = strPinInfo.split("|"); 
//       var nm               = pArray[0];
//       var addr             = pArray[1];
//       var lat              = pArray[2];
//       var lng              = pArray[3];
//       //var ndx              = pArray[4];
//       
//       if (isNaN(lat) || isNaN(lng))
//       {
//        return;
//       } 
//      
//       
//       var url = "../layout/images/mapImg_unrouted.jpg";
//       if (img != null)
//       {
//            url = img;
//       } 
//        
//       var detailLink = "";
//       var txt = "";
//               
//       txt = "<table><tr valign=top ><td class=inputName >Description:</td><td class=input>" + nm + " </td></tr> " + 
//                 "<tr valign=top ><td class=inputName >Address:</td><td class=input>" + addr + " </td></tr></table>"; 
//                // "<tr valign=top ><td class=inputName >Lat:</td><td class=input>" + lat + " </td></tr>" +
//                // "<tr valign=top ><td class=inputName >Lng:</td><td class=input>" + lng + " </td></tr></table>";
//                 
//        
//                 
//        var latLong =  new VELatLong(lat, lng);
//        var id = "pin" + pinId; //working_address_id;
//        
//       
//        
//        try
//        {
//            map.DeletePushpin(id);
//           
//        }
//        catch(err)
//        {
//           // alert("LoadSimplePin error");
//        //Handle errors here
//        }
//        var pin = new VEPushpin(id, latLong, url,'Stop Info', txt);     
//        map.AddPushpin(pin);
//       
//          
//    }
    
   
    
//*********************************************************
// LoadSimpleGPin
//
//********************************************************* 
    function LoadSimpleGPin(strPinInfo, img, ndx) //, pinId, img)
    {
       //alert("LoadSimpleGPin:" + strPinInfo + " ndx:" + ndx);

     
       var pArray = strPinInfo.split("|"); 
       var nm               = pArray[0];
       var addr             = pArray[1];
       var lat              = pArray[2];
       var lng              = pArray[3];
        
       var url = "../layout/images/mapImg_unrouted.jpg";
       if (img != null)
       {
            url = img;
       } 
        
       var detailLink = "";
       var txt = "";
            
        if (nm == AddrDefaultDesc)
        {
            nm = "";
        }


       txt = "<br><table><tr valign=top ><td class=input><FONT FACE='Arial' size=2 >" + nm + " </FONT></td></tr> " + 
                 "<tr valign=top ><td class=input><FONT FACE='Arial' size=2 >" + addr + " </FONT></td></tr></table>"; 
                // "<tr valign=top ><td class=inputName >Lat:</td><td class=input>" + lat + " </td></tr>" +
                // "<tr valign=top ><td class=inputName >Lng:</td><td class=input>" + lng + " </td></tr></table>";
                  
        var icon = new GIcon();
        icon.image = url;
        icon.shadow = "";
        icon.iconSize = new GSize(20, 20);
        icon.shadowSize = new GSize(22, 20);
        icon.iconAnchor = new GPoint(6, 20);
        icon.infoWindowAnchor = new GPoint(5, 1);

         
        var marker =  currentMarkers[ndx];
        if (marker != null)
        {
           map.removeOverlay(marker);
        }
        
        var point = new GLatLng(lat, lng);        
        marker = new GMarker(point, icon);
        
        currentMarkers[ndx] = marker;
        currentMarkersText[ndx] = txt;
        
        GEvent.addListener(marker, "mouseover", function() {
            marker.openInfoWindowHtml(txt);});
           
        GEvent.addListener(marker,"mouseout", function() {
               map.closeInfoWindow();   });
            
        map.addOverlay(marker);    
        
        
            
    }
   
//		'*********************************************************************** 
//		'Name  : ClearGAddress
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
    function ClearGAddress(strObjName, ndx)
    {
        var id = "pin" + strObjName + "_txtAddress";
       
        try
        {
            var marker =  currentMarkers[ndx];
            if (marker != null)
            {
               map.removeOverlay(marker);
            }
        }
        catch(err)
        {
          //alert("LoadSimplePin error:" + err.description);
        }
           
        var objLat = getObj(strObjName + "_txtLatitude");
        var objLng = getObj(strObjName + "_txtLongitude");
        
        var objtxtAddress = getObj(strObjName + "_txtAddress");
        //var objtxtAddressDesc = getObj(strObjName + "_txtAddressDesc"); 
     
        objLat.value = "";
        objLng.value = "";
        objtxtAddress.value = "";
        //objtxtAddressDesc.value = "";
        
    }     
    
//    
////		'*********************************************************************** 
////		'Name  : ClearAddr
////		'Date  :  
////		'Author: 
////		'Desc  : 
////		'*********************************************************************** 
//    function ClearAddr(strObjName, doConfirmation)
//    {
//        alert("strObjName:" + strObjName);
//    
//        var id = "pin" + strObjName + "_txtAddress";
//        
//        if (doConfirmation)
//        {
//            if (!confirm("Are you sure you wish to clear this address?"))
//            {
//                return;
//            }
//        }
//        
//        
//         
//        try
//        {
//            //alert("deleting:" + id);
//            map.DeletePushpin(id);
//           
//        }
//        catch(err)
//        {
//          //alert("LoadSimplePin error:" + err.description);
//        }
//           
//        var objLat = getObj(strObjName + "_txtLatitude");
//        var objLng = getObj(strObjName + "_txtLongitude");
//        
//        var objtxtAddress = getObj(strObjName + "_txtAddress");
//        var objtxtAddressDesc = getObj(strObjName + "_txtAddressDesc"); 
//     
//        objLat.value = "";
//        objLng.value = "";
//        objtxtAddress.value = "";
//        objtxtAddressDesc.value = "";
//        
//    } 
     
//		'*********************************************************************** 
//		'Name  : ClearAllAddrs
//		'Date  :  
//		'Author: 
//		'Desc  : 
//		'*********************************************************************** 
    function ClearAllAddrs()
    {
        if (!confirm("Are you sure you wish to clear all of your addresses?"))
        {
           return;
        }     
        
       try
        {
            // map.DeleteAllPushpins();
           
        }
        catch(err)
        {
           // alert("LoadSimplePin error");
            //Handle errors here
        }
        ClearGAddress(namespace_val + "Addr_freetext0", 0);
        ClearGAddress(namespace_val + "Addr_freetext1", 1);
        ClearGAddress(namespace_val + "Addr_freetext2", 2);
        ClearGAddress(namespace_val + "Addr_freetext3", 3);
        ClearGAddress(namespace_val + "Addr_freetext4", 4);
        ClearGAddress(namespace_val + "Addr_freetext5", 5);
        ClearGAddress(namespace_val + "Addr_freetext6", 6);
        ClearGAddress(namespace_val + "Addr_freetext7", 7);
        ClearGAddress(namespace_val + "Addr_freetext8", 8);
        ClearGAddress(namespace_val + "Addr_freetext9", 9);
        ClearGAddress(namespace_val + "Addr_freetext10", 10);
//        ClearAddr(namespace_val + "_Addr_freetext11", false);
//        ClearAddr(namespace_val + "_Addr_freetext12", false);
      
        
    }
     
 //********************************************************
//Name: arrayToString()
//Desc: 
//Note: converts array to a strToken delim string
//********************************************************
function arrayToString(arr, strToken)
{
	var strValue = "";
	
	if (arr != null)
	{
		for (i=0;i<arr.length; i++)
		{
		 
			strValue += arr[i];
			if (i< arr.length -1)
			{
				strValue = strValue + strToken;
			}
		 
		}
	}

	return strValue;	
}


/*
   name - name of the cookie
   value - value of the cookie
   [expires] - expiration date of the cookie
     (defaults to end of current session)
   [path] - path for which the cookie is valid
     (defaults to path of calling document)
   [domain] - domain for which the cookie is valid
     (defaults to domain of calling document)
   [secure] - Boolean value indicating if the cookie transmission requires
     a secure transmission
   * an argument defaults when it is assigned null as a placeholder
   * a null placeholder is not required for trailing omitted arguments
*/

function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

function supportsCookies()
{
    var cookieEnabled=(navigator.cookieEnabled)? true : false;
    //if not IE4+ nor NS6+
    if (typeof navigator.cookieEnabled=="undefined" && !cookieEnabled)
    { 
        document.cookie="testcookie";
        cookieEnabled=(document.cookie.indexOf("testcookie")!=-1)? true : false;
    }
    return cookieEnabled;
}



//*********************************************************
// GenLatLongList
//
//*********************************************************
function GenLatLongList(nmSpace)
{
    var objLat = null;
    var objLng = null;
    var arrLatLong = new Array;
    var obj = null;
    
   // alert("GenLatLongList nmSpace:" + nmSpace);
    
    var prefix =  nmSpace + "Addr_freetext";
            
    //if (nmSpace == "")
    //{
     //   prefix = "Addr_freetext";
    //}      
    
      
    for (var i=0;i<maxRows;i++)
    {       
        objLat = getObj(nmSpace + "Addr_freetext" + i + "_txtLatitude");
        objLng = getObj(nmSpace + "Addr_freetext" + i + "_txtLongitude");
        obj = GenLatLongItem(objLat.value, objLng.value);
        if (obj != null)
        {
            arrLatLong.push(obj);
        }
     }
    return arrLatLong;
    
}
 
// *********************************************************
// Name: zoomToGMarkers
// Desc:	 
// Note:
// ********************************************************* 
function zoomToGMarkers(arrLatLongList, slopPercentage, heightOffsetPct) 
{
	var x, y, minX, maxX, minY, maxY, span, count, i;
   // alert("zoomToGMarkers - enter");
	if (arrLatLongList == null)
	{
	    return;
	}
	
	//alert("arrLatLongList.length=" + arrLatLongList.length);
	count = 0;
	
	for (i=0;i<arrLatLongList.length;i++)
	{
	    x = 0;
	    y = 0;
	    
	    var obj = arrLatLongList[i];
	    if (obj != null)
	    {
	        x = obj.Latitude; 
	        y = obj.Longitude; 
	    }
	    
	   
		
		if (x!=0 && y != 0)
		{
		   
	
		    if (count == 0 )
		    {
		      
			    minX = x; maxX = x; minY = y; maxY = y;
		    }
		    else
		    {
			    if (x < minX) minX = x;
			    if (x > maxX) maxX = x;
			    if (y < minY) minY = y;
			    if (y > maxY) maxY = y;
		    }
		    count++;
	    }
	}
	
	if (count == 1)
		map.setCenter(new GLatLng(x,y), 7);
	else if (count > 1)
	{
	    var xavg, yavg;     
	    xavg =  (parseFloat(minX) + parseFloat(maxX))/2;
	    yavg = (parseFloat(minY) + parseFloat(maxY))/2;
	   
		var center = new GLatLng(xavg, yavg);
		//alert("center.lat():" + center.lat() + " center.lng():" + center.lng());
		
		var xspan =  Math.abs(maxX - minX);
		var yspan =  Math.abs(maxY - minY);
		
		span = new GSize(xspan, yspan);
		slopWid = 0;
		slopHgt = 0;
		
		if (typeof slopPercentage != "undefined")
		{
			slopWid = span.width * slopPercentage / 200;
			slopHgt = span.height * slopPercentage / 200;
			span.width  *= 1 + slopPercentage / 100;
			span.height *= 1 + slopPercentage / 100;
		}
		deltaHgt = 0;
		if (typeof heightOffsetPct != "undefined")
		{
			deltaHgt = span.height * heightOffsetPct / 100;
			//center = new GLatLng(center.lat() + deltaHgt, center.lng());
		}
		 
		var bounds = new GLatLngBounds();
        bounds.extend(new GLatLng(parseFloat(minX)-slopHgt, parseFloat(minY)-slopWid) );
        bounds.extend( new GLatLng(parseFloat(maxX)+slopHgt, parseFloat(maxY)+slopWid) );
		var zoom = map.getBoundsZoomLevel(bounds);
		map.setCenter(center, zoom);
	}
    
	//alert("zoomToGMarkers - exit");
}


// *********************************************************
// Name: buildGPolyLines
// Desc:	 
// Note:
// ********************************************************* 
function buildGPolyLines(arrLatLongList) 
{ 
	if (arrLatLongList == null)
	{
	    return;
	}

	count = 0;
	var arrPointList = new Array; //for poly lines
	
	if (currentGPolyLine != null)
	{
	    map.removeOverlay(currentGPolyLine);
	}

    

    var obj, lat, lng, point;
	for (i=0;i<arrLatLongList.length;i++)
	{
	    obj = arrLatLongList[i];
	    lat = obj.Latitude; 
	    lng =  obj.Longitude; 
        point = new GLatLng(lat, lng);
        
        if (arrPointList != null)
        {
          arrPointList.push(point);
        }
	}  
	
	obj = arrLatLongList[0];
    lat = obj.Latitude; 
    lng =  obj.Longitude; 
    point = new GLatLng(lat, lng);
    
    if (arrPointList != null)
    {
      arrPointList.push(point);
    }
	
	currentGPolyLine = new GPolyline(arrPointList);
	map.addOverlay(currentGPolyLine);
	    
}

function showGLoc(ndx)
{
        var marker = currentMarkers[ndx];
        if (marker != null)
        {
            var txt = currentMarkersText[ndx];
            marker.openInfoWindowHtml(txt);
        }
        else
        {
            //alert("is null");
        }
}

function hideGLoc()
{
    map.closeInfoWindow();           
}

 