//<![CDATA[
var finishedLodging = null;
var finishedManaged = null;
var pt = null; // Property Type
if(window.na){
	var na = 1;
} else {
	var na = 0;
}

var icon = new GIcon();
icon.image = "http://www.utah.com/art/maps/green-marker.png";
icon.shadow = "http://www.utah.com/art/maps/marker-background.png";
icon.iconSize = new GSize(20, 20);
icon.shadowSize = new GSize(20, 20);
icon.iconAnchor = new GPoint(10, 19);
icon.infoWindowAnchor = new GPoint(10, 5);

var featuredicon = new GIcon(icon);
featuredicon.image = 'http://www.utah.com/art/maps/red-marker.png';

//var tmpicon = new GIcon(icon);
//tmpicon.image = 'http://www.utah.com/art/maps/orange-marker.png';

function load(clat, clong, zlevel) {
  if (GBrowserIsCompatible()) {				
var map = new GMap2(document.getElementById("gmap"));
map.addControl(new GSmallMapControl());
var geocoder = new GClientGeocoder();
map.setCenter(new GLatLng(clat, clong), zlevel);
var boundaryPoints = map.getBounds();
var mgr = new MarkerManager(map);

// Add event listener for movend or dragend or both. When the user quits moving the map, then make the ajax call to get
// properties within the bounds of the map
GEvent.addListener(map, "zoomend", function(){ map.clearOverlays(); boundaryPoints = map.getBounds(); getProperties(boundaryPoints); });
GEvent.addListener(map, "dragend", function(){ map.clearOverlays(); boundaryPoints = map.getBounds(); getProperties(boundaryPoints); });

// FUNCTION FOR ADDING MANAGED PROPERTIES
// Creates a marker at the given point with the given number label
function createManagedPropertyMarker(point, name, html, preference) {
  if(preference == '1'){
    var marker = new GMarker(point, { icon: featuredicon, title: name, zIndexProcess:importanceOrder});
	marker.importance = 2;
  } else {
    var marker = new GMarker(point, { icon: icon, title: name });
  }
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml( html, { maxWidth: 275 }	);
  });
  return marker;
}				

function addManagedPropertyMarker(id, name, descr, company_id, companies, urls, video_url, video_id, latitude, longitude, preference) {
  var video_html = '';
  if(video_id > 0){
  	video_html = ' &bull; <a href="/database/lodging/profile' + lodge_id + '.htm" onclick="show_amenities(' + lodge_id + ', 1); return false;" target="_blank">Video</a> &bull; ';
  } else {
  if(video_url){ video_html = '<a href="/utah_logs/thing_link_log.php?log=' + video_url + '||' + id + '||amenities_display_url||' + window.location.href + ((window.location.href.indexOf('?') != -1) ? '&map=1' : '?map=1') + '" target="_blank">Video</a> &bull; '; }
  }
  var html = '<span style="font: 14px arial"><b>' + name + '</b><br /></span><span style="font: 12px/12px arial">' + descr + ' <a href="/database/lodging/managedproperties/index.phtml?id=' + id + '" onclick="show_managed_property(' + id + ', 1); return false;" target="_blank">(more)</a></span><br /><br />';
  html += '<span style="font: 12px arial"><b>Reservation Services</b><br /></span>';
  var company_names = companies.split(':[]:');
  var company_urls = urls.split(':[]:');
  if(company_names){
  	html += '<table cellspacing="0" cellpadding="0" style="width: 100%">';
  	for(x = 0; x < company_names.length; x++){
		html += '<tr><td style="font: 12px/12px arial; vertical-align:top; padding: 2px 2px 2px 0px;"><a href="' + company_urls[x] + '" target="_blank">' + company_names[x] + '</a></td><td style="font: 12px/12px arial; white-space: nowrap;vertical-align:top; padding: 2px 2px 2px 0px;">' + video_html + '</td><td style="font: 12px/12px arial; white-space: nowrap;vertical-align:top; padding: 2px 0px 2px 0px;">&nbsp;&bull;&nbsp;<a href="/lodging/profile' + company_id + '.htm" onclick="show_amenities(' + company_id + ', 1); return false;" target="_blank">Info</a></td></tr>';
	}
  	html += '</table><br>';
  }
  if(latitude && longitude){ 
  	point = new GLatLng(latitude, longitude);
	if(point != null){
		map.addOverlay(createManagedPropertyMarker(point, name, html, preference));
	}
  } 
}

