var http_request;
var xmlHttp;
var xmlDoc;
var loaded;
var file="phpsqlajax_genxml.php";
var load = "<img src=images/35.gif>";

function fillTypes(){

// Retrieve the category that was passed or selected
 if ($thiscategory){
 document.getElementById("catselection").innerHTML = "";  //make the select map select box disappear for specific maps.
 var catsel=$thiscategory;
  }

 else{
catsel = document.getElementById("catSelect").value;
}

// == fill the region drop down list ==

 var select_html =    '<fieldset><legend>Choose a Region:</legend>' +
   						'<select id="regionSelect" onChange="clearBoxes()">' +
                        '<option value="all" selected> - All - </option>';


        GDownloadUrl("regions.xml", function(data) {
        var xml = GXml.parse(data);
       
        
        regions=xml.getElementsByTagName("region");
    

        for (i = 0; i < regions.length; i++) {
        var regiond = regions[i].getAttribute("rdesc");
          var regionc = regions[i].getAttribute("name");
          var regionp = regions[i].getAttribute("rpoints");
          var regionl = regions[i].getAttribute("rlevel");


        select_html += '<option value=' + regionc + ' id = ' + i + '> ' + regiond + '</option>';
 
         } 
         
         // ===== final part of the select box =====
        select_html += '</select></fieldset>';
        document.getElementById("selection").innerHTML = select_html;
       });
     
// == fill the Type checkbox list ==
GDownloadUrl("types.xml", function(data) 
{
        var xml = GXml.parse(data);
        var types = xml.documentElement.getElementsByTagName("type");
       	var check_html =   	'<fieldset><legend>Click to choose:</legend>' ;

  
        for (var i = 0; i < types.length; i++) {
        var typed = types[i].getAttribute("desc");
          var typec = types[i].getAttribute("name");
          var category = types[i].getAttribute("category");
          var typecolor = types[i].getAttribute("color");
          if (category==catsel){
        check_html += '<font color="' + typecolor + '">' + typed + ':</font> <input type="checkbox" name="list" value="' + typec + '" id="' + typec + 'box" onclick="boxclick(this,&#39' + typec + '&#39)"  /><br>';
         } }
         
         // ===== final part of the check boxes =====
        check_html += '</fieldset>';
        document.getElementById("checkboxes").innerHTML = check_html;

});

			 
		 
  // Clear all the Checkboxes

    var objCheckBoxes = document.forms["mycheckboxes"];
    var countCheckBoxes = objCheckBoxes.elements.length;   
    for(var i = 0; i < countCheckBoxes; i++){
    objCheckBoxes.elements[i].checked=0;
    }
   
    
    	// == Clear all the Markers from the map
    	for (var i=0; i<gmarkers.length; i++) {
            gmarkers[i].hide();
            map.closeInfoWindow();
          }

        // == clear the side bar
         document.getElementById("side_bar").innerHTML = "";
         document.getElementById("counter").innerHTML = "Counter: " + 0;
         var loaded="Y";
         // display the buttons once a category map has been chosen.
 document.getElementById("mybuttons").innerHTML = "<input type='button' value='Clear All' onclick='clearBoxes();' /><input type='button' value='Select All' onclick='chkBoxes();' /> </br>"

document.getElementById("centerbutton").innerHTML = "<input type='button' value='Center the Map' onclick='mapCenter();' />";

//**********************
 

}
function clearBoxes(){

// Clear out the region overlay if one exists
if (polyremove){
map.removeOverlay(polyremove);
polyremove = null;
}

// Retrieve the coordinates for shading the selected area

var regionsel = document.getElementById("regionSelect").value;


for (var i=0; i<regions.length; i++) {



  if (regions[i].getAttribute("name") == regionsel) {

		
            var selpoints =regions[i].getAttribute("rpoints");
			 var sellevels =regions[i].getAttribute("rlevel");		 
			var polynew = new GPolygon.fromEncoded({
  			polylines: [
    		{points: selpoints,
  			levels: sellevels,
     		color: "#0000ff",
     		opacity: 0.2,
    		weight: 1,
     		numLevels: 18,
     		zoomFactor: 2}],
  			fill: true,
  			color: "#0000ff",
  			opacity: 0.1,
  			outline: true
});

			 
		 
	map.addOverlay(polynew) ;
	polyremove = polynew;		 
          }

}

  
  // Clear all the Checkboxes

    var objCheckBoxes = document.forms["mycheckboxes"];
    var countCheckBoxes = objCheckBoxes.elements.length;  
     
    for(var i = 0; i < countCheckBoxes; i++){
    objCheckBoxes.elements[i].checked=0;
    }
   
    
    	// == Clear all the Markers from the map
    	for (var i=0; i<gmarkers.length; i++) {
           gmarkers[i].hide();
           map.closeInfoWindow();
        }

        // == rebuild the side bar

        document.getElementById("side_bar").innerHTML = "";
		document.getElementById("counter").innerHTML = "Counter: " + 0;


//**********************
 

}         

  //==================================================================================

