﻿var map;
var mainView = new google.maps.LatLng(52.06937709602394, 20.8355712890625);
var markersArray = [];

function HomeControl(controlDiv, map) {
  controlDiv.style.padding = '5px';

  var controlUI = document.createElement('DIV');
  controlUI.style.backgroundColor = 'white';
  controlUI.style.borderStyle = 'solid';
  controlUI.style.borderWidth = '2px';
  controlUI.style.cursor = 'pointer';
  controlUI.style.textAlign = 'center';
  controlUI.title = 'Kliknij aby ustawić mapę'
  controlDiv.appendChild(controlUI);

  var controlText = document.createElement('DIV');
  controlText.style.fontFamily = 'Arial,sans-serif';
  controlText.style.fontSize = '12px';
  controlText.style.paddingLeft = '4px';
  controlText.style.paddingRight = '4px';
  controlText.style.fontWeight = 'bold';
  controlText.innerHTML = 'Wróć';
  controlUI.appendChild(controlText);

  google.maps.event.addDomListener(controlUI, 'click', function() {
    map.setCenter(mainView),
	map.setZoom(7)
  });
}

function initialize() {
	var mapDiv = document.getElementById('map_canvas');
	var myOptions = {
		zoom: 7,
		center: mainView,
		mapTypeControl: true,
		mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU},
		navigationControl: true,
		navigationControlOptions: {style: google.maps.NavigationControlStyle.SMALL},
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};
    
	map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
	
	var homeControlDiv = document.createElement('DIV');
	var homeControl = new HomeControl(homeControlDiv, map);
	homeControlDiv.index = 1;
	map.controls[google.maps.ControlPosition.TOP_RIGHT].push(homeControlDiv);
	
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
	}
	else {// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	
	var php_parID = location.href;//<?php echo $_GET['par']; ?>;
	var equal_sign = php_parID.indexOf('=');
	var curr_parID = php_parID.substring(equal_sign+1, php_parID.length);
	xmlhttp.open('GET','stc_'+curr_parID+'.xml',false);
	xmlhttp.send();
	
	//var shadow = new google.maps.MarkerImage('uploads/map_icons/shadow.png',
     // new google.maps.Size(40, 20),
    //  new google.maps.Point(0, 0),
     // new google.maps.Point(0, 14));

	var root = xmlhttp.responseXML.getElementsByTagName("data");
	var stations = root[0].getElementsByTagName("station");
	var rlen = root[0].getElementsByTagName("station").length;
		for (iS=0; iS<root[0].getElementsByTagName("station").length; iS++) {
			var siteIDNode = stations[iS].getElementsByTagName("site_id");
			var siteID = siteIDNode[0].firstChild.nodeValue;
			var latNode = stations[iS].getElementsByTagName("lat");
			var lat = latNode[0].firstChild.nodeValue;
			var longitNode = stations[iS].getElementsByTagName("long");
			var longit = longitNode[0].firstChild.nodeValue;
			var latlong = new google.maps.LatLng(lat,longit);
			var statNode = stations[iS].getElementsByTagName("name");
			var statname = statNode[0].firstChild.nodeValue;
			var pm10lvlNode = stations[iS].getElementsByTagName("lvl");
			var pm10lvl = pm10lvlNode[0].firstChild.nodeValue;
			var lvlNode = stations[iS].getElementsByTagName("lvl_val");
			if (lvlNode[0].hasChildNodes()) {
				var lvl = lvlNode[0].firstChild.nodeValue;
			} else {
				var lvl = '';
			};
			var paramNode = stations[iS].getElementsByTagName("par");
			var param = paramNode[0].firstChild.nodeValue;
			var param_nNode = stations[iS].getElementsByTagName("par_n");
			var param_n = param_nNode[0].firstChild.nodeValue;
			var param_IDNode = stations[iS].getElementsByTagName("par_id");
			var param_ID = param_IDNode[0].firstChild.nodeValue;
			var lnameNode = stations[iS].getElementsByTagName("lname");
			var lname = lnameNode[0].firstChild.nodeValue;
			var unitNode = stations[iS].getElementsByTagName("par_unit");
			var unit = unitNode[0].firstChild.nodeValue;
			var unitdecNode = stations[iS].getElementsByTagName("par_unit_dec");
			var unitdec = unitdecNode[0].firstChild.nodeValue;
			var image = pickMarker(pm10lvl.charAt(2), pm10lvl.charAt(0));
			//if (image!='') {
			//	shadow = shadow;
			//} else {
			//	shadow = '';
			//};
			var marker = new google.maps.Marker({
				position: latlong,
				flat: true,
				//shadow: shadow,
				icon: image,
				title:statname
			});
			
			marker.setMap(map);  
			markersArray.push(marker);
			
			var currentDate = new Date();
			var month = currentDate.getMonth() + 1;
			if (month<10) {
				month = '0'+month;
			};
			var day = currentDate.getDate();
			if (day<10) {
				day = '0'+day;
			};

			var datetimeNode = stations[iS].getElementsByTagName("datetime");
			var datetime = datetimeNode[0].firstChild.nodeValue;
			if (datetime!='') {
				datetime = datetime;
			} else {
				datetime = '';
			};

			var year = currentDate.getFullYear();
			var wykres = passChartData(param_ID, siteID, param, lname, unitdec);
			var col = pickColour(pm10lvl.charAt(2));
			/*var descNode = stations[iS].getElementsByTagName("desc");*/
			var desc = '<center><table cellpadding="5" cellspacing="0" style="width:400px">'+
			'<tr align="center" style="font-weight:bold;"><th style="border-bottom: 1px solid #000000; border-right: 1px solid #000000">Wartość ['+unit+']</th> <th style="border-bottom: 1px solid #000000; border-right: 1px solid #000000">Poziom</th> <th style="border-bottom: 1px solid #000000; border-right: 1px solid #000000">Parametr</th> <th style="border-bottom: 1px solid #000000">Data i godzina</th></tr>'+
			'<tr><td align="center" style="font-weight:bold; font-size:12px;background-color:'+col+';border-right: 1px solid #000000">'+lvl+'</td>'+
			'<td align="center" style="font-weight:bold; font-size:12px;background-color:'+col+';border-right: 1px solid #000000">'+param_n+'</td>'+
			'<td align="center" style="border-right: 1px solid #000000">'+param+'</td><td align="center">'+datetime+'</td></tr>'+
			'</table></center>'+
			'<br /><br />'+
			'<img src="'+wykres+'" alt="wykres" width="640" height="170" />'+
			'<br /><br />'+
			'<h1>Więcej informacji</h1>'+
			'» <a href="?page=raport-godzinowy&data='+day+'-'+month+'-'+year+'&site_id='+siteID+'&csq_id=1414&dane=w2">Raport godzinowy</a><br />'+
			'» <a href="?page=opisy-stacji&t=1&site_id='+siteID+'">Opis stacji</a>';
			/*descNode[0].firstChild.nodeValue;*/
			
			var descDiv = '<div style="height:300px; overflow:auto;"><div style="padding:5px; font-size:15px; font-weight:bold;">' + statname + '</div>'
			+ '<div style="padding:5px;font-size:12px;">' + desc + '</div></div>';
			
			attachMessages(map, marker, descDiv, latlong, siteID);
		}
		
	
	var regionCoords = loadCoords(); 
  
	bermudaTriangle = new google.maps.Polygon({
		clickable: false,
		paths: regionCoords,
		strokeColor: "#FF0000",
		strokeOpacity: 0.5,
		strokeWeight: 2,
		fillColor: "#FF0000",
		fillOpacity: 0
	});

  bermudaTriangle.setMap(map);
}

