// Site functionality
// Requires: prototype.js + tuksi.js
// Author: Andreas Mailand, ama@dwarf.dk



Tuksi.prototype.sifrLoad = function (){
	/*if(typeof sIFR == "function"){
		sIFR.setup();
	}*/
}

// aktiver javascript - inden indhold er loadet ind
Tuksi.prototype.preInit = function(){
}

// aktiver javascript - efter indhold er loadet ind
Tuksi.prototype.postInit = function(){
//tuksi.sifrLoad();
}

/* function slideShow(bAutorun){
	var oFrame = $("mediaFrameShow");
	var aImages = oFrame.childElements();
	
	for (var i=0,aImagesMax=aImages.length;i<aImagesMax;i++){
		if (aImages[i].getStyle("display") != "none"){
			Effect.Fade(aImages[i], {duration: 2});
			Effect.Appear(aImages[i+1], {delay:1, duration: 2});
			
			break; // break out of the for loop, as we don't need it, since we have already found what we were looking for
		}
	}
	
	
	
	
	// run the slideshow automatically - starting from the currently active image
}
*/
var slideShow = {
	running:false,
	slidesRotate:Array(),
	thumbList:Array(),
	wait:2000,
	fadeTime:1.0,
	slideIndex:0,
	fading:false,
	maxSlidesInList:4,
	middleSlideIndex:0,
	startSlideIndex:0,
	init:function(wait) {
		if(!isNaN(wait)) {
			this.wait = wait;
		}
		var slideContainer = $('imageRotater');
		if (slideContainer){
			var slides = Element.immediateDescendants(slideContainer);
			if (slides){
				slides.each(function(s,index) {
					var slideId = s.id;
					if(index > 0) {
						Element.setStyle(s,{opacity:0});
					}
					this.middleSlideIndex = (this.maxSlidesInList/2);
					Event.observe($('thumb_'+index),'click',function(){
						slideShow.show(index,0.4);
					});
					slideShow.slidesRotate.push(s);
					slideShow.thumbList.push($("thumb_"+index));
				});
				setInterval('slideShow.show()', this.wait);
				slideShow.updateThumb();
				slideShow.updateCounter();
			}
		}
	},
	show:function(newSlideId,fadeTimer) {
		if(this.running || !isNaN(newSlideId) && !this.fading){
			if(!isNaN(newSlideId) && newSlideId == this.slideIndex) {
				return false;
			}
			var currentFadeTimer = this.fadeTime;
			if(!isNaN(fadeTimer)){
				currentFadeTimer = fadeTimer;
			}
			this.fading = true;
			Effect.Fade($(this.slidesRotate[this.slideIndex]),{
				duration:currentFadeTimer, 
				from:1.0, 
				to:0.0
			});
			this.slideIndex++;
			
			if(!isNaN(newSlideId)) {
				this.slideIndex = newSlideId;
				this.running = false;
			} else if (this.slideIndex >= this.slidesRotate.length) { 
				this.slideIndex = 0;
			}
			
			Effect.Appear(this.slidesRotate[this.slideIndex], { 
				duration:currentFadeTimer, 
				from:0.0, 
				to:1.0,
				afterFinish: function(){
					slideShow.fading=false;
				}
			});
			this.updateCounter();
			this.updateThumb();
			this.balanceList();
		}
	},
	updateThumb: function(){
		var allMedia = $("mediaList").getElementsByTagName("ul")[0];
		allMedia = Element.childElements(allMedia);
		var activeThumb = $("thumb_"+this.slideIndex);

		for (var i=0,allMediaMax=allMedia.length;i<allMediaMax;i++){
			Element.setStyle(allMedia[i],{
  			opacity: 0.5,
  			filter: "alpha(opacity:50)",
				cursor: "pointer"
  		})
		}
		Element.setStyle(activeThumb,{
			opacity: 1,
			filter: "alpha(opacity:100)"
		})
	},
	showNext: function(){
		var next;
		if (this.slideIndex >= (this.slidesRotate.length - 1)) { 
			next = 0;
		} else {
			next = this.slideIndex+1;
		}
		this.show(next,0.4);
	},
	showPrev: function(){
		var prev;
		if (this.slideIndex == 0) { 
			prev = this.slidesRotate.length - 1;
		} else {
			prev = this.slideIndex-1;
		}
		this.show(prev,0.4);
	},
	play:function(){
		this.running = true;
	},
	stop:function(){
		this.running = false;
	},
	updateCounter:function(){
		var sCounter = $("mediaGalleryCounter");
		var iCurrent = this.slideIndex+1;
		var iTotal = this.slidesRotate.length;
	
		sCounter.innerHTML = "Billede " + iCurrent + " af " + iTotal;
	},
	balanceList:function(){
		var visibleThumbs;
		if (this.slideIndex < 1) visibleThumbs = [this.thumbList[this.slideIndex],this.thumbList[this.slideIndex+1],this.thumbList[this.slideIndex+2],this.thumbList[this.slideIndex+3]];
		else if (this.slideIndex < 2) visibleThumbs = [this.thumbList[this.slideIndex-1],this.thumbList[this.slideIndex],this.thumbList[this.slideIndex+1],this.thumbList[this.slideIndex+2]];
		else if (this.slideIndex > this.slidesRotate.length-2) visibleThumbs = [this.thumbList[this.slideIndex-3],this.thumbList[this.slideIndex-2],this.thumbList[this.slideIndex-1],this.thumbList[this.slideIndex]];
		else visibleThumbs = [this.thumbList[this.slideIndex-2],this.thumbList[this.slideIndex-1],this.thumbList[this.slideIndex],this.thumbList[this.slideIndex+1]];

		this.thumbList.without(visibleThumbs).invoke("hide");
		visibleThumbs.invoke("show");		
	}
}

