﻿// JScript File

var gmap;
var geocoder;
var gmapTypeControl;
var glargeMapControl;
var gSmallMapControl;
var gscaleControl;
var gsearchControl;
var strgmapTypeControl;
var strgscaleControl;
var strgsearchControl;
var strglargeMapControl;
var addressArray = new Array();
var mappedPoint;
var mappedAddress;
var strZoomLevel;

function RefreshMap()
{
    
    if(gmap)
    {
        gmap.checkResize();
        if (mappedPoint)
        {
            gmap.setCenter(mappedPoint);
        }
    }
    else
    {
        init_GoogleMapDefaultValue();
    }
}

//Initilaze all required function with Default value
function init_GoogleMapDefaultValue()
{
    if(initialize_GoogleMap())
    {
        ShowHideGMapControl(showGMapControl);
        ShowHideGScaleControl(showGScaleControl);
        ShowHideGSearchControl(showSearchControl);
        ShowHideGLargeMapControl(glargeMapControlValue);
        locateAddress(setAddressOne,setAddressTwo,setAddressThree,setAddressFour,setCityAddress,setCountryAddress);
    }
}

   
//Initilaze Google Map
  function initialize_GoogleMap() {
          // Create and Center a Map
          if (document.getElementById("map_canvas"))
          {
             
              var map = new GMap2(document.getElementById("map_canvas"));
              gmap = map;
              geocoder = new GClientGeocoder();
              glargeMapControl = new GLargeMapControl();
              gSmallMapControl = new GSmallMapControl();
              gmapTypeControl = new GMapTypeControl();
              gscaleControl = new GScaleControl(200)
              gsearchControl = new google.maps.LocalSearch();
              InitCustomControls();
             
              return true;
         }
        return false;
      }

function InitCustomControls()
{
//Load control according to what value set in page
if(strgmapTypeControl == "True")
    gmap.addControl(gmapTypeControl);
else
    gmap.removeControl(gmapTypeControl);

if(strgscaleControl == "True")
    gmap.addControl(gscaleControl);
else
    gmap.removeControl(gscaleControl);

if(strgsearchControl == "True")
    gmap.addControl(gsearchControl, new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,30)));
else
    gmap.removeControl(gsearchControl);
    
if(strglargeMapControl == "True")
{
    gmap.addControl(glargeMapControl);
    gmap.removeControl(gSmallMapControl);
}
else
{
    gmap.addControl(gSmallMapControl);
    gmap.removeControl(glargeMapControl);
}

}

//Search for particular location
function locateAddress(localaddress,localaddress1,localaddress2,localaddress3,city,country ) 
{   
    if (!gmap)
    {
       initialize_GoogleMap(); 
    }
    if(gmap)
    {
        if(document.getElementById("map_canvas"))
        {
            var currentAddress;
            var notFound = new Boolean();
            notFound = true;
            addressArray[0] = localaddress;
            addressArray[1] = localaddress1;
            addressArray[2] = localaddress2;
            addressArray[3] = localaddress3;
            addressArray[4] = city;
            addressArray[5] = country;

            CallRecursive(addressArray,0,city,"",null,true,false,false);
        }
    }
}


