﻿// Common.js
/************************************************************
*** COMMON JAVASCRIPT FUNCTIONS (UNPACKED VERSION)
************************************************************/

/*

All javascript here is original commented un packed, for ease
of editing and updating etc. When new projects are created
ensure that any unused code is removed, especially any large
third party scripts at the bottom of this file.

Store this original in \Scripts\UnPacked\Common.js

Once complete and site is in live state ensure that the script
has been packed and saved as \Scripts\Packed.js to pack the
script visit http://dean.edwards.name/packer/

*/

/************************************************************
*** GENERAL FORM FUNCTIONS
************************************************************/

// cross browser function to find an element by id
function objById(id)
{ 
	if (document.getElementById) return document.getElementById(id); 
	else if (document.all) return document.all[id]; 
	else if (document.layers) return document.layers[id]; 
}

// quick search catch enter
function qsEnt(e)
{
    var keyCode;
    if (window.event) keyCode = window.event.keyCode;
    else if (e) keyCode = e.which;

    if (keyCode == 13) {
        qsGo();
        return false;
    }
    else return true;
}

// run quick search
function qsGo()
{
	var srchTxt = "";
    if (document.forms[0].txtSearch.value != "" && document.forms[0].txtSearch.value != "Enter your search keywords here") srchTxt += document.forms[0].txtSearch.value.replace(/[\<\%\&\@\#\=\+\>\*]*/g, "").replace(/\s+/g, " ").replace(/^\s+/, "").replace(/\s+$/, "");
    location.href = HTTPHost + (document.forms[0].sType2.checked ? "/search-results?Search=" : "/product-list?Text=") + srchTxt;
}

// mailing list form validation
function mlValidate()
{
	objById("mlValSumMsg").innerHTML = "";
	if (!objById("mlEmail").value.replace("Your email address", "").match(/[A-Za-z0-9@\._\-]+/)) objById("mlValSumMsg").innerHTML += "<li>Please enter your email address</li>";
	if (objById("mlValSumMsg").innerHTML != "") objById("mlValSumMsg").innerHTML = "<ul>" + objById("mlValSumMsg").innerHTML + "</ul>";

	if (objById("mlValSumMsg").innerHTML == "")
	{
		objById("mlValSum").style.display = "none";
		return true;
	}
	else
	{
		objById("mlValSum").style.display = "block";
		return false;
	}
}

// mailing list catch enter
function mlEnt(e)
{
	var keyCode;
	if (window.event) keyCode = window.event.keyCode;
	else if (e) keyCode = e.which;

	if (keyCode == 13)
	{
		mlGo();
		return false;
	}
	else return true;
}

// run mailing list subscribe
function mlGo()
{
	// check the form and if ok then submit it
	if (mlValidate())
	{
		var url = FolderRoot + "mailing-list";
		if (objById("mlEmail").value != "") url += "&Email=" + objById("mlEmail").value;
		location.href = url;
	}
}

/************************************************************
*** GENERAL FORM FUNCTIONS
************************************************************/

function focusTxt(a) { a.className = a.className + " hLgt"; }
function blurTxt(a) { a.className = a.className.replace(" hLgt", ""); }

/************************************************************
*** CHECKOUT FUNCTIONS
************************************************************/

function showCV2Help()
{
	if (objById('cv2Help').style.display == "none") objById('cv2Help').style.display = "";
	else objById('cv2Help').style.display = "none";
}

/************************************************************
*** PRODUCT LIST FUNCTIONS
************************************************************/

function ddRpp(a) { location.href=location.href.replace(/&RPP=[0-9]+/, '')+'&RPP='+a.selectedIndex; }
function ddSort(a) { location.href=location.href.replace(/&Sort=[0-9]+/, '')+'&Sort='+a.selectedIndex; }

/************************************************************
*** PRODUCT DETAIL FUNCTIONS
************************************************************/

function chkQty(a) {
    if (isNaN(a.value) || parseInt(a.value) < 1) {
        a.value = '';
        return false;
    }
    return true;
}

// used for calculating total price based on hidden fields populated via ajax,
// updated to include price break calculations
function chkStkPri() {
                    
    // get hidden field data
    var objQuantity = getQtyObj();
    var quantity = objQuantity.value;
    var price = getPrice();
    var priceBreaksArrayString = getPriceBreaks();
    var stock = getStock();

    // check we have a valid quantity
    if (!chkQty(objQuantity)) return;
    
    // see if we are checking stock, if so do so now and correct if required
    if (!isNaN(stock) && stock != '') {
        if (stock == 0) {
            alert('Sorry we do not have enough stock of this product to fulfil your order.');
            objQuantity.value = quantity = 1;
        }
        else if (stock < quantity) {
            alert('Sorry we do not have enough stock of this product to fulfil your order, we have adjusted your qty to the maximum available at the last check.');
            objQuantity.value = quantity = stock;
        }
    }

    // check we have valid price
    if (isNaN(price) || price == '') {
        objById('ttl').value = 'error';
        return;
    }
    else price = parseFloat(price);

    // if we have price break data loop though and get correct price
    if (priceBreaksArrayString != '') {

        var priceBreaksArray = priceBreaksArrayString.split('|');
        
        // loop though price breaks
        for (i = 0; i < priceBreaksArray.length; i++)
        {
            // get qty and price from price break
            var quantityAndPriceArray = priceBreaksArray[i].split(',');
            
            // see if we have enough qty to use this price, quick once we hit a price break qty too high
            if (quantity >= parseInt(quantityAndPriceArray[0])) price = parseFloat(quantityAndPriceArray[1]);
            else break;
        }                  
    }

    // calculate total cost and display
    objById('ttl').innerHTML = '&pound;' + (quantity * price).toFixed(2);
}

/********************************************************************************************
*** MODAL DIALOG FUNCTION - show a html template in an modal dialog with overlay (requires modalDialog jQuery library)
********************************************************************************************/

var modalDialogData = "";
function modalDialog(tpl, width, height, data)
{
	// store data the modal dialog will need to reference in a global variable
	modalDialogData = data;

	// precautionary removal of any existing modal dialog source html (in case it somehow got left behind)
	$("#modal").remove();

	// create new modal
	$("body").append("<div id=\"modal\" style=\"display: block;\"></div>");

	// load the html from the template and show it in a modal dialog
	$.ajax({
		url: FolderRoot + "Tpl/HTML/" + tpl + ".html",
		cache: false,
		dataType: "html",
		success: function (data)
		{
			$("#modal").html(data);
			$.modalDialog({
				src: $("#modal"),
				css: { width: width + "px", height: height + "px" }
			});
		}
	});
}

/************************************************************
*** HEADER NAVIGATION FUNCTIONS
************************************************************/

$(document).ready(function () {
    if (!(navigator.userAgent.indexOf("MSIE 6") >= 0) && !(navigator.userAgent.indexOf("Firefox/2") >= 0)) {
        //	show sub nav on hover
        $("#h ul.lv1 li").hoverIntent(
            function () {
                $("ul.lv2", this).slideDown(100).bgIframe();
            },
            function () {
                $("ul.lv2", this).slideUp(100);
            }
       );
    }

    // toggle blue bar when one of the main nav items is selected
    //if ($("#h ul.lv1 li.s").length > 0) $("#h .r4 div").addClass("a");
});

/************************************************************
*** EXTERNAL LIBRARIES
************************************************************/

/**
* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
* 
* @param  f  onMouseOver function || An object with configuration options
* @param  g  onMouseOut function  || Nothing (use configuration options object)
* @author    Brian Cherne <brian@cherne.net>
*/
(function ($) { $.fn.hoverIntent = function (f, g) { var cfg = { sensitivity: 7, interval: 100, timeout: 0 }; cfg = $.extend(cfg, g ? { over: f, out: g} : f); var cX, cY, pX, pY; var track = function (ev) { cX = ev.pageX; cY = ev.pageY; }; var compare = function (ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); if ((Math.abs(pX - cX) + Math.abs(pY - cY)) < cfg.sensitivity) { $(ob).unbind("mousemove", track); ob.hoverIntent_s = 1; return cfg.over.apply(ob, [ev]); } else { pX = cX; pY = cY; ob.hoverIntent_t = setTimeout(function () { compare(ev, ob); }, cfg.interval); } }; var delay = function (ev, ob) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); ob.hoverIntent_s = 0; return cfg.out.apply(ob, [ev]); }; var handleHover = function (e) { var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget; while (p && p != this) { try { p = p.parentNode; } catch (e) { p = this; } } if (p == this) { return false; } var ev = jQuery.extend({}, e); var ob = this; if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); } if (e.type == "mouseover") { pX = ev.pageX; pY = ev.pageY; $(ob).bind("mousemove", track); if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout(function () { compare(ev, ob); }, cfg.interval); } } else { $(ob).unbind("mousemove", track); if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout(function () { delay(ev, ob); }, cfg.timeout); } } }; return this.mouseover(handleHover).mouseout(handleHover); }; })(jQuery);


