
var SYS = {};
var SITE = {};
var FUNCTIONS = {};

/* EVENTHANDLER FOR DOMONLOAD
/* ADD FUNCTIONS THAT SHOULD RUN ON DOM LOAD
----------------------------------------------------*/
$(document).ready(function() {
    //##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
    
    SYS.Init();
    SITE.Init();
	
    //##>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>##
});

$.fn.addCorners = function(){
    return this
        .append("<div class=\"corner corner-ne corner-n corner-e\"></div>")
        .append("<div class=\"corner corner-se corner-s corner-e\"></div>")
        .append("<div class=\"corner corner-sw corner-s corner-w\"></div>")
        .append("<div class=\"corner corner-nw corner-n corner-w\"></div>");
};


SYS.Init = function(){
	// Window settings
    this.winWidth = $(window).width();
    this.winHeight = $(window).height();
    this.docHeight = $(document).height();

    $(window).resize(function() {
        SYS.winWidth = $(window).width();
        SYS.winHeight = $(window).height();
        if ($('#fade').length > 0) FUNCTIONS.ModalUpdate();
    });
	
	// push area image auto swapper
    this.pushTimeout = 0;
    this.pushIdle = 10000; // 10 seconds
    this.pushRunning = 5000; // 5 seconds
    this.pushRunningCount = 0;
};

SITE.Init = function(){
    $("#primary-links > li > a").each(function(){
        var link = $(this);
        
        var html = link.html();
        
        html = html.replace("&shy;", "");
        
        link.html(html);
    });
    
	FUNCTIONS.StartPage();
	if ($('#push').length > 0) FUNCTIONS.Push();
	
    $('a[name=modal]').live('click', function() {
        //FUNCTIONS.Modal($(this).attr('title').toLowerCase());
        FUNCTIONS.Modal();
        return false;
    });
    
    FUNCTIONS.Tooltip();
    FUNCTIONS.ShowMainMenu();
    FUNCTIONS.ShowLanguageSelection();
    
    $("div.puff-list > div.puff").each(function(){
        var puff = $(this);
        
        if(puff.is(".pagelink-puff")){
            puff = puff.find("a");
        }
        
        puff.addCorners();
    });
    
    $("div.puff-list > div.pagelink-puff > a > span")
        .append("<span class=\"side side-n\"></span>")
        .append("<span class=\"side side-s\"></span>")
        .wrap("<span class=\"puff-wrapper\"></span>");
   initEmail();
    
    function removeEmptyElements(selector){
        $(selector).each(function(){
            var element = $(this);
            
            if(element.html().trim().length == 0){
                element.remove();
            }
        });
    }
    
    setTimeout(function(){
        removeEmptyElements("#main p.intro, #flashcontent");
    }, 100);
    
    $("ul.main-contact").each(function(){
        var list = $(this);
        
        list.find("li").equalizeHeights({
            setHeightOfElement:function(options, element, height){
                var elementHeight = element.height();
                
                element.css("padding-top", (height - elementHeight) + "px");
            }
        });
    });
    
    $("#flashcontent img").wrap("<div class=\"image-wrapper\"></div>");
    
    $("#main div.image-wrapper").addCorners().after("<div class=\"image-wrapper-clearing-div\"></div>");
    
     //$("a").not("[href^=/]").not("[href^=#]").not("[href^=mailto:]").addClass("external");
     
     //$("a").not("[href^=/]").not("[href^=#]").not("[href^=mailto:]").not("[href^=javascript:]").prepend("<span class='external'></span>");
    
     $("a").not("[href^=/]").not("[href^=#]").not("[href^=mailto:]").not("[href^=javascript:]").addClass("external").attr("target", "_blank");

};

FUNCTIONS.ShowLanguageSelection = function(){
    var languageselection = $("#languageselection");
    var languageselectionLink = languageselection.find("> a:first");
    var languageselectionDiv = languageselection.find("> div:first");
    
    languageselection.hover(function(){
        languageselectionDiv.show();
    }, function(){
        languageselectionDiv.hide();
    });
    
    languageselectionDiv.hide();
};

