
    var map = null;
    var geocoder = null;
    var contextmenu;
    var fZoom;
    var ArrLatLang = new Array();
    var iCount = 0;
    var latArray = new Array();
    var langArray = new Array();
    var maxLat=0;
    var minLat=0;
    var maxLng =0;
    var minLng =0;
    var openbubble=true;
    var myArray = new Array();
    var AddArray = new Array();
    var HtmlAddArray = new Array();
    var FranArray = new Array();
    var allMarker = new Array();
    var agent = navigator.userAgent.toLowerCase();
       if ((agent.indexOf("msie") > -1) && (agent.indexOf("opera") < 1)){
       var loader = "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='gmarker.png', sizingMethod='crop');";
       icon = '<div  style="height:34px; width:20px; ' +loader+ '" ></div>';
     }  
    function load() {
      if (GBrowserIsCompatible()) {
         var point;
                     
         map=new GMap2(document.getElementById("map"));     
         map.addControl(new GOverviewMapControl());
		 map.enableDoubleClickZoom();
	     map.enableScrollWheelZoom();
		 map.addControl(new GMapTypeControl());
         map.addControl(new GLargeMapControl());
         createContextMenu(map); 
         var htmlAddress='<font size="2" face="Arial"><b>INDIA</b><br/><br/>XYZ Inc.<br/>New York City <br/>America<br/>Ph.: 343254543</font>';
         point = new GLatLng(35,-80);                  
         map.setCenter(point,3);        
         //map.setMapType(G_HYBRID_MAP);        
         geocoder = new GClientGeocoder();   
         var fZoom =  parseInt(document.getElementById("hdnRCount").value,10);        
         var alladd = document.getElementById("hdnAdd").value;  
                  
		   for(var i=0;i<AddArray.length;i++)
		     showAddress(AddArray[i],HtmlAddArray[i],fZoom,FranArray[i]); 
		 
		 
      }
    }   
  
  function createContextMenu(map)
   {
      contextmenu = document.createElement("div");
      contextmenu.style.visibility="hidden";
      contextmenu.style.background="#ffffff";
      contextmenu.style.border="1px solid #8888FF";

      contextmenu.innerHTML = '<a href="javascript:zoomIn()"><div class="context">&nbsp;&nbsp;Zoom in&nbsp;&nbsp;</div></a>'
                            + '<a href="javascript:zoomOut()"><div class="context">&nbsp;&nbsp;Zoom out&nbsp;&nbsp;</div></a>'
                            + '<a href="javascript:zoomInHere()"><div class="context">&nbsp;&nbsp;Zoom in here&nbsp;&nbsp;</div></a>'
                            + '<a href="javascript:zoomOutHere()"><div class="context">&nbsp;&nbsp;Zoom out here&nbsp;&nbsp;</div></a>'
                            + '<a href="javascript:centreMapHere()"><div class="context">&nbsp;&nbsp;Centre map here&nbsp;&nbsp;</div></a>';

      map.getContainer().appendChild(contextmenu);
      GEvent.addListener(map,"singlerightclick",function(pixel,tile) 
      {
          clickedPixel = pixel;
          var x=pixel.x;
          var y=pixel.y;
          if (x > map.getSize().width - 120) 
          { 
            x = map.getSize().width - 120 
          }
          if (y > map.getSize().height - 100) 
          { 
            y = map.getSize().height - 100 
          }
          var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y));  
          pos.apply(contextmenu);
          contextmenu.style.visibility = "visible";
     });
     GEvent.addListener(map, "click", function() 
     {
          contextmenu.style.visibility="hidden";
     });
 }
 function zoomIn() 
 {
    map.zoomIn();
    contextmenu.style.visibility="hidden";
 }      
 function zoomOut() 
 {
    map.zoomOut();
    contextmenu.style.visibility="hidden";
 }      
 function zoomInHere() 
 {
    var point = map.fromContainerPixelToLatLng(clickedPixel)
    map.zoomIn(point,true);
    contextmenu.style.visibility="hidden";
 }      
 function zoomOutHere() 
 {
    var point = map.fromContainerPixelToLatLng(clickedPixel)
    map.setCenter(point,map.getZoom()-1); 
    contextmenu.style.visibility="hidden";
 }      
 function centreMapHere() 
 {
    var point = map.fromContainerPixelToLatLng(clickedPixel)
    map.setCenter(point);
    contextmenu.style.visibility="hidden";
 }
 function showAddress(address,htmlAddress,fZoom,id) {  
        var htmlAddress; 
        var hContent;
        var zoom = 0; 
		advAJAX.setDefaultParameters({ 					        
			onSuccess : function(obj) 			
			{ 				
				if(obj.responseText.indexOf("$") == -1)
				{
					if (geocoder) {
						geocoder.getLatLng(
						address,
						function(point) {
							if (!point) {
							//alert(address + " not found");
							} else {			
								var latitude = point.lat();
								var longitude = point.lng(); 
								ArrLatLang[iCount] = point;	
									
								hContent = '<div style="padding: 0px 0px 13px 0px; background: url(images/pt_bot_ctr_ora.png) no-repeat bottom center;"><div style="text-align: center; background-color: #f2c30c; padding: 2px; font-size: 0.75em;  font-weight: bold; border: 2px solid red" onclick="myclick(' + iCount + ')">'+id+'</div>';
                                hContent+='<div id="hInfo" style="display: none;">';
                                hContent+='<div style="width: 81px; background-color: #000; padding: 3px; font-size: 0.75em; color: #fff; text-align: left; border: 1px solid #f2c30c;">This is my content</div>';
                                hContent+='</div></div>'; 
                                
                               
							    advAJAX.setDefaultParameters({ 					        
									onSuccess : function(obj) { }
								});
								advAJAX.get(
								{ 					
									url: "SaveAddress.aspx",
									parameters : {
												"address" : address,
												"latitude" : latitude,
												"longitude" : longitude,
												"rType" : "save"
												} 
								});
							var marker = new GMarker(point);
							createTLabel(point,hContent);
					        ArrLatLang[iCount] = point;	
					        allMarker[iCount] = marker;
								iCount = iCount + 1;
				            
							FindZoom(true);
					if(iCount==1)
						map.setCenter(point,16);
					else
					{							  
						var pt1 = ((maxLat + minLat)/2);;
						var pt2 = ((maxLng + minLng)/2);							
						var pointC = new GLatLng(parseFloat(pt1),parseFloat(pt2));
						var disTan = (maxLat - minLat)*(maxLat - minLat) + (maxLng - minLng)*(maxLng - minLng)
			            disTan = Math.sqrt(disTan)
			            if (disTan<.6)
						zoom = 9
						else
						{
						if (disTan<1.5)
						zoom = 8
						else
						{
						if (disTan<4)
							zoom = 7
						else
						{
							if (disTan<10)
								zoom = 6
							else
							{
							if (disTan<25)
								zoom = 4
							else
							{
								if (disTan<45)
								zoom = 3
								else
								zoom = 2
							}
							}
						}
						}
						}
						map.setCenter(pointC,zoom);
					}
							//map.setCenter(point,6);
							
					        GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(htmlAddress);});				            
							}
						}
						);
					}
				}
				else
				{	
				    hContent = '<div style="padding: 0px 0px 13px 0px; background: url(images/pt_bot_ctr_ora.png) no-repeat bottom center;"><div style="text-align: center; background-color: #f2c30c; padding: 2px; font-size: 0.75em;  font-weight: bold; border: 2px solid red" onclick="myclick(' + iCount + ')">'+id+'</div>';
                    hContent+='<div id="hInfo" style="display: none;">';
                    hContent+='<div style="width: 81px; background-color: #000; padding: 3px; font-size: 0.75em; color: #fff; text-align: left; border: 1px solid #f2c30c;">This is my content</div>';
                    hContent+='</div></div>'; 
					var index = obj.responseText.indexOf("$");														
					var val = obj.responseText.substring(0 ,index); 					
					var points = val.split(",");
					var point = new GLatLng(parseFloat(points[0]),parseFloat(points[1]));
					var marker = new GMarker(point);
					createTLabel(point,hContent);
					ArrLatLang[iCount] = point;	
					allMarker[iCount] = marker;
								iCount = iCount + 1;
				    FindZoom(true);
				    
					if(iCount==1)
							  map.setCenter(point,16);
					else
					{							  
						var pt1 = ((maxLat + minLat)/2);;
						var pt2 = ((maxLng + minLng)/2);							
						var pointC = new GLatLng(parseFloat(pt1),parseFloat(pt2));
						var disTan = (maxLat - minLat)*(maxLat - minLat) + (maxLng - minLng)*(maxLng - minLng)
			            disTan = Math.sqrt(disTan)
			            if (disTan<.6)
						zoom = 9
						else
						{
						if (disTan<1.5)
						zoom = 8
						else
						{
						if (disTan<4)
							zoom = 7
						else
						{
							if (disTan<10)
								zoom = 6
							else
							{
							if (disTan<25)
								zoom = 4
							else
							{
								if (disTan<45)
								zoom = 3
								else
								zoom = 2
							}
							}
						}
						}
						}
						map.setCenter(pointC,zoom);
					}
							
					
					
					GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(htmlAddress);});
					
				}
			}
		});
		advAJAX.get(
		{ 					
			url: "SaveAddress.aspx",
			parameters : {
						"address" : address,
						"rType" : "find"										
						} 
		});
				
      
    }
    function showSearchAddress() 
    {
        var SaerchAddress = document.getElementById("txtSearchAdd").value;
       
        if (geocoder) {
        
        geocoder.getLatLng(
          SaerchAddress,
          function(point) {
            if (!point) {
              alert(SaerchAddress + " not found");
            } else {
             
                var hContent = '<div style="padding: 0px 0px 13px 0px; background: url(images/pt_bot_ctr_ora.png) no-repeat bottom center;"><div style="text-align: center; background-color: #f2c30c; padding: 2px; font-size: 0.75em;  font-weight: bold; border: 2px solid red" onclick="myclick(' + iCount + ')">'+SaerchAddress+'</div>';
                    hContent+='<div id="hInfo" style="display: none;">';
                    hContent+='<div style="width: 81px; background-color: #000; padding: 3px; font-size: 0.75em; color: #fff; text-align: left; border: 1px solid #f2c30c;">This is my content</div>';
                    hContent+='</div></div>'; 
             // map.setCenter(point, 3);
              var marker = new GMarker(point);
              //map.addOverlay(marker);
              //marker.openInfoWindowHtml(SaerchAddress);
              createTLabel(point,hContent);
			  ArrLatLang[iCount] = point;	
			  allMarker[iCount] = marker;
			  iCount = iCount + 1;
			  FindZoom(true);
			        if(iCount==1)
							  map.setCenter(point,16);
					else
					{							  
						var pt1 = ((maxLat + minLat)/2);;
						var pt2 = ((maxLng + minLng)/2);							
						var pointC = new GLatLng(parseFloat(pt1),parseFloat(pt2));
						var disTan = (maxLat - minLat)*(maxLat - minLat) + (maxLng - minLng)*(maxLng - minLng)
			            disTan = Math.sqrt(disTan)
			            if (disTan<.6)
						zoom = 9
						else
						{
						if (disTan<1.5)
						zoom = 8
						else
						{
						if (disTan<4)
							zoom = 7
						else
						{
							if (disTan<10)
								zoom = 6
							else
							{
							if (disTan<25)
								zoom = 4
							else
							{
								if (disTan<45)
								zoom = 3
								else
								zoom = 2
							}
							}
						}
						}
						}
						map.setCenter(pointC,zoom);
					}
									
					GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(SaerchAddress);});
					
			  
              //GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(SaerchAddress);});
              
              //var latitude = point.lat();
			  //var longitude = point.lng(); 
			  //ArrLatLang[iCount] = point;	
			  //iCount = iCount + 1	;	
			  //FindZoom(true);
			  //var pt1 = ((maxLat + minLat)/2);;
			  //var pt2 = ((maxLng + minLng)/2);							
			  //var point = new GLatLng(parseFloat(pt1 ),parseFloat(pt2));
			   //var point = new GLatLng(parseFloat(35 ),parseFloat(-80));
			  //var disTan = (maxLat - minLat)*(maxLat - minLat) + (maxLng - minLng)*(maxLng - minLng)
			  //disTan = Math.sqrt(disTan)
			  
            }
          }
        );
      }
    
    }
    
    function FindZoom(c)
    {
      var distanceArray = new Array();
      var i,j,n;
      n=0;
            
      for(i=0;i<ArrLatLang.length;i++)
      {
        /*for(j=i+1;j<=ArrLatLang.length-1;j++)
        {
          distanceArray[n] = findLength(ArrLatLang[i],ArrLatLang[j]);
        }*/
        latArray[i] = ArrLatLang[i].lat();
        langArray[i] = ArrLatLang[i].lng();
        if (i==0)
        {  
           minLat = latArray[i];
           minLng = langArray[i];
           maxLat = latArray[i];
           maxLng = langArray[i];
        }
        else
        {
         if (latArray[i]>maxLat)
            maxLat = latArray[i];
       
         if  (latArray[i]<minLat)
             minLat = latArray[i];
            
         if (langArray[i]>maxLng)
            maxLng = langArray[i];
           
         if (langArray[i]<minLng)
             minLng = langArray[i];
        }
        
      }
     //distanceArray.sort(function(x,y){x>y?true:false;});
     // return distanceArray[0];
     //if(ArrLatLang.length>1)
    // {
     // latArray.sort(function(x,y){x>y?true:false;});
    //  langArray.sort(function(x,y){x>y?true:false;});
    // }
     return true;
    }
    
    function findLength(a,b)
    {
     var d;
     var latX1 = a.lat();
	 var longY1 = a.lng(); 
	 var latX2 = b.lat();
	 var longY2 = b.lng(); 
	 d = (latX1-latX2)*(latX1-latX2) +(longY1-longY2)*(longY1-longY2);
     return Math.sqrt(d);
    }
    //new code
     var n=0;
        function createTLabel(point,html) {
        var label = new TLabel();
         label.id = 'Label '+n;
         label.anchorLatLng = point;
         label.anchorPoint = 'bottomCenter';
         label.content = html;
         label.markerOffset = new GSize(-1,-5);
         map.addTLabel(label);
         var obj=document.getElementById(label.id);
         GEvent.addDomListener(obj, "click", function() {
                //map.openInfoWindowHtml(point, html, {pixelOffset: new GSize(0,-34)} );
         });         

         n++;
      }
       function openInfo(d)
    {
        var obj = document.getElementById(d);
        if(openbubble==true)
        {
            obj.style.display="block";
            openbubble=false;
        }
        else
        {
            obj.style.display="none";
            openbubble=true;
        }
    }
  function myclick(i) 
  {

        map.addOverlay(allMarker[i]);
        GEvent.trigger(allMarker[i], "click");
  }