var initScrollEndRequest; //needed for focusbox
var initShowMoreEndRequest; //needed for focusbox

$(function() {

    // JS-säkra dokumentet
    $('body').addClass('JSgo');

    // Fix för två rader i menyn
    $('.menuMain ul > li > a').each(function() {
        if ($(this).outerHeight() > '35') {
            $(this).addClass('selectDouble1st');
        }
    });
    $('.menuMain ul > li > ul > li > a').each(function() {
        if ($(this).outerHeight() > '30') {
            $(this).addClass('selectDouble2nd');
        }
    });

    // overflow: hidden när DOM är laddat
    $('#fokusBox').addClass('hideMe');
    $('#problem .content .holder').addClass('hideMe');

    /* Ordna separatorer i huvudmenyn */
    $('.menuMain > .content > ul > li.hasChildren').prev().css('background', 'none');
    $('.menuMain > .content > ul > li.hasChildren').prev().css('padding-bottom', '0px');
    $('.menuMain > .content > ul > li.hasChildren').prev().css('margin-bottom', '4px');
    $('.menuMain > .content > ul > li:last-child').css('background', 'none');

    /* Problem-menyn på startsidan */
    // Beteende för problem-menyn
    var lastItem;
    var holderHeight;
    $('#problem > .content > .holder > ul > li > a').click(function() {
        // Kalkylera ul höjd
        lastItem = $(this).next('ul').find('li.last').index();
        if (lastItem == 0) { $(this).next('ul').find('li.last').addClass('singleItem'); }
        holderHeight = (((lastItem + 1) * 30) + 41);
        // Kör animation
        if ($(this).hasClass('active')) {
            slideDown($(this));
            hideHolder();
        } else {
            slideUp($(this));
            slideDown($('#problem ul > li > a').not($(this)));
        }
        return false;
    });
    // Visa meny
    function slideUp(pHandle) {
        pHandle.parent().animate({
            marginTop: ((holderHeight * -1) + 41) + 'px'
        }, 300, 'easeInOutCubic');
        pHandle.addClass('active');
        $('#problem .content .holder').animate({
            height: holderHeight + 'px'
        }, 300, 'easeInOutCubic');
    }
    // Göm meny
    function slideDown(pHandle) {
        pHandle.parent().animate({
            marginTop: '0px'
        }, 300, 'easeInOutCubic');
        pHandle.removeClass('active');
    }
    // Göm holder
    function hideHolder() {
        $('#problem .content .holder').animate({
            height: '41px'
        }, 300, 'easeInOutCubic');
    }

    /* Göm objekt om användaren klickar utanför */
    $(document).click(function(event) {
        slideDown($('#problem ul li a')); 	// Göm problem-menyn
        hideHolder(); 						// Göm hållare för problem-meny

        if ($(event.target).hasClass('formShade')) {
            $('.formShade').hide();
        }

        /* Stäng infoboxen förutsatt av har har klickat utanför den.
        Eftersom infoboxen i somliga fall kan innehålla ett formulär. */
        if ($(event.target).parents('.toolbar').length == 0 &&
			   $(event.target).parents('.boxQuestion').length == 0 &&
			   !$(event.target).hasClass('boxQuestion')) {
            var outsideBox = $(event.target).parents('.boxQuestion').length == 0;
            $('div.infoBox').hide();    // Göm informationsrutor
        }
    });

    /* Göm lokala nyheter och funktion för att bläddra */
    $('div.localNews').hide();
    $('a.localNews').click(function() {
        $(this).parent().siblings().removeClass('selected');
        $(this).parent().addClass('selected');
        $('div.news').hide();
        $('div.localNews').show();
        return false;
    });
    $('a.news').click(function() {
        $(this).parent().siblings().removeClass('selected');
        $(this).parent().addClass('selected');
        $('div.localNews').hide();
        $('div.news').show();
        return false;
    });

    /* Problem och åtgärder-rutan */
    // Anpassa bredden på tabbar till antalet tabbar (3-5st)
    var $tabNo = $('ul.navTabs li').size();
    setTabWith();

    function setTabWith() {
        if ($tabNo == '3') {
            $('#bigCol ul.navTabs li').css('width', '218px');
            $('#bigCol ul.navTabs li:last').css('width', '219px');
        } else if ($tabNo == '4') {
            $('#bigCol ul.navTabs li').not($('ul.navTabs li.last')).css('width', '159px');
        } else if ($tabNo == '5') {
            $('#bigCol ul.navTabs li').css('width', '123px');
            $('#bigCol ul.navTabs li:last').css('width', '125px');
        }
    }
    // Initiera tabs och variabel för selection
    var lastSelected = -1;
    var $tabs = $("#tabs").tabs({ selected: -1 });

    // Animera tabs (XL)
    $('#fokusBox.xl #tabs .navTabs li a').click(function() {
        var $selected = $tabs.tabs('option', 'selected'); // => 0
        if (($(this).parent().parent().index()) != lastSelected) {
            $('.iconExplore').fadeOut();
            $('.getHelp').fadeOut();
            // Ta fram tabbar
            $('#tabs').animate({
                top: '22px'
            }, 500, 'easeInOutCubic');
            lastSelected = $selected;
        } else {
            $('.iconExplore').fadeIn();
            $('.getHelp').fadeIn();
            // Dölj tabbar
            $('#tabs').animate({
                top: '290px'
            }, 500, 'easeInOutCubic', resetTabs());
            lastSelected = -1;
        }
    });
    // Animera tabs (stor)
    // Om en hash-tag bifogas, visa tab
    if (location.href.indexOf("#") != -1) {
        var theHash = location.href.substr(location.href.indexOf("#") + 1);
        showTab($('a.' + theHash));
        var theTab = parseInt(theHash);
        $tabs.tabs('select', theTab);
        initShowMore();
        initScrollBar();
    }
    // Animera tabs (stor)
    $('#fokusBox.big #tabs .navTabs li a').click(function() {
        showTab($(this));
    });
    function showTab(pHandle) {
        var $selected = $tabs.tabs('option', 'selected'); // => 0
        if ((pHandle.parent().parent().index()) != lastSelected) {
            $('.overlay').fadeIn();
            $('.getHelp').fadeOut();
            // Ta fram tabbar
            $('#tabs').animate({
                top: '22px'
            }, 500, 'easeInOutCubic');
            lastSelected = $selected;
        } else {
            $('.overlay').fadeOut();
            $('.getHelp').fadeIn();
            // Dölj tabbar
            $('#tabs').animate({
                top: '260px'
            }, 500, 'easeInOutCubic', resetTabs());
            lastSelected = -1;
        }
        initShowMore();
        initScrollBar();
    }
    // Animera tabs (liten)
    $('#fokusBox.small #tabs .navTabs li a').click(function() {
        var $selected = $tabs.tabs('option', 'selected'); // => 0
        if (($(this).parent().parent().index()) != lastSelected) {
            $('#fokusBox.small .getHelp').fadeOut();

            // Förstora lådan
            $('#fokusBox.small').animate({
                height: '301px'
            }, 500, 'easeInOutCubic');

            // Ta fram tabbar
            $('#tabs').animate({
                top: '22px'
            }, 500, 'easeInOutCubic');
            lastSelected = $selected;
        } else {
            $('#fokusBox.small .getHelp').fadeIn();

            // Förmindska lådan 
            $('#fokusBox.small').animate({
                height: '100px'
            }, 500, 'easeInOutCubic');

            // Dölj tabbar
            $('#tabs').animate({
                top: '59px'
            }, 500, 'easeInOutCubic', resetTabs());
            lastSelected = -1;
        }
    });

    function initShowMore() {
        if ($('#tabs').find('.tab').not('.ui-tabs-hide').find('ul.sortResult').outerHeight() > 200) {
            $('#tabs').find('.tab').not('.ui-tabs-hide').find('a.moreDown').show();
        }

        $('a.moreDown').click(function() {
            $(this).siblings().find('ul.sortResult').animate({
                top: '-201px'
            });
            $(this).parent().find('a.moreUp').show();
            $(this).hide();
            return false;
        });

        $('a.moreUp').click(function() {
            $(this).siblings().find('ul.sortResult').animate({
                top: '0px'
            });
            $(this).parent().find('a.moreDown').show();
            $(this).hide();
            return false;
        });
    }

    // Återinitiera tabs för att nollställa selection
    function resetTabs() {
        $tabs.tabs('selected', -1);
        $(".ui-tabs-selected").removeClass("ui-state-active").removeClass("ui-tabs-selected");
    }

    /* Visa/göm alla definition lists */
    $('dd').hide();
    $('dt a').click(function() {
        $(this).parent().next().slideToggle(100);
        $(this).parent().toggleClass('active');
        $(this).toggleClass('active');
        return false;
    });

    /* Göm/visa och positionera "kontakta mig"-formulär */
    $('.formShade').hide();
    $('a.kontaktaMig').click(function() {
        var scrollTop = $(window).scrollTop();
        var documentHeight = $(document).height();
        $('.formContainer').css('top', scrollTop + 100 + 'px');
        $('.formShade').css('height', documentHeight + 'px');
        $('.sent').hide();
        $('.formShade').show();
        return false;
    });
    $('a.close').click(function() {
        $('.formShade').hide();
        return false;
    });
    $('button.send').click(function() {
        $('.sent').show();
        $('.formShade').delay(1000).fadeOut();
        return false;
    });

    /* Utseende och funktion för checkboxar och radioknappar */
    $('input.fakecheck').hide();
    $('input.fakeradio').hide();
    var num = 0;
    var mod;
    $("a.fakecheck").click(function() {
        $(this).toggleClass('fakechecked');
        var thisId = $(this).attr('id');
        mod = num % 2;
        num++;

        if (mod == 0) {
            $('input#' + thisId).attr('checked', 'checked');
        }
        else {
            $('input#' + thisId).removeAttr('checked');
        }
        return false;
    });
    $("a.fakeradio").click(function() {
        var thisId = $(this).attr('id');
        $('input#' + thisId).attr('checked', 'checked');
        $('a#ring, a#fax, a#email').removeClass('fakeradio2');
        $('a#' + thisId).addClass('fakeradio2');
        return false;
    });

    /* Visa/göm informationsrutor */
    $('a.infoLink').click(function() {
        var linkId = $(this).attr('id'); // Ta reda på ID för länken som klickats
        var position = $(this).position(); // Ta reda på länkens absoluta position
        if ($(this).parent().hasClass('toolbarContent')) {
            position = $(this).position();
            if($(this).attr('id') == 'boxComment'){
            	$('div.' + linkId).css({ 'top': (position.top + 18) + 'px', 'left': (position.left - 410) + 'px' }); // Positionera infoBox relativt till länkens position
            }else if($(this).attr('id') == 'boxTip'){
            	$('div.' + linkId).css({ 'top': (position.top + 18) + 'px', 'left': (position.left - 80) + 'px' });
            }else{
            	$('div.' + linkId).css({ 'top': (position.top + 18) + 'px', 'left': (position.left - 12) + 'px' });
            }
        }
        else {
            $('div.' + linkId).css({ 'top': (position.top - 41) + 'px', 'left': (position.left + 20) + 'px' }); // Positionera infoBox relativt till länkens position
        }
        $('div.infoBox').not('div.' + linkId).hide(); // Göm alla infoBox:ar utom den vi vill visa
        $('div.' + linkId).toggle(); // Visa/göm infoBox med classnamn detsamma som ID för klickad länk    	
        return false;
    });

    /* Visa/göm expanderbara rader i tabeller samt lägg till specialutseende */
    $('table.expanderbar tr.expandedRow').hide();
    $('table.expanderbar .firstCol a').click(function() {
        $('.expandedRow').not($(this).parent().parent().next()).hide();
        $(this).parent().parent().toggleClass('aboveExpandedRow');
        $(this).toggleClass('active');
        $(this).parent().parent().next().toggle();
        return false;
    });

    $('table.expanderbar .firstCol a.readmore').unbind("click");

    /* Visa/göm formulärfältet för "Ställ en fråga" (mellansida) */
    $('.askQ .toggleComment').click(function(e) {
        var commentId = $(this).attr('id');
        var $comment = $(this).parent().find('.' + commentId);
        $comment.toggle();
        return false;
    });

    /* ==================================================================================================================
    *              Skapa scrollbar för innehållet på Problem och åtgärder
    * ================================================================================================================== */
    //initScrollPane();
    function initScrollPane() {
        //scrollpane parts
        var scrollPane = $('.scroll-pane');
        var scrollContent = $('.scroll-content');

        //build slider
        var scrollbar = $(".scroll-bar").slider({
            slide: function(e, ui) {
                if (scrollContent.width() > scrollPane.width()) { scrollContent.css('margin-left', Math.round(ui.value / 100 * (scrollPane.width() - scrollContent.width())) + 'px'); }
                else { scrollContent.css('margin-left', 0); }
            }
        });

        //append icon to handle
        var handleHelper = scrollbar.find('.ui-slider-handle').not('.has-icon')
	    .mousedown(function() {
	        scrollbar.width(handleHelper.width());
	    })
	    .mouseup(function() {
	        scrollbar.width('100%');
	    })
	    .addClass('has-icon')
	    .append('<span class="ui-icon ui-icon-grip-dotted-vertical"></span>')
	    .wrap('<div class="ui-handle-helper-parent"></div>').parent();

        //change overflow to hidden now that slider handles the scrolling
        scrollPane.css('overflow', 'hidden');

        //size scrollbar and handle proportionally to scroll distance
        function sizeScrollbar() {
            var remainder = scrollContent.width() - scrollPane.width();
            var proportion = remainder / scrollContent.width();
            var handleSize = scrollPane.width() - (proportion * scrollPane.width());
            if (handleHelper.width() != 0) // prevents IE from throwing error
            {
                scrollbar.find('.ui-slider-handle').css({
                    width: handleSize,
                    'margin-left': -handleSize / 2
                });
                handleHelper.width('').width(scrollbar.width() - handleSize);
                handleHelper.width(450);
            }
        }

        //reset slider value based on scroll content position
        function resetValue() {
            var remainder = scrollPane.width() - scrollContent.width();
            var leftVal = scrollContent.css('margin-left') == 'auto' ? 0 : parseInt(scrollContent.css('margin-left'));
            var percentage = Math.round(leftVal / remainder * 100);
            scrollbar.slider("value", percentage);
        }
        //if the slider is 100% and window gets larger, reveal content
        function reflowContent() {
            var showing = scrollContent.width() + parseInt(scrollContent.css('margin-left'));
            var gap = scrollPane.width() - showing;
            if (gap > 0) {
                scrollContent.css('margin-left', parseInt(scrollContent.css('margin-left')) + gap);
            }
        }

        //change handle position on window resize
        $(window)
	    .resize(function() {
	        resetValue();
	        sizeScrollbar();
	        reflowContent();
	    });
        //init scrollbar size
        setTimeout(sizeScrollbar, 10); //safari wants a timeout
    }
    /* ==================================================================================================================
    *              [END] Skapa scrollbar för innehållet på Problem och åtgärder
    * ================================================================================================================== */

    function initScrollBar() {
        var totalWidth = 0;
        var scrollDistance = 0;
        var displayAreaWidth = $('.slider-container .slide-content').width();
        var $ul = $('.slider-container .slide-content ul');
        $ul.find('li').each(function(index) {
            totalWidth += $(this).width();
        });
        $ul.width(totalWidth);
        scrollDistance = totalWidth - displayAreaWidth;

        if (scrollDistance < 1) {
            $('.slider-wrap').hide(0);
        }
        else {
            $('.slider-wrap').show(0);
            $('.myslider').slider({
                slide: function(event, ui) {
                    var percent = ui.value / 100;
                    var leftPos = scrollDistance * percent;
                    $('#slider-result').attr('value', ui.value);
                    $('.slider-container .slide-content ul').css('left', '-' + leftPos + 'px');
                },
                change: function(event, ui) {
                    var percent = ui.value / 100;
                    var leftPos = scrollDistance * percent;
                    $('#slider-result').attr('value', ui.value);
                    $('.slider-container .slide-content ul').css('left', '-' + leftPos + 'px');
                }
            });
            $('.slider-wrap .button-left').click(function() {
                var $slider = $(this).parent().find('.myslider');
                var currSliderValue = $slider.slider('value');
                $slider.slider('value', currSliderValue - 20);
            });
            $('.slider-wrap .button-right').click(function() {
                var $slider = $(this).parent().find('.myslider');
                var currSliderValue = $slider.slider('value');
                $slider.slider('value', currSliderValue + 20);
            });
        }
    }
    initScrollEndRequest = initScrollBar;
    initShowMoreEndRequest = initShowMore;

    /*
    var totalWidth = 0;
    var scrollDistance = 0;
    var displayAreaWidth = $('.slider-container .slide-content').width();
    var $ul = $('.slider-container .slide-content ul');
    $ul.find('li').each(function(index){
    totalWidth += $(this).width();
    });
    $ul.width(totalWidth);
    scrollDistance = totalWidth - displayAreaWidth;
    
    $('.myslider').slider({
    slide: function(event, ui){
    var percent = ui.value / 100;
    var leftPos = scrollDistance * percent;
    $('#slider-result').attr('value',ui.value);
    //$('.slider-container .slide-content ul').css('left','-'+ui.value+'%');
    $('.slider-container .slide-content ul').css('left','-'+leftPos+'px');
    }
    });
    */


});

function clearValue(element){
    element.value='';
}

function selectField(element){
    element.select();
}

function resetValue(element){
    element.value=!element.value?'Sök på Anticimex':element.value;
}