function chkBoxes(){
 document.getElementById("loading").innerHTML =  load;
   
    var objCheckBoxes = document.forms['mycheckboxes'];
    var countCheckBoxes = objCheckBoxes.elements.length;  
 
    for(var x = 0; x < countCheckBoxes; x++){
    objCheckBoxes.elements[x].checked=1;
    var ctype = objCheckBoxes.elements[x].value;
    var cbox = objCheckBoxes.elements[x].id;

   
 		showall(ctype);
    }
    
         // == rebuild the side bar

        makeSidebar();
	  
}        
//=============================================================================
      // A function to create the marker and set up the event window
      function createMarker(rowid, point,name,html,type,region,tcolor,paid) {
       
      
      // Retrieve the Icon/Font color stored in each Type.
       			var iconOptions = {};
  				iconOptions.width = 12;
  				iconOptions.height = 20;
  				iconOptions.primaryColor = tcolor;
  				iconOptions.cornerColor = "#EEE8E0";
  				iconOptions.strokeColor = "#080808";
  				
  				if(paid=="Y"){
  				iconOptions.addStar = true;
  				iconOptions.starPrimaryColor = "#FFFF00";
 				iconOptions.starStrokeColor = "#0000FF";
 				iconOptions.width = 24;
  				iconOptions.height = 35;

 				iconOptions.strokeColor = "#FFFF00"
 	
 				iconOptions.width = 20; 
 				iconOptions.height = 20; 

 				iconOptions.label = "*"; 
 				iconOptions.labelSize = 30; 
 				iconOptions.labelColor = "#FFFF00"; 
 				iconOptions.shape = "roundrect"; 
 				var icon = MapIconMaker.createFlatIcon(iconOptions);}
  				 //var icon = MapIconMaker.createMarkerIcon(iconOptions);}
  				 
  				 else{ var icon = MapIconMaker.createMarkerIcon(iconOptions); 

  				 
}
  				
  				

      
        var marker = new GMarker(point, icon);
        // === Store the type and name info as a marker properties ===
        marker.mytype = type;                                 
        marker.myname = name;
        marker.mycolor = tcolor;
        marker.myregion = region;
        marker.mypaid = paid;
        marker.myid= rowid;
       
        GEvent.addListener(marker, "click", function() {
          marker.openInfoWindowHtml(html);
         
        });
        gmarkers.push(marker);
        
        
        // The new marker "mouseover" listener        
        GEvent.addListener(marker,"mouseover", function() {
          marker.openInfoWindowHtml(html);
        });   
         
        return marker;
       
      }
