var map, layerResultsPin, layerPin, layerPark, layerSponsoredPin;
var pinPoints = new Array();
var poiPin = new Array();
var poiPark = new Array();

function mapReady() { 
	var myOptions = {
		zoom: 7,
		key: "8d962196-567e-449c-bdad-6959e57a68d5"
	};
	map = new tomtom.maps.Map(document.getElementById("maparea"), myOptions);
	
	if (typeof(xpos) != "undefined" && xpos != 0 && 
			typeof(ypos) != "undefined" && ypos != 0) {
		(typeof(zoomLevel) == "undefined" || zoomLevel == 0)?zoomLevel=17:null;
		map.setCenter(new tomtom.maps.LatLng(ypos, xpos), zoomLevel);
	}
	
	layerResultsPin = new tomtom.maps.Layer();
	layerSponsoredPin = new tomtom.maps.Layer();
	
	uncheckPoiOptions();
   	loadMapContent();
   	loadPoiEvents();
}
function uncheckPoiOptions() {
	try{
		$("#poi_pin").attr("checked", false);
		$("#poi_park").attr("checked", false);
	} catch(e){}
}
function loadPoiEvents() {
	$("#poi_pin, #poi_park").click(function() {
		var lonLatCenter = map.getCenter();

		if ($(this).is(":checked")) {
			if ($(this).attr("id") == "poi_pin") {
				enablePoiPin();
				jQuery.getScript("/poi?type=ATM&lat="+lonLatCenter.lat+"&long="+lonLatCenter.lng);
			} else {
				enablePoiPark();
				jQuery.getScript("/poi?type=PARK&lat="+lonLatCenter.lat+"&long="+lonLatCenter.lng);
			}
		} else {
			if ($(this).attr("id") == "poi_pin") {
				disablePoiPin();
			} else {
				disablePoiPark();
			}
		}
		$(this).toggleClass("item_on");
	});
}
function enablePoiPin() {
    layerPin = new tomtom.maps.Layer();
    layerPin.addEvent("click", function(event) {
		if (!event)
		{
			event = window.event;
		}
		var obj = event.target ? event.target : event.srcElement;
		for(var i in layerPin.markers){
			if(layerPin.markers[i].image==obj){
				$.ajax({
					url: "/poiDetail?id="+layerPin.markers[i].id,
					success: function(data){
						window.location=data;
					}
				});
			}
		}
    });
    layerPin.addEvent("mouseover", function(event) {
		if (!event)
		{
			event = window.event;
		}
		var obj = event.target ? event.target : event.srcElement;
		var position = $(obj).position();
		for (var i in layerPin.markers) {
			if(layerPin.markers[i].image==obj){
				$("#mapBalloonContent").append(layerPin.markers[i].desc);
				$(".colorTip").show();
				$(".colorTip").css("top",  (position.top-($(".colorTip").height()+20))+ "px");
				$(".colorTip").css("left", (position.left-($(".colorTip").width()/2)+10) + "px");
			}
		}
	});
    layerPin.addEvent("mouseout", function(event) {
		if (!event)
		{
			event = window.event;
		}
		var obj = event.target ? event.target : event.srcElement;
		for (var i in layerPin.markers) {
			if(layerPin.markers[i].image==obj){
				$("#mapBalloonContent").html("");
				$(".colorTip").hide();
			}
		}
	});
	map.addLayer(layerPin);
}
function enablePoiPark() {
    layerPark = new tomtom.maps.Layer();
    layerPark.addEvent("click", function(event) {
		if (!event)
		{
			event = window.event;
		}
		var obj = event.target ? event.target : event.srcElement;
		for (var i in layerPark.markers) {
			if(layerPark.markers[i].image==obj){
				$.ajax({
					url: "/poiDetail?id="+layerPark.markers[i].id,
					success: function(data){
						window.location=data;
					}
				});
			}
		}
	});
    layerPark.addEvent("mouseover", function(event) {
		if (!event)
		{
			event = window.event;
		}
		var obj = event.target ? event.target : event.srcElement;
		var position = $(obj).position();
		for (var i in layerPark.markers) {
			if(layerPark.markers[i].image==obj){
				$("#mapBalloonContent").append(layerPark.markers[i].desc);
				$(".colorTip").show();
				$(".colorTip").css("top",  (position.top-($(".colorTip").height()+20))+ "px");
				$(".colorTip").css("left", (position.left-($(".colorTip").width()/2)+10) + "px");
			}
		}
	});
    layerPark.addEvent("mouseout", function(event) {
		if (!event)
		{
			event = window.event;
		}
		var obj = event.target ? event.target : event.srcElement;
		for (var i in layerPark.markers) {
			if(layerPark.markers[i].image==obj){
				$("#mapBalloonContent").html("");
				$(".colorTip").hide();
			}
		}
	});
	map.addLayer(layerPark);
}
function addPoi(nr, type, desc, lon, lat, id){
	if (type == 'atm') {
		poiPin[nr-1] = new tomtom.maps.Marker(
				new tomtom.maps.LatLng(lat, lon), 
				"/img/poi_" + type + ".png", 
				new tomtom.maps.Size(30, 24));
		
		poiPin[nr-1].id=id;
		poiPin[nr-1].desc=desc;
		layerPin.addMarker(poiPin[nr-1]);
		layerPin.update();
	} else {
		poiPark[nr-1] = new tomtom.maps.Marker(
				new tomtom.maps.LatLng(lat, lon), 
				"/img/poi_" + type + ".png", 
				new tomtom.maps.Size(21, 23),
				tomtom.maps.Marker.ALIGN_CENTER);
		
		poiPark[nr-1].id=id;
		poiPark[nr-1].desc=desc;
		layerPark.addMarker(poiPark[nr-1]);
		layerPark.update();
	}
}
function disablePoiPin() {
	map.removeLayer(layerPin);
}
function disablePoiPark() {
	map.removeLayer(layerPark);
}
function getMapImageOffset(url) {
	var loc = new Array(2);
	$("#maparea img").each(function(i) {
		if($(this).attr("src") != null && $(this).attr("src").indexOf(url) > -1) { 
			loc[0] = $(this).offset().top;
			loc[1] = $(this).offset().left; 		
			return loc;
		}
	});
	return loc;
}
function addLocation(myNr, myLong, myLat){
	if (myLong != null && myLat != null) {
		
		var marker = null;

//		if (myNr < 1000) {
			marker = new tomtom.maps.Marker(
					new tomtom.maps.LatLng(myLat, myLong), 
					"/img/nrs/nr_" + myNr + ".png", 
					new tomtom.maps.Size(25, 33));
//		} else {
//			marker = new tomtom.maps.Marker(
//					new tomtom.maps.LatLng(myLat, myLong), 
//					"/img/nrs/nr_" + myNr + ".png", 
//					new tomtom.maps.Size(25, 25), 
//					tomtom.maps.Marker.ALIGN_CENTER);
//		}
 		pinPoints[myNr] = marker;
	}
}
function addIconsToMap(){
	if(pinPoints.length>0){
		for(var i = pinPoints.length-1; i >= 0; i--) {
			if (pinPoints[i] != null) {
				if (i < 1000) { 
					layerResultsPin.addMarker(pinPoints[i]);
				} else {
					layerSponsoredPin.addMarker(pinPoints[i]);
				}
			}
		}
	}
}
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
