// 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;
var cityname ;
var newPoint;


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,setLongitude,setLatitude);
    }
}
   
//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();
              gmap.addMapType(G_PHYSICAL_MAP);
              gmap.enableScrollWheelZoom();
              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,latitude,longitude ) 
{   
    if (!gmap)
    {
       initialize_GoogleMap(); 
    }
    if(gmap)
    {
		newpoint = null;
		if ((latitude)&& (longitude))
		{
			if ((latitude!=0.0)&& (longitude!=0.0))
			{
				newpoint = new GLatLng(longitude,latitude);
			}
		}
        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] = country;

            CallRecursive(addressArray,0,city,"",newpoint,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(Addresses[index]!="")
                {
                    address = Addresses[index] + ","
                }
               if (address !="")
                {
                     address+=Addresses[Addresses.length-1];
                }
                index = parseInt(index)+1;
            
            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();
        }
        
        if (index <Addresses.length)
        {
            address="";
            for (i=1;i<Addresses.length;i++)
            {
                if(Addresses[i]!="")
                {
                    if (i==Addresses.length-1)
                    {
                        address+= Addresses[i] + ".";
                    }
                    else
                    {
                        address+= Addresses[i] + ", ";
                    }
                }
            }
        }
        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=5;
        else
            zoom=10;
       
        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;
       
        address = address.replace(/,/g,",<br />");
        var markerHtmlString = "";
        markerHtmlString  = '<table id ="markerTable">';
		markerHtmlString += '<tr><td colspan="2" ><b>'+ Addresses[0] + '</b></td></tr>';
		markerHtmlString += '<tr><td valign="top">' + setImagePath + '</td>';
		markerHtmlString += '<td><b>Address:</b><br />' + address + '</td>';
		markerHtmlString += '</tr>';
		markerHtmlString += '<tr><td colspan = "2"><a href = "http://www.gingerhotels.com/" target = "_blank">&nbsp;</a></td></tr>';
		markerHtmlString += '<tr><td colspan = "2"><a href = "http://www.gingerhotels.com/" target = "_blank">&nbsp;</a></td></tr>';
		markerHtmlString += '</table>';
		
        GEvent.addListener(marker, "mouseover", function() { 
          marker.openInfoWindowHtml(markerHtmlString,opts); 
      }); 

        marker.openInfoWindowHtml(markerHtmlString,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);
 }
}

// Set Zoom level
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);
    }
}