function removeSpecificMarker(el) {
	if (!document.getElementById(el+"1").checked) {
		if (markersArray) {
			for (i in markersArray) {
				var icon = markersArray[i].getIcon();
				var splitIcon = icon.split('/');
				if (splitIcon[2].charAt(0) == el) {
					markersArray[i].setMap(null);
				}
			}
		}
	} else {
		if (markersArray) {
			for (i in markersArray) {
				var icon = markersArray[i].getIcon();
				var splitIcon = icon.split('/');
				if (splitIcon[2].charAt(0) == el) {
					markersArray[i].setMap(map);
				}
			}
		}
	}
}

function passChartData(param_ID, siteID, sname, name, unit) {
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
	}
	else {// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.open('GET','dane_'+siteID+'.xml',false);
	xmlhttp.send();
	var root = xmlhttp.responseXML.getElementsByTagName("data");
	//alert("here");
	var params = root[0].getElementsByTagName("param");
		for (iC=0; iC<root[0].getElementsByTagName("param").length; iC++) {
			var parIDNode = params[iC].getElementsByTagName("id");
			var parID = parIDNode[0].firstChild.nodeValue;
			if (parID == param_ID) {
				var daneNode = params[iC].getElementsByTagName("dane");
				var dane = daneNode[0].firstChild.nodeValue;
			}
		}
	return "wykresy.php?name="+name+"&id="+parID+"&dane="+dane+"&unit="+unit;
}