//======================================================================================

      // == shows all markers of a particular type ==
      function showt(type) {


      var region = document.getElementById('regionSelect').value;

      if (region == "all"){


        for (var i=0; i<gmarkers.length; i++) {
         
          if (gmarkers[i].mytype == type) {
         
            gmarkers[i].show();
          }
          
        }}
      else {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mytype == type && gmarkers[i].myregion == region) {
            gmarkers[i].show();
          }
          
        }
      }


      }
      
      //======================================================================================

      // == shows all markers for a particular region ==
      function showall(type) {

     
      var region = document.getElementById('regionSelect').value;
 
      if (region == "all"){
      	

        for (var i=0; i<gmarkers.length; i++) {
         
         	if (gmarkers[i].mytype == type) {
            gmarkers[i].show();
         
          
        }}}
      else {
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].myregion == region) {
          if (gmarkers[i].mytype == type) {

            gmarkers[i].show();
          }}
          
        }
      }
                

      }

//=================================================================================================
      // == hides all markers of a particular type, and ensures the checkbox is cleared ==
      function hidet(type) {
      
        for (var i=0; i<gmarkers.length; i++) {
          if (gmarkers[i].mytype == type) {
            gmarkers[i].hide();
          }
        }
        // == clear the checkbox ==

        document.getElementById(type+"box").checked = false;
        // == close the info window, in case its open on a marker that we just hid
        map.closeInfoWindow();
      }
      

//=================================================================================================
      // == a checkbox has been clicked ==
      function boxclick(box,type) {

        if (box.checked) {
          showt(type);
        } else {
          hidet(type);
        }
        // == rebuild the side bar

        makeSidebar();
      }


//================================================================================================

      function myclick(i) {
        GEvent.trigger(gmarkers[i],"click");
      }

//================================================================================================
      // == rebuilds the sidebar to match the markers currently displayed ==
      function makeSidebar() {
		count=0;
        var html = "";

         for (var i=0; i<gmarkers.length; i++) {
                  if (!gmarkers[i].isHidden()) {
          ++count
        if(gmarkers[i].mypaid=="Y"){
           html += '<img src=images/yellowstar.png><a href="javascript:myclick(' + i + ')">' +  '<font color="' + gmarkers[i].mycolor + '"><b>' + gmarkers[i].myname + 
           '</b></font></a><br><a target="_blank" title="" href="businessinformation?bid=' + gmarkers[i].myid +'&'+ gmarkers[i].myname +'"><img border="0" src="images/detaila1.png" align="right" ></a><br><br>';
           }







           
           
         else {  
         html += '<a href="javascript:myclick(' + i + ')">' +  '<font color="' + gmarkers[i].mycolor + '">' + gmarkers[i].myname + '</font></a><br><br>';  }
          }
        }

        document.getElementById("side_bar").innerHTML = html;
 document.getElementById("counter").innerHTML = "Counter: " + count;
 document.getElementById("loading").innerHTML =  "";
      }









   var map;
    var gmarkers = [];
      var gicons = [];
      var polyremove =[];

  var regions;

if ((document.getElementById || document.all) && document.images) {
  window.onload = initMap;
}

//=================================================================================================

function initMap(){

var select_cat="";


    if (GBrowserIsCompatible()) {

 
  
      // create the map

      map = new GMap2(document.getElementById("maparea"));
      map.addControl(new GLargeMapControl());
      map.addControl(new GMapTypeControl());

      map.setCenter(new GLatLng(46.282428, -60.776367), 8);
      var polynew;
        
      map.checkResize();

// Read the data & build the map markers
if ($thiscategory=="accommodation"){var mapfile="accomm.xml"; var mapnode="accomm";}
switch ($thiscategory)
{
case "accommodation":
  var mapfile="accomm.xml"; var mapnode="accomm";  break;
case "activity":
  var mapfile="activity.xml"; var mapnode="activity";  break;
case "restaurant":
var mapfile="restaurant.xml"; var mapnode="restaurant";  break;
case "tourist":
  var mapfile="tourist.xml"; var mapnode="tourist";  break;
case "community":
  var mapfile="community.xml"; var mapnode="community";  break;
case "business":
var mapfile="business.xml"; var mapnode="business";  break;

default:
var mapfile="markers.xml"; var mapnode="marker";}

getmarkers(mapfile, mapnode);

    
     
}
else {
      alert("Sorry, the Google Maps API is not compatible with this browser, Try our TEXT Version instead");
		}

 }

 
