﻿//**************************Global variables******************************************
var map=null;
var latArray=new Array();
var lonArray=new Array();
var infoWinArray=new Array();
var points = [];
var bpoints=[];
var featured=new Array();
var address=new Array();
var phone=new Array();
var images=new Array();
var officeid=new Array();
var fax=new Array();
var organisation=new Array();
var officename=new Array();
var vorg=new Array();
var locid="";
var sessiontime;
//************************************************************************************
//===========Get info from server=================================
function parsemapinfo(vids, vaddress, vphone, vfax, vimages, vofficename, vorg, vofficeid, varsessiontime)
{


  //office id
  officeid=vids.split('^');
  //office Name
  officename=vofficename.split('^');
  //office address

//alert(address);
  address=vaddress.split('^');
  //office phone 
  phone=vphone.split('^'); 
  //office image path
  images=vimages.split('^');
  //office fax
  fax=vfax.split('^');
   //org name e.g Northpoint Escrow + Title
  org=vorg.split('^');
  //office id
  locid=vofficeid;
  
 

  GetPoints(0);
}
//===========end Get info from server============================

//===========Get point from geocoder=============================
var k=0;
function GetPoints(i)
{

  var geocoder = new GClientGeocoder();
 // points = [];  
  
  if(address.length>0)
  {
  infoWinArray[i]=getInfoWin(org[i],images[i],officename[i],address[i]);
  var vaddress=replaceAll(address[i],"<br />"," ");
  vaddress=replaceAll(vaddress,"<br/>"," ");
  vaddress=replaceAll(vaddress,"<br>"," ");
 
 //callAjax(vaddress);
 //alert(vaddress);
  geocoder.getLatLng(vaddress,
  function(point) 
  {
  if(point)
  {
   
   points.push(point);
   bpoints.push(point);
   if(address.length==points.length)
    {
     LoadMap();
   
     if(locid!="")
     {
     showOnMap(locid);    
     }
    // alert(points);
     document.getElementById("hdnpoints").value=points;
     document.getElementById("hdnpoints").value=replaceAll(document.getElementById("hdnpoints").value,"),(",")~(");
     document.getElementById("hdninfo").value=infoWinArray;
     document.getElementById("hdnofficeids").value=officeid; 
    
    }
     if(k<address.length-1)
     {
      k++;
      GetPoints(k)
      
     }
  }
  });
  }
 
  //LoadMap();
}
function GetPoints_old()
{

  var geocoder = new GClientGeocoder();
 // points = [];  
  
  for(var i=0;i<address.length;i++)
  {
  infoWinArray[i]=getInfoWin(org[i],images[i],officename[i],address[i]);
  var vaddress=replaceAll(address[i],"<br />"," ");
  vaddress=replaceAll(vaddress,"<br/>"," ");
  vaddress=replaceAll(vaddress,"<br>"," ");
 
 //callAjax(vaddress);
 //alert(vaddress);
  geocoder.getLatLng(vaddress,
  function(point) 
  {
  if(point)
  {

   points.push(point);
   bpoints.push(point);
   if(address.length==points.length)
    {
     LoadMap();
   
     if(locid!="")
     {
     showOnMap(locid);    
     }
    // alert(points);
     document.getElementById("hdnpoints").value=points;
     document.getElementById("hdnpoints").value=replaceAll(document.getElementById("hdnpoints").value,"),(",")~(");
     document.getElementById("hdninfo").value=infoWinArray;
     document.getElementById("hdnofficeids").value=officeid;    
    }
  }
  });
  }
 
  //LoadMap();
}
//===========end Get info from server============================

//===========create info window for marker popup=================

