﻿window.onload = function () {
    //Setup
    AddBubbleHTML();
    ReadParameters();
    SetUpNavObject();
    SetUpPhotoArea();
    SetUpMusicArea();
    BackgroundImageLogic();
    AdjustBubbleBg();
    BounceInBubble();
    TooSmall();

    //Functions
    HandleMultiMediaTabs();
    AutoSlideGallery();
}

$(window).resize(function () {
    BackgroundImageLogic();
    AdjustBubbleBg();
    TooSmall();
});

//*  ESTABLISH NAV ELEMENT
//****************************************************
var navBar, sneakyBar;

function SetUpNavObject() {
    navBar = $('div.main');
    navBar.originalBottom = navBar.css('bottom');
    navBar.drop = function () { navBar.fadeOut(500).animate({ bottom: '-200px' }, { duration: 1000, queue: false }); }
    navBar.restore = function () { navBar.fadeIn(500).animate({ bottom: navBar.originalBottom }, { duration: 1000, queue: false }); }

    sneakyBar = $('div.sneakyNavContainer');
    sneakyBar.originalLeft = sneakyBar.css('left');
    sneakyBar.drop = function () { sneakyBar.animate({ left: sneakyBar.originalLeft }, { duration: 1000, queue: false }); }
    sneakyBar.restore = function () { sneakyBar.animate({ left: '0px' }, { duration: 1000, queue: false }); }
}

//*  RESIZE RAMIFICATIONS
//****************************************************
function TooSmall() {
    var w = $(window).width(); var h = $(window).height();
    h = h * 1;
    w = w * 1;
    
    if (h <= 650) {
        navBar.drop();
        sneakyBar.restore();
        $('body').css('overflow', 'scroll');
    } else {
        navBar.restore();
        sneakyBar.drop();
        $('body').css('overflow', 'hidden');
    }
}

//*  CONTENT SECTION
//****************************************************
var txtContainer;
var pTextVisible = true;

function HandleMultiMediaTabs() {

    txtContainer = $('#mmTextContainer');

    txtContainer.originalLeft = txtContainer.css('left');
    txtContainer.states = { "visClosed": 0, "visOpen": 1, "hidClosed": 2, "hidOpen": 3 };
    txtContainer.currentState = txtContainer.states.visClosed;

    txtContainer.click(function () {
        switch (txtContainer.currentState) {
            case txtContainer.states.visClosed:
                txtContainer.animate({ left: '0px' }, 1000, function () { txtContainer.currentState = txtContainer.states.visOpen });
                break;
            case txtContainer.states.visOpen:
                txtContainer.animate({ left: txtContainer.originalLeft }, 1000, function () { txtContainer.currentState = txtContainer.states.visClosed });
                break;
        }
    });

    $('#mmPhoto').click(function () { clearTimeout(bgTimer); ShowBgGallery(-1); });
    $('#mmMusic').click(function () {
        //Set variables
        var w = ($(window).width() * 2);
        var h = ($(window).height() * 2);

        //In with the NEW
        FadeInBgImg('http://img.ndandp.com/ndp/styles/music/music1.jpg');
        $('#musicAreaContainer').css({ top: '-' + (h * 2) + 'px', left: '0px' }).animate({ top: '0px', left: '0px' }, 1000, function () { });

        //Out with the OLD
        $('#mmTextContainer, #mmMusic, #mmPhoto, #mmBubble').dequeue().fadeOut();
        $('#contentLayer').animate({ top: h + 'px', left: '0px' }, 1500, 'easeOutBounce');
        navBar.drop();
    });

    $('#pTextContainer').click(function () {
        if (pTextVisible) {
            HidePTextContainer();
        } else {
            ShowPTextContainer();
        }
    });
}
function ShowPTextContainer() {
    $('#pTextContainer').animate({ width: '260px' }, 500);
    $('.pDescription').fadeIn(1000);
    pTextVisible = true;
}
function HidePTextContainer() {
    $('#pTextContainer').animate({ width: '60px' }, 500);
    $('.pDescription').fadeOut(300);
    pTextVisible = false;
}

function ShowBgGallery(id) {
    //Set variables
    var w = ($(window).width() * 2);
    var h = ($(window).height() * 2);

    //In with the NEW
    if (id == -1) { $('#photoAreaContainer').css({ top: '0px', left: '-' + (w * 2) + 'px' }).animate({ top: '0px', left: '0px' }, 1000, function () { $('#pMusic, #pPhoto, #pTextContainer').fadeIn(); }); }
    else { ShowBGInfo(id); $('#photoAreaContainer').css({ top: '0px', left: '-' + (w * 2) + 'px' }).animate({ top: '0px', left: '0px' }, 1000, function () { $('#pMusic, #pPhoto').fadeIn(); }); }

    //Out with the OLD
    $('#mmTextContainer, #mmMusic, #mmPhoto, #mmBubble').dequeue().fadeOut();
    $('#contentLayer').animate({ top: '0px', left: w + 'px' }, 1500, 'easeOutBounce');
    navBar.drop();
}

function IgnoreBackgrounds() {
    $.cookie('bounceBubble', '0', { path: '/' });    
}

