﻿//// ********************************************************************************** /////////////////
///  global.js 
//// ********************************************************************************** /////////////////
ML = new Object();
ML.Online = new Object();
ML.Online.UST = new Object();
ML.Online.UST.Framework = new Object();
ML.Online.UST.Framework = function() {
    this.version = '1.0';
    this.type = 'UST';
}

var gStrDvMasterMessageID = 'dvMasterMessage';
var gStrUnsupportedBrowserMarkup = '<div class="marginLeft_5px" >' +
                                        '<div class="divRight cursorPointer" onclick="USTJSLibrary.CloseUnsupportedBrowserMessage();">' +
                                            '<img title="Close" src="/publish/images/close.gif" /></div>' +
                                        '<p>' +
                                            '<strong>You are accessing the site from an unsupported browser.</strong>' +
                                            '<br />' +
                                            'We have detected you are using a browser that this site does not currently support.' +
                                            'Using this version of the browser on the site could cause problems, including:' +
                                        '</p>' +
                                        '<ul class="marginLeft_30px">' +
                                            '<li>certain pages displaying incompletely</li>' +
                                            '<li>some functions performing improperly</li>' +
                                        '</ul>' +
                                        '<br />' +
                                        '<p>' +
                                            'Please <a onclick="window.open(\'/publish/error/SoftwareLibrary.html\',\'SoftwareRequirements\',\'width=550,height=400\');"' +
                                            'href="javascript:void(0)"><span class="ancLearnMore">click here</span> </a>to ' +
                                            'see the full list of browsers our website supports.' +
                                        '</p>' +
                                    '</div>';

var USTJSLibrary;
ML.Online.UST.Framework.prototype =
{
    SendCryptedKey: function(txtFieldID) {
        try {
            var _cryptedKey = document.getElementById(txtFieldID).value;
            ML.Online.UST.UI.UIServices.ServerNameDecoder.RetrieveDecryptedServerName
            			(
                			_cryptedKey,
                			USTJSLibrary.SuccessfulRetrieval_ServerNm,
                			USTJSLibrary.OnFailWebService_ServerNm
            			);
        }
        catch (ex) {
            alert(ex);
        }
    },
    SuccessfulRetrieval_ServerNm: function(servername) {
        if (servername || servername != '') {
            alert('Server Requested is:' + servername);
        }
    },
    OnFailWebService_ServerNm: function(error) {
        alert(error);
    },
    handleHttpStatusError: function(httpStatusSource, requestedPageUrl, sourceError, homepageurl) {
        var _pageUrl = '';
        _pageUrl = requestedPageUrl;

        document.write("<div class='dataContent'><div id='bodyContent'><div id='ust_System'><h2>Page Not Found</h2>");
        document.write("<p style='PADDING-LEFT:8px;' class='bodytext'>We're sorry, the page you've requested does not exist at this address.  </p>");
        document.write("<p style='PADDING-LEFT: 8px;' class='bodytext'>If you typed in the address, check to make sure it is spelled correctly.</p></div></div></div>");


        /* document.write("<div class='dataConetnt'><div id='bodyContent'><div style='PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: rgb(255,255,255) 0px 0px; PADDING-BOTTOM: 8px; MARGIN: 0px -8px; PADDING-TOP: 8px' class='txtExtraLarge  headingType5 marginTop_30px '>Page Not Found</div>");
        document.write("<div style='PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: rgb(255,255,255) 0px 0px; PADDING-BOTTOM: 8px; MARGIN: 0px -8px; PADDING-TOP: 8px'>We're sorry, the page you've requested does not exist at this address.</div>");
        document.write("<div style='PADDING-RIGHT: 8px; PADDING-LEFT: 8px; BACKGROUND: rgb(255,255,255) 0px 0px; PADDING-BOTTOM: 8px; MARGIN: 0px -8px; PADDING-TOP: 8px'>If you typed in the address, check to make sure it is spelled correctly.</div></div></div>");*/


    }, //................... Used by ErrorHandler HTTP Module .........................
    writeErrorMessage: function(errGuid, errPageUrl, errMsg) {
        document.write('<br/><br/><div id="errorMessage">');
        document.write('<div id="errorHead"><h4>System Not Responding</h4></div><br/>');
        document.write('<p style="width:100%;">' + errMsg + '</p>');
        document.write('<a href="javascript:USTJSLibrary.showErrorModuleFromDiv();">.</a>');
        document.write('</div><br/><br/>');
    },
    showErrorModuleFromDiv: function() {
        var _errFromHtml = document.getElementById('errModulePH');
        alert(_errFromHtml.innerHTML);
    },

    ShowUnsupportedBrowserMessage: function() {
        var dvUnBrow;
        try {
            dvUnBrow = document.getElementById(gStrDvMasterMessageID);
            if (dvUnBrow != null) {
                if (gStrUnsupportedBrowserMarkup.length > 0) {
                    dvUnBrow.innerHTML = gStrUnsupportedBrowserMarkup;
                    dvUnBrow.className = 'divStageAlert overflowHidden';
                }
                else {
                    dvUnBrow.innerHTML = '';
                    dvUnBrow.className = '';
                    dvUnBrow.style.display = 'none';
                }
            }
        }
        catch (objEx) { }
    },

    CloseUnsupportedBrowserMessage: function() {
        var dvUnBrow;
        try {
            dvUnBrow = document.getElementById(gStrDvMasterMessageID);
            if (dvUnBrow != null) {
                dvUnBrow.innerHTML = '';
                dvUnBrow.className = '';
                dvUnBrow.style.display = 'none';
            }
        }
        catch (objEx) { }
    }

}
USTJSLibrary = new ML.Online.UST.Framework();
//// ********************************************************************************** /////////////////
///  SearchAutoComplete.js
///  ECMS Search
//// ********************************************************************************** /////////////////
/*Js file used for Autocomplete functionality of search box .*/

var FastSearchLibrary = new Object()
var gFastSearchLibrary = null;

FastSearchLibrary.Framework = function() {
    //this.version = '1.0';
    this.type = 'General';
}

var gFastobjIDs = {
    'getAutoCompleteDivID': 'dvAutoComplete',
    'GetAutocompletelistID': 'liAutocompleteid'
};

var gFastClassColtn = { 'GetAutocCompleteDivClass': 'acSearch_results', 'GetAutoCompleteSelectRowClass': 'ac_gray',
    'DisplayNone': 'displayNone'
};

//Global Variables
var gstrAutoCompleteUIStart = '<ul id="ulautocomplte" >';
var gstrAutoCompleteUIEnd = '</ul>';
var gStrAutoCompleteRowStart = '<li  class="ac_even" id="' + gFastobjIDs.GetAutocompletelistID + '" onmouseover="gFastSearchLibrary.AutoCompleteMouseOver(this)" onmousedown="gFastSearchLibrary.AutoCompleteRowSelected(this);" ><span class="floatLeft">';
var gStrAutoCompleteRowEnd = '</li>';
var gstrSpanEnd = "</span>";

var gIntAutocompleteSelectedRow = 0;   /// To store currently selected row number in Autocompletelist
var gIntAutoCompleteFirstRow = 0;  /// To store First Row Number in Autocomplete list
var gIntAutoCompleteLastRow = 0;  /// To store Last Row Number in Autocomplete list 

var gSearchtextBox;
var gSearchAnchorBtn;

