function DumpMsg(msg)	{
	var span_obj = document.getElementById('dump_data');
	span_obj.innerHTML = msg;
}

function GetData()	{
	var bounds = map.getBounds();
	var min_x = bounds.getSouthWest().lng();
	var min_y = bounds.getSouthWest().lat();
	var max_x = bounds.getNorthEast().lng();
	var max_y = bounds.getNorthEast().lat();
	
	obj = XHG_map_pan;
	if (obj.readyState == 4 || obj.readyState == 0) {
		url = XMLHTTPGetURL;
		param = '?cmd=fetch-data' + '&min_x=' + min_x + '&min_y=' + min_y + '&max_x=' + max_x + '&max_y=' + max_y + '&zoom_level=' + map.getZoom() + '&hash=' + GetUniqueVal();
		//alert(url + param);
		obj.open("GET", url + param, true);
		obj.onreadystatechange = DrawData; 
		obj.send(null);
	}
	
	GetLandmarks(0);
	
}

function GetLandmarks(landmark_page_id)	{
	var bounds = map.getBounds();
	var min_x = bounds.getSouthWest().lng();
	var min_y = bounds.getSouthWest().lat();
	var max_x = bounds.getNorthEast().lng();
	var max_y = bounds.getNorthEast().lat();

	obj = XHG_landmark_pan;
	if (obj.readyState == 4 || obj.readyState == 0) {
		url = XMLHTTPGetURL;
		param = '?cmd=fetch_landmarks' + '&min_x=' + min_x + '&min_y=' + min_y + '&max_x=' + max_x + '&max_y=' + max_y + '&zoom_level=' + map.getZoom() + '&landmark_page_id=' + landmark_page_id + '&hash=' + GetUniqueVal();
		obj.open("GET", url + param, true);
		//DumpMsg(url + param);
		obj.onreadystatechange = AddLandmarks; 
		obj.send(null);
	}
}

function AddLandmarks()	{
	obj = XHG_landmark_pan;
	if (obj.readyState == 4) {
		var xmldoc = obj.responseXML;
		var db_nodes = xmldoc.getElementsByTagName('db_record'); 
		var n_records = db_nodes.length;
		
		DeleteRows('landmark_table', 1);
		
		for (i = 0; i < n_records; i++) {
			var hotel_id = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_id'));
			var hotel_name = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_name'));
			var hotel_x = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_x'));
			var hotel_y = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_y'));
			var point_type = GetXMLValue(db_nodes[i].getElementsByTagName('point_type'))*1;
			//alert(hotel_name);
			TableAddRow('landmark_table', i, Array(hotel_name));
		}
	}
}

function DrawData()	{
	obj = XHG_map_pan;
	if (obj.readyState == 4) {
		//map.clearOverlays();
		var xmldoc = obj.responseXML;
		//return;
		var db_nodes = xmldoc.getElementsByTagName('db_record'); 
		var n_records = db_nodes.length;
		for (i = 0; i < n_records; i++) {
			var hotel_id = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_id'));
			var hotel_name = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_name'));
			var hotel_x = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_x'));
			var hotel_y = GetXMLValue(db_nodes[i].getElementsByTagName('hotel_y'));
			var point_type = GetXMLValue(db_nodes[i].getElementsByTagName('point_type'))*1;
			
			switch (point_type)	{
				case 1:
					map.addOverlay(createMarker(hotel_x, hotel_y, hotel_name, point_type));
					break;
				case 2:
					//obsolete
					map.addOverlay(createMarker(hotel_x, hotel_y, hotel_name, point_type));
					addTLabel(map, 'landmark_' + hotel_id, hotel_x, hotel_y, hotel_name);
					break;
			}
		}
	}
}

function createMarker(x, y, html, point_type) {
	var icon = new GIcon();

	/*
	icon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
	icon.iconSize = new GSize(12, 20);
	icon.iconAnchor = new GPoint(6, 20);
	icon.infoWindowAnchor = new GPoint(5, 1);
	*/
	
	icon.image = point_type == 1 ? "html/marker_hotel.png" : "html/marker_landmark.png";
	icon.iconSize = new GSize(13, 34);
	icon.iconAnchor = new GPoint(6, 34);
	icon.infoWindowAnchor = new GPoint(6, 6);

	icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.shadowSize = new GSize(22, 20);

	var point = new GLatLng(y, x);
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml(html);
	}); 

	return marker;
}