var frontpageCampaigns = {
    running: true,
    slidesRotate: Array(),
    wait: 2000,
    fadeTime: 1.0,
    slideIndex: 0,
    animRunning: false,
    init: function (wait) {
        if (!$('frontpageCampaignsCounter')) return false;
        if (!isNaN(wait)) {
            this.wait = wait;
        }
        $('frontpageCampaignsCounter').style.visibility = "visible";
        var campaignContainer = $('frontpageCampaigns')
        if (campaignContainer) {
            var campaigns = Element.immediateDescendants(campaignContainer);

            if (campaigns) {

                campaigns.each(function (s, index) {
                    var slideId = s.id;
                    if (index > 0) {
                        Element.setStyle(s, { opacity: 0, display: "none" });
                    }

                    frontpageCampaigns.slidesRotate.push(s);
                });

                setInterval('frontpageCampaigns.show()', this.wait);
            }
            this.updateCounter();
        }
    },
    show: function (newSlideId, fadeTimer) {
        if ((this.running || !isNaN(newSlideId)) && !this.animRunning) {
            this.animRunning = true;
            var sifrHeader;
            if (!isNaN(newSlideId) && newSlideId == this.slideIndex) {
                return false;
            }
            var currentFadeTimer = this.fadeTime;
            if (!isNaN(fadeTimer)) {
                currentFadeTimer = fadeTimer;
            }
            sifrHeader = this.slidesRotate[this.slideIndex].select("h1.sIFR-replaced")[0];
            if (sifrHeader) { sifrHeader.setStyle({ textIndent: "-9000px" }); }
            Effect.Fade($(this.slidesRotate[this.slideIndex]), {
                duration: currentFadeTimer,
                from: 1.0,
                to: 0.0
            });
            this.slideIndex++;

            if (!isNaN(newSlideId)) {
                this.slideIndex = newSlideId;
                this.running = false;
            } else if (this.slideIndex >= this.slidesRotate.length) {
                this.slideIndex = 0;
            }
            sifrHeader = this.slidesRotate[this.slideIndex].select("h1.sIFR-replaced")[0];
            if (sifrHeader) { sifrHeader.setStyle({ textIndent: "-9000px" }); }
            Effect.Appear(this.slidesRotate[this.slideIndex], {
                duration: currentFadeTimer,
                from: 0.0,
                to: 1.0,
                afterFinish: this.showHeader
            });

            this.updateCounter();
        }
    },
    showHeader: function (a) {
        var sifrHeader = frontpageCampaigns.slidesRotate[frontpageCampaigns.slideIndex].select("h1.sIFR-replaced")[0];
        if (sifrHeader) { sifrHeader.setStyle({ textIndent: 0 }); }
        frontpageCampaigns.animRunning = false;
    },
    showNext: function () {
        var next;
        if (this.slideIndex >= (this.slidesRotate.length - 1)) {
            next = 0;
        } else {
            next = this.slideIndex + 1;
        }
        this.show(next, 0.4);
    },
    showPrev: function () {
        var prev;
        if (this.slideIndex == 0) {
            prev = this.slidesRotate.length - 1;
        } else {
            prev = this.slideIndex - 1;
        }
        this.show(prev, 0.4);
    },
    updateCounter: function () {
        //var sCounter = $("frontpageCampaignsCounter");
        var iCurrent = this.slideIndex + 1;
        var iTotal = this.slidesRotate.length;

        var FPNavWrap = document.getElementById('frontpageCampaignsCounter');

        var childElement = document.getElementById("navBtnWrap");
        if (childElement != null) { FPNavWrap.removeChild(childElement); }

        var navBtnWrap = document.createElement('div');
        navBtnWrap.id = "navBtnWrap";
        FPNavWrap.appendChild(navBtnWrap);

        for (var i = 0; i < iTotal; i++) {
            var newSpan = document.createElement('span');
            if ((i + 1) != iCurrent) {
                newSpan.className = "navElement";
            } else {
                newSpan.className = "navElementHighlight";
            }

            navBtnWrap.appendChild(newSpan);
        }
    },
    play: function () {
        this.running = true;
    },
    stop: function () {
        this.running = false;
    }

}