FUNCTIONS.ShowMainMenu = function(){
    $("#primary-links > li").hover(function(){
        var item = $(this);
        
        item.addClass("hover").find("> ul").slideDown(200, function(){$(this).css("padding-bottom", "");});
    }, function(){
        var item = $(this);
        
        item.removeClass("hover").find("> ul").stop().css("height", "auto").hide();
    });
};

FUNCTIONS.StartPageQuickMenu = function() {
    var quickmenu = $("#startpage-quickmenu");

    if (!quickmenu.length) {
        return;
    }

    quickmenu.find("li:first-child").addClass("first");
    quickmenu.find("li:last-child").addClass("last");

    var column = [
        {}, // skip index:0 to have 1-based index like the puffs
        quickmenu.find("div.puff-1"),
        quickmenu.find("div.puff-2"),
        quickmenu.find("div.puff-3"),
        quickmenu.find("div.puff-4")
    ];

    $("#startpage-quickmenu div.puff ul.normal").each(function() {
        var list = $(this);

        var items = list.find("> li");

        if (items.length > 4) {
            items.not(":eq(0),:eq(1),:eq(2),:eq(3)").hide();
            list.append("<li class=\"more\"></li>");
        }
    });

    var leftSide = column[1];

    var rightSide = $().add(column[2]).add(column[3]).add(column[4]);

    leftSide.find("h2").add(rightSide.find("h2")).equalizeHeights({
        setHeightOfElement: function(options, element, height) {
            var elementHeight = element.height();

            var elementHeightDiff = height - elementHeight;

            element.css("cssText", "padding-top: " + (elementHeightDiff / 2) + "px !important;" + "padding-bottom: " + (elementHeightDiff / 2) + "px !important;");
        }
    });

    rightSide.find("ul.normal").add(leftSide.find("ul.normal")).equalizeHeights();

    rightSide.find("div.wrapper").equalizeHeights();

    leftSideHeight = leftSide.height();
    rightSideHeight = rightSide.height();

    heightOfTallestSide = Math.max(leftSideHeight, rightSideHeight);

    leftSide.find("div.wrapper").add(rightSide.find("div.wrapper")).css("height", (heightOfTallestSide + 23) + "px");

    // ticker

    FUNCTIONS.StartPageTicker();
};

FUNCTIONS.StartPageTicker = function(){
    var quickmenu = $("#startpage-quickmenu");
    
    var ticker = $("<div class=\"ticker\"></div>");
    var tickerWrap = $("<div class=\"wrapper\"></div>").appendTo(ticker);
    
    var matches = document.body.className.match(/lang-(..)/);
    
    if(!matches){
        return;
    }
    
    $.post("/Templates/services/Ticker.asmx/GetItems", {LanguageID:matches[1]}, function(data){
        tickerWrap.append("<h2><a href=\"" + $(data).find("LinkURL:first").contents().text() + "\">" + $(data).find("Text:first").contents().text() + "</a></h2>")
        
        $(data).find("TickerItem:not(:first)").each(function(){
            tickerWrap.append("<a href=\"" + $(this).find("LinkURL").contents().text() + "\" class=\"text\"><span>" + $(this).find("Text").contents().text() + "</span></a>");
        });
        
        ticker.addCorners();
        
        ticker.appendTo(quickmenu);
        
        ticker.find("a.text").ticker({
            showElement:function(options, oldElement, newElement, doneCallback){
		        if($.browser.msie && $.browser.version < 7){
		            oldElement.hide();
		            newElement.show();
		            doneCallback();
		            return;
		        }
		        
                oldElement.find("span").css("left", "0");
                newElement.find("span").css("left", "500px");
                newElement.show();
                
                oldElement.find("span").animate({left:"-500px"},{duration:500});
                newElement.find("span").animate({left:"0"},{
                    duration:500,
                    complete:function(){
                        oldElement.hide();
                        doneCallback();
                    }
                });
		    },
		    mouseOverElements:ticker
        });
    });
}

