﻿$.na = $.na || { studsvik: {} };

studsvik =
{
    init: function () {
        $('body').removeClass('no-js');
        $(".startpagemodulesection .puff:nth-child(3)").addClass('last');
        $(".substartpagemodulesection .puff:even").addClass('last');
        //remove border for last li
        $('.widelist ul li:last-child').addClass('noborder');
        $('.list ul li:last-child').addClass('noborder');
        if (window.top.location == window.location) {
            studsvik.compensateVerticalScroll();
            $(window).bind('resize', function () {
                studsvik.compensateVerticalScroll();
            });
        }
    },
    compensateVerticalScroll: function () {
        var div = $('<div style="width:50px;height:50px;overflow:hidden;position:absolute;top:-200px;left:-200px;"><div style="height:100px;"></div>');
        //Append our div, do our calculation and then remove it
        $('body').append(div);
        var w1 = $('div', div).innerWidth();
        div.css('overflow-y', 'scroll');
        var w2 = $('div', div).innerWidth();
        $(div).remove();
        var dif = (w1 - w2) > 0 ? (w1 - w2) : 17;
        $('body').css('overflow-x', 'hidden')
        var ww = $(window).width();
        $('html').css('position', 'relative').css('width', (ww) + "px");
        if ($(document).height() > $(window).height() && !$.browser.msie) {
            $('html').css('width', (ww + dif) + "px").css('overflow-x', 'hidden');
        }
        if ($('body').height() > $(window).height() && $.browser.msie && (jQuery.browser.version.substr(0, 1) == "8")) {
            $('body').css('position', 'relative').css('width', (ww + dif) + "px").css('overflow-x', 'hidden');
        }

    },
    mainMenu:
    {
        config: {
            over: function (e) { $.na.studsvik.mainMenu.showSubNav(e); },
            timeout: 400,
            out: function () { $.na.studsvik.mainMenu.hideSubNav(); }
        },

        init: function () {
            //padd the menu to fit pagesize
            studsvik.mainMenu.paddWidth();
            //add hover function
            $("ul.topnav li.unselected").has('ul').hoverIntent(studsvik.mainMenu.config);
            //set first & last classes
            $("ul.topnav>li:first-child").addClass('first');
            $("ul.subnav>li:first-child").addClass('first');
            $("ul.topnav>li:last-child").addClass('last');
            //add different behavior for items
            $("ul.topnav li ul li:not(:last-child)").each(function () {
                $(this).click(function () {
                    var href = $(this).find('a').attr('href');
                    top.window.location = href;
                });
            });
            $("ul.topnav li ul li:last-child").find('img').click(function () {
                var href = $(this).siblings('a:first').attr('href');
                top.window.location = href;
            });
        },

        showSubNav: function (e) {
            $(e.currentTarget).addClass('hover').find('ul.subnav').addClass('hover').slideDown('fast');
        },

        hideSubNav: function () {
            $('ul.subnav.hover').removeClass('hover').slideUp('medium').parent('.hover').removeClass('hover');
        },

        paddWidth: function () {
            var mmwidth = ($("#MainMenu").innerWidth() - $("ul.topnav").innerWidth());
            var nrofmmli = $("ul.topnav>li").length;
            var lipadding = (mmwidth / nrofmmli);
            if (lipadding > 72) {
                $("ul.topnav").addClass("notable");
                return;
            }
            var crumbs = 0;
            $("ul.topnav>li>a").each(function () {
                var currentpadding = $(this).css('padding-left');
                currentpadding = 17 + (lipadding / 2);
                var newpadding = Math.floor(currentpadding);
                crumbs = crumbs + (currentpadding - newpadding);
                $(this).css('padding-left', newpadding + "px").css('padding-right', newpadding + "px");
            });
        }
    },
    slideShow:
    {
        config: {
            easing: 'swing',
            items: '#rotator',
            speed: 600,
            circular: true,
            next: '.next',
            prev: '.prev'
        },
        navconfig:
        {
            navi: '.slidetabs'
        },
        init: function () {
            //slideshow rotator
            $(".rotator-wrapper").scrollable(studsvik.slideShow.config).navigator(studsvik.slideShow.navconfig);
        }

    },
    startPageSlideShow:
    {
        lastSlide: {
            lastindex: 0,
            get: function () {
                return studsvik.startPageSlideShow.lastSlide.lastindex;
            },
            set: function (v) {
                studsvik.startPageSlideShow.lastSlide.lastindex = v;
            }
        },
        config:
        {
            // enable "cross-fading" effect
            //initialIndex: 0,
            effect: 'fade',
            //current: 'selected',
            fadeOutSpeed: "slow",
            fadeInSpeed: "slow",
            //tab selector
            tabs: 'li',
            //eventhandlers 
            onBeforeClick: function (event, tabIndex) {
                //console.log(studsvik.startPageSlideShow.lastSlide.get());
                this.getTabs().eq(studsvik.startPageSlideShow.lastSlide.get()).find('div.fade').fadeIn('slow');
                this.getPanes().eq(studsvik.startPageSlideShow.lastSlide.get()).find('.text-wrap').hide();
                this.getTabs().eq(tabIndex).find('div.fade').fadeOut('slow');
                this.getPanes().eq(tabIndex).find('.text-wrap').fadeIn();
                studsvik.startPageSlideShow.lastSlide.set(tabIndex);
            },
            //onClick: function (event, tabIndex) { console.log(tabIndex);},
            // start from the beginning after the last tab
            rotate: true
            // use the slideshow plugin. 
        },
        slideconfig:
        {
            interval: 10000,
            autoplay: true
        },
        init: function () {
            //Slideshow  
            studsvik.startPageSlideShow.setLastSlide = 1;
            $(".slide-navigation").tabs(".slide-window > li", studsvik.startPageSlideShow.config).slideshow(studsvik.startPageSlideShow.slideconfig);
            $(".slide-navigation li:last").addClass('last');

            $(".slide-window li").each(function () {
                $(this).click(function () {
                    var href = $(this).find('a').attr('href');
                    top.window.location = href;
                });
            });
            //add exception on last slide couse it has different behavior
            $(".slide-window li:not(:last-child)").addClass('linkmarker');
        }
    },
    languageSelector:
    {
        init: function () {
            //language selector;
            $('#Languages ul').hide();
            $('#Languages').prepend("<a href=\"#\" class=\"langselector\">&nbsp;</a>");
            $('#Languages a.langselector').toggle(function () {
                $(this).addClass('open');
                $('#Languages ul').show().parent('.langwrapper').addClass('open');
            }, function () {
                $(this).removeClass('open');
                $('#Languages ul').hide().parent('.langwrapper').removeClass('open');
            });
        }

    },
    expandableLists:
    {
        init: function () {
            //view more
            var vm = $('input[type=hidden]#ViewMore').val();
            var vl = $('input[type=hidden]#ViewLess').val();
            $(".open-close").click(function () {
                if ($(this).hasClass('minus')) {
                    $(this).text(vm).removeClass('minus').parent().siblings('ul:not(.hidden)').addClass('minheight').find('li:last-child').addClass('noborder').parent().siblings('ul.hidden').slideUp().find('li:last-child').removeClass('noborder');
                }
                else {
                    $(this).text(vl).addClass('minus').parent().siblings('ul').removeClass('minheight').find('li:last-child').removeClass('noborder').parent().siblings('ul.hidden:not(:visible)').slideDown().find('li:last-child').addClass('noborder');
                }
                return false;
            });
        }
    },
    xFormExtentions:
    {
        init: function () {
            $("#id_matrix input[type=submit]").wrap("<div class=\"button-wrapper\"></div>")
            $("#id_matrix input[type=button]").wrap("<div class=\"button-wrapper\"></div>")
            $("#id_matrix select").each(function (e) {
                $(this).hide();
                var uid = e;
                var selectwrap = document.createElement('div');
                var selectwrapul = document.createElement('ul');
                var targetdll = $(this).attr("id");
                selectwrap.className = "styled-select-x";
                var selectedtext = $(this).find('option:first').attr('text');
                selectwrap.innerHTML = "<a href=\"#\" id=\"xformselector" + uid + "\" class=\"ddlselector\"><span>" + selectedtext + "</span></a>";

                $(this).find('option').each(function () {
                    var listitem = document.createElement('li');
                    var link = document.createElement('a');
                    if ($(this).attr('text') == selectedtext) {
                        listitem.className = "hidden";
                    }
                    link.href = "#" + $(this).attr('value');
                    link.innerHTML = $(this).attr('text');
                    listitem.appendChild(link);
                    selectwrapul.appendChild(listitem);

                });
                selectwrap.appendChild(selectwrapul);
                $(this).after(selectwrap);
                $('#xformselector' + uid).toggle(function () {
                    $(this).addClass('open').siblings('ul').show().addClass('open');
                    return false;
                }, function () {
                    $(this).removeClass('open').siblings('ul').hide().removeClass('open');
                    return false;
                });
            });
            $('.styled-select-x ul li a').each(function () {
                $(this).click(function () {
                    var selval = $(this).attr('href').replace("#", "");
                    var selectortext = $(this).text();
                    $(this).parent().parent().parent().siblings('select').val(selval).change();

                    $('#xformselector' + uid).find('span').text(selectortext);

                    $('#xformselector' + uid).click();
                    return false;
                });
            });
            $(document).bind('click', function (e) {
                var $clicked = $(e.target);
                if (!$clicked.parents().hasClass("styled-select-x"))
                // $(".styled-select-x .ddlselector").removeClass('open').siblings('ul').hide().removeClass('open');
                    $(".styled-select-x a.ddlselector.open").click();
            });
        }
    },
    customInputBoxes:
    {
        checkboxconfig:
        {
            cls: 'jquery-checkbox',
            empty: '/Templates/Styles/images/empty.png'
        },
        radiobuttonconfig:
        {
            cls: 'jquery-radio',
            empty: '/Templates/Styles/images/empty.png'
        },
        init: function () {
            studsvik.customInputBoxes.initCheckboxes();
            studsvik.customInputBoxes.initRadioButtons();
        },
        initCheckboxes: function () {
            $('input:checkbox').checkbox(studsvik.customInputBoxes.checkboxconfig);
        },
        initRadioButtons: function () {
            $('input:radio').checkbox(studsvik.customInputBoxes.radiobuttonconfig);
        }
    },
    customDropDown: {

        init: function () {

            //avalible position country filter
            $("select.js-replace").each(function () {
                $(this).hide();
                var selectwrap = document.createElement('div');
                var selectwrapul = document.createElement('ul');
                var selectorprefix = $(this).parent().attr('class');
                selectwrap.className = "styled-select";
                var selectedtext = $(this).find('option:selected').attr('text');
                var selectedval = $(this).find('option:selected').attr('value');
                selectwrap.innerHTML = "<a href=\"#" + selectedval + "\" id=\"" + selectorprefix + "selector\" class=\"ddlselector\"><span>" + selectedtext + "</span></a>";
                $(this).find('option').each(function () {
                    var listitem = document.createElement('li');
                    var link = document.createElement('a');
                    if ($(this).attr('text') == selectedtext) {
                        listitem.className = "hidden";
                    }
                    link.href = "#" + $(this).attr('value');
                    link.innerHTML = $(this).attr('text');
                    listitem.appendChild(link);
                    selectwrapul.appendChild(listitem);

                });
                selectwrap.appendChild(selectwrapul);
                $(this).after(selectwrap);
                $("#" + selectorprefix + "selector").toggle(function () {
                    $('a.ddlselector.open').click();
                    $(this).addClass('open').siblings('ul').show().addClass('open');
                    return false;
                }, function () {
                    $(this).removeClass('open').siblings('ul').hide().removeClass('open');
                    return false;
                });
            });

            $('.styled-select ul li a').each(function () {
                $(this).click(function () {
                    var baseclass = $(this).parent().parent().parent().parent().parent().attr('id');

                    var selectortext = $(this).text();
                    var selectorval = $(this).attr('href');
                    $(this).parent().parent().siblings('.ddlselector').find('span').text(selectortext);
                    $(this).parent().parent().siblings('.ddlselector').attr('href', selectorval);

                    var cntry = "";

                    $("#StageArea .ddlselector").each(function (e) {
                        if ($(this).attr('href') != "#-")
                            cntry += $(this).attr('href').replace("#", ".");
                    });

                    $(this).parent().parent().parent().siblings('select').val($(this).attr('href').replace("#", "")).change();

                    $('.noborder').removeClass('noborder');
                    $('li.' + baseclass).each(function () {
                        if (cntry == ".-" || cntry == "." || cntry == "") {
                            $(this).show(); //Show all country regions
                        }
                        else {
                            $(this).hide(); //Hide all country regions
                        }
                    });

                    if (cntry != "" && cntry != ".")
                        $("li" + cntry).show(); //Show selected
                    $('li.' + baseclass).filter(':visible').filter(':last').addClass('noborder');

                    $(this).parent().parent().siblings('.ddlselector').click();
                    $(this).parent().parent().find('li').each(function () {
                        $(this).removeClass("hidden");
                        if ($(this).find('a').text() == selectortext) {
                            $(this).addClass("hidden");
                        }
                    });
                    return false;
                });
            });
            $("select.js-replace2").each(function () {
                $(this).hide();
                var selectwrap = document.createElement('div');
                var selectwrapul = document.createElement('ul');

                selectwrap.className = "styled-select2";
                var selectedtext = $(this).find('option:first').attr('text');
                selectwrap.innerHTML = "<a href=\"#\" id=\"countryselector\" class=\"ddlselector\"><span>" + selectedtext + "</span></a>";

                $(this).find('option').each(function () {
                    var listitem = document.createElement('li');
                    var link = document.createElement('a');
                    if ($(this).attr('text') == selectedtext) {
                        listitem.className = "hidden";
                    }
                    link.href = "#" + $(this).attr('value');
                    link.innerHTML = $(this).attr('text');
                    listitem.appendChild(link);
                    selectwrapul.appendChild(listitem);

                });
                selectwrap.appendChild(selectwrapul);
                $(this).after(selectwrap);
                $('#countryselector').toggle(function () {
                    $(this).addClass('open').siblings('ul').show().addClass('open');
                    return false;
                }, function () {
                    $(this).removeClass('open').siblings('ul').hide().removeClass('open');
                    return false;
                });
            });

            $('.styled-select2 ul li a').each(function () {
                $(this).click(function () {
                    var cntry = $(this).attr('href').replace("#", "");
                    var selectortext = $(this).text();
                    $('.noborder').removeClass('noborder');
                    $('.CountryRegion').each(function () {
                        if (cntry == "-") {
                            $(this).show(); //Show all country regions
                        }
                        else {
                            $(this).hide(); //Hide all country regions
                        }
                    });
                    $("." + cntry).show(); //Show selected
                    $('.CountryRegion').filter(':visible').filter(':last').addClass('noborder'); //Show selected
                    $('#countryselector').find('span').text(selectortext);
                    $('.styled-select2 ul li').each(function () {
                        $(this).removeClass("hidden");
                        if ($(this).find('a').text() == selectortext) {
                            $(this).addClass("hidden");
                        }
                    });
                    $('#countryselector').click();
                    return false;
                });
            });

            $("select.js-replace3").each(function () {
                $(this).hide();
                var selectwrap = document.createElement('div');
                var selectwrapul = document.createElement('ul');

                selectwrap.className = "styled-select3";
                var selectedtext = $(this).find('option:first').attr('text');
                selectwrap.innerHTML = "<a href=\"#\" id=\"officeselector\" class=\"ddlselector\"><span>" + selectedtext + "</span></a>";

                $(this).find('option').each(function () {
                    var listitem = document.createElement('li');
                    var link = document.createElement('a');
                    if ($(this).attr('text') == selectedtext) {
                        listitem.className = "hidden";
                    }
                    link.href = $(this).attr('value');
                    link.innerHTML = $(this).attr('text');
                    listitem.appendChild(link);
                    selectwrapul.appendChild(listitem);

                });
                selectwrap.appendChild(selectwrapul);
                $(this).after(selectwrap);
                $('#officeselector').toggle(function () {
                    $(this).addClass('open').siblings('ul').show().addClass('open');
                    return false;
                }, function () {
                    $(this).removeClass('open').siblings('ul').hide().removeClass('open');
                    return false;
                });
            });

            $('.styled-select3 ul li a').each(function () {
                $(this).click(function () {
                    if ($(this).attr('href') == '#') {
                        $('#officeselector').click();
                        return false;
                    }
                    else
                        $(window.location).attr('href', $(this).attr('href'));
                });
            });
            $(document).bind('click', function (e) {
                var $clicked = $(e.target);
                if (!$clicked.parents().parents().hasClass("styled-select")) {
                    // $(".styled-select ul.open").hide().removeClass('open').siblings('.ddlselector').removeClass('open');
                    $(".styled-select a.ddlselector.open").click();
                }

            });
            $(document).bind('click', function (e) {
                var $clicked = $(e.target);
                if (!$clicked.parents().parents().hasClass("styled-select2")) {
                    $(".styled-select2 ul.open").hide().removeClass('open').siblings('.ddlselector').removeClass('open');
                }
            });
            $(document).bind('click', function (e) {
                var $clicked = $(e.target);
                if (!$clicked.parents().parents().hasClass("styled-select3")) {
                    $(".styled-select3 ul.open").hide().removeClass('open').siblings('.ddlselector').removeClass('open');
                }
            });
        }

    }
};

$.extend(true, $.na.studsvik, studsvik);

$(document).ready(function () {
    $.na.studsvik.init();
    $.na.studsvik.mainMenu.init();
    $.na.studsvik.languageSelector.init();
    $.na.studsvik.expandableLists.init();
    $.na.studsvik.slideShow.init();
    $.na.studsvik.startPageSlideShow.init();
    $.na.studsvik.customDropDown.init();
    $.na.studsvik.xFormExtentions.init();
    $.na.studsvik.customInputBoxes.init();
});