function CallRecursive(Addresses,index,city,address,point,ResortCountrySearch,RegionCountrySearch,CountrySearch)
{
    if(!point)
    {
        if(document.getElementById("map_canvas")){document.getElementById("map_canvas").style.display= document.getElementById("map_canvas").style.display == '' ? 'none' : '';}
        gmap.checkResize();
        

        if (index <Addresses.length)
        {
            address="";
//            if (CountrySearch)
//            {
//                address=Addresses[Addresses.length-1];
//                index = parseInt(index)+1;
//            }else
//            if(RegionCountrySearch)
//            {
//                if (Addresses[1]!="")
//                {
//                    address += Addresses[1] + ",";
//                    address+=Addresses[Addresses.length-1];
//                }
//                CountrySearch=true;            
//            }else
//            if(ResortCountrySearch)
//            {
//                if (Addresses[0]!="")
//                {
//                    address += Addresses[0] + ",";
//                    address+=Addresses[Addresses.length-1];
//                }
//                RegionCountrySearch=true;
//            }
//            else
//            {
//                for (i=index;i<Addresses.length-1;i++)
//                {
//                    if(Addresses[i]!="")
//                    {
//                        if (i==Addresses.length-2)
//                        {
//                            address+= Addresses[i];
//                        }
//                        else
//                        {
//                            address+= Addresses[i] + ",";
//                        }
//                    }
//                }
                if(Addresses[index]!="")
                {
                    address = Addresses[index] + ","
                }
                //if (address !="")
                //{
                     address+=Addresses[Addresses.length-1];
                     //index = parseInt(index)+1;
                //}
                index = parseInt(index)+1;
//                else
//                {
//                    ResortCountrySearch=true;
//                }
//            }
            
            
            geocoder.getLatLng(address,
                   function(point) 
                   {
                        CallRecursive(Addresses,index,city,address,point,ResortCountrySearch,RegionCountrySearch,CountrySearch);
                   });
        }
        else
        {
            if(document.getElementById("map_canvas"))
            {
                document.getElementById("map_canvas").style.display = 'none';//document.getElementById("map_canvas").style.display == '' ? 'none' : '';
            }
            gmap.checkResize();
        }
    }
    else
    {
        document.getElementById("map_canvas").style.display='block';
        if (gmap == null)
        {
            initialize_GoogleMap();
        }
        gmap.checkResize();
        gmap.enableContinuousZoom();
        var zoom;
        var mappedIndex=0;
        if (index>0)
            mappedIndex=index-1;
        for (i=index-1;i<addressArray.length && addressArray[i]=="";i++)
        {
            mappedIndex=i;
        }
        mappedIndex = mappedIndex +1;
        if (mappedIndex>=5)
            zoom=4;
//        else if (mappedIndex>4)
//            zoom=8;
//        else if (mappedIndex>3)
//            zoom=12;
//        else if (mappedIndex>2)
//            zoom=14;
        else
            zoom=14;
            
       
        //zoom=4;
        if(gMapZoomLevel!='undefined' && gMapZoomLevel!=null && gMapZoomLevel != 0)
        {
            zoom=gMapZoomLevel;
           
            SetZoomLevel(point,zoom);
        }
        else
            gmap.setCenter(point, zoom);
        
        gmap.clearOverlays();
        gmap.showControls();
        
        var marker = new GMarker(point);
        gmap.addOverlay(marker);
        
        var opts = new Object(); 
        opts.pixelOffset = new GSize(24,5); 
        opts.maxWidth = 200; 
        
        /*GEvent.addListener(marker, "mouseover", function() { 
          marker.openInfoWindowHtml(address,opts); 
      }); 
        GEvent.addListener(marker, "mouseout", function() { 
          marker.closeInfoWindow(); 
      });*/
        marker.bindInfoWindowHtml(address,opts);
        start = point;
        mappedPoint = point;
        mappedAddress = address;
    }
}

//Show or Hide GMapControl according to value
function  ShowHideGMapControl(gMapControlValue)
{
 strgmapTypeControl = gMapControlValue;
 if(gMapControlValue =="True")
 {
    gmap.addControl(gmapTypeControl);
 }
 else
 {
    gmap.removeControl(gmapTypeControl);
 }
}

// 
function SetZoomLevel(point,gMapZoomLevel)
{
    strZoomLevel  =  gMapZoomLevel
    if(strZoomLevel!=null || strZoomLevel!='undefined')
    {
        gmap.setCenter(point, strZoomLevel);
    }
}

//Show or Hide GScaleControl according to value
function ShowHideGScaleControl(gScaleControlValue)
{
    strgscaleControl = gScaleControlValue;
    if(gScaleControlValue=="True")
    {
        gmap.addControl(gscaleControl);
    }
    else
    {
        gmap.removeControl(gscaleControl);
    }
}

//Show or Hide GSearchControl according to value
function ShowHideGSearchControl(gSearchControlValue)
{
    strgsearchControl = gSearchControlValue;
    if(gSearchControlValue=="True")
    {
        gmap.addControl(gsearchControl, new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,30)));
    }
    else
    {
        gmap.removeControl(gsearchControl);
    }
}

//Show or Hide GSearchControl according to value
function ShowHideGLargeMapControl(glargeMapControlValue)
{
    strglargeMapControl = glargeMapControlValue;

    if(glargeMapControlValue=="True")
    {
        gmap.addControl(glargeMapControl);
        gmap.removeControl(gSmallMapControl);
    }
    else
    {
       gmap.addControl(gSmallMapControl);
       gmap.removeControl(glargeMapControl);
    }
}