var addressFr="";
function getInfoWin(vorg,vimagepath,vname,vaddress)
 {
 
 //addressFr = vaddress;
 
 
var tmpinfo = "<table border='0' cellspacing='0' cellpadding='0' width='320px' style='margin:0;width:320px'>"+
              "<tr>"+              
                "<td style='width: 200px; padding-left: 0px; ' valign='top'>"+
                    "<table cellpadding='0' cellspacing='0' style='width:189px'>"+
                        "<tr>"+
                            "<td style='width:200px;font-size: 13px; font-weight: bold; color:black;' class='font_header' valign='top'>"+
                                "Address:"+
                            "</td>"+
                        "</tr>"+
                        "<tr>"+
                            "<td class='list_header' style='width:189px;font-size: 11px;'>"+
                                 vorg + "  " + vaddress +
                            "</td>"+
                        "</tr>"+
                    "</table>"+
                "</td>"+
                "<td style='width: 61px;padding-right:10px'>"+
                    "<img src='"+vimagepath+"' alt=''style=' height:61px' />"+
                "</td>"+
             
              "</tr> <tr id='hiderogd'>"+
              "<td height='32px' style='font-size:11px;color:black'>"+
              "<a href='javascript:void(0);' onclick ='showDirection();' >Get directions</a>&nbsp;&nbsp;"+
              "<a href='javascript:void(0);' onclick='getZoomHere();'>Zoom in</a>&nbsp;&nbsp;"+
              "<a href='javascript:void(0);' onclick='getZoomOutHere();'>Zoom out</a>&nbsp;&nbsp;"+
              "<br><a href='javascript:void(0)' id='hates' onclick='showSV();' >Street view</a>&nbsp;&nbsp;"+
              "<a href='javascript:void(0);' id='hitBtn' name='"+vaddress+"' onclick=showDlog(this); >Send</a></td>"+
              "<tr id='hiderowmap' style='display:none'><td><table cellpadding='0' cellspacing='0' border='0' width='200' border='1'>"+
              "<tr><td width='147' style='font-size:11px;color:black'>To current address from</td>"+
              "<td width='34'>&nbsp;</td></tr><tr><td>"+
              "<input type='text' value='Enter start address' style='color:gray; width:142px;font-size:11px' "+
              "onkeypress=\"return checkCR(event,'"+vaddress+"');\" onclick='clearFields();' id='addto'/> </td>"+
              "<td style='font-size:11px;color:black'>&nbsp;&nbsp;<a id='"+vaddress+"' href='javascript:void(0);' onclick='return callGB(this);' >Go</a>&nbsp;&nbsp;<a href='javascript:void(0);' onclick='gobc();'>Back</a></td></tr></table>"+
              "</tr>"+
                     
              "</table>";
      return tmpinfo;
 }
 
 function checkCR(evt, add) {

    var evt  = (evt) ? evt : ((event) ? event : null); 
    if (evt.keyCode == 13) {
	return callGBAdd(add);
	}
}

 
//===============================================================
	var markTemp = null;
	//SetZoomMapNew()

  function clearFields()
  {
         if(document.getElementById("addto").value == "Enter start address")
         {
          document.getElementById("addto").value = "";
         }
  }

   function getZoomOutHere()
   {
   map.zoomOut();
   
   }
  
  var mailid = ""; 
 function setmailid(objtext)
 {
   mailid = mailid + objtext.value;
 }
   
 
 // new Dialog({handle:'#hitBtn',title:'Send Map',content:'<div ><table style=height:100px;width:300px; cellpadding=0 cellspacing=0 border=0><tr><td style=color:black;font-family:arial;font-size:12px>Email Id:</td><td><input type=text id=txtmail style=width:220px /></td></tr><tr><td align=right></td><td align=right><input type=button id=btnsend value=Send style=width:60px />&nbsp;&nbsp;&nbsp;<input type=button id=btncan value=Cancel onclick=dlgHide(); />&nbsp;&nbsp;&nbsp;&nbsp;</td></tr></table></div>',className:'myFirstDialog'});
  var tempName="";
   function showDlog(addr)
   {
   
  
  
   tempName = addr.name;
   new Dialog({
            handle:'#hitBtn',
            title:'Send Map&nbsp;&nbsp;&nbsp;&nbsp;',
            content:'<div ><table style=height:100px;width:320px; cellpadding=0 cellspacing=0 border=0><tr><td style=color:black;font-family:arial;font-size:12px>Email Id:</td><td><input type=text onchange=setmailid(this) id=txtmail style=width:220px /></td></tr><tr><td valign=top colspan=2  align=left style=font-family:arial;padding-left:60px;width=:290px;font-size:10px;color:gray>Separate emails with comma (,)</td></tr><tr><td align=right></td><td align=right><input type=button class=submita id=btnsend onclick=mailsend(); value=Send style=width:50px />&nbsp;&nbsp;&nbsp;<input class=submita type=button id=btncan value=Close onclick=dlgHide(); />&nbsp;&nbsp;&nbsp;&nbsp;</td></tr><tr><td align=left colspan=2><label id=msg  style=font-size:11px;;width:250px>&nbsp;</label></td></tr></table></div>',
            className:'myFirstDialog'
    });
    
   }
   
   function mailsend()
   {//alert(mailid);
   //alert(tempName.replace("<br/>","").replace("<br />",""));
   var M=document.getElementById("txtmail").value;
       if(M=="")
       {       
                 document.getElementById("msg").innerHTML="Please insert e-mail address.";                      
               //document.getElementById("mailsent").style.display = 'block';
               document.getElementById("txtmail").focus();               
               
                mailid="";
       }  
       
       else if(M!="")
       {
         
            var email=new Array();
              email= mailid.split(',');
              for(var i=0;i<email.length;i++)
              {
                    if(!ValidEmail(email[i]))
                    {
                    document.getElementById("msg").innerHTML="Invalid e-mail address.";                            
                   // document.getElementById("mailsent").style.display = 'block';
                    document.getElementById("txtmail").focus();
                    mailid=""; 
                    return false;     
                    }                 
              }     
             var AddR = tempName.replace("<br/>"," ").replace("<br />"," ");
             callAjax(AddR,mailid);
             mailid = "";
             document.getElementById("txtmail").value=""; 
             document.getElementById("msg").innerHTML="Email has been sent successfully."; 
         
       }
       else
       {
         var AddR = tempName.replace("<br/>"," ").replace("<br />"," ");
         callAjax(AddR,mailid);
         mailid = "";
         document.getElementById("txtmail").value=""; 
         document.getElementById("msg").innerHTML="Email has been sent successfully."; 
         //document.getElementById("mailsent").style.display = 'block';
       }
  // sendMailtoFriend();
   }
   
   function dlgHide()
   {
    Dialogs.close();
   }
   function getZoomHere()
   {
    // GEvent.addListener(map,"zoomend",map.setZoom()) ;
    map.zoomIn();
   

   }

   function callGB(objgb)
	{		
	     try
	     {
	        return callGBAdd(objgb.id);
	     }
	     catch(s) {}
	}
	
	function callGBAdd(objgb)
	{
	    try
	    {	    
	        var toaddr = document.getElementById("addto").value;
	        var fraddr = objgb.replace("<br/>"," ").replace("<br />"," ");	
	        if(toaddr == "Enter start address"){toaddr = "";}
	        
	        if(trimAll(toaddr) == "")
	        {
	        alert("Please enter start address.");
	        return false;
	        }
	        else
	        {	        
	        return GB_showPage('Driving Directions',"../../gmap.aspx?to="+fraddr+"&from="+toaddr);
	        }
	    }
	    catch(s) {}
	    
	}

	function showDirection()
	{
	document.getElementById("hiderowmap").style.display = '';
	document.getElementById("hiderogd").style.display = 'none';

	}
	
	function gobc()
	{
	document.getElementById("hiderowmap").style.display = 'none';
	document.getElementById("hiderogd").style.display = '';
	}
	
	function openWindow(marker1)
	{
	//alert("D");
		
		markTemp = marker1;
		
		myPano = new GStreetviewPanorama(document.getElementById("stview"));
		var latlang = marker1.getLatLng();
		myPano.setLocationAndPOV(latlang);

	}

