// JavaScript Document
var expdata = new Object();
var markers = new Array;
var markers_overlay = new Array;

var activeListItem = null;
var map = null;
var icon = null;
var iconb = null;


function init() {
	
	var map_type_test = new Array;
	
	map = new GMap2(document.getElementById("map"));
	
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.setCenter(new GLatLng(0,0),0);
	
	
	// COntrollo per capire quale mappa è disponibile
	map_type_test = map.getMapTypes();
	
	
	//map_type_test[2]
	// 0 = vett, 1= sat, 2 = hibr		
	if (map_type_test[0]) {
   	map.setMapType(map_type_test[0]);
	} else {
		map.setMapType(map_type_test[1]);
	}
	
//	map.setMapType(map_type_test[2]);
	
	//http://www.hotelexpert.it/images/icon-hotel-map.png
	//http://www.yourwaytochianciano/google/icon-hotel-map.png
	
	icon = new GIcon();
	icon.image = "http://www.yourwaytochianciano.com/google/icon-hotel-map.png";
	icon.shadow = "http://www.yourwaytochianciano.com/google/icon-hotel-map.png";
	icon.iconSize = new GSize(18, 26);
	icon.shadowSize = new GSize(18, 26);
	icon.iconAnchor = new GPoint(6, 1);
	icon.infoWindowAnchor = new GPoint(5, 1);
	
	
	iconb = new GIcon();
	iconb.image = "http://www.yourwaytochianciano.com/google/icon-hotel-map-on.png";
	iconb.shadow = "http://www.yourwaytochianciano.com/google/icon-hotel-map-on.png";
	iconb.iconSize = new GSize(18, 26);
	iconb.shadowSize = new GSize(18, 26);
	iconb.iconAnchor = new GPoint(6, 1);
	iconb.infoWindowAnchor = new GPoint(5, 1);
	

	
	
	GEvent.addListener(map, "zoom", function() {
	  map.closeInfoWindow();
	});
	
	
	// make the AJAX request
	var request = GXmlHttp.create(); 
	request.open("GET", "/google/proxy.php?url=http://www.yourwaytotuscany.com/search-ywtc-google.php", true);
	request.onreadystatechange = function() { 
		if (request.readyState == 4) { 
			expdata.search = eval(request.responseText);
			if (typeof(expdata.search) == 'number') {
				// error handling
				 displayError(expdata.search);
			} else {
				displayItems(expdata.search);
			}
		} 
	}; 
	request.send(null); 
	
	
	
}



function displayError(code) {

	switch(code) {
	case 0:
	  // no results
	  document.getElementById('listahotel').innerHTML = 'Destinazione non esistente';
	  break;

	default:
	  document.getElementById('listahotel').innerHTML = 'Qualcosa non va ?!? ';
	  break;
	  
	}
}


function displayItems(data) {
	mapItems(data);
	showResults(data);
}




// calcoliamo il livello di zoom
function mapItems(data) {
	
	var xMax = data[0][1];
	var xMin = data[0][1];
	var yMax = data[0][2];
	var yMin = data[0][2];

	// Elimianamo qualsiasi ricerca precedente
	map.clearOverlays();
	var bounds = new GLatLngBounds();
	
	// alert(data.length);
	
	for (var i = 0; i < data.length; i++) {
	  //alert(i);
	var point = new GLatLng(data[i][2], data[i][1]);
	var marker = createMarker(point, data[i],icon);
	var marker_overlay = createMarker(point, data[i],iconb);
	
	  
	  markers[data[i][0]] = marker;
	  markers_overlay[data[i][0]] = marker_overlay;
	  
	  map.addOverlay(marker);
	  
	  //Estendi i bordi della mappa
	  bounds.extend(point);

	 
	}
	
	
	


	//map.setCenter(new GLatLng(data[0][2],data[0][1]), 13);
	
  // zoomma e centra
	map.setZoom(map.getBoundsZoomLevel(bounds));	
	
	var clat = (bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) /2;
	var clng = (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) /2;
	map.setCenter(new GLatLng(clat,clng));
	
	
}