function BounceInBubble() {
    try {
        var gg = $.cookie('bounceBubble');
        if (gg == '0') { }
        else { $('#mmBubble').delay(1500).animate({ left: '56px' }, 1500, 'easeOutBounce', function () { $('#mmBubble').delay(2000).animate({ left: '-312px' }, 500); }); }
    }
    catch (err) {
        $('#mmBubble').delay(1500).animate({ left: '56px' }, 1500, 'easeOutBounce', function () { $('#mmBubble').delay(2000).animate({ left: '-312px' }, 500); }); 
    }
}

//*  PHOTO SECTION
//****************************************************
function SetUpPhotoArea() {

    $('#pMusic, #pPhoto, #pTextContainer').fadeOut();

    $('#pPhoto').click(function () {
        FadeInBgImg('http://img.ndandp.com/ndp/styles/bg/' + GetBackgroundCookie() + '.jpg');
        clearTimeout(bgTimer);
        bgTimer = setTimeout("GetRandomBackground()", 10000);

        //Set variables
        var w = ($(window).width() * 2);
        var h = ($(window).height() * 2);

        //In with the NEW
        $('#contentLayer').css({ top: '0px', left: w + 'px' }).animate({ top: '0px', left: '0px' }, 1000);
        $('#mmTextContainer, #mmMusic, #mmPhoto, #mmBubble').dequeue().fadeIn();

        //Out with the OLD
        $('#photoAreaContainer').animate({ top: '0px', left: '-' + w + 'px' }, 1000, function () { $('#pMusic, #pPhoto').fadeOut(); });
        HidePTextContainer();
        navBar.restore();
    });

    $('#pMusic').click(function () {
        //Set variables
        var w = ($(window).width() * 2);
        var h = ($(window).height() * 2);

        //In with the NEW
        FadeInBgImg('http://img.ndandp.com/ndp/styles/music/music2.jpg');
        $('#musicAreaContainer').css({ top: '-' + (h * 2) + 'px', left: w + 'px' }).animate({ top: '0px', left: '0px' }, 1500, function () { $('#pMusic, #pPhoto, #pTextContainer').fadeOut(); });

        //Out with the OLD
        $('#pMusic, #pPhoto, #pBubble, #pTextContainer').dequeue().fadeOut();
        $('#photoAreaContainer').animate({ top: h + 'px', left: '-' + (w * 2) + 'px' }, 1500, 'easeOutBounce');
        navBar.drop();
    });

}

//*  MUSIC SECTION
//****************************************************
function SetUpMusicArea() {
    $('#mPhoto').click(function () {
        //Set variables
        var w = ($(window).width() * 2);
        var h = ($(window).height() * 2);

        //In with the NEW
        $('#photoAreaContainer').css({ top: h + 'px', left: '-' + (w*2) + 'px' }).animate({ top: '0px', left: '0px' }, 1500, function () { $('#pMusic, #pPhoto, #pTextContainer').fadeIn(); });

        //Out with the OLD
        $('#musicAreaContainer').animate({ top: '-' + (h*2) + 'px', left: w + 'px' }, 1500, function () { });
    });

    $('#mMusic').click(function () {
        FadeInBgImg('http://img.ndandp.com/ndp/styles/bg/' + GetBackgroundCookie() + '.jpg');
        clearTimeout(bgTimer);
        bgTimer = setTimeout("GetRandomBackground()", 10000);

        //Set variables
        var w = ($(window).width() * 2);
        var h = ($(window).height() * 2);

        //In with the NEW
        $('#contentLayer').css({ top: (h*2) + 'px', left: '0px' }).animate({ top: '0px', left: '0px' }, 1000, function () { $('#pMusic, #pPhoto, #pTextContainer').fadeOut(); });
        $('#mmTextContainer, #mmMusic, #mmPhoto, #mmBubble').dequeue().fadeIn();
        navBar.restore();

        //Out with the OLD
        $('#musicAreaContainer').animate({ top: '-' + h + 'px', left: '0px' }, 1000, 'easeOutBounce');
    });

}

function LoadSongs(id) {
    $.ajax({
        url: "/ajax/loadsong.aspx?sID=" + id,
        success: function (dat) {
            $('#mPlayer').html(dat);
        }
    });
}
function RaiseTab(id) {
    $('.musicPlayerTab').css('zIndex', '500');
    $('.musicPlayerTab' + id).css('zIndex', '999999');
}