/* Copyright (c) 2010 Brandon Aaron (http://brandonaaron.net)
* Licensed under the MIT License (LICENSE.txt).
*
* Version 2.1.2
*/
(function (a) { a.fn.bgiframe = (a.browser.msie && /msie 6\.0/i.test(navigator.userAgent) ? function (d) { d = a.extend({ top: "auto", left: "auto", width: "auto", height: "auto", opacity: true, src: "javascript:false;" }, d); var c = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="' + d.src + '"style="display:block;position:absolute;z-index:-1;' + (d.opacity !== false ? "filter:Alpha(Opacity='0');" : "") + "top:" + (d.top == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+'px')" : b(d.top)) + ";left:" + (d.left == "auto" ? "expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+'px')" : b(d.left)) + ";width:" + (d.width == "auto" ? "expression(this.parentNode.offsetWidth+'px')" : b(d.width)) + ";height:" + (d.height == "auto" ? "expression(this.parentNode.offsetHeight+'px')" : b(d.height)) + ';"/>'; return this.each(function () { if (a(this).children("iframe.bgiframe").length === 0) { this.insertBefore(document.createElement(c), this.firstChild) } }) } : function () { return this }); a.fn.bgIframe = a.fn.bgiframe; function b(c) { return c && c.constructor === Number ? c + "px" : c } })(jQuery);