FUNCTIONS.StartPageSlideshow = function(){
    if(!$("#startpage").length){
        return;
    }
    var matches = document.body.className.match(/lang-(..)/);
    
    if(!matches){
        return;
    }
    $.post("/Templates/services/SlideShow.asmx/GetItems", {LanguageID:matches[1]}, function(data){
        var slideshow = $("<div class=\"slideshow puff-list\"></div>");
        
        var slideshowPuff = $("<div class=\"puff\"></div>").appendTo(slideshow);
        
        var items = $("<ul class=\"items\"></ul>");
        
        items.children().not(":first").hide();
        
        items.appendTo(slideshowPuff);
        
        var menu = $("<ul class=\"menu\"></ul>");
        
        menu.appendTo(slideshowPuff);
        
        
        
        slideshowPuff.addCorners();
        
        
        
        $(data).find("SlideShowItem").each(function(i){
            items.append("<li><h2><a href=\"" + $(this).find("LinkURL").contents().text() + "\"><img src=\"" + $(this).find("ImageURL").contents().text() + "\" alt=\"\"><span>" + $(this).find("Text").contents().text() + "</span></a></h2></li>");
            menu.append("<li><a href=\"" + $(this).find("LinkURL").contents().text() + "\">" + (i + 1) + "</a></li>");
        });
        
        menu.find("li:first a").addClass("active");
        
        $("#startpage #content-inner").prepend(slideshow);
        
        if($.browser.msie && $.browser.version < 7){
            setTimeout(function(){
                var height = slideshowPuff.height();
                
                if(height % 2 == 1){
                    slideshowPuff.addClass("uneven-height");
                }
                
                var width = slideshowPuff.width();
                
                if(width % 2 == 1){
                    slideshowPuff.addClass("uneven-width");
                }
            }, 100);
        }
        
        var options = items.children().ticker({
		    showElement:function(options, oldElement, newElement, doneCallback){
		        if($.browser.msie && $.browser.version < 7){
		            oldElement.hide();
		            newElement.show();
		            doneCallback();
		            return;
		        }
		        
                oldElement.add(slideshowPuff.find("div.corner-ne")).fadeOut(500, function(){
                    var newElementIndex = options._items.index(newElement);
                    
                    menu.find("li a.active").removeClass("active");
                    menu.find("li").eq(newElementIndex).find("a").addClass("active");
                    
                    newElement.add(slideshowPuff.find("div.corner-ne")).fadeIn(500, function(){
                        doneCallback();
                    });
                });
		    },
		    mouseOverElements:slideshow
        });
        
        menu.children().click(function(){
            var menuItem = $(this);
            
            options.showElement.apply(options._this, Array(options, items.find("li:visible"), options._items.eq(menuItem.index()), function(){
                options._startTicker.apply(options._this, Array(options));
            }));
            
            return false;
        });
    });
};

FUNCTIONS.StartPage = function(){
    FUNCTIONS.StartPageQuickMenu();
    FUNCTIONS.StartPageSlideshow();
};

/* TOOLTIP */
FUNCTIONS.Tooltip = function(){
    var options = {
        attributeForDescription:"rel",
        beforeRender:function(){
            $("#tooltip-content").wrapInner("<p/>").prepend("<span>" + "<em>" + "<a href=\"" + this.attr("href") + "\">" + this.html() + "</a>" + "</em>" + "</span>");
        },
        position:function(){
		    var link = $(this);
			var offset = link.offset();
			
			var contentOffset = $("#content").offset();
			
			var tooltip = $("#tooltip");
			tooltip.css("left", (offset.left - contentOffset.left) + "px");
			tooltip.css("top", (offset.top) + "px");
		}
    };
    
    $('#main p.intro a[name=tooltip]')
        .tooltip($.extend({theme:"posten-large"}, options));
    
    $('#main a[name=tooltip]')
        .not("#main p.intro a[name=tooltip]")
        .tooltip($.extend({theme:"posten"}, options));
};