function showResults(data) {
	var html = '<div id="sortit"><form style="margin: 0px;">';
	html += '<select onChange="return sortResults(this.options[this.selectedIndex].value);" name="select4">';
	html += '<option value="Nome">Nome</option>';
	//html += '<option value="Prezzo">Prezzo</option>';
	html += '<option value="Stelle">Stelle</option>';
	html += '</select></form></div>';
	
	var results = document.getElementById("sortbarlist");
	results.innerHTML = html;

	var html_hotel = '<div id="listahoteltbs">' + makeResultsTable(data) + '</div>';

	//html_hotel += '<div id="footerlistahotel">Clicca per localizzare l\'hotel sulla mappa</div><br>';

	var results = document.getElementById("listahotel");
	results.innerHTML = html_hotel;
}


function sortResults(order) {
	switch(order) {
	case 'Gradimento':
		expdata.search.sort(function (a,b) { return a[0].toString().replace(/[^0-9]/g,'') - b[0].toString().replace(/[^0-9]/g,''); });
		break;
	case 'Nome':
		expdata.search.sort(function (a,b) { if (a[3] < b[3]) {return -1} else if (a[3] > b[3]) {return 1} else {return 0} });
		break;
	case 'Prezzo':
		expdata.search.sort(function (a,b) { return a[12].toString().replace(/[^0-9]/g,'') - b[12].toString().replace(/[^0-9]/g,''); });
		break;
	case 'Stelle':
		expdata.search.sort(function (a,b) { return a[12].toString().replace(/[^0-9]/g,'') - b[12].toString().replace(/[^0-9]/g,''); });
		break;

	default:
		expdata.search.sort();
	}

	var html = makeResultsTable(expdata.search);
	var listresults = document.getElementById("listahoteltbs");
	listresults.innerHTML = html;
}


function makeResultsTable(data) {
	var html = '';
	for (var i = 0; i < data.length; i++) {
		html += makeResultsRow(data[i]);
	}
	html += '';

	return html;
}

function makeResultsRow(i) {
	var row  = '';
	
	row += '<table width=100% align=center cellpadding=1><td align=center><table border="0" bgcolor="#f2f2f2" cellspacing="0" cellpadding="0" onclick="mostraHotel(' + i[0] + ');" onmouseover="mymouseover(' + i[0] + ',' + i[1] + ',' + i[2] + ');" onmouseout="mymouseout(' + i[0] + ');">';
	//row += '<tr ><td width="70">'+i[14] +'</td>';
	row += '<tr><td valign="top" nowrap><strong>'+ i[3] +'</strong><td align=right>'+ i[13] +'</td></tr>';
	row += '<tr><td valign=top colspan=2>'+i[7]+'</td></tr>';
	row += '<tr><td valign=top colspan=2>'+i[4]+' '+i[5]+' '+i[6]+'</td></tr>';
	row += '</table></td></table><br>';
	

	//row += '<table border="0" cellspacing="0" cellpadding="2" class="table" onclick="mostraHotel(' + i[0] + ');" onmouseover="this.className=\'table_hover\';mymouseover(' + i[0] + ',' + i[1] + ',' + i[2] + ');" onmouseout="this.className=\'table\';mymouseout(' + i[0] + ');">';
	//row += '<tr ><td width="70"><img src="'+ i[9] +'" alt="' + i[4] +'" width="70" height="70" border="0"/></td>';
	//row += '<td valign="top"><strong>'+ i[4] +'</strong><br /><img hspace="2" src="'+ i[7] +'" alt="'+ i[13] +' stelle" border="0" /> <br />'+ i[6] +' <br />';
	//row += '<em style=" line-height:20px">Da <strong>€ '+ i[12] + '</strong> per notte</em>';
	//row += '</td></tr></table>';
	//row += '<TABLE cellSpacing="0" cellPadding="0" width="98%" border=0><TR><td width="1">'+i[14]+'</td><TD style="line-height: 170%;"><B><FONT COLOR="#004080" size="2">'+i[3]+'&nbsp;&nbsp; '+i[13]+'</FONT></B><BR>'+i[4]+' '+i[5]+' '+i[6]+' - '+i[7]+'<br>Tel: '+i[8]+'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Fax: '+i[9]+'<br><u>E-mail:</u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'+i[10]+'<br><u>Web:</u>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<b><a href="'+i[11]+'" onmousedown="return clk(this)" target="_blank">'+i[11]+'</a></b></td></tr></table>';
	
return row;
}