// activate when the dom has been loaded
document.observe('dom:loaded', function () {
    slideShow.init(4000);
    frontpageCampaigns.init(5000);

    //swfobject.embedSWF("/images/180x284_intern2.swf", "flashtest", "180", "284", "10.0");
})

// set the tabs state when viewing the slideshow
function setSlideshowActive(bState){
	if (bState){
		$("tabImages").removeClassName("active");
		$("tabSlideshow").addClassName("active");
	}else{
		$("tabSlideshow").removeClassName("active");
		$("tabImages").addClassName("active");
	}
}

function showSubMenu(oThis){
	var oSubMenu = oThis.parentNode.getElementsByTagName('UL')[0];
	if(oSubMenu){
		if(oSubMenu.style.display == "block"){
			oSubMenu.style.display = "none";
		} else {
			oSubMenu.style.display = "block";
		}
	}
	return false;
}

//var intCurrentCampaign = 1;
//var intTotalCampaigns = 3
function slideCampaigns(){
	//if(intCurrentCampaign < intTotalCampaigns){
		var objCurrentCampaign = $("campaign" + intCurrentCampaign)
		objCurrentCampaign.style.display = "none";
	//}
}

function changeList(id){
	var obj = $("listContainer"+id);
	if (obj){
		
		obj.siblings().each(function(el){
		    if (!el.hasClassName("calenderListBottom")){
		        el.hide();
		    }
		});
        //obj.siblings().each(function(el){
            //if (el.style.display!="none"){
            
                //Effect.Fade(el,{duration:0.1});
            //}
		    
		//});
		obj.show();
		//Effect.Appear(obj);
		
	}
	var objLink = $("listContainerLink"+id);
	if (objLink){
	    objLink.addClassName("active");
	    objLink.siblings().invoke("removeClassName","active");
	}
	
}

function switchComments(){
    $('RestCommmentsContainer').toggle();
    $('HideAllCommentsLink').toggle();
    $('SeeAllCommentsLink').toggle();
}

function CreateBookmarkLink() {
		var title = "Folkeferie.dk"; 
		var url = "http://www.folkferie.dk";

		if (window.sidebar) {
			window.sidebar.addPanel(title, url,"");
		} else if( window.external ) {
			window.external.AddFavorite( url, title); 
		} else if(window.opera && window.print) { // Opera Hotlist
			return true; 
		}
		else{
		    alert('Du kan desværre ikke anvende denne funktion i din browser');
		}
	}

