﻿//*************************************
// RollOver images
//-------------------------------------
var buttonImages_array = [];
function addButtonImages(name, singleState, ending) {
	buttonImages_array.unshift({});
	buttonImages_array[0].name = name;
	buttonImages_array[0].over = new Image;
	buttonImages_array[0].out = new Image;
	buttonImages_array[0].singleState = Boolean(singleState);
	buttonImages_array[0].ending = String(ending);
}
//*************************************
// ADD IMAGES HERE
//*************************************
addButtonImages("calendarButton_left");
addButtonImages("calendarButton_right");
addButtonImages("grayButton_left");
addButtonImages("grayButton_right");
addButtonImages("grayButtonSmall_left");
addButtonImages("grayButtonSmall_right");
addButtonImages("next");
addButtonImages("prev");
addButtonImages("purpleButton_right");
addButtonImages("searchButton");
addButtonImages("searchInputBg");
addButtonImages("tabArrow", 0, "gif");
addButtonImages("topLinks_left_over", 1);
addButtonImages("topLinks_right_over", 1);
addButtonImages("topMenu_left");
addButtonImages("topMenu_right_over", 1);
addButtonImages("whiteButton_left");
addButtonImages("whiteButton_right");
//*************************************
// linkBehavior set defferents states
//-------------------------------------
function getImage(src, state) {
	var src_str = src.toString();
	src_str = src_str.substring(src_str.lastIndexOf("/") + 1, src_str.lastIndexOf("_"));
	for (var i = 0; i < buttonImages_array.length; i++) {
		if (src_str == buttonImages_array[i].name) {
			return buttonImages_array[i][state];
		}
	}
}
function imgBehavior(imgObj, state) {
	var $img = $(imgObj);
	var newImage = getImage($img.attr("src"), state);
	$img.attr("src", newImage.src);
}
function linkBehavior(linkObj, state) {
	var $img = $("img", linkObj);
	var newImage = getImage($img.attr("src"), state);
	$img.attr("src", newImage.src);
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
// Preload all images
//-------------------------------------
function preloadImages() {
	var ending;
	if (document.images) {
		for (var i = 0; i < buttonImages_array.length; i++) {
			ending = (buttonImages_array[i].ending != "undefined") ? buttonImages_array[i].ending : "png"
			if (buttonImages_array[i].over.singleState) {
				buttonImages_array[i].over.src = URL + "images/buttons/" + buttonImages_array[i].name + "." + ending;
			} else {
				buttonImages_array[i].over.src = URL + "images/buttons/" + buttonImages_array[i].name + "_over." + ending;
				buttonImages_array[i].out.src = URL + "images/buttons/" + buttonImages_array[i].name + "_out." + ending;
			}
		}
	}
}
//*************************************
// setFrontpageFlash
//-------------------------------------
function setFrontpageFlash() {
	var $Flash = $('#frontFlash');
	var path = $Flash.attr("title");
	$Flash.removeAttr("title");
	$Flash.flash({
		swf: URL + 'includes/flash/slider/slider.swf',
		height: 348,
		width: 974,
		wmode: 'transparent',
		flashvars: {
			xmlurl: path
		}
	});
}
//*************************************
// setTownChooserFlash
//-------------------------------------
function setTownChooserFlash() {
	var $Flash = $('#townChooserFlash');
	var path = $Flash.attr("title");
	$Flash.removeAttr("title");
	$Flash.flash({
		swf: URL + 'includes/flash/CitiesMap/map.swf',
		height: 493,
		width: 860,
		wmode: 'opaque',
		flashvars: {
			xmlurl: path
		}
	});
}
//*************************************
// setTownSlideshowFlash
//-------------------------------------
function setTownSlideshowFlash() {
    $("#cityFlashViewer").map(function(){
        var $Viewer = $(this);
        var $Flash = $('#cityFlash')
        var nodeId = $Flash.attr("title");
        $Flash.flash({
            swf: URL + 'includes/flash/TownSlider/TownSlideShow.swf',
            height: 359,
            width: 638,
            wmode: 'opaque',
            flashvars: {
                xmlurl: URL + 'includes/handlers/TownFlashXml.ashx?nodeId=' + nodeId 
            }
        });
        var $GMapBtn = $("#galleryGMapBtn a:eq(0)");
        var $GalleriBtn = $("#galleryGMapBtn a:eq(1)");		
        if($GMapBtn.length > 0){
            $GalleriBtn.hide();
            var gMapActive = false;
            $GMapBtn.click(function () {
	            if (!gMapActive) {
		            $Map = $('<div class="gMap" />').prependTo($Viewer);
		            gMapActive = true;
	            } else {
		            $('.gMap').show()
	            }
	            $Flash.hide();
	            gMapInitialize($Map[0], $(this).attr("title"));	
	            
	            $GMapBtn.hide();
	            $GalleriBtn.show();
	            setGalleryPictureCaption('');
            });
            $GalleriBtn.click(function () {
	            if (gMapActive) {
		            $('.gMap').hide()
	            }
	            $Flash.show();
	            $GalleriBtn.hide();
	            $GMapBtn.show();	
            });
        }
     });   
}


//-------------------------------------
// setGalleryPictureCaption
//-------------------------------------
function setGalleryPictureCaption(caption)
{
    var $CaptionElement = $('#galleryPictureCaption');
    $CaptionElement.text(caption); 


}


//-------------------------------------
// fixLists
//-------------------------------------
function fixLists() {
	var $list = $(".PictureList, .SmallPictureList, .ItemList");
	$list.map(function(){
		$(".Paging", this).eq(1).css("bottom","0px")
	});
	var $listUL = $(".PictureList ul, .SmallPictureList ul, .ItemList ul")
	$("li:first", $listUL).addClass("first");
	//
	$('div.PictureList ul').quickPager({ pagerLocation: "both", pageSize: "4" });
}
//-------------------------------------
// initAttractionsTab
//-------------------------------------
function initProductAndAttractionsTab() {
	if ($('#attractions, #GDK_Product').length == 0) return;
	$("#attractions div.ui-tabs, #GDK_Product div.ui-tabs").map(function () {
		$(this).tabs({
			fx: {
				opacity: 'toggle',
				duration: 'fast'
			}
		});
		$(this).bind('tabsshow', function (event, ui) {
			initGoogleMap();
		});
	});
}
//-------------------------------------
// initNewsletterSignUp
//-------------------------------------
function initNewsletterSignUp() {
	var $Newsletter = $('#newsletter')
	var $A = $('a', $Newsletter)
	var url = "http://www.visiteastdenmark.com/danmark/da-dk/nyhedsbrev/koebstad/tilmelding-koebstad.htm";

	var $IFrame = $('<iframe />')
	$IFrame.attr({
		'name': 'newsletterIFrame',
		'id': 'newsletterIFrame',
		'align': 'left',
		'height': '175',
		'width': '225',
		'scrolling': 'no',
		'frameBorder': '0',
		'allowTransparency': 'true',
		'src': url
	})
	$Newsletter.append('<div class="NewletterSignUpForm" />')
	$('div', $Newsletter).append($IFrame)

	var timeOut = 0;
	$A.click(function () {
		clearTimeout(timeOut)
		$Newsletter.addClass("active");
	});

	$Newsletter.mouseover(function () {
		clearTimeout(timeOut)
	});
	$Newsletter.mouseout(function () {
		clearTimeout(timeOut)
		timeOut = setInterval(function () {
			$Newsletter.removeClass("active");
		},
		1000)
	});

	$IFrame.mouseover(function () {
		clearTimeout(timeOut)
	});
	$IFrame.mouseout(function () {
		clearTimeout(timeOut)
		timeOut = setInterval(function () {
			$Newsletter.removeClass("active");
		},
		1000)
	});
}
//*************************************
// initGoogleMap
//-------------------------------------
function initGoogleMap() {
	if ($('#googleMapCanvas').length > 0) {
		gMapInitialize();
	}
}
//*************************************
// initGoogleMap
//-------------------------------------
function initEventFinder() {
	var path = (isLocal) ? "http://www.kongeland.dk/da/settings/eventdates.aspx" : '/da/settings/eventdates.aspx'
	if ($('.EventCalendar').length > 0) {
		$('.EventCalendar').eventCalendar({
			xmlPath: path
		});
		var CityQuery = $.getQueryString({ID: "city"})
		if (CityQuery == "undefined" || CityQuery == "1" || CityQuery == ""){
			$(".AllCities").addClass("active");
		}		
		$('.EventCalendar #searchButton a').click(function (){
			var $Input = $('.EventCalendar input#search')
			if($Input.val() != $Input[0].defaultValue){
				window.location.href = "?search="+encodeURIComponent($Input.val());
			}
		});
	}
}
//*************************************
//-------------------------------------
// setGalleryList
//-------------------------------------
function setGalleryList() {
	$(".ui-fader").map(function () {
		var $GalleryBox = $(this);
		var $FaderList = $(".ui-fader-list");
		var $Pages = $("ul > li", $FaderList);
		var TotalPages = $Pages.length;


		//////////////////////
		var $GalleryPaging = $('<div class="ui-fader-nav" />').appendTo($FaderList);
		var page = 0;
		//////////////////////
		var aniTime = "slow";
		function pageTo(newPage) {
			if (newPage != page) {
				$GalleryPaging.children('a').removeClass("active");
				if (newPage > TotalPages - 1) {
					page = newPage % TotalPages;
				} else if (0 > newPage) {
					page = newPage + TotalPages;
				} else {
					page = newPage;
				}
				$GalleryPaging.children('a:eq(' + (page) + ')').addClass("active");
				showPage(page);
			}
		}
		//////////////////////
		var $ActiveLi = $Pages.eq(page);
		var $OldLi = null;
		var $Caption = $("#galleryPictureCaption", $GalleryBox);
		function showPage(newPage) {
			$OldLi = $ActiveLi;
			$ActiveLi = $Pages.eq(newPage);
			if ($OldLi == null) {
				$ActiveLi.show();
			} else {
				$Pages.not($OldLi).css("z-index", "50").hide();
				$OldLi.css("z-index", "60");
				$ActiveLi.css("z-index", "65");
				$ActiveLi.fadeIn("slow");
			}
			if(useCaption) $Caption.text($ActiveLi.find("img").attr("alt"));
		}
			
		if (TotalPages > 1) {
			if ($FaderList.height() > 100) {
				for (var i = 0; i < TotalPages; i++) {
					var $PageA;
					var pageNr = (i + 1);
					$PageA = $('<a href="javascript:void(0)"><span>' + pageNr + '</span></a>').appendTo($GalleryPaging);
					$PageA.attr("navid", i);
					$PageA.click(function (e) {
						clearInterval(timer);
						pageTo(parseInt($(this).attr("navid")));
					});
				}
				$GalleryPaging.children().eq(page).addClass("active");
			} else {
				$NextPageA = $('<a href="javascript:void(0)" class="NextButton"></a>').appendTo($GalleryBox);
				$PrevPageA = $('<a href="javascript:void(0)" class="PrevButton"></a>').appendTo($GalleryBox);
				$NextPageA.click(function (e) {
					clearInterval(timer);
					pageTo(page + 1);
				});
				$PrevPageA.click(function (e) {
					clearInterval(timer);
					pageTo(page - 1);
				});
			}
		}
		
		$ActiveLi.css("z-index", "65").show();
		
		var useCaption = false;
		$Pages.each(function(index){
			var $img = $("img", this);
			if($img.attr("alt") != ""){
				useCaption = true;
				return
			}
		});
		if(useCaption){
			$Caption.text($ActiveLi.find("img").attr("alt"));
		}else{
			$Caption.hide()
		}
		
		//////////////////////
		function nextPage() {
			pageTo(page + 1)
		}
		var timer = 0;
		function playLoop() {
			timer = setInterval(nextPage, 8000);
		}
		function stopLoop() {
			clearInterval(timer);
		}
		playLoop();
		
		/////////////////////
		var $GMapBtn = $("#galleryGMapBtn a:eq(0)", $GalleryBox);
		var $GalleriBtn = $("#galleryGMapBtn a:eq(1)", $GalleryBox);		
		if($GMapBtn.length > 0){
			$GalleriBtn.hide();
			var gMapActive = false;
			$GMapBtn.click(function () {
				if (!gMapActive) {
					$Map = $('<div class="gMap" />').appendTo($GalleryBox);
					gMapActive = true;
				} else {
					$('.gMap').show();
				}
				gMapInitialize($Map[0], $(this).attr("title"));	
				$Caption.text("");
				stopLoop();
				$GMapBtn.hide();
				$GalleriBtn.show();
			});
			$GalleriBtn.click(function () {
				if (gMapActive) {
					$('.gMap').hide();
				}
				$GalleriBtn.hide();
				$GMapBtn.show();	
				playLoop();
				showPage(page);
			});
		}
	});
}
//*************************************
// fix IE6 PNG  ( crop | Default | scale )
//-------------------------------------
var png_array = [];
png_array.push(["headerLogo", "scale"]);
png_array.push(["main", "crop"]);
function fixIE6PNG() {
	if ($.browser.msie) {
		for (var obj in png_array) {
			$(png_array[obj][0]).pngfix({
				sizingMethod: png_array[obj][1]
			});
		}
		$("img[src*='png']").pngfix();
	}
}
//*************************************
// fix IFrame
//-------------------------------------
function getTuristOnlineTownID(townName) {
	var town_array = [
		["korsør", "15089"],
		["køge", "15116"],
		["maribo", "15166"],
		["nakskov", "15190"],
		["nykøbing falster", "15214"],
		["nysted", "15232"],
		["næstved", "15243"],
		["præstø", "15267"],
		["ringsted", "15290"],
		["roskilde", "15295"],
		["rødby", "15314"],
		["sakskøbing", "15344"],
		["slagelse", "15409"],
		["sorø", "15431"],
		["stege", "15436"],
		["vordingborg", "15646"]];

	var townName_str = $.trim(townName).toLowerCase().replace(".", "");

	var rxp = ""
	for (var i = 0; i < town_array.length; i++) {
		rxp = new RegExp(town_array[i][0]);
		if (rxp.test(townName_str)) {
			return town_array[i][1];
		}
	}
	return ""
}

function initBookingBox() {
	var $GDKBox = $('.GDKBox');

	var townName = $('.GDKBox').attr("title");
	$('.GDKBox').attr("title", "");

	$GDKBox.html('<div><h2>Online booking</h2></div>');

	var TOUrl = "http://www.touristonline.dk/kongeland/";
	var templateUrl = "http://www.kongeland.dk/da/settings/online-booking-html-for-tourist-online.aspx";
	//var templateUrl = "http://demo.in2media.dk/kongeland/templates/bookingtemplate.html";
	var url = TOUrl + "bookingboks/hotelHorizontal.do?"
	url += 'language=' + 'da' + '&';
	url += 'regionId=' + 42 + '&';
	url += 'lokalOmraadeId=' + getTuristOnlineTownID(townName) + '&';
	url += 'tableset=' + encodeURIComponent(templateUrl) + '&';
	url += 'skabelonUrl=' + encodeURIComponent(templateUrl) + '&';
	url += 'tilbageUrl=' + encodeURIComponent(window.location.href) + '&';

	var $IFrame = $('<iframe />')
	$IFrame.attr({
		'name': 'horizontal',
		'id': 'horizontal',
		'align': 'left',
		'height': '150',
		'width': '300',
		'scrolling': 'no',
		'frameBorder': '0',
		'border': '0'
	})
	$IFrame.attr('src', url)

	$('div', $GDKBox).append($IFrame)
}
//*************************************
// setLightBoxLinks
//-------------------------------------
function setLightBoxLinks(){
	var $ALink = $('a[target="_top"]'); 
	if($ALink.length == 0 ) return false;		
	
	$ALink.click(displayLightBox);
	function displayLightBox() {
		var $Link = $(this);
		var LightBox_str = '<div id="LightBox">';
		LightBox_str += '<div class="top"><a class="grayButton" href="javascript:void(0)"><span>Luk</span></a></div>';
		LightBox_str += '<div class="content WYSIWYG"></div>';
		LightBox_str += '<div class="bottom"></div>';
		LightBox_str += '</div>';
		
		var $Overlay = $('<div id="Overlay"></div>').appendTo("body")   
		var $LightBox = $(LightBox_str).appendTo("body")   
		var $Close = $('.grayButton', $LightBox);
		var $Content = $('.content', $LightBox);
		
		$.ajax({
			url: $Link.attr("href"),
			success: function(html){
				$Content.append(html);			
				var isBigger = ($LightBox.height() > $Overlay.height() * .8);				
				var top = (isBigger) ? ($Overlay.height() * .1) : ($Overlay.height() * .5 - $LightBox.height() * .5);				
				$LightBox.css({
					"top" :  top + "px",
					"height" :  (isBigger) ? ($Overlay.height() * .8) + "px" : "auto"
				});				
				if(isBigger){
					$Content.css({
						"height" : ($Overlay.height() * .8 - 16 - 80) + "px",
						"overflow" : "auto"
					})
				}
			}
		});
		
		$Overlay.click(closeLightBox);
		$Close.click(closeLightBox);
		
		if ($.browser.msie && Number($.browser.version.charAt(0)) < 7) {
			$("#container").css("height", "100%");
			$("#container").css("overflow-y", "hidden");
			$("html").css("overflow-y", "hidden");
			$("#LightBox").css("position", "absolute");
			$("#Overlay").css("position", "absolute");
			$("select").hide();
		}
		return false;	
	}
	function closeLightBox() {
		$("#Overlay").remove();
		$("#LightBox").remove();
		if ($.browser.msie && Number($.browser.version.charAt(0)) < 7) {
			$("#container").css("height", "auto");
			$("#container").css("overflow-y", "visible");
			$("select").show()
			$("html").css("overflow-y", "auto");
		}
		return false;
	}
}
//*************************************
// open new window
//-------------------------------------
function openNewWindow(URL, width, height) {
	var left = Math.floor((screen.width - width) / 2);
	var top = Math.floor((screen.height - height) / 2);
	window.open(URL, "kongeland_window", "width=" + width + ",height=" + height + ",left=" + left + ",top=" + top + ",scrollbars=0,status=0,titlebar=0,location=0,fullscreen=0,menubar=0,resizable=0,scrollbars=0,toolbar=0")
}
//*************************************
// debug
//-------------------------------------
function debug(msg) {
	if (window.console && window.console.log) window.console.log(msg);
}

var isLocal = (window.location.href.indexOf("file:") == 0);
var URL = (isLocal) ? "../" : "/";
//*************************************
// On ready events
//-------------------------------------
$(document).ready(function () {
	fixIE6PNG();
	preloadImages();
	// run first	
	initGoogleMap();
	setGalleryList();
	fixLists();
	initEventFinder();
	initNewsletterSignUp();
	initBookingBox();
	//	
	setFrontpageFlash();
	setTownChooserFlash();
	setTownSlideshowFlash();
	// 
	runFormScripts();
	setLightBoxLinks();
	// run last
	initProductAndAttractionsTab();
});