//*  BACKGROUND IMAGE
//****************************************************
var bgTimer;
function BackgroundImageLogic() {
    var bgImg = $('#bgImg');

    var imgW = bgImg.width();
    var imgH = bgImg.height();
   
    var newVal = 0;
    if (($(window).width() / $(window).height()) > (imgW / imgH)) {
        // It's wider
        newVal = (($(window).width() * imgH) / imgW);
        bgImg.css({ width: $(window).width() + 'px', height: newVal + 'px', marginTop: (($(window).height() - newVal) / 2) + 'px', marginLeft: '0px' });
    } else {
        // It's taller
        newVal = (($(window).height() * imgW) / imgH);
        bgImg.css({ height: $(window).height() + 'px', width: newVal + 'px', marginTop: '0px', marginLeft: (($(window).width() - newVal) / 2) + 'px' });
    }

    $('#bgImg').fadeIn(3000);

    $('img.pPlusLeft').click(function () {
        HidePTextContainer();
        ShowBGInfo($(this).parent().children('.pImg').attr('src').replace('http://img.ndandp.com/ndp/styles/bg/', '').replace('.jpg', ''));
    });

    $('.pImg').click(function () {
        ShowBGInfo($(this).attr('src').replace('http://img.ndandp.com/ndp/styles/bg/', '').replace('.jpg', ''));
    });

    $('#bbBgExplain .xClose').click(function () {
        HideBGInfo();
    });

    $('.aboutMinimize').click(function () {
        $('.aboutBox').stop(true,true).fadeOut(500).delay(2000).fadeIn(500);
    });

    clearTimeout(bgTimer);
    bgTimer = setTimeout("GetRandomBackground()", 12000);
}

function GetRandomBackground() {
    $.ajax({
        url: "/ajax/getrandombg.aspx",
        success: function (dat) {
            FadeInBgImg('http://img.ndandp.com/ndp/styles/bg/' + dat + '.jpg');
            $.cookie('bgID', dat, { path: '/' });
            bgTimer = setTimeout("GetRandomBackground()", 20000);
        }
    });
}

function GetBackgroundCookie() {
    try {
        return $.cookie('bgID');
    }
    catch (err) {
        return 1;
    }
}

function FadeInBgImg(url) {
    var currentImg = $('#bgImg').attr('src');
    if (currentImg != url) {
        var img = new Image();
        img.onload = function () { $('#bgImg').stop(true, true).animate({ opacity: 0 }, 1000, function () { $('#bgImg').attr('src', url); $('#bgImg').animate({ opacity: 1 }, 2500); }); }
        img.src = url;
    }
}

function ShowBGInfo(id) {

    $.ajax({
        url: "/ajax/getbackgroundinfo.aspx?bgID=" + id,
        success: function (dat) {

            $('.ajaxBg').html(dat);

            var bWd = $('#bbBgExplain').width();
            var wWd = $(window).width();
            $('#bbBgExplain').css('left', ((wWd - bWd) / 2) + 'px');

            $('#bbBgExplain').fadeIn(500);
            FadeInBgImg($('#authorPic').attr('src'));
            HidePTextContainer();

            /*$('.pBoxContainer').each(function () {
            var currentPos = $(this).css('top');
            if (currentPos > 0) { $(this).attr('tpos', currentPos); }
            $(this).fadeOut(100).css('top', '-400px').fadeIn(1);
            });*/

            $('.pBoxContainer').fadeOut(100);

        }
    });

}

function HideBGInfo() {
    $('#bbBgExplain').fadeOut(500);
    $('#pTextContainer').fadeIn(500);

    /*$('.pBoxContainer').each(function () {
        $(this).animate({ top: $(this).attr('tpos') }, 1000);
    });*/

    $('.pBoxContainer').fadeIn(500);
}

//*  CONTENT BUBBLES
//****************************************************

function AddBubbleHTML() {
    $('div.bubble').append('<div class="box_top"><div class="box_top_left"><div class="box_top_right"><div class="box_top_content"></div></div></div></div><div class="box_center"><div class="box_left"><div class="box_right"><div class="box_content"></div></div></div></div><div class="box_bottom"><div class="box_bot_left"><div class="box_bot_right"><div class="box_bot_content"></div></div></div></div>');

    $('div.pBox img').each(function () { $(this).addClass('pRight'); });
    //$('div.pBox').each(function () { $(this).append('<img class="pPlusLeft" style="top: ' + rand(20, 60) + 'px;" alt="" src="http://img.ndandp.com/ndp/styles/photoPlusLeft.png" />'); });
    $('div.pBox').each(function () { $(this).append('<img class="pPlusLeft" style="top: 20px;" alt="" src="http://img.ndandp.com/ndp/styles/photoPlusLeft.png" />'); });
}
function AdjustBubbleBg() {

    $('.bubble_container').each(function () {
        var h = $(this).height() - 199.5;
        $('.box_content', this).css('height', h + 'px');
    });

}

//*  HELPER FUNCTIONS
//****************************************************

//** URL PARAMETER HANDLING
var urlParams = {};
function ReadParameters() {
    var e,
        a = /\+/g,  // Regex for replacing addition symbol with a space
        r = /([^&=]+)=?([^&]*)/g,
        d = function (s) { return decodeURIComponent(s.replace(a, " ")); },
        q = window.location.search.substring(1);

    while (e = r.exec(q)) { urlParams[d(e[1])] = d(e[2]); }
}
function AutoSlideGallery() {
    var doScroll = urlParams['doScroll'];
    if (doScroll == 'true') {
        clearTimeout(bgTimer); ShowBgGallery(-1);
    }
}

function PreLoadImages() { /* $.preLoadImages("/styles/images/navMouseOver.png"); */ }