function hideStreet()
{
document.getElementById("map").style.display = '';
document.getElementById("stview").style.display = 'none';
document.getElementById("divclos").style.display = 'none';
}

function showSV()
{
document.getElementById("map").style.display = 'none';
document.getElementById("divclos").style.display = '';
document.getElementById("stview").style.display = '';
document.getElementById("spninfo").innerHTML = '';
}

//**************************initialise map********************************************
function InitMap() 
    { 
   
    if(map==null)
        {
        try
        {
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl3D());
        map.addControl(new GMapTypeControl());
        map.addControl(new GOverviewMapControl());
        map.setCenter(new GLatLng(44.787499,-72.998736),14);
       
         }
         catch(e)
          {
           // do nothing
          }
         } 
  }
//************************************************************************************

//******************************load map**********************************************
function LoadMap()
  {
   
   InitMap()
   bpoints.sort();
   try
      {
        try{GUnload();}catch(e){}
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl3D());
        map.addControl(new GMapTypeControl());
      }
  catch(e)
      {
      }
   
   baseIcon = new GIcon();
   baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
  //baseIcon.iconSize = new GSize(26, 36);
   baseIcon.iconSize = new GSize(20, 34);
   baseIcon.shadowSize = new GSize(37, 34);
   baseIcon.iconAnchor = new GPoint(9, 34);
   baseIcon.infoWindowAnchor = new GPoint(9, 14);
   baseIcon.infoShadowAnchor = new GPoint(18, 25);
   icon = new GIcon(baseIcon); 
   //==============================
       var Minpt=points[0];
       var Maxpt=points[bpoints.length-1];
       var deltaLat = (Maxpt.lat() - Minpt.lat());
       var deltaLong = (Maxpt.lng() - Minpt.lng());
       var centerLat = Minpt.lat() + deltaLat / 2;
       var centerLong = Minpt.lng() + deltaLong / 2;
       var nw = new GLatLng(Minpt.lat()- .1 * deltaLat, Minpt.lng()- .1 * deltaLong);
       var se = new GLatLng(Maxpt.lng() + .1 * deltaLat, Maxpt.lng() + .1 * deltaLong);
       bounds = new GLatLngBounds();
       var center = new GLatLng(centerLat, centerLong);
       for(var j=0;j<points.length;j++)
         {
          bounds.extend(points[j]);
         }
        map.setCenter(bounds.getCenter(), map.getBoundsZoomLevel(bounds));
        
        bounds = new GLatLngBounds(); 
         
        for(var i=0;i<points.length;i++)
        {
         //var j=i+1;
         // alert(points[i]);
          //alert(infoWinArray[i]);
         
         LocateOnMap(i,points[i],infoWinArray[i],'0')
         bounds.extend(points[i]);
         SetZoomMapNew();
         }
   }
   
   
   
   
	//var marker1 = null;
	var myPano = null;
