var gmarkers = new Array();
var htmls = new Array();
var tot_marks = 0;
var select_id = 0;

function checkEnter(e){ 
	if(e.keyCode == 13){ //if generated character code is equal to ascii 13 (if enter key)
	return true;
	} else {
	return false;
	}
}

function run_srch() {
	if(document.getElementById('search').value) {
		mv_search(document.getElementById('search').value);
	} else {
		alert("Please enter a place or hotel name");
	}
}

function hilite(tableRow, highLight) {
  if (highLight) {
    tableRow.className = 'srch_result_hover';//'url("/images/s_depressed.gif")';
  } else {
    tableRow.className = 'srch_result';// = 'none';
  }
}

function readMap(url) {
   var request = GXmlHttp.create();
   request.open("GET", url, true);
   request.onreadystatechange = function() {
     if (request.readyState == 4) {
       var xmlDoc = request.responseXML;
       // obtain the array of markers and loop through it
       var markers = xmlDoc.documentElement.getElementsByTagName("marker");

       // hide the info window, otherwise it still stays open where the removed marker used to be
       map.getInfoWindow().hide();

       map.clearOverlays();

       // empty the array
       gmarkers = [];

       // reset the side_bar
       side_bar_html="";

       for (var 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 html = markers[i].getAttribute("html");
         var label = markers[i].getAttribute("label");
         // create the marker
         var marker = createMarker(point,label,html);
         map.addOverlay(marker);
       }
       // put the assembled side_bar_html contents into the side_bar div
       document.getElementById("side_bar").innerHTML = side_bar_html;
     }
   };
   request.send(null);
 }


function mv_search (search, page) {
	var results_table = "";
	map.setCenter(new GLatLng(54.826008,-4.262695), 5);
	page = page ? page : 1;
	GDownloadUrl("/portal/search_xml?search=" + search + "&page=" + page, 
	function(data, responseCode) {
	  //var info = eval(data);
	  var data = eval('(' + data + ')');
	  var info = data.data;
	  data.page = parseInt(data.page,10);
	  if(info && info[0]) {
	    for (var i = 0; i < info.length; i++) {
			//don't plot hotels
			var point = new GLatLng(info[i].latitude,info[i].longitude);
            var html = createResultMarker(point, info[i]);
  			results_table += html;
			//var marker = createMarker(point,info[i].name,info[i].html);
		}
		results_table += "<tr>";
		if(data.page > 1) {
			results_table += "<td><a href='javascript:mv_search(\""+ document.getElementById('search').value + "\", " + (data.page - 1) + " );'>Prev</a></td>";
		} else {
			results_table += "<td></td>";
		}

		if(info.length > 9 && info.length < 13) {
			results_table += "<td align=\"right\"><a href='javascript:mv_search(\""+ document.getElementById('search').value + "\", " + (data.page + 1) + " );'>Next</a></td>";
		}
		results_table += "</tr>";
		document.getElementById('search_results').innerHTML = 
		"<table cellpadding=\"0\" cellspacing=\"0\" class=\"results\">" +
		results_table +
		"</table>";
		//document.getElementById('search_results').display = "block";
	 } else {
		document.getElementById('search_results').innerHTML = "Place not found.";
	}
	});
}

function createResultMarker(point, pnt_nfo) {
	var place = new GIcon();
	place.image = "/images/icons/map_place_grn.gif";
	place.iconSize = new GSize(15, 15);
	place.iconAnchor = new GPoint(6, 20);
	place.iconSize = new GSize(15, 15);
	place.shadowSize = new GSize(20, 15);
	place.iconAnchor = new GPoint(6, 20);
	place.infoShadowAnchor = new GPoint(11, 11);
	place.infoWindowAnchor = new GPoint(5, 1);
	//console.log("lat %s lon %d zoom %d", pnt_nfo.latitude, pnt_nfo.longitude, pnt_nfo.zoom );

	var rhtml = "";
	if(pnt_nfo.type == 'hotel') {
		// if the point already exists :-
		rhtml = '<tr class="srch_result" onmouseout="hilite(this,false)" onmouseover="hilite(this,true)" onclick="javascript:select_id = '+ pnt_nfo.id + ';map.setCenter(new GLatLng(' + pnt_nfo.latitude + ', ' + pnt_nfo.longitude + '), ' + pnt_nfo.zoom + ')">' + pnt_nfo.html + '</tr>';
	} else {
		var marker = new GMarker(point, place);
		map.addOverlay(marker);
	
		// save the info we need to use later for the side_bar
		gmarkers[tot_marks] = marker;
		//check auto zoom level for nearest hotel :-
		//htmls[tot_marks] = pnt_nfo.html;
		// add a line to the side_bar html
		rhtml = '<tr class="srch_result" onmouseout="hilite(this,false)" onmouseover="hilite(this,true)" onclick="javascript:myclick(' + tot_marks + ')">' + pnt_nfo.html + '</tr>';
		tot_marks++;
	}
	return rhtml;
}

function myclick(i) {
	map.setCenter(gmarkers[i].getPoint(),9);
	//zoom out until we have some markers :-
	
}

function createMarker(point, icon, xml) {
  var marker = new GMarker(point, icon);
	var id = xml.getAttribute("id");
  GEvent.addListener(marker, "click", 
	function() {
		render_info(id, marker);
  });
  return marker;
}

function render_info(id, marker) {
	var url = "/portal/hotel_info_xml?id=" + id;
	GDownloadUrl(url, function(data, responseCode) {
		var infoTabs = [
		  new GInfoWindowTab("About", data)
		 // new GInfoWindowTab("Picture", "None available")
		];
		marker.openInfoWindowTabsHtml(infoTabs);
	});
}
