﻿var palstoja = 3;
var effects = [];
var dur = 200;
function pageLoaded() {
    
    if (self.GUnload) {
        var isMSIE = /*@cc_on!@*/false;
        if (endsWith(window.location.href, '/matkalaukku/')) {
            if (isMSIE) addEvent(window, "load", loadMap);
            else loadMap();
        }
        else if (endsWith(window.location.href, '/matkalaukku/lumiloma/')) {
            if (isMSIE) addEvent(window, "load", loadSkiMap);
            else loadSkiMap();
        }
        else if (endsWith(window.location.href, '/matkalaukku/kylpylaloma/')) {
            if (isMSIE) addEvent(window, "load", loadBathMap);
            else loadBathMap();
        }
        addEvent(window, "unload", GUnload);
    }
    
    setDefaultFieldValue("vpsearchq", "Hae kohteita");
    
    if (!document.getElementById || !$("more-destinations"))
        return;
    
    if ($("more-destinations")) {
        addEvent($("more-destinations"), "click", function(e){
            for (var i = 0; i < palstoja; i++) {
                if (effects[i]) effects[i].toggle();
            }
            e.stopPropagation();
            e.preventDefault();
            return false;
        });
        
        var palsta;
        for (var i = 1; i <= palstoja; i++) {
            palsta = getElementsByClassName("palsta" + i + " tohide", "*", document)[0];
            if (!palsta) return;
            effects[i - 1] = new fx.Height(palsta, {duration: dur, onComplete: function() {} });
            effects[i - 1].hide();
        }
        
        if ($("more-destinations-bottom")) {
            addEvent($("more-destinations-bottom"), "click", function(e){
                for (var i = 0; i < palstoja; i++) {
                    if (effects[i]) {
                        effects[i].hide(); effects[i].toggle();
                    }
                }
            });
        }
    }
}

function endsWith(s, ends) {
    if (ends.lenght > s.length) return false;

    if (s.substring(s.length - ends.length) == ends)
        return true;
    
    return false;
}

var map;
var markers1 = [];
var markers2 = [];
function loadMap() {
  if (GBrowserIsCompatible()) {
	var mapElement = document.getElementById("map");
	if (!mapElement) {
		setTimeout('loadMap()', 100);
		return;
	}
	if (!map) {
		initMap(mapElement);
	}
	
	map.setCenter(new GLatLng(25.0,9.667969), 1);
	
	setMarkers(mapdata1,true,markers1);
	setMarkers(mapdata2,false,markers2);
	
	GEvent.addListener(map, "zoomend", function(oldZ,newZ) { if (newZ > 2) showMarkers(2); else showMarkers(1); });
	
	map.setMapType(G_NORMAL_MAP);
  }
}

function loadSkiMap() {
  if (GBrowserIsCompatible()) {
	var mapElement = document.getElementById("map");
	if (!mapElement) {
		setTimeout('loadSkiMap()', 100);
		return;
	}
	if (!map) {
		initMap(mapElement);
	}
	
	map.setCenter(new GLatLng(65.8,25.4), 5);
	setBubbles(skimapdata);
	
	map.setMapType(G_NORMAL_MAP);
  }
}

function loadBathMap() {
  if (GBrowserIsCompatible()) {
	var mapElement = document.getElementById("map");
	if (!mapElement) {
		setTimeout('loadBathMap()', 100);
		return;
	}
	if (!map) {
		initMap(mapElement);
	}
	
	map.setCenter(new GLatLng(65.8,25.4), 5);
	setBubbles(bathmapdata);
	
	map.setMapType(G_NORMAL_MAP);
  }
}

function setBubbles(mapdata) {
    var baseIcon = new GIcon();
    baseIcon.iconSize = new GSize(91, 33);
    baseIcon.iconAnchor = new GPoint(45, 16);
    
    for (var i = 0; i < mapdata[0].length; i++) {
		var center = new GLatLng(mapdata[0][i],mapdata[1][i]);
		var marker = new GMarker(center, {title: mapdata[3][i]});
        
        if (mapdata.length > 5)
            addMarkerEvent(marker, i);
        else
            addMarkerHref(marker, i, mapdata);
        
        map.addOverlay(marker);
    }
}

function isdefined(variable)
{
    return (typeof(eval(object)[variable]) != 'undefined');
}

function addMarkerEvent(marker, i) {
    GEvent.addListener(marker, "click", function() {
        marker.openInfoWindowHtml('<p style="background:#fff"><strong><a href="' + skimapdata[4][i] + '">' + skimapdata[3][i] + '</a></strong><br>' + skimapdata[5][i] + '<br><a href="' + skimapdata[4][i] + '">Lue kohteesta tarkemmin</a></p>');
    });
}

function addMarkerHref(marker, i, mapdata) {
    marker.ahref = mapdata[4][i];
    GEvent.addListener(marker, "click", function() {
        window.location.href=this.ahref;
    });
}

function setMarkers(mapdata, visible, markers) {
    var baseIcon = new GIcon();
    baseIcon.iconSize = new GSize(91, 33);
    baseIcon.iconAnchor = new GPoint(45, 16);
		
    for (var i = 0; i < mapdata[0].length; i++) {
		var center = new GLatLng(mapdata[0][i],mapdata[1][i]);
		var marker;		
		
		if (mapdata==mapdata1) {
		    var mIcon = new GIcon(baseIcon);
		    mIcon.image = mapdata[5][i];
		    mIcon.shadow = null;
  		    var markerOptions = {icon:mIcon, title: mapdata[3][i]};
		    marker = new GMarker(center, markerOptions);
		    
		    GEvent.addListener(marker, "click", function() {
                map.setCenter(this.getPoint(), 3);
            });
		} else {
		    marker = new GMarker(center, {title: mapdata[3][i]});
		    marker.ahref = mapdata[4][i];
            GEvent.addListener(marker, "click", function() {
                window.location.href=this.ahref;
            });
       }
        
        map.addOverlay(marker);
        if (!visible) marker.hide();
        
        markers[markers.length] = marker;
	}
}

function showMarkers(level) {
    var markersShow = markers1;
    var markersHide = markers2;
    if (level == 2) {
        markersShow = markers2;
        markersHide = markers1;
    }
    for (var i = 0; i < markersHide.length; i++) markersHide[i].hide();
    for (var i = 0; i < markersShow.length; i++) markersShow[i].show();    
}

function initMap(mapElement) {
	map = new GMap2(mapElement);
	map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl());
}