// Global JS file - 081121
// Google Maps implementation
var MogulMap = (function(){
     // private
     var map = null;
     var zoomLat = "";
     var zoomLng = "";
     var zoomLevel = "";
                  
     function loadMap(){
        if (GBrowserIsCompatible()) {
            map.addControl(new GSmallMapControl());
            map.setCenter(new GLatLng(zoomLat, zoomLng),zoomLevel);
        }
     }
     // public
     return {
            init: function(elmId, settings){
                zoomLat = settings.lat;
                zoomLng = settings.lng;
                zoomLevel = parseInt(settings.zoomLevel);
                map = new GMap2(document.getElementById(elmId));
                loadMap();
                return this;
            },
            getPoint: function(settings){
                return new GLatLng(settings.lat,settings.lng);
            },
            getMarker: function(point,settings){
                //var point = new GLatLng(settings.lat,settings.lng);
                var baseIcon = new GIcon();
                baseIcon.shadow = "/Customer/images/GoogleMaps/shadow-2.png";
                baseIcon.image = settings.icon;
                baseIcon.iconSize = new GSize(37, 49);
                baseIcon.shadowSize = new GSize(56, 49);
                baseIcon.iconAnchor = new GPoint(9, 34);
                baseIcon.infoWindowAnchor = new GPoint(9, 2);
                baseIcon.infoShadowAnchor = new GPoint(18, 25);
                // Set up our GMarkerOptions object
                markerOptions = { icon:baseIcon };
                return new GMarker(point,markerOptions);
            },
            addMarker: function(marker,settings){
                var html = "<div class=\"map-info-window\"><h2>"+ settings.heading +"</h2><p>";
                if(settings.address){
                    html += "<span class=\"address\">"+ settings.address+"</span>";
                }
                html += ""+ settings.text +"</p></div>";
	            GEvent.addListener(marker,"click", function() {
                    //map.openInfoWindowHtml(point, html);
                    marker.openInfoWindowHtml(html);
                });
                map.addOverlay(marker);
            }
        }
})();

var googleMaps = {
    init: function(){
        //var map = null;
        var mapIcons = [];
        var mogulMap = null;
        $("div.fnGoogleMaps").each(function() {
            var mapSettings = $(this).parent("div").find("div.mapSettings");
            var zLat = $(mapSettings).find("span.zoomLat").text();
            var zLng = $(mapSettings).find("span.zoomLng").text();
            var zLevel = $(mapSettings).find("span.zoomLevel").text();
            var mapParams = {
                lat : zLat,
                lng : zLng,
                zoomLevel : zLevel
            }
            mogulMap = MogulMap.init($(this).attr("id"),mapParams);
        });
        $("ul.mapPlaceMarks li div.vcard").each(function(){
            $(this).hover(function (){
                $(this).addClass("highlight");}, 
                function () {
                    $(this).removeClass("highlight");
                }
            );
            // find map elements
            var lat = $(this).find(".geo .latitude").text();
            var lng = $(this).find(".geo .longitude").text();
            var heading = $(this).find("h2").text();
            var content = $(this).find("div.bodytext").html();
            var iconSrc = $(this).find("img.mapIcon").attr("src");
            var iconAltText = $(this).find("img.mapIcon").attr("alt");
            var address = $(this).find(".street-address").text();                                  
            var settings = {
                lat : lat,
                lng : lng,
                heading : heading,
                text : content,
                icon : iconSrc,
                address : address
            }
            var gPoint = mogulMap.getPoint(settings);
            var gMarker = mogulMap.getMarker(gPoint,settings);
            // Trigger click event at marker from icons in bar
            $(this).click(function ( evt ){
                GEvent.trigger(gMarker,"click");
            });
            //add marker to map
            mogulMap.addMarker(gMarker,settings);
            var addIcon = true;
            //check if we already have the icon or not
            for(var i=0;i<mapIcons.length;i++){
                if(mapIcons[i] == iconSrc){addIcon = false; i=mapIcons.lenght;}
            }
            mapIcons.push(iconSrc);
            //load icons
            if(addIcon === true){
                $("div.mapIcons ul").append("<li><img src=\""+ iconSrc +"\" alt=\""+ iconAltText +"\"/><span>"+ iconAltText +"</span></li>");
            }
        });
   },
   geoCoding:function(address){
	    var geocoder = new GClientGeocoder();
	    var s = geocoder.getLatLng(
            address,
            function(point) {
              if (!point) {
                alert(address + " not found");
              }else{
                alert(point)
              }
            }
       );
	}
};
/*
 * Execute when document is ready
 */
$(document).ready(function() {
    googleMaps.init();
    var $dp = $("#bookingForm").find('.datePicker');    
    $dp.datepicker({ dateFormat: 'yy-mm-dd' });
    //testing of geocoding
    //googleMaps.geoCoding("flemminggatan, Stockholm, Sverige");
    //(59.339486, 18.063318)
});



//Text size change
function normalTxtSize() {
	var mainContainer = document.getElementById("mainRight");
	if (mainContainer != null && mainContainer != "" ){
		mainContainer.className = 'mainRight';
		document.getElementById("iconNormalTxtSize").style.backgroundPosition = "0 -14px";
		document.getElementById("iconBigTxtSize").style.backgroundPosition = "0 0";
		document.getElementById("iconBiggerTxtSize").style.backgroundPosition = "0 0";
		setCookie("textSize","normalTxt",365);
	}
}

function bigTxtSize() {
	var mainContainer = document.getElementById("mainRight");
	if (mainContainer != null && mainContainer != "" ){
		mainContainer.className = 'mainRight bigTxtContent';
		document.getElementById("iconNormalTxtSize").style.backgroundPosition = "0 0";
		document.getElementById("iconBigTxtSize").style.backgroundPosition = "0 -14px";
		document.getElementById("iconBiggerTxtSize").style.backgroundPosition = "0 0";
		setCookie("textSize","bigTxt",365);
	}
}

function biggerTxtSize() {
	var mainContainer = document.getElementById("mainRight");
	if (mainContainer != null && mainContainer != "" ){
		mainContainer.className = 'mainRight biggerTxtContent';
		document.getElementById("iconNormalTxtSize").style.backgroundPosition = "0 0";
		document.getElementById("iconBigTxtSize").style.backgroundPosition = "0 0";
		document.getElementById("iconBiggerTxtSize").style.backgroundPosition = "0 -14px";
		setCookie("textSize","biggerTxt",365);
	}
}

function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function getCookie(name) {
    var nameEQ = name + "=";
    var ca = document.cookie.split(';');
    for(var i=0;i < ca.length;i++) {
        var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function setTxtSize(){
    var cookieValue = getCookie("textSize");
    if (cookieValue == "normalTxt" || cookieValue == "")
    {
        normalTxtSize();
    }
    if (cookieValue == "bigTxt")
    {
        bigTxtSize();
    }
    if (cookieValue == "biggerTxt")
    {
        biggerTxtSize();
    }        
}