//=================================================================================================
function mapCenter(){
      //Recenter the map

      

      map.setCenter(new GLatLng(46.282428, -60.776367), 8);
        
      map.checkResize();

    
}
/****************************************************************************/
function getmarkers(mapfile,mapnode){
GDownloadUrl(mapfile, function(data) {
        var xml = GXml.parse(data);
       
        
        markers=xml.getElementsByTagName(mapnode);
    

        for (i = 0; i < markers.length; i++) {
            
          // obtain the attribues of each marker
          var lat = parseFloat(markers[i].getAttribute("lat"));
          var lng = parseFloat(markers[i].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
          var address = markers[i].getAttribute("address");
          var name = markers[i].getAttribute("name");
          var city = markers[i].getAttribute("city");
          var URL = markers[i].getAttribute("URL");
          var phone = markers[i].getAttribute("phone");
          var type = markers[i].getAttribute("type");
          var region = markers[i].getAttribute("region");
          var tcolor = markers[i].getAttribute("color");
          var paid = markers[i].getAttribute("paid");
	     var rowid = markers[i].getAttribute("id");

var html = "<b>"+name+"</b><br>"+city;

if (paid =="Y"){ var html = '<a target="_blank" title=' + name + 'href=businessinformation?bid=' + rowid + '><b>' +  name +'</a><br>'+address+'<br>'+city+"</b><br>"+phone+	'<br><a target="_blank" href=businessinformation?bid=' + rowid +'><img border="0" src="images/detaila1.png" align="center"></a>';}
    
          // create the marker
          var marker = createMarker(rowid,point,name,html,type,region,tcolor,paid);

          map.addOverlay(marker);
          gmarkers[i].hide();
         
       
          } }); // end loop
  

// == fill the category down list ==
        GDownloadUrl("types.xml", function(data) {
        var xml = GXml.parse(data);
    
   var select_cat =    '<fieldset><legend>Choose a Map:</legend>' +
   						'<select id="catSelect" onChange="fillTypes()">' +
                        '<option value="all" selected> - Choose a map - </option>';
      

      var xml = GXml.parse(data);
        var types = xml.documentElement.getElementsByTagName("type");
       var lastcat="";
        
        for (var i = 0; i < types.length; i++) {
        
          var category = types[i].getAttribute("category");
         
        if (category != lastcat) { 
         lastcat = category;
        select_cat += '<option value=' + category  + '> ' + category + '</option>';
								}
         										} 
         
         // ===== final part of the select box =====
        select_cat += '</select></fieldset>';
        document.getElementById("loading").innerHTML = "";
        document.getElementById("catselection").innerHTML = select_cat;
        document.getElementById("searchbutton").innerHTML = "<input type='button' value='Search' onclick='showHint();' />";
      
         	if ($thiscategory){document.getElementById("catselection").innerHTML = "";}  //make the select map select box disappear for specific maps.
         	
		 
       											});

        


       
       
//  If a category is passed directly to the program 
     
 if ($thiscategory){
	
  fillTypes();
  					}
    
      
   }  //end function





//*************************************************
function GetXmlHttpObject()
{
 document.getElementById("loading").innerHTML =  load;

      http_request = false;
      if (window.XMLHttpRequest) 
      { // Mozilla, Safari,...
         http_request = new XMLHttpRequest();
         if (http_request.overrideMimeType) 
         {
            http_request.overrideMimeType('text/xml');
         }
      } else if (window.ActiveXObject) 
{ // IE
         try 
         {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
         } catch (e) 
         {
            try 
         {
               http_request = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (e) {}
         }
      }
      if (!http_request) 
      {
         alert('Cannot create XMLHTTP instance');
         return false;
      }
 
  
      http_request.onreadystatechange =  parseXML;
  
     http_request.open('GET', file, true);
      http_request.send(null);
      
     
}

//**************************************************
function parseXML(){

if (http_request.readyState == 4) {
         	if (http_request.status == 200) {

            var xmlDoc = http_request.responseXML;
           



 var markerdata = xmlDoc.documentElement.getElementsByTagName("marker");

   
        for (var i = 0; i < markerdata.length; i++) 
        {

    
          // obtain the attribues of each marker
          var lat = parseFloat(markerdata[i].getAttribute("lat"));
          var lng = parseFloat(markerdata[i].getAttribute("lng"));
          var point = new GLatLng(lat,lng);
          var address = markerdata[i].getAttribute("address");
          var name = markerdata[i].getAttribute("name");
          var city = markerdata[i].getAttribute("city");
          var URL = markerdata[i].getAttribute("URL");
          var phone = markerdata[i].getAttribute("phone");
          var type = markerdata[i].getAttribute("type");
          var region = markerdata[i].getAttribute("region");
          var tcolor = markerdata[i].getAttribute("color");
          var paid = markerdata[i].getAttribute("paid");
	     var rowid = markerdata[i].getAttribute("id");

var html = "<b>"+name+"</b><br>"+city;

if (paid =="Y"){ var html = '<a target="_blank" title=' + name + 'href=businessinformation?bid=' + rowid + '><b>' +  name +'</a><br>'+address+'<br>'+city+"</b><br>"+phone+	'<br><a target="_blank" href=businessinformation?bid=' + rowid +'><img border="0" src="images/detaila1.png" align="center"></a>';}
    
          // create the marker
          var marker = createMarker(rowid,point,name,html,type,region,tcolor,paid);

          map.addOverlay(marker);
          gmarkers[i].hide();
         
       
          }  // end loop
  

// == fill the category down list ==
        GDownloadUrl("types.xml", function(data) {
        var xml = GXml.parse(data);
    
   var select_cat =    '<fieldset><legend>Choose a Map:</legend>' +
   						'<select id="catSelect" onChange="fillTypes()">' +
                        '<option value="all" selected> - Choose a map - </option>';
      

      var xml = GXml.parse(data);
        var types = xml.documentElement.getElementsByTagName("type");
       var lastcat="";
        
        for (var i = 0; i < types.length; i++) {
        
          var category = types[i].getAttribute("category");
         
        if (category != lastcat) { 
         lastcat = category;
        select_cat += '<option value=' + category  + '> ' + category + '</option>';
								}
         										} 
         
         // ===== final part of the select box =====
        select_cat += '</select></fieldset>';
        document.getElementById("loading").innerHTML = "";
        document.getElementById("catselection").innerHTML = select_cat;
        document.getElementById("searchbutton").innerHTML = "<input type='button' value='Search' onclick='showHint();' />";
      
         	if ($thiscategory){document.getElementById("catselection").innerHTML = "";}  //make the select map select box disappear for specific maps.
         	
		 
       											});

        


       
       
//  If a category is passed directly to the program 
     
 if ($thiscategory){
	
  fillTypes();
  					}
    

 
    } // end if 200
         else {
            alert('There was a problem with the request.');
              }
       } // end if 4  

      
   }  //end function



function showHint()
{
document.getElementById("searchmsg").innerHTML = "<td> </td>"
 document.getElementById("loading").innerHTML =  load;

 var str = document.getElementById("txt1").value;

if (str.length==0)
  { 
 
  return;
  }
     if (loaded == "Y"){  // only clear checkboxes if they have been created.
 // == clear the checkboxes ==
        clearBoxes();
        map.closeInfoWindow();
// == rebuild the side bar
 						}
        document.getElementById("side_bar").innerHTML = "";
        document.getElementById("counter").innerHTML = "Count: " + 0;
         	

        for (var i=0; i<gmarkers.length; i++) {
         var names = gmarkers[i].myname;
         

var lstr= str.toLowerCase();
var lnames =names.toLowerCase();

        if(lnames.match(lstr) == lstr ){
        
            gmarkers[i].show();
        
          
        }
        else{
        gmarkers[i].hide();

        
        }}
      

    
 


makeSidebar();
if(count==0){document.getElementById("searchmsg").innerHTML = "<td>No records found to match search</td>";
}



} 