/*PUSH AREA AUTO SLIDE*/
FUNCTIONS.PushAutoSlide = function(time, elms) {
    if (SYS.pushTimeout > 0) clearTimeout(SYS.pushTimeout);
    SYS.pushTimeout = setTimeout(function() {
        SYS.pushRunningCount++;
		if (SYS.pushRunningCount > $(elms).siblings().length - 1) {
            SYS.pushRunningCount = 0;
        }
        $(elms).eq(SYS.pushRunningCount).trigger('click');
        FUNCTIONS.PushAutoSlide(SYS.pushRunning, elms);
    }, time);
};

/*MODAL POPUP*/
FUNCTIONS.Modal = function() {
    $('body').append('<div id="fade" />');
    var fade = ('#fade');
    $(fade).css({
        width: SYS.winWidth,
        height: SYS.docHeight,
        opacity: 0
    });
    $(fade).fadeTo('normal', 0.6, function() {
		 $('body').append('<div id="modal" class="modal"><span id="close"><span>Close X</span></span></div>');
		 $('#modal').css({
			top: SYS.winHeight / 2 - $('#modal').height() / 2,
			left: SYS.winWidth / 2 - $('#modal').width() / 2
		});
	});
	$(fade + ', #close').live('click', function() {
        $(fade).nextAll().remove();
        $(fade).remove();
    });
};
FUNCTIONS.ModalUpdate = function() {
    $('#fade').css({
        width: SYS.winWidth,
        height: SYS.docHeight
    });
    $('#modal').css({
        left: SYS.winWidth / 2 - $('#modal').width() / 2
    });
};

/*FAQ TABS*/

$(function () {
	var tabContainers = $('#faq #main #section > div');
	tabContainers.hide().filter(':first').show();

	$('#faq ul#tabs a').click(function () {
		tabContainers.hide();
		tabContainers.filter(this.hash).show();
		$('#faq ul#tabs a').removeClass('selected');
		$(this).addClass('selected');
		return false;
	}).filter(':first').click();
});

/* Expand function */

$(document).ready(function() {
    $('body#faq #section dd').hide();
    $('body#faq #section dt').click(function() {
        if($(this).is(".expanded")){
            $(this).removeClass("expanded");
            $(this).next().slideUp("fast");
            return false;
        }
        
        $('body#faq #section dd:visible').slideUp('fast');
        $(this).next('dd').slideDown('fast');
        $('body#faq #section dt').removeClass('expanded');
        $(this).addClass('expanded');
    });
});