// END FUNCTIONS FOR ADDING MANAGED PROPERTIES

function importanceOrder (marker,b) {
  return GOverlay.getZIndex(marker.getPoint().lat()) + marker.importance*1000000;
}

// Creates a marker at the given point with the given number label
function createMarker(point, name, html, preference) {
  if(preference == '1'){
    var marker = new GMarker(point, { icon: featuredicon, title: name, zIndexProcess:importanceOrder});
	marker.importance = 2;
  } else {
    var marker = new GMarker(point, { icon: icon, title: name });
  }
  GEvent.addListener(marker, "click", function() {
    marker.openInfoWindowHtml( html	);
  });
  return marker;
}				

function addMarker(lodge_id, name, address, url, video_url, video_id, amenity_type, latitude, longitude, preference) {
  var video_html = '';
  if(video_id > 0){
  	video_html = ' &bull; <a href="/database/lodging/profile' + lodge_id + '.htm" onclick="show_amenities(' + lodge_id + ', 1); return false;" target="_blank">Video</a> &bull; ';
  } else {
  if(video_url){ video_html = '<a href="/utah_logs/thing_link_log.php?log=' + video_url + '||' + lodge_id + '||amenities_display_url||' + window.location.href + ((window.location.href.indexOf('?') != -1) ? '&map=1' : '?map=1') + '" target="_blank">Video</a> &bull; '; }
  }
  var html = '<span style="font: 14px arial"><b>' + name + '</b><br />' + address + '<br />' + video_html + '<a href="/utah_logs/thing_link_log.php?log=' + url + '||' + lodge_id + '||web_address||' + window.location.href + ((window.location.href.indexOf('?') != -1) ? '&map=1' : '?map=1') + '" target="_blank">Website</a>';
  switch(amenity_type){
  	case "C":
		html += ' &bull; <a href="/database/lodging/profile' + lodge_id + '.htm" onclick="show_amenities(' + lodge_id + ', 1); return false;" target="_blank">Map, Services, &amp; Photos</a>';
		break;
	case "E":
		html += ' &bull; <a href="/database/lodging/profile' + lodge_id + '.htm" onclick="show_amenities(' + lodge_id + ', 1); return false;" target="_blank">Map &amp; Services</a>';
		break;
	default:
		html += ' &bull; <a href="/database/lodging/profile' + lodge_id + '.htm" onclick="show_amenities(' + lodge_id + ', 1); return false;" target="_blank">Services</a>';
  }
  html += '<br /></span>';
  if(latitude && longitude){ 
  	point = new GLatLng(latitude, longitude);
	if(point != null){
		map.addOverlay(createMarker(point, name, html, preference));
	}
  } 
}

