﻿jQuery(document).ready(function() {

    // Adjust padding for the ImageGallery portlet for sites using the old design (not the new norwegian design)
    var lang = $('html').attr('lang');
    if (lang != 'no') {
        //  If the startpage top portlet area is using the ImageGallery, adjust some padding
        if ($('#StartpageTopPortletAreaLeft .first-portlet').has('.media-carousel-vertical-gradient')) {
            $('#content_wrapper').css('padding-top', '10px');
        }
    }

    jQuery(".no-script").hide();
    jQuery("#content_wrapper #content #maincontent #contentareaportlets #mediaCoverage table .columnTwo div").hide();

    jQuery("#content_wrapper #content #maincontent #contentareaportlets #mediaCoverage table tbody tr td.columnTwo a").click(function() {
        jQuery(this).siblings("div").slideToggle("slow");
    });

    jQuery("#trigger_print").attr("href", "javascript:window.print()");

    jQuery("#StyleLarger").click(function() {
        if (!jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize1") &&
            !jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize2") &&
            !jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize3")) {
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").addClass("textsize1");
        } else if (jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize1")) {
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").removeClass("textsize1 textsize3");
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").addClass("textsize2");
        } else if (jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize2")) {
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").removeClass("textsize1 textsize2");
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").addClass("textsize3");
        }
        if (!jQuery("#maincontent .textcontent").hasClass("textsize1") &&
            !jQuery("#maincontent .textcontent").hasClass("textsize2") &&
            !jQuery("#maincontent .textcontent").hasClass("textsize3")) {
            jQuery("#maincontent .textcontent").addClass("textsize1");
        } else if (jQuery("#maincontent .textcontent").hasClass("textsize1")) {
            jQuery("#maincontent .textcontent").removeClass("textsize1 textsize3");
            jQuery("#maincontent .textcontent").addClass("textsize2");
        } else if (jQuery("#maincontent .textcontent").hasClass("textsize2")) {
            jQuery("#maincontent .textcontent").removeClass("textsize1 textsize2");
            jQuery("#maincontent .textcontent").addClass("textsize3");
        }
    });

    jQuery("#StyleLess").click(function() {
        if (jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize3")) {
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").removeClass("textsize1 textsize3");
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").addClass("textsize2");
        } else if (jQuery("#StartpageBottomPortletAreaLeft .textcontent").hasClass("textsize2")) {
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").removeClass("textsize2 textsize3");
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").addClass("textsize1");
        } else {
            jQuery("#StartpageBottomPortletAreaLeft .textcontent").removeClass("textsize1 textsize2 textsize3");
        }
        if (jQuery("#maincontent .textcontent").hasClass("textsize3")) {
            jQuery("#maincontent .textcontent").removeClass("textsize1 textsize3");
            jQuery("#maincontent .textcontent").addClass("textsize2");
        } else if (jQuery("#maincontent .textcontent").hasClass("textsize2")) {
            jQuery("#maincontent .textcontent").removeClass("textsize2 textsize3");
            jQuery("#maincontent .textcontent").addClass("textsize1");
        } else {
            jQuery("#maincontent .textcontent").removeClass("textsize1 textsize2 textsize3");
        }
    });
    var parseUri = {
        options: {
            strictMode: true,
            key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
            q: {
                name: "queryKey",
                parser: /(?:^|&)([^&=]*)=?([^&]*)/g
            },
            parser: {
                strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
                loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
            }
        },
        parseUri: function(value) {
            var o = parseUri.options,
			m = o.parser[o.strictMode ? "strict" : "loose"].exec(value),
			uri = {},
			i = 14;
            while (i--) {
                uri[o.key[i]] = m[i] || "";
            }
            uri[o.q.name] = {};
            uri[o.key[12]].replace(o.q.parser, function($0, $1, $2) {
                if ($1) {
                    uri[o.q.name][$1] = $2;
                }
            });
            return uri;
        }
    };


	jQuery("a[href^='http']")
		.filter(function(index) {
			var href = jQuery(this).attr("href");
			if (href) {
				var hrefHost = parseUri.parseUri(href).host;
				if (hrefHost !== "" && hrefHost != document.location.hostname && hrefHost != "www." + document.location.hostname && hrefHost != document.location.hostname.replace("www.", "")) {
					jQuery(this).attr("rel", "external");
					return true;
				}
			}
			return false;
		})
		.click(function() {
			this.target = "_blank";
		});

    jQuery.fn.IsExternalLink = function(href, rel) {
        if (document.location.pathname != null) {
            var host = document.location.href.substring(0, document.location.href.indexOf(document.location.pathname));
            if (href.indexOf(host) == 0) {
                return false;
            }
        }
        var s = href.substring(0, 1);
        return (rel == "external" || (s != "/" && s != "#"));
    }


    jQuery("a[href^='http']")
        .filter(function(index) {
            var globalCorporateArr = ContentHandler.GlobalSites.split(',');
            for (var i = 0; i < globalCorporateArr.length; i++) {
                if (jQuery(this).attr("href").indexOf(globalCorporateArr[i]) > -1) {
                    return true;
                }
            }
            return false;
        })
        .click(function() {
            if (ContentHandler.ExitAlertMessageCorporate != "") {
                if (!confirm(ContentHandler.ExitAlertMessageCorporate)) {
                    return false;
                } else {
                    //alert("External corporate");
                    href = $(this).attr("href");
                    $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
                }
            } else {
                href = $(this).attr("href");
                $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
            }
        });

    jQuery("a[href^='http']")
        .filter(function(index) {
            var localCorporateArr = ContentHandler.LocalSites.split(',');
            for (var i = 0; i < localCorporateArr.length; i++) {
                if (jQuery(this).attr("href").indexOf(localCorporateArr[i]) > -1) {
                    return true;
                }
            }
            return false;
        })
        .click(function() {
            if (ContentHandler.ExitAlertMessageCorporateLocal != "") {
                if (ContentHandler.LocalSites != "") {
                    if (!confirm(ContentHandler.ExitAlertMessageCorporateLocal)) {
                        return false;
                    } else {
                        //alert("External corporate local");
                        href = $(this).attr("href");
                        $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
                    }
                } else {
                    href = $(this).attr("href");
                    $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
                }
            } else {
                href = $(this).attr("href");
                $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
            }
        });

    jQuery("a[href^='http']")
        .filter(function(index) {
            if (ContentHandler.GlobalSites != "" || ContentHandler.LocalSites != "") {
                var allCorporateStr = "";
                if (ContentHandler.GlobalSites != "") {
                    allCorporateStr += ContentHandler.GlobalSites;
                }
                if (ContentHandler.LocalSites != "") {
                    if (allCorporateStr != "") {
                        allCorporateStr += ",";
                    }
                    allCorporateStr += ContentHandler.LocalSites;
                }

                var allCorporateArr = allCorporateStr.split(',');
                if (allCorporateArr != "") {
                    for (var i = 0; i < allCorporateArr.length; i++) {
                        if (jQuery(this).attr("href").indexOf(allCorporateArr[i]) > -1) {
                            return false;
                        }
                    }
                }
            }
            return true;
        })
        .click(function() {
            if (ContentHandler.ExitAlertMessageGeneral != "") {
                if (!confirm(ContentHandler.ExitAlertMessageGeneral)) {
                    return false;
                } else {
                    //alert("External");
                    href = $(this).attr("href");
                    $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
                }
            } else {
                href = $(this).attr("href");
                $(this).gaTrack({ category: "Page activities", action: "Leave site", label: href, value: 1, triggerClick: true });
            }
        });

    if (jQuery.browser.msie) {
        jQuery("a[href$=xls]").addClass("xls");
        jQuery("a[href$=xlsx]").addClass("xls");
        jQuery("a[href$=docx]").addClass("doc");
        jQuery("a[href$=doc]").addClass("doc");
        jQuery("a[href$=pptx]").addClass("ppt");
        jQuery("a[href$=ppt]").addClass("ppt");
        jQuery("a[href$=pdf]").addClass("pdf");
    }

    // Tracking
    // use guerystring "gaMode=test" to see objects with events
    if (typeof (pageTracker) !== 'undefined') {
        jQuery(".documentlist a, .orderportlet a.link").trackDocumentDownload();
		jQuery("a[href$=pdf], a[href$=ppt], a[href$=pptx], a[href$=doc], a[href$=docx], a[href$=xls], a[href$=xlsx]").trackDocumentDownload();
        jQuery(".print").trackPrintPage();
        jQuery("#StyleLarger").trackTextLarger();
        jQuery("#StyleLess").trackTextSmaller();
        jQuery(".tipafriend button").trackTipAFriend();
        jQuery(".simplequestionform").trackQuestionForm();
        jQuery(".contactform").trackContactForm();
        jQuery(".orderportlet.order-sent").trackOrders();
    }
});