function SetStartPageLink() {
		var title = "Folkeferie.dk"; 
		var url = "http://www.folkferie.dk";

		if (window.sidebar) {
			window.sidebar.addPanel(title, url,"");
		} else if( window.external ) {
			window.external.AddFavorite( url, title); 
		} else if(window.opera && window.print) { // Opera Hotlist
			return true; 
		}
		else{
		    alert('Du kan desværre ikke anvende denne funktion i din browser');
		}
	}


    /* TRACEWORKS */

    var TraceWorks = {
    hrefPatterns: {
        "Danland": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/www.danland.dk\/)([^\?]*)"),
        "FdmTravel": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/book.fdm-travel.dk\/?)"),
        "Apollo": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/www.apollorejser.dk\/?)"),
        "Julekalender": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/julekalender10.folkeferie.dk\/?)"),
        "Katalog": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/cde1.netpublications.com\/)([^\/]*)")
    },
    parseHyperlinks: function () {
        // Get all hyperlinks on page
        var allHyperlinks = document.getElementsByTagName("a");

        // Loop all hyperlinks and set OnClick attribute
        for (var i = 0; i < allHyperlinks.length; i++) {
            this.handleOnClickReplacement(allHyperlinks[i]);
        }
    },
    handleOnClickReplacement: function (aObject) {

        // Handle Danland offsite links
        if (this.hrefPatterns.Danland.test(aObject.href)) {
            // Find match
            var match = this.hrefPatterns.Danland.exec(aObject.href);
            // If match is found
            if (match[1]) {
                // HL, GA, TD Tracking
                this.appendOnClick(aObject, "TradeDoublerTrackback('214286');CreateConversion('e571c88f-8a88-4b9a-8a59-47288a24a45c', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/danland/" + match[1] + "']);");
            }
        }

        // Handle FDM-Travel offsite links
        else if (this.hrefPatterns.FdmTravel.test(aObject.href)) {
            this.appendOnClick(aObject, "CreateConversion('fd9a064f-84a0-4c82-a6bf-03ddf994d930', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/fdm/']);");
        }

        // Handle Apollo offsite links
        else if (this.hrefPatterns.Apollo.test(aObject.href)) {
            var match = this.hrefPatterns.Apollo.exec(aObject.href);
            this.appendOnClick(aObject, "TradeDoublerTrackback('214288');CreateConversion('f10904ed-d75f-431c-b76e-cc5a81aba4b2', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/apollo/']);");
        }

        // Handle Julekalender 2010 links
        else if (this.hrefPatterns.Julekalender.test(aObject.href)) {
            this.appendOnClick(aObject, "CreateConversion('04fd965e-2d66-4b73-af43-7b0002bd4ead', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/julekalender2010']);");
        }

        // Handle katalog links
        else if (this.hrefPatterns.Katalog.test(aObject.href)) {
            this.appendOnClick(aObject, "CreateConversion('ecd1f56a-daaa-4794-a393-93bb107c7fc8', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/onlinekatalog']);");
        }
    },
    appendOnClick: function (aObject, onClickToAppend) {
        aObject.setAttribute("onclick", ((aObject.getAttribute("onclick") != null) ? aObject.getAttribute("onclick") + ";" : "") + onClickToAppend);
    }
};

/* Tradedoubler */

// Get value from cookie
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);

    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else {
        begin += 2;
    }

    var end = document.cookie.indexOf(";", begin);

    if (end == -1) {
        end = dc.length;
    }

    return unescape(dc.substring(begin + prefix.length, end));
}

