﻿var baseIcon = new GIcon();
baseIcon.shadow = "shadow50.png";
baseIcon.iconAnchor = new GPoint(0, 0);
baseIcon.infoWindowAnchor = new GPoint(9, 2);
baseIcon.infoShadowAnchor = new GPoint(18, 25);
var map;
var xmlhttp;
var mapid = gup("map") + "";
var lang = gup("lang") + "";
var keyword = gup("keyword") + "";
function initialize() {
  if (GBrowserIsCompatible()) {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GScaleControl());
	map.addControl(new GOverviewMapControl());		

	map.removeMapType(G_SATELLITE_MAP); 
	map.removeMapType(G_HYBRID_MAP);
	//map.removeMapType(G_NORMAL_MAP); 				

	map.addMapType(G_PHYSICAL_MAP); 									
	map.addMapType(G_HYBRID_MAP); 											
	map.addMapType(G_NORMAL_MAP); 												
	map.addMapType(G_SATELLITE_MAP); 																	

    map.setCenter(new GLatLng(29.270162, 47.967982), 10);
    var point = new GLatLng(29.270162, 47.967982);
    map.addOverlay(createMarker(point)); 
    if (keyword != "")
    {
        searchPointsByKeyword();
    }
    else if (mapid !="")
    {
        getPointsById();	
    }
    
	document.getElementById("hdnURL").value = this.location;
	
  }
  
}

function gmapInit() {
  if (GBrowserIsCompatible()) {
  var map2 = new GMap2(document.getElementById("map"));
    map2.addControl(new GSmallMapControl());
	map2.addControl(new GMapTypeControl());
	map2.addControl(new GScaleControl());
	map2.addControl(new GOverviewMapControl());		

	map2.removeMapType(G_SATELLITE_MAP); 
	map2.removeMapType(G_HYBRID_MAP);
	//map.removeMapType(G_NORMAL_MAP); 				

	map2.addMapType(G_PHYSICAL_MAP); 									
	map2.addMapType(G_HYBRID_MAP); 											
	map2.addMapType(G_NORMAL_MAP); 												
	map2.addMapType(G_SATELLITE_MAP); 																	

    map2.setCenter(new GLatLng(29.269807, 47.967988), 10);
    var point = new GLatLng(29.269807, 47.967988);
    map2.addOverlay(createMarker3(point)); 
	
  }
  
}

function createMarker3(point) {
	  // Create a lettered icon for this point using our icon class
	  var letteredIcon = new GIcon(baseIcon);
	  letteredIcon.image = "templates/images/icons/crowneplaza.png";
    letteredIcon.shadow = "templates/images/icons/crowneplaza_shadow.png";
    letteredIcon.iconSize = new GSize(40, 25);

	  // Set up our GMarkerOptions object
	  markerOptions = { icon:letteredIcon };
	  var marker = new GMarker(point, markerOptions);

	  GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml("<b>Crowne Plaza</b><br/> " + "Sharhabeel Street, Block No. 2");
	  });
	  return marker;
	}

// Creates a marker whose info window displays the letter corresponding
// to the given index.
	function createMarker(point) {
	  // Create a lettered icon for this point using our icon class
	  var letteredIcon = new GIcon(baseIcon);
	  letteredIcon.image = "images/icons/crowneplaza.png";
    letteredIcon.shadow = "images/icons/crowneplaza_shadow.png";
    letteredIcon.iconSize = new GSize(40, 25);

	  // Set up our GMarkerOptions object
	  markerOptions = { icon:letteredIcon };
	  var marker = new GMarker(point, markerOptions);

	  GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml("<b>Crowne Plaza</b><br/> " + "Sharhabeel Street, Block No. 2");
	  });
	  return marker;
	}
	
	function createMarker2(point2,icon,desc,mname)
	{

	    var letteredIcon = new GIcon(baseIcon);
	    letteredIcon.image = "images/icons/" + icon + ".png";


	  // Set up our GMarkerOptions object
	  markerOptions = { icon:letteredIcon };
	  var marker = new GMarker(point2, markerOptions);

	  GEvent.addListener(marker, "click", function() {
	  marker.openInfoWindowHtml("<b>" + mname + "</b><br/> " + desc);
	  });
	  return marker;
	}
	
	function centerMap()
	{
	    var ctrmap = new GLatLng(29.269807, 47.967988);
	    map.panTo(ctrmap); 
	}
	
	
 function gup(name)
 {  
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");  
    var regexS = "[\\?&]"+name+"=([^&#]*)";  
    var regex = new RegExp( regexS );  
    var results = regex.exec( window.location.href );  
    if( results == null )    
        return "";  
    else    
        return results[1];
 }
  function state_Change()
 {         
    if (xmlhttp.readyState==4)
    {
        if (xmlhttp.status==200)
        {
        //alert("OK");
        }
    else         
        {         
        alert("Problem retrieving XML data");
        }         
    }
}