/* Press Release Subscription*/
function ClearViewState()
{
	var viewState;
	for(i=0;i<document.forms.length;i++)
	{
		viewState = document.forms[i].__VIEWSTATE;
		if(viewState!=null)
		{
			viewState.name = "__VIEWSTATE_Disabled";
			viewState.value = "";
		}
	}
}
var getElementsByClassName = function(a, b, c) { var d = (b == '*' && a.all) ? a.all : a.getElementsByTagName(b), arrReturnElements = new Array(); c = c.replace(/\-/g, '\\-'); var e = new RegExp('(^|\\s)' + c + '(\\s|$)'), oElement = null; for (var i = 0, n = d.length; i < n; i++) { oElement = d[i]; if (e.test(oElement.className)) arrReturnElements.push(oElement) }; return (arrReturnElements) };
var END_OF_INPUT=-1;
var reverseBase64Chars=new Array();
var base64Str;
var base64Count;
function initEmail() {
    
	var links = getElementsByClassName(document, 'a', 'email'); if (!links) return;
	
	var base64Chars = new Array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/');
	for (var i = 0, n = base64Chars.length; i < n; i++) { reverseBase64Chars[base64Chars[i]] = i };
	for (var i = 0, n = links.length; i < n; i++) {
		var link = links[i];
		if (link) {
			if (!link.title) return;
			email = decodeBase64(link.title);

			if (email.indexOf("@") == -1) {
			    return;
			}
			
			email2 = email.replace(/ /g, '');
			link.href = 'mailto:' + email2;
			link.title = email2;
			//link.innerHTML = email;
		}
	}
}
function setBase64Str(str){base64Str=str;base64Count=0}
function readReverseBase64(){   
	if(!base64Str) return END_OF_INPUT;
	while(true){      
		if(base64Count >= base64Str.length) return END_OF_INPUT;
		var nextCharacter=base64Str.charAt(base64Count);
		base64Count++;
		if(reverseBase64Chars[nextCharacter]) return reverseBase64Chars[nextCharacter];
		if(nextCharacter=='A') return 0;
	}
	return END_OF_INPUT;
}
function ntos(n){
	n=n^9;
	n=n.toString(16);
	if(n.length==1) n='0'+n;
	n='%'+n;
	return unescape(n);
}
function decodeBase64(str){
	setBase64Str(str);
	var result='',inBuffer=new Array(4),done=false;
	while(!done && (inBuffer[0]=readReverseBase64()) != END_OF_INPUT && (inBuffer[1]=readReverseBase64()) != END_OF_INPUT){
		inBuffer[2]=readReverseBase64();
		inBuffer[3]=readReverseBase64();
		result+= ntos((((inBuffer[0] << 2) & 0xff)| inBuffer[1] >> 4));
		if(inBuffer[2] != END_OF_INPUT){
			result+=  ntos((((inBuffer[1] << 4) & 0xff)| inBuffer[2] >> 2));
			if(inBuffer[3] != END_OF_INPUT){result+=  ntos((((inBuffer[2] << 6) & 0xff) | inBuffer[3]))}
			else{done=true}
		}else{
			done=true;
		}
	}
	return result;
};

function SendRequest(action)
{
    //http://feed.ne.cision.com/client/PostenNorden/templates/presssubscription.aspx?wpyRedirectSubcriptionStartSuccess=../templates/succeededstart.aspx&wpyReplylanguage=en&wpyLanguage=en&wpyReleaseTypes=prm&wpyEmail=nicolas.erixson@halvarsson.se&wpySubscribeAction=begin 
   
    
    var values = "?";
    
    $("#subscribe input").each(function(){
        var input = $(this);
        
        if(values != "?"){
            values += "&";
        }
        
        if(input.attr("type") == "checkbox"){
            if(!input.is(":checked")){
                return;
            }
        }
        
        values += input.attr("name") + "=" + input.val();
    });
    values += "&wpySubscribeAction=" + action;
    
    
    $.get("http://feed.ne.cision.com/client/PostenNorden/Subscribe/subscribe.aspx" + values, {}, function(data){
            
       
       });
    
   
}

//function SendRequest(action)
//{
//   
//    var values = "";
//    
//    $("#subscribe input").each(function(){
//        var input = $(this);
//        
//       
//        
//        if(input.attr("type") == "checkbox"){
//            if(!input.is(":checked")){
//                return;
//            }
//        } 
//        if(values != ""){
//            values += ",";
//        }
//        
//        values += input.attr("name") + ":" + input.val();
//    });
//    values += "wpySubscribeAction:" + action;
//    values = "{" + values + "}";
//    
//    alert(values);
//    
//    $.post("http://feed.ne.cision.com/client/PostenNorden/Subscribe/subscribe.aspx", values, function(data){
//            
//       alert(data);
//       });
//    
//   
//}

function UnSubscribe()
{
	SendRequest('end');
}

function Subscribe()
{
	SendRequest('begin');
}