function TradeDoublerTrackback(event) {

    var tduid = getCookie("TRADEDOUBLER");

    if (tduid === null) {
        return;       
    }	
	
    var organization = '1531855';
    var orderNumber = new Date().getTime() + serverSessionId;
    var orderValue = '1.00';
    var currency = 'DKK';
    var reportInfo = "";
    
    var image = document.createElement("img");
    image.src = "https://tbs.tradedoubler.com/report?organization=" + organization + "&event=" + event + "&orderNumber=" + orderNumber + "&orderValue=" + orderValue + "&currency=" + currency + "&tduid=" + tduid + "&reportInfo=" + reportInfo;
    image.height = 1;
    image.width = 1;
    image.border = 0;    

    document.body.appendChild(image);     

    return;
}var TraceWorks = {
    hrefPatterns: {
        "Danland": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/www.danland.dk\/)([^\?]*)"),
        "FdmTravel": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/book.fdm-travel.dk\/?)"),
        "Apollo": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/www.apollorejser.dk\/?)"),
        "Julekalender": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/julekalender10.folkeferie.dk\/?)"),
        "Katalog": new RegExp("^(?:https?|ftp|news|nntp|telnet|irc|ssh|sftp|webcal)(?:\:\/\/cde1.netpublications.com\/)([^\/]*)")
    },
    parseHyperlinks: function () {
        // Get all hyperlinks on page
        var allHyperlinks = document.getElementsByTagName("a");

        // Loop all hyperlinks and set OnClick attribute
        for (var i = 0; i < allHyperlinks.length; i++) {
            this.handleOnClickReplacement(allHyperlinks[i]);
        }
    },
    handleOnClickReplacement: function (aObject) {

        // Handle Danland offsite links
        if (this.hrefPatterns.Danland.test(aObject.href)) {
            // Find match
            var match = this.hrefPatterns.Danland.exec(aObject.href);
            // If match is found
            if (match[1]) {
                // HL, GA, TD Tracking
                this.appendOnClick(aObject, "TradeDoublerTrackback('214286');CreateConversion('e571c88f-8a88-4b9a-8a59-47288a24a45c', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/danland/" + match[1] + "']);");
            }
        }

        // Handle FDM-Travel offsite links
        else if (this.hrefPatterns.FdmTravel.test(aObject.href)) {
            this.appendOnClick(aObject, "CreateConversion('fd9a064f-84a0-4c82-a6bf-03ddf994d930', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/fdm/']);");
        }

        // Handle Apollo offsite links
        else if (this.hrefPatterns.Apollo.test(aObject.href)) {
            var match = this.hrefPatterns.Apollo.exec(aObject.href);
            this.appendOnClick(aObject, "TradeDoublerTrackback('214288');CreateConversion('f10904ed-d75f-431c-b76e-cc5a81aba4b2', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/apollo/']);");
        }

        // Handle Julekalender 2010 links
        else if (this.hrefPatterns.Julekalender.test(aObject.href)) {
            this.appendOnClick(aObject, "CreateConversion('04fd965e-2d66-4b73-af43-7b0002bd4ead', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/julekalender2010']);");
        }

        // Handle katalog links
        else if (this.hrefPatterns.Katalog.test(aObject.href)) {
            this.appendOnClick(aObject, "CreateConversion('ecd1f56a-daaa-4794-a393-93bb107c7fc8', 'DKK', '0');_gaq.push(['_trackPageview', '/goal/offsite/onlinekatalog']);");
        }
    },
    appendOnClick: function (aObject, onClickToAppend) {
        aObject.setAttribute("onclick", ((aObject.getAttribute("onclick") != null) ? aObject.getAttribute("onclick") + ";" : "") + onClickToAppend);
    }
};

/* Tradedoubler */

// Get value from cookie
function getCookie(name) {
    var dc = document.cookie;
    var prefix = name + "=";
    var begin = dc.indexOf("; " + prefix);

    if (begin == -1) {
        begin = dc.indexOf(prefix);
        if (begin != 0) return null;
    }
    else {
        begin += 2;
    }

    var end = document.cookie.indexOf(";", begin);

    if (end == -1) {
        end = dc.length;
    }

    return unescape(dc.substring(begin + prefix.length, end));
}

function TradeDoublerTrackback(event) {

    var tduid = getCookie("TRADEDOUBLER");

    if (tduid === null) {
        return;       
    }	
	
    var organization = '1531855';
    var orderNumber = new Date().getTime() + serverSessionId;
    var orderValue = '1.00';
    var currency = 'DKK';
    var reportInfo = "";
    
    var image = document.createElement("img");
    image.src = "https://tbs.tradedoubler.com/report?organization=" + organization + "&event=" + event + "&orderNumber=" + orderNumber + "&orderValue=" + orderValue + "&currency=" + currency + "&tduid=" + tduid + "&reportInfo=" + reportInfo;
    image.height = 1;
    image.width = 1;
    image.border = 0;    

    document.body.appendChild(image);     

    return;
}