/*
/* jquery.modalDialog.js - modal dialog plugin for jQuery
/* Colin Jaggs (c) 2010 Pin Digital Ltd
*/
; (function ($) { var ie6 = $.browser.msie && /MSIE 6.0/.test(navigator.userAgent); $.modalDialog = function (opts) { show(opts) }; $.modalDialogHide = function (opts) { remove(opts) }; function show(opts) { opts = $.extend({}, $.modalDialog.defaults, opts || {}); opts.overlayCSS = $.extend({}, $.modalDialog.defaults.overlayCSS, opts.overlayCSS || {}); var css = $.extend({}, $.modalDialog.defaults.css, opts.css || {}); var msg = opts.src; var z = opts.zIndex; var lyr1 = (ie6) ? $('<iframe class="modalDialog modaliFrm" style="z-index:' + (z++) + ';border:none;margin:0;padding:0;position:absolute;width:100%;height:100%;top:0;left:0" src="' + opts.iframeSrc + '"></iframe>') : ""; var lyr2 = $('<div class="modalDialog modalOvl" style="z-index:' + (z++) + ';display:none;border:none;margin:0;padding:0;position:fixed;width:100%;height:100%;top:0;left:0"></div>'); var lyr3 = $('<div class="modalDialog modalMsg" style="z-index:' + z + ';display:none;position:fixed"></div>'); if (ie6) lyr1.css('opacity', 0.0); lyr2.css(opts.overlayCSS); lyr3.css(css); $(msg).show().appendTo($(lyr3)); var layers = [lyr1, lyr2, lyr3]; $.each(layers, function () { if (this != "") this.appendTo($('body')) }); if (ie6) { $.each([lyr1, lyr2], function () { $(this).css({ position: "absolute", width: jQuery.boxModel && document.documentElement.clientWidth || document.body.clientWidth + "px", height: Math.max(document.body.scrollHeight, document.body.offsetHeight) + "px" }) }); lyr3.css({ position: "absolute" }) } lyr3.css({ left: '50%', marginLeft: (lyr3.outerWidth() / 2) * -1, top: '50%', marginTop: (lyr3.outerHeight() / 2) * -1 }); if (opts.fadeIn) { lyr2.fadeIn(opts.fadeIn); lyr3.fadeIn(opts.fadeIn, function () { if (opts.onLoad) opts.onLoad() }) } else { lyr2.show(); lyr3.show(); if (opts.onLoad) opts.onLoad() } if (opts.overlayClickToClose) lyr2.click(function () { remove(opts) }); $("#modal " + opts.closeSel).click(function () { remove(opts) }) }; function remove(opts) { opts = $.extend({}, $.modalDialog.defaults, opts || {}); var els = $('body').children().filter('.modalDialog').add('body > .modalDialog'); if (opts.fadeOut) els.fadeOut(opts.fadeOut); else els.hide() }; $.modalDialog.defaults = { src: null, css: { background: "#fff" }, overlayCSS: { backgroundColor: '#000', opacity: 0.6 }, iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank', zIndex: 1000, fadeIn: 300, fadeOut: 300, closeSel: ".close", overlayClickToClose: true, onLoad: null} })(jQuery);


/*
* jQuery Autocomplete plugin 1.1
*
* Copyright (c) 2009 Jörn Zaefferer
*
* Dual licensed under the MIT and GPL licenses:
*   http://www.opensource.org/licenses/mit-license.php
*   http://www.gnu.org/licenses/gpl.html
*
* Revision: $Id: jquery.autocomplete.js 15 2009-08-22 10:30:27Z joern.zaefferer $
*/
eval(function (p, a, c, k, e, r) { e = function (c) { return (c < a ? '' : e(parseInt(c / a))) + ((c = c % a) > 35 ? String.fromCharCode(c + 29) : c.toString(36)) }; if (!''.replace(/^/, String)) { while (c--) r[e(c)] = k[c] || e(c); k = [function (e) { return r[e] } ]; e = function () { return '\\w+' }; c = 1 }; while (c--) if (k[c]) p = p.replace(new RegExp('\\b' + e(c) + '\\b', 'g'), k[c]); return p } (';(3($){$.2e.1u({19:3(b,d){5 c=W b=="1B";d=$.1u({},$.M.1T,{Y:c?b:P,y:c?P:b,1J:c?$.M.1T.1J:10,X:d&&!d.1D?10:48},d);d.1y=d.1y||3(a){6 a};d.1v=d.1v||d.1R;6 A.I(3(){1M $.M(A,d)})},L:3(a){6 A.11("L",a)},1k:3(a){6 A.14("1k",[a])},2b:3(){6 A.14("2b")},28:3(a){6 A.14("28",[a])},24:3(){6 A.14("24")}});$.M=3(o,r){5 t={2Y:38,2S:40,2N:46,2I:9,2E:13,2B:27,2x:3I,2v:33,2p:34,2n:8};5 u=$(o).3r("19","3o").Q(r.2Q);5 p;5 m="";5 n=$.M.3c(r);5 s=0;5 k;5 h={1F:C};5 l=$.M.32(r,o,1Z,h);5 j;$.1Y.2X&&$(o.2U).11("45.19",3(){4(j){j=C;6 C}});u.11(($.1Y.2X?"43":"42")+".19",3(a){s=1;k=a.2M;3V(a.2M){O t.2Y:a.1d();4(l.N()){l.30()}w{12(0,D)}R;O t.2S:a.1d();4(l.N()){l.2D()}w{12(0,D)}R;O t.2v:a.1d();4(l.N()){l.2C()}w{12(0,D)}R;O t.2p:a.1d();4(l.N()){l.2A()}w{12(0,D)}R;O r.17&&$.1c(r.S)==","&&t.2x:O t.2I:O t.2E:4(1Z()){a.1d();j=D;6 C}R;O t.2B:l.Z();R;3J:1P(p);p=1O(12,r.1J);R}}).2t(3(){s++}).3E(3(){s=0;4(!h.1F){2r()}}).2q(3(){4(s++>1&&!l.N()){12(0,D)}}).11("1k",3(){5 c=(1r.7>1)?1r[1]:P;3 1N(q,a){5 b;4(a&&a.7){16(5 i=0;i<a.7;i++){4(a[i].L.J()==q.J()){b=a[i];R}}}4(W c=="3")c(b);w u.14("L",b&&[b.y,b.F])}$.I(15(u.K()),3(i,a){21(a,1N,1N)})}).11("2b",3(){n.1o()}).11("28",3(){$.1u(r,1r[1]);4("y"2h 1r[1])n.1e()}).11("24",3(){l.1p();u.1p();$(o.2U).1p(".19")});3 1Z(){5 e=l.2g();4(!e)6 C;5 v=e.L;m=v;4(r.17){5 b=15(u.K());4(b.7>1){5 f=r.S.7;5 c=$(o).18().1I;5 d,1H=0;$.I(b,3(i,a){1H+=a.7;4(c<=1H){d=i;6 C}1H+=f});b[d]=v;v=b.3f(r.S)}v+=r.S}u.K(v);1l();u.14("L",[e.y,e.F]);6 D}3 12(b,c){4(k==t.2N){l.Z();6}5 a=u.K();4(!c&&a==m)6;m=a;a=1m(a);4(a.7>=r.29){u.Q(r.26);4(!r.1s)a=a.J();21(a,3a,1l)}w{1q();l.Z()}};3 15(b){4(!b)6[""];4(!r.17)6[$.1c(b)];6 $.4h(b.23(r.S),3(a){6 $.1c(b).7?$.1c(a):P})}3 1m(a){4(!r.17)6 a;5 c=15(a);4(c.7==1)6 c[0];5 b=$(o).18().1I;4(b==a.7){c=15(a)}w{c=15(a.22(a.37(b),""))}6 c[c.7-1]}3 1G(q,a){4(r.1G&&(1m(u.K()).J()==q.J())&&k!=t.2n){u.K(u.K()+a.37(1m(m).7));$(o).18(m.7,m.7+a.7)}};3 2r(){1P(p);p=1O(1l,4g)};3 1l(){5 c=l.N();l.Z();1P(p);1q();4(r.36){u.1k(3(a){4(!a){4(r.17){5 b=15(u.K()).1n(0,-1);u.K(b.3f(r.S)+(b.7?r.S:""))}w{u.K("");u.14("L",P)}}})}};3 3a(q,a){4(a&&a.7&&s){1q();l.35(a,q);1G(q,a[0].F);l.20()}w{1l()}};3 21(f,d,g){4(!r.1s)f=f.J();5 e=n.31(f);4(e&&e.7){d(f,e)}w 4((W r.Y=="1B")&&(r.Y.7>0)){5 c={4f:+1M 4e()};$.I(r.2Z,3(a,b){c[a]=W b=="3"?b():b});$.4d({4c:"4b",4a:"19"+o.49,2V:r.2V,Y:r.Y,y:$.1u({q:1m(f),47:r.X},c),44:3(a){5 b=r.1A&&r.1A(a)||1A(a);n.1i(f,b);d(f,b)}})}w{l.2T();g(f)}};3 1A(c){5 d=[];5 b=c.23("\\n");16(5 i=0;i<b.7;i++){5 a=$.1c(b[i]);4(a){a=a.23("|");d[d.7]={y:a,F:a[0],L:r.1z&&r.1z(a,a[0])||a[0]}}}6 d};3 1q(){u.1h(r.26)}};$.M.1T={2Q:"41",2P:"3Z",26:"3Y",29:1,1J:3W,1s:C,1f:D,1w:C,1g:10,X:3U,36:C,2Z:{},1X:D,1R:3(a){6 a[0]},1v:P,1G:C,E:0,17:C,S:", ",1y:3(b,a){6 b.22(1M 3T("(?![^&;]+;)(?!<[^<>]*)("+a.22(/([\\^\\$\\(\\)\\[\\]\\{\\}\\*\\.\\+\\?\\|\\\\])/2K,"\\\\$1")+")(?![^<>]*>)(?![^&;]+;)","2K"),"<2J>$1</2J>")},1D:D,1E:3S};$.M.3c=3(g){5 h={};5 j=0;3 1f(s,a){4(!g.1s)s=s.J();5 i=s.2H(a);4(g.1w=="3R"){i=s.J().1k("\\\\b"+a.J())}4(i==-1)6 C;6 i==0||g.1w};3 1i(q,a){4(j>g.1g){1o()}4(!h[q]){j++}h[q]=a}3 1e(){4(!g.y)6 C;5 f={},2G=0;4(!g.Y)g.1g=1;f[""]=[];16(5 i=0,2F=g.y.7;i<2F;i++){5 c=g.y[i];c=(W c=="1B")?[c]:c;5 d=g.1v(c,i+1,g.y.7);4(d===C)1V;5 e=d.3Q(0).J();4(!f[e])f[e]=[];5 b={F:d,y:c,L:g.1z&&g.1z(c)||d};f[e].1U(b);4(2G++<g.X){f[""].1U(b)}};$.I(f,3(i,a){g.1g++;1i(i,a)})}1O(1e,25);3 1o(){h={};j=0}6{1o:1o,1i:1i,1e:1e,31:3(q){4(!g.1g||!j)6 P;4(!g.Y&&g.1w){5 a=[];16(5 k 2h h){4(k.7>0){5 c=h[k];$.I(c,3(i,x){4(1f(x.F,q)){a.1U(x)}})}}6 a}w 4(h[q]){6 h[q]}w 4(g.1f){16(5 i=q.7-1;i>=g.29;i--){5 c=h[q.3O(0,i)];4(c){5 a=[];$.I(c,3(i,x){4(1f(x.F,q)){a[a.7]=x}});6 a}}}6 P}}};$.M.32=3(e,g,f,k){5 h={H:"3N"};5 j,z=-1,y,1t="",1S=D,G,B;3 2y(){4(!1S)6;G=$("<3M/>").Z().Q(e.2P).T("3L","3K").1Q(1K.2w);B=$("<3H/>").1Q(G).3G(3(a){4(U(a).2u&&U(a).2u.3F()==\'2s\'){z=$("1L",B).1h(h.H).3D(U(a));$(U(a)).Q(h.H)}}).2q(3(a){$(U(a)).Q(h.H);f();g.2t();6 C}).3C(3(){k.1F=D}).3B(3(){k.1F=C});4(e.E>0)G.T("E",e.E);1S=C}3 U(a){5 b=a.U;3A(b&&b.3z!="2s")b=b.3y;4(!b)6[];6 b}3 V(b){j.1n(z,z+1).1h(h.H);2o(b);5 a=j.1n(z,z+1).Q(h.H);4(e.1D){5 c=0;j.1n(0,z).I(3(){c+=A.1a});4((c+a[0].1a-B.1b())>B[0].3x){B.1b(c+a[0].1a-B.3w())}w 4(c<B.1b()){B.1b(c)}}};3 2o(a){z+=a;4(z<0){z=j.1j()-1}w 4(z>=j.1j()){z=0}}3 2m(a){6 e.X&&e.X<a?e.X:a}3 2l(){B.2z();5 b=2m(y.7);16(5 i=0;i<b;i++){4(!y[i])1V;5 a=e.1R(y[i].y,i+1,b,y[i].F,1t);4(a===C)1V;5 c=$("<1L/>").3v(e.1y(a,1t)).Q(i%2==0?"3u":"3P").1Q(B)[0];$.y(c,"2k",y[i])}j=B.3t("1L");4(e.1X){j.1n(0,1).Q(h.H);z=0}4($.2e.2W)B.2W()}6{35:3(d,q){2y();y=d;1t=q;2l()},2D:3(){V(1)},30:3(){V(-1)},2C:3(){4(z!=0&&z-8<0){V(-z)}w{V(-8)}},2A:3(){4(z!=j.1j()-1&&z+8>j.1j()){V(j.1j()-1-z)}w{V(8)}},Z:3(){G&&G.Z();j&&j.1h(h.H);z=-1},N:3(){6 G&&G.3s(":N")},3q:3(){6 A.N()&&(j.2j("."+h.H)[0]||e.1X&&j[0])},20:3(){5 a=$(g).3p();G.T({E:W e.E=="1B"||e.E>0?e.E:$(g).E(),2i:a.2i+g.1a,1W:a.1W}).20();4(e.1D){B.1b(0);B.T({2L:e.1E,3n:\'3X\'});4($.1Y.3m&&W 1K.2w.3l.2L==="1x"){5 c=0;j.I(3(){c+=A.1a});5 b=c>e.1E;B.T(\'3k\',b?e.1E:c);4(!b){j.E(B.E()-2R(j.T("2O-1W"))-2R(j.T("2O-3j")))}}}},2g:3(){5 a=j&&j.2j("."+h.H).1h(h.H);6 a&&a.7&&$.y(a[0],"2k")},2T:3(){B&&B.2z()},1p:3(){G&&G.3i()}}};$.2e.18=3(b,f){4(b!==1x){6 A.I(3(){4(A.2d){5 a=A.2d();4(f===1x||b==f){a.4n("2c",b);a.3h()}w{a.4m(D);a.4l("2c",b);a.4k("2c",f);a.3h()}}w 4(A.3g){A.3g(b,f)}w 4(A.1C){A.1C=b;A.3e=f}})}5 c=A[0];4(c.2d){5 e=1K.18.4j(),3d=c.F,2a="<->",2f=e.3b.7;e.3b=2a;5 d=c.F.2H(2a);c.F=3d;A.18(d,d+2f);6{1I:d,39:d+2f}}w 4(c.1C!==1x){6{1I:c.1C,39:c.3e}}}})(4i);', 62, 272, '|||function|if|var|return|length|||||||||||||||||||||||||else||data|active|this|list|false|true|width|value|element|ACTIVE|each|toLowerCase|val|result|Autocompleter|visible|case|null|addClass|break|multipleSeparator|css|target|moveSelect|typeof|max|url|hide||bind|onChange||trigger|trimWords|for|multiple|selection|autocomplete|offsetHeight|scrollTop|trim|preventDefault|populate|matchSubset|cacheLength|removeClass|add|size|search|hideResultsNow|lastWord|slice|flush|unbind|stopLoading|arguments|matchCase|term|extend|formatMatch|matchContains|undefined|highlight|formatResult|parse|string|selectionStart|scroll|scrollHeight|mouseDownOnSelect|autoFill|progress|start|delay|document|li|new|findValueCallback|setTimeout|clearTimeout|appendTo|formatItem|needsInit|defaults|push|continue|left|selectFirst|browser|selectCurrent|show|request|replace|split|unautocomplete||loadingClass||setOptions|minChars|teststring|flushCache|character|createTextRange|fn|textLength|selected|in|top|filter|ac_data|fillList|limitNumberOfItems|BACKSPACE|movePosition|PAGEDOWN|click|hideResults|LI|focus|nodeName|PAGEUP|body|COMMA|init|empty|pageDown|ESC|pageUp|next|RETURN|ol|nullData|indexOf|TAB|strong|gi|maxHeight|keyCode|DEL|padding|resultsClass|inputClass|parseInt|DOWN|emptyList|form|dataType|bgiframe|opera|UP|extraParams|prev|load|Select|||display|mustMatch|substring||end|receiveData|text|Cache|orig|selectionEnd|join|setSelectionRange|select|remove|right|height|style|msie|overflow|off|offset|current|attr|is|find|ac_even|html|innerHeight|clientHeight|parentNode|tagName|while|mouseup|mousedown|index|blur|toUpperCase|mouseover|ul|188|default|absolute|position|div|ac_over|substr|ac_odd|charAt|word|180|RegExp|100|switch|400|auto|ac_loading|ac_results||ac_input|keydown|keypress|success|submit||limit|150|name|port|abort|mode|ajax|Date|timestamp|200|map|jQuery|createRange|moveEnd|moveStart|collapse|move'.split('|'), 0, {}))