(function ($) {
    var cache = [];
    // Arguments are image paths relative to the current page.
    $.preLoadImages = function () {
        var args_len = arguments.length;
        for (var i = args_len; i--; ) {
            var cacheImage = document.createElement('img');
            cacheImage.src = arguments[i];
            cache.push(cacheImage);
        }
    }
})(jQuery)

function debug(str) { $('#debug').append(str + ', '); }
function rand(start, end) { return (Math.floor(Math.random() * end + start)); }

/*! Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
* Thanks to: Seamus Leahy for adding deltaX and deltaY
*
* Version: 3.0.4
* 
* Requires: 1.2.2+
*/

(function ($) {

    var types = ['DOMMouseScroll', 'mousewheel'];

    $.event.special.mousewheel = {
        setup: function () {
            if (this.addEventListener) {
                for (var i = types.length; i; ) {
                    this.addEventListener(types[--i], handler, false);
                }
            } else {
                this.onmousewheel = handler;
            }
        },

        teardown: function () {
            if (this.removeEventListener) {
                for (var i = types.length; i; ) {
                    this.removeEventListener(types[--i], handler, false);
                }
            } else {
                this.onmousewheel = null;
            }
        }
    };

    $.fn.extend({
        mousewheel: function (fn) {
            return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
        },

        unmousewheel: function (fn) {
            return this.unbind("mousewheel", fn);
        }
    });


    function handler(event) {
        var orgEvent = event || window.event, args = [].slice.call(arguments, 1), delta = 0, returnValue = true, deltaX = 0, deltaY = 0;
        event = $.event.fix(orgEvent);
        event.type = "mousewheel";

        // Old school scrollwheel delta
        if (event.wheelDelta) { delta = event.wheelDelta / 120; }
        if (event.detail) { delta = -event.detail / 3; }

        // New school multidimensional scroll (touchpads) deltas
        deltaY = delta;

        // Gecko
        if (orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS) {
            deltaY = 0;
            deltaX = -1 * delta;
        }

        // Webkit
        if (orgEvent.wheelDeltaY !== undefined) { deltaY = orgEvent.wheelDeltaY / 120; }
        if (orgEvent.wheelDeltaX !== undefined) { deltaX = -1 * orgEvent.wheelDeltaX / 120; }

        // Add event and delta to the front of the arguments
        args.unshift(event, delta, deltaX, deltaY);

        return $.event.handle.apply(this, args);
    }

})(jQuery);