function getPointsById()
{
    
    if (mapid != "")
    {
    
        var xmlQuery = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
        xmlQuery += "<soap:Body>";
        xmlQuery += "<getMapPoints xmlns='http://kuwait.crowneplaza.com/'>";
        if (mapid.length == 0)
        {
            xmlQuery += "<mapids></mapids>";
        } 
        else
        {
            xmlQuery += "<mapids>" + mapid + "</mapids>";
        }
        if (lang.length == 0)
        {
            xmlQuery += "<lang></lang>";
        } 
        else
        {
            xmlQuery += "<lang>" + lang + "</lang>";
        }
        xmlQuery += "</getMapPoints></soap:Body></soap:Envelope>"; 
        if (window.ActiveXObject)
        {
            var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
            xmldoc.loadXML(xmlQuery); 
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
            xmlhttp.onreadystatechange = state_Change;
            xmlhttp.open("POST", "http://kuwait.crowneplaza.com/cpmapservice/crowneplaza.asmx", false);
            xmlhttp.setRequestHeader ("SOAPAction", "http://kuwait.crowneplaza.com/getMapPoints");  
            xmlhttp.setRequestHeader ("Content-Type", "text/xml");
            xmlhttp.send(xmlQuery); 
            var xmldoc1 = new ActiveXObject("Microsoft.XMLDOM");            
            xmldoc1.loadXML(xmlhttp.responseXML.xml); 
            var len = xmldoc1.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes.length;
            var xmlStr = "";
            for(var i=0;i < len;i++) {
            xmlStr = xmlStr + xmldoc1.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[i].nodeValue;
            }
            if (xmlStr.search(/<MapPoints>/) > -1)
            {
    //            alert(xmlStr);
                parseXml(xmlStr);  
            }
            else
            {
               // alert("Location does not exist");
            }           
        }
        else if (document.implementation && document.implementation.createDocument)
        {
            var parser=new DOMParser();
            var xmldoc=parser.parseFromString(xmlQuery,"text/xml");
            xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = state_Change;
            xmlhttp.open("POST", "http://kuwait.crowneplaza.com/cpmapservice/crowneplaza.asmx", false); 
            xmlhttp.setRequestHeader ("SOAPAction", "http://kuwait.crowneplaza.com/getMapPoints"); 
            xmlhttp.setRequestHeader ("Content-Type", "text/xml"); 
            xmlhttp.send(xmlQuery);         
            var xmlStr = xmlhttp.responseText;
            if (xmlStr.search(/&lt;MapPoints&gt;/) > -1)
            {
    //            alert(xmlStr);
                parseXml(xmlStr);
            }
            else
            {
                //alert("Location does not exist");
            }
        }
        else
        {
            alert('Your browser cannot handle this script');
        }  
    }
}

function searchPoint()
{
    var keyword = document.getElementById("txtKeyword").value;
    if (keyword=="")
    {
        alert("Keyword should not be empty!");
    }
    else
    {
        this.location = document.getElementById("hdnMapURL").value + "?keyword=" + keyword + "&lang=" + lang;
    }
}