FastSearchLibrary.Framework.prototype =
{
    AddDivtoPage: function(srchanchorbtn, srchtextbox, QCPortNumber, oevent) {
        if (oevent.keyCode != 40 && oevent.keyCode != 38) {

            gSearchtextBox = srchtextbox;
            gSearchAnchorBtn = document.getElementById(srchanchorbtn);
            /// Gets the location settings of Textbox Control    
            if ($get(gFastobjIDs.getAutoCompleteDivID)) {
                document.getElementsByTagName('BODY')[0].removeChild($get(gFastobjIDs.getAutoCompleteDivID));
            }
            if (gSearchtextBox.value.length > 0) {
                ret = Merrill.UIService.AutoCompleteWebServiceWrapper.FaportalGetFASTCompletionList(gSearchtextBox.value, QCPortNumber, gFastSearchLibrary.OnAutoCompleteServiceSuccess, gFastSearchLibrary.OnError, gFastSearchLibrary.OnTimeOut);
            }
        }

    },

    OnAutoCompleteServiceSuccess: function(result) {

        var strHTML;
        var intIndex;
        var blnEven = true;
        var dvContainer;
        var objTextBoxBounds;

        if (!result)  //// if result is null then return
            return false;
        //// If result has no records then return 
        if (result.length < 1)
            return false;
        strHTML = gstrAutoCompleteUIStart;
        for (intIndex = 0; intIndex < result.length; intIndex++) {

            strHTML = strHTML + gStrAutoCompleteRowStart.replace(gFastobjIDs.GetAutocompletelistID, gFastobjIDs.GetAutocompletelistID + intIndex);
            strHTML = strHTML + result[intIndex] + gstrSpanEnd + gStrAutoCompleteRowEnd;
        }
        gIntAutoCompleteLastRow = intIndex;
        gIntAutocompleteSelectedRow = -1;


        strHTML = strHTML + gstrAutoCompleteUIEnd;
        dvContainer = document.createElement('DIV');
        dvContainer.id = gFastobjIDs.getAutoCompleteDivID;
        objTextBoxBounds = Sys.UI.DomElement.getBounds(gSearchtextBox);
        dvContainer.className = gFastClassColtn.GetAutocCompleteDivClass;
        Sys.UI.DomElement.setLocation(dvContainer, objTextBoxBounds.x, objTextBoxBounds.y + objTextBoxBounds.height);  //Sets the location of Quote result container DIV
        dvContainer.innerHTML = strHTML;
        document.getElementsByTagName('BODY')[0].appendChild(dvContainer);
    },
    OnTimeOut: function(arg) {
        alert("TimeOut encountered when callin fast web service.");
    },
    OnError: function(arg) {
        alert("Error : " + arg);
    },

    AutoCompleteRowDeselect: function(objRow) {
        if (objRow) {

            objRow.className = objRow.className.replace(' ' + gFastClassColtn.GetAutoCompleteSelectRowClass, '');
        }
    },
    AutoCompleteMouseOver: function(objRow) {
        if (objRow) {
            gFastSearchLibrary.AutoCompleteRowDeselect($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
            objRow.className = objRow.className + ' ' + gFastClassColtn.GetAutoCompleteSelectRowClass;
            gIntAutocompleteSelectedRow = objRow.id.replace(gFastobjIDs.GetAutocompletelistID, '') * 1;
        }
    },
    AutoCompleteRowSelected: function(objRow) {

        if ('string' == typeof objRow.textContent) //IE
            gSearchtextBox.value = objRow.textContent;
        if ('string' == typeof objRow.innerText)//Firefox
            gSearchtextBox.value = objRow.innerText;
        gSearchAnchorBtn.onclick(); //IE and opera
        return false;
    },

    AutoCompleteRemove: function() {
        try {
            if ($get(gFastobjIDs.getAutoCompleteDivID))
                document.getElementsByTagName('BODY')[0].removeChild($get(gFastobjIDs.getAutoCompleteDivID));
        }
        catch (ex) {

        }
    },
    //// Selects rows by Keyboard Arrow Keys in search  Control.               
    GetAutoCompleteSelectRowByArrowKeys: function(objEvent) {

        try {


            if (!$get(gFastobjIDs.getAutoCompleteDivID)) {

                return;
            }

            if (objEvent.keyCode == 40) //down arrow
            {
                if ($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow)) {
                    gFastSearchLibrary.AutoCompleteRowDeselect($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
                }
                gIntAutocompleteSelectedRow += 1;
                if ($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow)) {
                    gFastSearchLibrary.AutoCompleteMouseOver($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
                }
                else {
                    gIntAutocompleteSelectedRow = gIntAutoCompleteFirstRow;
                    gFastSearchLibrary.AutoCompleteMouseOver($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
                }
            }
            else if (objEvent.keyCode == 38) //uparrow
            {

                if ($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow)) {
                    gFastSearchLibrary.AutoCompleteRowDeselect($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
                }
                gIntAutocompleteSelectedRow -= 1;
                if ($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow)) {

                    gFastSearchLibrary.AutoCompleteMouseOver($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
                }
                else {
                    gIntAutocompleteSelectedRow = gIntAutoCompleteLastRow;
                    gFastSearchLibrary.AutoCompleteMouseOver($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
                }
            }
            else if (objEvent.keyCode == 13) {

                gFastSearchLibrary.AutoCompleteRowSelected($get(gFastobjIDs.GetAutocompletelistID + gIntAutocompleteSelectedRow));
            }
        }
        catch (ex) {

        }
    }


}

gFastSearchLibrary = new FastSearchLibrary.Framework();



////function onsearchclick1(txtboxid, anchorid) {
////    var strquery;
////    var textvalue = document.getElementById(txtboxid).value;
////    var vhref = document.getElementById(anchorid).href;
////    if (textvalue == null || textvalue == '' || textvalue == 'Search') { alert('Please enter a search term'); return false; }
////    else {
////        if (checkSpecialCharacters2(textvalue, 'search')) {
////            //********* Below lines are commenteed temporarily .. since we need to customize webparts to handle this characters ...will be done in future release *******//
////            var reg = new RegExp("[\&]", "g");
////            textvalue = textvalue.replace(reg, "||");  //Replacing apostrophe with $|$ to handle cross site scripting
////            var reg1 = new RegExp("[\']", "g");
////            textvalue = textvalue.replace(reg1, "~~"); //Replace  apostrophe with ~~
////            strquery = textvalue + "&filter=all";
////            // strquery = "&k=" + textvalue + "&filter=all";
////            // strquery="?k="+textvalue ;
////            /*strquery="and(string(\""+textvalue+"\", mode=\"any\"),(hidefromfastsearch:no),annotation_class=\"user\")";
////            textvalue=strquery */
////            vhref = vhref + encodeURI(strquery);
////            if (document.getElementById(anchorid) != null) {
////                window.location.href = vhref;
////            }
////        }
////        return false;
////    }
////}

////function onsearchclick2(txtboxid, anchorid, filterID) {
////    var strquery;
////    var textvalue = document.getElementById(txtboxid).value;
////    var selectedinded = document.getElementById(filterID).selectedIndex;
////    var filter = document.getElementById(filterID).options[selectedinded].value
////    var vhref = document.getElementById(anchorid).href;
////    if (textvalue == null || textvalue == '' || textvalue == 'Search') { alert('Please enter a search term'); return false; }
////    else {
////        if (checkSpecialCharacters2(textvalue, 'search')) {
////            //var reg = new RegExp("[\"]","g");
////            //textvalue = textvalue.replace(reg, "\"");

////            //********* Below lines are commenteed temporarily .. since we need to customize webparts to handle this characters ...will be done in future release *******//
////            var reg = new RegExp("[\&]", "g");
////            textvalue = textvalue.replace(reg, "||");  //Replacing apostrophe with $|$ to handle cross site scripting
////            var reg1 = new RegExp("[\']", "g");
////            textvalue = textvalue.replace(reg1, "~~"); //Replace  apostrophe with ~~
////            strquery = textvalue + "&filter=" + filter;
////            // strquery = "&k=" + textvalue + "&filter=" + filter;
////            // strquery="?k="+textvalue ;
////            /*strquery="and(string(\""+textvalue+"\", mode=\"any\"),(hidefromfastsearch:no),annotation_class=\"user\")";
////            textvalue=strquery */
////            vhref = vhref + encodeURI(strquery);
////            if (document.getElementById(anchorid) != null) {
////                window.location.href = vhref;
////            }
////        }
////        return false;
////    }
////}
//////Function to check accepted characters
////function checkSpecialCharacters2(pfield, pfieldName) {
////    var allowedCharacters;
////    allowedCharacters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
////    var allowedSpecialChar = " $*&?%\"().,-~'";
////    var SpcialCharNotAllow = "`!@^_{[}]/:;+=<>#|"; //Avoided this characters from search term
////    var isCharAvail = false;
////    var isSpecialAvail = false;
////    var isinvalidchar = false;
////    for (var j = 0; j < pfield.length; j++) {
////        if (allowedCharacters.indexOf(pfield.substring(j, j + 1)) != -1) {
////            isCharAvail = true;
////        }
////        else if (allowedSpecialChar.indexOf(pfield.substring(j, j + 1)) != -1) {
////            isSpecialAvail = true;
////        }
////        else if (SpcialCharNotAllow.indexOf(pfield.substring(j, j + 1)) != -1) {
////            isinvalidchar = true;
////        }
////    }

////    if (isinvalidchar == true || (pfield.length == 1 && isSpecialAvail == true) || isCharAvail == false) {
////        alert(pfieldName + " contains invalid characters. Please re-enter the " + pfieldName + ".");

////        return false;
////    }
////    return true;
////}

//// ********************************************************************************** /////////////////
////  SearchUtilSearchWidget.js
//// ********************************************************************************** /////////////////
var SearchWidgetLibrary = new Object()
var objSearchWidgetLibrary = null;

SearchWidgetLibrary.Framework = function() {
    this.type = 'General';
}

SearchWidgetLibrary.Framework.prototype =
{
    onsearchclick1: function(txtbox, anchorid) {

        var strquery;
        var ele = document.getElementById(txtbox);
        var textvalue = ele.value;
        var vhref = document.getElementById(anchorid)
        if (textvalue == null || textvalue == '' || textvalue == 'Search') { alert('Please enter a search term'); return false; }
        else {
            if (objSearchWidgetLibrary.checkSpecialCharacters2(textvalue, 'search')) {
                //Below lines are commenteed temporarily .. since we need to customize webparts to handle this characters ...will be done in future release
                var reg = new RegExp("[\&]", "g");
                textvalue = textvalue.replace(reg, "||");  //Replacing apostrophe with $|$ to handle cross site scripting
                var reg1 = new RegExp("[\']", "g");
                textvalue = textvalue.replace(reg1, "~~"); //Replace  apostrophe with ~~
                strquery = textvalue + "&filter=all";
                // strquery = "&k=" + textvalue + "&filter=all";
                // strquery="?k="+textvalue ;          
                vhref = vhref + encodeURI(strquery);
                if (document.getElementById(anchorid) != null) {
                    window.location.href = vhref;
                }
            }
            return false;
        }
    },

    onsearchclick2: function(txtbox, anchorid, filterID) {

        var strquery;
        var ele = document.getElementById(txtbox);
        var textvalue = ele.value;
        var selectedinded = document.getElementById(filterID).selectedIndex;
        var filter = document.getElementById(filterID).options[selectedinded].value
        var vhref = document.getElementById(anchorid);
        if (textvalue == null || textvalue == '' || textvalue == 'Search') { alert('Please enter a search term'); return false; }
        else {
            if (objSearchWidgetLibrary.checkSpecialCharacters2(textvalue, 'search')) {

                //********* Below lines are commenteed temporarily .. since we need to customize webparts to handle this characters ...will be done in future release 
                var reg = new RegExp("[\&]", "g");
                textvalue = textvalue.replace(reg, "||");  //Replacing apostrophe with $|$ to handle cross site scripting
                var reg1 = new RegExp("[\']", "g");
                textvalue = textvalue.replace(reg1, "~~"); //Replace  apostrophe with ~~
                strquery = textvalue + "&filter=" + filter;
                vhref = vhref + encodeURI(strquery);
                if (document.getElementById(anchorid) != null) {
                    window.location.href = vhref;
                }
            }
            return false;
        }
    },

    onMLISearchClick1: function(txtbox, anchorid, control) {

        var strquery;
        var ele = document.getElementById(txtbox);
        var textvalue = ele.value;
        var vhref = document.getElementById(anchorid)
        if (textvalue == null || textvalue == '' || textvalue == 'Search') { alert('Please enter a search term'); return false; }
        else {
            if (objSearchWidgetLibrary.checkSpecialCharacters2(textvalue, 'search')) {
                //Below lines are commenteed temporarily .. since we need to customize webparts to handle this characters ...will be done in future release
                var reg = new RegExp("[\&]", "g");
                textvalue = textvalue.replace(reg, "||");  //Replacing apostrophe with $|$ to handle cross site scripting
                var reg1 = new RegExp("[\']", "g");
                textvalue = textvalue.replace(reg1, "~~"); //Replace  apostrophe with ~~

                if (control.toLowerCase() == 'mli')
                    strquery = textvalue + "&filter=all&control=mli";
                else if (control.toLowerCase() == 'master')
                    strquery = textvalue + "&filter=all&control=master";
                else
                    strquery = textvalue + "filter=all";

                vhref = vhref + encodeURI(strquery);
                if (document.getElementById(anchorid) != null) {
                    window.location.href = vhref;
                }
            }
            return false;
        }



    },

    onMLISearchClick2: function(txtbox, anchorid, filterID, control) {


        var strquery;
        var ele = document.getElementById(txtbox);
        var textvalue = ele.value;
        var selectedinded = document.getElementById(filterID).selectedIndex;
        var filter = document.getElementById(filterID).options[selectedinded].value
        var vhref = document.getElementById(anchorid);
        if (textvalue == null || textvalue == '' || textvalue == 'Search') { alert('Please enter a search term'); return false; }
        else {
            if (objSearchWidgetLibrary.checkSpecialCharacters2(textvalue, 'search')) {

                //********* Below lines are commenteed temporarily .. since we need to customize webparts to handle this characters ...will be done in future release 
                var reg = new RegExp("[\&]", "g");
                textvalue = textvalue.replace(reg, "||");  //Replacing apostrophe with $|$ to handle cross site scripting
                var reg1 = new RegExp("[\']", "g");
                textvalue = textvalue.replace(reg1, "~~"); //Replace  apostrophe with ~~

                if (control.toLowerCase() == 'mli')
                    strquery = textvalue + "&filter=" + filter + "&control=mli";
                else if (control.toLowerCase() == 'master')
                    strquery = textvalue + "&filter=" + filter + "&control=master";
                else
                    strquery = textvalue + "&filter=" + filter;

                vhref = vhref + encodeURI(strquery);
                if (document.getElementById(anchorid) != null) {
                    window.location.href = vhref;
                }
            }
            return false;
        }

    },

    //Function to check accepted characters
    checkSpecialCharacters2: function(pfield, pfieldName) {

        var allowedCharacters;
        allowedCharacters = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        var allowedSpecialChar = " $*&?%\"().,-~'";
        var SpcialCharNotAllow = "`!@^_{[}]/:;+=<>#|"; //Avoided this characters from search term
        var isCharAvail = false;
        var isSpecialAvail = false;
        var isinvalidchar = false;
        for (var j = 0; j < pfield.length; j++) {
            if (allowedCharacters.indexOf(pfield.substring(j, j + 1)) != -1) {
                isCharAvail = true;
            }
            else if (allowedSpecialChar.indexOf(pfield.substring(j, j + 1)) != -1) {
                isSpecialAvail = true;
            }
            else if (SpcialCharNotAllow.indexOf(pfield.substring(j, j + 1)) != -1) {
                isinvalidchar = true;
            }
        }

        if (isinvalidchar == true || (pfield.length == 1 && isSpecialAvail == true) || isCharAvail == false) {
            alert(pfieldName + " contains invalid characters. Please re-enter the " + pfieldName + ".");

            return false;
        }
        return true;
    }
,
    fnTrapKD2: function(btn, event) {
        if (document.all) {
            if (event.keyCode == 13 || event.which == 13) {

                event.returnValue = false;
                event.cancel = true;
                document.getElementById(btn).onclick();
            }
        }
        else if (document.getElementById) {
            if (event.keyCode == 13 || event.which == 13) {

                event.returnValue = false;
                event.cancel = true;
                document.getElementById(btn).onclick();

            }
        }
        else if (document.layers) {

            if (event.keyCode == 13 || event.which == 13) {
                event.returnValue = false;
                event.cancel = true;
                document.getElementById(btn).onclick();
            }
        }
        // alert(document.getElementById(btn));
    },

    clearText2: function(obj) {
        if (obj.value == 'Search') {

            obj.value = '';
        }
    },
    highlightNav: function() {
        return;
    }
}
objSearchWidgetLibrary = new SearchWidgetLibrary.Framework();

//// **************************************************************************************** ////

//// ****** jquery-1.4.1.min.js Starts  ************************************************************************ ////

/*!
* jQuery JavaScript Library v1.4.1
* http://jquery.com/
*
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
* Copyright 2010, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
* Date: Mon Jan 25 19:43:33 2010 -0500
*/
(function(z, v) {
    function la() { if (!c.isReady) { try { r.documentElement.doScroll("left") } catch (a) { setTimeout(la, 1); return } c.ready() } } function Ma(a, b) { b.src ? c.ajax({ url: b.src, async: false, dataType: "script" }) : c.globalEval(b.text || b.textContent || b.innerHTML || ""); b.parentNode && b.parentNode.removeChild(b) } function X(a, b, d, f, e, i) {
        var j = a.length; if (typeof b === "object") { for (var n in b) X(a, n, b[n], f, e, d); return a } if (d !== v) { f = !i && f && c.isFunction(d); for (n = 0; n < j; n++) e(a[n], b, f ? d.call(a[n], n, e(a[n], b)) : d, i); return a } return j ?
e(a[0], b) : null
    } function J() { return (new Date).getTime() } function Y() { return false } function Z() { return true } function ma(a, b, d) { d[0].type = a; return c.event.handle.apply(b, d) } function na(a) {
        var b, d = [], f = [], e = arguments, i, j, n, o, m, s, x = c.extend({}, c.data(this, "events").live); if (!(a.button && a.type === "click")) {
            for (o in x) { j = x[o]; if (j.live === a.type || j.altLive && c.inArray(a.type, j.altLive) > -1) { i = j.data; i.beforeFilter && i.beforeFilter[a.type] && !i.beforeFilter[a.type](a) || f.push(j.selector) } else delete x[o] } i = c(a.target).closest(f,
a.currentTarget); m = 0; for (s = i.length; m < s; m++) for (o in x) { j = x[o]; n = i[m].elem; f = null; if (i[m].selector === j.selector) { if (j.live === "mouseenter" || j.live === "mouseleave") f = c(a.relatedTarget).closest(j.selector)[0]; if (!f || f !== n) d.push({ elem: n, fn: j }) } } m = 0; for (s = d.length; m < s; m++) { i = d[m]; a.currentTarget = i.elem; a.data = i.fn.data; if (i.fn.apply(i.elem, e) === false) { b = false; break } } return b
        }
    } function oa(a, b) { return "live." + (a ? a + "." : "") + b.replace(/\./g, "`").replace(/ /g, "&") } function pa(a) {
        return !a || !a.parentNode || a.parentNode.nodeType ===
11
    } function qa(a, b) { var d = 0; b.each(function() { if (this.nodeName === (a[d] && a[d].nodeName)) { var f = c.data(a[d++]), e = c.data(this, f); if (f = f && f.events) { delete e.handle; e.events = {}; for (var i in f) for (var j in f[i]) c.event.add(this, i, f[i][j], f[i][j].data) } } }) } function ra(a, b, d) {
        var f, e, i; if (a.length === 1 && typeof a[0] === "string" && a[0].length < 512 && a[0].indexOf("<option") < 0 && (c.support.checkClone || !sa.test(a[0]))) { e = true; if (i = c.fragments[a[0]]) if (i !== 1) f = i } if (!f) {
            b = b && b[0] ? b[0].ownerDocument || b[0] : r; f = b.createDocumentFragment();
            c.clean(a, b, f, d)
        } if (e) c.fragments[a[0]] = i ? f : 1; return { fragment: f, cacheable: e }
    } function K(a, b) { var d = {}; c.each(ta.concat.apply([], ta.slice(0, b)), function() { d[this] = a }); return d } function ua(a) { return "scrollTo" in a && a.document ? a : a.nodeType === 9 ? a.defaultView || a.parentWindow : false } var c = function(a, b) { return new c.fn.init(a, b) }, Na = z.jQuery, Oa = z.$, r = z.document, S, Pa = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/, Qa = /^.[^:#\[\.,]*$/, Ra = /\S/, Sa = /^(\s|\u00A0)+|(\s|\u00A0)+$/g, Ta = /^<(\w+)\s*\/?>(?:<\/\1>)?$/, O = navigator.userAgent,
va = false, P = [], L, $ = Object.prototype.toString, aa = Object.prototype.hasOwnProperty, ba = Array.prototype.push, Q = Array.prototype.slice, wa = Array.prototype.indexOf; c.fn = c.prototype = { init: function(a, b) {
    var d, f; if (!a) return this; if (a.nodeType) { this.context = this[0] = a; this.length = 1; return this } if (typeof a === "string") if ((d = Pa.exec(a)) && (d[1] || !b)) if (d[1]) {
        f = b ? b.ownerDocument || b : r; if (a = Ta.exec(a)) if (c.isPlainObject(b)) { a = [r.createElement(a[1])]; c.fn.attr.call(a, b, true) } else a = [f.createElement(a[1])]; else {
            a = ra([d[1]],
[f]); a = (a.cacheable ? a.fragment.cloneNode(true) : a.fragment).childNodes
        }
    } else { if (b = r.getElementById(d[2])) { if (b.id !== d[2]) return S.find(a); this.length = 1; this[0] = b } this.context = r; this.selector = a; return this } else if (!b && /^\w+$/.test(a)) { this.selector = a; this.context = r; a = r.getElementsByTagName(a) } else return !b || b.jquery ? (b || S).find(a) : c(b).find(a); else if (c.isFunction(a)) return S.ready(a); if (a.selector !== v) { this.selector = a.selector; this.context = a.context } return c.isArray(a) ? this.setArray(a) : c.makeArray(a,
this)
}, selector: "", jquery: "1.4.1", length: 0, size: function() { return this.length }, toArray: function() { return Q.call(this, 0) }, get: function(a) { return a == null ? this.toArray() : a < 0 ? this.slice(a)[0] : this[a] }, pushStack: function(a, b, d) { a = c(a || null); a.prevObject = this; a.context = this.context; if (b === "find") a.selector = this.selector + (this.selector ? " " : "") + d; else if (b) a.selector = this.selector + "." + b + "(" + d + ")"; return a }, setArray: function(a) { this.length = 0; ba.apply(this, a); return this }, each: function(a, b) {
    return c.each(this,
a, b)
}, ready: function(a) { c.bindReady(); if (c.isReady) a.call(r, c); else P && P.push(a); return this }, eq: function(a) { return a === -1 ? this.slice(a) : this.slice(a, +a + 1) }, first: function() { return this.eq(0) }, last: function() { return this.eq(-1) }, slice: function() { return this.pushStack(Q.apply(this, arguments), "slice", Q.call(arguments).join(",")) }, map: function(a) { return this.pushStack(c.map(this, function(b, d) { return a.call(b, d, b) })) }, end: function() { return this.prevObject || c(null) }, push: ba, sort: [].sort, splice: [].splice
};
    c.fn.init.prototype = c.fn; c.extend = c.fn.extend = function() { var a = arguments[0] || {}, b = 1, d = arguments.length, f = false, e, i, j, n; if (typeof a === "boolean") { f = a; a = arguments[1] || {}; b = 2 } if (typeof a !== "object" && !c.isFunction(a)) a = {}; if (d === b) { a = this; --b } for (; b < d; b++) if ((e = arguments[b]) != null) for (i in e) { j = a[i]; n = e[i]; if (a !== n) if (f && n && (c.isPlainObject(n) || c.isArray(n))) { j = j && (c.isPlainObject(j) || c.isArray(j)) ? j : c.isArray(n) ? [] : {}; a[i] = c.extend(f, j, n) } else if (n !== v) a[i] = n } return a }; c.extend({ noConflict: function(a) {
        z.$ =
Oa; if (a) z.jQuery = Na; return c
    }, isReady: false, ready: function() { if (!c.isReady) { if (!r.body) return setTimeout(c.ready, 13); c.isReady = true; if (P) { for (var a, b = 0; a = P[b++]; ) a.call(r, c); P = null } c.fn.triggerHandler && c(r).triggerHandler("ready") } }, bindReady: function() {
        if (!va) {
            va = true; if (r.readyState === "complete") return c.ready(); if (r.addEventListener) { r.addEventListener("DOMContentLoaded", L, false); z.addEventListener("load", c.ready, false) } else if (r.attachEvent) {
                r.attachEvent("onreadystatechange", L); z.attachEvent("onload",
c.ready); var a = false; try { a = z.frameElement == null } catch (b) { } r.documentElement.doScroll && a && la()
            }
        }
    }, isFunction: function(a) { return $.call(a) === "[object Function]" }, isArray: function(a) { return $.call(a) === "[object Array]" }, isPlainObject: function(a) { if (!a || $.call(a) !== "[object Object]" || a.nodeType || a.setInterval) return false; if (a.constructor && !aa.call(a, "constructor") && !aa.call(a.constructor.prototype, "isPrototypeOf")) return false; var b; for (b in a); return b === v || aa.call(a, b) }, isEmptyObject: function(a) {
        for (var b in a) return false;
        return true
    }, error: function(a) { throw a; }, parseJSON: function(a) { if (typeof a !== "string" || !a) return null; if (/^[\],:{}\s]*$/.test(a.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@").replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]").replace(/(?:^|:|,)(?:\s*\[)+/g, ""))) return z.JSON && z.JSON.parse ? z.JSON.parse(a) : (new Function("return " + a))(); else c.error("Invalid JSON: " + a) }, noop: function() { }, globalEval: function(a) {
        if (a && Ra.test(a)) {
            var b = r.getElementsByTagName("head")[0] ||
r.documentElement, d = r.createElement("script"); d.type = "text/javascript"; if (c.support.scriptEval) d.appendChild(r.createTextNode(a)); else d.text = a; b.insertBefore(d, b.firstChild); b.removeChild(d)
        }
    }, nodeName: function(a, b) { return a.nodeName && a.nodeName.toUpperCase() === b.toUpperCase() }, each: function(a, b, d) {
        var f, e = 0, i = a.length, j = i === v || c.isFunction(a); if (d) if (j) for (f in a) { if (b.apply(a[f], d) === false) break } else for (; e < i; ) { if (b.apply(a[e++], d) === false) break } else if (j) for (f in a) { if (b.call(a[f], f, a[f]) === false) break } else for (d =
a[0]; e < i && b.call(d, e, d) !== false; d = a[++e]); return a
    }, trim: function(a) { return (a || "").replace(Sa, "") }, makeArray: function(a, b) { b = b || []; if (a != null) a.length == null || typeof a === "string" || c.isFunction(a) || typeof a !== "function" && a.setInterval ? ba.call(b, a) : c.merge(b, a); return b }, inArray: function(a, b) { if (b.indexOf) return b.indexOf(a); for (var d = 0, f = b.length; d < f; d++) if (b[d] === a) return d; return -1 }, merge: function(a, b) {
        var d = a.length, f = 0; if (typeof b.length === "number") for (var e = b.length; f < e; f++) a[d++] = b[f]; else for (; b[f] !==
v; ) a[d++] = b[f++]; a.length = d; return a
    }, grep: function(a, b, d) { for (var f = [], e = 0, i = a.length; e < i; e++) !d !== !b(a[e], e) && f.push(a[e]); return f }, map: function(a, b, d) { for (var f = [], e, i = 0, j = a.length; i < j; i++) { e = b(a[i], i, d); if (e != null) f[f.length] = e } return f.concat.apply([], f) }, guid: 1, proxy: function(a, b, d) { if (arguments.length === 2) if (typeof b === "string") { d = a; a = d[b]; b = v } else if (b && !c.isFunction(b)) { d = b; b = v } if (!b && a) b = function() { return a.apply(d || this, arguments) }; if (a) b.guid = a.guid = a.guid || b.guid || c.guid++; return b },
        uaMatch: function(a) { a = a.toLowerCase(); a = /(webkit)[ \/]([\w.]+)/.exec(a) || /(opera)(?:.*version)?[ \/]([\w.]+)/.exec(a) || /(msie) ([\w.]+)/.exec(a) || !/compatible/.test(a) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec(a) || []; return { browser: a[1] || "", version: a[2] || "0"} }, browser: {}
    }); O = c.uaMatch(O); if (O.browser) { c.browser[O.browser] = true; c.browser.version = O.version } if (c.browser.webkit) c.browser.safari = true; if (wa) c.inArray = function(a, b) { return wa.call(b, a) }; S = c(r); if (r.addEventListener) L = function() {
        r.removeEventListener("DOMContentLoaded",
L, false); c.ready()
    }; else if (r.attachEvent) L = function() { if (r.readyState === "complete") { r.detachEvent("onreadystatechange", L); c.ready() } }; (function() {
        c.support = {}; var a = r.documentElement, b = r.createElement("script"), d = r.createElement("div"), f = "script" + J(); d.style.display = "none"; d.innerHTML = "   <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>"; var e = d.getElementsByTagName("*"), i = d.getElementsByTagName("a")[0]; if (!(!e || !e.length || !i)) {
            c.support =
{ leadingWhitespace: d.firstChild.nodeType === 3, tbody: !d.getElementsByTagName("tbody").length, htmlSerialize: !!d.getElementsByTagName("link").length, style: /red/.test(i.getAttribute("style")), hrefNormalized: i.getAttribute("href") === "/a", opacity: /^0.55$/.test(i.style.opacity), cssFloat: !!i.style.cssFloat, checkOn: d.getElementsByTagName("input")[0].value === "on", optSelected: r.createElement("select").appendChild(r.createElement("option")).selected, checkClone: false, scriptEval: false, noCloneEvent: true, boxModel: null };
            b.type = "text/javascript"; try { b.appendChild(r.createTextNode("window." + f + "=1;")) } catch (j) { } a.insertBefore(b, a.firstChild); if (z[f]) { c.support.scriptEval = true; delete z[f] } a.removeChild(b); if (d.attachEvent && d.fireEvent) { d.attachEvent("onclick", function n() { c.support.noCloneEvent = false; d.detachEvent("onclick", n) }); d.cloneNode(true).fireEvent("onclick") } d = r.createElement("div"); d.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>"; a = r.createDocumentFragment(); a.appendChild(d.firstChild);
            c.support.checkClone = a.cloneNode(true).cloneNode(true).lastChild.checked; c(function() { var n = r.createElement("div"); n.style.width = n.style.paddingLeft = "1px"; r.body.appendChild(n); c.boxModel = c.support.boxModel = n.offsetWidth === 2; r.body.removeChild(n).style.display = "none" }); a = function(n) { var o = r.createElement("div"); n = "on" + n; var m = n in o; if (!m) { o.setAttribute(n, "return;"); m = typeof o[n] === "function" } return m }; c.support.submitBubbles = a("submit"); c.support.changeBubbles = a("change"); a = b = d = e = i = null
        }
    })(); c.props =
{ "for": "htmlFor", "class": "className", readonly: "readOnly", maxlength: "maxLength", cellspacing: "cellSpacing", rowspan: "rowSpan", colspan: "colSpan", tabindex: "tabIndex", usemap: "useMap", frameborder: "frameBorder" }; var G = "jQuery" + J(), Ua = 0, xa = {}, Va = {}; c.extend({ cache: {}, expando: G, noData: { embed: true, object: true, applet: true }, data: function(a, b, d) {
    if (!(a.nodeName && c.noData[a.nodeName.toLowerCase()])) {
        a = a == z ? xa : a; var f = a[G], e = c.cache; if (!b && !f) return null; f || (f = ++Ua); if (typeof b === "object") {
            a[G] = f; e = e[f] = c.extend(true,
{}, b)
        } else e = e[f] ? e[f] : typeof d === "undefined" ? Va : (e[f] = {}); if (d !== v) { a[G] = f; e[b] = d } return typeof b === "string" ? e[b] : e
    }
}, removeData: function(a, b) { if (!(a.nodeName && c.noData[a.nodeName.toLowerCase()])) { a = a == z ? xa : a; var d = a[G], f = c.cache, e = f[d]; if (b) { if (e) { delete e[b]; c.isEmptyObject(e) && c.removeData(a) } } else { try { delete a[G] } catch (i) { a.removeAttribute && a.removeAttribute(G) } delete f[d] } } }
}); c.fn.extend({ data: function(a, b) {
    if (typeof a === "undefined" && this.length) return c.data(this[0]); else if (typeof a === "object") return this.each(function() {
        c.data(this,
a)
    }); var d = a.split("."); d[1] = d[1] ? "." + d[1] : ""; if (b === v) { var f = this.triggerHandler("getData" + d[1] + "!", [d[0]]); if (f === v && this.length) f = c.data(this[0], a); return f === v && d[1] ? this.data(d[0]) : f } else return this.trigger("setData" + d[1] + "!", [d[0], b]).each(function() { c.data(this, a, b) })
}, removeData: function(a) { return this.each(function() { c.removeData(this, a) }) }
}); c.extend({ queue: function(a, b, d) {
    if (a) {
        b = (b || "fx") + "queue"; var f = c.data(a, b); if (!d) return f || []; if (!f || c.isArray(d)) f = c.data(a, b, c.makeArray(d)); else f.push(d);
        return f
    }
}, dequeue: function(a, b) { b = b || "fx"; var d = c.queue(a, b), f = d.shift(); if (f === "inprogress") f = d.shift(); if (f) { b === "fx" && d.unshift("inprogress"); f.call(a, function() { c.dequeue(a, b) }) } }
}); c.fn.extend({ queue: function(a, b) { if (typeof a !== "string") { b = a; a = "fx" } if (b === v) return c.queue(this[0], a); return this.each(function() { var d = c.queue(this, a, b); a === "fx" && d[0] !== "inprogress" && c.dequeue(this, a) }) }, dequeue: function(a) { return this.each(function() { c.dequeue(this, a) }) }, delay: function(a, b) {
    a = c.fx ? c.fx.speeds[a] ||
a : a; b = b || "fx"; return this.queue(b, function() { var d = this; setTimeout(function() { c.dequeue(d, b) }, a) })
}, clearQueue: function(a) { return this.queue(a || "fx", []) }
}); var ya = /[\n\t]/g, ca = /\s+/, Wa = /\r/g, Xa = /href|src|style/, Ya = /(button|input)/i, Za = /(button|input|object|select|textarea)/i, $a = /^(a|area)$/i, za = /radio|checkbox/; c.fn.extend({ attr: function(a, b) { return X(this, a, b, true, c.attr) }, removeAttr: function(a) { return this.each(function() { c.attr(this, a, ""); this.nodeType === 1 && this.removeAttribute(a) }) }, addClass: function(a) {
    if (c.isFunction(a)) return this.each(function(o) {
        var m =
c(this); m.addClass(a.call(this, o, m.attr("class")))
    }); if (a && typeof a === "string") for (var b = (a || "").split(ca), d = 0, f = this.length; d < f; d++) { var e = this[d]; if (e.nodeType === 1) if (e.className) for (var i = " " + e.className + " ", j = 0, n = b.length; j < n; j++) { if (i.indexOf(" " + b[j] + " ") < 0) e.className += " " + b[j] } else e.className = a } return this
}, removeClass: function(a) {
    if (c.isFunction(a)) return this.each(function(o) { var m = c(this); m.removeClass(a.call(this, o, m.attr("class"))) }); if (a && typeof a === "string" || a === v) for (var b = (a || "").split(ca),
d = 0, f = this.length; d < f; d++) { var e = this[d]; if (e.nodeType === 1 && e.className) if (a) { for (var i = (" " + e.className + " ").replace(ya, " "), j = 0, n = b.length; j < n; j++) i = i.replace(" " + b[j] + " ", " "); e.className = i.substring(1, i.length - 1) } else e.className = "" } return this
}, toggleClass: function(a, b) {
    var d = typeof a, f = typeof b === "boolean"; if (c.isFunction(a)) return this.each(function(e) { var i = c(this); i.toggleClass(a.call(this, e, i.attr("class"), b), b) }); return this.each(function() {
        if (d === "string") for (var e, i = 0, j = c(this), n = b, o =
a.split(ca); e = o[i++]; ) { n = f ? n : !j.hasClass(e); j[n ? "addClass" : "removeClass"](e) } else if (d === "undefined" || d === "boolean") { this.className && c.data(this, "__className__", this.className); this.className = this.className || a === false ? "" : c.data(this, "__className__") || "" }
    })
}, hasClass: function(a) { a = " " + a + " "; for (var b = 0, d = this.length; b < d; b++) if ((" " + this[b].className + " ").replace(ya, " ").indexOf(a) > -1) return true; return false }, val: function(a) {
    if (a === v) {
        var b = this[0]; if (b) {
            if (c.nodeName(b, "option")) return (b.attributes.value ||
{}).specified ? b.value : b.text; if (c.nodeName(b, "select")) { var d = b.selectedIndex, f = [], e = b.options; b = b.type === "select-one"; if (d < 0) return null; var i = b ? d : 0; for (d = b ? d + 1 : e.length; i < d; i++) { var j = e[i]; if (j.selected) { a = c(j).val(); if (b) return a; f.push(a) } } return f } if (za.test(b.type) && !c.support.checkOn) return b.getAttribute("value") === null ? "on" : b.value; return (b.value || "").replace(Wa, "")
        } return v
    } var n = c.isFunction(a); return this.each(function(o) {
        var m = c(this), s = a; if (this.nodeType === 1) {
            if (n) s = a.call(this, o, m.val());
            if (typeof s === "number") s += ""; if (c.isArray(s) && za.test(this.type)) this.checked = c.inArray(m.val(), s) >= 0; else if (c.nodeName(this, "select")) { var x = c.makeArray(s); c("option", this).each(function() { this.selected = c.inArray(c(this).val(), x) >= 0 }); if (!x.length) this.selectedIndex = -1 } else this.value = s
        }
    })
}
}); c.extend({ attrFn: { val: true, css: true, html: true, text: true, data: true, width: true, height: true, offset: true }, attr: function(a, b, d, f) {
    if (!a || a.nodeType === 3 || a.nodeType === 8) return v; if (f && b in c.attrFn) return c(a)[b](d);
    f = a.nodeType !== 1 || !c.isXMLDoc(a); var e = d !== v; b = f && c.props[b] || b; if (a.nodeType === 1) {
        var i = Xa.test(b); if (b in a && f && !i) { if (e) { b === "type" && Ya.test(a.nodeName) && a.parentNode && c.error("type property can't be changed"); a[b] = d } if (c.nodeName(a, "form") && a.getAttributeNode(b)) return a.getAttributeNode(b).nodeValue; if (b === "tabIndex") return (b = a.getAttributeNode("tabIndex")) && b.specified ? b.value : Za.test(a.nodeName) || $a.test(a.nodeName) && a.href ? 0 : v; return a[b] } if (!c.support.style && f && b === "style") {
            if (e) a.style.cssText =
"" + d; return a.style.cssText
        } e && a.setAttribute(b, "" + d); a = !c.support.hrefNormalized && f && i ? a.getAttribute(b, 2) : a.getAttribute(b); return a === null ? v : a
    } return c.style(a, b, d)
}
}); var ab = function(a) { return a.replace(/[^\w\s\.\|`]/g, function(b) { return "\\" + b }) }; c.event = { add: function(a, b, d, f) {
    if (!(a.nodeType === 3 || a.nodeType === 8)) {
        if (a.setInterval && a !== z && !a.frameElement) a = z; if (!d.guid) d.guid = c.guid++; if (f !== v) { d = c.proxy(d); d.data = f } var e = c.data(a, "events") || c.data(a, "events", {}), i = c.data(a, "handle"), j; if (!i) {
            j =
function() { return typeof c !== "undefined" && !c.event.triggered ? c.event.handle.apply(j.elem, arguments) : v }; i = c.data(a, "handle", j)
        } if (i) {
            i.elem = a; b = b.split(/\s+/); for (var n, o = 0; n = b[o++]; ) {
                var m = n.split("."); n = m.shift(); if (o > 1) { d = c.proxy(d); if (f !== v) d.data = f } d.type = m.slice(0).sort().join("."); var s = e[n], x = this.special[n] || {}; if (!s) { s = e[n] = {}; if (!x.setup || x.setup.call(a, f, m, d) === false) if (a.addEventListener) a.addEventListener(n, i, false); else a.attachEvent && a.attachEvent("on" + n, i) } if (x.add) if ((m = x.add.call(a,
d, f, m, s)) && c.isFunction(m)) { m.guid = m.guid || d.guid; m.data = m.data || d.data; m.type = m.type || d.type; d = m } s[d.guid] = d; this.global[n] = true
            } a = null
        }
    }
}, global: {}, remove: function(a, b, d) {
    if (!(a.nodeType === 3 || a.nodeType === 8)) {
        var f = c.data(a, "events"), e, i, j; if (f) {
            if (b === v || typeof b === "string" && b.charAt(0) === ".") for (i in f) this.remove(a, i + (b || "")); else {
                if (b.type) { d = b.handler; b = b.type } b = b.split(/\s+/); for (var n = 0; i = b[n++]; ) {
                    var o = i.split("."); i = o.shift(); var m = !o.length, s = c.map(o.slice(0).sort(), ab); s = new RegExp("(^|\\.)" +
s.join("\\.(?:.*\\.)?") + "(\\.|$)"); var x = this.special[i] || {}; if (f[i]) { if (d) { j = f[i][d.guid]; delete f[i][d.guid] } else for (var A in f[i]) if (m || s.test(f[i][A].type)) delete f[i][A]; x.remove && x.remove.call(a, o, j); for (e in f[i]) break; if (!e) { if (!x.teardown || x.teardown.call(a, o) === false) if (a.removeEventListener) a.removeEventListener(i, c.data(a, "handle"), false); else a.detachEvent && a.detachEvent("on" + i, c.data(a, "handle")); e = null; delete f[i] } }
                }
            } for (e in f) break; if (!e) {
                if (A = c.data(a, "handle")) A.elem = null; c.removeData(a,
"events"); c.removeData(a, "handle")
            }
        }
    }
}, trigger: function(a, b, d, f) {
    var e = a.type || a; if (!f) { a = typeof a === "object" ? a[G] ? a : c.extend(c.Event(e), a) : c.Event(e); if (e.indexOf("!") >= 0) { a.type = e = e.slice(0, -1); a.exclusive = true } if (!d) { a.stopPropagation(); this.global[e] && c.each(c.cache, function() { this.events && this.events[e] && c.event.trigger(a, b, this.handle.elem) }) } if (!d || d.nodeType === 3 || d.nodeType === 8) return v; a.result = v; a.target = d; b = c.makeArray(b); b.unshift(a) } a.currentTarget = d; (f = c.data(d, "handle")) && f.apply(d,
b); f = d.parentNode || d.ownerDocument; try { if (!(d && d.nodeName && c.noData[d.nodeName.toLowerCase()])) if (d["on" + e] && d["on" + e].apply(d, b) === false) a.result = false } catch (i) { } if (!a.isPropagationStopped() && f) c.event.trigger(a, b, f, true); else if (!a.isDefaultPrevented()) { d = a.target; var j; if (!(c.nodeName(d, "a") && e === "click") && !(d && d.nodeName && c.noData[d.nodeName.toLowerCase()])) { try { if (d[e]) { if (j = d["on" + e]) d["on" + e] = null; this.triggered = true; d[e]() } } catch (n) { } if (j) d["on" + e] = j; this.triggered = false } }
}, handle: function(a) {
    var b,
d; a = arguments[0] = c.event.fix(a || z.event); a.currentTarget = this; d = a.type.split("."); a.type = d.shift(); b = !d.length && !a.exclusive; var f = new RegExp("(^|\\.)" + d.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)"); d = (c.data(this, "events") || {})[a.type]; for (var e in d) { var i = d[e]; if (b || f.test(i.type)) { a.handler = i; a.data = i.data; i = i.apply(this, arguments); if (i !== v) { a.result = i; if (i === false) { a.preventDefault(); a.stopPropagation() } } if (a.isImmediatePropagationStopped()) break } } return a.result
}, props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
    fix: function(a) {
        if (a[G]) return a; var b = a; a = c.Event(b); for (var d = this.props.length, f; d; ) { f = this.props[--d]; a[f] = b[f] } if (!a.target) a.target = a.srcElement || r; if (a.target.nodeType === 3) a.target = a.target.parentNode; if (!a.relatedTarget && a.fromElement) a.relatedTarget = a.fromElement === a.target ? a.toElement : a.fromElement; if (a.pageX == null && a.clientX != null) {
            b = r.documentElement; d = r.body; a.pageX = a.clientX + (b && b.scrollLeft || d && d.scrollLeft || 0) - (b && b.clientLeft || d && d.clientLeft || 0); a.pageY = a.clientY + (b && b.scrollTop ||
d && d.scrollTop || 0) - (b && b.clientTop || d && d.clientTop || 0)
        } if (!a.which && (a.charCode || a.charCode === 0 ? a.charCode : a.keyCode)) a.which = a.charCode || a.keyCode; if (!a.metaKey && a.ctrlKey) a.metaKey = a.ctrlKey; if (!a.which && a.button !== v) a.which = a.button & 1 ? 1 : a.button & 2 ? 3 : a.button & 4 ? 2 : 0; return a
    }, guid: 1E8, proxy: c.proxy, special: { ready: { setup: c.bindReady, teardown: c.noop }, live: { add: function(a, b) { c.extend(a, b || {}); a.guid += b.selector + b.live; b.liveProxy = a; c.event.add(this, b.live, na, b) }, remove: function(a) {
        if (a.length) {
            var b =
0, d = new RegExp("(^|\\.)" + a[0] + "(\\.|$)"); c.each(c.data(this, "events").live || {}, function() { d.test(this.type) && b++ }); b < 1 && c.event.remove(this, a[0], na)
        }
    }, special: {}
    }, beforeunload: { setup: function(a, b, d) { if (this.setInterval) this.onbeforeunload = d; return false }, teardown: function(a, b) { if (this.onbeforeunload === b) this.onbeforeunload = null } }
    }
}; c.Event = function(a) { if (!this.preventDefault) return new c.Event(a); if (a && a.type) { this.originalEvent = a; this.type = a.type } else this.type = a; this.timeStamp = J(); this[G] = true };
    c.Event.prototype = { preventDefault: function() { this.isDefaultPrevented = Z; var a = this.originalEvent; if (a) { a.preventDefault && a.preventDefault(); a.returnValue = false } }, stopPropagation: function() { this.isPropagationStopped = Z; var a = this.originalEvent; if (a) { a.stopPropagation && a.stopPropagation(); a.cancelBubble = true } }, stopImmediatePropagation: function() { this.isImmediatePropagationStopped = Z; this.stopPropagation() }, isDefaultPrevented: Y, isPropagationStopped: Y, isImmediatePropagationStopped: Y }; var Aa = function(a) {
        for (var b =
a.relatedTarget; b && b !== this; ) try { b = b.parentNode } catch (d) { break } if (b !== this) { a.type = a.data; c.event.handle.apply(this, arguments) }
    }, Ba = function(a) { a.type = a.data; c.event.handle.apply(this, arguments) }; c.each({ mouseenter: "mouseover", mouseleave: "mouseout" }, function(a, b) { c.event.special[a] = { setup: function(d) { c.event.add(this, b, d && d.selector ? Ba : Aa, a) }, teardown: function(d) { c.event.remove(this, b, d && d.selector ? Ba : Aa) } } }); if (!c.support.submitBubbles) c.event.special.submit = { setup: function(a, b, d) {
        if (this.nodeName.toLowerCase() !==
"form") { c.event.add(this, "click.specialSubmit." + d.guid, function(f) { var e = f.target, i = e.type; if ((i === "submit" || i === "image") && c(e).closest("form").length) return ma("submit", this, arguments) }); c.event.add(this, "keypress.specialSubmit." + d.guid, function(f) { var e = f.target, i = e.type; if ((i === "text" || i === "password") && c(e).closest("form").length && f.keyCode === 13) return ma("submit", this, arguments) }) } else return false
    }, remove: function(a, b) {
        c.event.remove(this, "click.specialSubmit" + (b ? "." + b.guid : "")); c.event.remove(this,
"keypress.specialSubmit" + (b ? "." + b.guid : ""))
    }
    }; if (!c.support.changeBubbles) {
        var da = /textarea|input|select/i; function Ca(a) { var b = a.type, d = a.value; if (b === "radio" || b === "checkbox") d = a.checked; else if (b === "select-multiple") d = a.selectedIndex > -1 ? c.map(a.options, function(f) { return f.selected }).join("-") : ""; else if (a.nodeName.toLowerCase() === "select") d = a.selectedIndex; return d } function ea(a, b) {
            var d = a.target, f, e; if (!(!da.test(d.nodeName) || d.readOnly)) {
                f = c.data(d, "_change_data"); e = Ca(d); if (a.type !== "focusout" ||
d.type !== "radio") c.data(d, "_change_data", e); if (!(f === v || e === f)) if (f != null || e) { a.type = "change"; return c.event.trigger(a, b, d) }
            }
        } c.event.special.change = { filters: { focusout: ea, click: function(a) { var b = a.target, d = b.type; if (d === "radio" || d === "checkbox" || b.nodeName.toLowerCase() === "select") return ea.call(this, a) }, keydown: function(a) { var b = a.target, d = b.type; if (a.keyCode === 13 && b.nodeName.toLowerCase() !== "textarea" || a.keyCode === 32 && (d === "checkbox" || d === "radio") || d === "select-multiple") return ea.call(this, a) }, beforeactivate: function(a) {
            a =
a.target; a.nodeName.toLowerCase() === "input" && a.type === "radio" && c.data(a, "_change_data", Ca(a))
        }
        }, setup: function(a, b, d) { for (var f in T) c.event.add(this, f + ".specialChange." + d.guid, T[f]); return da.test(this.nodeName) }, remove: function(a, b) { for (var d in T) c.event.remove(this, d + ".specialChange" + (b ? "." + b.guid : ""), T[d]); return da.test(this.nodeName) }
        }; var T = c.event.special.change.filters
    } r.addEventListener && c.each({ focus: "focusin", blur: "focusout" }, function(a, b) {
        function d(f) {
            f = c.event.fix(f); f.type = b; return c.event.handle.call(this,
f)
        } c.event.special[b] = { setup: function() { this.addEventListener(a, d, true) }, teardown: function() { this.removeEventListener(a, d, true) } }
    }); c.each(["bind", "one"], function(a, b) { c.fn[b] = function(d, f, e) { if (typeof d === "object") { for (var i in d) this[b](i, f, d[i], e); return this } if (c.isFunction(f)) { e = f; f = v } var j = b === "one" ? c.proxy(e, function(n) { c(this).unbind(n, j); return e.apply(this, arguments) }) : e; return d === "unload" && b !== "one" ? this.one(d, f, e) : this.each(function() { c.event.add(this, d, j, f) }) } }); c.fn.extend({ unbind: function(a,
b) { if (typeof a === "object" && !a.preventDefault) { for (var d in a) this.unbind(d, a[d]); return this } return this.each(function() { c.event.remove(this, a, b) }) }, trigger: function(a, b) { return this.each(function() { c.event.trigger(a, b, this) }) }, triggerHandler: function(a, b) { if (this[0]) { a = c.Event(a); a.preventDefault(); a.stopPropagation(); c.event.trigger(a, b, this[0]); return a.result } }, toggle: function(a) {
    for (var b = arguments, d = 1; d < b.length; ) c.proxy(a, b[d++]); return this.click(c.proxy(a, function(f) {
        var e = (c.data(this, "lastToggle" +
a.guid) || 0) % d; c.data(this, "lastToggle" + a.guid, e + 1); f.preventDefault(); return b[e].apply(this, arguments) || false
    }))
}, hover: function(a, b) { return this.mouseenter(a).mouseleave(b || a) }
    }); c.each(["live", "die"], function(a, b) {
        c.fn[b] = function(d, f, e) {
            var i, j = 0; if (c.isFunction(f)) { e = f; f = v } for (d = (d || "").split(/\s+/); (i = d[j++]) != null; ) {
                i = i === "focus" ? "focusin" : i === "blur" ? "focusout" : i === "hover" ? d.push("mouseleave") && "mouseenter" : i; b === "live" ? c(this.context).bind(oa(i, this.selector), { data: f, selector: this.selector,
                    live: i
                }, e) : c(this.context).unbind(oa(i, this.selector), e ? { guid: e.guid + this.selector + i} : null)
            } return this
        }
    }); c.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error".split(" "), function(a, b) { c.fn[b] = function(d) { return d ? this.bind(b, d) : this.trigger(b) }; if (c.attrFn) c.attrFn[b] = true }); z.attachEvent && !z.addEventListener && z.attachEvent("onunload", function() { for (var a in c.cache) if (c.cache[a].handle) try { c.event.remove(c.cache[a].handle.elem) } catch (b) { } });
    (function() {
        function a(g) { for (var h = "", k, l = 0; g[l]; l++) { k = g[l]; if (k.nodeType === 3 || k.nodeType === 4) h += k.nodeValue; else if (k.nodeType !== 8) h += a(k.childNodes) } return h } function b(g, h, k, l, q, p) { q = 0; for (var u = l.length; q < u; q++) { var t = l[q]; if (t) { t = t[g]; for (var y = false; t; ) { if (t.sizcache === k) { y = l[t.sizset]; break } if (t.nodeType === 1 && !p) { t.sizcache = k; t.sizset = q } if (t.nodeName.toLowerCase() === h) { y = t; break } t = t[g] } l[q] = y } } } function d(g, h, k, l, q, p) {
            q = 0; for (var u = l.length; q < u; q++) {
                var t = l[q]; if (t) {
                    t = t[g]; for (var y = false; t; ) {
                        if (t.sizcache ===
k) { y = l[t.sizset]; break } if (t.nodeType === 1) { if (!p) { t.sizcache = k; t.sizset = q } if (typeof h !== "string") { if (t === h) { y = true; break } } else if (o.filter(h, [t]).length > 0) { y = t; break } } t = t[g]
                    } l[q] = y
                }
            }
        } var f = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g, e = 0, i = Object.prototype.toString, j = false, n = true; [0, 0].sort(function() { n = false; return 0 }); var o = function(g, h, k, l) {
            k = k || []; var q = h = h || r; if (h.nodeType !== 1 && h.nodeType !== 9) return []; if (!g ||
typeof g !== "string") return k; for (var p = [], u, t, y, R, H = true, M = w(h), I = g; (f.exec(""), u = f.exec(I)) !== null; ) { I = u[3]; p.push(u[1]); if (u[2]) { R = u[3]; break } } if (p.length > 1 && s.exec(g)) if (p.length === 2 && m.relative[p[0]]) t = fa(p[0] + p[1], h); else for (t = m.relative[p[0]] ? [h] : o(p.shift(), h); p.length; ) { g = p.shift(); if (m.relative[g]) g += p.shift(); t = fa(g, t) } else {
                if (!l && p.length > 1 && h.nodeType === 9 && !M && m.match.ID.test(p[0]) && !m.match.ID.test(p[p.length - 1])) { u = o.find(p.shift(), h, M); h = u.expr ? o.filter(u.expr, u.set)[0] : u.set[0] } if (h) {
                    u =
l ? { expr: p.pop(), set: A(l)} : o.find(p.pop(), p.length === 1 && (p[0] === "~" || p[0] === "+") && h.parentNode ? h.parentNode : h, M); t = u.expr ? o.filter(u.expr, u.set) : u.set; if (p.length > 0) y = A(t); else H = false; for (; p.length; ) { var D = p.pop(); u = D; if (m.relative[D]) u = p.pop(); else D = ""; if (u == null) u = h; m.relative[D](y, u, M) }
                } else y = []
            } y || (y = t); y || o.error(D || g); if (i.call(y) === "[object Array]") if (H) if (h && h.nodeType === 1) for (g = 0; y[g] != null; g++) { if (y[g] && (y[g] === true || y[g].nodeType === 1 && E(h, y[g]))) k.push(t[g]) } else for (g = 0; y[g] != null; g++) y[g] &&
y[g].nodeType === 1 && k.push(t[g]); else k.push.apply(k, y); else A(y, k); if (R) { o(R, q, k, l); o.uniqueSort(k) } return k
        }; o.uniqueSort = function(g) { if (C) { j = n; g.sort(C); if (j) for (var h = 1; h < g.length; h++) g[h] === g[h - 1] && g.splice(h--, 1) } return g }; o.matches = function(g, h) { return o(g, null, null, h) }; o.find = function(g, h, k) {
            var l, q; if (!g) return []; for (var p = 0, u = m.order.length; p < u; p++) {
                var t = m.order[p]; if (q = m.leftMatch[t].exec(g)) {
                    var y = q[1]; q.splice(1, 1); if (y.substr(y.length - 1) !== "\\") {
                        q[1] = (q[1] || "").replace(/\\/g, ""); l = m.find[t](q,
h, k); if (l != null) { g = g.replace(m.match[t], ""); break }
                    }
                }
            } l || (l = h.getElementsByTagName("*")); return { set: l, expr: g }
        }; o.filter = function(g, h, k, l) {
            for (var q = g, p = [], u = h, t, y, R = h && h[0] && w(h[0]); g && h.length; ) {
                for (var H in m.filter) if ((t = m.leftMatch[H].exec(g)) != null && t[2]) {
                    var M = m.filter[H], I, D; D = t[1]; y = false; t.splice(1, 1); if (D.substr(D.length - 1) !== "\\") {
                        if (u === p) p = []; if (m.preFilter[H]) if (t = m.preFilter[H](t, u, k, p, l, R)) { if (t === true) continue } else y = I = true; if (t) for (var U = 0; (D = u[U]) != null; U++) if (D) {
                            I = M(D, t, U, u); var Da =
l ^ !!I; if (k && I != null) if (Da) y = true; else u[U] = false; else if (Da) { p.push(D); y = true }
                        } if (I !== v) { k || (u = p); g = g.replace(m.match[H], ""); if (!y) return []; break }
                    }
                } if (g === q) if (y == null) o.error(g); else break; q = g
            } return u
        }; o.error = function(g) { throw "Syntax error, unrecognized expression: " + g; }; var m = o.selectors = { order: ["ID", "NAME", "TAG"], match: { ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/, CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/, NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/, ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
            TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/, CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/, POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/, PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
        }, leftMatch: {}, attrMap: { "class": "className", "for": "htmlFor" }, attrHandle: { href: function(g) { return g.getAttribute("href") } }, relative: { "+": function(g, h) {
            var k = typeof h === "string", l = k && !/\W/.test(h); k = k && !l; if (l) h = h.toLowerCase(); l = 0; for (var q = g.length,
p; l < q; l++) if (p = g[l]) { for (; (p = p.previousSibling) && p.nodeType !== 1; ); g[l] = k || p && p.nodeName.toLowerCase() === h ? p || false : p === h } k && o.filter(h, g, true)
        }, ">": function(g, h) { var k = typeof h === "string"; if (k && !/\W/.test(h)) { h = h.toLowerCase(); for (var l = 0, q = g.length; l < q; l++) { var p = g[l]; if (p) { k = p.parentNode; g[l] = k.nodeName.toLowerCase() === h ? k : false } } } else { l = 0; for (q = g.length; l < q; l++) if (p = g[l]) g[l] = k ? p.parentNode : p.parentNode === h; k && o.filter(h, g, true) } }, "": function(g, h, k) {
            var l = e++, q = d; if (typeof h === "string" && !/\W/.test(h)) {
                var p =
h = h.toLowerCase(); q = b
            } q("parentNode", h, l, g, p, k)
        }, "~": function(g, h, k) { var l = e++, q = d; if (typeof h === "string" && !/\W/.test(h)) { var p = h = h.toLowerCase(); q = b } q("previousSibling", h, l, g, p, k) }
        }, find: { ID: function(g, h, k) { if (typeof h.getElementById !== "undefined" && !k) return (g = h.getElementById(g[1])) ? [g] : [] }, NAME: function(g, h) { if (typeof h.getElementsByName !== "undefined") { var k = []; h = h.getElementsByName(g[1]); for (var l = 0, q = h.length; l < q; l++) h[l].getAttribute("name") === g[1] && k.push(h[l]); return k.length === 0 ? null : k } },
            TAG: function(g, h) { return h.getElementsByTagName(g[1]) }
        }, preFilter: { CLASS: function(g, h, k, l, q, p) { g = " " + g[1].replace(/\\/g, "") + " "; if (p) return g; p = 0; for (var u; (u = h[p]) != null; p++) if (u) if (q ^ (u.className && (" " + u.className + " ").replace(/[\t\n]/g, " ").indexOf(g) >= 0)) k || l.push(u); else if (k) h[p] = false; return false }, ID: function(g) { return g[1].replace(/\\/g, "") }, TAG: function(g) { return g[1].toLowerCase() }, CHILD: function(g) {
            if (g[1] === "nth") {
                var h = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2] === "even" && "2n" || g[2] === "odd" &&
"2n+1" || !/\D/.test(g[2]) && "0n+" + g[2] || g[2]); g[2] = h[1] + (h[2] || 1) - 0; g[3] = h[3] - 0
            } g[0] = e++; return g
        }, ATTR: function(g, h, k, l, q, p) { h = g[1].replace(/\\/g, ""); if (!p && m.attrMap[h]) g[1] = m.attrMap[h]; if (g[2] === "~=") g[4] = " " + g[4] + " "; return g }, PSEUDO: function(g, h, k, l, q) { if (g[1] === "not") if ((f.exec(g[3]) || "").length > 1 || /^\w/.test(g[3])) g[3] = o(g[3], null, null, h); else { g = o.filter(g[3], h, k, true ^ q); k || l.push.apply(l, g); return false } else if (m.match.POS.test(g[0]) || m.match.CHILD.test(g[0])) return true; return g }, POS: function(g) {
            g.unshift(true);
            return g
        }
        }, filters: { enabled: function(g) { return g.disabled === false && g.type !== "hidden" }, disabled: function(g) { return g.disabled === true }, checked: function(g) { return g.checked === true }, selected: function(g) { return g.selected === true }, parent: function(g) { return !!g.firstChild }, empty: function(g) { return !g.firstChild }, has: function(g, h, k) { return !!o(k[3], g).length }, header: function(g) { return /h\d/i.test(g.nodeName) }, text: function(g) { return "text" === g.type }, radio: function(g) { return "radio" === g.type }, checkbox: function(g) {
            return "checkbox" ===
g.type
        }, file: function(g) { return "file" === g.type }, password: function(g) { return "password" === g.type }, submit: function(g) { return "submit" === g.type }, image: function(g) { return "image" === g.type }, reset: function(g) { return "reset" === g.type }, button: function(g) { return "button" === g.type || g.nodeName.toLowerCase() === "button" }, input: function(g) { return /input|select|textarea|button/i.test(g.nodeName) }
        }, setFilters: { first: function(g, h) { return h === 0 }, last: function(g, h, k, l) { return h === l.length - 1 }, even: function(g, h) {
            return h % 2 ===
0
        }, odd: function(g, h) { return h % 2 === 1 }, lt: function(g, h, k) { return h < k[3] - 0 }, gt: function(g, h, k) { return h > k[3] - 0 }, nth: function(g, h, k) { return k[3] - 0 === h }, eq: function(g, h, k) { return k[3] - 0 === h }
        }, filter: { PSEUDO: function(g, h, k, l) {
            var q = h[1], p = m.filters[q]; if (p) return p(g, k, h, l); else if (q === "contains") return (g.textContent || g.innerText || a([g]) || "").indexOf(h[3]) >= 0; else if (q === "not") { h = h[3]; k = 0; for (l = h.length; k < l; k++) if (h[k] === g) return false; return true } else o.error("Syntax error, unrecognized expression: " +
q)
        }, CHILD: function(g, h) {
            var k = h[1], l = g; switch (k) {
                case "only": case "first": for (; l = l.previousSibling; ) if (l.nodeType === 1) return false; if (k === "first") return true; l = g; case "last": for (; l = l.nextSibling; ) if (l.nodeType === 1) return false; return true; case "nth": k = h[2]; var q = h[3]; if (k === 1 && q === 0) return true; h = h[0]; var p = g.parentNode; if (p && (p.sizcache !== h || !g.nodeIndex)) { var u = 0; for (l = p.firstChild; l; l = l.nextSibling) if (l.nodeType === 1) l.nodeIndex = ++u; p.sizcache = h } g = g.nodeIndex - q; return k === 0 ? g === 0 : g % k === 0 && g / k >=
0
            }
        }, ID: function(g, h) { return g.nodeType === 1 && g.getAttribute("id") === h }, TAG: function(g, h) { return h === "*" && g.nodeType === 1 || g.nodeName.toLowerCase() === h }, CLASS: function(g, h) { return (" " + (g.className || g.getAttribute("class")) + " ").indexOf(h) > -1 }, ATTR: function(g, h) {
            var k = h[1]; g = m.attrHandle[k] ? m.attrHandle[k](g) : g[k] != null ? g[k] : g.getAttribute(k); k = g + ""; var l = h[2]; h = h[4]; return g == null ? l === "!=" : l === "=" ? k === h : l === "*=" ? k.indexOf(h) >= 0 : l === "~=" ? (" " + k + " ").indexOf(h) >= 0 : !h ? k && g !== false : l === "!=" ? k !== h : l === "^=" ?
k.indexOf(h) === 0 : l === "$=" ? k.substr(k.length - h.length) === h : l === "|=" ? k === h || k.substr(0, h.length + 1) === h + "-" : false
        }, POS: function(g, h, k, l) { var q = m.setFilters[h[2]]; if (q) return q(g, k, h, l) }
        }
        }, s = m.match.POS; for (var x in m.match) { m.match[x] = new RegExp(m.match[x].source + /(?![^\[]*\])(?![^\(]*\))/.source); m.leftMatch[x] = new RegExp(/(^(?:.|\r|\n)*?)/.source + m.match[x].source.replace(/\\(\d+)/g, function(g, h) { return "\\" + (h - 0 + 1) })) } var A = function(g, h) { g = Array.prototype.slice.call(g, 0); if (h) { h.push.apply(h, g); return h } return g };
        try { Array.prototype.slice.call(r.documentElement.childNodes, 0) } catch (B) { A = function(g, h) { h = h || []; if (i.call(g) === "[object Array]") Array.prototype.push.apply(h, g); else if (typeof g.length === "number") for (var k = 0, l = g.length; k < l; k++) h.push(g[k]); else for (k = 0; g[k]; k++) h.push(g[k]); return h } } var C; if (r.documentElement.compareDocumentPosition) C = function(g, h) {
            if (!g.compareDocumentPosition || !h.compareDocumentPosition) { if (g == h) j = true; return g.compareDocumentPosition ? -1 : 1 } g = g.compareDocumentPosition(h) & 4 ? -1 : g ===
h ? 0 : 1; if (g === 0) j = true; return g
        }; else if ("sourceIndex" in r.documentElement) C = function(g, h) { if (!g.sourceIndex || !h.sourceIndex) { if (g == h) j = true; return g.sourceIndex ? -1 : 1 } g = g.sourceIndex - h.sourceIndex; if (g === 0) j = true; return g }; else if (r.createRange) C = function(g, h) {
            if (!g.ownerDocument || !h.ownerDocument) { if (g == h) j = true; return g.ownerDocument ? -1 : 1 } var k = g.ownerDocument.createRange(), l = h.ownerDocument.createRange(); k.setStart(g, 0); k.setEnd(g, 0); l.setStart(h, 0); l.setEnd(h, 0); g = k.compareBoundaryPoints(Range.START_TO_END,
l); if (g === 0) j = true; return g
        }; (function() {
            var g = r.createElement("div"), h = "script" + (new Date).getTime(); g.innerHTML = "<a name='" + h + "'/>"; var k = r.documentElement; k.insertBefore(g, k.firstChild); if (r.getElementById(h)) {
                m.find.ID = function(l, q, p) { if (typeof q.getElementById !== "undefined" && !p) return (q = q.getElementById(l[1])) ? q.id === l[1] || typeof q.getAttributeNode !== "undefined" && q.getAttributeNode("id").nodeValue === l[1] ? [q] : v : [] }; m.filter.ID = function(l, q) {
                    var p = typeof l.getAttributeNode !== "undefined" && l.getAttributeNode("id");
                    return l.nodeType === 1 && p && p.nodeValue === q
                }
            } k.removeChild(g); k = g = null
        })(); (function() {
            var g = r.createElement("div"); g.appendChild(r.createComment("")); if (g.getElementsByTagName("*").length > 0) m.find.TAG = function(h, k) { k = k.getElementsByTagName(h[1]); if (h[1] === "*") { h = []; for (var l = 0; k[l]; l++) k[l].nodeType === 1 && h.push(k[l]); k = h } return k }; g.innerHTML = "<a href='#'></a>"; if (g.firstChild && typeof g.firstChild.getAttribute !== "undefined" && g.firstChild.getAttribute("href") !== "#") m.attrHandle.href = function(h) {
                return h.getAttribute("href",
2)
            }; g = null
        })(); r.querySelectorAll && function() { var g = o, h = r.createElement("div"); h.innerHTML = "<p class='TEST'></p>"; if (!(h.querySelectorAll && h.querySelectorAll(".TEST").length === 0)) { o = function(l, q, p, u) { q = q || r; if (!u && q.nodeType === 9 && !w(q)) try { return A(q.querySelectorAll(l), p) } catch (t) { } return g(l, q, p, u) }; for (var k in g) o[k] = g[k]; h = null } } (); (function() {
            var g = r.createElement("div"); g.innerHTML = "<div class='test e'></div><div class='test'></div>"; if (!(!g.getElementsByClassName || g.getElementsByClassName("e").length ===
0)) { g.lastChild.className = "e"; if (g.getElementsByClassName("e").length !== 1) { m.order.splice(1, 0, "CLASS"); m.find.CLASS = function(h, k, l) { if (typeof k.getElementsByClassName !== "undefined" && !l) return k.getElementsByClassName(h[1]) }; g = null } }
        })(); var E = r.compareDocumentPosition ? function(g, h) { return g.compareDocumentPosition(h) & 16 } : function(g, h) { return g !== h && (g.contains ? g.contains(h) : true) }, w = function(g) { return (g = (g ? g.ownerDocument || g : 0).documentElement) ? g.nodeName !== "HTML" : false }, fa = function(g, h) {
            var k = [],
l = "", q; for (h = h.nodeType ? [h] : h; q = m.match.PSEUDO.exec(g); ) { l += q[0]; g = g.replace(m.match.PSEUDO, "") } g = m.relative[g] ? g + "*" : g; q = 0; for (var p = h.length; q < p; q++) o(g, h[q], k); return o.filter(l, k)
        }; c.find = o; c.expr = o.selectors; c.expr[":"] = c.expr.filters; c.unique = o.uniqueSort; c.getText = a; c.isXMLDoc = w; c.contains = E
    })(); var bb = /Until$/, cb = /^(?:parents|prevUntil|prevAll)/, db = /,/; Q = Array.prototype.slice; var Ea = function(a, b, d) {
        if (c.isFunction(b)) return c.grep(a, function(e, i) { return !!b.call(e, i, e) === d }); else if (b.nodeType) return c.grep(a,
function(e) { return e === b === d }); else if (typeof b === "string") { var f = c.grep(a, function(e) { return e.nodeType === 1 }); if (Qa.test(b)) return c.filter(b, f, !d); else b = c.filter(b, f) } return c.grep(a, function(e) { return c.inArray(e, b) >= 0 === d })
    }; c.fn.extend({ find: function(a) { for (var b = this.pushStack("", "find", a), d = 0, f = 0, e = this.length; f < e; f++) { d = b.length; c.find(a, this[f], b); if (f > 0) for (var i = d; i < b.length; i++) for (var j = 0; j < d; j++) if (b[j] === b[i]) { b.splice(i--, 1); break } } return b }, has: function(a) {
        var b = c(a); return this.filter(function() {
            for (var d =
0, f = b.length; d < f; d++) if (c.contains(this, b[d])) return true
        })
    }, not: function(a) { return this.pushStack(Ea(this, a, false), "not", a) }, filter: function(a) { return this.pushStack(Ea(this, a, true), "filter", a) }, is: function(a) { return !!a && c.filter(a, this).length > 0 }, closest: function(a, b) {
        if (c.isArray(a)) {
            var d = [], f = this[0], e, i = {}, j; if (f && a.length) {
                e = 0; for (var n = a.length; e < n; e++) { j = a[e]; i[j] || (i[j] = c.expr.match.POS.test(j) ? c(j, b || this.context) : j) } for (; f && f.ownerDocument && f !== b; ) {
                    for (j in i) {
                        e = i[j]; if (e.jquery ? e.index(f) >
-1 : c(f).is(e)) { d.push({ selector: j, elem: f }); delete i[j] }
                    } f = f.parentNode
                }
            } return d
        } var o = c.expr.match.POS.test(a) ? c(a, b || this.context) : null; return this.map(function(m, s) { for (; s && s.ownerDocument && s !== b; ) { if (o ? o.index(s) > -1 : c(s).is(a)) return s; s = s.parentNode } return null })
    }, index: function(a) { if (!a || typeof a === "string") return c.inArray(this[0], a ? c(a) : this.parent().children()); return c.inArray(a.jquery ? a[0] : a, this) }, add: function(a, b) {
        a = typeof a === "string" ? c(a, b || this.context) : c.makeArray(a); b = c.merge(this.get(),
a); return this.pushStack(pa(a[0]) || pa(b[0]) ? b : c.unique(b))
    }, andSelf: function() { return this.add(this.prevObject) }
    }); c.each({ parent: function(a) { return (a = a.parentNode) && a.nodeType !== 11 ? a : null }, parents: function(a) { return c.dir(a, "parentNode") }, parentsUntil: function(a, b, d) { return c.dir(a, "parentNode", d) }, next: function(a) { return c.nth(a, 2, "nextSibling") }, prev: function(a) { return c.nth(a, 2, "previousSibling") }, nextAll: function(a) { return c.dir(a, "nextSibling") }, prevAll: function(a) { return c.dir(a, "previousSibling") },
        nextUntil: function(a, b, d) { return c.dir(a, "nextSibling", d) }, prevUntil: function(a, b, d) { return c.dir(a, "previousSibling", d) }, siblings: function(a) { return c.sibling(a.parentNode.firstChild, a) }, children: function(a) { return c.sibling(a.firstChild) }, contents: function(a) { return c.nodeName(a, "iframe") ? a.contentDocument || a.contentWindow.document : c.makeArray(a.childNodes) }
    }, function(a, b) {
        c.fn[a] = function(d, f) {
            var e = c.map(this, b, d); bb.test(a) || (f = d); if (f && typeof f === "string") e = c.filter(f, e); e = this.length > 1 ? c.unique(e) :
e; if ((this.length > 1 || db.test(f)) && cb.test(a)) e = e.reverse(); return this.pushStack(e, a, Q.call(arguments).join(","))
        }
    }); c.extend({ filter: function(a, b, d) { if (d) a = ":not(" + a + ")"; return c.find.matches(a, b) }, dir: function(a, b, d) { var f = []; for (a = a[b]; a && a.nodeType !== 9 && (d === v || a.nodeType !== 1 || !c(a).is(d)); ) { a.nodeType === 1 && f.push(a); a = a[b] } return f }, nth: function(a, b, d) { b = b || 1; for (var f = 0; a; a = a[d]) if (a.nodeType === 1 && ++f === b) break; return a }, sibling: function(a, b) {
        for (var d = []; a; a = a.nextSibling) a.nodeType === 1 && a !==
b && d.push(a); return d
    }
    }); var Fa = / jQuery\d+="(?:\d+|null)"/g, V = /^\s+/, Ga = /(<([\w:]+)[^>]*?)\/>/g, eb = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i, Ha = /<([\w:]+)/, fb = /<tbody/i, gb = /<|&\w+;/, sa = /checked\s*(?:[^=]|=\s*.checked.)/i, Ia = function(a, b, d) { return eb.test(d) ? a : b + "></" + d + ">" }, F = { option: [1, "<select multiple='multiple'>", "</select>"], legend: [1, "<fieldset>", "</fieldset>"], thead: [1, "<table>", "</table>"], tr: [2, "<table><tbody>", "</tbody></table>"], td: [3, "<table><tbody><tr>", "</tr></tbody></table>"],
        col: [2, "<table><tbody></tbody><colgroup>", "</colgroup></table>"], area: [1, "<map>", "</map>"], _default: [0, "", ""]
    }; F.optgroup = F.option; F.tbody = F.tfoot = F.colgroup = F.caption = F.thead; F.th = F.td; if (!c.support.htmlSerialize) F._default = [1, "div<div>", "</div>"]; c.fn.extend({ text: function(a) { if (c.isFunction(a)) return this.each(function(b) { var d = c(this); d.text(a.call(this, b, d.text())) }); if (typeof a !== "object" && a !== v) return this.empty().append((this[0] && this[0].ownerDocument || r).createTextNode(a)); return c.getText(this) },
        wrapAll: function(a) { if (c.isFunction(a)) return this.each(function(d) { c(this).wrapAll(a.call(this, d)) }); if (this[0]) { var b = c(a, this[0].ownerDocument).eq(0).clone(true); this[0].parentNode && b.insertBefore(this[0]); b.map(function() { for (var d = this; d.firstChild && d.firstChild.nodeType === 1; ) d = d.firstChild; return d }).append(this) } return this }, wrapInner: function(a) {
            if (c.isFunction(a)) return this.each(function(b) { c(this).wrapInner(a.call(this, b)) }); return this.each(function() {
                var b = c(this), d = b.contents(); d.length ?
d.wrapAll(a) : b.append(a)
            })
        }, wrap: function(a) { return this.each(function() { c(this).wrapAll(a) }) }, unwrap: function() { return this.parent().each(function() { c.nodeName(this, "body") || c(this).replaceWith(this.childNodes) }).end() }, append: function() { return this.domManip(arguments, true, function(a) { this.nodeType === 1 && this.appendChild(a) }) }, prepend: function() { return this.domManip(arguments, true, function(a) { this.nodeType === 1 && this.insertBefore(a, this.firstChild) }) }, before: function() {
            if (this[0] && this[0].parentNode) return this.domManip(arguments,
false, function(b) { this.parentNode.insertBefore(b, this) }); else if (arguments.length) { var a = c(arguments[0]); a.push.apply(a, this.toArray()); return this.pushStack(a, "before", arguments) }
        }, after: function() { if (this[0] && this[0].parentNode) return this.domManip(arguments, false, function(b) { this.parentNode.insertBefore(b, this.nextSibling) }); else if (arguments.length) { var a = this.pushStack(this, "after", arguments); a.push.apply(a, c(arguments[0]).toArray()); return a } }, clone: function(a) {
            var b = this.map(function() {
                if (!c.support.noCloneEvent &&
!c.isXMLDoc(this)) { var d = this.outerHTML, f = this.ownerDocument; if (!d) { d = f.createElement("div"); d.appendChild(this.cloneNode(true)); d = d.innerHTML } return c.clean([d.replace(Fa, "").replace(V, "")], f)[0] } else return this.cloneNode(true)
            }); if (a === true) { qa(this, b); qa(this.find("*"), b.find("*")) } return b
        }, html: function(a) {
            if (a === v) return this[0] && this[0].nodeType === 1 ? this[0].innerHTML.replace(Fa, "") : null; else if (typeof a === "string" && !/<script/i.test(a) && (c.support.leadingWhitespace || !V.test(a)) && !F[(Ha.exec(a) ||
["", ""])[1].toLowerCase()]) { a = a.replace(Ga, Ia); try { for (var b = 0, d = this.length; b < d; b++) if (this[b].nodeType === 1) { c.cleanData(this[b].getElementsByTagName("*")); this[b].innerHTML = a } } catch (f) { this.empty().append(a) } } else c.isFunction(a) ? this.each(function(e) { var i = c(this), j = i.html(); i.empty().append(function() { return a.call(this, e, j) }) }) : this.empty().append(a); return this
        }, replaceWith: function(a) {
            if (this[0] && this[0].parentNode) {
                if (c.isFunction(a)) return this.each(function(b) {
                    var d = c(this), f = d.html(); d.replaceWith(a.call(this,
b, f))
                }); else a = c(a).detach(); return this.each(function() { var b = this.nextSibling, d = this.parentNode; c(this).remove(); b ? c(b).before(a) : c(d).append(a) })
            } else return this.pushStack(c(c.isFunction(a) ? a() : a), "replaceWith", a)
        }, detach: function(a) { return this.remove(a, true) }, domManip: function(a, b, d) {
            function f(s) { return c.nodeName(s, "table") ? s.getElementsByTagName("tbody")[0] || s.appendChild(s.ownerDocument.createElement("tbody")) : s } var e, i, j = a[0], n = []; if (!c.support.checkClone && arguments.length === 3 && typeof j ===
"string" && sa.test(j)) return this.each(function() { c(this).domManip(a, b, d, true) }); if (c.isFunction(j)) return this.each(function(s) { var x = c(this); a[0] = j.call(this, s, b ? x.html() : v); x.domManip(a, b, d) }); if (this[0]) {
                e = a[0] && a[0].parentNode && a[0].parentNode.nodeType === 11 ? { fragment: a[0].parentNode} : ra(a, this, n); if (i = e.fragment.firstChild) { b = b && c.nodeName(i, "tr"); for (var o = 0, m = this.length; o < m; o++) d.call(b ? f(this[o], i) : this[o], e.cacheable || this.length > 1 || o > 0 ? e.fragment.cloneNode(true) : e.fragment) } n && c.each(n,
Ma)
            } return this
        }
    }); c.fragments = {}; c.each({ appendTo: "append", prependTo: "prepend", insertBefore: "before", insertAfter: "after", replaceAll: "replaceWith" }, function(a, b) { c.fn[a] = function(d) { var f = []; d = c(d); for (var e = 0, i = d.length; e < i; e++) { var j = (e > 0 ? this.clone(true) : this).get(); c.fn[b].apply(c(d[e]), j); f = f.concat(j) } return this.pushStack(f, a, d.selector) } }); c.each({ remove: function(a, b) {
        if (!a || c.filter(a, [this]).length) {
            if (!b && this.nodeType === 1) { c.cleanData(this.getElementsByTagName("*")); c.cleanData([this]) } this.parentNode &&
this.parentNode.removeChild(this)
        }
    }, empty: function() { for (this.nodeType === 1 && c.cleanData(this.getElementsByTagName("*")); this.firstChild; ) this.removeChild(this.firstChild) }
    }, function(a, b) { c.fn[a] = function() { return this.each(b, arguments) } }); c.extend({ clean: function(a, b, d, f) {
        b = b || r; if (typeof b.createElement === "undefined") b = b.ownerDocument || b[0] && b[0].ownerDocument || r; var e = []; c.each(a, function(i, j) {
            if (typeof j === "number") j += ""; if (j) {
                if (typeof j === "string" && !gb.test(j)) j = b.createTextNode(j); else if (typeof j ===
"string") {
                    j = j.replace(Ga, Ia); var n = (Ha.exec(j) || ["", ""])[1].toLowerCase(), o = F[n] || F._default, m = o[0]; i = b.createElement("div"); for (i.innerHTML = o[1] + j + o[2]; m--; ) i = i.lastChild; if (!c.support.tbody) { m = fb.test(j); n = n === "table" && !m ? i.firstChild && i.firstChild.childNodes : o[1] === "<table>" && !m ? i.childNodes : []; for (o = n.length - 1; o >= 0; --o) c.nodeName(n[o], "tbody") && !n[o].childNodes.length && n[o].parentNode.removeChild(n[o]) } !c.support.leadingWhitespace && V.test(j) && i.insertBefore(b.createTextNode(V.exec(j)[0]), i.firstChild);
                    j = c.makeArray(i.childNodes)
                } if (j.nodeType) e.push(j); else e = c.merge(e, j)
            }
        }); if (d) for (a = 0; e[a]; a++) if (f && c.nodeName(e[a], "script") && (!e[a].type || e[a].type.toLowerCase() === "text/javascript")) f.push(e[a].parentNode ? e[a].parentNode.removeChild(e[a]) : e[a]); else { e[a].nodeType === 1 && e.splice.apply(e, [a + 1, 0].concat(c.makeArray(e[a].getElementsByTagName("script")))); d.appendChild(e[a]) } return e
    }, cleanData: function(a) { for (var b = 0, d; (d = a[b]) != null; b++) { c.event.remove(d); c.removeData(d) } }
    }); var hb = /z-?index|font-?weight|opacity|zoom|line-?height/i,
Ja = /alpha\([^)]*\)/, Ka = /opacity=([^)]*)/, ga = /float/i, ha = /-([a-z])/ig, ib = /([A-Z])/g, jb = /^-?\d+(?:px)?$/i, kb = /^-?\d/, lb = { position: "absolute", visibility: "hidden", display: "block" }, mb = ["Left", "Right"], nb = ["Top", "Bottom"], ob = r.defaultView && r.defaultView.getComputedStyle, La = c.support.cssFloat ? "cssFloat" : "styleFloat", ia = function(a, b) { return b.toUpperCase() }; c.fn.css = function(a, b) { return X(this, a, b, true, function(d, f, e) { if (e === v) return c.curCSS(d, f); if (typeof e === "number" && !hb.test(f)) e += "px"; c.style(d, f, e) }) };
    c.extend({ style: function(a, b, d) { if (!a || a.nodeType === 3 || a.nodeType === 8) return v; if ((b === "width" || b === "height") && parseFloat(d) < 0) d = v; var f = a.style || a, e = d !== v; if (!c.support.opacity && b === "opacity") { if (e) { f.zoom = 1; b = parseInt(d, 10) + "" === "NaN" ? "" : "alpha(opacity=" + d * 100 + ")"; a = f.filter || c.curCSS(a, "filter") || ""; f.filter = Ja.test(a) ? a.replace(Ja, b) : b } return f.filter && f.filter.indexOf("opacity=") >= 0 ? parseFloat(Ka.exec(f.filter)[1]) / 100 + "" : "" } if (ga.test(b)) b = La; b = b.replace(ha, ia); if (e) f[b] = d; return f[b] }, css: function(a,
b, d, f) { if (b === "width" || b === "height") { var e, i = b === "width" ? mb : nb; function j() { e = b === "width" ? a.offsetWidth : a.offsetHeight; f !== "border" && c.each(i, function() { f || (e -= parseFloat(c.curCSS(a, "padding" + this, true)) || 0); if (f === "margin") e += parseFloat(c.curCSS(a, "margin" + this, true)) || 0; else e -= parseFloat(c.curCSS(a, "border" + this + "Width", true)) || 0 }) } a.offsetWidth !== 0 ? j() : c.swap(a, lb, j); return Math.max(0, Math.round(e)) } return c.curCSS(a, b, d) }, curCSS: function(a, b, d) {
    var f, e = a.style; if (!c.support.opacity && b === "opacity" &&
a.currentStyle) { f = Ka.test(a.currentStyle.filter || "") ? parseFloat(RegExp.$1) / 100 + "" : ""; return f === "" ? "1" : f } if (ga.test(b)) b = La; if (!d && e && e[b]) f = e[b]; else if (ob) { if (ga.test(b)) b = "float"; b = b.replace(ib, "-$1").toLowerCase(); e = a.ownerDocument.defaultView; if (!e) return null; if (a = e.getComputedStyle(a, null)) f = a.getPropertyValue(b); if (b === "opacity" && f === "") f = "1" } else if (a.currentStyle) {
        d = b.replace(ha, ia); f = a.currentStyle[b] || a.currentStyle[d]; if (!jb.test(f) && kb.test(f)) {
            b = e.left; var i = a.runtimeStyle.left; a.runtimeStyle.left =
a.currentStyle.left; e.left = d === "fontSize" ? "1em" : f || 0; f = e.pixelLeft + "px"; e.left = b; a.runtimeStyle.left = i
        }
    } return f
}, swap: function(a, b, d) { var f = {}; for (var e in b) { f[e] = a.style[e]; a.style[e] = b[e] } d.call(a); for (e in b) a.style[e] = f[e] }
    }); if (c.expr && c.expr.filters) { c.expr.filters.hidden = function(a) { var b = a.offsetWidth, d = a.offsetHeight, f = a.nodeName.toLowerCase() === "tr"; return b === 0 && d === 0 && !f ? true : b > 0 && d > 0 && !f ? false : c.curCSS(a, "display") === "none" }; c.expr.filters.visible = function(a) { return !c.expr.filters.hidden(a) } } var pb =
J(), qb = /<script(.|\s)*?\/script>/gi, rb = /select|textarea/i, sb = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i, N = /=\?(&|$)/, ja = /\?/, tb = /(\?|&)_=.*?(&|$)/, ub = /^(\w+:)?\/\/([^\/?#]+)/, vb = /%20/g; c.fn.extend({ _load: c.fn.load, load: function(a, b, d) {
    if (typeof a !== "string") return this._load(a); else if (!this.length) return this; var f = a.indexOf(" "); if (f >= 0) { var e = a.slice(f, a.length); a = a.slice(0, f) } f = "GET"; if (b) if (c.isFunction(b)) { d = b; b = null } else if (typeof b === "object") {
        b =
c.param(b, c.ajaxSettings.traditional); f = "POST"
    } var i = this; c.ajax({ url: a, type: f, dataType: "html", data: b, complete: function(j, n) { if (n === "success" || n === "notmodified") i.html(e ? c("<div />").append(j.responseText.replace(qb, "")).find(e) : j.responseText); d && i.each(d, [j.responseText, n, j]) } }); return this
}, serialize: function() { return c.param(this.serializeArray()) }, serializeArray: function() {
    return this.map(function() { return this.elements ? c.makeArray(this.elements) : this }).filter(function() {
        return this.name && !this.disabled &&
(this.checked || rb.test(this.nodeName) || sb.test(this.type))
    }).map(function(a, b) { a = c(this).val(); return a == null ? null : c.isArray(a) ? c.map(a, function(d) { return { name: b.name, value: d} }) : { name: b.name, value: a} }).get()
}
}); c.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function(a, b) { c.fn[b] = function(d) { return this.bind(b, d) } }); c.extend({ get: function(a, b, d, f) { if (c.isFunction(b)) { f = f || d; d = b; b = null } return c.ajax({ type: "GET", url: a, data: b, success: d, dataType: f }) }, getScript: function(a,
b) { return c.get(a, null, b, "script") }, getJSON: function(a, b, d) { return c.get(a, b, d, "json") }, post: function(a, b, d, f) { if (c.isFunction(b)) { f = f || d; d = b; b = {} } return c.ajax({ type: "POST", url: a, data: b, success: d, dataType: f }) }, ajaxSetup: function(a) { c.extend(c.ajaxSettings, a) }, ajaxSettings: { url: location.href, global: true, type: "GET", contentType: "application/x-www-form-urlencoded", processData: true, async: true, xhr: z.XMLHttpRequest && (z.location.protocol !== "file:" || !z.ActiveXObject) ? function() { return new z.XMLHttpRequest } :
function() { try { return new z.ActiveXObject("Microsoft.XMLHTTP") } catch (a) { } }, accepts: { xml: "application/xml, text/xml", html: "text/html", script: "text/javascript, application/javascript", json: "application/json, text/javascript", text: "text/plain", _default: "*/*" }
}, lastModified: {}, etag: {}, ajax: function(a) {
    function b() { e.success && e.success.call(o, n, j, w); e.global && f("ajaxSuccess", [w, e]) } function d() { e.complete && e.complete.call(o, w, j); e.global && f("ajaxComplete", [w, e]); e.global && ! --c.active && c.event.trigger("ajaxStop") }
    function f(q, p) { (e.context ? c(e.context) : c.event).trigger(q, p) } var e = c.extend(true, {}, c.ajaxSettings, a), i, j, n, o = a && a.context || e, m = e.type.toUpperCase(); if (e.data && e.processData && typeof e.data !== "string") e.data = c.param(e.data, e.traditional); if (e.dataType === "jsonp") { if (m === "GET") N.test(e.url) || (e.url += (ja.test(e.url) ? "&" : "?") + (e.jsonp || "callback") + "=?"); else if (!e.data || !N.test(e.data)) e.data = (e.data ? e.data + "&" : "") + (e.jsonp || "callback") + "=?"; e.dataType = "json" } if (e.dataType === "json" && (e.data && N.test(e.data) ||
N.test(e.url))) { i = e.jsonpCallback || "jsonp" + pb++; if (e.data) e.data = (e.data + "").replace(N, "=" + i + "$1"); e.url = e.url.replace(N, "=" + i + "$1"); e.dataType = "script"; z[i] = z[i] || function(q) { n = q; b(); d(); z[i] = v; try { delete z[i] } catch (p) { } A && A.removeChild(B) } } if (e.dataType === "script" && e.cache === null) e.cache = false; if (e.cache === false && m === "GET") { var s = J(), x = e.url.replace(tb, "$1_=" + s + "$2"); e.url = x + (x === e.url ? (ja.test(e.url) ? "&" : "?") + "_=" + s : "") } if (e.data && m === "GET") e.url += (ja.test(e.url) ? "&" : "?") + e.data; e.global && !c.active++ &&
c.event.trigger("ajaxStart"); s = (s = ub.exec(e.url)) && (s[1] && s[1] !== location.protocol || s[2] !== location.host); if (e.dataType === "script" && m === "GET" && s) {
        var A = r.getElementsByTagName("head")[0] || r.documentElement, B = r.createElement("script"); B.src = e.url; if (e.scriptCharset) B.charset = e.scriptCharset; if (!i) {
            var C = false; B.onload = B.onreadystatechange = function() {
                if (!C && (!this.readyState || this.readyState === "loaded" || this.readyState === "complete")) {
                    C = true; b(); d(); B.onload = B.onreadystatechange = null; A && B.parentNode &&
A.removeChild(B)
                }
            }
        } A.insertBefore(B, A.firstChild); return v
    } var E = false, w = e.xhr(); if (w) {
        e.username ? w.open(m, e.url, e.async, e.username, e.password) : w.open(m, e.url, e.async); try {
            if (e.data || a && a.contentType) w.setRequestHeader("Content-Type", e.contentType); if (e.ifModified) { c.lastModified[e.url] && w.setRequestHeader("If-Modified-Since", c.lastModified[e.url]); c.etag[e.url] && w.setRequestHeader("If-None-Match", c.etag[e.url]) } s || w.setRequestHeader("X-Requested-With", "XMLHttpRequest"); w.setRequestHeader("Accept",
e.dataType && e.accepts[e.dataType] ? e.accepts[e.dataType] + ", */*" : e.accepts._default)
        } catch (fa) { } if (e.beforeSend && e.beforeSend.call(o, w, e) === false) { e.global && ! --c.active && c.event.trigger("ajaxStop"); w.abort(); return false } e.global && f("ajaxSend", [w, e]); var g = w.onreadystatechange = function(q) {
            if (!w || w.readyState === 0 || q === "abort") { E || d(); E = true; if (w) w.onreadystatechange = c.noop } else if (!E && w && (w.readyState === 4 || q === "timeout")) {
                E = true; w.onreadystatechange = c.noop; j = q === "timeout" ? "timeout" : !c.httpSuccess(w) ?
"error" : e.ifModified && c.httpNotModified(w, e.url) ? "notmodified" : "success"; var p; if (j === "success") try { n = c.httpData(w, e.dataType, e) } catch (u) { j = "parsererror"; p = u } if (j === "success" || j === "notmodified") i || b(); else c.handleError(e, w, j, p); d(); q === "timeout" && w.abort(); if (e.async) w = null
            }
        }; try { var h = w.abort; w.abort = function() { w && h.call(w); g("abort") } } catch (k) { } e.async && e.timeout > 0 && setTimeout(function() { w && !E && g("timeout") }, e.timeout); try { w.send(m === "POST" || m === "PUT" || m === "DELETE" ? e.data : null) } catch (l) {
            c.handleError(e,
w, null, l); d()
        } e.async || g(); return w
    }
}, handleError: function(a, b, d, f) { if (a.error) a.error.call(a.context || a, b, d, f); if (a.global) (a.context ? c(a.context) : c.event).trigger("ajaxError", [b, a, f]) }, active: 0, httpSuccess: function(a) { try { return !a.status && location.protocol === "file:" || a.status >= 200 && a.status < 300 || a.status === 304 || a.status === 1223 || a.status === 0 } catch (b) { } return false }, httpNotModified: function(a, b) {
    var d = a.getResponseHeader("Last-Modified"), f = a.getResponseHeader("Etag"); if (d) c.lastModified[b] = d; if (f) c.etag[b] =
f; return a.status === 304 || a.status === 0
}, httpData: function(a, b, d) { var f = a.getResponseHeader("content-type") || "", e = b === "xml" || !b && f.indexOf("xml") >= 0; a = e ? a.responseXML : a.responseText; e && a.documentElement.nodeName === "parsererror" && c.error("parsererror"); if (d && d.dataFilter) a = d.dataFilter(a, b); if (typeof a === "string") if (b === "json" || !b && f.indexOf("json") >= 0) a = c.parseJSON(a); else if (b === "script" || !b && f.indexOf("javascript") >= 0) c.globalEval(a); return a }, param: function(a, b) {
    function d(j, n) {
        if (c.isArray(n)) c.each(n,
function(o, m) { b ? f(j, m) : d(j + "[" + (typeof m === "object" || c.isArray(m) ? o : "") + "]", m) }); else !b && n != null && typeof n === "object" ? c.each(n, function(o, m) { d(j + "[" + o + "]", m) }) : f(j, n)
    } function f(j, n) { n = c.isFunction(n) ? n() : n; e[e.length] = encodeURIComponent(j) + "=" + encodeURIComponent(n) } var e = []; if (b === v) b = c.ajaxSettings.traditional; if (c.isArray(a) || a.jquery) c.each(a, function() { f(this.name, this.value) }); else for (var i in a) d(i, a[i]); return e.join("&").replace(vb, "+")
}
}); var ka = {}, wb = /toggle|show|hide/, xb = /^([+-]=)?([\d+-.]+)(.*)$/,
W, ta = [["height", "marginTop", "marginBottom", "paddingTop", "paddingBottom"], ["width", "marginLeft", "marginRight", "paddingLeft", "paddingRight"], ["opacity"]]; c.fn.extend({ show: function(a, b) {
    if (a || a === 0) return this.animate(K("show", 3), a, b); else {
        a = 0; for (b = this.length; a < b; a++) {
            var d = c.data(this[a], "olddisplay"); this[a].style.display = d || ""; if (c.css(this[a], "display") === "none") {
                d = this[a].nodeName; var f; if (ka[d]) f = ka[d]; else {
                    var e = c("<" + d + " />").appendTo("body"); f = e.css("display"); if (f === "none") f = "block"; e.remove();
                    ka[d] = f
                } c.data(this[a], "olddisplay", f)
            }
        } a = 0; for (b = this.length; a < b; a++) this[a].style.display = c.data(this[a], "olddisplay") || ""; return this
    }
}, hide: function(a, b) { if (a || a === 0) return this.animate(K("hide", 3), a, b); else { a = 0; for (b = this.length; a < b; a++) { var d = c.data(this[a], "olddisplay"); !d && d !== "none" && c.data(this[a], "olddisplay", c.css(this[a], "display")) } a = 0; for (b = this.length; a < b; a++) this[a].style.display = "none"; return this } }, _toggle: c.fn.toggle, toggle: function(a, b) {
    var d = typeof a === "boolean"; if (c.isFunction(a) &&
c.isFunction(b)) this._toggle.apply(this, arguments); else a == null || d ? this.each(function() { var f = d ? a : c(this).is(":hidden"); c(this)[f ? "show" : "hide"]() }) : this.animate(K("toggle", 3), a, b); return this
}, fadeTo: function(a, b, d) { return this.filter(":hidden").css("opacity", 0).show().end().animate({ opacity: b }, a, d) }, animate: function(a, b, d, f) {
    var e = c.speed(b, d, f); if (c.isEmptyObject(a)) return this.each(e.complete); return this[e.queue === false ? "each" : "queue"](function() {
        var i = c.extend({}, e), j, n = this.nodeType === 1 && c(this).is(":hidden"),
o = this; for (j in a) { var m = j.replace(ha, ia); if (j !== m) { a[m] = a[j]; delete a[j]; j = m } if (a[j] === "hide" && n || a[j] === "show" && !n) return i.complete.call(this); if ((j === "height" || j === "width") && this.style) { i.display = c.css(this, "display"); i.overflow = this.style.overflow } if (c.isArray(a[j])) { (i.specialEasing = i.specialEasing || {})[j] = a[j][1]; a[j] = a[j][0] } } if (i.overflow != null) this.style.overflow = "hidden"; i.curAnim = c.extend({}, a); c.each(a, function(s, x) {
    var A = new c.fx(o, i, s); if (wb.test(x)) A[x === "toggle" ? n ? "show" : "hide" : x](a);
    else { var B = xb.exec(x), C = A.cur(true) || 0; if (B) { x = parseFloat(B[2]); var E = B[3] || "px"; if (E !== "px") { o.style[s] = (x || 1) + E; C = (x || 1) / A.cur(true) * C; o.style[s] = C + E } if (B[1]) x = (B[1] === "-=" ? -1 : 1) * x + C; A.custom(C, x, E) } else A.custom(C, x, "") }
}); return true
    })
}, stop: function(a, b) { var d = c.timers; a && this.queue([]); this.each(function() { for (var f = d.length - 1; f >= 0; f--) if (d[f].elem === this) { b && d[f](true); d.splice(f, 1) } }); b || this.dequeue(); return this }
}); c.each({ slideDown: K("show", 1), slideUp: K("hide", 1), slideToggle: K("toggle",
1), fadeIn: { opacity: "show" }, fadeOut: { opacity: "hide" }
}, function(a, b) { c.fn[a] = function(d, f) { return this.animate(b, d, f) } }); c.extend({ speed: function(a, b, d) { var f = a && typeof a === "object" ? a : { complete: d || !d && b || c.isFunction(a) && a, duration: a, easing: d && b || b && !c.isFunction(b) && b }; f.duration = c.fx.off ? 0 : typeof f.duration === "number" ? f.duration : c.fx.speeds[f.duration] || c.fx.speeds._default; f.old = f.complete; f.complete = function() { f.queue !== false && c(this).dequeue(); c.isFunction(f.old) && f.old.call(this) }; return f }, easing: { linear: function(a,
b, d, f) { return d + f * a }, swing: function(a, b, d, f) { return (-Math.cos(a * Math.PI) / 2 + 0.5) * f + d }
}, timers: [], fx: function(a, b, d) { this.options = b; this.elem = a; this.prop = d; if (!b.orig) b.orig = {} }
}); c.fx.prototype = { update: function() { this.options.step && this.options.step.call(this.elem, this.now, this); (c.fx.step[this.prop] || c.fx.step._default)(this); if ((this.prop === "height" || this.prop === "width") && this.elem.style) this.elem.style.display = "block" }, cur: function(a) {
    if (this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] ==
null)) return this.elem[this.prop]; return (a = parseFloat(c.css(this.elem, this.prop, a))) && a > -10000 ? a : parseFloat(c.curCSS(this.elem, this.prop)) || 0
}, custom: function(a, b, d) { function f(i) { return e.step(i) } this.startTime = J(); this.start = a; this.end = b; this.unit = d || this.unit || "px"; this.now = this.start; this.pos = this.state = 0; var e = this; f.elem = this.elem; if (f() && c.timers.push(f) && !W) W = setInterval(c.fx.tick, 13) }, show: function() {
    this.options.orig[this.prop] = c.style(this.elem, this.prop); this.options.show = true; this.custom(this.prop ===
"width" || this.prop === "height" ? 1 : 0, this.cur()); c(this.elem).show()
}, hide: function() { this.options.orig[this.prop] = c.style(this.elem, this.prop); this.options.hide = true; this.custom(this.cur(), 0) }, step: function(a) {
    var b = J(), d = true; if (a || b >= this.options.duration + this.startTime) {
        this.now = this.end; this.pos = this.state = 1; this.update(); this.options.curAnim[this.prop] = true; for (var f in this.options.curAnim) if (this.options.curAnim[f] !== true) d = false; if (d) {
            if (this.options.display != null) {
                this.elem.style.overflow =
this.options.overflow; a = c.data(this.elem, "olddisplay"); this.elem.style.display = a ? a : this.options.display; if (c.css(this.elem, "display") === "none") this.elem.style.display = "block"
            } this.options.hide && c(this.elem).hide(); if (this.options.hide || this.options.show) for (var e in this.options.curAnim) c.style(this.elem, e, this.options.orig[e]); this.options.complete.call(this.elem)
        } return false
    } else {
        e = b - this.startTime; this.state = e / this.options.duration; a = this.options.easing || (c.easing.swing ? "swing" : "linear"); this.pos =
c.easing[this.options.specialEasing && this.options.specialEasing[this.prop] || a](this.state, e, 0, 1, this.options.duration); this.now = this.start + (this.end - this.start) * this.pos; this.update()
    } return true
}
}; c.extend(c.fx, { tick: function() { for (var a = c.timers, b = 0; b < a.length; b++) a[b]() || a.splice(b--, 1); a.length || c.fx.stop() }, stop: function() { clearInterval(W); W = null }, speeds: { slow: 600, fast: 200, _default: 400 }, step: { opacity: function(a) { c.style(a.elem, "opacity", a.now) }, _default: function(a) {
    if (a.elem.style && a.elem.style[a.prop] !=
null) a.elem.style[a.prop] = (a.prop === "width" || a.prop === "height" ? Math.max(0, a.now) : a.now) + a.unit; else a.elem[a.prop] = a.now
}
}
}); if (c.expr && c.expr.filters) c.expr.filters.animated = function(a) { return c.grep(c.timers, function(b) { return a === b.elem }).length }; c.fn.offset = "getBoundingClientRect" in r.documentElement ? function(a) {
    var b = this[0]; if (a) return this.each(function(e) { c.offset.setOffset(this, a, e) }); if (!b || !b.ownerDocument) return null; if (b === b.ownerDocument.body) return c.offset.bodyOffset(b); var d = b.getBoundingClientRect(),
f = b.ownerDocument; b = f.body; f = f.documentElement; return { top: d.top + (self.pageYOffset || c.support.boxModel && f.scrollTop || b.scrollTop) - (f.clientTop || b.clientTop || 0), left: d.left + (self.pageXOffset || c.support.boxModel && f.scrollLeft || b.scrollLeft) - (f.clientLeft || b.clientLeft || 0) }
} : function(a) {
    var b = this[0]; if (a) return this.each(function(s) { c.offset.setOffset(this, a, s) }); if (!b || !b.ownerDocument) return null; if (b === b.ownerDocument.body) return c.offset.bodyOffset(b); c.offset.initialize(); var d = b.offsetParent, f =
b, e = b.ownerDocument, i, j = e.documentElement, n = e.body; f = (e = e.defaultView) ? e.getComputedStyle(b, null) : b.currentStyle; for (var o = b.offsetTop, m = b.offsetLeft; (b = b.parentNode) && b !== n && b !== j; ) {
        if (c.offset.supportsFixedPosition && f.position === "fixed") break; i = e ? e.getComputedStyle(b, null) : b.currentStyle; o -= b.scrollTop; m -= b.scrollLeft; if (b === d) {
            o += b.offsetTop; m += b.offsetLeft; if (c.offset.doesNotAddBorder && !(c.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(b.nodeName))) {
                o += parseFloat(i.borderTopWidth) ||
0; m += parseFloat(i.borderLeftWidth) || 0
            } f = d; d = b.offsetParent
        } if (c.offset.subtractsBorderForOverflowNotVisible && i.overflow !== "visible") { o += parseFloat(i.borderTopWidth) || 0; m += parseFloat(i.borderLeftWidth) || 0 } f = i
    } if (f.position === "relative" || f.position === "static") { o += n.offsetTop; m += n.offsetLeft } if (c.offset.supportsFixedPosition && f.position === "fixed") { o += Math.max(j.scrollTop, n.scrollTop); m += Math.max(j.scrollLeft, n.scrollLeft) } return { top: o, left: m }
}; c.offset = { initialize: function() {
    var a = r.body, b = r.createElement("div"),
d, f, e, i = parseFloat(c.curCSS(a, "marginTop", true)) || 0; c.extend(b.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" }); b.innerHTML = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>"; a.insertBefore(b, a.firstChild);
    d = b.firstChild; f = d.firstChild; e = d.nextSibling.firstChild.firstChild; this.doesNotAddBorder = f.offsetTop !== 5; this.doesAddBorderForTableAndCells = e.offsetTop === 5; f.style.position = "fixed"; f.style.top = "20px"; this.supportsFixedPosition = f.offsetTop === 20 || f.offsetTop === 15; f.style.position = f.style.top = ""; d.style.overflow = "hidden"; d.style.position = "relative"; this.subtractsBorderForOverflowNotVisible = f.offsetTop === -5; this.doesNotIncludeMarginInBodyOffset = a.offsetTop !== i; a.removeChild(b); c.offset.initialize = c.noop
},
    bodyOffset: function(a) { var b = a.offsetTop, d = a.offsetLeft; c.offset.initialize(); if (c.offset.doesNotIncludeMarginInBodyOffset) { b += parseFloat(c.curCSS(a, "marginTop", true)) || 0; d += parseFloat(c.curCSS(a, "marginLeft", true)) || 0 } return { top: b, left: d} }, setOffset: function(a, b, d) {
        if (/static/.test(c.curCSS(a, "position"))) a.style.position = "relative"; var f = c(a), e = f.offset(), i = parseInt(c.curCSS(a, "top", true), 10) || 0, j = parseInt(c.curCSS(a, "left", true), 10) || 0; if (c.isFunction(b)) b = b.call(a, d, e); d = { top: b.top - e.top + i, left: b.left -
e.left + j
        }; "using" in b ? b.using.call(a, d) : f.css(d)
    }
}; c.fn.extend({ position: function() { if (!this[0]) return null; var a = this[0], b = this.offsetParent(), d = this.offset(), f = /^body|html$/i.test(b[0].nodeName) ? { top: 0, left: 0} : b.offset(); d.top -= parseFloat(c.curCSS(a, "marginTop", true)) || 0; d.left -= parseFloat(c.curCSS(a, "marginLeft", true)) || 0; f.top += parseFloat(c.curCSS(b[0], "borderTopWidth", true)) || 0; f.left += parseFloat(c.curCSS(b[0], "borderLeftWidth", true)) || 0; return { top: d.top - f.top, left: d.left - f.left} }, offsetParent: function() {
    return this.map(function() {
        for (var a =
this.offsetParent || r.body; a && !/^body|html$/i.test(a.nodeName) && c.css(a, "position") === "static"; ) a = a.offsetParent; return a
    })
}
}); c.each(["Left", "Top"], function(a, b) { var d = "scroll" + b; c.fn[d] = function(f) { var e = this[0], i; if (!e) return null; if (f !== v) return this.each(function() { if (i = ua(this)) i.scrollTo(!a ? f : c(i).scrollLeft(), a ? f : c(i).scrollTop()); else this[d] = f }); else return (i = ua(e)) ? "pageXOffset" in i ? i[a ? "pageYOffset" : "pageXOffset"] : c.support.boxModel && i.document.documentElement[d] || i.document.body[d] : e[d] } });
    c.each(["Height", "Width"], function(a, b) {
        var d = b.toLowerCase(); c.fn["inner" + b] = function() { return this[0] ? c.css(this[0], d, false, "padding") : null }; c.fn["outer" + b] = function(f) { return this[0] ? c.css(this[0], d, false, f ? "margin" : "border") : null }; c.fn[d] = function(f) {
            var e = this[0]; if (!e) return f == null ? null : this; if (c.isFunction(f)) return this.each(function(i) { var j = c(this); j[d](f.call(this, i, j[d]())) }); return "scrollTo" in e && e.document ? e.document.compatMode === "CSS1Compat" && e.document.documentElement["client" + b] ||
e.document.body["client" + b] : e.nodeType === 9 ? Math.max(e.documentElement["client" + b], e.body["scroll" + b], e.documentElement["scroll" + b], e.body["offset" + b], e.documentElement["offset" + b]) : f === v ? c.css(e, d) : this.css(d, typeof f === "string" ? f : f + "px")
        }
    }); z.jQuery = z.$ = c
})(window);


//// ****** jquery-1.4.1.min.js Ends  ************************************************************************ ////

//// ****** jquery.cycle.all.2.72.js Starts  ************************************************************************ ////

/*!
* jQuery Cycle Plugin (with Transition Definitions)
* Examples and documentation at: http://jquery.malsup.com/cycle/
* Copyright (c) 2007-2009 M. Alsup
* Version: 2.72 (09-SEP-2009)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* Requires: jQuery v1.2.6 or later
*
* Originally based on the work of:
*	1) Matt Oakes
*	2) Torsten Baldes (http://medienfreunde.com/lab/innerfade/)
*	3) Benjamin Sterling (http://www.benjaminsterling.com/experiments/jqShuffle/)
*/
; (function($) {

    var ver = '2.72';

    // if $.support is not defined (pre jQuery 1.3) add what I need
    if ($.support == undefined) {
        $.support = {
            opacity: !($.browser.msie)
        };
    }

    function debug(s) {
        if ($.fn.cycle.debug)
            log(s);
    }
    function log() {
        if (window.console && window.console.log)
            window.console.log('[cycle] ' + Array.prototype.join.call(arguments, ' '));
        //$('body').append('<div>'+Array.prototype.join.call(arguments,' ')+'</div>');
    };

    // the options arg can be...
    //   a number  - indicates an immediate transition should occur to the given slide index
    //   a string  - 'stop', 'pause', 'resume', or the name of a transition effect (ie, 'fade', 'zoom', etc)
    //   an object - properties to control the slideshow
    //
    // the arg2 arg can be...
    //   the name of an fx (only used in conjunction with a numeric value for 'options')
    //   the value true (only used in conjunction with a options == 'resume') and indicates
    //	 that the resume should occur immediately (not wait for next timeout)

    $.fn.cycle = function(options, arg2) {
        var o = { s: this.selector, c: this.context };

        // in 1.3+ we can fix mistakes with the ready state
        if (this.length === 0 && options != 'stop') {
            if (!$.isReady && o.s) {
                log('DOM not ready, queuing slideshow');
                $(function() {
                    $(o.s, o.c).cycle(options, arg2);
                });
                return this;
            }
            // is your DOM ready?  http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
            log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
            return this;
        }

        // iterate the matched nodeset
        return this.each(function() {
            var opts = handleArguments(this, options, arg2);
            if (opts === false)
                return;

            // stop existing slideshow for this container (if there is one)
            if (this.cycleTimeout)
                clearTimeout(this.cycleTimeout);
            this.cycleTimeout = this.cyclePause = 0;

            var $cont = $(this);
            var $slides = opts.slideExpr ? $(opts.slideExpr, this) : $cont.children();
            var els = $slides.get();
            if (els.length < 2) {
                log('terminating; too few slides: ' + els.length);
                return;
            }

            var opts2 = buildOptions($cont, $slides, els, opts, o);
            if (opts2 === false)
                return;

            var startTime = opts2.continuous ? 10 : getTimeout(opts2.currSlide, opts2.nextSlide, opts2, !opts2.rev);

            // if it's an auto slideshow, kick it off
            if (startTime) {
                startTime += (opts2.delay || 0);
                if (startTime < 10)
                    startTime = 10;
                debug('first timeout: ' + startTime);
                this.cycleTimeout = setTimeout(function() { go(els, opts2, 0, !opts2.rev) }, startTime);
            }
        });
    };

    // process the args that were passed to the plugin fn
    function handleArguments(cont, options, arg2) {
        if (cont.cycleStop == undefined)
            cont.cycleStop = 0;
        if (options === undefined || options === null)
            options = {};
        if (options.constructor == String) {
            switch (options) {
                case 'stop':
                    cont.cycleStop++; // callbacks look for change
                    if (cont.cycleTimeout)
                        clearTimeout(cont.cycleTimeout);
                    cont.cycleTimeout = 0;
                    $(cont).removeData('cycle.opts');
                    return false;
                case 'pause':
                    cont.cyclePause = 1;
                    return false;
                case 'resume':
                    cont.cyclePause = 0;
                    if (arg2 === true) { // resume now!
                        options = $(cont).data('cycle.opts');
                        if (!options) {
                            log('options not found, can not resume');
                            return false;
                        }
                        if (cont.cycleTimeout) {
                            clearTimeout(cont.cycleTimeout);
                            cont.cycleTimeout = 0;
                        }
                        go(options.elements, options, 1, 1);
                    }
                    return false;
                case 'prev':
                case 'next':
                    var opts = $(cont).data('cycle.opts');
                    if (!opts) {
                        log('options not found, "prev/next" ignored');
                        return false;
                    }
                    $.fn.cycle[options](opts);
                    return false;
                default:
                    options = { fx: options };
            };
            return options;
        }
        else if (options.constructor == Number) {
            // go to the requested slide
            var num = options;
            options = $(cont).data('cycle.opts');
            if (!options) {
                log('options not found, can not advance slide');
                return false;
            }
            if (num < 0 || num >= options.elements.length) {
                log('invalid slide index: ' + num);
                return false;
            }
            options.nextSlide = num;
            if (cont.cycleTimeout) {
                clearTimeout(cont.cycleTimeout);
                cont.cycleTimeout = 0;
            }
            if (typeof arg2 == 'string')
                options.oneTimeFx = arg2;
            go(options.elements, options, 1, num >= options.currSlide);
            return false;
        }
        return options;
    };

    function removeFilter(el, opts) {
        if (!$.support.opacity && opts.cleartype && el.style.filter) {
            try { el.style.removeAttribute('filter'); }
            catch (smother) { } // handle old opera versions
        }
    };

    // one-time initialization
    function buildOptions($cont, $slides, els, options, o) {
        // support metadata plugin (v1.0 and v2.0)
        var opts = $.extend({}, $.fn.cycle.defaults, options || {}, $.metadata ? $cont.metadata() : $.meta ? $cont.data() : {});
        if (opts.autostop)
            opts.countdown = opts.autostopCount || els.length;

        var cont = $cont[0];
        $cont.data('cycle.opts', opts);
        opts.$cont = $cont;
        opts.stopCount = cont.cycleStop;
        opts.elements = els;
        opts.before = opts.before ? [opts.before] : [];
        opts.after = opts.after ? [opts.after] : [];
        opts.after.unshift(function() { opts.busy = 0; });

        // push some after callbacks
        if (!$.support.opacity && opts.cleartype)
            opts.after.push(function() { removeFilter(this, opts); });
        if (opts.continuous)
            opts.after.push(function() { go(els, opts, 0, !opts.rev); });

        saveOriginalOpts(opts);

        // clearType corrections
        if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
            clearTypeFix($slides);

        // container requires non-static position so that slides can be position within
        if ($cont.css('position') == 'static')
            $cont.css('position', 'relative');
        if (opts.width)
            $cont.width(opts.width);
        if (opts.height && opts.height != 'auto')
            $cont.height(opts.height);

        if (opts.startingSlide)
            opts.startingSlide = parseInt(opts.startingSlide);

        // if random, mix up the slide array
        if (opts.random) {
            opts.randomMap = [];
            for (var i = 0; i < els.length; i++)
                opts.randomMap.push(i);
            opts.randomMap.sort(function(a, b) { return Math.random() - 0.5; });
            opts.randomIndex = 0;
            opts.startingSlide = opts.randomMap[0];
        }
        else if (opts.startingSlide >= els.length)
            opts.startingSlide = 0; // catch bogus input
        opts.currSlide = opts.startingSlide = opts.startingSlide || 0;
        var first = opts.startingSlide;

        // set position and zIndex on all the slides
        $slides.css({ position: 'absolute', top: 0, left: 0 }).hide().each(function(i) {
            var z = first ? i >= first ? els.length - (i - first) : first - i : els.length - i;
            $(this).css('z-index', z)
        });

        // make sure first slide is visible
        $(els[first]).css('opacity', 1).show(); // opacity bit needed to handle restart use case
        removeFilter(els[first], opts);

        // stretch slides
        if (opts.fit && opts.width)
            $slides.width(opts.width);
        if (opts.fit && opts.height && opts.height != 'auto')
            $slides.height(opts.height);

        // stretch container
        var reshape = opts.containerResize && !$cont.innerHeight();
        if (reshape) { // do this only if container has no size http://tinyurl.com/da2oa9
            var maxw = 0, maxh = 0;
            for (var j = 0; j < els.length; j++) {
                var $e = $(els[j]), e = $e[0], w = $e.outerWidth(), h = $e.outerHeight();
                if (!w) w = e.offsetWidth;
                if (!h) h = e.offsetHeight;
                maxw = w > maxw ? w : maxw;
                maxh = h > maxh ? h : maxh;
            }
            if (maxw > 0 && maxh > 0)
                $cont.css({ width: maxw + 'px', height: maxh + 'px' });
        }

        if (opts.pause)
            $cont.hover(function() { this.cyclePause++; }, function() { this.cyclePause--; });

        if (supportMultiTransitions(opts) === false)
            return false;

        // apparently a lot of people use image slideshows without height/width attributes on the images.
        // Cycle 2.50+ requires the sizing info for every slide; this block tries to deal with that.
        var requeue = false;
        options.requeueAttempts = options.requeueAttempts || 0;
        $slides.each(function() {
            // try to get height/width of each slide
            var $el = $(this);
            this.cycleH = (opts.fit && opts.height) ? opts.height : $el.height();
            this.cycleW = (opts.fit && opts.width) ? opts.width : $el.width();

            if ($el.is('img')) {
                // sigh..  sniffing, hacking, shrugging...  this crappy hack tries to account for what browsers do when
                // an image is being downloaded and the markup did not include sizing info (height/width attributes);
                // there seems to be some "default" sizes used in this situation
                var loadingIE = ($.browser.msie && this.cycleW == 28 && this.cycleH == 30 && !this.complete);
                var loadingFF = ($.browser.mozilla && this.cycleW == 34 && this.cycleH == 19 && !this.complete);
                var loadingOp = ($.browser.opera && ((this.cycleW == 42 && this.cycleH == 19) || (this.cycleW == 37 && this.cycleH == 17)) && !this.complete);
                var loadingOther = (this.cycleH == 0 && this.cycleW == 0 && !this.complete);
                // don't requeue for images that are still loading but have a valid size
                if (loadingIE || loadingFF || loadingOp || loadingOther) {
                    if (o.s && opts.requeueOnImageNotLoaded && ++options.requeueAttempts < 100) { // track retry count so we don't loop forever
                        log(options.requeueAttempts, ' - img slide not loaded, requeuing slideshow: ', this.src, this.cycleW, this.cycleH);
                        setTimeout(function() { $(o.s, o.c).cycle(options) }, opts.requeueTimeout);
                        requeue = true;
                        return false; // break each loop
                    }
                    else {
                        log('could not determine size of image: ' + this.src, this.cycleW, this.cycleH);
                    }
                }
            }
            return true;
        });

        if (requeue)
            return false;

        opts.cssBefore = opts.cssBefore || {};
        opts.animIn = opts.animIn || {};
        opts.animOut = opts.animOut || {};

        $slides.not(':eq(' + first + ')').css(opts.cssBefore);
        if (opts.cssFirst)
            $($slides[first]).css(opts.cssFirst);

        if (opts.timeout) {
            opts.timeout = parseInt(opts.timeout);
            // ensure that timeout and speed settings are sane
            if (opts.speed.constructor == String)
                opts.speed = $.fx.speeds[opts.speed] || parseInt(opts.speed);
            if (!opts.sync)
                opts.speed = opts.speed / 2;
            while ((opts.timeout - opts.speed) < 250) // sanitize timeout
                opts.timeout += opts.speed;
        }
        if (opts.easing)
            opts.easeIn = opts.easeOut = opts.easing;
        if (!opts.speedIn)
            opts.speedIn = opts.speed;
        if (!opts.speedOut)
            opts.speedOut = opts.speed;

        opts.slideCount = els.length;
        opts.currSlide = opts.lastSlide = first;
        if (opts.random) {
            opts.nextSlide = opts.currSlide;
            if (++opts.randomIndex == els.length)
                opts.randomIndex = 0;
            opts.nextSlide = opts.randomMap[opts.randomIndex];
        }
        else
            opts.nextSlide = opts.startingSlide >= (els.length - 1) ? 0 : opts.startingSlide + 1;

        // run transition init fn
        if (!opts.multiFx) {
            var init = $.fn.cycle.transitions[opts.fx];
            if ($.isFunction(init))
                init($cont, $slides, opts);
            else if (opts.fx != 'custom' && !opts.multiFx) {
                log('unknown transition: ' + opts.fx, '; slideshow terminating');
                return false;
            }
        }

        // fire artificial events
        var e0 = $slides[first];
        if (opts.before.length)
            opts.before[0].apply(e0, [e0, e0, opts, true]);
        if (opts.after.length > 1)
            opts.after[1].apply(e0, [e0, e0, opts, true]);

        if (opts.next)
            $(opts.next).bind(opts.prevNextEvent, function() { return advance(opts, opts.rev ? -1 : 1) });
        if (opts.prev)
            $(opts.prev).bind(opts.prevNextEvent, function() { return advance(opts, opts.rev ? 1 : -1) });
        if (opts.pager)
            buildPager(els, opts);

        exposeAddSlide(opts, els);

        return opts;
    };

    // save off original opts so we can restore after clearing state
    function saveOriginalOpts(opts) {
        opts.original = { before: [], after: [] };
        opts.original.cssBefore = $.extend({}, opts.cssBefore);
        opts.original.cssAfter = $.extend({}, opts.cssAfter);
        opts.original.animIn = $.extend({}, opts.animIn);
        opts.original.animOut = $.extend({}, opts.animOut);
        $.each(opts.before, function() { opts.original.before.push(this); });
        $.each(opts.after, function() { opts.original.after.push(this); });
    };

    function supportMultiTransitions(opts) {
        var i, tx, txs = $.fn.cycle.transitions;
        // look for multiple effects
        if (opts.fx.indexOf(',') > 0) {
            opts.multiFx = true;
            opts.fxs = opts.fx.replace(/\s*/g, '').split(',');
            // discard any bogus effect names
            for (i = 0; i < opts.fxs.length; i++) {
                var fx = opts.fxs[i];
                tx = txs[fx];
                if (!tx || !txs.hasOwnProperty(fx) || !$.isFunction(tx)) {
                    log('discarding unknown transition: ', fx);
                    opts.fxs.splice(i, 1);
                    i--;
                }
            }
            // if we have an empty list then we threw everything away!
            if (!opts.fxs.length) {
                log('No valid transitions named; slideshow terminating.');
                return false;
            }
        }
        else if (opts.fx == 'all') {  // auto-gen the list of transitions
            opts.multiFx = true;
            opts.fxs = [];
            for (p in txs) {
                tx = txs[p];
                if (txs.hasOwnProperty(p) && $.isFunction(tx))
                    opts.fxs.push(p);
            }
        }
        if (opts.multiFx && opts.randomizeEffects) {
            // munge the fxs array to make effect selection random
            var r1 = Math.floor(Math.random() * 20) + 30;
            for (i = 0; i < r1; i++) {
                var r2 = Math.floor(Math.random() * opts.fxs.length);
                opts.fxs.push(opts.fxs.splice(r2, 1)[0]);
            }
            debug('randomized fx sequence: ', opts.fxs);
        }
        return true;
    };

    // provide a mechanism for adding slides after the slideshow has started
    function exposeAddSlide(opts, els) {
        opts.addSlide = function(newSlide, prepend) {
            var $s = $(newSlide), s = $s[0];
            if (!opts.autostopCount)
                opts.countdown++;
            els[prepend ? 'unshift' : 'push'](s);
            if (opts.els)
                opts.els[prepend ? 'unshift' : 'push'](s); // shuffle needs this
            opts.slideCount = els.length;

            $s.css('position', 'absolute');
            $s[prepend ? 'prependTo' : 'appendTo'](opts.$cont);

            if (prepend) {
                opts.currSlide++;
                opts.nextSlide++;
            }

            if (!$.support.opacity && opts.cleartype && !opts.cleartypeNoBg)
                clearTypeFix($s);

            if (opts.fit && opts.width)
                $s.width(opts.width);
            if (opts.fit && opts.height && opts.height != 'auto')
                $slides.height(opts.height);
            s.cycleH = (opts.fit && opts.height) ? opts.height : $s.height();
            s.cycleW = (opts.fit && opts.width) ? opts.width : $s.width();

            $s.css(opts.cssBefore);

            if (opts.pager)
                $.fn.cycle.createPagerAnchor(els.length - 1, s, $(opts.pager), els, opts);

            if ($.isFunction(opts.onAddSlide))
                opts.onAddSlide($s);
            else
                $s.hide(); // default behavior
        };
    }

    // reset internal state; we do this on every pass in order to support multiple effects
    $.fn.cycle.resetState = function(opts, fx) {
        fx = fx || opts.fx;
        opts.before = []; opts.after = [];
        opts.cssBefore = $.extend({}, opts.original.cssBefore);
        opts.cssAfter = $.extend({}, opts.original.cssAfter);
        opts.animIn = $.extend({}, opts.original.animIn);
        opts.animOut = $.extend({}, opts.original.animOut);
        opts.fxFn = null;
        $.each(opts.original.before, function() { opts.before.push(this); });
        $.each(opts.original.after, function() { opts.after.push(this); });

        // re-init
        var init = $.fn.cycle.transitions[fx];
        if ($.isFunction(init))
            init(opts.$cont, $(opts.elements), opts);
    };

    // this is the main engine fn, it handles the timeouts, callbacks and slide index mgmt
    function go(els, opts, manual, fwd) {
        // opts.busy is true if we're in the middle of an animation
        if (manual && opts.busy && opts.manualTrump) {
            // let manual transitions requests trump active ones
            $(els).stop(true, true);
            opts.busy = false;
        }
        // don't begin another timeout-based transition if there is one active
        if (opts.busy)
            return;

        var p = opts.$cont[0], curr = els[opts.currSlide], next = els[opts.nextSlide];

        // stop cycling if we have an outstanding stop request
        if (p.cycleStop != opts.stopCount || p.cycleTimeout === 0 && !manual)
            return;

        // check to see if we should stop cycling based on autostop options
        if (!manual && !p.cyclePause &&
		((opts.autostop && (--opts.countdown <= 0)) ||
		(opts.nowrap && !opts.random && opts.nextSlide < opts.currSlide))) {
            if (opts.end)
                opts.end(opts);
            return;
        }

        // if slideshow is paused, only transition on a manual trigger
        if (manual || !p.cyclePause) {
            var fx = opts.fx;
            // keep trying to get the slide size if we don't have it yet
            curr.cycleH = curr.cycleH || $(curr).height();
            curr.cycleW = curr.cycleW || $(curr).width();
            next.cycleH = next.cycleH || $(next).height();
            next.cycleW = next.cycleW || $(next).width();

            // support multiple transition types
            if (opts.multiFx) {
                if (opts.lastFx == undefined || ++opts.lastFx >= opts.fxs.length)
                    opts.lastFx = 0;
                fx = opts.fxs[opts.lastFx];
                opts.currFx = fx;
            }

            // one-time fx overrides apply to:  $('div').cycle(3,'zoom');
            if (opts.oneTimeFx) {
                fx = opts.oneTimeFx;
                opts.oneTimeFx = null;
            }

            $.fn.cycle.resetState(opts, fx);

            // run the before callbacks
            if (opts.before.length)
                $.each(opts.before, function(i, o) {
                    if (p.cycleStop != opts.stopCount) return;
                    o.apply(next, [curr, next, opts, fwd]);
                });

            // stage the after callacks
            var after = function() {
                $.each(opts.after, function(i, o) {
                    if (p.cycleStop != opts.stopCount) return;
                    o.apply(next, [curr, next, opts, fwd]);
                });
            };

            if (opts.nextSlide != opts.currSlide) {
                // get ready to perform the transition
                opts.busy = 1;
                if (opts.fxFn) // fx function provided?
                    opts.fxFn(curr, next, opts, after, fwd);
                else if ($.isFunction($.fn.cycle[opts.fx])) // fx plugin ?
                    $.fn.cycle[opts.fx](curr, next, opts, after);
                else
                    $.fn.cycle.custom(curr, next, opts, after, manual && opts.fastOnEvent);
            }

            // calculate the next slide
            opts.lastSlide = opts.currSlide;
            if (opts.random) {
                opts.currSlide = opts.nextSlide;
                if (++opts.randomIndex == els.length)
                    opts.randomIndex = 0;
                opts.nextSlide = opts.randomMap[opts.randomIndex];
            }
            else { // sequence
                var roll = (opts.nextSlide + 1) == els.length;
                opts.nextSlide = roll ? 0 : opts.nextSlide + 1;
                opts.currSlide = roll ? els.length - 1 : opts.nextSlide - 1;
            }

            if (opts.pager)
                $.fn.cycle.updateActivePagerLink(opts.pager, opts.currSlide);
        }

        // stage the next transtion
        var ms = 0;
        if (opts.timeout && !opts.continuous)
            ms = getTimeout(curr, next, opts, fwd);
        else if (opts.continuous && p.cyclePause) // continuous shows work off an after callback, not this timer logic
            ms = 10;
        if (ms > 0)
            p.cycleTimeout = setTimeout(function() { go(els, opts, 0, !opts.rev) }, ms);
    };

    // invoked after transition
    $.fn.cycle.updateActivePagerLink = function(pager, currSlide) {
        $(pager).find('a').removeClass('activeSlide').filter('a:eq(' + currSlide + ')').addClass('activeSlide');
    };

    // calculate timeout value for current transition
    function getTimeout(curr, next, opts, fwd) {
        if (opts.timeoutFn) {
            // call user provided calc fn
            var t = opts.timeoutFn(curr, next, opts, fwd);
            while ((t - opts.speed) < 250) // sanitize timeout
                t += opts.speed;
            debug('calculated timeout: ' + t + '; speed: ' + opts.speed);
            if (t !== false)
                return t;
        }
        return opts.timeout;
    };

    // expose next/prev function, caller must pass in state
    $.fn.cycle.next = function(opts) { advance(opts, opts.rev ? -1 : 1); };
    $.fn.cycle.prev = function(opts) { advance(opts, opts.rev ? 1 : -1); };

    // advance slide forward or back
    function advance(opts, val) {
        var els = opts.elements;
        var p = opts.$cont[0], timeout = p.cycleTimeout;
        if (timeout) {
            clearTimeout(timeout);
            p.cycleTimeout = 0;
        }
        if (opts.random && val < 0) {
            // move back to the previously display slide
            opts.randomIndex--;
            if (--opts.randomIndex == -2)
                opts.randomIndex = els.length - 2;
            else if (opts.randomIndex == -1)
                opts.randomIndex = els.length - 1;
            opts.nextSlide = opts.randomMap[opts.randomIndex];
        }
        else if (opts.random) {
            if (++opts.randomIndex == els.length)
                opts.randomIndex = 0;
            opts.nextSlide = opts.randomMap[opts.randomIndex];
        }
        else {
            opts.nextSlide = opts.currSlide + val;
            if (opts.nextSlide < 0) {
                if (opts.nowrap) return false;
                opts.nextSlide = els.length - 1;
            }
            else if (opts.nextSlide >= els.length) {
                if (opts.nowrap) return false;
                opts.nextSlide = 0;
            }
        }

        if ($.isFunction(opts.prevNextClick))
            opts.prevNextClick(val > 0, opts.nextSlide, els[opts.nextSlide]);
        go(els, opts, 1, val >= 0);
        return false;
    };

    function buildPager(els, opts) {
        var $p = $(opts.pager);
        $.each(els, function(i, o) {
            $.fn.cycle.createPagerAnchor(i, o, $p, els, opts);
        });
        $.fn.cycle.updateActivePagerLink(opts.pager, opts.startingSlide);
    };

    $.fn.cycle.createPagerAnchor = function(i, el, $p, els, opts) {
        var a;
        if ($.isFunction(opts.pagerAnchorBuilder))
            a = opts.pagerAnchorBuilder(i, el);
        else
            a = '<a href="#">' + (i + 1) + '</a>';

        if (!a)
            return;
        var $a = $(a);
        // don't reparent if anchor is in the dom
        if ($a.parents('body').length === 0) {
            var arr = [];
            if ($p.length > 1) {
                $p.each(function() {
                    var $clone = $a.clone(true);
                    $(this).append($clone);
                    arr.push($clone);
                });
                $a = $(arr);
            }
            else {
                $a.appendTo($p);
            }
        }

        $a.bind(opts.pagerEvent, function(e) {
            e.preventDefault();
            opts.nextSlide = i;
            var p = opts.$cont[0], timeout = p.cycleTimeout;
            if (timeout) {
                clearTimeout(timeout);
                p.cycleTimeout = 0;
            }
            if ($.isFunction(opts.pagerClick))
                opts.pagerClick(opts.nextSlide, els[opts.nextSlide]);
            go(els, opts, 1, opts.currSlide < i); // trigger the trans
            return false;
        });

        if (opts.pagerEvent != 'click')
            $a.click(function() { return false; }); // supress click

        if (opts.pauseOnPagerHover)
            $a.hover(function() { opts.$cont[0].cyclePause++; }, function() { opts.$cont[0].cyclePause--; });
    };

    // helper fn to calculate the number of slides between the current and the next
    $.fn.cycle.hopsFromLast = function(opts, fwd) {
        var hops, l = opts.lastSlide, c = opts.currSlide;
        if (fwd)
            hops = c > l ? c - l : opts.slideCount - l;
        else
            hops = c < l ? l - c : l + opts.slideCount - c;
        return hops;
    };

    // fix clearType problems in ie6 by setting an explicit bg color
    // (otherwise text slides look horrible during a fade transition)
    function clearTypeFix($slides) {
        function hex(s) {
            s = parseInt(s).toString(16);
            return s.length < 2 ? '0' + s : s;
        };
        function getBg(e) {
            for (; e && e.nodeName.toLowerCase() != 'html'; e = e.parentNode) {
                var v = $.css(e, 'background-color');
                if (v.indexOf('rgb') >= 0) {
                    var rgb = v.match(/\d+/g);
                    return '#' + hex(rgb[0]) + hex(rgb[1]) + hex(rgb[2]);
                }
                if (v && v != 'transparent')
                    return v;
            }
            return '#ffffff';
        };
        $slides.each(function() { $(this).css('background-color', getBg(this)); });
    };

    // reset common props before the next transition
    $.fn.cycle.commonReset = function(curr, next, opts, w, h, rev) {
        $(opts.elements).not(curr).hide();
        opts.cssBefore.opacity = 1;
        opts.cssBefore.display = 'block';
        if (w !== false && next.cycleW > 0)
            opts.cssBefore.width = next.cycleW;
        if (h !== false && next.cycleH > 0)
            opts.cssBefore.height = next.cycleH;
        opts.cssAfter = opts.cssAfter || {};
        opts.cssAfter.display = 'none';
        $(curr).css('zIndex', opts.slideCount + (rev === true ? 1 : 0));
        $(next).css('zIndex', opts.slideCount + (rev === true ? 0 : 1));
    };

    // the actual fn for effecting a transition
    $.fn.cycle.custom = function(curr, next, opts, cb, speedOverride) {
        var $l = $(curr), $n = $(next);
        var speedIn = opts.speedIn, speedOut = opts.speedOut, easeIn = opts.easeIn, easeOut = opts.easeOut;
        $n.css(opts.cssBefore);
        if (speedOverride) {
            if (typeof speedOverride == 'number')
                speedIn = speedOut = speedOverride;
            else
                speedIn = speedOut = 1;
            easeIn = easeOut = null;
        }
        var fn = function() { $n.animate(opts.animIn, speedIn, easeIn, cb) };
        $l.animate(opts.animOut, speedOut, easeOut, function() {
            if (opts.cssAfter) $l.css(opts.cssAfter);
            if (!opts.sync) fn();
        });
        if (opts.sync) fn();
    };

    // transition definitions - only fade is defined here, transition pack defines the rest
    $.fn.cycle.transitions = {
        fade: function($cont, $slides, opts) {
            $slides.not(':eq(' + opts.currSlide + ')').css('opacity', 0);
            opts.before.push(function(curr, next, opts) {
                $.fn.cycle.commonReset(curr, next, opts);
                opts.cssBefore.opacity = 0;
            });
            opts.animIn = { opacity: 1 };
            opts.animOut = { opacity: 0 };
            opts.cssBefore = { top: 0, left: 0 };
        }
    };

    $.fn.cycle.ver = function() { return ver; };

    // override these globally if you like (they are all optional)
    $.fn.cycle.defaults = {
        fx: 'fade', // name of transition effect (or comma separated names, ex: fade,scrollUp,shuffle)
        timeout: 4000,  // milliseconds between slide transitions (0 to disable auto advance)
        timeoutFn: null,  // callback for determining per-slide timeout value:  function(currSlideElement, nextSlideElement, options, forwardFlag)
        continuous: 0,   // true to start next transition immediately after current one completes
        speed: 1000,  // speed of the transition (any valid fx speed value)
        speedIn: null,  // speed of the 'in' transition
        speedOut: null,  // speed of the 'out' transition
        next: null,  // selector for element to use as click trigger for next slide
        prev: null,  // selector for element to use as click trigger for previous slide
        prevNextClick: null,  // callback fn for prev/next clicks:	function(isNext, zeroBasedSlideIndex, slideElement)
        prevNextEvent: 'click', // event which drives the manual transition to the previous or next slide
        pager: null,  // selector for element to use as pager container
        pagerClick: null,  // callback fn for pager clicks:	function(zeroBasedSlideIndex, slideElement)
        pagerEvent: 'click', // name of event which drives the pager navigation
        pagerAnchorBuilder: null, // callback fn for building anchor links:  function(index, DOMelement)
        before: null,  // transition callback (scope set to element to be shown):	 function(currSlideElement, nextSlideElement, options, forwardFlag)
        after: null,  // transition callback (scope set to element that was shown):  function(currSlideElement, nextSlideElement, options, forwardFlag)
        end: null,  // callback invoked when the slideshow terminates (use with autostop or nowrap options): function(options)
        easing: null,  // easing method for both in and out transitions
        easeIn: null,  // easing for "in" transition
        easeOut: null,  // easing for "out" transition
        shuffle: null,  // coords for shuffle animation, ex: { top:15, left: 200 }
        animIn: null,  // properties that define how the slide animates in
        animOut: null,  // properties that define how the slide animates out
        cssBefore: null,  // properties that define the initial state of the slide before transitioning in
        cssAfter: null,  // properties that defined the state of the slide after transitioning out
        fxFn: null,  // function used to control the transition: function(currSlideElement, nextSlideElement, options, afterCalback, forwardFlag)
        height: 'auto', // container height
        startingSlide: 0,   // zero-based index of the first slide to be displayed
        sync: 1,   // true if in/out transitions should occur simultaneously
        random: 0,   // true for random, false for sequence (not applicable to shuffle fx)
        fit: 0,   // force slides to fit container
        containerResize: 1,   // resize container to fit largest slide
        pause: 0,   // true to enable "pause on hover"
        pauseOnPagerHover: 0, // true to pause when hovering over pager link
        autostop: 0,   // true to end slideshow after X transitions (where X == slide count)
        autostopCount: 0,   // number of transitions (optionally used with autostop to define X)
        delay: 0,   // additional delay (in ms) for first transition (hint: can be negative)
        slideExpr: null,  // expression for selecting slides (if something other than all children is required)
        cleartype: !$.support.opacity,  // true if clearType corrections should be applied (for IE)
        cleartypeNoBg: false, // set to true to disable extra cleartype fixing (leave false to force background color setting on slides)
        nowrap: 0,   // true to prevent slideshow from wrapping
        fastOnEvent: 0,   // force fast transitions when triggered manually (via pager or prev/next); value == time in ms
        randomizeEffects: 1,  // valid when multiple effects are used; true to make the effect sequence random
        rev: 0,  // causes animations to transition in reverse
        manualTrump: true,  // causes manual transition to stop an active transition instead of being ignored
        requeueOnImageNotLoaded: true, // requeue the slideshow if any image slides are not yet loaded
        requeueTimeout: 250   // ms delay for requeue
    };

})(jQuery);


/*!
* jQuery Cycle Plugin Transition Definitions
* This script is a plugin for the jQuery Cycle Plugin
* Examples and documentation at: http://malsup.com/jquery/cycle/
* Copyright (c) 2007-2008 M. Alsup
* Version:	 2.72
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*/
(function($) {

    //
    // These functions define one-time slide initialization for the named
    // transitions. To save file size feel free to remove any of these that you
    // don't need.
    //
    $.fn.cycle.transitions.none = function($cont, $slides, opts) {
        opts.fxFn = function(curr, next, opts, after) {
            $(next).show();
            $(curr).hide();
            after();
        };
    }

    // scrollUp/Down/Left/Right
    $.fn.cycle.transitions.scrollUp = function($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var h = $cont.height();
        opts.cssBefore = { top: h, left: 0 };
        opts.cssFirst = { top: 0 };
        opts.animIn = { top: 0 };
        opts.animOut = { top: -h };
    };
    $.fn.cycle.transitions.scrollDown = function($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var h = $cont.height();
        opts.cssFirst = { top: 0 };
        opts.cssBefore = { top: -h, left: 0 };
        opts.animIn = { top: 0 };
        opts.animOut = { top: h };
    };
    $.fn.cycle.transitions.scrollLeft = function($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var w = $cont.width();
        opts.cssFirst = { left: 0 };
        opts.cssBefore = { left: w, top: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { left: 0 - w };
    };
    $.fn.cycle.transitions.scrollRight = function($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push($.fn.cycle.commonReset);
        var w = $cont.width();
        opts.cssFirst = { left: 0 };
        opts.cssBefore = { left: -w, top: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { left: w };
    };
    $.fn.cycle.transitions.scrollHorz = function($cont, $slides, opts) {
        $cont.css('overflow', 'hidden').width();
        opts.before.push(function(curr, next, opts, fwd) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.cssBefore.left = fwd ? (next.cycleW - 1) : (1 - next.cycleW);
            opts.animOut.left = fwd ? -curr.cycleW : curr.cycleW;
        });
        opts.cssFirst = { left: 0 };
        opts.cssBefore = { top: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { top: 0 };
    };
    $.fn.cycle.transitions.scrollVert = function($cont, $slides, opts) {
        $cont.css('overflow', 'hidden');
        opts.before.push(function(curr, next, opts, fwd) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.cssBefore.top = fwd ? (1 - next.cycleH) : (next.cycleH - 1);
            opts.animOut.top = fwd ? curr.cycleH : -curr.cycleH;
        });
        opts.cssFirst = { top: 0 };
        opts.cssBefore = { left: 0 };
        opts.animIn = { top: 0 };
        opts.animOut = { left: 0 };
    };

    // slideX/slideY
    $.fn.cycle.transitions.slideX = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $(opts.elements).not(curr).hide();
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.animIn.width = next.cycleW;
        });
        opts.cssBefore = { left: 0, top: 0, width: 0 };
        opts.animIn = { width: 'show' };
        opts.animOut = { width: 0 };
    };
    $.fn.cycle.transitions.slideY = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $(opts.elements).not(curr).hide();
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.animIn.height = next.cycleH;
        });
        opts.cssBefore = { left: 0, top: 0, height: 0 };
        opts.animIn = { height: 'show' };
        opts.animOut = { height: 0 };
    };

    // shuffle
    $.fn.cycle.transitions.shuffle = function($cont, $slides, opts) {
        var i, w = $cont.css('overflow', 'visible').width();
        $slides.css({ left: 0, top: 0 });
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, true, true);
        });
        // only adjust speed once!
        if (!opts.speedAdjusted) {
            opts.speed = opts.speed / 2; // shuffle has 2 transitions
            opts.speedAdjusted = true;
        }
        opts.random = 0;
        opts.shuffle = opts.shuffle || { left: -w, top: 15 };
        opts.els = [];
        for (i = 0; i < $slides.length; i++)
            opts.els.push($slides[i]);

        for (i = 0; i < opts.currSlide; i++)
            opts.els.push(opts.els.shift());

        // custom transition fn (hat tip to Benjamin Sterling for this bit of sweetness!)
        opts.fxFn = function(curr, next, opts, cb, fwd) {
            var $el = fwd ? $(curr) : $(next);
            $(next).css(opts.cssBefore);
            var count = opts.slideCount;
            $el.animate(opts.shuffle, opts.speedIn, opts.easeIn, function() {
                var hops = $.fn.cycle.hopsFromLast(opts, fwd);
                for (var k = 0; k < hops; k++)
                    fwd ? opts.els.push(opts.els.shift()) : opts.els.unshift(opts.els.pop());
                if (fwd) {
                    for (var i = 0, len = opts.els.length; i < len; i++)
                        $(opts.els[i]).css('z-index', len - i + count);
                }
                else {
                    var z = $(curr).css('z-index');
                    $el.css('z-index', parseInt(z) + 1 + count);
                }
                $el.animate({ left: 0, top: 0 }, opts.speedOut, opts.easeOut, function() {
                    $(fwd ? this : curr).hide();
                    if (cb) cb();
                });
            });
        };
        opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
    };

    // turnUp/Down/Left/Right
    $.fn.cycle.transitions.turnUp = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.cssBefore.top = next.cycleH;
            opts.animIn.height = next.cycleH;
        });
        opts.cssFirst = { top: 0 };
        opts.cssBefore = { left: 0, height: 0 };
        opts.animIn = { top: 0 };
        opts.animOut = { height: 0 };
    };
    $.fn.cycle.transitions.turnDown = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH;
        });
        opts.cssFirst = { top: 0 };
        opts.cssBefore = { left: 0, top: 0, height: 0 };
        opts.animOut = { height: 0 };
    };
    $.fn.cycle.transitions.turnLeft = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.cssBefore.left = next.cycleW;
            opts.animIn.width = next.cycleW;
        });
        opts.cssBefore = { top: 0, width: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { width: 0 };
    };
    $.fn.cycle.transitions.turnRight = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.animIn.width = next.cycleW;
            opts.animOut.left = curr.cycleW;
        });
        opts.cssBefore = { top: 0, left: 0, width: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { width: 0 };
    };

    // zoom
    $.fn.cycle.transitions.zoom = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, false, true);
            opts.cssBefore.top = next.cycleH / 2;
            opts.cssBefore.left = next.cycleW / 2;
            opts.animIn = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
            opts.animOut = { width: 0, height: 0, top: curr.cycleH / 2, left: curr.cycleW / 2 };
        });
        opts.cssFirst = { top: 0, left: 0 };
        opts.cssBefore = { width: 0, height: 0 };
    };

    // fadeZoom
    $.fn.cycle.transitions.fadeZoom = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, false);
            opts.cssBefore.left = next.cycleW / 2;
            opts.cssBefore.top = next.cycleH / 2;
            opts.animIn = { top: 0, left: 0, width: next.cycleW, height: next.cycleH };
        });
        opts.cssBefore = { width: 0, height: 0 };
        opts.animOut = { opacity: 0 };
    };

    // blindX
    $.fn.cycle.transitions.blindX = function($cont, $slides, opts) {
        var w = $cont.css('overflow', 'hidden').width();
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.animIn.width = next.cycleW;
            opts.animOut.left = curr.cycleW;
        });
        opts.cssBefore = { left: w, top: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { left: w };
    };
    // blindY
    $.fn.cycle.transitions.blindY = function($cont, $slides, opts) {
        var h = $cont.css('overflow', 'hidden').height();
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH;
        });
        opts.cssBefore = { top: h, left: 0 };
        opts.animIn = { top: 0 };
        opts.animOut = { top: h };
    };
    // blindZ
    $.fn.cycle.transitions.blindZ = function($cont, $slides, opts) {
        var h = $cont.css('overflow', 'hidden').height();
        var w = $cont.width();
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            opts.animIn.height = next.cycleH;
            opts.animOut.top = curr.cycleH;
        });
        opts.cssBefore = { top: h, left: w };
        opts.animIn = { top: 0, left: 0 };
        opts.animOut = { top: h, left: w };
    };

    // growX - grow horizontally from centered 0 width
    $.fn.cycle.transitions.growX = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true);
            opts.cssBefore.left = this.cycleW / 2;
            opts.animIn = { left: 0, width: this.cycleW };
            opts.animOut = { left: 0 };
        });
        opts.cssBefore = { width: 0, top: 0 };
    };
    // growY - grow vertically from centered 0 height
    $.fn.cycle.transitions.growY = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false);
            opts.cssBefore.top = this.cycleH / 2;
            opts.animIn = { top: 0, height: this.cycleH };
            opts.animOut = { top: 0 };
        });
        opts.cssBefore = { height: 0, left: 0 };
    };

    // curtainX - squeeze in both edges horizontally
    $.fn.cycle.transitions.curtainX = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, false, true, true);
            opts.cssBefore.left = next.cycleW / 2;
            opts.animIn = { left: 0, width: this.cycleW };
            opts.animOut = { left: curr.cycleW / 2, width: 0 };
        });
        opts.cssBefore = { top: 0, width: 0 };
    };
    // curtainY - squeeze in both edges vertically
    $.fn.cycle.transitions.curtainY = function($cont, $slides, opts) {
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, false, true);
            opts.cssBefore.top = next.cycleH / 2;
            opts.animIn = { top: 0, height: next.cycleH };
            opts.animOut = { top: curr.cycleH / 2, height: 0 };
        });
        opts.cssBefore = { left: 0, height: 0 };
    };

    // cover - curr slide covered by next slide
    $.fn.cycle.transitions.cover = function($cont, $slides, opts) {
        var d = opts.direction || 'left';
        var w = $cont.css('overflow', 'hidden').width();
        var h = $cont.height();
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts);
            if (d == 'right')
                opts.cssBefore.left = -w;
            else if (d == 'up')
                opts.cssBefore.top = h;
            else if (d == 'down')
                opts.cssBefore.top = -h;
            else
                opts.cssBefore.left = w;
        });
        opts.animIn = { left: 0, top: 0 };
        opts.animOut = { opacity: 1 };
        opts.cssBefore = { top: 0, left: 0 };
    };

    // uncover - curr slide moves off next slide
    $.fn.cycle.transitions.uncover = function($cont, $slides, opts) {
        var d = opts.direction || 'left';
        var w = $cont.css('overflow', 'hidden').width();
        var h = $cont.height();
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, true, true);
            if (d == 'right')
                opts.animOut.left = w;
            else if (d == 'up')
                opts.animOut.top = -h;
            else if (d == 'down')
                opts.animOut.top = h;
            else
                opts.animOut.left = -w;
        });
        opts.animIn = { left: 0, top: 0 };
        opts.animOut = { opacity: 1 };
        opts.cssBefore = { top: 0, left: 0 };
    };

    // toss - move top slide and fade away
    $.fn.cycle.transitions.toss = function($cont, $slides, opts) {
        var w = $cont.css('overflow', 'visible').width();
        var h = $cont.height();
        opts.before.push(function(curr, next, opts) {
            $.fn.cycle.commonReset(curr, next, opts, true, true, true);
            // provide default toss settings if animOut not provided
            if (!opts.animOut.left && !opts.animOut.top)
                opts.animOut = { left: w * 2, top: -h / 2, opacity: 0 };
            else
                opts.animOut.opacity = 0;
        });
        opts.cssBefore = { left: 0, top: 0 };
        opts.animIn = { left: 0 };
    };

    // wipe - clip animation
    $.fn.cycle.transitions.wipe = function($cont, $slides, opts) {
        var w = $cont.css('overflow', 'hidden').width();
        var h = $cont.height();
        opts.cssBefore = opts.cssBefore || {};
        var clip;
        if (opts.clip) {
            if (/l2r/.test(opts.clip))
                clip = 'rect(0px 0px ' + h + 'px 0px)';
            else if (/r2l/.test(opts.clip))
                clip = 'rect(0px ' + w + 'px ' + h + 'px ' + w + 'px)';
            else if (/t2b/.test(opts.clip))
                clip = 'rect(0px ' + w + 'px 0px 0px)';
            else if (/b2t/.test(opts.clip))
                clip = 'rect(' + h + 'px ' + w + 'px ' + h + 'px 0px)';
            else if (/zoom/.test(opts.clip)) {
                var top = parseInt(h / 2);
                var left = parseInt(w / 2);
                clip = 'rect(' + top + 'px ' + left + 'px ' + top + 'px ' + left + 'px)';
            }
        }

        opts.cssBefore.clip = opts.cssBefore.clip || clip || 'rect(0px 0px 0px 0px)';

        var d = opts.cssBefore.clip.match(/(\d+)/g);
        var t = parseInt(d[0]), r = parseInt(d[1]), b = parseInt(d[2]), l = parseInt(d[3]);

        opts.before.push(function(curr, next, opts) {
            if (curr == next) return;
            var $curr = $(curr), $next = $(next);
            $.fn.cycle.commonReset(curr, next, opts, true, true, false);
            opts.cssAfter.display = 'block';

            var step = 1, count = parseInt((opts.speedIn / 13)) - 1;
            (function f() {
                var tt = t ? t - parseInt(step * (t / count)) : 0;
                var ll = l ? l - parseInt(step * (l / count)) : 0;
                var bb = b < h ? b + parseInt(step * ((h - b) / count || 1)) : h;
                var rr = r < w ? r + parseInt(step * ((w - r) / count || 1)) : w;
                $next.css({ clip: 'rect(' + tt + 'px ' + rr + 'px ' + bb + 'px ' + ll + 'px)' });
                (step++ <= count) ? setTimeout(f, 13) : $curr.css('display', 'none');
            })();
        });
        opts.cssBefore = { display: 'block', opacity: 1, top: 0, left: 0 };
        opts.animIn = { left: 0 };
        opts.animOut = { left: 0 };
    };

})(jQuery);


//// ****** jquery.cycle.all.2.72.js Ends  ************************************************************************ ////

//// ****** jquery.easing.1.3.js Starts  ************************************************************************ ////

/*
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/
*
* Uses the built in easing capabilities added In jQuery 1.1
* to offer multiple easing options
*
* TERMS OF USE - jQuery Easing
* 
* Open source under the BSD License. 
* 
* Copyright © 2008 George McGinley Smith
* All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without modification, 
* are permitted provided that the following conditions are met:
* 
* Redistributions of source code must retain the above copyright notice, this list of 
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list 
* of conditions and the following disclaimer in the documentation and/or other materials 
* provided with the distribution.
* 
* Neither the name of the author nor the names of contributors may be used to endorse 
* or promote products derived from this software without specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
*  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
*  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
* OF THE POSSIBILITY OF SUCH DAMAGE. 
*
*/

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend(jQuery.easing,
{
    def: 'easeOutQuad',
    swing: function(x, t, b, c, d) {
        //alert(jQuery.easing.default);
        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
    },
    easeInQuad: function(x, t, b, c, d) {
        return c * (t /= d) * t + b;
    },
    easeOutQuad: function(x, t, b, c, d) {
        return -c * (t /= d) * (t - 2) + b;
    },
    easeInOutQuad: function(x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t + b;
        return -c / 2 * ((--t) * (t - 2) - 1) + b;
    },
    easeInCubic: function(x, t, b, c, d) {
        return c * (t /= d) * t * t + b;
    },
    easeOutCubic: function(x, t, b, c, d) {
        return c * ((t = t / d - 1) * t * t + 1) + b;
    },
    easeInOutCubic: function(x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t * t + b;
        return c / 2 * ((t -= 2) * t * t + 2) + b;
    },
    easeInQuart: function(x, t, b, c, d) {
        return c * (t /= d) * t * t * t + b;
    },
    easeOutQuart: function(x, t, b, c, d) {
        return -c * ((t = t / d - 1) * t * t * t - 1) + b;
    },
    easeInOutQuart: function(x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t * t * t + b;
        return -c / 2 * ((t -= 2) * t * t * t - 2) + b;
    },
    easeInQuint: function(x, t, b, c, d) {
        return c * (t /= d) * t * t * t * t + b;
    },
    easeOutQuint: function(x, t, b, c, d) {
        return c * ((t = t / d - 1) * t * t * t * t + 1) + b;
    },
    easeInOutQuint: function(x, t, b, c, d) {
        if ((t /= d / 2) < 1) return c / 2 * t * t * t * t * t + b;
        return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;
    },
    easeInSine: function(x, t, b, c, d) {
        return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;
    },
    easeOutSine: function(x, t, b, c, d) {
        return c * Math.sin(t / d * (Math.PI / 2)) + b;
    },
    easeInOutSine: function(x, t, b, c, d) {
        return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;
    },
    easeInExpo: function(x, t, b, c, d) {
        return (t == 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;
    },
    easeOutExpo: function(x, t, b, c, d) {
        return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
    },
    easeInOutExpo: function(x, t, b, c, d) {
        if (t == 0) return b;
        if (t == d) return b + c;
        if ((t /= d / 2) < 1) return c / 2 * Math.pow(2, 10 * (t - 1)) + b;
        return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;
    },
    easeInCirc: function(x, t, b, c, d) {
        return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;
    },
    easeOutCirc: function(x, t, b, c, d) {
        return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;
    },
    easeInOutCirc: function(x, t, b, c, d) {
        if ((t /= d / 2) < 1) return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;
        return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;
    },
    easeInElastic: function(x, t, b, c, d) {
        var s = 1.70158; var p = 0; var a = c;
        if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3;
        if (a < Math.abs(c)) { a = c; var s = p / 4; }
        else var s = p / (2 * Math.PI) * Math.asin(c / a);
        return -(a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
    },
    easeOutElastic: function(x, t, b, c, d) {
        var s = 1.70158; var p = 0; var a = c;
        if (t == 0) return b; if ((t /= d) == 1) return b + c; if (!p) p = d * .3;
        if (a < Math.abs(c)) { a = c; var s = p / 4; }
        else var s = p / (2 * Math.PI) * Math.asin(c / a);
        return a * Math.pow(2, -10 * t) * Math.sin((t * d - s) * (2 * Math.PI) / p) + c + b;
    },
    easeInOutElastic: function(x, t, b, c, d) {
        var s = 1.70158; var p = 0; var a = c;
        if (t == 0) return b; if ((t /= d / 2) == 2) return b + c; if (!p) p = d * (.3 * 1.5);
        if (a < Math.abs(c)) { a = c; var s = p / 4; }
        else var s = p / (2 * Math.PI) * Math.asin(c / a);
        if (t < 1) return -.5 * (a * Math.pow(2, 10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p)) + b;
        return a * Math.pow(2, -10 * (t -= 1)) * Math.sin((t * d - s) * (2 * Math.PI) / p) * .5 + c + b;
    },
    easeInBack: function(x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        return c * (t /= d) * t * ((s + 1) * t - s) + b;
    },
    easeOutBack: function(x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;
    },
    easeInOutBack: function(x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        if ((t /= d / 2) < 1) return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;
        return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;
    },
    easeInBounce: function(x, t, b, c, d) {
        return c - jQuery.easing.easeOutBounce(x, d - t, 0, c, d) + b;
    },
    easeOutBounce: function(x, t, b, c, d) {
        if ((t /= d) < (1 / 2.75)) {
            return c * (7.5625 * t * t) + b;
        } else if (t < (2 / 2.75)) {
            return c * (7.5625 * (t -= (1.5 / 2.75)) * t + .75) + b;
        } else if (t < (2.5 / 2.75)) {
            return c * (7.5625 * (t -= (2.25 / 2.75)) * t + .9375) + b;
        } else {
            return c * (7.5625 * (t -= (2.625 / 2.75)) * t + .984375) + b;
        }
    },
    easeInOutBounce: function(x, t, b, c, d) {
        if (t < d / 2) return jQuery.easing.easeInBounce(x, t * 2, 0, c, d) * .5 + b;
        return jQuery.easing.easeOutBounce(x, t * 2 - d, 0, c, d) * .5 + c * .5 + b;
    }
});

/*
*
* TERMS OF USE - EASING EQUATIONS
* 
* Open source under the BSD License. 
* 
* Copyright © 2001 Robert Penner
* All rights reserved.
* 
* Redistribution and use in source and binary forms, with or without modification, 
* are permitted provided that the following conditions are met:
* 
* Redistributions of source code must retain the above copyright notice, this list of 
* conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list 
* of conditions and the following disclaimer in the documentation and/or other materials 
* provided with the distribution.
* 
* Neither the name of the author nor the names of contributors may be used to endorse 
* or promote products derived from this software without specific prior written permission.
* 
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY 
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
*  COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
*  GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
*  NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED 
* OF THE POSSIBILITY OF SUCH DAMAGE. 
*
*/

//// ****** jquery.easing.1.3.js Ends  ************************************************************************ ////

//// ****** oltpdftracking.js Starts  ************************************************************************ ////

// JavaScript Document

//onClick="pdftracker6();"
///publish/ust_1016/js/pdftracking.js
function pdftracker1() {
    cmSetProduction();
    var CategoryID = "GWM:Mkt:USTRUST";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreateManualPageviewTag('GWM:Mkt:USTRUST;Thinking', 'GWM:Mkt:USTRUST', 'http://www.ustrust.com/publish/ust/pdfs/Let-Your-Conscience-and-an-expert-Be-Your-Guide.pdf', 'http://www.ustrust.com/ust/pages/thinking.aspx');

    var tag_url = "http://fls.doubleclick.net/activityi;src=1359940;type=sdlpb511;cat=ustco356;ord=1;;num=" + Math.floor(Math.random() * 999999) + "?";
    if (document.getElementById("DCLK_FLDiv")) { var flDiv = document.getElementById("DCLK_FLDiv"); }
    else { var flDiv = document.body.appendChild(document.createElement("div")); flDiv.id = "DCLK_FLDiv"; flDiv.style.display = "none"; }
    var DCLK_FLIframe = document.createElement("iframe");
    DCLK_FLIframe.id = "DCLK_FLIframe_" + Math.floor(Math.random() * 999999);
    DCLK_FLIframe.src = tag_url;
    flDiv.appendChild(DCLK_FLIframe);


}
function pdftracker2() {
    cmSetProduction();
    var CategoryID = "GWM:Mkt:USTRUST";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreateManualPageviewTag('GWM:Mkt:USTRUST;Thinking', 'GWM:Mkt:USTRUST', 'http://www.ustrust.com/publish/ust/pdfs/Winter%202010_Underground-Out-of-Mind.pdf', 'http://www.ustrust.com/ust/pages/thinking.aspx');

    var tag_url = "http://fls.doubleclick.net/activityi;src=1359940;type=sdlpb511;cat=ustco651;ord=1;;num=" + Math.floor(Math.random() * 999999) + "?";
    if (document.getElementById("DCLK_FLDiv")) { var flDiv = document.getElementById("DCLK_FLDiv"); }
    else { var flDiv = document.body.appendChild(document.createElement("div")); flDiv.id = "DCLK_FLDiv"; flDiv.style.display = "none"; }
    var DCLK_FLIframe = document.createElement("iframe");
    DCLK_FLIframe.id = "DCLK_FLIframe_" + Math.floor(Math.random() * 999999);
    DCLK_FLIframe.src = tag_url;
    flDiv.appendChild(DCLK_FLIframe);

}
function pdftracker3() {
    cmSetProduction();
    var CategoryID = "GWM:Mkt:USTRUST";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreateManualPageviewTag('GWM:Mkt:USTRUST;Thinking', 'GWM:Mkt:USTRUST', 'http://www.ustrust.com/publish/ust/pdfs/Not_Your_Grandfathers_Trust_Prospects_FINAL.PDF', 'http://www.ustrust.com/ust/pages/thinking.aspx');

    var tag_url = "http://fls.doubleclick.net/activityi;src=1359940;type=sdlpb511;cat=ustco839;ord=1;;num=" + Math.floor(Math.random() * 999999) + "?";
    if (document.getElementById("DCLK_FLDiv")) { var flDiv = document.getElementById("DCLK_FLDiv"); }
    else { var flDiv = document.body.appendChild(document.createElement("div")); flDiv.id = "DCLK_FLDiv"; flDiv.style.display = "none"; }
    var DCLK_FLIframe = document.createElement("iframe");
    DCLK_FLIframe.id = "DCLK_FLIframe_" + Math.floor(Math.random() * 999999);
    DCLK_FLIframe.src = tag_url;
    flDiv.appendChild(DCLK_FLIframe);

}
function pdftracker4() {
    cmSetProduction();
    var CategoryID = "GWM:Mkt:USTRUST";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreateManualPageviewTag('GWM:Mkt:USTRUST;Thinking', 'GWM:Mkt:USTRUST', 'http://www.ustrust.com/publish/ust/pdfs/Rise_of_the_Strategic_Donor_Fall_2009_CA_Standalone_Article_Final.pdf', 'http://www.ustrust.com/ust/pages/thinking.aspx');

    var tag_url = "http://fls.doubleclick.net/activityi;src=1359940;type=sdlpb511;cat=ustco150;ord=1;;num=" + Math.floor(Math.random() * 999999) + "?";
    if (document.getElementById("DCLK_FLDiv")) { var flDiv = document.getElementById("DCLK_FLDiv"); }
    else { var flDiv = document.body.appendChild(document.createElement("div")); flDiv.id = "DCLK_FLDiv"; flDiv.style.display = "none"; }
    var DCLK_FLIframe = document.createElement("iframe");
    DCLK_FLIframe.id = "DCLK_FLIframe_" + Math.floor(Math.random() * 999999);
    DCLK_FLIframe.src = tag_url;
    flDiv.appendChild(DCLK_FLIframe);

}
function pdftracker5() {
    cmSetProduction();
    var CategoryID = "GWM:Mkt:USTRUST";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreateManualPageviewTag('GWM:Mkt:USTRUST;Thinking', 'GWM:Mkt:USTRUST', 'http://www.ustrust.com/publish/ust/pdfs/FINAL_THE_CORP_EXECUTIVE_Case_Study.pdf', 'http://www.ustrust.com/ust/pages/thinking.aspx');

    var tag_url = "http://fls.doubleclick.net/activityi;src=1359940;type=sdlpb511;cat=ustco576;ord=1;;num=" + Math.floor(Math.random() * 999999) + "?";
    if (document.getElementById("DCLK_FLDiv")) { var flDiv = document.getElementById("DCLK_FLDiv"); }
    else { var flDiv = document.body.appendChild(document.createElement("div")); flDiv.id = "DCLK_FLDiv"; flDiv.style.display = "none"; }
    var DCLK_FLIframe = document.createElement("iframe");
    DCLK_FLIframe.id = "DCLK_FLIframe_" + Math.floor(Math.random() * 999999);
    DCLK_FLIframe.src = tag_url;
    flDiv.appendChild(DCLK_FLIframe);


}



function elementtracker1() {
    cmSetProduction();
    var ElementID = "Page 1";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreatePageElement('Page 1', 'GWM:Mkt:USTRUST;Thinking', null, null, null);



}


function elementtracker2() {
    cmSetProduction();
    var ElementID = "Page 2";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreatePageElement('Page 2', 'GWM:Mkt:USTRUST;Thinking', null, null, null);



}

function elementtracker3() {
    cmSetProduction();
    var ElementID = "Page 3";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreatePageElement('Page 3', 'GWM:Mkt:USTRUST;Thinking', null, null, null);



}
function elementtracker4() {
    cmSetProduction();
    var ElementID = "Page 4";
    var PageID = "GWM:Mkt:USTRUST;Thinking";
    cmCreatePageElement('Page 4', 'GWM:Mkt:USTRUST;Thinking', null, null, null);



}


//// ****** oltpdftracking.js Ends  ************************************************************************ ////

//// ****** swfaddress.js Starts  ************************************************************************ ////

/**
* SWFAddress 2.4: Deep linking for Flash and Ajax <http://www.asual.com/swfaddress/>
*
* SWFAddress is (c) 2006-2009 Rostislav Hristov and contributors
* This software is released under the MIT License <http://www.opensource.org/licenses/mit-license.php>
*
*/
if (typeof asual == "undefined") { var asual = {} } if (typeof asual.util == "undefined") { asual.util = {} } asual.util.Browser = new function() { var b = navigator.userAgent.toLowerCase(), a = /webkit/.test(b), e = /opera/.test(b), c = /msie/.test(b) && !/opera/.test(b), d = /mozilla/.test(b) && !/(compatible|webkit)/.test(b), f = parseFloat(c ? b.substr(b.indexOf("msie") + 4) : (b.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [0, "0"])[1]); this.toString = function() { return "[class Browser]" }; this.getVersion = function() { return f }; this.isMSIE = function() { return c }; this.isSafari = function() { return a }; this.isOpera = function() { return e }; this.isMozilla = function() { return d } }; asual.util.Events = new function() { var c = "DOMContentLoaded", j = "onstop", k = window, h = document, b = [], a = asual.util, e = a.Browser, d = e.isMSIE(), g = e.isSafari(); this.toString = function() { return "[class Events]" }; this.addListener = function(n, l, m) { b.push({ o: n, t: l, l: m }); if (!(l == c && (d || g))) { if (n.addEventListener) { n.addEventListener(l, m, false) } else { if (n.attachEvent) { n.attachEvent("on" + l, m) } } } }; this.removeListener = function(p, m, n) { for (var l = 0, o; o = b[l]; l++) { if (o.o == p && o.t == m && o.l == n) { b.splice(l, 1); break } } if (!(m == c && (d || g))) { if (p.removeEventListener) { p.removeEventListener(m, n, false) } else { if (p.detachEvent) { p.detachEvent("on" + m, n) } } } }; var i = function() { for (var m = 0, l; l = b[m]; m++) { if (l.t != c) { a.Events.removeListener(l.o, l.t, l.l) } } }; var f = function() { if (h.readyState == "interactive") { function l() { h.detachEvent(j, l); i() } h.attachEvent(j, l); k.setTimeout(function() { h.detachEvent(j, l) }, 0) } }; if (d || g) { (function() { try { if ((d && h.body) || !/loaded|complete/.test(h.readyState)) { h.documentElement.doScroll("left") } } catch (m) { return setTimeout(arguments.callee, 0) } for (var l = 0, m; m = b[l]; l++) { if (m.t == c) { m.l.call(null) } } })() } if (d) { k.attachEvent("onbeforeunload", f) } this.addListener(k, "unload", i) }; asual.util.Functions = new function() { this.toString = function() { return "[class Functions]" }; this.bind = function(f, b, e) { for (var c = 2, d, a = []; d = arguments[c]; c++) { a.push(d) } return function() { return f.apply(b, a) } } }; var SWFAddressEvent = function(d) { this.toString = function() { return "[object SWFAddressEvent]" }; this.type = d; this.target = [SWFAddress][0]; this.value = SWFAddress.getValue(); this.path = SWFAddress.getPath(); this.pathNames = SWFAddress.getPathNames(); this.parameters = {}; var c = SWFAddress.getParameterNames(); for (var b = 0, a = c.length; b < a; b++) { this.parameters[c[b]] = SWFAddress.getParameter(c[b]) } this.parameterNames = c }; SWFAddressEvent.INIT = "init"; SWFAddressEvent.CHANGE = "change"; SWFAddressEvent.INTERNAL_CHANGE = "internalChange"; SWFAddressEvent.EXTERNAL_CHANGE = "externalChange"; var SWFAddress = new function() { var _getHash = function() { var index = _l.href.indexOf("#"); return index != -1 ? _ec(_dc(_l.href.substr(index + 1))) : "" }; var _getWindow = function() { try { top.document; return top } catch (e) { return window } }; var _strictCheck = function(value, force) { if (_opts.strict) { value = force ? (value.substr(0, 1) != "/" ? "/" + value : value) : (value == "" ? "/" : value) } return value }; var _ieLocal = function(value, direction) { return (_msie && _l.protocol == "file:") ? (direction ? _value.replace(/\?/, "%3F") : _value.replace(/%253F/, "?")) : value }; var _searchScript = function(el) { if (el.childNodes) { for (var i = 0, l = el.childNodes.length, s; i < l; i++) { if (el.childNodes[i].src) { _url = String(el.childNodes[i].src) } if (s = _searchScript(el.childNodes[i])) { return s } } } }; var _titleCheck = function() { if (_d.title != _title && _d.title.indexOf("#") != -1) { _d.title = _title } }; var _listen = function() { if (!_silent) { var hash = _getHash(); var diff = !(_value == hash); if (_safari && _version < 523) { if (_length != _h.length) { _length = _h.length; if (typeof _stack[_length - 1] != UNDEFINED) { _value = _stack[_length - 1] } _update.call(this, false) } } else { if (_msie && diff) { if (_version < 7) { _l.reload() } else { this.setValue(hash) } } else { if (diff) { _value = hash; _update.call(this, false) } } } if (_msie) { _titleCheck.call(this) } } }; var _bodyClick = function(e) { if (_popup.length > 0) { var popup = window.open(_popup[0], _popup[1], eval(_popup[2])); if (typeof _popup[3] != UNDEFINED) { eval(_popup[3]) } } _popup = [] }; var _swfChange = function() { for (var i = 0, id, obj, value = SWFAddress.getValue(), setter = "setSWFAddressValue"; id = _ids[i]; i++) { obj = document.getElementById(id); if (obj) { if (obj.parentNode && typeof obj.parentNode.so != UNDEFINED) { obj.parentNode.so.call(setter, value) } else { if (!(obj && typeof obj[setter] != UNDEFINED)) { var objects = obj.getElementsByTagName("object"); var embeds = obj.getElementsByTagName("embed"); obj = ((objects[0] && typeof objects[0][setter] != UNDEFINED) ? objects[0] : ((embeds[0] && typeof embeds[0][setter] != UNDEFINED) ? embeds[0] : null)) } if (obj) { obj[setter](value) } } } else { if (obj = document[id]) { if (typeof obj[setter] != UNDEFINED) { obj[setter](value) } } } } }; var _jsDispatch = function(type) { this.dispatchEvent(new SWFAddressEvent(type)); type = type.substr(0, 1).toUpperCase() + type.substr(1); if (typeof this["on" + type] == FUNCTION) { this["on" + type]() } }; var _jsInit = function() { if (_util.Browser.isSafari()) { _d.body.addEventListener("click", _bodyClick) } _jsDispatch.call(this, "init") }; var _jsChange = function() { _swfChange(); _jsDispatch.call(this, "change") }; var _update = function(internal) { _jsChange.call(this); if (internal) { _jsDispatch.call(this, "internalChange") } else { _jsDispatch.call(this, "externalChange") } _st(_functions.bind(_track, this), 10) }; var _track = function() { var value = (_l.pathname + (/\/$/.test(_l.pathname) ? "" : "/") + this.getValue()).replace(/\/\//, "/").replace(/^\/$/, ""); var fn = _t[_opts.tracker]; if (typeof fn == FUNCTION) { fn(value) } else { if (typeof _t.pageTracker != UNDEFINED && typeof _t.pageTracker._trackPageview == FUNCTION) { _t.pageTracker._trackPageview(value) } else { if (typeof _t.urchinTracker == FUNCTION) { _t.urchinTracker(value) } } } }; var _htmlWrite = function() { var doc = _frame.contentWindow.document; doc.open(); doc.write("<html><head><title>" + _d.title + "</title><script>var " + ID + ' = "' + _getHash() + '";<\/script></head></html>'); doc.close() }; var _htmlLoad = function() { var win = _frame.contentWindow; var src = win.location.href; _value = (typeof win[ID] != UNDEFINED ? win[ID] : ""); if (_value != _getHash()) { _update.call(SWFAddress, false); _l.hash = _ieLocal(_value, TRUE) } }; var _load = function() { if (!_loaded) { _loaded = TRUE; if (_msie && _version < 8) { var frameset = _d.getElementsByTagName("frameset")[0]; _frame = _d.createElement((frameset ? "" : "i") + "frame"); if (frameset) { frameset.insertAdjacentElement("beforeEnd", _frame); frameset[frameset.cols ? "cols" : "rows"] += ",0"; _frame.src = "javascript:false"; _frame.noResize = true; _frame.frameBorder = _frame.frameSpacing = 0 } else { _frame.src = "javascript:false"; _frame.style.display = "none"; _d.body.insertAdjacentElement("afterBegin", _frame) } _st(function() { _events.addListener(_frame, "load", _htmlLoad); if (typeof _frame.contentWindow[ID] == UNDEFINED) { _htmlWrite() } }, 50) } else { if (_safari) { if (_version < 418) { _d.body.innerHTML += '<form id="' + ID + '" style="position:absolute;top:-9999px;" method="get"></form>'; _form = _d.getElementById(ID) } if (typeof _l[ID] == UNDEFINED) { _l[ID] = {} } if (typeof _l[ID][_l.pathname] != UNDEFINED) { _stack = _l[ID][_l.pathname].split(",") } } } _st(_functions.bind(function() { _jsInit.call(this); _jsChange.call(this); _track.call(this) }, this), 1); if (_msie && _version >= 8) { _d.body.onhashchange = _functions.bind(_listen, this); _si(_functions.bind(_titleCheck, this), 50) } else { _si(_functions.bind(_listen, this), 50) } } }; var ID = "swfaddress", FUNCTION = "function", UNDEFINED = "undefined", TRUE = true, FALSE = false, _util = asual.util, _browser = _util.Browser, _events = _util.Events, _functions = _util.Functions, _version = _browser.getVersion(), _msie = _browser.isMSIE(), _mozilla = _browser.isMozilla(), _opera = _browser.isOpera(), _safari = _browser.isSafari(), _supported = FALSE, _t = _getWindow(), _d = _t.document, _h = _t.history, _l = _t.location, _si = setInterval, _st = setTimeout, _dc = decodeURI, _ec = encodeURI, _frame, _form, _url, _title = _d.title, _length = _h.length, _silent = FALSE, _loaded = FALSE, _justset = TRUE, _juststart = TRUE, _ref = this, _stack = [], _ids = [], _popup = [], _listeners = {}, _value = _getHash(), _opts = { history: TRUE, strict: TRUE }; if (_msie && _d.documentMode && _d.documentMode != _version) { _version = _d.documentMode != 8 ? 7 : 8 } _supported = (_mozilla && _version >= 1) || (_msie && _version >= 6) || (_opera && _version >= 9.5) || (_safari && _version >= 312); if (_supported) { if (_opera) { history.navigationMode = "compatible" } for (var i = 1; i < _length; i++) { _stack.push("") } _stack.push(_getHash()); if (_msie && _l.hash != _getHash()) { _l.hash = "#" + _ieLocal(_getHash(), TRUE) } _searchScript(document); var _qi = _url ? _url.indexOf("?") : -1; if (_qi != -1) { var param, params = _url.substr(_qi + 1).split("&"); for (var i = 0, p; p = params[i]; i++) { param = p.split("="); if (/^(history|strict)$/.test(param[0])) { _opts[param[0]] = (isNaN(param[1]) ? /^(true|yes)$/i.test(param[1]) : (parseInt(param[1]) != 0)) } if (/^tracker$/.test(param[0])) { _opts[param[0]] = param[1] } } } if (_msie) { _titleCheck.call(this) } if (window == _t) { _events.addListener(document, "DOMContentLoaded", _functions.bind(_load, this)) } _events.addListener(_t, "load", _functions.bind(_load, this)) } else { if ((!_supported && _l.href.indexOf("#") != -1) || (_safari && _version < 418 && _l.href.indexOf("#") != -1 && _l.search != "")) { _d.open(); _d.write('<html><head><meta http-equiv="refresh" content="0;url=' + _l.href.substr(0, _l.href.indexOf("#")) + '" /></head></html>'); _d.close() } else { _track() } } this.toString = function() { return "[class SWFAddress]" }; this.back = function() { _h.back() }; this.forward = function() { _h.forward() }; this.up = function() { var path = this.getPath(); this.setValue(path.substr(0, path.lastIndexOf("/", path.length - 2) + (path.substr(path.length - 1) == "/" ? 1 : 0))) }; this.go = function(delta) { _h.go(delta) }; this.href = function(url, target) { target = typeof target != UNDEFINED ? target : "_self"; if (target == "_self") { self.location.href = url } else { if (target == "_top") { _l.href = url } else { if (target == "_blank") { window.open(url) } else { _t.frames[target].location.href = url } } } }; this.popup = function(url, name, options, handler) { try { var popup = window.open(url, name, eval(options)); if (typeof handler != UNDEFINED) { eval(handler) } } catch (ex) { } _popup = arguments }; this.getIds = function() { return _ids }; this.getId = function(index) { return _ids[0] }; this.setId = function(id) { _ids[0] = id }; this.addId = function(id) { this.removeId(id); _ids.push(id) }; this.removeId = function(id) { for (var i = 0; i < _ids.length; i++) { if (id == _ids[i]) { _ids.splice(i, 1); break } } }; this.addEventListener = function(type, listener) { if (typeof _listeners[type] == UNDEFINED) { _listeners[type] = [] } _listeners[type].push(listener) }; this.removeEventListener = function(type, listener) { if (typeof _listeners[type] != UNDEFINED) { for (var i = 0, l; l = _listeners[type][i]; i++) { if (l == listener) { break } } _listeners[type].splice(i, 1) } }; this.dispatchEvent = function(event) { if (this.hasEventListener(event.type)) { event.target = this; for (var i = 0, l; l = _listeners[event.type][i]; i++) { l(event) } return TRUE } return FALSE }; this.hasEventListener = function(type) { return (typeof _listeners[type] != UNDEFINED && _listeners[type].length > 0) }; this.getBaseURL = function() { var url = _l.href; if (url.indexOf("#") != -1) { url = url.substr(0, url.indexOf("#")) } if (url.substr(url.length - 1) == "/") { url = url.substr(0, url.length - 1) } return url }; this.getStrict = function() { return _opts.strict }; this.setStrict = function(strict) { _opts.strict = strict }; this.getHistory = function() { return _opts.history }; this.setHistory = function(history) { _opts.history = history }; this.getTracker = function() { return _opts.tracker }; this.setTracker = function(tracker) { _opts.tracker = tracker }; this.getTitle = function() { return _d.title }; this.setTitle = function(title) { if (!_supported) { return null } if (typeof title == UNDEFINED) { return } if (title == "null") { title = "" } title = _dc(title); _st(function() { _title = _d.title = title; if (_juststart && _frame && _frame.contentWindow && _frame.contentWindow.document) { _frame.contentWindow.document.title = title; _juststart = FALSE } if (!_justset && _mozilla) { _l.replace(_l.href.indexOf("#") != -1 ? _l.href : _l.href + "#") } _justset = FALSE }, 10) }; this.getStatus = function() { return _t.status }; this.setStatus = function(status) { if (!_supported) { return null } if (typeof status == UNDEFINED) { return } if (status == "null") { status = "" } status = _dc(status); if (!_safari) { status = _strictCheck((status != "null") ? status : "", TRUE); if (status == "/") { status = "" } if (!(/http(s)?:\/\//.test(status))) { var index = _l.href.indexOf("#"); status = (index == -1 ? _l.href : _l.href.substr(0, index)) + "#" + status } _t.status = status } }; this.resetStatus = function() { _t.status = "" }; this.getValue = function() { if (!_supported) { return null } return _dc(_strictCheck(_ieLocal(_value, FALSE), FALSE)) }; this.setValue = function(value) { if (!_supported) { return null } if (typeof value == UNDEFINED) { return } if (value == "null") { value = "" } value = _ec(_dc(_strictCheck(value, TRUE))); if (value == "/") { value = "" } if (_value == value) { return } _justset = TRUE; _value = value; _silent = TRUE; _update.call(SWFAddress, true); _stack[_h.length] = _value; if (_safari) { if (_opts.history) { _l[ID][_l.pathname] = _stack.toString(); _length = _h.length + 1; if (_version < 418) { if (_l.search == "") { _form.action = "#" + _value; _form.submit() } } else { if (_version < 523 || _value == "") { var evt = _d.createEvent("MouseEvents"); evt.initEvent("click", TRUE, TRUE); var anchor = _d.createElement("a"); anchor.href = "#" + _value; anchor.dispatchEvent(evt) } else { _l.hash = "#" + _value } } } else { _l.replace("#" + _value) } } else { if (_value != _getHash()) { if (_opts.history) { _l.hash = "#" + _dc(_ieLocal(_value, TRUE)) } else { _l.replace("#" + _dc(_value)) } } } if ((_msie && _version < 8) && _opts.history) { _st(_htmlWrite, 50) } if (_safari) { _st(function() { _silent = FALSE }, 1) } else { _silent = FALSE } }; this.getPath = function() { var value = this.getValue(); if (value.indexOf("?") != -1) { return value.split("?")[0] } else { if (value.indexOf("#") != -1) { return value.split("#")[0] } else { return value } } }; this.getPathNames = function() { var path = this.getPath(), names = path.split("/"); if (path.substr(0, 1) == "/" || path.length == 0) { names.splice(0, 1) } if (path.substr(path.length - 1, 1) == "/") { names.splice(names.length - 1, 1) } return names }; this.getQueryString = function() { var value = this.getValue(), index = value.indexOf("?"); if (index != -1 && index < value.length) { return value.substr(index + 1) } }; this.getParameter = function(param) { var value = this.getValue(); var index = value.indexOf("?"); if (index != -1) { value = value.substr(index + 1); var p, params = value.split("&"), i = params.length, r = []; while (i--) { p = params[i].split("="); if (p[0] == param) { r.push(p[1]) } } if (r.length != 0) { return r.length != 1 ? r : r[0] } } }; this.getParameterNames = function() { var value = this.getValue(); var index = value.indexOf("?"); var names = []; if (index != -1) { value = value.substr(index + 1); if (value != "" && value.indexOf("=") != -1) { var params = value.split("&"), i = 0; while (i < params.length) { names.push(params[i].split("=")[0]); i++ } } } return names }; this.onInit = null; this.onChange = null; this.onInternalChange = null; this.onExternalChange = null; (function() { var _args; if (typeof FlashObject != UNDEFINED) { SWFObject = FlashObject } if (typeof SWFObject != UNDEFINED && SWFObject.prototype && SWFObject.prototype.write) { var _s1 = SWFObject.prototype.write; SWFObject.prototype.write = function() { _args = arguments; if (this.getAttribute("version").major < 8) { this.addVariable("$swfaddress", SWFAddress.getValue()); ((typeof _args[0] == "string") ? document.getElementById(_args[0]) : _args[0]).so = this } var success; if (success = _s1.apply(this, _args)) { _ref.addId(this.getAttribute("id")) } return success } } if (typeof swfobject != UNDEFINED) { var _s2r = swfobject.registerObject; swfobject.registerObject = function() { _args = arguments; _s2r.apply(this, _args); _ref.addId(_args[0]) }; var _s2c = swfobject.createSWF; swfobject.createSWF = function() { _args = arguments; var swf = _s2c.apply(this, _args); if (swf) { _ref.addId(_args[0].id) } return swf }; var _s2e = swfobject.embedSWF; swfobject.embedSWF = function() { _args = arguments; if (typeof _args[8] == UNDEFINED) { _args[8] = {} } if (typeof _args[8].id == UNDEFINED) { _args[8].id = _args[1] } _s2e.apply(this, _args); _ref.addId(_args[8].id) } } if (typeof UFO != UNDEFINED) { var _u = UFO.create; UFO.create = function() { _args = arguments; _u.apply(this, _args); _ref.addId(_args[0].id) } } if (typeof AC_FL_RunContent != UNDEFINED) { var _a = AC_FL_RunContent; AC_FL_RunContent = function() { _args = arguments; _a.apply(this, _args); for (var i = 0, l = _args.length; i < l; i++) { if (_args[i] == "id") { _ref.addId(_args[i + 1]) } } } } })() };

//// ****** swfaddress.js Ends  ************************************************************************ ////

//// ****** jquery-ba-hashchange.js Starts  ************************************************************************ ////

/*!
* jQuery hashchange event - v1.2 - 2/11/2010
* http://benalman.com/projects/jquery-hashchange-plugin/
* 
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/

// Script: jQuery hashchange event
//
// *Version: 1.2, Last updated: 2/11/2010*
// 
// Project Home - http://benalman.com/projects/jquery-hashchange-plugin/
// GitHub       - http://github.com/cowboy/jquery-hashchange/
// Source       - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.js
// (Minified)   - http://github.com/cowboy/jquery-hashchange/raw/master/jquery.ba-hashchange.min.js (1.1kb)
// 
// About: License
// 
// Copyright (c) 2010 "Cowboy" Ben Alman,
// Dual licensed under the MIT and GPL licenses.
// http://benalman.com/about/license/
// 
// About: Examples
// 
// This working example, complete with fully commented code, illustrate one way
// in which this plugin can be used.
// 
// hashchange event - http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/
// 
// About: Support and Testing
// 
// Information about what version or versions of jQuery this plugin has been
// tested with, what browsers it has been tested in, and where the unit tests
// reside (so you can test it yourself).
// 
// jQuery Versions - 1.2.6, 1.3.2, 1.4.1, 1.4.2
// Browsers Tested - Internet Explorer 6-8, Firefox 2-3.7, Safari 3-4, Chrome, Opera 9.6-10.1.
// Unit Tests      - http://benalman.com/code/projects/jquery-hashchange/unit/
// 
// About: Known issues
// 
// While this jQuery hashchange event implementation is quite stable and robust,
// there are a few unfortunate browser bugs surrounding expected hashchange
// event-based behaviors, independent of any JavaScript window.onhashchange
// abstraction. See the following examples for more information:
// 
// Chrome: Back Button - http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/
// Firefox: Remote XMLHttpRequest - http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/
// WebKit: Back Button in an Iframe - http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/
// Safari: Back Button from a different domain - http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/
// 
// About: Release History
// 
// 1.2   - (2/11/2010) Fixed a bug where coming back to a page using this plugin
//         from a page on another domain would cause an error in Safari 4. Also,
//         IE6/7 Iframe is now inserted after the body (this actually works),
//         which prevents the page from scrolling when the event is first bound.
//         Event can also now be bound before DOM ready, but it won't be usable
//         before then in IE6/7.
// 1.1   - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug
//         where browser version is incorrectly reported as 8.0, despite
//         inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag.
// 1.0   - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special
//         window.onhashchange functionality into a separate plugin for users
//         who want just the basic event & back button support, without all the
//         extra awesomeness that BBQ provides. This plugin will be included as
//         part of jQuery BBQ, but also be available separately.

(function($, window, undefined) {
    '$:nomunge'; // Used by YUI compressor.

    // Method / object references.
    var fake_onhashchange,
    jq_event_special = $.event.special,

    // Reused strings.
    str_location = 'location',
    str_hashchange = 'hashchange',
    str_href = 'href',

    // IE6/7 specifically need some special love when it comes to back-button
    // support, so let's do a little browser sniffing..
    browser = $.browser,
    mode = document.documentMode,
    is_old_ie = browser.msie && (mode === undefined || mode < 8),

    // Does the browser support window.onhashchange? Test for IE version, since
    // IE8 incorrectly reports this when in "IE7" or "IE8 Compatibility View"!
    supports_onhashchange = 'on' + str_hashchange in window && !is_old_ie;

    // Get location.hash (or what you'd expect location.hash to be) sans any
    // leading #. Thanks for making this necessary, Firefox!
    function get_fragment(url) {
        url = url || window[str_location][str_href];
        return url.replace(/^[^#]*#?(.*)$/, '$1');
    };

    // Property: jQuery.hashchangeDelay
    // 
    // The numeric interval (in milliseconds) at which the <hashchange event>
    // polling loop executes. Defaults to 100.

    $[str_hashchange + 'Delay'] = 100;

    // Event: hashchange event
    // 
    // Fired when location.hash changes. In browsers that support it, the native
    // window.onhashchange event is used (IE8, FF3.6), otherwise a polling loop is
    // initialized, running every <jQuery.hashchangeDelay> milliseconds to see if
    // the hash has changed. In IE 6 and 7, a hidden Iframe is created to allow
    // the back button and hash-based history to work.
    // 
    // Usage:
    // 
    // > $(window).bind( 'hashchange', function(e) {
    // >   var hash = location.hash;
    // >   ...
    // > });
    // 
    // Additional Notes:
    // 
    // * The polling loop and Iframe are not created until at least one callback
    //   is actually bound to 'hashchange'.
    // * If you need the bound callback(s) to execute immediately, in cases where
    //   the page 'state' exists on page load (via bookmark or page refresh, for
    //   example) use $(window).trigger( 'hashchange' );
    // * The event can be bound before DOM ready, but since it won't be usable
    //   before then in IE6/7 (due to the necessary Iframe), recommended usage is
    //   to bind it inside a $(document).ready() callback.

    jq_event_special[str_hashchange] = $.extend(jq_event_special[str_hashchange], {

        // Called only when the first 'hashchange' event is bound to window.
        setup: function() {
            // If window.onhashchange is supported natively, there's nothing to do..
            if (supports_onhashchange) { return false; }

            // Otherwise, we need to create our own. And we don't want to call this
            // until the user binds to the event, just in case they never do, since it
            // will create a polling loop and possibly even a hidden Iframe.
            $(fake_onhashchange.start);
        },

        // Called only when the last 'hashchange' event is unbound from window.
        teardown: function() {
            // If window.onhashchange is supported natively, there's nothing to do..
            if (supports_onhashchange) { return false; }

            // Otherwise, we need to stop ours (if possible).
            $(fake_onhashchange.stop);
        }

    });

    // fake_onhashchange does all the work of triggering the window.onhashchange
    // event for browsers that don't natively support it, including creating a
    // polling loop to watch for hash changes and in IE 6/7 creating a hidden
    // Iframe to enable back and forward.
    fake_onhashchange = (function() {
        var self = {},
      timeout_id,
      iframe,
      set_history,
      get_history;

        // Initialize. In IE 6/7, creates a hidden Iframe for history handling.
        function init() {
            // Most browsers don't need special methods here..
            set_history = get_history = function(val) { return val; };

            // But IE6/7 do!
            if (is_old_ie) {

                // Create hidden Iframe after the end of the body to prevent initial
                // page load from scrolling unnecessarily.
                iframe = $('<iframe src="javascript:0"/>').hide().insertAfter('body')[0].contentWindow;

                // Get history by looking at the hidden Iframe's location.hash.
                get_history = function() {
                    return get_fragment(iframe.document[str_location][str_href]);
                };

                // Set a new history item by opening and then closing the Iframe
                // document, *then* setting its location.hash.
                set_history = function(hash, history_hash) {
                    if (hash !== history_hash) {
                        var doc = iframe.document;
                        doc.open().close();
                        doc[str_location].hash = '#' + hash;
                    }
                };

                // Set initial history.
                set_history(get_fragment());
            }
        };

        // Start the polling loop.
        self.start = function() {
            // Polling loop is already running!
            if (timeout_id) { return; }

            // Remember the initial hash so it doesn't get triggered immediately.
            var last_hash = get_fragment();

            // Initialize if not yet initialized.
            set_history || init();

            // This polling loop checks every $.hashchangeDelay milliseconds to see if
            // location.hash has changed, and triggers the 'hashchange' event on
            // window when necessary.
            (function loopy() {
                var hash = get_fragment(),
          history_hash = get_history(last_hash);

                if (hash !== last_hash) {
                    set_history(last_hash = hash, history_hash);

                    $(window).trigger(str_hashchange);

                } else if (history_hash !== last_hash) {
                    window[str_location][str_href] = window[str_location][str_href].replace(/#.*/, '') + '#' + history_hash;
                }

                timeout_id = setTimeout(loopy, $[str_hashchange + 'Delay']);
            })();
        };

        // Stop the polling loop, but only if an IE6/7 Iframe wasn't created. In
        // that case, even if there are no longer any bound event handlers, the
        // polling loop is still necessary for back/next to work at all!
        self.stop = function() {
            if (!iframe) {
                timeout_id && clearTimeout(timeout_id);
                timeout_id = 0;
            }
        };

        return self;
    })();

})(jQuery, this);


//// ****** jquery-ba-hashchange.js Ends  ************************************************************************ ////

//// ******  Starts  ************************************************************************ ////

//// ******  Ends  ************************************************************************ ////

//// ****** our-latest-thinking-07162010.js Starts  ************************************************************************ ////

var $j = jQuery.noConflict();

//pause when we click a number
navClick = function() {
    $j('#scroller').cycle('pause');
}


//grab query string
getQuerystring = function(key, default_) {
    if (default_ == null) default_ = "";
    key = key.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + key + "=([^&#]*)");
    var qs = regex.exec(window.location.href);
    if (qs == null)
        return default_;
    else
        return qs[1];
}

//where to start the slider ... default to 0
var startHere = getQuerystring('start');
if (!startHere) {
    startHere = 0;
}
else {
    startHere = startHere - 1;

    if (startHere < 0) {
        startHere = 0;
    }
}

var pageStart = true;
var filterClass = new Array();
var itemsPerPage = 8;
var currentPage = 1;
var numberOfPages = 1;

setNumberOfPages = function() {

    var filterElements = new Array();
    if (filterClass.length) {
        // convert the array to a comma delimited list of classes
        var classList = filterClass.toString();

        // get the item count, this is the same as $j(.class1, .class2, .class3).length
        filterElements = $j(classList);

        var itemCount = filterElements.length;
    }
    else {
        // see if any checkboxes are checked
        if (pageStart) {
            var itemCount = $j('#articleList > div').length;
        }
        else {
            var itemCount = 0;
        }
    }
    var numOfPages = Math.ceil(itemCount / itemsPerPage);

    // set the global var
    numberOfPages = numOfPages;

    if (itemCount > 0) {
        hideNoResults(filterElements);
    }
    else {
        showNoResults();
    }
}


hideNoResults = function(filterElements) {
    $j('#noResults').remove();
    $j('p.pagination').show();
    $j('strong.numberOfPages').html(numberOfPages);
    paginate(1, filterElements);
}

showNoResults = function() {
    $j('p.pagination').hide();
    $j('#articleList > div').hide();
    $j('#articleList').append('<div id="noResults">No Results Found.  Please try again.</div>');

}


paginate = function(startPage, fElements) {

    // update currentPage 
    currentPage = startPage;

    // lt and gt are zero based, so subtract from the start and end
    var start = (startPage - 1) * itemsPerPage;
    var end = start + (itemsPerPage - 1);

    var startNum = startPage * itemsPerPage;
    var endNum = startNum + (itemsPerPage - 1);

    var filterElements = new Array();

    if (filterClass.length) {
        // convert the array to a comma delimited list of classes
        var classList = filterClass.toString();

        if (fElements) {
            filterElements = fElements;
        }
        else {
            filterElements = $j(classList);
        }
        var itemCount = filterElements.length;
    }
    else {
        var itemCount = $j('#articleList > div').length;
    }

    if (endNum > itemCount) { endNum = itemCount; }

    // show all 
    if (filterClass.length) {

        filterElements.show();

        // hide any prior to the startrow
        filterElements.filter(':lt(' + start + ')').hide();

        // hide any above endrow
        filterElements.filter(':gt(' + end + ')').hide();
    }
    else {
        $j('#articleList > div').show();

        // hide any prior to the startrow
        $j('#articleList > div:lt(' + start + ')').hide();

        // hide any above startrow+19
        $j('#articleList > div:gt(' + end + ')').hide();
    }

    // update which page we're on
    $j('strong.currentPage').html(startPage);

    // show/hide arrows
    if (currentPage == 1) {
        if ($j('.arrow_disabled_previous').length == 0) {
            $j('.arrow_previous').before('<span class="arrow_disabled_previous">Previous</span>');
        }
        $j('.arrow_previous').hide();
    }
    else {
        $j('.arrow_disabled_previous').remove();
        $j('.arrow_previous').show();
    }
    if (currentPage == numberOfPages) {
        if ($j('.arrow_disabled_next').length == 0) {
            $j('.arrow_next').before('<span class="arrow_disabled_next">Next</span>');
        }
        $j('.arrow_next').hide();
    }
    else {
        $j('.arrow_disabled_next').remove();
        $j('.arrow_next').show();
    }


}

filterItems = function() {
    // hide all 
    $j('#articleList > div').hide();

    // paginate and show
    setNumberOfPages();
}

$j(document).ready(function() {
    var loc = window.location.href;
    if (loc.indexOf('TestThinking.aspx') != -1) {
        $j('#scroller').after('<div id="nav" class="nav">').cycle({
            fx: 'scrollLeft',
            direction: 'left', // one of up|down|left|right  default=left
            speed: 800,
            timeout: 5000,
            delay: 1000,
            startingSlide: startHere,
            pager: '#nav',
            autostop: 1,
            autostopCount: 5,
            fit: 1,
            easing: 'easeOutCirc',
            pagerClick: navClick,
            activePagerClass: 'activeSlide'
        });

        $j('#authorList a').click(function() {
            if ($j('#authors').is(':visible')) {
                $j('#authorList').removeClass('expanded').addClass('collapsed');
                $j('#authors').hide();
            }
            else {
                $j('#authorList').removeClass('collapsed').addClass('expanded');
                $j('#authors').show();
            }
            return false;
        });

        // check for querystring
        var filterQS = getQuerystring('filter');
        if (filterQS) {
            filterQSArray = filterQS.split('|');
            for (var i = 0; i < filterQSArray.length; i++) {
                filterClass.push('.' + filterQSArray[i]);
            }

            pageStart = false;
            $j('#articleList > div').hide();

            // uncheck all boxes
            $j('a.categoryLink').parent().removeClass('checked').addClass('unchecked');
            $j('input.hiddenbox').attr('checked', false);
        }


        setNumberOfPages();

        $j('.arrow_next').click(function() {
            var startRow = currentPage + 1;
            paginate(startRow, null);
            return false;
        });
        $j('.arrow_previous').click(function() {
            var startRow = currentPage - 1;
            paginate(startRow, null);
            return false;
        });


        $j('a.categoryLink').click(function() {
            if ($j(this).parent().hasClass('checked')) {
                $j(this).parent().removeClass('checked');
                $j(this).parent().addClass('unchecked');
            }
            else {
                $j(this).parent().addClass('checked');
                $j(this).parent().removeClass('unchecked');
            }

            var linkID = $j(this).attr('id');
            var checkboxID = linkID.replace('link_', '');

            // check the checkbox
            if ($j('#' + checkboxID).is(':checked')) {
                $j('#' + checkboxID).attr('checked', false);
            }
            else {
                $j('#' + checkboxID).attr('checked', true);
            }

            // now update the filters and paginate
            updateFilters();

            // block the click
            return false;
        });

        /*$j('input.authorFilter').change(function() {
        updateFilters();
        });*/

        //dbulli switched to click
        $j("input.authorFilter").click(function() {
            updateFilters();
        });


        updateFilters = function(makeBlankURL) {
            // clear the array
            filterClass.length = 0;
            pageStart = false;

            //store for url hash
            var checkedTopLevel = '';
            var checkedAuthors = '';
            var seperator = '';

            //  populate the array based on what's checked
            $j('input.filter:checked').each(function() {

                categoryClass = $j(this).val();
                checkedTopLevel += seperator + categoryClass;
                seperator = ',';
                // merge checkboxes with authors
                $j('input.authorFilter:checked').each(function() {
                    filterClass.push('.' + categoryClass + '-' + $j(this).val());
                });
            });

            seperator = '';
            $j('input.authorFilter:checked').each(function() {
                checkedAuthors += seperator + $j(this).val();
                seperator = ',';
            });

            // filter the list
            filterItems();

            //update url hash
            lasturl = '/' + checkedTopLevel + '/' + checkedAuthors;

            if (makeBlankURL != undefined && makeBlankURL) {
                lasturl = '';
            }

            var pos = $j(document).scrollTop(); // get scroll position
            //window.location.hash = lasturl;
            SWFAddress.setValue(lasturl);
            $j(document).scrollTop(pos); // set scroll position back
        }

        checkURL(undefined, filterQS);
    } //End of URL check condition
});



//dbulli - 06082010 - listen for hash changes	

var lasturl = "";

//turns off or on a category link
updateCategoryLink = function(m_link, state) {

    if (m_link.attr('id') != null) {
        var checkbox = $j('#' + m_link.attr('id').replace('link_', ''));
        checkbox.attr('checked', state);
        if (state) {
            m_link.parent().removeClass('unchecked');
            m_link.parent().addClass('checked');
        }
        else {
            m_link.parent().removeClass('checked');
            m_link.parent().addClass('unchecked');
        }
    }
}


//updates filters based on URL hash
function updateFiltersFromHash(hash) {
    //turn off all filters
    $j('a.categoryLink').each(function() {
        updateCategoryLink($j(this), false);
    });

    //turn off all authors
    $j('input.authorFilter').each(function() {
        $j(this).attr('checked', false);
    });

    if (hash) {
        //grab from hash
        var elements = hash.split('/');

        //grab filters
        var filters = elements[1].split(',');
        for (var i = 0; i < filters.length; i++) {
            updateCategoryLink($j('#link_' + filters[i]), true);
        }

        //grab authors
        var authors = elements[2].split(',');

        for (var i = 0; i < authors.length; i++) {
            $j('#' + authors[i]).attr('checked', true);
        }

        updateFilters();
    }
    else {
        //empty ...  reset all to true
        $j('a.categoryLink').each(function() {
            updateCategoryLink($j(this), true);
        });

        //turn off all authors
        $j('input.authorFilter').each(function() {
            $j(this).attr('checked', true);
        });

        updateFilters(true);
    }

}


logit = function($text) {
    if (window.console && window.console.firebug) {
        console.log($text);
    }
}


//check URL to see if anything has changed
function checkURL(hash, filterQS) {
    if (filterQS) return;

    if (!hash) hash = window.location.hash;

    if (hash != ('#' + lasturl)) {
        //logit("WE ARE DIFERENT!");
        lasturl = hash;
        updateFiltersFromHash(lasturl);
    }
    else {
        //logit("no change");
    }
}

//bind for monitoring hash change
$j(function() {
    $j(window).bind('hashchange', function() {
        checkURL(location.hash)
    })
});

//// ****** our-latest-thinking-07162010.js Ends  ************************************************************************ ////