function fill24(hStart, hEnd) {
	var h = hStart+':00';
	var i = 1;
	while (hStart<24) {
		hStart = ++hStart;
		h = h+','+hStart+':00';
	}
	while (i<=hEnd) {
		if (i<10) {
			var iAdd = '0'+i;
		} else {
			var iAdd = i;
		};
		h = h+','+iAdd+':00';
		i = ++i;
	}
	return h;
}

function loadCoords() {
	if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
	}
	else {// code for IE6, IE5
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	xmlhttp.open('GET','mazowieckie.xml',false);
	xmlhttp.send();
	var myPoints=new Array();
	var root = xmlhttp.responseXML.getElementsByTagName("data");
	var stations = root[0].getElementsByTagName("point");
	var rlen = root[0].getElementsByTagName("point").length;
		for (iS=0; iS<root[0].getElementsByTagName("point").length; iS++) {
			var latNode = stations[iS].getElementsByTagName("lat");
			var lat = latNode[0].firstChild.nodeValue;
			var longitNode = stations[iS].getElementsByTagName("longit");
			var longit = longitNode[0].firstChild.nodeValue;
			var latlong = new google.maps.LatLng(lat,longit);
			myPoints[iS] = latlong;
		}
	return myPoints;
}

function pickMarker(lvl, type) {
	switch(lvl) {
			case '1':
				return 'uploads/map_icons/'+type+'_1.png';
				break;
			case '2':
				return 'uploads/map_icons/'+type+'_2.png';
				break;
			case '3':
				return 'uploads/map_icons/'+type+'_3.png';
				break;
			case '4':
				return 'uploads/map_icons/'+type+'_4.png';
				break;
			case '5':
				return 'uploads/map_icons/'+type+'_5.png';
				break;
			case '6':
				return 'uploads/map_icons/'+type+'_6.png';
				break;
			case '8':
				return 'uploads/map_icons/'+type+'_8.png';
				break;
			case '0':
				return 'uploads/map_icons/'+type+'_0.png';
				break;
			default:
				return '';
			}
}

function pickColour(lvl) {
	switch(lvl) {
			case '1':
				return '#00ccff';
				break;
			case '2':
				return '#00e400';
				break;
			case '3':
				return '#ffff00';
				break;
			case '4':
				return '#ff7e00';
				break;
			case '5':
				return '#ff0000';
				break;
			case '6':
				return '#7e0023';
				break;
			case '8':
				return '#777777';
				break;
			case '0':
				return '#ffffff';
				break;
			default:
				return '#ffffff';
			}
}

function attachMessages(map, marker, desc, latlong, siteID) {

	google.maps.event.addListener(marker, 'click', function() {
				var infowindow = new google.maps.InfoWindow({
					position: latlong,
					map: map,
					maxWidth:500,
					content: desc
				});
				infowindow.close();
				infowindow.open(map, marker);
	});
	
	google.maps.event.addListener(marker, 'dblclick', function() {
				infowindow.close();
				window.location = '?page=opisy-stacji&t=1&site_id='+siteID;
	});
}
