﻿$(document).ready(function () {

    //PROMO SLIDER

    totalPromo = $('#promo_slider .promo_content').size();
    xPos = 0;
    oldPromo = 0;
    currentPromo = 0;
    moose = true;
    autoMoose = true;
    promoDelay = 7000;
    easeInOut = 'easeInOutExpo';
    inOutSpeed = 800;

    infiniteWidth = 744;

    imageWidth = 1785;

    if ($.browser.mozilla || $.browser.msie) {
        imageWidth = 964;
    }

    $('#promo_nav .next a').click(function () {
        if (moose == true && totalPromo > currentPromo + 1) {
            oldPromo = currentPromo;
            currentPromo = currentPromo + 1;
            slideRight();
        } else if (moose == true) {
            oldPromo = currentPromo;
            currentPromo = 0;
            infiniteLoop('right');
        }

        setTabs();

        return false;
    });

    $('#promo_nav .prev a').click(function () {
        if (moose == true && currentPromo > 0) {
            oldPromo = currentPromo;
            currentPromo = currentPromo - 1;
            slideLeft();
        } else if (moose == true) {
            oldPromo = currentPromo;
            currentPromo = totalPromo - 1;
            infiniteLoop('left');
        }

        setTabs();

        return false;
    });

    function setTabs() {
        $('#promo_tabs div.promo_tab_content:eq(' + oldPromo + ') .homeBannerOnOne').removeClass('homeBannerOnOne whiteTxt').addClass('homeBannerOff');
        $('#promo_tabs div.promo_tab_content:eq(' + oldPromo + ') .homeBannerOnTwo').removeClass('homeBannerOnTwo whiteTxt').addClass('homeBannerOff');

        var bgClass = ($('#promo_tabs div.promo_tab_content:eq(' + currentPromo + ')').attr('bgClass'));
        $('#promo_tabs div.promo_tab_content:eq(' + currentPromo + ') .homeBannerOff').removeClass('homeBannerOff').addClass(bgClass + ' whiteTxt');
    }

    function slideLeftInfinite(newCurrentPromo, newOldPromo) {
        oldPromo = newOldPromo;
        currentPromo = newCurrentPromo;

        slideLeft();
    }

    function slideRightInfinite(newCurrentPromo, newOldPromo) {
        oldPromo = newOldPromo;
        currentPromo = newCurrentPromo;

        slideRight();
    }

    function slideLeft() {
        moose = false;

        totalX = $(window).width();

        var newMarginRight = totalX - imageWidth / 2;
        if (newMarginRight < 0)
            newMarginRight = 0;

        $('#promo_slider').css({ left: (newMarginRight + imageWidth) * -1 });
        $('#promo_slider div.promo_content:eq(' + (currentPromo) + ')').css({ marginRight: newMarginRight });
        $('#promo_slider div.promo_content:eq(' + (currentPromo) + ')').css({ display: 'block' });
        $('#promo_slider').animate({ left: 0 }, inOutSpeed, easeInOut, function () {
            $('#promo_slider div.promo_content:eq(' + (oldPromo) + ')').css({ display: 'none' });
            moose = true;
        });
    }

    function slideRight() {
        moose = false;

        totalX = $(window).width();

        var newMarginRight = (totalX - imageWidth / 2);
        if (newMarginRight < 0)
            newMarginRight = 0;

        $('#promo_slider div.promo_content:eq(' + (oldPromo) + ')').css({ marginRight: newMarginRight });
        $('#promo_slider div.promo_content:eq(' + (currentPromo) + ')').css({ display: 'block' });
        $('#promo_slider').animate({ left: (newMarginRight + imageWidth) * -1 }, inOutSpeed, easeInOut, function () {
            $('#promo_slider div.promo_content:eq(' + (oldPromo) + ')').css({ display: 'none' });
            $('#promo_slider').css({ left: 0 });
            moose = true;
        });
    }

    function infiniteLoop(dir) {

        moose = false;

        totalX = $(window).width();

        if (dir == 'left') {
            slideRightInfinite(totalPromo - 1, 0);
        } else if (dir == 'right') {
            slideLeftInfinite(0, totalPromo - 1);
        }
    }

    $('#promo_slider').mouseenter(function () {
        $.clearTimer(promoTimer);
    });
    $('#promo_slider').mouseleave(function () {
        autoMagical();
    });

    var promoTimer = {};

    function autoMagical() {
        promoTimer = $.timer(promoDelay, function () {
            $.clearTimer(promoTimer);
            $('#promo_nav .next a').click();
            autoMagical();
        });
    }

    autoMagical();

    function slideTo(newPromo) {
        if (newPromo > currentPromo) {
            oldPromo = currentPromo;
            currentPromo = newPromo;
            slideRight();
        } else if (newPromo < currentPromo) {
            oldPromo = currentPromo;
            currentPromo = newPromo;
            slideLeft();
        }

        setTabs();
    }

    jQuery.each($('#promo_tabs div.promo_tab_content'), function (i, val) {
        $('#promo_tabs div.promo_tab_content:eq(' + i + ')').click(function () {
            slideTo(i);
            $(this).css('cursor', 'auto');
        });
        $('#promo_tabs div.promo_tab_content:eq(' + i + ')').hover(function () {
            $(this).css('cursor', 'pointer');
        }, function () {
            $(this).css('cursor', 'auto');
        });
    });

    try {
        $('#promo_slider').touchwipe({
            wipeLeft: function () { $.clearTimer(promoTimer); $('#promo_nav .next a').click(); autoMagical(); },
            wipeRight: function () { $.clearTimer(promoTimer); $('#promo_nav .prev a').click(); autoMagical(); },
            min_move_x: 20,
            preventDefaultEvents: true
        });
    } catch (err) { }

});


/*
* jQuery Timer Plugin
* http://www.evanbot.com/article/jquery-timer-plugin/23
*
* @version      1.0
* @copyright    2009 Evan Byrne (http://www.evanbot.com)
*/

jQuery.timer = function(time, func, callback) {
    var a = { timer: setTimeout(func, time), callback: null }
    if (typeof (callback) == 'function') { a.callback = callback; }
    return a;
};

jQuery.clearTimer = function(a) {
    clearTimeout(a.timer);
    if (typeof (a.callback) == 'function') { a.callback(); };
    return this;
};


/******** For Relative Path to work in ASP.NET **************/
function Environment() { }
Environment.vroot = '';

Environment.getUrl = function (path) {
    return Environment.vroot + path;
};

