/*
 * Funciones de la pantalla principal del mapa.
 *
 */

// Vars
var map;
var data;
var markers_a = [];

// Init default filters to actual datetime.
myDate = new Date();

var month=myDate.getMonth()+1;
if(month<10) month = '0' + month;

var day = myDate.getDate();
if(day<10) day = '0' + day;

var date_filter = myDate.getFullYear() + '' + month + '' + day;
var hour_filter = myDate.getHours();

if(hour_filter>=0 && hour_filter<=5) hour_filter="00-05";
else if(hour_filter>=6 && hour_filter<=11) hour_filter="06-11";
else if(hour_filter>=12 && hour_filter<=17) hour_filter="12-17";
else if(hour_filter>=18 && hour_filter<=23) hour_filter="18-23";

/*
 *  Main Function
 */
function GMload(ilat, ilon, izoom) {

    	if (GBrowserIsCompatible()) {    
      		map = new GMap2(document.getElementById("map"));
		map.setMapType(G_PHYSICAL_MAP);
		
		map.setUIToDefault(); // Elementos de interfaz : Zoom, cursores de navegacion, ...
      		
		map.setCenter(new GLatLng(ilat, ilon), izoom);
      	
		//Cargo los datos del  XML de las capitales de provincia a javascript
      		data = loadXML(null);
	
		// Filtro por defecto: Dia actual, intervalo horario acual
		drawMarkers(null,null);
	
		GEvent.addListener(map, 'zoomend', function(oldZoom, newZoom) {
			if(newZoom<=6){
				//Cargo los datos del  XML de las capitales de provincia a javascript
      				data = loadXML(null);
	
				// Filtro por defecto: Dia actual, intervalo horario acual
				drawMarkers(null,null);
			}
		});
    	}
}

function createMarker(point, name, id, prov_id, provincia, iconType, tmin, tmax, wind, prediction, sunrise, sunset) {
    
	var marker;

	// Icono
	var iconNode = new GIcon(); iconNode.image = 'img/pictos/ico_' + iconType + '.png';
     	iconNode.shadow = 'img/arrow_shadow.png'; iconNode.iconSize = new GSize(39,34); iconNode.shadowSize = new GSize(39,34);
     	iconNode.iconAnchor = new GPoint(11,32); iconNode.infoWindowAnchor = new GPoint(5,5);
	
	marker = new GMarker(point, {icon: iconNode, title: name});

	GEvent.addListener(marker, 'click', function() {
		
		var html = "<div style='color:black'><b>" + name + "</b><br /><br />";
		html += "<b>Tº min.:</b> " + tmin + "ºC <br />"
		html += "<b>Tº max.:</b> " + tmax + "ºC<br />";
		html += "<b>Vel. viento:</b> " + wind + " Km/h<br />";
		html += "<b>Predicci&oacute;n:</b> " + prediction + "<br /><br/>";
		html += "<a  href='javascript:zoomInOut(\"" + prov_id + "\");'><img src='img/lupa.png' border='0' title='Ampliar/Alejar'><br/>Ver provincia</a>";
		html += "</div>";	

		loadTableData(id, name, provincia);

		marker.openInfoWindowHtml(html); // Añado el bocadillo al marcador.
		
		$("#prevision_semanal").show(450);	
     	 	
   	});
 	return marker;
}

function zoomInOut(id){
    	if(map.getZoom() == 10){
		
		map.setZoom(6);
		
		//Cargo los datos del  XML de las capitales de provincia a javascript
      		data = loadXML(null);
		drawMarkers(null,null);
		
		//$("#prevision_semanal").slideToggle(); // Oculto la tabla de abajo
	}else{
		map.setZoom(10);
		
		//Cargo los datos del  XML de la provincia seleccionada
      		data = loadXML(id);
		drawMarkers(null,null);

		//$("#prevision_semanal").slideToggle();	
	}	
}

