﻿$(document).ready(function () {
    var tab_cookie_id = parseInt($.cookie("tab_cookie")) || 0;
    //init tabs
    $('.tabs').tabs({
        selected: tab_cookie_id,
        show: function (e, ui) {
            var tab_id = ui.index;
            $.cookie("tab_cookie", tab_id, { expires: 1 });
            //log( $.cookie("tab_cookie" ));
        }
    });

    // ie zoom level
    function fnScaleFactorX() {
        var nScaleFactor = screen.deviceXDPI / screen.logicalXDPI;
        ret(nScaleFactor);
    }

    // init vars
    var nav = $('.ui-tabs .ui-tabs-nav'),
        navWidth = $(nav).outerWidth(),
        li = $(nav).find('li'),
        liCount = li.size(),
        liAnchor = $(li).find('a'),
        liAnchorPad = parseInt(liAnchor.eq(0).css('padding-left')),
        tabPanels = $('.ui-tabs-panel');

    // remove border from last anchor
    $(li).last().find('a').addClass('last-tab-anchor');
    // add class to last anchor in list if its not a statistic
    (!$(li).last().hasClass('stats')) ? $(li).last().addClass('tabs-nav-last') : '';


    /////////////////////////////////////////////////////////////////////////
    // add padding to anchor elements in ui-tabs to fill width of ui-tabs-nav
    /////////////////////////////////////////////////////////////////////////
    // get current total width of li elements
    function currLiWidth(li) {
        var liWidth = 0;
        jQuery.each(li, function (i) {
            liWidth += $(li).eq(i).outerWidth();
        });
        return liWidth;
    }
    // set padding on li elements
    function setLiPadding(liAnchor, liAnchorPad, liAnchorPadAdd) {
        jQuery.each(liAnchor, function (i) {
            liAnchor.eq(i).css({ 'padding-left': '' + (liAnchorPad + liAnchorPadAdd) + 'px', 'padding-right': '' + (liAnchorPad + liAnchorPadAdd) + 'px' });
        });
    }
    // calc additional padding
    var liWidth = currLiWidth(li);
    var liAnchorPadAddC = Math.ceil(((navWidth - liWidth) / liCount) / 2);
    var liAnchorPadAddF = Math.floor(((navWidth - liWidth) / liCount) / 2);

    // choose correct amount of addional padding
    if ((liWidth + (liCount * (liAnchorPadAddC * 2)) > navWidth)) {
        //console.log('floor');
        // set additional padding with floor value
        var liAnchorPadAdd = liAnchorPadAddF;
        setLiPadding(liAnchor, liAnchorPad, liAnchorPadAdd);
        // calculate remainder and add to last li
        var padRemainder = currLiWidth(li);
        padRemainder = (navWidth - padRemainder);
        $(li).last().find('a').css({ 'padding-right': '' + (liAnchorPad + liAnchorPadAdd + padRemainder) + 'px' });
    } else {
        //console.log('ceil');
        // set additional padding with ceil value
        var liAnchorPadAdd = liAnchorPadAddC;
        setLiPadding(liAnchor, liAnchorPad, liAnchorPadAdd);
        var padRemainder = currLiWidth(li);
        padRemainder = (navWidth - padRemainder) - 1;
        $(li).last().find('a').css({ 'padding-right': '' + (liAnchorPad + liAnchorPadAdd + padRemainder) + 'px' });
    }

    /////////////////////////////////////////////////////////////////////////
    // add active tab arrow under nav
    /////////////////////////////////////////////////////////////////////////
    var activeArrow = $(nav).after('<div></div>');
    activeArrow.next('div').addClass('tabs-active-arrow');

    // set arrow position
    function activeArrowPos(index) {
        var liPos = $(li).eq(index).position();
        var liWidth = $(li).eq(index).outerWidth();
        // minus 6 - width of arrow, plus 1 - border-right
        var backPos = (liPos.left + (liWidth / 2) - 6) + 1;
        return backPos;
    }

    // update position on click
    $(liAnchor).click(function () {
        var index = $(this).parent().index();
        $('.tabs-active-arrow').css('backgroundPosition', '' + activeArrowPos(index) + 'px 0px');
    });
    // move arrow to first tab
    $(liAnchor).eq(parseInt($.cookie("tab_cookie")) || 0).click();

    /////////////////////////////////////////////////////////////////////////
    // apply special formating to special tabs
    /////////////////////////////////////////////////////////////////////////
    $.each(tabPanels, function (i) {
        if (tabPanels.eq(i).children().hasClass('ui-tabs-special-container')) {

            // ie css3 rounded corners fix
            if ($('html').hasClass('ie7') || $('html').hasClass('ie8')) {

                $(this).find('.ui-tabs-special-container').wrap('<div class="ie-tabs-corner" />');
                $('.ie-tabs-corner').next('br').detach().appendTo('.e-tabs-corner');
            }

            //get inner width, set it on outer wrapper - add 30 for padding
            var innerContentWidth = ($(this).find('.ui-tabs-special-container').outerWidth()) + 30;
            // get margin-left
            var panelMarginLeft = parseInt($(this).css('marginLeft'));
            // add class and modify css of panel
            $(this).addClass('ui-tabs-special-wrapper');
            $(this).css({ 'padding': '20px 0 0 0', 'width': '' + innerContentWidth + 'px' });

            // offset to center panel under arrow, plus 3 - half the width of the arrow
            var leftOffset = (activeArrowPos(i) - (innerContentWidth / 2)) + 3;

            // offest is less than panels original margin-left
            if (leftOffset < panelMarginLeft) {
                $(this).css({ 'float': 'left' });
                $(this).parent().append("<br class='clear' />");
            }
            // offset would push conent out of containing box
            else if ((leftOffset + innerContentWidth) > ($(this).parent().outerWidth() - panelMarginLeft)) {
                $(this).css({ 'float': 'right', 'marginRight': '15px' });
                $(this).parent().append("<br class='clear' />");
            }
            // apply offset to center panel under arrow
            else {
                $(this).css({ 'marginLeft': '' + leftOffset + 'px' });
            }
        }
    });
    //$('.tabs').tabs("select", 2);
});
