﻿// JScript File

function doClick(buttonName,e)
{
    //the purpose of this function is to allow the enter key to 
    //point to the correct button to click.
    var key;
    if(window.event)
        key = window.event.keyCode;     //IE
    else
        key = e.which;     //firefox
    if (key == 13)
    {
    //Get the button the user wants to have clicked
        var btn = document.getElementById(buttonName);
        if (btn != null)
        { //If we find the button click it
            btn.click();
            event.keyCode = 0
        }
    }
}

        var key1 = 'ABQIAAAAGbe15MnqXib6_AaXgHErgxRsROQRoIwy6oyws6FuiOM8dwVGcxT4PV59tKtGC1JTW4yxbegtlyBwQw';
        var key2 = 'ABQIAAAAGbe15MnqXib6_AaXgHErgxSwjfvWQ-isB4Rz4D7GZAmS-xEErxQEqveaiCBNZdetB1hDaqHBggK21Q';
        var myKey = key2;
        if (window.location.host == 'www.gmapplus.com' || window.location.host== 'gmapplus.com') {
          myKey = key1;
        }
        else {
          myKey = key2;
        }
        var scriptTag = '<' + 'script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=' + myKey + '">'+'<'+'/script>';
        document.write(scriptTag); 

        var map ;   
        var lastpoint;
        var lastclick = "" ;	
        //var myCurrentMarker = new GMarker(new GPoint(0,0));
        var myCurrentMarker;
        function initialize() {
          if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map_canvas"));
            var latlng = new GLatLng(40.036040,-98.977512) ; // Memphis Airport
            map.setCenter(latlng,4);
            //map.addControl(new GSmallMapControl());
            map.addControl(new GLargeMapControl());
            map.addControl(new GMapTypeControl());            
            map.enableScrollWheelZoom();
            GEvent.addListener(map,"click", function(overlay,point) {
              if (overlay)
              {
              } else if (point) 
              {
               checkclick(point) ;
              }
               //checkclick(point) ;              
            });
            //map.addOverlay(myCurrentMarker);
       }     

       function createMarker(point) 
       {
         var marker = new GMarker(point);  
         var message = ["This","is","the","secret","message"];  
         marker.value = point.toString();  
         GEvent.addListener(marker, "click", function() {
             var myHtml = "<table><tr><td style='color:#4D85C5;font-family:Verdana;font-size:10pt;'>" + point.x.toString().substr(0,10)+", " +point.y.toString().substr(0,9)+ "</td></tr></table>";    
             map.openInfoWindowHtml(point, myHtml);  });               
             return marker;
        }
       
       function checkclick (point)
       {
        if ( lastclick != point )
        {
         lastclick = point ;
        var TextLongitude = document.getElementById("TextLongitude");
        var tempStr = "";
        tempStr = point.x.toString();
        if(tempStr.length > 10){
            tempStr = tempStr.substr(0,10);
        }
        TextLongitude.value = tempStr;
        var TextLatitude = document.getElementById("TextLatitude");
        tempStr = point.y.toString();
        if(tempStr.length > 9){
            tempStr = tempStr.substr(0,9);
        }        
        TextLatitude.value = tempStr;
        if(myCurrentMarker==null){
        }
        else{
            map.removeOverlay(myCurrentMarker);        
        }        
        myCurrentMarker = createMarker(point);
        map.addOverlay(myCurrentMarker);
        }
       }
               
        var TextLongitude = document.getElementById("TextLongitude");
        TextLongitude.focus();
        }
        
        function ButtonClientSubmit_onclick() {
            window.status = "Getting reverse geocoding values ...";
            var TDMsg = document.getElementById("TDMsg");
            var TextLongitude = document.getElementById("TextLongitude");
            var TextLatitude = document.getElementById("TextLatitude");
            if(TextLongitude.value=="" | TextLatitude.value==""){
                TDMsg.innerHTML="Invalid longitude or/and latitude!";
                window.status = "";
                return;
            }
            var SelectBndyType = document.getElementById("SelectBndyType");
            var TDDetail = document.getElementById("TDDetail");
            TDDetail.innerHTML="<table style='width: 90%; background-color: #FFFFFF;'> <tr valign='middle'> <td> <img src='images/loadinfo_net.gif' alt='processing...' /> </td> <td> Processing... </td> </tr> </table>";            
            RS.Execute("WaterOrLand.aspx","ServerSideReturn",TextLongitude.value,TextLatitude.value,updateMap);
            window.status = "";
        }
        
        function updateMap(result){
            var TDDetail = document.getElementById("TDDetail");                        
            var TDMsg = document.getElementById("TDMsg");
            if(result==""){
                TDMsg.innerHTML="No data found!";
                TDDetail.innerHTML="";           
                return;
            }            
            TDMsg.innerHTML="";
            var TextLongitude = document.getElementById("TextLongitude");
            var TextLatitude = document.getElementById("TextLatitude");
            var returnAry = new Array();
            returnAry = result.split("+");
            
            var waterOrLandIndicator = returnAry[0];      
            var waterOrLandDesc = returnAry[1];      
            var waterName = returnAry[2];      
            var waterType = returnAry[3];   
            var waterArea_Mi = returnAry[4];   
            var nearestWaterName = returnAry[5];   
            var nearestWaterType = returnAry[6];
            var nearestWaterArea_Mi = returnAry[7];
            var nearestWaterDistance = returnAry[8];
            var stateName = returnAry[9];  
            var countyName = returnAry[10];  
            var xValue = TextLongitude.value;    
            var yValue = TextLatitude.value;    
            
            var htmlStr="";             
            htmlStr+="<table style='width: 95%; border-top-style: ridge; border-right-style: ridge; border-left-style: ridge; border-bottom-style: ridge;'>";
            htmlStr+="<tr style='background-color: #aaaaaa;'><td>You gave</td></tr><tr><td align='center'><a href='#'>"+xValue+", "+yValue+"</a></td></tr>"
            htmlStr+="<tr style='background-color: #aaaaaa;'><td>Water Or Land</td></tr><tr><td align='center'><a href='#'>"+waterOrLandDesc+"</a></td></tr>"
            if(waterOrLandIndicator=="1" | waterOrLandIndicator=="2"  | waterOrLandIndicator=="99" ){
                htmlStr+="<tr style='background-color: #aaaaaa;'><td>Water Name</td></tr><tr><td align='center'><a href='#'>"+waterName+"</a></td></tr>"
                htmlStr+="<tr style='background-color: #aaaaaa;'><td>Water Type</td></tr><tr><td align='center'><a href='#'>"+waterType+"</a></td></tr>"
                if(waterOrLandIndicator=="2"  | waterOrLandIndicator=="99"){
                    htmlStr+="<tr style='background-color: #aaaaaa;'><td>Water Area MISQ</td></tr><tr><td align='center'><a href='#'></a></td></tr>"            
                }else{
                    htmlStr+="<tr style='background-color: #aaaaaa;'><td>Water Area MISQ</td></tr><tr><td align='center'><a href='#'>"+waterArea_Mi+" SQMI</a></td></tr>"            
                }
                
            }
            else{
                htmlStr+="<tr style='background-color: #aaaaaa;'><td>Nearest Water Name</td></tr><tr><td align='center'><a href='#'>"+nearestWaterName+"</a></td></tr>"
                htmlStr+="<tr style='background-color: #aaaaaa;'><td>Nearest Water Type</td></tr><tr><td align='center'><a href='#'>"+nearestWaterType+"</a></td></tr>"
                if(nearestWaterArea_Mi=="0.000"){
                    htmlStr+="<tr style='background-color: #aaaaaa;'><td>Nearest Water Area MISQ</td></tr><tr><td align='center'><a href='#'>Area is not calculated for thin river</a></td></tr>"                
                }
                else{
                    htmlStr+="<tr style='background-color: #aaaaaa;'><td>Nearest Water Area MISQ</td></tr><tr><td align='center'><a href='#'>"+nearestWaterArea_Mi+" SQMI</a></td></tr>"
                }                
                htmlStr+="<tr style='background-color: #aaaaaa;'><td>Nearest Water Distance</td></tr><tr><td align='center'><a href='#'>"+nearestWaterDistance+" MI</a></td></tr>"            
            }
            htmlStr+="<tr style='background-color: #aaaaaa;'><td>State, County</td></tr><tr><td align='center'><a href='#'>"+stateName+", "+countyName+"</a></td></tr>"
            htmlStr+="</table>";                
            TDDetail.innerHTML = htmlStr;     

            var returnCenterX = returnAry[11];
            var returnCenterY = returnAry[12];
            var returnRecommendGmapLevel = "12";

            map.clearOverlays();      

            var polylineEncoder = new PolylineEncoder();
            var geom = new String();
            geom = returnAry[14];
            if(geom!=""){
                var polys = new Array();            
                polys = geom.split("))|((");            
                for (var j = 0; j < polys.length; j++) //polygons
                {            
                    var lines = [];
                    var returnGeomAry = new Array();
                    returnGeomAry = polys[j].split(")|(")//one polygon may contains holes
                    for (var k = 0; k < returnGeomAry.length; k++){                    
                        var returnGeom = returnGeomAry[k];
                        var geomAry = new Array();
                        geomAry = returnGeom.split("|");
                        var XY = new Array();
                        var points = [] ;
                        for (var i = 0; i < geomAry.length; i++)
                        {
                            XY = geomAry[i].split(",");
                            points.push( new GLatLng(parseFloat(XY[1]),parseFloat(XY[0])) ) ;
                        }
                        var result = polylineEncoder.dpEncode(points); 
                        lines.push({color: "#ff0000", weight: 2, opacity: 0.8, points: result.encodedPoints, levels: "PNONP", zoomFactor: 2, numLevels: 18 });
                    }
                    var poly1 = new GPolygon.fromEncoded({ polylines: lines, fill: true, color: "#ff0000", opacity: 0.4, outline: true});
                    map.addOverlay(poly1);                
                }//end of overlay polygons loop            
            }            
            
            var point_center = new GLatLng(parseFloat(TextLatitude.value),parseFloat(TextLongitude.value));
			var label = "XYInfo";
			var tabInfo = new Array();
			tabInfo="WaterOrLand|WaterInfo|County".split("|");
			tabs = new Array();
			var tabsStr=returnAry[13];
			for (var j = 0; j < tabInfo.length; j++) {
				var tabLabel = tabInfo[j];
				var tabHtml = getTagValue(tabInfo[j],tabsStr);
				if ((j==0) && (tabInfo.length > 2)){
					tabHtml = '<div style="width:'+tabInfo.length*88+'px">' + tabHtml + '</div>';
				}
				tabs.push(new GInfoWindowTab(tabLabel,tabHtml));
			}
			var marker = createTabbedMarker(point_center,label,tabs);
			map.addOverlay(marker);
			marker.openInfoWindowTabsHtml(marker.tabs);
			if(waterOrLandIndicator=="2"  | waterOrLandIndicator=="99"){}//over ocean or out side of usa
			else{
			    if(map.getZoom()<8){
			        map.setCenter(new GLatLng(parseFloat(yValue),parseFloat(xValue)), parseInt(returnRecommendGmapLevel)-1);             
			    }            			
			}
            TextLongitude.focus();                         
        }
    function getTagValue(tagName,infos){
        var tagValue="";
        var mytagName=new String;
        mytagName=tagName;
        var myInfos=new String;
        myInfos=infos;
        var startIndex;
        var endIndex;
        var length;
        startIndex=myInfos.indexOf("<"+mytagName+">");
        endIndex=myInfos.indexOf("</"+mytagName+">");
        length=mytagName.length+2;
        if (startIndex < endIndex)
        {
            tagValue = myInfos.substring(startIndex + length, endIndex);
        }
        return tagValue;
    }
    
    function createTabbedMarker(point,label,tabs) {
	    var marker = new GMarker(point);
	    marker.tabs = tabs;        
	    GEvent.addListener(marker, "click", function() {
		    marker.openInfoWindowTabsHtml(marker.tabs);
	    });
	    return marker;
    }  
        