/*
* jScrollPane - v2.0.0beta11 - 2011-07-04
* http://jscrollpane.kelvinluck.com/
*
* Copyright (c) 2010 Kelvin Luck
* Dual licensed under the MIT and GPL licenses.
*/
(function (b, a, c) {
    b.fn.jScrollPane = function (e) {
        function d(D, O) {
            var az, Q = this, Y, ak, v, am, T, Z, y, q, aA, aF, av, i, I, h, j, aa, U, aq, X, t, A, ar, af, an, G, l, au, ay, x, aw, aI, f, L, aj = true, P = true, aH = false, k = false, ap = D.clone(false, false).empty(), ac = b.fn.mwheelIntent ? "mwheelIntent.jsp" : "mousewheel.jsp"; aI = D.css("paddingTop") + " " + D.css("paddingRight") + " " + D.css("paddingBottom") + " " + D.css("paddingLeft"); f = (parseInt(D.css("paddingLeft"), 10) || 0) + (parseInt(D.css("paddingRight"), 10) || 0); function at(aR) { var aM, aO, aN, aK, aJ, aQ, aP = false, aL = false; az = aR; if (Y === c) { aJ = D.scrollTop(); aQ = D.scrollLeft(); D.css({ overflow: "hidden", padding: 0 }); ak = D.innerWidth() + f; v = D.innerHeight(); D.width(ak); Y = b('<div class="jspPane" />').css("padding", aI).append(D.children()); am = b('<div class="jspContainer" />').css({ width: ak + "px", height: v + "px" }).append(Y).appendTo(D) } else { D.css("width", ""); aP = az.stickToBottom && K(); aL = az.stickToRight && B(); aK = D.innerWidth() + f != ak || D.outerHeight() != v; if (aK) { ak = D.innerWidth() + f; v = D.innerHeight(); am.css({ width: ak + "px", height: v + "px" }) } if (!aK && L == T && Y.outerHeight() == Z) { D.width(ak); return } L = T; Y.css("width", ""); D.width(ak); am.find(">.jspVerticalBar,>.jspHorizontalBar").remove().end() } Y.css("overflow", "auto"); if (aR.contentWidth) { T = aR.contentWidth } else { T = Y[0].scrollWidth } Z = Y[0].scrollHeight; Y.css("overflow", ""); y = T / ak; q = Z / v; aA = q > 1; aF = y > 1; if (!(aF || aA)) { D.removeClass("jspScrollable"); Y.css({ top: 0, width: am.width() - f }); n(); E(); R(); w(); ai() } else { D.addClass("jspScrollable"); aM = az.maintainPosition && (I || aa); if (aM) { aO = aD(); aN = aB() } aG(); z(); F(); if (aM) { N(aL ? (T - ak) : aO, false); M(aP ? (Z - v) : aN, false) } J(); ag(); ao(); if (az.enableKeyboardNavigation) { S() } if (az.clickOnTrack) { p() } C(); if (az.hijackInternalLinks) { m() } } if (az.autoReinitialise && !aw) { aw = setInterval(function () { at(az) }, az.autoReinitialiseDelay) } else { if (!az.autoReinitialise && aw) { clearInterval(aw) } } aJ && D.scrollTop(0) && M(aJ, false); aQ && D.scrollLeft(0) && N(aQ, false); D.trigger("jsp-initialised", [aF || aA]) } function aG() { if (aA) { am.append(b('<div class="jspVerticalBar" />').append(b('<div class="jspCap jspCapTop" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragTop" />'), b('<div class="jspDragBottom" />'))), b('<div class="jspCap jspCapBottom" />'))); U = am.find(">.jspVerticalBar"); aq = U.find(">.jspTrack"); av = aq.find(">.jspDrag"); if (az.showArrows) { ar = b('<a class="jspArrow jspArrowUp" />').bind("mousedown.jsp", aE(0, -1)).bind("click.jsp", aC); af = b('<a class="jspArrow jspArrowDown" />').bind("mousedown.jsp", aE(0, 1)).bind("click.jsp", aC); if (az.arrowScrollOnHover) { ar.bind("mouseover.jsp", aE(0, -1, ar)); af.bind("mouseover.jsp", aE(0, 1, af)) } al(aq, az.verticalArrowPositions, ar, af) } t = v; am.find(">.jspVerticalBar>.jspCap:visible,>.jspVerticalBar>.jspArrow").each(function () { t -= b(this).outerHeight() }); av.hover(function () { av.addClass("jspHover") }, function () { av.removeClass("jspHover") }).bind("mousedown.jsp", function (aJ) { b("html").bind("dragstart.jsp selectstart.jsp", aC); av.addClass("jspActive"); var s = aJ.pageY - av.position().top; b("html").bind("mousemove.jsp", function (aK) { V(aK.pageY - s, false) }).bind("mouseup.jsp mouseleave.jsp", ax); return false }); o() } } function o() { aq.height(t + "px"); I = 0; X = az.verticalGutter + aq.outerWidth(); Y.width(ak - X - f); try { if (U.position().left === 0) { Y.css("margin-left", X + "px") } } catch (s) { } } function z() {
                if (aF) {
                    am.append(b('<div class="jspHorizontalBar" />').append(b('<div class="jspCap jspCapLeft" />'), b('<div class="jspTrack" />').append(b('<div class="jspDrag" />').append(b('<div class="jspDragLeft" />'), b('<div class="jspDragRight" />'))), b('<div class="jspCap jspCapRight" />'))); an = am.find(">.jspHorizontalBar"); G = an.find(">.jspTrack"); h = G.find(">.jspDrag"); if (az.showArrows) {
                        ay = b('<a class="jspArrow jspArrowLeft" />').bind("mousedown.jsp", aE(-1, 0)).bind("click.jsp", aC); x = b('<a class="jspArrow jspArrowRight" />').bind("mousedown.jsp", aE(1, 0)).bind("click.jsp", aC);
                        if (az.arrowScrollOnHover) { ay.bind("mouseover.jsp", aE(-1, 0, ay)); x.bind("mouseover.jsp", aE(1, 0, x)) } al(G, az.horizontalArrowPositions, ay, x)
                    } h.hover(function () { h.addClass("jspHover") }, function () { h.removeClass("jspHover") }).bind("mousedown.jsp", function (aJ) { b("html").bind("dragstart.jsp selectstart.jsp", aC); h.addClass("jspActive"); var s = aJ.pageX - h.position().left; b("html").bind("mousemove.jsp", function (aK) { W(aK.pageX - s, false) }).bind("mouseup.jsp mouseleave.jsp", ax); return false }); l = am.innerWidth(); ah()
                } 
            } function ah() { am.find(">.jspHorizontalBar>.jspCap:visible,>.jspHorizontalBar>.jspArrow").each(function () { l -= b(this).outerWidth() }); G.width(l + "px"); aa = 0 } function F() { if (aF && aA) { var aJ = G.outerHeight(), s = aq.outerWidth(); t -= aJ; b(an).find(">.jspCap:visible,>.jspArrow").each(function () { l += b(this).outerWidth() }); l -= s; v -= s; ak -= aJ; G.parent().append(b('<div class="jspCorner" />').css("width", aJ + "px")); o(); ah() } if (aF) { Y.width((am.outerWidth() - f) + "px") } Z = Y.outerHeight(); q = Z / v; if (aF) { au = Math.ceil(1 / y * l); if (au > az.horizontalDragMaxWidth) { au = az.horizontalDragMaxWidth } else { if (au < az.horizontalDragMinWidth) { au = az.horizontalDragMinWidth } } h.width(au + "px"); j = l - au; ae(aa) } if (aA) { A = Math.ceil(1 / q * t); if (A > az.verticalDragMaxHeight) { A = az.verticalDragMaxHeight } else { if (A < az.verticalDragMinHeight) { A = az.verticalDragMinHeight } } av.height(A + "px"); i = t - A; ad(I) } } function al(aK, aM, aJ, s) { var aO = "before", aL = "after", aN; if (aM == "os") { aM = /Mac/.test(navigator.platform) ? "after" : "split" } if (aM == aO) { aL = aM } else { if (aM == aL) { aO = aM; aN = aJ; aJ = s; s = aN } } aK[aO](aJ)[aL](s) } function aE(aJ, s, aK) { return function () { H(aJ, s, this, aK); this.blur(); return false } } function H(aM, aL, aP, aO) { aP = b(aP).addClass("jspActive"); var aN, aK, aJ = true, s = function () { if (aM !== 0) { Q.scrollByX(aM * az.arrowButtonSpeed) } if (aL !== 0) { Q.scrollByY(aL * az.arrowButtonSpeed) } aK = setTimeout(s, aJ ? az.initialDelay : az.arrowRepeatFreq); aJ = false }; s(); aN = aO ? "mouseout.jsp" : "mouseup.jsp"; aO = aO || b("html"); aO.bind(aN, function () { aP.removeClass("jspActive"); aK && clearTimeout(aK); aK = null; aO.unbind(aN) }) } function p() { w(); if (aA) { aq.bind("mousedown.jsp", function (aO) { if (aO.originalTarget === c || aO.originalTarget == aO.currentTarget) { var aM = b(this), aP = aM.offset(), aN = aO.pageY - aP.top - I, aK, aJ = true, s = function () { var aS = aM.offset(), aT = aO.pageY - aS.top - A / 2, aQ = v * az.scrollPagePercent, aR = i * aQ / (Z - v); if (aN < 0) { if (I - aR > aT) { Q.scrollByY(-aQ) } else { V(aT) } } else { if (aN > 0) { if (I + aR < aT) { Q.scrollByY(aQ) } else { V(aT) } } else { aL(); return } } aK = setTimeout(s, aJ ? az.initialDelay : az.trackClickRepeatFreq); aJ = false }, aL = function () { aK && clearTimeout(aK); aK = null; b(document).unbind("mouseup.jsp", aL) }; s(); b(document).bind("mouseup.jsp", aL); return false } }) } if (aF) { G.bind("mousedown.jsp", function (aO) { if (aO.originalTarget === c || aO.originalTarget == aO.currentTarget) { var aM = b(this), aP = aM.offset(), aN = aO.pageX - aP.left - aa, aK, aJ = true, s = function () { var aS = aM.offset(), aT = aO.pageX - aS.left - au / 2, aQ = ak * az.scrollPagePercent, aR = j * aQ / (T - ak); if (aN < 0) { if (aa - aR > aT) { Q.scrollByX(-aQ) } else { W(aT) } } else { if (aN > 0) { if (aa + aR < aT) { Q.scrollByX(aQ) } else { W(aT) } } else { aL(); return } } aK = setTimeout(s, aJ ? az.initialDelay : az.trackClickRepeatFreq); aJ = false }, aL = function () { aK && clearTimeout(aK); aK = null; b(document).unbind("mouseup.jsp", aL) }; s(); b(document).bind("mouseup.jsp", aL); return false } }) } } function w() { if (G) { G.unbind("mousedown.jsp") } if (aq) { aq.unbind("mousedown.jsp") } } function ax() { b("html").unbind("dragstart.jsp selectstart.jsp mousemove.jsp mouseup.jsp mouseleave.jsp"); if (av) { av.removeClass("jspActive") } if (h) { h.removeClass("jspActive") } } function V(s, aJ) { if (!aA) { return } if (s < 0) { s = 0 } else { if (s > i) { s = i } } if (aJ === c) { aJ = az.animateScroll } if (aJ) { Q.animate(av, "top", s, ad) } else { av.css("top", s); ad(s) } } function ad(aJ) { if (aJ === c) { aJ = av.position().top } am.scrollTop(0); I = aJ; var aM = I === 0, aK = I == i, aL = aJ / i, s = -aL * (Z - v); if (aj != aM || aH != aK) { aj = aM; aH = aK; D.trigger("jsp-arrow-change", [aj, aH, P, k]) } u(aM, aK); Y.css("top", s); D.trigger("jsp-scroll-y", [-s, aM, aK]).trigger("scroll") } function W(aJ, s) {
                if (!aF) { return } if (aJ < 0) { aJ = 0 } else { if (aJ > j) { aJ = j } } if (s === c) { s = az.animateScroll } if (s) {
                    Q.animate(h, "left", aJ, ae)
                } else { h.css("left", aJ); ae(aJ) } 
            } function ae(aJ) { if (aJ === c) { aJ = h.position().left } am.scrollTop(0); aa = aJ; var aM = aa === 0, aL = aa == j, aK = aJ / j, s = -aK * (T - ak); if (P != aM || k != aL) { P = aM; k = aL; D.trigger("jsp-arrow-change", [aj, aH, P, k]) } r(aM, aL); Y.css("left", s); D.trigger("jsp-scroll-x", [-s, aM, aL]).trigger("scroll") } function u(aJ, s) { if (az.showArrows) { ar[aJ ? "addClass" : "removeClass"]("jspDisabled"); af[s ? "addClass" : "removeClass"]("jspDisabled") } } function r(aJ, s) { if (az.showArrows) { ay[aJ ? "addClass" : "removeClass"]("jspDisabled"); x[s ? "addClass" : "removeClass"]("jspDisabled") } } function M(s, aJ) { var aK = s / (Z - v); V(aK * i, aJ) } function N(aJ, s) { var aK = aJ / (T - ak); W(aK * j, s) } function ab(aW, aR, aK) { var aO, aL, aM, s = 0, aV = 0, aJ, aQ, aP, aT, aS, aU; try { aO = b(aW) } catch (aN) { return } aL = aO.outerHeight(); aM = aO.outerWidth(); am.scrollTop(0); am.scrollLeft(0); while (!aO.is(".jspPane")) { s += aO.position().top; aV += aO.position().left; aO = aO.offsetParent(); if (/^body|html$/i.test(aO[0].nodeName)) { return } } aJ = aB(); aP = aJ + v; if (s < aJ || aR) { aS = s - az.verticalGutter } else { if (s + aL > aP) { aS = s - v + aL + az.verticalGutter } } if (aS) { M(aS, aK) } aQ = aD(); aT = aQ + ak; if (aV < aQ || aR) { aU = aV - az.horizontalGutter } else { if (aV + aM > aT) { aU = aV - ak + aM + az.horizontalGutter } } if (aU) { N(aU, aK) } } function aD() { return -Y.position().left } function aB() { return -Y.position().top } function K() { var s = Z - v; return (s > 20) && (s - aB() < 10) } function B() { var s = T - ak; return (s > 20) && (s - aD() < 10) } function ag() { am.unbind(ac).bind(ac, function (aM, aN, aL, aJ) { var aK = aa, s = I; Q.scrollBy(aL * az.mouseWheelSpeed, -aJ * az.mouseWheelSpeed, false); return aK == aa && s == I }) } function n() { am.unbind(ac) } function aC() { return false } function J() { Y.find(":input,a").unbind("focus.jsp").bind("focus.jsp", function (s) { ab(s.target, false) }) } function E() { Y.find(":input,a").unbind("focus.jsp") } function S() { var s, aJ, aL = []; aF && aL.push(an[0]); aA && aL.push(U[0]); Y.focus(function () { D.focus() }); D.attr("tabindex", 0).unbind("keydown.jsp keypress.jsp").bind("keydown.jsp", function (aO) { if (aO.target !== this && !(aL.length && b(aO.target).closest(aL).length)) { return } var aN = aa, aM = I; switch (aO.keyCode) { case 40: case 38: case 34: case 32: case 33: case 39: case 37: s = aO.keyCode; aK(); break; case 35: M(Z - v); s = null; break; case 36: M(0); s = null; break } aJ = aO.keyCode == s && aN != aa || aM != I; return !aJ }).bind("keypress.jsp", function (aM) { if (aM.keyCode == s) { aK() } return !aJ }); if (az.hideFocus) { D.css("outline", "none"); if ("hideFocus" in am[0]) { D.attr("hideFocus", true) } } else { D.css("outline", ""); if ("hideFocus" in am[0]) { D.attr("hideFocus", false) } } function aK() { var aN = aa, aM = I; switch (s) { case 40: Q.scrollByY(az.keyboardSpeed, false); break; case 38: Q.scrollByY(-az.keyboardSpeed, false); break; case 34: case 32: Q.scrollByY(v * az.scrollPagePercent, false); break; case 33: Q.scrollByY(-v * az.scrollPagePercent, false); break; case 39: Q.scrollByX(az.keyboardSpeed, false); break; case 37: Q.scrollByX(-az.keyboardSpeed, false); break } aJ = aN != aa || aM != I; return aJ } } function R() { D.attr("tabindex", "-1").removeAttr("tabindex").unbind("keydown.jsp keypress.jsp") } function C() { if (location.hash && location.hash.length > 1) { var aL, aJ, aK = escape(location.hash); try { aL = b(aK) } catch (s) { return } if (aL.length && Y.find(aK)) { if (am.scrollTop() === 0) { aJ = setInterval(function () { if (am.scrollTop() > 0) { ab(aK, true); b(document).scrollTop(am.position().top); clearInterval(aJ) } }, 50) } else { ab(aK, true); b(document).scrollTop(am.position().top) } } } } function ai() { b("a.jspHijack").unbind("click.jsp-hijack").removeClass("jspHijack") } function m() { ai(); b("a[href^=#]").addClass("jspHijack").bind("click.jsp-hijack", function () { var s = this.href.split("#"), aJ; if (s.length > 1) { aJ = s[1]; if (aJ.length > 0 && Y.find("#" + aJ).length > 0) { ab("#" + aJ, true); return false } } }) } function ao() {
                var aK, aJ, aM, aL, aN, s = false; am.unbind("touchstart.jsp touchmove.jsp touchend.jsp click.jsp-touchclick").bind("touchstart.jsp", function (aO) { var aP = aO.originalEvent.touches[0]; aK = aD(); aJ = aB(); aM = aP.pageX; aL = aP.pageY; aN = false; s = true }).bind("touchmove.jsp", function (aR) {
                    if (!s) { return } var aQ = aR.originalEvent.touches[0], aP = aa, aO = I; Q.scrollTo(aK + aM - aQ.pageX, aJ + aL - aQ.pageY); aN = aN || Math.abs(aM - aQ.pageX) > 5 || Math.abs(aL - aQ.pageY) > 5;
                    return aP == aa && aO == I
                }).bind("touchend.jsp", function (aO) { s = false }).bind("click.jsp-touchclick", function (aO) { if (aN) { aN = false; return false } })
            } function g() { var s = aB(), aJ = aD(); D.removeClass("jspScrollable").unbind(".jsp"); D.replaceWith(ap.append(Y.children())); ap.scrollTop(s); ap.scrollLeft(aJ) } b.extend(Q, { reinitialise: function (aJ) { aJ = b.extend({}, az, aJ); at(aJ) }, scrollToElement: function (aK, aJ, s) { ab(aK, aJ, s) }, scrollTo: function (aK, s, aJ) { N(aK, aJ); M(s, aJ) }, scrollToX: function (aJ, s) { N(aJ, s) }, scrollToY: function (s, aJ) { M(s, aJ) }, scrollToPercentX: function (aJ, s) { N(aJ * (T - ak), s) }, scrollToPercentY: function (aJ, s) { M(aJ * (Z - v), s) }, scrollBy: function (aJ, s, aK) { Q.scrollByX(aJ, aK); Q.scrollByY(s, aK) }, scrollByX: function (s, aK) { var aJ = aD() + Math[s < 0 ? "floor" : "ceil"](s), aL = aJ / (T - ak); W(aL * j, aK) }, scrollByY: function (s, aK) { var aJ = aB() + Math[s < 0 ? "floor" : "ceil"](s), aL = aJ / (Z - v); V(aL * i, aK) }, positionDragX: function (s, aJ) { W(s, aJ) }, positionDragY: function (aJ, s) { V(aJ, s) }, animate: function (aJ, aM, s, aL) { var aK = {}; aK[aM] = s; aJ.animate(aK, { duration: az.animateDuration, easing: az.animateEase, queue: false, step: aL }) }, getContentPositionX: function () { return aD() }, getContentPositionY: function () { return aB() }, getContentWidth: function () { return T }, getContentHeight: function () { return Z }, getPercentScrolledX: function () { return aD() / (T - ak) }, getPercentScrolledY: function () { return aB() / (Z - v) }, getIsScrollableH: function () { return aF }, getIsScrollableV: function () { return aA }, getContentPane: function () { return Y }, scrollToBottom: function (s) { V(i, s) }, hijackInternalLinks: function () { m() }, destroy: function () { g() } }); at(O)
        } e = b.extend({}, b.fn.jScrollPane.defaults, e); b.each(["mouseWheelSpeed", "arrowButtonSpeed", "trackClickSpeed", "keyboardSpeed"], function () { e[this] = e[this] || e.speed }); return this.each(function () { var f = b(this), g = f.data("jsp"); if (g) { g.reinitialise(e) } else { g = new d(f, e); f.data("jsp", g) } })
    }; b.fn.jScrollPane.defaults = { showArrows: false, maintainPosition: true, stickToBottom: false, stickToRight: false, clickOnTrack: true, autoReinitialise: false, autoReinitialiseDelay: 500, verticalDragMinHeight: 0, verticalDragMaxHeight: 99999, horizontalDragMinWidth: 0, horizontalDragMaxWidth: 99999, contentWidth: c, animateScroll: false, animateDuration: 300, animateEase: "linear", hijackInternalLinks: false, verticalGutter: 4, horizontalGutter: 4, mouseWheelSpeed: 0, arrowButtonSpeed: 0, arrowRepeatFreq: 50, arrowScrollOnHover: false, trackClickSpeed: 0, trackClickRepeatFreq: 70, verticalArrowPositions: "split", horizontalArrowPositions: "split", enableKeyboardNavigation: true, hideFocus: false, keyboardSpeed: 0, initialDelay: 300, speed: 30, scrollPagePercent: 0.8}
})(jQuery, this);

/**
* jQuery Cookie plugin
*
* Copyright (c) 2010 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
$.cookie = function (key, value, options) {

    // key and at least value given, set cookie...
    if (arguments.length > 1 && String(value) !== "[object Object]") {
        options = jQuery.extend({}, options);

        if (value === null || value === undefined) {
            options.expires = -1;
        }

        if (typeof options.expires === 'number') {
            var days = options.expires, t = options.expires = new Date();
            t.setDate(t.getDate() + days);
        }

        value = String(value);

        return (document.cookie = [
            encodeURIComponent(key), '=',
            options.raw ? value : encodeURIComponent(value),
            options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
            options.path ? '; path=' + options.path : '',
            options.domain ? '; domain=' + options.domain : '',
            options.secure ? '; secure' : ''
        ].join(''));
    }

    // key and possibly options given, get cookie...
    options = value || {};
    var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};