function searchPointsByKeyword()
{
    if (keyword != "")
    {
    
        var xmlQuery = "<soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'>";
        xmlQuery += "<soap:Body>";
        xmlQuery += "<searchMapPoints xmlns='http://kuwait.crowneplaza.com/'>";
        if (keyword.length == 0)
        {
            xmlQuery += "<keyword></keyword>";
        } 
        else
        {
            xmlQuery += "<keyword>" + keyword + "</keyword>";
        }
        if (lang.length == 0)
        {
            xmlQuery += "<lang></lang>";
        } 
        else
        {
            xmlQuery += "<lang>" + lang + "</lang>";
        }
        xmlQuery += "</searchMapPoints></soap:Body></soap:Envelope>"; 
        if (window.ActiveXObject)
        {
            var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
            xmldoc.loadXML(xmlQuery); 
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
            xmlhttp.onreadystatechange = state_Change;
            xmlhttp.open("POST", "http://kuwait.crowneplaza.com/cpmapservice/crowneplaza.asmx", false);
            xmlhttp.setRequestHeader ("SOAPAction", "http://kuwait.crowneplaza.com/searchMapPoints");  
            xmlhttp.setRequestHeader ("Content-Type", "text/xml");
            xmlhttp.send(xmlQuery); 
            var xmldoc1 = new ActiveXObject("Microsoft.XMLDOM");            
            xmldoc1.loadXML(xmlhttp.responseXML.xml); 
            var len = xmldoc1.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes.length;
            var xmlStr = "";
            for(var i=0;i < len;i++) {
            xmlStr = xmlStr + xmldoc1.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[i].nodeValue;
            }
            if (xmlStr.search(/<MapPoints>/) > -1)
            {
    //            alert(xmlStr);
                parseXml(xmlStr);  
            }
            else
            {
               //alert("Location does not exist");
            }           
        }
        else if (document.implementation && document.implementation.createDocument)
        {
            var parser=new DOMParser();
            var xmldoc=parser.parseFromString(xmlQuery,"text/xml");
            xmlhttp = new XMLHttpRequest();
            xmlhttp.onreadystatechange = state_Change;
            xmlhttp.open("POST", "http://kuwait.crowneplaza.com/cpmapservice/crowneplaza.asmx", false); 
            xmlhttp.setRequestHeader ("SOAPAction", "http://kuwait.crowneplaza.com/searchMapPoints"); 
            xmlhttp.setRequestHeader ("Content-Type", "text/xml"); 
            xmlhttp.send(xmlQuery);         
            var xmlStr = xmlhttp.responseText;
            if (xmlStr.search(/&lt;MapPoints&gt;/) > -1)
            {
    //            alert(xmlStr);
                parseXml(xmlStr);
            }
            else
            {
                //alert("Location does not exist");
            }
        }
        else
        {
            alert('Your browser cannot handle this script');
        }  
    }
}

function parseXml(xmlstr)
{
    if (window.ActiveXObject)
    {
        var xmldoc = new ActiveXObject("Microsoft.XMLDOM");
        xmldoc.loadXML(xmlstr);
        var len = xmldoc.documentElement.childNodes.length;
        var lat, icon, longt, desc, mname;
        for(var i=0;i < len;i++) {
            mname = xmldoc.documentElement.childNodes[i].getAttribute("desc");
            lat = xmldoc.documentElement.childNodes[i].getAttribute("lat");
            longt = xmldoc.documentElement.childNodes[i].getAttribute("long");
            icon = xmldoc.documentElement.childNodes[i].getAttribute("mType");
            desc = xmldoc.documentElement.childNodes[i].getAttribute("pDesc");
           
            var point2 = new GLatLng(lat, longt);
            map.addOverlay(createMarker2(point2,icon,desc,mname));
        }
        
        
    }
    else if (document.implementation && document.implementation.createDocument)
    {
        var parser=new DOMParser();
        var xmldoc=parser.parseFromString(xmlstr,"text/xml");
        var newXml = "";
        var len1 = xmldoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes.length;
        for(var i=0;i < len1;i++) {
        newXml = newXml + xmldoc.documentElement.childNodes[0].childNodes[0].childNodes[0].childNodes[i].nodeValue;
        }
        var xmldoc1=parser.parseFromString(newXml,"text/xml");
        var len = xmldoc1.documentElement.childNodes.length;
       var lat, icon, longt, desc, mname;
        for(var i=0;i < len;i++) {
            mname = xmldoc.documentElement.childNodes[i].getAttribute("desc");
            lat = xmldoc1.documentElement.childNodes[i].getAttribute("lat");
            longt = xmldoc1.documentElement.childNodes[i].getAttribute("long");
            icon = xmldoc1.documentElement.childNodes[i].getAttribute("mType");
            desc = xmldoc1.documentElement.childNodes[i].getAttribute("pDesc");
            var point2 = new GLatLng(lat, longt);
            map.addOverlay(createMarker2(point2,icon,desc,mname));
        }
    }
    else
    {
        alert('Your browser cannot handle this script');
    }
}

function showPopupMap()
{
    var map_bg = document.getElementById("hdnURL").value;
    map_bg = map_bg.replace(/map/i, "map_bg");
    window.open(map_bg,'DestinationMap','width=700,height=400');
}