function ReLocateMap()	{
	var place_obj = document.getElementById('my_place');
	var go_obj = document.getElementById('go_button');
	if (place_obj.type == 'select-one')	{
		var select_value = place_obj.options[place_obj.selectedIndex].value;
		var hotel_no_span_obj = document.getElementById('search_data');
		if (select_value != -1)	{
			var select_value_data = select_value.split('|');
			hotel_no_span_obj.innerHTML = select_value_data[2] + ' locations found';
			map.setCenter(new GLatLng(select_value_data[1], select_value_data[0]), 14);
			GetData();
		}
		else	{
			var search_container = document.getElementById('search_container');
			search_container.innerHTML = "<input type='text' class='search_box' id='my_place' onKeyUp='catch_keyup(event);'>";
			var place_obj = document.getElementById('my_place');
			hotel_no_span_obj.innerHTML = '&nbsp;';
			place_obj.focus();
		}
	}
	else	{
		if (!place_obj.value)	{
			alert('Provide a location !');
			return;
		}	
		go_obj.value = 'Please Wait....';
		go_obj.disabled = true;
		obj = XHG_search_city;
		if (obj.readyState == 4 || obj.readyState == 0) {
			url = XMLHTTPGetURL;
			param = '?cmd=search_city' + '&city_name=' + place_obj.value +  '&hash=' + GetUniqueVal();
			obj.open("GET", url + param, true);
			obj.onreadystatechange = function()	{
				if (obj.readyState == 4) {
					var xmldoc = obj.responseXML;
					var db_nodes = xmldoc.getElementsByTagName('db_record'); 
					var html_data = GetXMLValue(db_nodes[0].getElementsByTagName('html_data'));
					var search_container = document.getElementById('search_container');
					if (html_data == 'null')	{
						search_container.innerHTML = "<input type='text' class='search_box' id='my_place' onKeyUp='catch_keyup(event);' value='Oras necunoscut'>";
					}
					else	{
						search_container.innerHTML = html_data;
					}
					go_obj.value = 'GO';
					go_obj.disabled = false;
					GetData();
				}
			}; 
			obj.send(null);
		}
	}
}

function catch_keyup(ev)	{
	var keyCode = ev.keyCode ? ev.keyCode : ev.which ? ev.which : ev.charCode;
	if (keyCode == 13) {
		ReLocateMap();
	}
} 

function DropPics(hid)	{
	var obj = getHTTPObject();
	var span_other_pic = document.getElementById('span_other_pic');
	span_other_pic.innerHTML = '<br>Please Wait....';
	if (obj.readyState == 4 || obj.readyState == 0) {
		url = XMLHTTPGetURL;
		param = '?cmd=fetch_photos' + '&hid=' + hid +  '&hash=' + GetUniqueVal();
		obj.open("GET", url + param, true);
		obj.onreadystatechange = function()	{
			if (obj.readyState == 4) {
				var xmldoc = obj.responseXML;
				var db_nodes = xmldoc.getElementsByTagName('db_record'); 
				var html_data = GetXMLValue(db_nodes[0].getElementsByTagName('html_data'));
				//alert(html_data);
				span_other_pic.innerHTML = html_data;
			}
		}
		obj.send(null);
	}
}

function ShowPhoto(url)	{
	var pic_img_tag = document.getElementById('hotel_pic');
	pic_img_tag.src = url;
}

function addTLabel(map, id, x, y, label_content)	{
	var content = '<div class="landmark_label">' + label_content + '</div>';

	var label = new TLabel();
	label.id = id;
	label.anchorLatLng = new GLatLng (y, x);
	label.anchorPoint = 'bottomLeft';
	label.content = content;
	label.percentOpacity = 70;

	map.addTLabel(label);
}

function TableAddRow(table_name, pos, td_array)	{
	var table_obj = document.getElementById(table_name);
	var oTR = table_obj.insertRow(pos+1);
	var oTD;
	for (j=0;j<td_array.length;j++)	{
		oTD = oTR.insertCell(j);
		oTD.innerHTML = td_array[j];
		oTD.className = 'landmark_cell';
		if (td_array[j].substring(0,5) == '<span')	{
			oTD.onmouseover = function()	{
				oTD.style.backgroundColor = '#ADCEFF';
				oSpan = oTD.childNodes[0];
				if (oSpan)	{
					var coord_x = oSpan.getAttribute('coord_x');
					var coord_y = oSpan.getAttribute('coord_y');
					DrawPlaceMark(coord_x, coord_y);
				}
			}
			oTD.onmouseout = function()	{
				oTD.style.backgroundColor = 'transparent';
				HidePlaceMark();
			}
		}
	}
}

function DeleteRows(table_name, start)	{
	var table_obj = document.getElementById(table_name);
	if (table_obj.rows.length > start)	{
		for (j2=start;j2<table_obj.rows.length;j2++)	{
			table_obj.rows[j2].style.display = 'none';
		}	
	}
}

function DrawPlaceMark(x, y)	{
	var icon = new GIcon();

	icon.image = "html/red_arrow.png";
	icon.iconSize = new GSize(40, 60);
	icon.iconAnchor = new GPoint(20, 53);
	icon.infoWindowAnchor = new GPoint(20, 53);

	icon.shadow = "http://labs.google.com/ridefinder/images/mm_20_shadow.png";
	icon.shadowSize = new GSize(22, 20);

	var point = new GLatLng(y, x);
	arrow_marker = new GMarker(point, icon);
	
	map.addOverlay(arrow_marker);

	return;

	var latlng = new GLatLng(y, x);
	var panePixel = map.fromLatLngToDivPixel(latlng);
	var arrow_obj = document.getElementById('landmark_marker');
	arrow_obj.style.visibility = 'visible';
	alert(panePixel.x + ' ' + panePixel.y);
	arrow_obj.style.top = panePixel.x + 12 + 'px';
	arrow_obj.style.left = panePixel.y + 'px';
}

function HidePlaceMark()	{
	map.removeOverlay(arrow_marker);

	return;
	var arrow_obj = document.getElementById('landmark_marker');
	arrow_obj.style.visibility = 'hidden';
}