function LocateOnMap(j,point,info,infoflag)
{
  
 // alert("ddd");
  try
  {   
   var temp=info;  
   var letter = String.fromCharCode("A".charCodeAt(0) + j);
     var letteredIcon = new GIcon(baseIcon);
       letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";  
       // Set up our GMarkerOptions object
         markerOptions = { icon:letteredIcon }; 
        // alert(point);
      var marker = new GMarker(point, markerOptions);
        //marker = marker;
  
  // var sv = document.getElementById("hates");
 // alert(sv);
  GEvent.addListener(marker, "click", function() {
   openWindow(marker);   
        });
  
   GEvent.addListener(marker, "click", function() {
   marker.openInfoWindowHtml(info);  
        });
  
   
  
  document.getElementById("stview").style.display = 'none';
  
    map.addOverlay(marker);    
  if(infoflag=="1")
  {
     marker.openInfoWindowHtml(info);
    }
}
catch(e){}   
}



//==========SetZoom========================
function SetZoomMapNew()
 {
 map.setZoom(map.getBoundsZoomLevel(bounds));
 map.setCenter(bounds.getCenter());
 }
//=========================================

function resetmap()
{
      if(map!=null)
      {
       map.clearOverlays();
       }

}
//*********************************************
//s***********showOnMap(i)**********************
function  showOnMap(id)
{

  var i=GetOfficeIndex(id);
  LocateOnMap(i,points[i],infoWinArray[i],'1')
}
//**********************************************************************************



//***************replace all character in a string *********************************
function replaceAll(oldStr,findStr,repStr)
{
    var srchNdx = 0;   
    var newStr = "";  
    while (oldStr.indexOf(findStr,srchNdx) != -1)                           
    {
        newStr += oldStr.substring(srchNdx,oldStr.indexOf(findStr,srchNdx));
        newStr += repStr;
        srchNdx = (oldStr.indexOf(findStr,srchNdx) + findStr.length);
    }
    newStr += oldStr.substring(srchNdx,oldStr.length);
    return newStr;
} 
//***********************************************************************************

//*************Get Index of Office Id***********************************************
function GetOfficeIndex(id)
 {
  for(var k=0;k<officeid.length;k++)
  {
   if(officeid[k]==id)
    {
     return k;
    }
  }
  return 0;
 }



 var obj;
function callAjax(addrAjx,mailid)
{

	try
	{
		obj = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{        
		obj = null;
	}    
    try
    {
		obj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch(e1)
    {
		obj = null;
    }    

   if (window.XMLHttpRequest) 
   {
        obj = new XMLHttpRequest();    
   }    
    
	if(obj!=null)
	{
		obj.onreadystatechange = ProcessResponse;
	
	 if (window.XMLHttpRequest)
  {
		obj.open("GET", 
		"getgeo.aspx?addrss="+addrAjx+"&mail="+mailid,  true);
    }
    else
    {
		    obj.open("POST", 
		"getgeo.aspx?addrss="+addrAjx+"&mail="+mailid,  true);
    }	
		    obj.send(null); 
  }
}


function ProcessResponse()
{
	if(obj.readyState == 4)
	{
		if(obj.status == 200)
		{
			var retval=obj.responseText;
	
		  document.getElementById("msg").style.display='';
			
		}
	}
}	
 

//Method to validate email address
function ValidEmail(email)
{
    var msg=true;    
    var x = email;  
    if(email.length==0){msg = false;}
    else
    {
        if (/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(x)){}
        else{msg = false;}
    }
return msg;
}

//This method is used to remove blank space from both end of string.
 function trimAll(sString) 
{
    while (sString.substring(0,1) == ' ')
    {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length-1, sString.length) == ' ')
    {
        sString = sString.substring(0,sString.length-1);
    }
    return sString;
}