// get lodging addresses to mark
function getProperties(bounds){	
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();
	var respText, respCode, timestamp, cdate;
	var ucdate = new Date();
	var timestamp = ucdate.getSeconds();
	
	if(pt != '3,6,9'){
	var downloadUrl = '/database/getLodgingList.php?nec='+northEast+'&swc='+southWest+(pt?'&pt='+pt:'')+(na?'&na='+na:'')+'&time=' + timestamp;
	//alert(downloadUrl);
	GDownloadUrl(downloadUrl, function(respText, respCode){ 
		if(respCode = '200'){
			var data = respText.split("\n");
			//query = data.shift();
			//document.getElementById("output").innerHTML = query; 
			lodge_ids = data[0].replace(/^\s+|\s+$/g,"").split('|');
			lodge_names = data[1].replace(/^\s+|\s+$/g,"").split('|');
			addresses = data[2].replace(/^\s+|\s+$/g,"").split('|');
			urls = data[3].replace(/^\s+|\s+$/g,"").split('|');
			video_urls = data[4].replace(/^\s+|\s+$/g,"").split('|');
			video_ids = data[5].replace(/^\s+|\s+$/g,"").split('|');
			amenity_types = data[6].replace(/^\s+|\s+$/g,"").split('|');
			latitudes = data[7].replace(/^\s+|\s+$/g,"").split('|');
			longitudes = data[8].replace(/^\s+|\s+$/g,"").split('|');
			preferences = data[9].replace(/^\s+|\s+$/g,"").split('|');
			// Add address layers to the map.
			if(lodge_ids){for(var x = 0; x < lodge_ids.length; x++){addMarker(lodge_ids[x], lodge_names[x], addresses[x], urls[x], video_urls[x], video_ids[x], amenity_types[x], latitudes[x], longitudes[x], preferences[x]);}}
		}})
	}
		
	if(pt == null || pt == '3,6,9'){
	// GET Managed Properties
	var downloadUrl = '/database/getManagedLodgingList.php?nec='+northEast+'&swc='+southWest+'&time=' + timestamp;
	GDownloadUrl(downloadUrl, function(respText, respCode){ 
		if(respCode = '200'){
			var data = respText.split("\n");
			//query = data.shift();
			property_ids = data[0].replace(/^\s+|\s+$/g,"").split('|');
			property_names = data[1].replace(/^\s+|\s+$/g,"").split('|');
			property_descriptions = data[2].replace(/^\s+|\s+$/g,"").split('|');
			property_management_companies_ids = data[3].replace(/^\s+|\s+$/g,"").split('|');
			property_management_companies = data[4].replace(/^\s+|\s+$/g,"").split('|');
			property_management_urls = data[5].replace(/^\s+|\s+$/g,"").split('|');
			video_ids = data[6].replace(/^\s+|\s+$/g,"").split('|');
			property_video_urls = data[7].replace(/^\s+|\s+$/g,"").split('|');
			latitudes = data[8].replace(/^\s+|\s+$/g,"").split('|');
			longitudes = data[9].replace(/^\s+|\s+$/g,"").split('|');
			preferences = data[10].replace(/^\s+|\s+$/g,"").split('|');
			// Add address layers to the map.
			if(property_ids){for(var x = 0; x < property_ids.length; x++){addManagedPropertyMarker(property_ids[x], property_names[x], property_descriptions[x], property_management_companies_ids[x], property_management_companies[x], property_management_urls[x], property_video_urls[x], video_ids[x], latitudes[x], longitudes[x], preferences[x]);}}
		}})
		}
		
		// GET Extra Labels
		var downloadUrl = '/database/getGmapExtraLabels.php?nec='+northEast+'&swc='+southWest+'&time=' + timestamp;
	GDownloadUrl(downloadUrl, function(respText, respCode){ 
		//alert('Response Code: ' + respCode + ' Response: ' + respText); 
		if(respCode = '200'){
			var data = respText.split("\n");
			//query = data.shift();
			label_ids = data[0].replace(/^\s+|\s+$/g,"").split('|');
			label_html = data[1].replace(/^\s+|\s+$/g,"").split('|');
			zoom = data[2].replace(/^\s+|\s+$/g,"").split('|');
			latitudes = data[3].replace(/^\s+|\s+$/g,"").split('|');
			longitudes = data[4].replace(/^\s+|\s+$/g,"").split('|');
			// Add address layers to the map.
			if(label_ids){
				var elabel = [];
				for(var x = 0; x < label_ids.length; x++){
					elabel[x] = new ELabel(new GLatLng(latitudes[x],longitudes[x]), label_html[x], "elabel");
				}
				mgr.addMarkers(elabel, 12);
				mgr.refresh();
			}
		}})
}

getProperties(boundaryPoints);

  }
}
//]]>