function loadXML(filter){
	if(filter!=null) filter='?filter=' + filter;
	else filter='';

    	var request = GXmlHttp.create();
    	request.open("GET", "scripts/phpsqlajax_genxml.php" + filter, false);
    	request.send(null);
    
    	var xml = request.responseXML;
    	var markers = xml.documentElement.getElementsByTagName("station");
    	
	var myArray = [];
	for (var i = 0; i < markers.length; i++) {
	
		var myArray2 = [];
		var myArray3 = [];
      		
		myArray2.push(markers[i].getAttribute("name"));
      		myArray2.push(markers[i].getAttribute("id"));
      		myArray2.push(markers[i].getAttribute("id_prov"));
      		myArray2.push(markers[i].getAttribute("provincia"));
      		myArray2.push(markers[i].getAttribute("timezone"));
      		myArray2.push(markers[i].getAttribute("sunrise"));
      		myArray2.push(markers[i].getAttribute("sunset"));
      		myArray2.push(new GLatLng(parseFloat(markers[i].getAttribute("lat")),
                              parseFloat(markers[i].getAttribute("lng"))));
      		
		for (var j = 0; j < markers[i].childNodes.length; j++) {
	      		
			var myArray4 = [];
			myArray4.push(markers[i].childNodes[j].getAttribute("id"));
			myArray4.push(markers[i].childNodes[j].getAttribute("date"));
			myArray4.push(markers[i].childNodes[j].getAttribute("hinterval"));
			myArray4.push(markers[i].childNodes[j].getAttribute("tmin"));
			myArray4.push(markers[i].childNodes[j].getAttribute("tmax"));
			myArray4.push(markers[i].childNodes[j].getAttribute("wind"));
			myArray4.push(markers[i].childNodes[j].getAttribute("picto-code"));
			myArray4.push(markers[i].childNodes[j].getAttribute("prediction"));
    		
			myArray3.push(myArray4);
		}

    		myArray2.push(myArray3);
    		myArray.push(myArray2);
    	}

	return myArray;
}

function loadTableData(id, name, provincia){

	myDate = new Date();

	var month=myDate.getMonth()+1;
	if(month<10) month = '0' + month;

	var day = myDate.getDate();
	if(day<10) day = '0' + day;

	var today = myDate.getFullYear() + '' + month + '' + day;
	
	$("#lugar").text(provincia+" >> "+name);

	for (var i = 0; i < data.length; i++) {
		if(data[i][1]==id){
			var index=0;
			for (var j = 0; j < data[i][8].length; j++) {
				var weather = data[i][8][j];
				if(weather[1]>=today && weather[2].substr(3,2)==hour_filter.substr(3,2)){
					var tmin=weather[3];
					var tmax=weather[4];
					var wind=weather[5];
					var type=weather[6];
					var prediction=weather[7];
				
					$("#picto_"+index).attr("src","img/pictos/ico_"+type+".png");
					$("#picto_"+index).attr("alt",prediction);
					$("#min_"+index).text(tmin);
					$("#max_"+index).text(tmax);
					$("#viento_"+index).text(wind);
					$("#pred_"+index).text(prediction);
					
					index++;

				}
			}
			break;
		}
	}
}


function is_numeric(input){
    return !isNaN(input);
}

function searchAddress(address){
	
	var geocoder = new GClientGeocoder();
	
	if(is_numeric(address)) address += ",spain";

	if (geocoder) {
        	geocoder.getLatLng(address, function(point) {
            		if (!point) {
              			alert("No se han encontrado resultados para " + address);
            		} else {
				
				// Posiciono el mapa en la busqueda
				map.setCenter(point, 11);

				// Cargo los datos del  XML de las capitales de provincia a javascript
      				data = loadXML(address);
	
				// Pinto los puntos de la provincia buscada
				drawMarkers(null,null);

				for(var i=0;i<markers_a.length;i++){
					if(markers_a[i].getTitle().toLowerCase()==address.toLowerCase()){
						GEvent.trigger(markers_a[i], "click");
						break;
					}	
				}
   			}
		});
	}
}

function drawMarkers(dfilter, hfilter){
	
        map.clearOverlays();
	markers_a = [];
	var k = 0;

	if(dfilter != null) date_filter = dfilter;
	if(hfilter != null) hour_filter = hfilter;
	for (var i = 0; i < data.length; i++) {
		for (var j = 0; j < data[i][8].length; j++) {
			var weather = data[i][8][j];
			//console.log("a:"+weather[1] +"|b:"+date_filter);
			if(weather[1]==date_filter && weather[2]==hour_filter){
				var tmin=weather[3];
				var tmax=weather[4];
				var wind=weather[5];
				var type=weather[6];
				var prediction=weather[7];
				// createMarker(point, name, id, prov_id, provincia, type, tmin, tmax, wind, prediction, sunrise, sunset);
				var marker = createMarker(data[i][7], data[i][0], data[i][1], data[i][2], data[i][3], type, tmin, tmax, wind, prediction, data[i][5], data[i][6]);
      		
				map.addOverlay(marker);
				
				markers_a[k++] = marker;
				break;
			}
		}
	}
}