function mostraHotel(id) {
	GEvent.trigger(markers[id], "click");
	activeListItem = id;
	//map.centerAndZoom('12.4879','41.9069','5');
}


function mymouseover(id,lon,lat) {
		map.removeOverlay(markers[id]);
        	map.addOverlay(markers_overlay[id]);
		map.panTo(new GLatLng(lat,lon));
}

function mymouseout(id) {
	   		map.removeOverlay(markers_overlay[id]);
		        map.addOverlay(markers[id]);
}

function createMarker(point, i, icon) {
	var marker = new GMarker(point,icon); 
	GEvent.addListener(marker, "click", function() { 
		var html = '';
		
		//html += '<table cellpadding="0" cellspacing="1" border="0" width="200" bgcolor="#fffbec" style="border 1px solid #f1efe8"><tr><td width="70" valign="top"><a rel="nofollow" target="_blank" href="' + i[14] + '"><img width="70" height="70" src="' + i[9] + '" border="0" alt="' + i[4] + '"></a></td><td bgcolor="#ffffff" align="center" width="127"><table cellpadding="0" cellspacing="0" border="0" width="95%" height="100%"><tr><td height="50" align="center" valign="middle" style="font-size:9px;"><span style="margin-top:10px"><a  rel="nofollow" target="_blank" href="' + i[14] + '">' + i[4] +' </a></span><br /><img src="' + i[7] + '" vspace="2"></td></tr><tr><td height="12" valign="bottom" align="center" style="border-top:1px solid #cc0000"><a rel="nofollow" target="_blank" href="' + i[14] + '"><b>PREZZO:&#8364; ' + i[12] + '</b></a></td></tr></table></td></tr></table>';
		//html +='<table border="0" width="220" cellpadding="4" cellspacing="0" class="table"><tr><td align="center"><center><a  rel="nofollow"  target="_blank" href="' + i[14] + '"><img width="70" height="70" src="' + i[9] + '" border="0" alt="' + i[4] + '"></a></center><a  rel="nofollow" target="_blank" href="' + i[14] + '">' + i[4] +' </a><br /><img src="' + i[7] + '" vspace="2"><br />            <div class="popup_details" align="left">' + i[15] +  '<br>Prezzo per notte da: ' + i[12] + ' &euro;</div></td></tr></table>';
		html +='<TABLE cellSpacing="0" cellPadding="0" width="250" border=0><TR><td width="1">'+i[14]+'</td><TD style="line-height: 170%;" nowrap><B><FONT COLOR="#004080" size="2">'+i[3]+'&nbsp; '+i[13]+'</FONT></B><BR>'+i[7]+'<br>'+i[4]+' '+i[5]+' '+i[6]+'<br>Tel: '+i[8]+'&nbsp;&nbsp;Fax: '+i[9]+'<br><u>Email:</u>&nbsp;&nbsp;'+i[10]+'<br><u>Web:</u>&nbsp;&nbsp;&nbsp;<b><a href="'+i[11]+'" onmousedown="return clk(this)" target="_blank">'+i[11]+'</a></b></td></tr></table>';
		//alert(html);
		marker.openInfoWindowHtml(html); 
		
		
	}); 
	
	return marker; 

} 



// from http://groups.google.com/group/Google-Maps-API/browse_frm/thread/4cedb228f3a86ea0/
GMap.prototype.centerAndZoomOnBounds = function(bounds) { 
	var span = new GSize(bounds.maxX - bounds.minX, bounds.maxY - bounds.minY); 
	var center = new GPoint(bounds.minX + span.width / 2., bounds.minY + span.height / 2.); 
	var newZoom = this.spec.getLowestZoomLevel(center, span, this.viewSize); 
	if (newZoom < 3) { newZoom = 3};
	if (this.getZoomLevel() != newZoom) { 
		this.centerAndZoom(center, newZoom); 
	} else { 
		this.recenterOrPanToLatLng(center); 
	} 
} 

