//<![CDATA[
  var map;
  var tooltip;
  var currentExtent;
  var maxTitle =[];
  var bounds = new GLatLngBounds();
  var cancel = false;
  var total_marker = 0;
  var clearPreviousFacilities=true;
  var swhat = "f";
  var result_page=1;
  function loadHomePage() 
  {
    e("searchWhat").value = gHomeVPage.q.trim();
    e("sidebar").innerHTML = gHomeVPage.panel;
    if(gHomeVPage.url != "")    
    {
      cancel=false; 
      showLoading(); 
      GDownloadUrl("getXML.php"+gHomeVPage.url, function(doc) {processDownload(doc, true)});  
    }
    else 
    {  
      if (map) 
      {  
        map.clearOverlays(); 
        
        total_marker=0;
        map.setCenter(new GLatLng(lat,lng), zoom, maptype);  
        
        redraw_overlay();
        
      }
      else{loadMap();} 
    }
    
  }
  function loadVP(vp_as_window)
  {
    var obj =  vp_as_window.location;
    var query = obj.search.substring(1);
    var params="";
    var value = "";
    var pairs = query.split("&");
    for (var i=0; i<pairs.length; i++) 
    {
    	var pos = pairs[i].indexOf("=");
    	var argname = pairs[i].substring(0,pos).toLowerCase();
    	var v = pairs[i].substring(pos+1).toLowerCase().trim();
  
      if (argname == "lat") {params+="lat="+ parseFloat(v);}
      if (argname == "lng") {params+="lng="+ parseFloat(v);}
      if (argname == "zoom") {params+="z="+ parseInt(v);}
      if (argname == "q") {params+="q="+ v; value=v}
      if (argname == "w") {params+="where="+ v;}     
    }
    e("searchWhat").value= decodeURI(value).trim();
    if(params!=""){cancel=false;showLoading(); GDownloadUrl("getXML.php?"+params, function(doc) {processDownload(doc)});}
      
    else{loadHomePage();}
  }
  
  function processDownload(doc, lp)
  {
    hideLoading();
    if(cancel){return;}
    if (map==undefined || map == null){loadMap();}
    map.clearOverlays();
    
    var xmlDoc = GXml.parse(doc);
    var markers = xmlDoc.documentElement.getElementsByTagName("marker");
    var wmarkers = xmlDoc.documentElement.getElementsByTagName("wmarker");
    var search = xmlDoc.documentElement.getElementsByTagName("search");
    var query = xmlDoc.documentElement.getElementsByTagName("query");

    q=query[0].getAttribute("q").trim();
    w=query[0].getAttribute("w").trim();
    
    if((markers.length==0 && wmarkers.length==0) || (markers.length==0 && w!="" ) )
    {
      document.getElementById("sidebar").innerHTML ="<div class=sidebarContent><span style=\"display:block; margin-top:10px;font-size:11pt\">Your search  did not match any records in our accommodation listing.</span> <p>Suggestions: <ul><li>Make sure all words are spelled correctly.</li><li>Try different keywords.</li><li>Try more general keywords</li></ul></p></div>";
      redraw_overlay();
      return;
    }

    sidebar_html = "";
    if(markers.length!=0 )
    {
      var t = parseInt(search[0].getAttribute("total"));
      var s = parseInt(search[0].getAttribute("start"));
      var e = parseInt(search[0].getAttribute("end"));
      var radius=0;
      sidebar_html += "<div class=sidebarContent>Result <b>" + s + "</b>-<b>" + e + "</b> of about <b>" + t + "</b> for <b>"+getSearchWhatString()+"</b>";
    }
    
    if( markers.length==0 && wmarkers.length>0) //result for location only
    {
      sidebar_html += "<UL class=\"cUL\" >";
      var lat = parseFloat(wmarkers[0].getAttribute("lat"));
      var lng = parseFloat(wmarkers[0].getAttribute("lng"));
      var zoom = parseInt(wmarkers[0].getAttribute("zoom"));
      var label = wmarkers[0].getAttribute("label");
      radius = wmarkers[0].getAttribute("radius");
      var point = new GLatLng(lat,lng);
      var html = GXml.value(wmarkers[0].getElementsByTagName("infowindow")[0]); 
      
      var baseIcon = new GIcon();
      baseIcon.shadow = "img/arrow-white-shadow.png";
      baseIcon.iconSize = new GSize(39, 34);
      baseIcon.shadowSize = new GSize(46, 34);
      baseIcon.iconAnchor = new GPoint(9, 34);
      baseIcon.infoWindowAnchor = new GPoint(9, 2);
      baseIcon.infoShadowAnchor = new GPoint(18, 25);

      var pIcon = new GIcon(baseIcon);
      pIcon.image = "img/arrow-white.png";
      
      sidebar_html += '<LI id=sidebar_'+total_marker+' class="cLI" STYLE="background: url('+pIcon.image+') left top no-repeat; height:34px; font-size:13pt" >' + label + '';
      sidebar_html +='<br>' + "" +'</LI>'; 
      var i=total_marker;
      var marker = createMarker(point,"Location:",html, i, "where", "", zoom);
      map.addOverlay(marker);
      myclick(i);
      
      map.setCenter(point);
      map.setZoom(zoom);
      
      redraw_overlay();
      
      sidebar_html += "</UL>";
    }
    else
    {
      bounds = new GLatLngBounds();
      updateWindowTitle(getSearchWhatString());
      sidebar_html += "<UL class=\"cUL\" >";
      var lat,lng, point, html, label, category, dURL, zoom, marker;
      for (var i = 0; i < markers.length; i++) 
      {
        lat = parseFloat(markers[i].getAttribute("lat"));
        lng = parseFloat(markers[i].getAttribute("lng"));
        point = new GLatLng(lat,lng);
        html = GXml.value(markers[i].getElementsByTagName("infowindow")[0]);
        label = markers[i].getAttribute("label");
        category = markers[i].getAttribute("category");
        dURL = markers[i].getAttribute("dURL");
        zoom = parseInt(markers[i].getAttribute("zoom"));
        
        marker = createMarker(point,label,html, i, category,dURL, zoom);
        map.addOverlay(marker);
        
        bounds.extend(point);
      }
      sidebar_html += "</UL>";
      
      if( markers.length == 1)
      { 
        myclick(0);
        map.setZoom(zoom);
        map.setCenter(point);
      }
      else
      {
        var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
        var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
        map.setCenter(new GLatLng(clat,clng));
        
        zoom = map.getBoundsZoomLevel(bounds);
        if(zoom > 16){zoom--;}
        
        map.setZoom(zoom);
      }
      if(wmarkers.length!=0)
      {
        lat = parseFloat(wmarkers[0].getAttribute("lat"));
        lng = parseFloat(wmarkers[0].getAttribute("lng"));
        zoom = parseInt(wmarkers[0].getAttribute("zoom"));
        label = wmarkers[0].getAttribute("label");
        radius = wmarkers[0].getAttribute("radius");
        point = new GLatLng(lat,lng);
        html = GXml.value(wmarkers[0].getElementsByTagName("infowindow")[0]); 
        marker = createMarker(point,label,html, total_marker, "where", "", zoom);
        map.addOverlay(marker);
      }
    }
  
    //if(wmarkers.length!=0){radius = wmarkers[0].getAttribute("radius");}
      
    /*if(getSearchWhereString()!="")
    {
      sidebar_html += " near <b>" + getSearchWhereString() + "</b>";
      if(radius>0)
        sidebar_html += " (radius: <b>" + radius + " meters</b>)";
    }
      
    sidebar_html += " - <a href=passback.php? class=plainLink onclick=\"ms();\" target=vp>Modify Search</a>";*/
    sidebar_html += "</div>";
    document.getElementById("sidebar").innerHTML = sidebar_html; 

    if(lp!=null && lp != undefined)
    {
      if(gHomeVPage.c.lat !="" && gHomeVPage.c.lng !="" && gHomeVPage.z !="")
      {
          map.setCenter(new GLatLng(gHomeVPage.c.lat,gHomeVPage.c.lng));
          map.setZoom(gHomeVPage.z);
      }
    }
    var wintitle = q;
    if(w!="") 
      wintitle += " near " + w;
    updateWindowTitle(wintitle);
    map.savePosition();
    
    redraw_overlay();
  }
  
  function get(obj) /*used by the form*/
  {
    var getstr = "";
    for (i=0; i<obj.childNodes.length; i++) {
       if (obj.childNodes[i].tagName == "INPUT") {
          if (obj.childNodes[i].type == "text") {
             if(obj.childNodes[i].value.trim()!="")
              getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
          }
          if (obj.childNodes[i].type == "hidden") {
             getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
          }
          if (obj.childNodes[i].type == "checkbox") {
             if (obj.childNodes[i].checked) {
                getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
             } else {
                getstr += obj.childNodes[i].name + "=&";
             }
          }
          if (obj.childNodes[i].type == "radio") {
             if (obj.childNodes[i].checked) {
                getstr += obj.childNodes[i].name + "=" + obj.childNodes[i].value + "&";
             }
          }
       }   
       if (obj.childNodes[i].tagName == "SELECT") {
          var sel = obj.childNodes[i];
          getstr += sel.name + "=" + sel.options[sel.selectedIndex].value + "&";
       }
       
    }
    if(getstr.trim()!="")
      e("vp").src="home3.html?"+getstr;
    
    return false;
  }
  
  function loadMap() 
  {
    map = new GMap2(e("map"));
    map.addControl(new GLargeMapControl());
    map.removeMapType(G_SATELLITE_MAP); 
    map.removeMapType(G_HYBRID_MAP); 
    
    
    
    map.setCenter(new GLatLng(lat,lng), zoom, maptype);
    //map.setCenter(new GLatLng(5.98, 116.075999), 17, maptype);
    
    map.enableDoubleClickZoom();
    map.enableContinuousZoom();
    map.addControl(new GScaleControl());
    ovcontrol = new GOverviewMapControl(); 
    map.addControl(ovcontrol);
    tooltip = document.createElement("div");
    map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
    tooltip.style.visibility="hidden";
    GEvent.addListener(map, "moveend", function(marker, point) {      reDrawFacility();  updateLink();  });
    
    redraw_overlay();
    
    GEvent.addListener(map, "zoomend", function() {      refresh_overlay();    });
  }	
  
  function reDrawFacility()
  {
    if(map.getZoom() < 13) { return;  }
    if(gf){getFacilities(true);}
    
    refreshFacilities();
  }
  
  function updateLink()
  {
    var m= gHomeVPage.mapID;
    var q=getSearchWhatString();
    var w="";
    var c=map.getCenter().lat()+","+map.getCenter().lng();
    var z=map.getZoom();
    var f="";
    //e('link').href="/map?q="+q+"&w="+w+"&c="+c+"&z="+z+"&f="+f+"&map_id="+m+"&p="+result_page;
    
    //process facilities
    for(var i in catName)  
    {
      if(e("ptype_"+i)!="undefined" && e("ptype_"+i) != null && e("ptype_"+i).show != undefined && e("ptype_"+i).show)
      { 
        if(f=="")
        {
          f=i;
        }
        else
        {
          f+=","+i
        }
      } 
    }
    
    e('print').href="print.php?o=p&q="+q+"&w="+w+"&c="+c+"&z="+z+"&f="+f+"&map_id="+m+"&p="+result_page;
    e('print').onclick= function() {
      var c="width=800,height=600,resizable=yes,scrollbars=yes,status=yes";
      c+=",menubar=yes,location=yes";
      window.open(e('print').href,'mywindow',c);
      return false;
    }

    
  }
  
  function refreshFacilities() 
  { 
    for(var i in catName)  
    {
      if(e("ptype_"+i)!="undefined" && e("ptype_"+i) != null && e("ptype_"+i).show != undefined && e("ptype_"+i).show)
      { 
        removeFacilities("ptype_"+i); 
        getFacilities("ptype_"+i);
      } 
    }  
  }
  function removeFacilities(type_id)
  {
    var i;
    for(i=0; i<=facilities[type_id].length; i++)
    {
      if(facilities[type_id][i] == null || facilities[type_id][i] == undefined)
        {continue;}
        
      map.removeOverlay(facilities[type_id][i]);
    }
    facilities[type_id].length = 0;
  }
  function showHideFacility(type_id, display)
  {
    var i;
    for(i=0; i<=facilities[type_id].length; i++)
    {
      if(facilities[type_id][i] == null || facilities[type_id][i] == undefined)
        {continue;}
      if(display)
        {facilities[type_id][i].show()}
      else
        {facilities[type_id][i].hide()}
    }
  }
  
  function getFacilities(param)
  {
    var mapBound = map.getBounds();
    var NE = mapBound.getNorthEast();
    var SW = mapBound.getSouthWest();
    
    var NE_str = NE.toUrlValue();
    var SW_str = SW.toUrlValue();
    
    if(isBoolean(param))  
    {
      if(currentExtent == NE_str+SW_str )
        return;
      
      if(param) 
      {
        cancel=false; 
        showLoading(); 
        GDownloadUrl("facilities.php?sum=1&ne="+NE_str+"&sw="+SW_str, function(doc){drawFacility(doc,true)})
      } 
    }
    else if(isString(param)) 
    {
      cancel=false;  
      showLoading(); 
      GDownloadUrl("facilities.php?id="+param+"&ne="+NE_str+"&sw="+SW_str, function(doc){drawFacility(doc,false)})
    }
  }
  
  function isBoolean(a) { return typeof a == 'boolean'; }
  function isString(a){     return typeof a == 'string'; }
 
  function drawFacility(doc, getsum)
  {
    hideLoading();
    if(cancel){return;}    
    var xmlDoc = GXml.parse(doc);
    if(getsum)
    {
      resetTotalFacilities();
      var ptype = xmlDoc.documentElement.getElementsByTagName("ptype");
      
      for (var i = 0; i < ptype.length; i++) 
      {
        var typeID = ptype[i].getAttribute("ID");
        var total_facility = ptype[i].getAttribute("total");
        e("ptype_"+typeID).innerHTML = total_facility;
        updateCSS(typeID);
      }
    }
    else
    {
      /* obtain the array of markers and loop through it*/
      var ftype = xmlDoc.documentElement.getElementsByTagName("type");
      var fmarker = xmlDoc.documentElement.getElementsByTagName("marker");
      var type1 = ftype[0].getAttribute("id");

      removeFacilities("ptype_"+type1);
      for (var i = 0; i < fmarker.length; i++) 
      {
        /* obtain the attribues of each marker*/
        var markerID = parseFloat(fmarker[i].getAttribute("ID"));
        var lat = parseFloat(fmarker[i].getAttribute("lat"));
        var lng = parseFloat(fmarker[i].getAttribute("lng"));
        var point = new GLatLng(lat,lng);
        var name = fmarker[i].getAttribute("name");
        
        /* create the marker*/
        createMarker2(markerID,point,name, type1, facilities["ptype_"+type1].length++);
      }
      //e("ptype_"+type1).show = true;
      facilityONOFF(type1, true);
    }
    
    saveExtent();
   
  }
  function saveExtent()
  {
    var mapBound = map.getBounds();
    var NE = mapBound.getNorthEast();
    var SW = mapBound.getSouthWest();
    
    var NE_str = NE.toUrlValue();
    var SW_str = SW.toUrlValue();
    
    currentExtent = NE_str+SW_str; 
    updateLink();
  }
  
  function resetTotalFacilities()
  {
    for(var i=0; i<catName.length; i++)
    {
      if(e("ptype_"+i) != null && e("ptype_"+i) != undefined)
      {
        e("ptype_"+i).innerHTML = "0";
        updateCSS(i);
      }
      
    }
  }
  function showFacility(id)
  {
    var ptype_id = "ptype_"+id;
    if(e(ptype_id).innerHTML.trim()=="0")
      {return;}
    
    if(e(ptype_id).show)
    {
      showHideFacility(ptype_id, false);
      facilityONOFF(id, false);
    }
    else
    {
      var mapBound = map.getBounds();
      var NE = mapBound.getNorthEast();
      var SW = mapBound.getSouthWest();
      
      var NE_str = NE.toUrlValue();
      var SW_str = SW.toUrlValue();
      
      getFacilities(ptype_id);
      //if(currentExtent == (NE_str+SW_str) &&  e(ptype_id).show != undefined )
//       if( e(ptype_id).show == undefined ){ }
//       else {
//         showHideFacility(ptype_id, true); /*map extent unchanged */       
//         facilityONOFF(id, true);
//       }
       
    }
  }
  function updateCSS(typeID)
  {
    if(e("ptype_"+typeID).innerHTML.trim() == "0")
    {
      e("pcbox"+typeID).className="legendFacility facility2 g_"+typeID;
    }
    else
    {
      e("pcbox"+typeID).className="legendFacility facility f_"+typeID;
    }
    
    if(e("ptype_"+typeID).show == undefined || !e("ptype_"+typeID).show )
    {
      e("pcbox"+typeID).className+=" fOFF";
    }
    else
    {
      e("pcbox"+typeID).className+=" fON";
    }
  }
  
  function facilityONOFF(id, bl)
  {
    if(bl)
    {
      e("pcbox"+id).className="legendFacility fON";
    }
    else
    {
      e("pcbox"+id).className="legendFacility fOFF";
    }
    
    if(e("ptype_"+id).innerHTML.trim() == "0")
    {
      e("pcbox"+id).className+=" facility2 g_"+id;
    }
    else
    {
      e("pcbox"+id).className+=" facility f_"+id;
    }
    
    e("ptype_"+id).show = bl;
  }
  
  function createMarker2(id, point,name, type1, ind) 
  {
    var markerD = new GMarker(point, {icon:placemarkTypeIcon1[type1]}); 
    
    map.addOverlay(markerD);
    markerD.ID = id;
    markerD.catID = type1;
    markerD.name = name;
    
    markerD.tooltip = '<div class="tooltip"><small>' + catName[type1]+'</small>';
    if(name.trim()!="")
      {markerD.tooltip += '<br><b>'+name+'</b>'};
    markerD.tooltip += '</div>';
      
    GEvent.addListener(markerD,"mouseover", function() {    showTooltip(markerD);  });        
    GEvent.addListener(markerD,"mouseout", function() {	tooltip.style.visibility="hidden"   }); 
    
    facilities["ptype_"+type1][ind]=markerD;
  }
  
  function showTooltip(marker) {
    tooltip.innerHTML = marker.tooltip;
  	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
  	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
  	var anchor=marker.getIcon().iconAnchor;
  	var width=marker.getIcon().iconSize.width;
  	var height=tooltip.clientHeight;
  	var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height)); 
  	pos.apply(tooltip);
  	tooltip.style.visibility="visible";
  }
  
  /*zoom to*/
  function zt(index)
  {
    /*map.setCenter(gmarkers[index].getPoint(), gmarkers[index].zoom);*/
    map.setCenter(gmarkers[index].getPoint(), 17);
    gmarkers[index].closeInfoWindow();
    myclick(index);
  }
  
  /*search nearby*/
  function sn(index)
  {
    var obj = e("footer"+index);
    var objtemp = e("temp"+index);
    objtemp.innerHTML = obj.innerHTML;
    obj.innerHTML ="<br><span class=footer><b>Search for:</b>";
    
    var checked="checked";
    var checked2 = "";
    if(swhat=="f")
    {
      checked2 = "checked";
      checked = "";
    }
    obj.innerHTML += "<br><input type=radio name=swhat "+checked+" id=sacc value=a onclick=\"swhat=this.value\" /><label for=sacc>Accommodation <span class=eg>e.g., \"hotel\", \"lodge\"</span></label>";
    obj.innerHTML += "<br><input type=radio name=swhat "+checked2+" id=sfac value=f onclick=\"swhat=this.value\" /><label for=sfac>Facilities <span class=eg>e.g., \"taxi\", \"supermarket\"</span></label>";    
    
    obj.innerHTML +="<br><br><span class=snf><input type=text size=20 id=snb"+index+" onkeydown=\"return ksna(event,"+index+")\" /><input type=button value=Search onclick=sna("+index+") /></span>";
    obj.innerHTML += "<br>";
    
    
   /* if(clearPreviousFacilities)
      {checked = "checked";}
    obj.innerHTML += "<input type=checkbox id=cpf onclick=\"updvar(this)\" /><label class=eg for=cpf><small>Clear previous result</small></label>";
      
    obj.innerHTML += "<br>";*/
    obj.innerHTML +="<a href=# onclick='restore("+index+"); return false' class=plainLink>&laquo; Back</a>";
    map.updateInfoWindow(map.getInfoWindow().getTabs());
    
    return false;
  }
  /*
  function updvar(obj)
  {
    if(obj.checked)
      clearPreviousFacilities=true;
    else
      clearPreviousFacilities=false;
  }
*/
  function getKeyNum(e)  { var keynum; if(window.event) /*IE*/ {keynum = e.keyCode;  } else if(e.which) /*Netscape/Firefox/Opera*/  {keynum = e.which;}return keynum;}
  function entsub(e, obj) {var kn = getKeyNum(e);    if(kn==13) {  obj.form.submit(); return false; } else {return true;}  }
  function sna(id)
  {
    var str = e('snb'+id).value;
    var mLat = gmarkers[id].getPoint().lat(); 
    var mLong = gmarkers[id].getPoint().lng();
    var where = gmarkers[id].where.trim();
    if(where == "")
      where = mLat+", "+mLong;

    if(where.trim() != "") 
    {
      cancel = false;
      showLoading(); 
      if(swhat=="f")
      {
      /*alert("facilities.php?what="+str+"&location="+where);*/
      GDownloadUrl("facilities.php?what="+str+"&location="+mLat+", "+mLong, function(doc){drawFacilityNearby(doc)});}
      else
      {loadURL("?q="+str+" near "+where, true)}
      
    }
  }
  function drawFacilityNearby(doc)
  {
    if(cancel)
      return;
    
    hideLoading();
    var xmlDoc = GXml.parse(doc);

    /* obtain the array of markers and loop through it*/
    var ftype = xmlDoc.documentElement.getElementsByTagName("type");
    var fmarker = xmlDoc.documentElement.getElementsByTagName("marker");
    if(ftype.length>0)
    {
      map.closeInfoWindow();
      showHideLegend(true);
    }
    /*
    if(clearPreviousFacilities)
    {
      for(var i in catName)  
      {
        if(e("ptype_"+i)!="undefined" && e("ptype_"+i) != null && e("ptype_"+i).show != undefined && e("ptype_"+i).show)
        { 
          removeFacilities("ptype_"+i); 
        } 
      } 
    
    else
    {}*/
      for (var i = 0; i < ftype.length; i++) 
      {
        var type1 = ftype[i].getAttribute("id");
        removeFacilities("ptype_"+type1);
        e("ptype_"+type1).show = true;
      }
    /*}*/
    
    for (var i = 0; i < fmarker.length; i++) 
    {
      /* obtain the attribues of each marker*/
      var markerID = parseInt(fmarker[i].getAttribute("ID"));
      var markertype = parseInt(fmarker[i].getAttribute("type"));
      var lat = parseFloat(fmarker[i].getAttribute("lat"));
      var lng = parseFloat(fmarker[i].getAttribute("lng"));
      var point = new GLatLng(lat,lng);
      var name = fmarker[i].getAttribute("name");
      
      /* create the marker*/
      createMarker2(markerID,point,name, markertype, facilities["ptype_"+markertype].length++);
    }
    updateLink();
  }
  
  function ksna(e, id)
  {
    var kn = getKeyNum(e);    
    if(kn==13) 
    {  
      sna(id); 
      return false; 
    } 
    else {return true;}  
  }
  
  function ms(){ e('searchWhere').value = ""; switchForm(0); }

  function restore(index)
  {
    var obj = e("footer"+index);
    var objtemp = e("temp"+index);
    obj.innerHTML = objtemp.innerHTML;
    objtemp.innerHTML = "";
    map.updateInfoWindow(map.getInfoWindow().getTabs());
  }
  
  function createMarker(point,name,html, index, cat, miURL, zm) 
  {
    var baseIcon = new GIcon();
    if(cat=="3" ) /*accommodation*/
    {
      baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
      baseIcon.iconSize = new GSize(20, 34);
      baseIcon.shadowSize = new GSize(37, 34);
      baseIcon.iconAnchor = new GPoint(9, 34);
      baseIcon.infoWindowAnchor = new GPoint(9, 2);
      baseIcon.infoShadowAnchor = new GPoint(18, 25);
      
      var pIcon = new GIcon(baseIcon);
      pIcon.image = "img/sym-Hotel.png";
      pIcon.printImage = "img/sym-Hotel.gif";
      pIcon.mozPrintImage = "img/sym-Hotel.gif";
    }
    else if(cat=="where") /*if search nearby enabled*/
    {
      baseIcon.shadow = "img/shadow-arrow-white.png";
      baseIcon.iconSize = new GSize(23.0, 34.0);
      baseIcon.shadowSize = new GSize(41.0, 34.0);
      baseIcon.iconAnchor = new GPoint(11.0, 17.0);
      baseIcon.infoWindowAnchor = new GPoint(11.0, 17.0);

      var pIcon = new GIcon(baseIcon);
      pIcon.image = "img/arrow-white.png";
      pIcon.printImage = "img/arrow-white.gif";
      pIcon.mozPrintImage = "img/arrow-white.gif";
    }
    else
    {
      baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
      baseIcon.iconSize = new GSize(20, 34);
      baseIcon.shadowSize = new GSize(37, 34);
      baseIcon.iconAnchor = new GPoint(9, 34);
      baseIcon.infoWindowAnchor = new GPoint(9, 2);
      baseIcon.infoShadowAnchor = new GPoint(18, 25);
      
      var pIcon = new GIcon(baseIcon);
      pIcon.image = "http://www.google.com/mapfiles/marker.png";
    }
    
    markerOptions = { icon:pIcon };
    var marker = new GMarker(point, markerOptions);
    
    htmls[index] = "<div class=iw><b class=snf>"+name+"</b>";
    
    if(miURL!="")
      {htmls[index] += "<br><a href=\"javascript:void(0)\" class=plainLink onclick=\"return mi();\"  >more info &raquo;</a>"};
    
    htmls[index] += "<div class=addr>" + "<small>"+ html + "</small></div><div id=temp"+index+" class=nodisp></div><div id=footer"+index+" class=footer><br><a href=\"javascript:void(0)\" class=plainLink onclick=\"return sn("+index+");\" >Search nearby</a> - <a href=# class=plainLink onclick=\"return zt("+index+");\" >Zoom To &raquo;</a></div></div>";

    maxTitle[index] = "<b class=snf>"+name+"</b>";
    
    

    if(cat!="where")
    {
      sidebar_html += '<LI id=sidebar_'+index+' class="cLI" STYLE="background: url('+pIcon.printImage+') left top no-repeat" ><a href="javascript:void(0)" onclick="myclick(' + index + ')">' + name + '</a>';
      GEvent.addListener(marker,"mouseover", function() {   highlight_sidebar(marker, true); });        
      GEvent.addListener(marker,"mouseout", function() {	highlight_sidebar(marker, false);}); 
      
      if(miURL!="")
        {sidebar_html += " - <a href=\"javascript:void(0)\" class=plainLink onclick=\" return mi2("+ index +");\"  >more info &raquo;</a>"};
        
      sidebar_html +='<br>' + html +'</LI>';  
      marker.tooltip = '<div class="tooltip"><b>'+name+'</b></div>';
      marker.where = "";
    }
    else
      {
        marker.tooltip = '<div class="tooltip"><b>'+html+'</b></div>';
        marker.where = html;
      }
    
    
    marker.index = index;  
    GEvent.addListener(marker,"mouseover", function() {  showTooltip(marker);  });        
    GEvent.addListener(marker,"mouseout", function() {tooltip.style.visibility="hidden" }); 

    GEvent.addListener(marker, "click", function(){ myclick(index)});
    gmarkers[index] = marker;
    gmarkers[index].detailURL = miURL;
    gmarkers[index].zoom = parseInt(zm);  
    
    total_marker++;
    return marker;
  }
  function highlight_sidebar(m, bool)
  {
    if(bool)
    {
      e("sidebar_"+m.index).style.backgroundColor = "#faf4eb";
    } 
    else
    {
      e("sidebar_"+m.index).style.backgroundColor = "";
    }
  }
  
  function mi(){ map.getInfoWindow().maximize(); return false; }
  function mi2(i){ myclick(i) ; setTimeout("map.getInfoWindow().maximize()",50); return false; }
  function myclick(i) 
  {
    if(gmarkers[i].detailURL != "")
    {
      var du = gmarkers[i].detailURL;
      var mt = maxTitle[i];
      var maxContentDiv = document.createElement('div');
      maxContentDiv.innerHTML = 'Loading...';
      
      gmarkers[i].openInfoWindowHtml(htmls[i], { maxContent: maxContentDiv, maxTitle: mt  });
      var iw = map.getInfoWindow();
      //GEvent.clearListeners(iw,  "maximizeclick");
      GEvent.addListener(iw, "maximizeclick", function() {cancel=false; GDownloadUrl(du, function(data) { maxContentDiv.innerHTML = data;  });  });
    }
    else
      gmarkers[i].openInfoWindowHtml(htmls[i]);

  }
    
  function switchForm(type)
  {
    switch(type)
    {
      case 0: /*hide where box*/
        var obj = e('exampleWhatID');
        obj.innerHTML = 'e.g., "hotel, centre point" or "hotel near api-api"';
        obj.style.width="440px";
        
        obj=e('exampleWhereID');
        obj.style.visibility="hidden";
        
        obj=e('searchWhat').trim();
        obj.style.width="440px";
        
        obj=e('searchWhere');
        obj.style.visibility="hidden";
        
        obj=e('formDiv');
        obj.className="formDiv";
        
        break;
      
      case 1:
        var obj = e('exampleWhatID');
        obj.innerHTML = '<b>What</b> e.g., "hotel"';
        obj.style.width="200px";
        
        obj=e('exampleWhereID');
        obj.innerHTML = '<b>Where</b> e.g., "Centre Point"';
        obj.style.visibility="visible";
        
        obj=e('searchWhat').trim();
        obj.style.width="200px";
        
        obj=e('searchWhere');
        obj.style.visibility="visible";
        obj.style.width="235px";
      
        obj=e('formDiv');
        obj.className="formDiv2";
        break;
      
      default:  
        break;
    }
  }
  function getSearchWhatString()  {    return e('searchWhat').value.trim();  }
  function getSearchWhereString()  {    return e('searchWhere').value.trim();  }
  
  function loadURL(url, history_record)
  {
    var params = getParameters(url);
    var pairs = params.split("&");
    for (var i=0; i<pairs.length; i++) 
    {
      var pos = pairs[i].indexOf("=");
    	var argname = pairs[i].substring(0,pos).toLowerCase();
    	var value = pairs[i].substring(pos+1).toLowerCase().trim();
    }
     e("searchWhat").value= decodeURI(value);
    if(history_record) 
    { e("vp").src="home3.html?"+params;  }
    else
     { cancel=false;showLoading(); GDownloadUrl("getXML.php?"+params, function (doc) {processDownload(doc)})};
    
    return false;
  }
  function showLoading()
  {
    var obj = e("loadingdiv");
    obj.style.top = "0px";
    obj.style.left = e("map").style.left;
    obj.style.width = e("map").style.width;
    obj.style.height = e("map").style.height;
    
    obj.style.zIndex=9999;
    obj.style.display="block";
  }
  function hideLoading()  {    e("loadingdiv").style.display="none";  }
  
  var insert1 = insert2 = insert3 = insert4 = insert5 = insert6  = insert7 = null;
  function tile_overlay()
  {
    insert1 = new EInsert(new GLatLng(5.982637, 116.075368), "img/jalan_tugu_pantai_datuk_salleh_sulong_5.982637-116.075368_17.png", new GSize(337,693), 17);
    map.addOverlay(insert1);
    insert1.hide();
    
    insert2 = new EInsert(new GLatLng(5.98219, 116.075552), "img/jalan_dato_salleh_sulong_5.98219-116.075552_16.png", new GSize(214,339), 16);
    map.addOverlay(insert2);
    insert2.hide();
    
    insert3 = new EInsert(new GLatLng(5.98271, 116.073981), "img/segama-5.98271-116.073981_17.png", new GSize(179,191), 17);
    map.addOverlay(insert3);
    insert3.hide();
    
    insert4 = new EInsert(new GLatLng(5.978206272376166,116.07393622398376), "img/jalan-laiman-diki_17.png", new GSize(217,114), 17);
    map.addOverlay(insert4);
    insert4.hide();
    
    insert5 = new EInsert(new GLatLng(5.978195601887885,116.07416152954102), "img/jalan-laiman-diki_16.png", new GSize(130,68), 16);
    map.addOverlay(insert5);
    insert5.hide();
    
    insert6 = new EInsert(new GLatLng(5.98197294173426,116.0740327835083), "img/pusat_bandar_15.png", new GSize(162,183), 15);
    map.addOverlay(insert6);
    insert6.hide();
    
    insert7 = new EInsert(new GLatLng(5.978579739334886,116.07143640518188), "img/jalan_20_centre-point_17.png", new GSize(293,252), 17);
    map.addOverlay(insert7);
    insert7.hide();
    
    insert2 = new EInsert(new GLatLng(5.98219, 116.075552), "img/jalan_dato_salleh_sulong_5.98219-116.075552_16.png", new GSize(214,339), 16);
    map.addOverlay(insert2);
    insert2.hide();
  }
  
  function refresh_overlay()
  {
    if(map.getZoom() == 17)
    {
      insert1.show();
      insert3.show();
      insert4.show();
      insert7.show();
    }
    else
    {
      insert1.hide();
      insert3.hide();
      insert4.hide();
      insert7.hide();
    }
    
    if(map.getZoom() == 16)
    {
      insert2.show();
      insert5.show();
    }
    else
    {
      insert2.hide();
      insert5.hide();
    }
    if(map.getZoom() == 15)
    {
      insert6.show();
    }
    else
    {
      insert6.hide();
    }
    
  }
  
  function redraw_overlay()
  {
    tile_overlay();
    refresh_overlay();
  }