jQuery.fn.trackTextLarger =  function(){	    
    obj = $(this);
    obj.each(function(){
        $(this).gaTrack({category: "Page activities", action: "Text size larger", label: "Larger", value: 1});
    });
};
jQuery.fn.trackTextSmaller =  function(){	    
    obj = $(this);
    obj.each(function(){
        $(this).gaTrack({category: "Page activities", action: "Text size smaller", label: "Smaller", value: 1});
    });
};
jQuery.fn.trackPrintPage =  function(){
    obj = $(this);
    obj.each(function(){
        var title = document.title;
        $(this).gaTrack({category: "Page activities", action: "Print", label: title, value: 1});
    });
};
jQuery.fn.trackTipAFriend =  function(){	    
    obj = $(this);
    obj.each(function(){
        $(this).gaTrack({category: "Portlet functions", action: "Tip a friend", value: 1});
    });
}
jQuery.fn.trackQuestionForm =  function(){	    
    obj = $(this);
    obj.each(function(){
        var name = $(this).find("h1").text();
        $(this).find("button").gaTrack({category: "Portlet functions", action: "Question form", label: name, value: 1});
    });
};
jQuery.fn.trackContactForm =  function(){	    
    obj = $(this);
    obj.each(function(){
        var name = $(this).find("h1").text();
        $(this).find("button").gaTrack({category: "Portlet functions", action: "Contact form", label: name, value: 1});
    });
};
jQuery.fn.trackDocumentDownload =  function(){	    
    obj = $(this);
    obj.each(function(){
        var filename = gaGetFileName($(this).attr("href"));
        $(this).gaTrack({category: "Documents", action: "Download", label: filename, value: 1});
    });
};
jQuery.fn.trackOrders =  function(){	    
    obj = $(this);
    if(obj.size() > 0){
        obj.find(".orderitems li").each(function(){
            var amount = parseInt($(this).find("span.amount").text(),10);
            var productText = $(this).text();
            productText = productText.substr(productText.indexOf("st")+2,productText.length).replace(/^\s+|\s+$/g, '');
            $(this).gaTrack({category: "Downloads", action: "Order", label: productText, value: amount, triggerClick: true});
        });
    }
    
};
