/*!
 * jQuery JavaScript Library v1.4.3
 * 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: Thu Oct 14 23:10:06 2010 -0400
 */
(function(E,A){function U(){return false}function ba(){return true}function ja(a,b,d){d[0].type=a;return c.event.handle.apply(b,d)}function Ga(a){var b,d,e=[],f=[],h,k,l,n,s,v,B,D;k=c.data(this,this.nodeType?"events":"__events__");if(typeof k==="function")k=k.events;if(!(a.liveFired===this||!k||!k.live||a.button&&a.type==="click")){if(a.namespace)D=RegExp("(^|\\.)"+a.namespace.split(".").join("\\.(?:.*\\.)?")+"(\\.|$)");a.liveFired=this;var H=k.live.slice(0);for(n=0;n<H.length;n++){k=H[n];k.origType.replace(X,
"")===a.type?f.push(k.selector):H.splice(n--,1)}f=c(a.target).closest(f,a.currentTarget);s=0;for(v=f.length;s<v;s++){B=f[s];for(n=0;n<H.length;n++){k=H[n];if(B.selector===k.selector&&(!D||D.test(k.namespace))){l=B.elem;h=null;if(k.preType==="mouseenter"||k.preType==="mouseleave"){a.type=k.preType;h=c(a.relatedTarget).closest(k.selector)[0]}if(!h||h!==l)e.push({elem:l,handleObj:k,level:B.level})}}}s=0;for(v=e.length;s<v;s++){f=e[s];if(d&&f.level>d)break;a.currentTarget=f.elem;a.data=f.handleObj.data;
a.handleObj=f.handleObj;D=f.handleObj.origHandler.apply(f.elem,arguments);if(D===false||a.isPropagationStopped()){d=f.level;if(D===false)b=false}}return b}}function Y(a,b){return(a&&a!=="*"?a+".":"")+b.replace(Ha,"`").replace(Ia,"&")}function ka(a,b,d){if(c.isFunction(b))return c.grep(a,function(f,h){return!!b.call(f,h,f)===d});else if(b.nodeType)return c.grep(a,function(f){return f===b===d});else if(typeof b==="string"){var e=c.grep(a,function(f){return f.nodeType===1});if(Ja.test(b))return c.filter(b,
e,!d);else b=c.filter(b,e)}return c.grep(a,function(f){return c.inArray(f,b)>=0===d})}function la(a,b){var d=0;b.each(function(){if(this.nodeName===(a[d]&&a[d].nodeName)){var e=c.data(a[d++]),f=c.data(this,e);if(e=e&&e.events){delete f.handle;f.events={};for(var h in e)for(var k in e[h])c.event.add(this,h,e[h][k],e[h][k].data)}}})}function Ka(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 ma(a,b,d){var e=b==="width"?a.offsetWidth:a.offsetHeight;if(d==="border")return e;c.each(b==="width"?La:Ma,function(){d||(e-=parseFloat(c.css(a,"padding"+this))||0);if(d==="margin")e+=parseFloat(c.css(a,"margin"+this))||0;else e-=parseFloat(c.css(a,"border"+this+"Width"))||0});return e}function ca(a,b,d,e){if(c.isArray(b)&&b.length)c.each(b,function(f,h){d||Na.test(a)?e(a,h):ca(a+"["+(typeof h==="object"||c.isArray(h)?f:"")+"]",h,d,e)});else if(!d&&b!=null&&typeof b==="object")c.isEmptyObject(b)?
e(a,""):c.each(b,function(f,h){ca(a+"["+f+"]",h,d,e)});else e(a,b)}function S(a,b){var d={};c.each(na.concat.apply([],na.slice(0,b)),function(){d[this]=a});return d}function oa(a){if(!da[a]){var b=c("<"+a+">").appendTo("body"),d=b.css("display");b.remove();if(d==="none"||d==="")d="block";da[a]=d}return da[a]}function ea(a){return c.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:false}var u=E.document,c=function(){function a(){if(!b.isReady){try{u.documentElement.doScroll("left")}catch(i){setTimeout(a,
1);return}b.ready()}}var b=function(i,r){return new b.fn.init(i,r)},d=E.jQuery,e=E.$,f,h=/^(?:[^<]*(<[\w\W]+>)[^>]*$|#([\w\-]+)$)/,k=/\S/,l=/^\s+/,n=/\s+$/,s=/\W/,v=/\d/,B=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,D=/^[\],:{}\s]*$/,H=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,w=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,G=/(?:^|:|,)(?:\s*\[)+/g,M=/(webkit)[ \/]([\w.]+)/,g=/(opera)(?:.*version)?[ \/]([\w.]+)/,j=/(msie) ([\w.]+)/,o=/(mozilla)(?:.*? rv:([\w.]+))?/,m=navigator.userAgent,p=false,
q=[],t,x=Object.prototype.toString,C=Object.prototype.hasOwnProperty,P=Array.prototype.push,N=Array.prototype.slice,R=String.prototype.trim,Q=Array.prototype.indexOf,L={};b.fn=b.prototype={init:function(i,r){var y,z,F;if(!i)return this;if(i.nodeType){this.context=this[0]=i;this.length=1;return this}if(i==="body"&&!r&&u.body){this.context=u;this[0]=u.body;this.selector="body";this.length=1;return this}if(typeof i==="string")if((y=h.exec(i))&&(y[1]||!r))if(y[1]){F=r?r.ownerDocument||r:u;if(z=B.exec(i))if(b.isPlainObject(r)){i=
[u.createElement(z[1])];b.fn.attr.call(i,r,true)}else i=[F.createElement(z[1])];else{z=b.buildFragment([y[1]],[F]);i=(z.cacheable?z.fragment.cloneNode(true):z.fragment).childNodes}return b.merge(this,i)}else{if((z=u.getElementById(y[2]))&&z.parentNode){if(z.id!==y[2])return f.find(i);this.length=1;this[0]=z}this.context=u;this.selector=i;return this}else if(!r&&!s.test(i)){this.selector=i;this.context=u;i=u.getElementsByTagName(i);return b.merge(this,i)}else return!r||r.jquery?(r||f).find(i):b(r).find(i);
else if(b.isFunction(i))return f.ready(i);if(i.selector!==A){this.selector=i.selector;this.context=i.context}return b.makeArray(i,this)},selector:"",jquery:"1.4.3",length:0,size:function(){return this.length},toArray:function(){return N.call(this,0)},get:function(i){return i==null?this.toArray():i<0?this.slice(i)[0]:this[i]},pushStack:function(i,r,y){var z=b();b.isArray(i)?P.apply(z,i):b.merge(z,i);z.prevObject=this;z.context=this.context;if(r==="find")z.selector=this.selector+(this.selector?" ":
"")+y;else if(r)z.selector=this.selector+"."+r+"("+y+")";return z},each:function(i,r){return b.each(this,i,r)},ready:function(i){b.bindReady();if(b.isReady)i.call(u,b);else q&&q.push(i);return this},eq:function(i){return i===-1?this.slice(i):this.slice(i,+i+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(N.apply(this,arguments),"slice",N.call(arguments).join(","))},map:function(i){return this.pushStack(b.map(this,function(r,y){return i.call(r,
y,r)}))},end:function(){return this.prevObject||b(null)},push:P,sort:[].sort,splice:[].splice};b.fn.init.prototype=b.fn;b.extend=b.fn.extend=function(){var i=arguments[0]||{},r=1,y=arguments.length,z=false,F,I,K,J,fa;if(typeof i==="boolean"){z=i;i=arguments[1]||{};r=2}if(typeof i!=="object"&&!b.isFunction(i))i={};if(y===r){i=this;--r}for(;r<y;r++)if((F=arguments[r])!=null)for(I in F){K=i[I];J=F[I];if(i!==J)if(z&&J&&(b.isPlainObject(J)||(fa=b.isArray(J)))){if(fa){fa=false;clone=K&&b.isArray(K)?K:[]}else clone=
K&&b.isPlainObject(K)?K:{};i[I]=b.extend(z,clone,J)}else if(J!==A)i[I]=J}return i};b.extend({noConflict:function(i){E.$=e;if(i)E.jQuery=d;return b},isReady:false,readyWait:1,ready:function(i){i===true&&b.readyWait--;if(!b.readyWait||i!==true&&!b.isReady){if(!u.body)return setTimeout(b.ready,1);b.isReady=true;if(!(i!==true&&--b.readyWait>0)){if(q){for(var r=0;i=q[r++];)i.call(u,b);q=null}b.fn.triggerHandler&&b(u).triggerHandler("ready")}}},bindReady:function(){if(!p){p=true;if(u.readyState==="complete")return setTimeout(b.ready,
1);if(u.addEventListener){u.addEventListener("DOMContentLoaded",t,false);E.addEventListener("load",b.ready,false)}else if(u.attachEvent){u.attachEvent("onreadystatechange",t);E.attachEvent("onload",b.ready);var i=false;try{i=E.frameElement==null}catch(r){}u.documentElement.doScroll&&i&&a()}}},isFunction:function(i){return b.type(i)==="function"},isArray:Array.isArray||function(i){return b.type(i)==="array"},isWindow:function(i){return i&&typeof i==="object"&&"setInterval"in i},isNaN:function(i){return i==
null||!v.test(i)||isNaN(i)},type:function(i){return i==null?String(i):L[x.call(i)]||"object"},isPlainObject:function(i){if(!i||b.type(i)!=="object"||i.nodeType||b.isWindow(i))return false;if(i.constructor&&!C.call(i,"constructor")&&!C.call(i.constructor.prototype,"isPrototypeOf"))return false;for(var r in i);return r===A||C.call(i,r)},isEmptyObject:function(i){for(var r in i)return false;return true},error:function(i){throw i;},parseJSON:function(i){if(typeof i!=="string"||!i)return null;i=b.trim(i);
if(D.test(i.replace(H,"@").replace(w,"]").replace(G,"")))return E.JSON&&E.JSON.parse?E.JSON.parse(i):(new Function("return "+i))();else b.error("Invalid JSON: "+i)},noop:function(){},globalEval:function(i){if(i&&k.test(i)){var r=u.getElementsByTagName("head")[0]||u.documentElement,y=u.createElement("script");y.type="text/javascript";if(b.support.scriptEval)y.appendChild(u.createTextNode(i));else y.text=i;r.insertBefore(y,r.firstChild);r.removeChild(y)}},nodeName:function(i,r){return i.nodeName&&i.nodeName.toUpperCase()===
r.toUpperCase()},each:function(i,r,y){var z,F=0,I=i.length,K=I===A||b.isFunction(i);if(y)if(K)for(z in i){if(r.apply(i[z],y)===false)break}else for(;F<I;){if(r.apply(i[F++],y)===false)break}else if(K)for(z in i){if(r.call(i[z],z,i[z])===false)break}else for(y=i[0];F<I&&r.call(y,F,y)!==false;y=i[++F]);return i},trim:R?function(i){return i==null?"":R.call(i)}:function(i){return i==null?"":i.toString().replace(l,"").replace(n,"")},makeArray:function(i,r){var y=r||[];if(i!=null){var z=b.type(i);i.length==
null||z==="string"||z==="function"||z==="regexp"||b.isWindow(i)?P.call(y,i):b.merge(y,i)}return y},inArray:function(i,r){if(r.indexOf)return r.indexOf(i);for(var y=0,z=r.length;y<z;y++)if(r[y]===i)return y;return-1},merge:function(i,r){var y=i.length,z=0;if(typeof r.length==="number")for(var F=r.length;z<F;z++)i[y++]=r[z];else for(;r[z]!==A;)i[y++]=r[z++];i.length=y;return i},grep:function(i,r,y){var z=[],F;y=!!y;for(var I=0,K=i.length;I<K;I++){F=!!r(i[I],I);y!==F&&z.push(i[I])}return z},map:function(i,
r,y){for(var z=[],F,I=0,K=i.length;I<K;I++){F=r(i[I],I,y);if(F!=null)z[z.length]=F}return z.concat.apply([],z)},guid:1,proxy:function(i,r,y){if(arguments.length===2)if(typeof r==="string"){y=i;i=y[r];r=A}else if(r&&!b.isFunction(r)){y=r;r=A}if(!r&&i)r=function(){return i.apply(y||this,arguments)};if(i)r.guid=i.guid=i.guid||r.guid||b.guid++;return r},access:function(i,r,y,z,F,I){var K=i.length;if(typeof r==="object"){for(var J in r)b.access(i,J,r[J],z,F,y);return i}if(y!==A){z=!I&&z&&b.isFunction(y);
for(J=0;J<K;J++)F(i[J],r,z?y.call(i[J],J,F(i[J],r)):y,I);return i}return K?F(i[0],r):A},now:function(){return(new Date).getTime()},uaMatch:function(i){i=i.toLowerCase();i=M.exec(i)||g.exec(i)||j.exec(i)||i.indexOf("compatible")<0&&o.exec(i)||[];return{browser:i[1]||"",version:i[2]||"0"}},browser:{}});b.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(i,r){L["[object "+r+"]"]=r.toLowerCase()});m=b.uaMatch(m);if(m.browser){b.browser[m.browser]=true;b.browser.version=
m.version}if(b.browser.webkit)b.browser.safari=true;if(Q)b.inArray=function(i,r){return Q.call(r,i)};if(!/\s/.test("\u00a0")){l=/^[\s\xA0]+/;n=/[\s\xA0]+$/}f=b(u);if(u.addEventListener)t=function(){u.removeEventListener("DOMContentLoaded",t,false);b.ready()};else if(u.attachEvent)t=function(){if(u.readyState==="complete"){u.detachEvent("onreadystatechange",t);b.ready()}};return E.jQuery=E.$=b}();(function(){c.support={};var a=u.documentElement,b=u.createElement("script"),d=u.createElement("div"),
e="script"+c.now();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 f=d.getElementsByTagName("*"),h=d.getElementsByTagName("a")[0],k=u.createElement("select"),l=k.appendChild(u.createElement("option"));if(!(!f||!f.length||!h)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(h.getAttribute("style")),
hrefNormalized:h.getAttribute("href")==="/a",opacity:/^0.55$/.test(h.style.opacity),cssFloat:!!h.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:l.selected,optDisabled:false,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableHiddenOffsets:true};k.disabled=true;c.support.optDisabled=!l.disabled;b.type="text/javascript";try{b.appendChild(u.createTextNode("window."+e+"=1;"))}catch(n){}a.insertBefore(b,
a.firstChild);if(E[e]){c.support.scriptEval=true;delete E[e]}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function s(){c.support.noCloneEvent=false;d.detachEvent("onclick",s)});d.cloneNode(true).fireEvent("onclick")}d=u.createElement("div");d.innerHTML="<input type='radio' name='radiotest' checked='checked'/>";a=u.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var s=u.createElement("div");
s.style.width=s.style.paddingLeft="1px";u.body.appendChild(s);c.boxModel=c.support.boxModel=s.offsetWidth===2;if("zoom"in s.style){s.style.display="inline";s.style.zoom=1;c.support.inlineBlockNeedsLayout=s.offsetWidth===2;s.style.display="";s.innerHTML="<div style='width:4px;'></div>";c.support.shrinkWrapBlocks=s.offsetWidth!==2}s.innerHTML="<table><tr><td style='padding:0;display:none'></td><td>t</td></tr></table>";var v=s.getElementsByTagName("td");c.support.reliableHiddenOffsets=v[0].offsetHeight===
0;v[0].style.display="";v[1].style.display="none";c.support.reliableHiddenOffsets=c.support.reliableHiddenOffsets&&v[0].offsetHeight===0;s.innerHTML="";u.body.removeChild(s).style.display="none"});a=function(s){var v=u.createElement("div");s="on"+s;var B=s in v;if(!B){v.setAttribute(s,"return;");B=typeof v[s]==="function"}return B};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=f=h=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",
cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var pa={},Oa=/^(?:\{.*\}|\[.*\])$/;c.extend({cache:{},uuid:0,expando:"jQuery"+c.now(),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},data:function(a,b,d){if(c.acceptData(a)){a=a==E?pa:a;var e=a.nodeType,f=e?a[c.expando]:null,h=c.cache;if(!(e&&!f&&typeof b==="string"&&d===A)){if(e)f||(a[c.expando]=f=++c.uuid);else h=a;if(typeof b==="object")if(e)h[f]=
c.extend(h[f],b);else c.extend(h,b);else if(e&&!h[f])h[f]={};a=e?h[f]:h;if(d!==A)a[b]=d;return typeof b==="string"?a[b]:a}}},removeData:function(a,b){if(c.acceptData(a)){a=a==E?pa:a;var d=a.nodeType,e=d?a[c.expando]:a,f=c.cache,h=d?f[e]:e;if(b){if(h){delete h[b];d&&c.isEmptyObject(h)&&c.removeData(a)}}else if(d&&c.support.deleteExpando)delete a[c.expando];else if(a.removeAttribute)a.removeAttribute(c.expando);else if(d)delete f[e];else for(var k in a)delete a[k]}},acceptData:function(a){if(a.nodeName){var b=
c.noData[a.nodeName.toLowerCase()];if(b)return!(b===true||a.getAttribute("classid")!==b)}return true}});c.fn.extend({data:function(a,b){if(typeof a==="undefined")return this.length?c.data(this[0]):null;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===A){var e=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(e===A&&this.length){e=c.data(this[0],a);if(e===A&&this[0].nodeType===1){e=this[0].getAttribute("data-"+a);if(typeof e===
"string")try{e=e==="true"?true:e==="false"?false:e==="null"?null:!c.isNaN(e)?parseFloat(e):Oa.test(e)?c.parseJSON(e):e}catch(f){}else e=A}}return e===A&&d[1]?this.data(d[0]):e}else return this.each(function(){var h=c(this),k=[d[0],b];h.triggerHandler("setData"+d[1]+"!",k);c.data(this,a,b);h.triggerHandler("changeData"+d[1]+"!",k)})},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 e=c.data(a,b);if(!d)return e||
[];if(!e||c.isArray(d))e=c.data(a,b,c.makeArray(d));else e.push(d);return e}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),e=d.shift();if(e==="inprogress")e=d.shift();if(e){b==="fx"&&d.unshift("inprogress");e.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===A)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 qa=/[\n\t]/g,ga=/\s+/,Pa=/\r/g,Qa=/^(?:href|src|style)$/,Ra=/^(?:button|input)$/i,Sa=/^(?:button|input|object|select|textarea)$/i,Ta=/^a(?:rea)?$/i,ra=/^(?:radio|checkbox)$/i;c.fn.extend({attr:function(a,b){return c.access(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(s){var v=c(this);v.addClass(a.call(this,s,v.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1)if(f.className){for(var h=" "+f.className+" ",k=f.className,l=0,n=b.length;l<n;l++)if(h.indexOf(" "+b[l]+" ")<0)k+=" "+b[l];f.className=c.trim(k)}else f.className=a}return this},removeClass:function(a){if(c.isFunction(a))return this.each(function(n){var s=
c(this);s.removeClass(a.call(this,n,s.attr("class")))});if(a&&typeof a==="string"||a===A)for(var b=(a||"").split(ga),d=0,e=this.length;d<e;d++){var f=this[d];if(f.nodeType===1&&f.className)if(a){for(var h=(" "+f.className+" ").replace(qa," "),k=0,l=b.length;k<l;k++)h=h.replace(" "+b[k]+" "," ");f.className=c.trim(h)}else f.className=""}return this},toggleClass:function(a,b){var d=typeof a,e=typeof b==="boolean";if(c.isFunction(a))return this.each(function(f){var h=c(this);h.toggleClass(a.call(this,
f,h.attr("class"),b),b)});return this.each(function(){if(d==="string")for(var f,h=0,k=c(this),l=b,n=a.split(ga);f=n[h++];){l=e?l:!k.hasClass(f);k[l?"addClass":"removeClass"](f)}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(qa," ").indexOf(a)>-1)return true;return false},
val:function(a){if(!arguments.length){var b=this[0];if(b){if(c.nodeName(b,"option")){var d=b.attributes.value;return!d||d.specified?b.value:b.text}if(c.nodeName(b,"select")){var e=b.selectedIndex;d=[];var f=b.options;b=b.type==="select-one";if(e<0)return null;var h=b?e:0;for(e=b?e+1:f.length;h<e;h++){var k=f[h];if(k.selected&&(c.support.optDisabled?!k.disabled:k.getAttribute("disabled")===null)&&(!k.parentNode.disabled||!c.nodeName(k.parentNode,"optgroup"))){a=c(k).val();if(b)return a;d.push(a)}}return d}if(ra.test(b.type)&&
!c.support.checkOn)return b.getAttribute("value")===null?"on":b.value;return(b.value||"").replace(Pa,"")}return A}var l=c.isFunction(a);return this.each(function(n){var s=c(this),v=a;if(this.nodeType===1){if(l)v=a.call(this,n,s.val());if(v==null)v="";else if(typeof v==="number")v+="";else if(c.isArray(v))v=c.map(v,function(D){return D==null?"":D+""});if(c.isArray(v)&&ra.test(this.type))this.checked=c.inArray(s.val(),v)>=0;else if(c.nodeName(this,"select")){var B=c.makeArray(v);c("option",this).each(function(){this.selected=
c.inArray(c(this).val(),B)>=0});if(!B.length)this.selectedIndex=-1}else this.value=v}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,e){if(!a||a.nodeType===3||a.nodeType===8)return A;if(e&&b in c.attrFn)return c(a)[b](d);e=a.nodeType!==1||!c.isXMLDoc(a);var f=d!==A;b=e&&c.props[b]||b;if(a.nodeType===1){var h=Qa.test(b);if((b in a||a[b]!==A)&&e&&!h){if(f){b==="type"&&Ra.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
if(d===null)a.nodeType===1&&a.removeAttribute(b);else 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:Sa.test(a.nodeName)||Ta.test(a.nodeName)&&a.href?0:A;return a[b]}if(!c.support.style&&e&&b==="style"){if(f)a.style.cssText=""+d;return a.style.cssText}f&&a.setAttribute(b,""+d);if(!a.attributes[b]&&a.hasAttribute&&!a.hasAttribute(b))return A;a=!c.support.hrefNormalized&&e&&
h?a.getAttribute(b,2):a.getAttribute(b);return a===null?A:a}}});var X=/\.(.*)$/,ha=/^(?:textarea|input|select)$/i,Ha=/\./g,Ia=/ /g,Ua=/[^\w\s.|`]/g,Va=function(a){return a.replace(Ua,"\\$&")},sa={focusin:0,focusout:0};c.event={add:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(c.isWindow(a)&&a!==E&&!a.frameElement)a=E;if(d===false)d=U;var f,h;if(d.handler){f=d;d=f.handler}if(!d.guid)d.guid=c.guid++;if(h=c.data(a)){var k=a.nodeType?"events":"__events__",l=h[k],n=h.handle;if(typeof l===
"function"){n=l.handle;l=l.events}else if(!l){a.nodeType||(h[k]=h=function(){});h.events=l={}}if(!n)h.handle=n=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(n.elem,arguments):A};n.elem=a;b=b.split(" ");for(var s=0,v;k=b[s++];){h=f?c.extend({},f):{handler:d,data:e};if(k.indexOf(".")>-1){v=k.split(".");k=v.shift();h.namespace=v.slice(0).sort().join(".")}else{v=[];h.namespace=""}h.type=k;if(!h.guid)h.guid=d.guid;var B=l[k],D=c.event.special[k]||{};if(!B){B=l[k]=[];
if(!D.setup||D.setup.call(a,e,v,n)===false)if(a.addEventListener)a.addEventListener(k,n,false);else a.attachEvent&&a.attachEvent("on"+k,n)}if(D.add){D.add.call(a,h);if(!h.handler.guid)h.handler.guid=d.guid}B.push(h);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,e){if(!(a.nodeType===3||a.nodeType===8)){if(d===false)d=U;var f,h,k=0,l,n,s,v,B,D,H=a.nodeType?"events":"__events__",w=c.data(a),G=w&&w[H];if(w&&G){if(typeof G==="function"){w=G;G=G.events}if(b&&b.type){d=b.handler;b=b.type}if(!b||
typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(f in G)c.event.remove(a,f+b)}else{for(b=b.split(" ");f=b[k++];){v=f;l=f.indexOf(".")<0;n=[];if(!l){n=f.split(".");f=n.shift();s=RegExp("(^|\\.)"+c.map(n.slice(0).sort(),Va).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(B=G[f])if(d){v=c.event.special[f]||{};for(h=e||0;h<B.length;h++){D=B[h];if(d.guid===D.guid){if(l||s.test(D.namespace)){e==null&&B.splice(h--,1);v.remove&&v.remove.call(a,D)}if(e!=null)break}}if(B.length===0||e!=null&&B.length===1){if(!v.teardown||
v.teardown.call(a,n)===false)c.removeEvent(a,f,w.handle);delete G[f]}}else for(h=0;h<B.length;h++){D=B[h];if(l||s.test(D.namespace)){c.event.remove(a,v,D.handler,h);B.splice(h--,1)}}}if(c.isEmptyObject(G)){if(b=w.handle)b.elem=null;delete w.events;delete w.handle;if(typeof w==="function")c.removeData(a,H);else c.isEmptyObject(w)&&c.removeData(a)}}}}},trigger:function(a,b,d,e){var f=a.type||a;if(!e){a=typeof a==="object"?a[c.expando]?a:c.extend(c.Event(f),a):c.Event(f);if(f.indexOf("!")>=0){a.type=
f=f.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[f]&&c.each(c.cache,function(){this.events&&this.events[f]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return A;a.result=A;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(e=d.nodeType?c.data(d,"handle"):(c.data(d,"__events__")||{}).handle)&&e.apply(d,b);e=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+f]&&d["on"+f].apply(d,b)===
false){a.result=false;a.preventDefault()}}catch(h){}if(!a.isPropagationStopped()&&e)c.event.trigger(a,b,e,true);else if(!a.isDefaultPrevented()){e=a.target;var k,l=f.replace(X,""),n=c.nodeName(e,"a")&&l==="click",s=c.event.special[l]||{};if((!s._default||s._default.call(d,a)===false)&&!n&&!(e&&e.nodeName&&c.noData[e.nodeName.toLowerCase()])){try{if(e[l]){if(k=e["on"+l])e["on"+l]=null;c.event.triggered=true;e[l]()}}catch(v){}if(k)e["on"+l]=k;c.event.triggered=false}}},handle:function(a){var b,d,e;
d=[];var f,h=c.makeArray(arguments);a=h[0]=c.event.fix(a||E.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;if(!b){e=a.type.split(".");a.type=e.shift();d=e.slice(0).sort();e=RegExp("(^|\\.)"+d.join("\\.(?:.*\\.)?")+"(\\.|$)")}a.namespace=a.namespace||d.join(".");f=c.data(this,this.nodeType?"events":"__events__");if(typeof f==="function")f=f.events;d=(f||{})[a.type];if(f&&d){d=d.slice(0);f=0;for(var k=d.length;f<k;f++){var l=d[f];if(b||e.test(l.namespace)){a.handler=l.handler;a.data=
l.data;a.handleObj=l;l=l.handler.apply(this,h);if(l!==A){a.result=l;if(l===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 pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix:function(a){if(a[c.expando])return a;var b=a;a=c.Event(b);for(var d=this.props.length,e;d;){e=this.props[--d];a[e]=b[e]}if(!a.target)a.target=a.srcElement||u;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=u.documentElement;d=u.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==null&&(a.charCode!=null||a.keyCode!=null))a.which=a.charCode!=null?a.charCode:a.keyCode;if(!a.metaKey&&a.ctrlKey)a.metaKey=a.ctrlKey;if(!a.which&&a.button!==A)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){c.event.add(this,Y(a.origType,a.selector),c.extend({},a,{handler:Ga,guid:a.handler.guid}))},remove:function(a){c.event.remove(this,
Y(a.origType,a.selector),a)}},beforeunload:{setup:function(a,b,d){if(c.isWindow(this))this.onbeforeunload=d},teardown:function(a,b){if(this.onbeforeunload===b)this.onbeforeunload=null}}}};c.removeEvent=u.removeEventListener?function(a,b,d){a.removeEventListener&&a.removeEventListener(b,d,false)}:function(a,b,d){a.detachEvent&&a.detachEvent("on"+b,d)};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=
c.now();this[c.expando]=true};c.Event.prototype={preventDefault:function(){this.isDefaultPrevented=ba;var a=this.originalEvent;if(a)if(a.preventDefault)a.preventDefault();else a.returnValue=false},stopPropagation:function(){this.isPropagationStopped=ba;var a=this.originalEvent;if(a){a.stopPropagation&&a.stopPropagation();a.cancelBubble=true}},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=ba;this.stopPropagation()},isDefaultPrevented:U,isPropagationStopped:U,isImmediatePropagationStopped:U};
var ta=function(a){var b=a.relatedTarget;try{for(;b&&b!==this;)b=b.parentNode;if(b!==this){a.type=a.data;c.event.handle.apply(this,arguments)}}catch(d){}},ua=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?ua:ta,a)},teardown:function(d){c.event.remove(this,b,d&&d.selector?ua:ta)}}});if(!c.support.submitBubbles)c.event.special.submit={setup:function(){if(this.nodeName.toLowerCase()!==
"form"){c.event.add(this,"click.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="submit"||d==="image")&&c(b).closest("form").length){a.liveFired=A;return ja("submit",this,arguments)}});c.event.add(this,"keypress.specialSubmit",function(a){var b=a.target,d=b.type;if((d==="text"||d==="password")&&c(b).closest("form").length&&a.keyCode===13){a.liveFired=A;return ja("submit",this,arguments)}})}else return false},teardown:function(){c.event.remove(this,".specialSubmit")}};if(!c.support.changeBubbles){var V,
va=function(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(e){return e.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},Z=function(a,b){var d=a.target,e,f;if(!(!ha.test(d.nodeName)||d.readOnly)){e=c.data(d,"_change_data");f=va(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",f);if(!(e===A||f===e))if(e!=null||f){a.type="change";a.liveFired=
A;return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:Z,beforedeactivate:Z,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return Z.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 Z.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,"_change_data",va(a))}},setup:function(){if(this.type===
"file")return false;for(var a in V)c.event.add(this,a+".specialChange",V[a]);return ha.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return ha.test(this.nodeName)}};V=c.event.special.change.filters;V.focus=V.beforeactivate}u.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(e){e=c.event.fix(e);e.type=b;return c.event.trigger(e,null,e.target)}c.event.special[b]={setup:function(){sa[b]++===0&&u.addEventListener(a,d,true)},teardown:function(){--sa[b]===
0&&u.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,e,f){if(typeof d==="object"){for(var h in d)this[b](h,e,d[h],f);return this}if(c.isFunction(e)||e===false){f=e;e=A}var k=b==="one"?c.proxy(f,function(n){c(this).unbind(n,k);return f.apply(this,arguments)}):f;if(d==="unload"&&b!=="one")this.one(d,e,f);else{h=0;for(var l=this.length;h<l;h++)c.event.add(this[h],d,k,e)}return this}});c.fn.extend({unbind:function(a,b){if(typeof a==="object"&&!a.preventDefault)for(var d in a)this.unbind(d,
a[d]);else{d=0;for(var e=this.length;d<e;d++)c.event.remove(this[d],a,b)}return this},delegate:function(a,b,d,e){return this.live(b,d,e,a)},undelegate:function(a,b,d){return arguments.length===0?this.unbind("live"):this.die(b,null,d,a)},trigger:function(a,b){return this.each(function(){c.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0]){var d=c.Event(a);d.preventDefault();d.stopPropagation();c.event.trigger(d,b,this[0]);return d.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(e){var f=(c.data(this,"lastToggle"+a.guid)||0)%d;c.data(this,"lastToggle"+a.guid,f+1);e.preventDefault();return b[f].apply(this,arguments)||false}))},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var wa={focus:"focusin",blur:"focusout",mouseenter:"mouseover",mouseleave:"mouseout"};c.each(["live","die"],function(a,b){c.fn[b]=function(d,e,f,h){var k,l=0,n,s,v=h||this.selector;h=h?this:c(this.context);if(typeof d===
"object"&&!d.preventDefault){for(k in d)h[b](k,e,d[k],v);return this}if(c.isFunction(e)){f=e;e=A}for(d=(d||"").split(" ");(k=d[l++])!=null;){n=X.exec(k);s="";if(n){s=n[0];k=k.replace(X,"")}if(k==="hover")d.push("mouseenter"+s,"mouseleave"+s);else{n=k;if(k==="focus"||k==="blur"){d.push(wa[k]+s);k+=s}else k=(wa[k]||k)+s;if(b==="live"){s=0;for(var B=h.length;s<B;s++)c.event.add(h[s],"live."+Y(k,v),{data:e,selector:v,handler:f,origType:k,origHandler:f,preType:n})}else h.unbind("live."+Y(k,v),f)}}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,e){if(e==null){e=d;d=null}return arguments.length>0?this.bind(b,d,e):this.trigger(b)};if(c.attrFn)c.attrFn[b]=true});E.attachEvent&&!E.addEventListener&&c(E).bind("unload",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,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1&&!q){x.sizcache=o;x.sizset=p}if(x.nodeName.toLowerCase()===j){C=x;break}x=x[g]}m[p]=C}}}function b(g,j,o,m,p,q){p=0;for(var t=m.length;p<t;p++){var x=m[p];if(x){x=x[g];for(var C=false;x;){if(x.sizcache===o){C=m[x.sizset];break}if(x.nodeType===1){if(!q){x.sizcache=o;x.sizset=p}if(typeof j!=="string"){if(x===j){C=true;break}}else if(l.filter(j,
[x]).length>0){C=x;break}}x=x[g]}m[p]=C}}}var d=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,e=0,f=Object.prototype.toString,h=false,k=true;[0,0].sort(function(){k=false;return 0});var l=function(g,j,o,m){o=o||[];var p=j=j||u;if(j.nodeType!==1&&j.nodeType!==9)return[];if(!g||typeof g!=="string")return o;var q=[],t,x,C,P,N=true,R=l.isXML(j),Q=g,L;do{d.exec("");if(t=d.exec(Q)){Q=t[3];q.push(t[1]);if(t[2]){P=t[3];
break}}}while(t);if(q.length>1&&s.exec(g))if(q.length===2&&n.relative[q[0]])x=M(q[0]+q[1],j);else for(x=n.relative[q[0]]?[j]:l(q.shift(),j);q.length;){g=q.shift();if(n.relative[g])g+=q.shift();x=M(g,x)}else{if(!m&&q.length>1&&j.nodeType===9&&!R&&n.match.ID.test(q[0])&&!n.match.ID.test(q[q.length-1])){t=l.find(q.shift(),j,R);j=t.expr?l.filter(t.expr,t.set)[0]:t.set[0]}if(j){t=m?{expr:q.pop(),set:D(m)}:l.find(q.pop(),q.length===1&&(q[0]==="~"||q[0]==="+")&&j.parentNode?j.parentNode:j,R);x=t.expr?l.filter(t.expr,
t.set):t.set;if(q.length>0)C=D(x);else N=false;for(;q.length;){t=L=q.pop();if(n.relative[L])t=q.pop();else L="";if(t==null)t=j;n.relative[L](C,t,R)}}else C=[]}C||(C=x);C||l.error(L||g);if(f.call(C)==="[object Array]")if(N)if(j&&j.nodeType===1)for(g=0;C[g]!=null;g++){if(C[g]&&(C[g]===true||C[g].nodeType===1&&l.contains(j,C[g])))o.push(x[g])}else for(g=0;C[g]!=null;g++)C[g]&&C[g].nodeType===1&&o.push(x[g]);else o.push.apply(o,C);else D(C,o);if(P){l(P,p,o,m);l.uniqueSort(o)}return o};l.uniqueSort=function(g){if(w){h=
k;g.sort(w);if(h)for(var j=1;j<g.length;j++)g[j]===g[j-1]&&g.splice(j--,1)}return g};l.matches=function(g,j){return l(g,null,null,j)};l.matchesSelector=function(g,j){return l(j,null,null,[g]).length>0};l.find=function(g,j,o){var m;if(!g)return[];for(var p=0,q=n.order.length;p<q;p++){var t=n.order[p],x;if(x=n.leftMatch[t].exec(g)){var C=x[1];x.splice(1,1);if(C.substr(C.length-1)!=="\\"){x[1]=(x[1]||"").replace(/\\/g,"");m=n.find[t](x,j,o);if(m!=null){g=g.replace(n.match[t],"");break}}}}m||(m=j.getElementsByTagName("*"));
return{set:m,expr:g}};l.filter=function(g,j,o,m){for(var p=g,q=[],t=j,x,C,P=j&&j[0]&&l.isXML(j[0]);g&&j.length;){for(var N in n.filter)if((x=n.leftMatch[N].exec(g))!=null&&x[2]){var R=n.filter[N],Q,L;L=x[1];C=false;x.splice(1,1);if(L.substr(L.length-1)!=="\\"){if(t===q)q=[];if(n.preFilter[N])if(x=n.preFilter[N](x,t,o,q,m,P)){if(x===true)continue}else C=Q=true;if(x)for(var i=0;(L=t[i])!=null;i++)if(L){Q=R(L,x,i,t);var r=m^!!Q;if(o&&Q!=null)if(r)C=true;else t[i]=false;else if(r){q.push(L);C=true}}if(Q!==
A){o||(t=q);g=g.replace(n.match[N],"");if(!C)return[];break}}}if(g===p)if(C==null)l.error(g);else break;p=g}return t};l.error=function(g){throw"Syntax error, unrecognized expression: "+g;};var n=l.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,j){var o=typeof j==="string",m=o&&!/\W/.test(j);o=o&&!m;if(m)j=j.toLowerCase();m=0;for(var p=g.length,q;m<p;m++)if(q=g[m]){for(;(q=q.previousSibling)&&q.nodeType!==1;);g[m]=o||q&&q.nodeName.toLowerCase()===
j?q||false:q===j}o&&l.filter(j,g,true)},">":function(g,j){var o=typeof j==="string",m,p=0,q=g.length;if(o&&!/\W/.test(j))for(j=j.toLowerCase();p<q;p++){if(m=g[p]){o=m.parentNode;g[p]=o.nodeName.toLowerCase()===j?o:false}}else{for(;p<q;p++)if(m=g[p])g[p]=o?m.parentNode:m.parentNode===j;o&&l.filter(j,g,true)}},"":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=j=j.toLowerCase();p=a}p("parentNode",j,m,g,q,o)},"~":function(g,j,o){var m=e++,p=b,q;if(typeof j==="string"&&!/\W/.test(j)){q=
j=j.toLowerCase();p=a}p("previousSibling",j,m,g,q,o)}},find:{ID:function(g,j,o){if(typeof j.getElementById!=="undefined"&&!o)return(g=j.getElementById(g[1]))&&g.parentNode?[g]:[]},NAME:function(g,j){if(typeof j.getElementsByName!=="undefined"){for(var o=[],m=j.getElementsByName(g[1]),p=0,q=m.length;p<q;p++)m[p].getAttribute("name")===g[1]&&o.push(m[p]);return o.length===0?null:o}},TAG:function(g,j){return j.getElementsByTagName(g[1])}},preFilter:{CLASS:function(g,j,o,m,p,q){g=" "+g[1].replace(/\\/g,
"")+" ";if(q)return g;q=0;for(var t;(t=j[q])!=null;q++)if(t)if(p^(t.className&&(" "+t.className+" ").replace(/[\t\n]/g," ").indexOf(g)>=0))o||m.push(t);else if(o)j[q]=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 j=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=j[1]+(j[2]||1)-0;g[3]=j[3]-0}g[0]=e++;return g},ATTR:function(g,j,o,
m,p,q){j=g[1].replace(/\\/g,"");if(!q&&n.attrMap[j])g[1]=n.attrMap[j];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,j,o,m,p){if(g[1]==="not")if((d.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=l(g[3],null,null,j);else{g=l.filter(g[3],j,o,true^p);o||m.push.apply(m,g);return false}else if(n.match.POS.test(g[0])||n.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,j,o){return!!l(o[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,j){return j===0},last:function(g,j,o,m){return j===m.length-1},even:function(g,j){return j%2===0},odd:function(g,j){return j%2===1},lt:function(g,j,o){return j<o[3]-0},gt:function(g,j,o){return j>o[3]-0},nth:function(g,j,o){return o[3]-
0===j},eq:function(g,j,o){return o[3]-0===j}},filter:{PSEUDO:function(g,j,o,m){var p=j[1],q=n.filters[p];if(q)return q(g,o,j,m);else if(p==="contains")return(g.textContent||g.innerText||l.getText([g])||"").indexOf(j[3])>=0;else if(p==="not"){j=j[3];o=0;for(m=j.length;o<m;o++)if(j[o]===g)return false;return true}else l.error("Syntax error, unrecognized expression: "+p)},CHILD:function(g,j){var o=j[1],m=g;switch(o){case "only":case "first":for(;m=m.previousSibling;)if(m.nodeType===1)return false;if(o===
"first")return true;m=g;case "last":for(;m=m.nextSibling;)if(m.nodeType===1)return false;return true;case "nth":o=j[2];var p=j[3];if(o===1&&p===0)return true;var q=j[0],t=g.parentNode;if(t&&(t.sizcache!==q||!g.nodeIndex)){var x=0;for(m=t.firstChild;m;m=m.nextSibling)if(m.nodeType===1)m.nodeIndex=++x;t.sizcache=q}m=g.nodeIndex-p;return o===0?m===0:m%o===0&&m/o>=0}},ID:function(g,j){return g.nodeType===1&&g.getAttribute("id")===j},TAG:function(g,j){return j==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===
j},CLASS:function(g,j){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(j)>-1},ATTR:function(g,j){var o=j[1];o=n.attrHandle[o]?n.attrHandle[o](g):g[o]!=null?g[o]:g.getAttribute(o);var m=o+"",p=j[2],q=j[4];return o==null?p==="!=":p==="="?m===q:p==="*="?m.indexOf(q)>=0:p==="~="?(" "+m+" ").indexOf(q)>=0:!q?m&&o!==false:p==="!="?m!==q:p==="^="?m.indexOf(q)===0:p==="$="?m.substr(m.length-q.length)===q:p==="|="?m===q||m.substr(0,q.length+1)===q+"-":false},POS:function(g,j,o,m){var p=n.setFilters[j[2]];
if(p)return p(g,o,j,m)}}},s=n.match.POS,v=function(g,j){return"\\"+(j-0+1)},B;for(B in n.match){n.match[B]=RegExp(n.match[B].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[B]=RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[B].source.replace(/\\(\d+)/g,v))}var D=function(g,j){g=Array.prototype.slice.call(g,0);if(j){j.push.apply(j,g);return j}return g};try{Array.prototype.slice.call(u.documentElement.childNodes,0)}catch(H){D=function(g,j){var o=j||[],m=0;if(f.call(g)==="[object Array]")Array.prototype.push.apply(o,
g);else if(typeof g.length==="number")for(var p=g.length;m<p;m++)o.push(g[m]);else for(;g[m];m++)o.push(g[m]);return o}}var w,G;if(u.documentElement.compareDocumentPosition)w=function(g,j){if(g===j){h=true;return 0}if(!g.compareDocumentPosition||!j.compareDocumentPosition)return g.compareDocumentPosition?-1:1;return g.compareDocumentPosition(j)&4?-1:1};else{w=function(g,j){var o=[],m=[],p=g.parentNode,q=j.parentNode,t=p;if(g===j){h=true;return 0}else if(p===q)return G(g,j);else if(p){if(!q)return 1}else return-1;
for(;t;){o.unshift(t);t=t.parentNode}for(t=q;t;){m.unshift(t);t=t.parentNode}p=o.length;q=m.length;for(t=0;t<p&&t<q;t++)if(o[t]!==m[t])return G(o[t],m[t]);return t===p?G(g,m[t],-1):G(o[t],j,1)};G=function(g,j,o){if(g===j)return o;for(g=g.nextSibling;g;){if(g===j)return-1;g=g.nextSibling}return 1}}l.getText=function(g){for(var j="",o,m=0;g[m];m++){o=g[m];if(o.nodeType===3||o.nodeType===4)j+=o.nodeValue;else if(o.nodeType!==8)j+=l.getText(o.childNodes)}return j};(function(){var g=u.createElement("div"),
j="script"+(new Date).getTime();g.innerHTML="<a name='"+j+"'/>";var o=u.documentElement;o.insertBefore(g,o.firstChild);if(u.getElementById(j)){n.find.ID=function(m,p,q){if(typeof p.getElementById!=="undefined"&&!q)return(p=p.getElementById(m[1]))?p.id===m[1]||typeof p.getAttributeNode!=="undefined"&&p.getAttributeNode("id").nodeValue===m[1]?[p]:A:[]};n.filter.ID=function(m,p){var q=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&q&&q.nodeValue===p}}o.removeChild(g);
o=g=null})();(function(){var g=u.createElement("div");g.appendChild(u.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(j,o){var m=o.getElementsByTagName(j[1]);if(j[1]==="*"){for(var p=[],q=0;m[q];q++)m[q].nodeType===1&&p.push(m[q]);m=p}return m};g.innerHTML="<a href='#'></a>";if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(j){return j.getAttribute("href",2)};g=null})();u.querySelectorAll&&
function(){var g=l,j=u.createElement("div");j.innerHTML="<p class='TEST'></p>";if(!(j.querySelectorAll&&j.querySelectorAll(".TEST").length===0)){l=function(m,p,q,t){p=p||u;if(!t&&!l.isXML(p))if(p.nodeType===9)try{return D(p.querySelectorAll(m),q)}catch(x){}else if(p.nodeType===1&&p.nodeName.toLowerCase()!=="object"){var C=p.id,P=p.id="__sizzle__";try{return D(p.querySelectorAll("#"+P+" "+m),q)}catch(N){}finally{if(C)p.id=C;else p.removeAttribute("id")}}return g(m,p,q,t)};for(var o in g)l[o]=g[o];
j=null}}();(function(){var g=u.documentElement,j=g.matchesSelector||g.mozMatchesSelector||g.webkitMatchesSelector||g.msMatchesSelector,o=false;try{j.call(u.documentElement,":sizzle")}catch(m){o=true}if(j)l.matchesSelector=function(p,q){try{if(o||!n.match.PSEUDO.test(q))return j.call(p,q)}catch(t){}return l(q,null,null,[p]).length>0}})();(function(){var g=u.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){n.order.splice(1,0,"CLASS");n.find.CLASS=function(j,o,m){if(typeof o.getElementsByClassName!=="undefined"&&!m)return o.getElementsByClassName(j[1])};g=null}}})();l.contains=u.documentElement.contains?function(g,j){return g!==j&&(g.contains?g.contains(j):true)}:function(g,j){return!!(g.compareDocumentPosition(j)&16)};l.isXML=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false};var M=function(g,
j){for(var o=[],m="",p,q=j.nodeType?[j]:j;p=n.match.PSEUDO.exec(g);){m+=p[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;p=0;for(var t=q.length;p<t;p++)l(g,q[p],o);return l.filter(m,o)};c.find=l;c.expr=l.selectors;c.expr[":"]=c.expr.filters;c.unique=l.uniqueSort;c.text=l.getText;c.isXMLDoc=l.isXML;c.contains=l.contains})();var Wa=/Until$/,Xa=/^(?:parents|prevUntil|prevAll)/,Ya=/,/,Ja=/^.[^:#\[\.,]*$/,Za=Array.prototype.slice,$a=c.expr.match.POS;c.fn.extend({find:function(a){for(var b=this.pushStack("",
"find",a),d=0,e=0,f=this.length;e<f;e++){d=b.length;c.find(a,this[e],b);if(e>0)for(var h=d;h<b.length;h++)for(var k=0;k<d;k++)if(b[k]===b[h]){b.splice(h--,1);break}}return b},has:function(a){var b=c(a);return this.filter(function(){for(var d=0,e=b.length;d<e;d++)if(c.contains(this,b[d]))return true})},not:function(a){return this.pushStack(ka(this,a,false),"not",a)},filter:function(a){return this.pushStack(ka(this,a,true),"filter",a)},is:function(a){return!!a&&c.filter(a,this).length>0},closest:function(a,
b){var d=[],e,f,h=this[0];if(c.isArray(a)){var k={},l,n=1;if(h&&a.length){e=0;for(f=a.length;e<f;e++){l=a[e];k[l]||(k[l]=c.expr.match.POS.test(l)?c(l,b||this.context):l)}for(;h&&h.ownerDocument&&h!==b;){for(l in k){e=k[l];if(e.jquery?e.index(h)>-1:c(h).is(e))d.push({selector:l,elem:h,level:n})}h=h.parentNode;n++}}return d}k=$a.test(a)?c(a,b||this.context):null;e=0;for(f=this.length;e<f;e++)for(h=this[e];h;)if(k?k.index(h)>-1:c.find.matchesSelector(h,a)){d.push(h);break}else{h=h.parentNode;if(!h||
!h.ownerDocument||h===b)break}d=d.length>1?c.unique(d):d;return this.pushStack(d,"closest",a)},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){var d=typeof a==="string"?c(a,b||this.context):c.makeArray(a),e=c.merge(this.get(),d);return this.pushStack(!d[0]||!d[0].parentNode||d[0].parentNode.nodeType===11||!e[0]||!e[0].parentNode||e[0].parentNode.nodeType===11?e:c.unique(e))},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,e){var f=c.map(this,b,d);Wa.test(a)||(e=d);if(e&&typeof e==="string")f=c.filter(e,f);f=this.length>1?c.unique(f):f;if((this.length>1||Ya.test(e))&&Xa.test(a))f=f.reverse();return this.pushStack(f,a,Za.call(arguments).join(","))}});
c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return b.length===1?c.find.matchesSelector(b[0],a)?[b[0]]:[]:c.find.matches(a,b)},dir:function(a,b,d){var e=[];for(a=a[b];a&&a.nodeType!==9&&(d===A||a.nodeType!==1||!c(a).is(d));){a.nodeType===1&&e.push(a);a=a[b]}return e},nth:function(a,b,d){b=b||1;for(var e=0;a;a=a[d])if(a.nodeType===1&&++e===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 xa=/ jQuery\d+="(?:\d+|null)"/g,
$=/^\s+/,ya=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,za=/<([\w:]+)/,ab=/<tbody/i,bb=/<|&#?\w+;/,Aa=/<(?:script|object|embed|option|style)/i,Ba=/checked\s*(?:[^=]|=\s*.checked.)/i,cb=/\=([^="'>\s]+\/)>/g,O={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,"",""]};O.optgroup=O.option;O.tbody=O.tfoot=O.colgroup=O.caption=O.thead;O.th=O.td;if(!c.support.htmlSerialize)O._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!==A)return this.empty().append((this[0]&&this[0].ownerDocument||u).createTextNode(a));return c.text(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}},remove:function(a,b){for(var d=0,e;(e=this[d])!=null;d++)if(!a||c.filter(a,[e]).length){if(!b&&e.nodeType===1){c.cleanData(e.getElementsByTagName("*"));
c.cleanData([e])}e.parentNode&&e.parentNode.removeChild(e)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,e=this.ownerDocument;if(!d){d=e.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(xa,"").replace(cb,'="$1">').replace($,
"")],e)[0]}else return this.cloneNode(true)});if(a===true){la(this,b);la(this.find("*"),b.find("*"))}return b},html:function(a){if(a===A)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(xa,""):null;else if(typeof a==="string"&&!Aa.test(a)&&(c.support.leadingWhitespace||!$.test(a))&&!O[(za.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(ya,"<$1></$2>");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(e){this.empty().append(a)}}else c.isFunction(a)?
this.each(function(f){var h=c(this);h.html(a.call(this,f,h.html()))}):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),e=d.html();d.replaceWith(a.call(this,b,e))});if(typeof a!=="string")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){var e,f,h=a[0],k=[],l;if(!c.support.checkClone&&arguments.length===3&&typeof h==="string"&&Ba.test(h))return this.each(function(){c(this).domManip(a,b,d,true)});if(c.isFunction(h))return this.each(function(s){var v=c(this);a[0]=h.call(this,s,b?v.html():A);v.domManip(a,b,d)});if(this[0]){e=h&&h.parentNode;e=c.support.parentNode&&e&&e.nodeType===11&&e.childNodes.length===this.length?{fragment:e}:c.buildFragment(a,this,k);l=e.fragment;if(f=l.childNodes.length===1?l=l.firstChild:
l.firstChild){b=b&&c.nodeName(f,"tr");f=0;for(var n=this.length;f<n;f++)d.call(b?c.nodeName(this[f],"table")?this[f].getElementsByTagName("tbody")[0]||this[f].appendChild(this[f].ownerDocument.createElement("tbody")):this[f]:this[f],f>0||e.cacheable||this.length>1?l.cloneNode(true):l)}k.length&&c.each(k,Ka)}return this}});c.buildFragment=function(a,b,d){var e,f,h;b=b&&b[0]?b[0].ownerDocument||b[0]:u;if(a.length===1&&typeof a[0]==="string"&&a[0].length<512&&b===u&&!Aa.test(a[0])&&(c.support.checkClone||
!Ba.test(a[0]))){f=true;if(h=c.fragments[a[0]])if(h!==1)e=h}if(!e){e=b.createDocumentFragment();c.clean(a,b,e,d)}if(f)c.fragments[a[0]]=h?e:1;return{fragment:e,cacheable:f}};c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var e=[];d=c(d);var f=this.length===1&&this[0].parentNode;if(f&&f.nodeType===11&&f.childNodes.length===1&&d.length===1){d[b](this[0]);return this}else{f=0;for(var h=
d.length;f<h;f++){var k=(f>0?this.clone(true):this).get();c(d[f])[b](k);e=e.concat(k)}return this.pushStack(e,a,d.selector)}}});c.extend({clean:function(a,b,d,e){b=b||u;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||u;for(var f=[],h=0,k;(k=a[h])!=null;h++){if(typeof k==="number")k+="";if(k){if(typeof k==="string"&&!bb.test(k))k=b.createTextNode(k);else if(typeof k==="string"){k=k.replace(ya,"<$1></$2>");var l=(za.exec(k)||["",""])[1].toLowerCase(),n=O[l]||O._default,
s=n[0],v=b.createElement("div");for(v.innerHTML=n[1]+k+n[2];s--;)v=v.lastChild;if(!c.support.tbody){s=ab.test(k);l=l==="table"&&!s?v.firstChild&&v.firstChild.childNodes:n[1]==="<table>"&&!s?v.childNodes:[];for(n=l.length-1;n>=0;--n)c.nodeName(l[n],"tbody")&&!l[n].childNodes.length&&l[n].parentNode.removeChild(l[n])}!c.support.leadingWhitespace&&$.test(k)&&v.insertBefore(b.createTextNode($.exec(k)[0]),v.firstChild);k=v.childNodes}if(k.nodeType)f.push(k);else f=c.merge(f,k)}}if(d)for(h=0;f[h];h++)if(e&&
c.nodeName(f[h],"script")&&(!f[h].type||f[h].type.toLowerCase()==="text/javascript"))e.push(f[h].parentNode?f[h].parentNode.removeChild(f[h]):f[h]);else{f[h].nodeType===1&&f.splice.apply(f,[h+1,0].concat(c.makeArray(f[h].getElementsByTagName("script"))));d.appendChild(f[h])}return f},cleanData:function(a){for(var b,d,e=c.cache,f=c.event.special,h=c.support.deleteExpando,k=0,l;(l=a[k])!=null;k++)if(!(l.nodeName&&c.noData[l.nodeName.toLowerCase()]))if(d=l[c.expando]){if((b=e[d])&&b.events)for(var n in b.events)f[n]?
c.event.remove(l,n):c.removeEvent(l,n,b.handle);if(h)delete l[c.expando];else l.removeAttribute&&l.removeAttribute(c.expando);delete e[d]}}});var Ca=/alpha\([^)]*\)/i,db=/opacity=([^)]*)/,eb=/-([a-z])/ig,fb=/([A-Z])/g,Da=/^-?\d+(?:px)?$/i,gb=/^-?\d/,hb={position:"absolute",visibility:"hidden",display:"block"},La=["Left","Right"],Ma=["Top","Bottom"],W,ib=u.defaultView&&u.defaultView.getComputedStyle,jb=function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){if(arguments.length===2&&b===A)return this;
return c.access(this,a,b,true,function(d,e,f){return f!==A?c.style(d,e,f):c.css(d,e)})};c.extend({cssHooks:{opacity:{get:function(a,b){if(b){var d=W(a,"opacity","opacity");return d===""?"1":d}else return a.style.opacity}}},cssNumber:{zIndex:true,fontWeight:true,opacity:true,zoom:true,lineHeight:true},cssProps:{"float":c.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,d,e){if(!(!a||a.nodeType===3||a.nodeType===8||!a.style)){var f,h=c.camelCase(b),k=a.style,l=c.cssHooks[h];b=c.cssProps[h]||
h;if(d!==A){if(!(typeof d==="number"&&isNaN(d)||d==null)){if(typeof d==="number"&&!c.cssNumber[h])d+="px";if(!l||!("set"in l)||(d=l.set(a,d))!==A)try{k[b]=d}catch(n){}}}else{if(l&&"get"in l&&(f=l.get(a,false,e))!==A)return f;return k[b]}}},css:function(a,b,d){var e,f=c.camelCase(b),h=c.cssHooks[f];b=c.cssProps[f]||f;if(h&&"get"in h&&(e=h.get(a,true,d))!==A)return e;else if(W)return W(a,b,f)},swap:function(a,b,d){var e={},f;for(f in b){e[f]=a.style[f];a.style[f]=b[f]}d.call(a);for(f in b)a.style[f]=
e[f]},camelCase:function(a){return a.replace(eb,jb)}});c.curCSS=c.css;c.each(["height","width"],function(a,b){c.cssHooks[b]={get:function(d,e,f){var h;if(e){if(d.offsetWidth!==0)h=ma(d,b,f);else c.swap(d,hb,function(){h=ma(d,b,f)});return h+"px"}},set:function(d,e){if(Da.test(e)){e=parseFloat(e);if(e>=0)return e+"px"}else return e}}});if(!c.support.opacity)c.cssHooks.opacity={get:function(a,b){return db.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":
b?"1":""},set:function(a,b){var d=a.style;d.zoom=1;var e=c.isNaN(b)?"":"alpha(opacity="+b*100+")",f=d.filter||"";d.filter=Ca.test(f)?f.replace(Ca,e):d.filter+" "+e}};if(ib)W=function(a,b,d){var e;d=d.replace(fb,"-$1").toLowerCase();if(!(b=a.ownerDocument.defaultView))return A;if(b=b.getComputedStyle(a,null)){e=b.getPropertyValue(d);if(e===""&&!c.contains(a.ownerDocument.documentElement,a))e=c.style(a,d)}return e};else if(u.documentElement.currentStyle)W=function(a,b){var d,e,f=a.currentStyle&&a.currentStyle[b],
h=a.style;if(!Da.test(f)&&gb.test(f)){d=h.left;e=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;h.left=b==="fontSize"?"1em":f||0;f=h.pixelLeft+"px";h.left=d;a.runtimeStyle.left=e}return f};if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=a.offsetHeight;return a.offsetWidth===0&&b===0||!c.support.reliableHiddenOffsets&&(a.style.display||c.css(a,"display"))==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var kb=c.now(),lb=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
mb=/^(?:select|textarea)/i,nb=/^(?:color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,ob=/^(?:GET|HEAD|DELETE)$/,Na=/\[\]$/,T=/\=\?(&|$)/,ia=/\?/,pb=/([?&])_=[^&]*/,qb=/^(\w+:)?\/\/([^\/?#]+)/,rb=/%20/g,sb=/#.*$/,Ea=c.fn.load;c.fn.extend({load:function(a,b,d){if(typeof a!=="string"&&Ea)return Ea.apply(this,arguments);else if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var f=a.slice(e,a.length);a=a.slice(0,e)}e="GET";if(b)if(c.isFunction(b)){d=
b;b=null}else if(typeof b==="object"){b=c.param(b,c.ajaxSettings.traditional);e="POST"}var h=this;c.ajax({url:a,type:e,dataType:"html",data:b,complete:function(k,l){if(l==="success"||l==="notmodified")h.html(f?c("<div>").append(k.responseText.replace(lb,"")).find(f):k.responseText);d&&h.each(d,[k.responseText,l,k])}});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||mb.test(this.nodeName)||nb.test(this.type))}).map(function(a,b){var d=c(this).val();return d==null?null:c.isArray(d)?c.map(d,function(e){return{name:b.name,value:e}}):{name:b.name,value:d}}).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,e){if(c.isFunction(b)){e=e||d;d=b;b=null}return c.ajax({type:"GET",url:a,data:b,success:d,dataType:e})},
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,e){if(c.isFunction(b)){e=e||d;d=b;b={}}return c.ajax({type:"POST",url:a,data:b,success:d,dataType:e})},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:function(){return new E.XMLHttpRequest},accepts:{xml:"application/xml, text/xml",html:"text/html",
script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},ajax:function(a){var b=c.extend(true,{},c.ajaxSettings,a),d,e,f,h=b.type.toUpperCase(),k=ob.test(h);b.url=b.url.replace(sb,"");b.context=a&&a.context!=null?a.context:b;if(b.data&&b.processData&&typeof b.data!=="string")b.data=c.param(b.data,b.traditional);if(b.dataType==="jsonp"){if(h==="GET")T.test(b.url)||(b.url+=(ia.test(b.url)?"&":"?")+(b.jsonp||"callback")+"=?");else if(!b.data||
!T.test(b.data))b.data=(b.data?b.data+"&":"")+(b.jsonp||"callback")+"=?";b.dataType="json"}if(b.dataType==="json"&&(b.data&&T.test(b.data)||T.test(b.url))){d=b.jsonpCallback||"jsonp"+kb++;if(b.data)b.data=(b.data+"").replace(T,"="+d+"$1");b.url=b.url.replace(T,"="+d+"$1");b.dataType="script";var l=E[d];E[d]=function(m){f=m;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);if(c.isFunction(l))l(m);else{E[d]=A;try{delete E[d]}catch(p){}}v&&v.removeChild(B)}}if(b.dataType==="script"&&b.cache===null)b.cache=
false;if(b.cache===false&&h==="GET"){var n=c.now(),s=b.url.replace(pb,"$1_="+n);b.url=s+(s===b.url?(ia.test(b.url)?"&":"?")+"_="+n:"")}if(b.data&&h==="GET")b.url+=(ia.test(b.url)?"&":"?")+b.data;b.global&&c.active++===0&&c.event.trigger("ajaxStart");n=(n=qb.exec(b.url))&&(n[1]&&n[1]!==location.protocol||n[2]!==location.host);if(b.dataType==="script"&&h==="GET"&&n){var v=u.getElementsByTagName("head")[0]||u.documentElement,B=u.createElement("script");if(b.scriptCharset)B.charset=b.scriptCharset;B.src=
b.url;if(!d){var D=false;B.onload=B.onreadystatechange=function(){if(!D&&(!this.readyState||this.readyState==="loaded"||this.readyState==="complete")){D=true;c.handleSuccess(b,w,e,f);c.handleComplete(b,w,e,f);B.onload=B.onreadystatechange=null;v&&B.parentNode&&v.removeChild(B)}}}v.insertBefore(B,v.firstChild);return A}var H=false,w=b.xhr();if(w){b.username?w.open(h,b.url,b.async,b.username,b.password):w.open(h,b.url,b.async);try{if(b.data!=null&&!k||a&&a.contentType)w.setRequestHeader("Content-Type",
b.contentType);if(b.ifModified){c.lastModified[b.url]&&w.setRequestHeader("If-Modified-Since",c.lastModified[b.url]);c.etag[b.url]&&w.setRequestHeader("If-None-Match",c.etag[b.url])}n||w.setRequestHeader("X-Requested-With","XMLHttpRequest");w.setRequestHeader("Accept",b.dataType&&b.accepts[b.dataType]?b.accepts[b.dataType]+", */*; q=0.01":b.accepts._default)}catch(G){}if(b.beforeSend&&b.beforeSend.call(b.context,w,b)===false){b.global&&c.active--===1&&c.event.trigger("ajaxStop");w.abort();return false}b.global&&
c.triggerGlobal(b,"ajaxSend",[w,b]);var M=w.onreadystatechange=function(m){if(!w||w.readyState===0||m==="abort"){H||c.handleComplete(b,w,e,f);H=true;if(w)w.onreadystatechange=c.noop}else if(!H&&w&&(w.readyState===4||m==="timeout")){H=true;w.onreadystatechange=c.noop;e=m==="timeout"?"timeout":!c.httpSuccess(w)?"error":b.ifModified&&c.httpNotModified(w,b.url)?"notmodified":"success";var p;if(e==="success")try{f=c.httpData(w,b.dataType,b)}catch(q){e="parsererror";p=q}if(e==="success"||e==="notmodified")d||
c.handleSuccess(b,w,e,f);else c.handleError(b,w,e,p);d||c.handleComplete(b,w,e,f);m==="timeout"&&w.abort();if(b.async)w=null}};try{var g=w.abort;w.abort=function(){w&&g.call&&g.call(w);M("abort")}}catch(j){}b.async&&b.timeout>0&&setTimeout(function(){w&&!H&&M("timeout")},b.timeout);try{w.send(k||b.data==null?null:b.data)}catch(o){c.handleError(b,w,null,o);c.handleComplete(b,w,e,f)}b.async||M();return w}},param:function(a,b){var d=[],e=function(h,k){k=c.isFunction(k)?k():k;d[d.length]=encodeURIComponent(h)+
"="+encodeURIComponent(k)};if(b===A)b=c.ajaxSettings.traditional;if(c.isArray(a)||a.jquery)c.each(a,function(){e(this.name,this.value)});else for(var f in a)ca(f,a[f],b,e);return d.join("&").replace(rb,"+")}});c.extend({active:0,lastModified:{},etag:{},handleError:function(a,b,d,e){a.error&&a.error.call(a.context,b,d,e);a.global&&c.triggerGlobal(a,"ajaxError",[b,a,e])},handleSuccess:function(a,b,d,e){a.success&&a.success.call(a.context,e,d,b);a.global&&c.triggerGlobal(a,"ajaxSuccess",[b,a])},handleComplete:function(a,
b,d){a.complete&&a.complete.call(a.context,b,d);a.global&&c.triggerGlobal(a,"ajaxComplete",[b,a]);a.global&&c.active--===1&&c.event.trigger("ajaxStop")},triggerGlobal:function(a,b,d){(a.context&&a.context.url==null?c(a.context):c.event).trigger(b,d)},httpSuccess:function(a){try{return!a.status&&location.protocol==="file:"||a.status>=200&&a.status<300||a.status===304||a.status===1223}catch(b){}return false},httpNotModified:function(a,b){var d=a.getResponseHeader("Last-Modified"),e=a.getResponseHeader("Etag");
if(d)c.lastModified[b]=d;if(e)c.etag[b]=e;return a.status===304},httpData:function(a,b,d){var e=a.getResponseHeader("content-type")||"",f=b==="xml"||!b&&e.indexOf("xml")>=0;a=f?a.responseXML:a.responseText;f&&a.documentElement.nodeName==="parsererror"&&c.error("parsererror");if(d&&d.dataFilter)a=d.dataFilter(a,b);if(typeof a==="string")if(b==="json"||!b&&e.indexOf("json")>=0)a=c.parseJSON(a);else if(b==="script"||!b&&e.indexOf("javascript")>=0)c.globalEval(a);return a}});if(E.ActiveXObject)c.ajaxSettings.xhr=
function(){if(E.location.protocol!=="file:")try{return new E.XMLHttpRequest}catch(a){}try{return new E.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}};c.support.ajax=!!c.ajaxSettings.xhr();var da={},tb=/^(?:toggle|show|hide)$/,ub=/^([+\-]=)?([\d+.\-]+)(.*)$/,aa,na=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]];c.fn.extend({show:function(a,b,d){if(a||a===0)return this.animate(S("show",3),a,b,d);else{a=
0;for(b=this.length;a<b;a++){if(!c.data(this[a],"olddisplay")&&this[a].style.display==="none")this[a].style.display="";this[a].style.display===""&&c.css(this[a],"display")==="none"&&c.data(this[a],"olddisplay",oa(this[a].nodeName))}for(a=0;a<b;a++)this[a].style.display=c.data(this[a],"olddisplay")||"";return this}},hide:function(a,b,d){if(a||a===0)return this.animate(S("hide",3),a,b,d);else{a=0;for(b=this.length;a<b;a++){d=c.css(this[a],"display");d!=="none"&&c.data(this[a],"olddisplay",d)}for(a=
0;a<b;a++)this[a].style.display="none";return this}},_toggle:c.fn.toggle,toggle:function(a,b,d){var e=typeof a==="boolean";if(c.isFunction(a)&&c.isFunction(b))this._toggle.apply(this,arguments);else a==null||e?this.each(function(){var f=e?a:c(this).is(":hidden");c(this)[f?"show":"hide"]()}):this.animate(S("toggle",3),a,b,d);return this},fadeTo:function(a,b,d,e){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,d,e)},animate:function(a,b,d,e){var f=c.speed(b,d,e);if(c.isEmptyObject(a))return this.each(f.complete);
return this[f.queue===false?"each":"queue"](function(){var h=c.extend({},f),k,l=this.nodeType===1,n=l&&c(this).is(":hidden"),s=this;for(k in a){var v=c.camelCase(k);if(k!==v){a[v]=a[k];delete a[k];k=v}if(a[k]==="hide"&&n||a[k]==="show"&&!n)return h.complete.call(this);if(l&&(k==="height"||k==="width")){h.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(c.css(this,"display")==="inline"&&c.css(this,"float")==="none")if(c.support.inlineBlockNeedsLayout)if(oa(this.nodeName)===
"inline")this.style.display="inline-block";else{this.style.display="inline";this.style.zoom=1}else this.style.display="inline-block"}if(c.isArray(a[k])){(h.specialEasing=h.specialEasing||{})[k]=a[k][1];a[k]=a[k][0]}}if(h.overflow!=null)this.style.overflow="hidden";h.curAnim=c.extend({},a);c.each(a,function(B,D){var H=new c.fx(s,h,B);if(tb.test(D))H[D==="toggle"?n?"show":"hide":D](a);else{var w=ub.exec(D),G=H.cur(true)||0;if(w){var M=parseFloat(w[2]),g=w[3]||"px";if(g!=="px"){c.style(s,B,(M||1)+g);
G=(M||1)/H.cur(true)*G;c.style(s,B,G+g)}if(w[1])M=(w[1]==="-="?-1:1)*M+G;H.custom(G,M,g)}else H.custom(G,D,"")}});return true})},stop:function(a,b){var d=c.timers;a&&this.queue([]);this.each(function(){for(var e=d.length-1;e>=0;e--)if(d[e].elem===this){b&&d[e](true);d.splice(e,1)}});b||this.dequeue();return this}});c.each({slideDown:S("show",1),slideUp:S("hide",1),slideToggle:S("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"}},function(a,b){c.fn[a]=function(d,e,f){return this.animate(b,
d,e,f)}});c.extend({speed:function(a,b,d){var e=a&&typeof a==="object"?c.extend({},a):{complete:d||!d&&b||c.isFunction(a)&&a,duration:a,easing:d&&b||b&&!c.isFunction(b)&&b};e.duration=c.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in c.fx.speeds?c.fx.speeds[e.duration]:c.fx.speeds._default;e.old=e.complete;e.complete=function(){e.queue!==false&&c(this).dequeue();c.isFunction(e.old)&&e.old.call(this)};return e},easing:{linear:function(a,b,d,e){return d+e*a},swing:function(a,b,d,e){return(-Math.cos(a*
Math.PI)/2+0.5)*e+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)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a=parseFloat(c.css(this.elem,this.prop));return a&&a>-1E4?a:0},custom:function(a,b,d){function e(h){return f.step(h)}
this.startTime=c.now();this.start=a;this.end=b;this.unit=d||this.unit||"px";this.now=this.start;this.pos=this.state=0;var f=this;a=c.fx;e.elem=this.elem;if(e()&&c.timers.push(e)&&!aa)aa=setInterval(a.tick,a.interval)},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=c.now(),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 e in this.options.curAnim)if(this.options.curAnim[e]!==true)d=false;if(d){if(this.options.overflow!=null&&!c.support.shrinkWrapBlocks){var f=this.elem,h=this.options;c.each(["","X","Y"],function(l,n){f.style["overflow"+n]=h.overflow[l]})}this.options.hide&&c(this.elem).hide();if(this.options.hide||
this.options.show)for(var k in this.options.curAnim)c.style(this.elem,k,this.options.orig[k]);this.options.complete.call(this.elem)}return false}else{a=b-this.startTime;this.state=a/this.options.duration;b=this.options.easing||(c.easing.swing?"swing":"linear");this.pos=c.easing[this.options.specialEasing&&this.options.specialEasing[this.prop]||b](this.state,a,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()},interval:13,stop:function(){clearInterval(aa);aa=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};var vb=/^t(?:able|d|h)$/i,Fa=/^(?:body|html)$/i;c.fn.offset="getBoundingClientRect"in u.documentElement?function(a){var b=this[0],d;if(a)return this.each(function(k){c.offset.setOffset(this,a,k)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return c.offset.bodyOffset(b);try{d=b.getBoundingClientRect()}catch(e){}var f=b.ownerDocument,h=f.documentElement;if(!d||!c.contains(h,b))return d||{top:0,left:0};b=f.body;f=ea(f);return{top:d.top+(f.pageYOffset||c.support.boxModel&&
h.scrollTop||b.scrollTop)-(h.clientTop||b.clientTop||0),left:d.left+(f.pageXOffset||c.support.boxModel&&h.scrollLeft||b.scrollLeft)-(h.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,e=b.ownerDocument,f,h=e.documentElement,k=e.body;f=(e=e.defaultView)?e.getComputedStyle(b,null):b.currentStyle;
for(var l=b.offsetTop,n=b.offsetLeft;(b=b.parentNode)&&b!==k&&b!==h;){if(c.offset.supportsFixedPosition&&f.position==="fixed")break;f=e?e.getComputedStyle(b,null):b.currentStyle;l-=b.scrollTop;n-=b.scrollLeft;if(b===d){l+=b.offsetTop;n+=b.offsetLeft;if(c.offset.doesNotAddBorder&&!(c.offset.doesAddBorderForTableAndCells&&vb.test(b.nodeName))){l+=parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}d=b.offsetParent}if(c.offset.subtractsBorderForOverflowNotVisible&&f.overflow!=="visible"){l+=
parseFloat(f.borderTopWidth)||0;n+=parseFloat(f.borderLeftWidth)||0}f=f}if(f.position==="relative"||f.position==="static"){l+=k.offsetTop;n+=k.offsetLeft}if(c.offset.supportsFixedPosition&&f.position==="fixed"){l+=Math.max(h.scrollTop,k.scrollTop);n+=Math.max(h.scrollLeft,k.scrollLeft)}return{top:l,left:n}};c.offset={initialize:function(){var a=u.body,b=u.createElement("div"),d,e,f,h=parseFloat(c.css(a,"marginTop"))||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;e=d.firstChild;f=d.nextSibling.firstChild.firstChild;this.doesNotAddBorder=e.offsetTop!==5;this.doesAddBorderForTableAndCells=
f.offsetTop===5;e.style.position="fixed";e.style.top="20px";this.supportsFixedPosition=e.offsetTop===20||e.offsetTop===15;e.style.position=e.style.top="";d.style.overflow="hidden";d.style.position="relative";this.subtractsBorderForOverflowNotVisible=e.offsetTop===-5;this.doesNotIncludeMarginInBodyOffset=a.offsetTop!==h;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.css(a,
"marginTop"))||0;d+=parseFloat(c.css(a,"marginLeft"))||0}return{top:b,left:d}},setOffset:function(a,b,d){var e=c.css(a,"position");if(e==="static")a.style.position="relative";var f=c(a),h=f.offset(),k=c.css(a,"top"),l=c.css(a,"left"),n=e==="absolute"&&c.inArray("auto",[k,l])>-1;e={};var s={};if(n)s=f.position();k=n?s.top:parseInt(k,10)||0;l=n?s.left:parseInt(l,10)||0;if(c.isFunction(b))b=b.call(a,d,h);if(b.top!=null)e.top=b.top-h.top+k;if(b.left!=null)e.left=b.left-h.left+l;"using"in b?b.using.call(a,
e):f.css(e)}};c.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),d=this.offset(),e=Fa.test(b[0].nodeName)?{top:0,left:0}:b.offset();d.top-=parseFloat(c.css(a,"marginTop"))||0;d.left-=parseFloat(c.css(a,"marginLeft"))||0;e.top+=parseFloat(c.css(b[0],"borderTopWidth"))||0;e.left+=parseFloat(c.css(b[0],"borderLeftWidth"))||0;return{top:d.top-e.top,left:d.left-e.left}},offsetParent:function(){return this.map(function(){for(var a=this.offsetParent||u.body;a&&!Fa.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(e){var f=this[0],h;if(!f)return null;if(e!==A)return this.each(function(){if(h=ea(this))h.scrollTo(!a?e:c(h).scrollLeft(),a?e:c(h).scrollTop());else this[d]=e});else return(h=ea(f))?"pageXOffset"in h?h[a?"pageYOffset":"pageXOffset"]:c.support.boxModel&&h.document.documentElement[d]||h.document.body[d]:f[d]}});c.each(["Height","Width"],function(a,b){var d=b.toLowerCase();
c.fn["inner"+b]=function(){return this[0]?parseFloat(c.css(this[0],d,"padding")):null};c.fn["outer"+b]=function(e){return this[0]?parseFloat(c.css(this[0],d,e?"margin":"border")):null};c.fn[d]=function(e){var f=this[0];if(!f)return e==null?null:this;if(c.isFunction(e))return this.each(function(h){var k=c(this);k[d](e.call(this,h,k[d]()))});return c.isWindow(f)?f.document.compatMode==="CSS1Compat"&&f.document.documentElement["client"+b]||f.document.body["client"+b]:f.nodeType===9?Math.max(f.documentElement["client"+
b],f.body["scroll"+b],f.documentElement["scroll"+b],f.body["offset"+b],f.documentElement["offset"+b]):e===A?parseFloat(c.css(f,d)):this.css(d,typeof e==="string"?e:e+"px")}})})(window);
function addEvent(obj,evType,fn){if(obj.addEventListener){obj.addEventListener(evType,fn,false);return true;}else if(obj.attachEvent){var r=obj.attachEvent("on"+evType,fn);return r;}else{return false;}}
function showOrHide(elementid)
{if(document.getElementById(elementid))
{element=document.getElementById(elementid);if(element.style.display=="none")
{element.style.display='';}
else
{element.style.display='none';}}}
function displayDifferentDeliveryAddress(type,element,blnResetFields)
{var arrElements=[];arrElements[0]='delivery_full_name';arrElements[1]='delivery_house_number';arrElements[2]='delivery_address1';arrElements[3]='delivery_address2';arrElements[4]='delivery_town';arrElements[5]='delivery_county';arrElements[6]='delivery_postcode';arrElements[7]='delivery_postcode_find';arrElements[8]='delivery_country';arrElements[9]='delivery_telephone';arrElements[10]='delivery_company_name';arrElements[11]='delivery_mobile';arrElements[12]='delivery_title';arrElements[13]='delivery_firstname';arrElements[14]='delivery_surname';var arrLen=arrElements.length;for(var i=0,x=arrLen;i<x;++i)
{if(type=='show')
{if(blnResetFields==true)
{if(arrElements[i]!='delivery_full_name'&&arrElements[i]!='delivery_country')
{if(document.getElementById(arrElements[i]))document.getElementById(arrElements[i]).value='';}}
if(document.getElementById(arrElements[i]))document.getElementById(arrElements[i]).disabled=false;if(document.getElementById(arrElements[i]+'_header'))document.getElementById(arrElements[i]+'_header').disabled=false;$('.delivery').removeClass('field_disabled');}
else
{if(document.getElementById(arrElements[i]))document.getElementById(arrElements[i]).disabled=true;if(document.getElementById(arrElements[i]+'_header'))document.getElementById(arrElements[i]+'_header').disabled=true;$('.delivery').addClass('field_disabled');}}}
function changeQuantity(iKey,strDirection)
{if(strDirection=='plus')
{if(((arrBasket[iKey]['quantity']+1)>arrBasket[iKey]['stock'])&&arrBasket[iKey]['stock']!=-1)
{alert(arrBasket[iKey]['title']+'\n\nSorry, we currently only have '+arrBasket[iKey]['stock']+' of this item in stock');return false;}
else
{return true;}}
else if(strDirection=='minus')
{if((arrBasket[iKey]['quantity']==1))
{if(confirm("Are you sure you want to remove this item from your basket?\n\nClick \"OK\" for Yes or \"Cancel\" for No"))
{return true;}
else
{return false;}
return false;}
else
{return true;}}
return true;}
function updateQuantity(iKey,iQuantity)
{
if(((iQuantity) > arrBasket[iKey]['stock']) && arrBasket[iKey]['stock'] != -1)
{
alert(arrBasket[iKey]['title']+'\n\nSorry, we currently only have '+arrBasket[iKey]['stock']+' of this item in stock');
return false;
}
else
{
return true;
}
}
function removeItem(iKey)
{if(confirm("Are you sure you want to remove this item from your basket?\n\nClick \"OK\" for Yes or \"Cancel\" for No"))
{return true;}
else
{return false;}}
function popupWindow(url,width,height)
{LeftPosition=(screen.width)?(screen.width-500)/2:0;TopPosition=(screen.height)?(screen.height-500)/2:0;settings='height='+height+',width='+width+',top='+TopPosition+',left='+LeftPosition+',toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1';win=window.open(url,null,settings);return false;}
function initCurrency(strCurrency)
{var strStoredCurrency=$.cookie('VSCurrency');hideCurrencyPrices();if(!strStoredCurrency)
{toggleCurrency(strCurrency);}
else
{toggleCurrency(strStoredCurrency);}}
function hideCurrencyPrices()
{var arrCurrencies=$('#currency_options').children();for(var i=0;i<arrCurrencies.length;++i)
{$('#link_'+arrCurrencies[i].id).bind("click",function(){var strCurrency=this.id;strCurrency=strCurrency.replace(/link_currency_/,'');toggleCurrency(strCurrency);this.blur();return false;});}}
function refreshCurrency()
{hideCurrencyPrices();toggleCurrency($.cookie('VSCurrency'));}
function toggleCurrency(strCurrencyCode)
{if($("#price_swap")&&$('#link_currency_'+strCurrencyCode).attr('name')=='N')
{$("#price_swap").css('visibility','hidden');}
else
{$("#price_swap").css('visibility','visible');}
if(strCurrencyCode==$.cookie('VSCurrency'))
{return;}
var arrCurrencies=$('#currency_options').children();for(var i=0;i<arrCurrencies.length;++i)
{if(document.getElementById('link_'+arrCurrencies[i].id))
{document.getElementById('link_'+arrCurrencies[i].id).className='';var strCurrency=arrCurrencies[i].id;strCurrency=strCurrency.replace(/currency_/,'');$("."+strCurrency).hide();$("#img_currency_active_"+strCurrency).hide();$("#img_currency_inactive_"+strCurrency).show();$("#extra_img_currency_active_"+strCurrency).hide();$("#extra_img_currency_inactive_"+strCurrency).show();}}
document.getElementById('link_currency_'+strCurrencyCode).className='active';if($('#link_currency_'+strCurrencyCode).attr('name')=='N')
{if($("#price_swap"))
{$("#price_swap").css('visibility','hidden');}}
if($.cookie('VSCurrency')!=strCurrencyCode)
{$.cookie('VSCurrency',strCurrencyCode,{expires:+365,path:'/',domain:window.location.hostname});}
$("."+strCurrencyCode).show();$("#img_currency_active_"+strCurrencyCode).show();$("#img_currency_inactive_"+strCurrencyCode).hide();$("#extra_img_currency_active_"+strCurrencyCode).show();$("#extra_img_currency_inactive_"+strCurrencyCode).hide();}
function initVat()
{if($('#vat_options'))
{var arrVatOptions=$('#vat_options').children();for(var i=0;i<arrVatOptions.length;++i)
{$('#link_'+arrVatOptions[i].id).bind("click",function(){var strDisplayPrices=this.id;strDisplayPrices=strDisplayPrices.replace(/link_vat_options_/,'');refreshVat();this.blur();return false;});}}
if($('#price_swap'))
{$("#price_swap").bind("click",function(){toggleVat(false);this.blur();return false;});}
toggleVat($.cookie('VSVatPrices'));}
function refreshVat()
{var strDisplayPricesCookie=$.cookie('VSVatPrices');if(strDisplayPricesCookie=='')
{return;}
toggleVat($.cookie('VSVatPrices'));}
function toggleVat(strDisplayPrices)
{if(strDisplayPrices==false)
{if($.cookie('VSVatPrices')=='inc')
{strDisplayPrices='ex';}
else
{strDisplayPrices='inc';}}
if(strDisplayPrices=='ex')
{$("#link_vat_options_ex").addClass('active');$("#link_vat_options_inc").removeClass('active');$(".ex").show();$(".inc").hide();if($("#vat_basket_row"))
{$("#vat_basket_row").show();}}
else
{$("#link_vat_options_inc").addClass('active');$("#link_vat_options_ex").removeClass('active');$(".ex").hide();$(".inc").show();if($("#vat_basket_row"))
{$("#vat_basket_row").hide();}}
if($.cookie('VSVatPrices')!=strDisplayPrices)
{$.cookie('VSVatPrices',strDisplayPrices,{expires:+365,path:'/',domain:window.location.hostname});}}
function initReviewStarRater()
{if($('#review_star_1').length)
{var iPointer=1;while($('#review_star_'+iPointer).length)
{$('#review_star_'+iPointer).bind("click",function(){var strCurrentWidth=this.innerHTML;var strNewWidth=strCurrentWidth*20+'%';$('#review_star_user_rating').css('width',strNewWidth);$('#review_form_rating').focus();$('#review_form_rating').val(strCurrentWidth);$('#review_form_rating').blur();$('#review_form_subject').focus();$('#review_form_rating_errors').hide();var iMessagePointer=1;while($('#rating_message_'+iMessagePointer).length)
{$('#rating_message_'+iMessagePointer).hide();iMessagePointer++;}
$('#rating_message_'+strCurrentWidth).show();return false;});iPointer++;}}}
function updateLHSNavigationCookie(iCategoryGroupID)
{$.cookie('VSCategoryGroup',iCategoryGroupID,{expires:+364,path:'/',domain:window.location.hostname});}
function updateLHSNavigationTabs(iCategoryGroupID)
{var iCounter=1;while($('#category_group_'+iCounter+'_on').length>0)
{if($('#category_group_'+iCounter+'_on').length)
{$('#category_group_'+iCounter+'_on').hide();}
if($('#category_group_'+iCounter+'_off').length)
{$('#category_group_'+iCounter+'_off').show();}
iCounter++;}
if($('#category_group_'+iCategoryGroupID+'_on').length)
{$('#category_group_'+iCategoryGroupID+'_off').hide();$('#category_group_'+iCategoryGroupID+'_on').show();}}
function updateLHSNavigationLinks(iCategoryGroupID)
{var iCounter=1;while($('#category_group_'+iCounter+'_on').length>0)
{if($('#shop_categories_'+iCounter).length>0)
{$('#shop_categories_'+iCounter).hide();}
iCounter++;}
$('#shop_categories_'+iCategoryGroupID).show();}
function showLHSNavigation(iCategoryGroupID)
{updateLHSNavigationTabs(iCategoryGroupID);updateLHSNavigationLinks(iCategoryGroupID);updateLHSNavigationCookie(iCategoryGroupID);}
function toggleLHSCategoryFilterNavigation()
{if($('#menu_left').length>0)
{showOrHide('menu_left');}
else if($('#default_navigation').length>0)
{showOrHide('default_navigation');}
showOrHide('filter_wrapper');}
var arrPausePromoUnits=Array();var arrCancelPromoUnits=Array();var arrCurrentBanners=Array();var iBannerIDOverride=null;function pausePromoUnitFade(strPromoUnitName)
{arrPausePromoUnits[parseInt(strPromoUnitName)]=0;}
function resumePromoUnitFade(strPromoUnitName,iInterval,iMouseoutInterval)
{arrPausePromoUnits[parseInt(strPromoUnitName)]=1;}
var promoUnitFadeTimer=null;function initPromoUnitFade(strPromoUnitName,iStartingBannerID,iInterval,iMouseoutInterval,blnPauseOnHover)
{if(!blnPauseOnHover){blnPauseOnHover='true';}
arrPausePromoUnits[parseInt(strPromoUnitName)]=1;arrCancelPromoUnits[parseInt(strPromoUnitName)]=0;promoUnitFadeTimer=window.setTimeout("triggerRunPromoUnitFade('"+strPromoUnitName+"', '"+iStartingBannerID+"', '"+iInterval*1000+"')",iInterval*1000);if(blnPauseOnHover=='true')
{$('.'+strPromoUnitName+'fade').attr('onmouseover','pausePromoUnitFade("'+strPromoUnitName+'");');$('.'+strPromoUnitName+'fade').attr('onmouseout','resumePromoUnitFade("'+strPromoUnitName+'", "'+iInterval*1000+'", "'+iMouseoutInterval+'");');}
$('.'+strPromoUnitName+'thumbs > a').bind('click',function()
{clearInterval(promoUnitFadeTimer);arrCancelPromoUnits[parseInt(strPromoUnitName)]=1;arrPausePromoUnits[parseInt(strPromoUnitName)]=1;runPromoUnitFade(strPromoUnitName,parseInt(this.name)-1,-1);return false;});}
function triggerRunPromoUnitFade(strPromoUnitName,iStartingBannerID,iInterval){if(arrCancelPromoUnits[parseInt(strPromoUnitName)]==0)
{promoUnitFadeTimer=window.setTimeout("runPromoUnitFade('"+strPromoUnitName+"', '"+iStartingBannerID+"', '"+iInterval+"');",iInterval);}
else
{arrCancelPromoUnits[parseInt(strPromoUnitName)]=0;}}
function runPromoUnitFade(strPromoUnitName,iStartingBannerID,iInterval)
{iNewBannerID=parseInt(iStartingBannerID)+parseInt(1);if(!$("#"+strPromoUnitName+iNewBannerID).length){iNewBannerID=0;}
if(arrPausePromoUnits[parseInt(strPromoUnitName)]==1){arrCurrentBanners[strPromoUnitName]=iNewBannerID;$("#"+strPromoUnitName+iStartingBannerID).fadeOut(Math.ceil(iInterval/(iInterval/1000)));$("."+strPromoUnitName+'fade').fadeOut(Math.ceil(iInterval/(iInterval/1000)));$("#"+strPromoUnitName+iNewBannerID).fadeIn(Math.ceil(iInterval/(iInterval/1000)));if(iStartingBannerID<0)iStartingBannerID=0;if($('#thumb_'+strPromoUnitName+iStartingBannerID).length>0)
{$("."+strPromoUnitName+'thumbs').removeClass('selected');$("#thumb_"+strPromoUnitName+iNewBannerID).addClass('selected');}}
if(iInterval>0){triggerRunPromoUnitFade(strPromoUnitName,iNewBannerID,iInterval);}}
var iLastPriceBreakPointer=0;function togglePriceBands(iPriceBreakQuantity,strElementID)
{while($('#'+strElementID+'_'+iPriceBreakQuantity).length==0&&iPriceBreakQuantity>0)
{iPriceBreakQuantity--;}
if(iPriceBreakQuantity>0)
{if(iPriceBreakQuantity!=iLastPriceBreakPointer)
{$('.'+strElementID).hide();$('#'+strElementID+'_'+iPriceBreakQuantity).show();}}
iLastPriceBreakPointer=iPriceBreakQuantity;}
function alterQuantity(iIncrement,iMinQuantity,iMaxQuantity,strElementID)
{simpleAlterQuantity(iIncrement,iMinQuantity,iMaxQuantity,strElementID);togglePriceBands(iNewQuantity,'price_break');}
function simpleAlterQuantity(iIncrement,iMinQuantity,iMaxQuantity,strElementID)
{iCurrentQuantity=parseInt($("#"+strElementID).val());iNewQuantity=parseInt(iCurrentQuantity)+parseInt(iIncrement);if(iNewQuantity<iMinQuantity)
{iNewQuantity=iMinQuantity;}
if(iMaxQuantity>0&&iNewQuantity>iMaxQuantity)
{alert('Sorry, we currently only have '+iMaxQuantity+' of this item in stock.');iNewQuantity=iMaxQuantity;}
$("#"+strElementID).val(iNewQuantity);}
function sizeConvert(strInches,strCM){var strUserLength=$("#size_query").val();if((strUserLength==null)||(strUserLength=="")||(isNaN(strUserLength))){alert('Please enter a length with numbers only. Use a period for decimal place.');$("#size_query").focus();}
else
{var arrChecked=$("input:checked");for(var i=0;i<arrChecked.length;i++){var strUserUnit=arrChecked[i].value;}
if(strUserUnit=='inch'){var strAnswer=strUserLength*0.3937008;var strAnswerRounded=Math.round(10*strAnswer)/10;$("#convertor_result").html(strUserLength+strCM+' = '+strAnswerRounded+' '+strInches);}
else if(strUserUnit=='cm')
{var strAnswer=strUserLength*2.54;var strAnswerRounded=Math.round(10*strAnswer)/10;$("#convertor_result").html(strUserLength+' '+strInches+' = '+strAnswerRounded+strCM);}}}
function in_array(needle,haystack,argStrict){var found=false,key,strict=!!argStrict;for(key in haystack){if((strict&&haystack[key]===needle)||(!strict&&haystack[key]==needle)){found=true;break;}}
return found;}
function setupPopupLinks()
{$(".popup").unbind('click');$(".popup").click(function(){var iHeight=0;var iWidth=0;if(this.name!='')
{var arrBits=this.name.split('x');if(!isNaN(arrBits[0])&&!isNaN(arrBits[1]))
{iWidth=arrBits[0];iHeight=arrBits[1];}}
if(iHeight==0||iWidth==0)
{iHeight=780;iWidth=680;}
popupWindow(this.href,iHeight,iWidth);return false;});}
function setupConfirmationDialogs()
{$(".confirmation").attr("onclick","if(!confirm(this.title)) { return false; }");}
function setupVS3FormValidation()
{$(".vs3form").attr("onsubmit","return checkVS3Form(this);");}
function checkVS3Form(objForm)
{var arClass,bValid;var objField=objForm.getElementsByTagName('*');for(var iFieldCounter=0;iFieldCounter<objField.length;iFieldCounter++)
{arClass=objField[iFieldCounter].className.split(' ');for(var iClassCounter=0;iClassCounter<arClass.length;iClassCounter++)
{switch(arClass[iClassCounter])
{case'string':bValid=isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g,''));break;case'number':bValid=isNumber(objField[iFieldCounter].value);break;case'email':bValid=isEmail(objField[iFieldCounter].value);break;case'telephone':bValid=isTelephone(objField[iFieldCounter].value);break;case'password':bValid=isPassword(objField[iFieldCounter].value);break;case'check':bValid=isChecked(objField[iFieldCounter].checked);break;default:bValid=true;}
if(bValid==false)
{s=new String(objField[iFieldCounter].title);s=s.replace(/_/g," ");alert('Please review the value you entered for '+s);objField[iFieldCounter].select();objField[iFieldCounter].focus();return false;}}}
return true;}
function isString(strValue)
{return(typeof strValue=='string'&&strValue!=''&&isNaN(strValue));}
function isNumber(strValue)
{return(!isNaN(strValue)&&strValue!='');}
function isChecked(blnChecked)
{return blnChecked;}
function isTelephone(strValue)
{return(strValue!='');}
function isPassword(strValue)
{return(strValue!='');}
function updateDiscountLine(){
/*start of discount update function */
$.getJSON('/ajax/getDiscountAmount/', function(data){
if(data['action'] == 'true'){
if(data['discount_inc'] == 0 && $('.discount')[0]){
//discount is zero and discount tr exists. remove
$($('.discount')[0]).remove();
}else{
if($('.discount')[0]){
var discount = $($('td',$($('.discount')[0]))[2]);
discount.empty();
discount.html(data['html']);
}else{
//create
var basket_table = $('table[summary="Basket Contents"]');
var tr = $('td:contains("Delivery")',basket_table).parent();
if(tr.length && data['discount_inc'] != 0){
tr.after('<tr class="discount"><td class="align_right td_nowrap">Discount</td><td>&nbsp;</td><td class="align_right basket_price">' + data['html'] + '</td></tr>');
}}}
$('div.courier_cost:visible').each(function(i,e){
strID = $(e).attr('id');
if(strID.substr(0,14) == 'courier_total_'){
$(e).html(data['total_html']);}});}});
/*end of discount update function */
}
function isEmail(strValue)
{var objRE=/^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;return(strValue!=''&&objRE.test(strValue));}
function setCountry(iCountryID,blnUpdateDeliveryMethods,blnRender)
{if(iCountryID>0&&isNumber(iCountryID)){$.ajax({async: false, type: 'POST', url: '/ajax/setCountryID/'+iCountryID, success: function(){
updateDiscountLine();
}});if(blnUpdateDeliveryMethods){$('#courier_id').attr('disabled',false);if($('#delivery_prompt').length>0){$('#delivery_prompt').hide();}
if($('#delivery_label').length>0){$('#delivery_label').show();}
if(arrCouriersForCountry[iCountryID].length>0){var arrCourierIDs=arrCouriersForCountry[iCountryID].split(',');blnSelect=false;if(typeof(document.getElementById('delivery_country_id').options)!='undefined')
{arrCountryOptions=document.getElementById('delivery_country_id').options;for(var i=0;i<arrCountryOptions.length;i++)
{if(arrCountryOptions[i].value=='')
{document.getElementById('delivery_country_id').remove(i);}}}
if($('#delivery_country_id').hasClass('error_border'))
{$('#delivery_country_id').removeClass('error_border');}
if(document.getElementById('courier_id').options&&document.getElementById('courier_id').options.length>0){document.getElementById('courier_id').options.length=0;}
for(var i=0;i<arrCourierIDs.length;i++){var newoption=document.createElement('option');newoption.text=arrCouriers[arrCourierIDs[i]];newoption.value=arrCourierIDs[i];if (typeof(arrCourierIDs[i]) != 'undefined')
{document.getElementById('courier_id').add(newoption,newoption.selectedIndex);if(!blnSelect){if(typeof(blnRender)!='undefined'&&blnRender)
{setCourier(iCountryID,arrCourierIDs[i],true);}
else
{setCourier(iCountryID,arrCourierIDs[i]);}
blnSelect=true;}
}
}}
else{$('#courier_id').attr('disabled',true);$(".courier_cost").hide();$(".courier_information").hide();if($(".courier_cost_noship")){$(".courier_cost_noship").show();}}}}}
function setCourier(iCountryID,iCourierId,blnRender)
{strPresonalisationQueryString=''
$(".courier_cost").hide();$("#courier_cost_"+iCountryID+'_'+iCourierId).show();$("#courier_vat_"+iCountryID+'_'+iCourierId).show();$("#courier_discounts_"+iCountryID+'_'+iCourierId).show();$("#courier_subtotal_"+iCountryID+'_'+iCourierId).show();$("#courier_total_"+iCountryID+'_'+iCourierId).show();if($('#top_container_basket_cost').length!=0)
{$('#top_container_basket_cost').html($("#courier_total_"+iCountryID+'_'+iCourierId).html());}
$(".courier_information").hide();if($("#courier_information_"+iCountryID+'_'+iCourierId).html()!=''){$("#courier_information_"+iCountryID+'_'+iCourierId).fadeIn();}
if(typeof(blnRender)!='undefined'&&blnRender){
if($('#basket_total').length==0||$('#basket_sub_total').length==0){
$.ajax({async: false, type: 'POST', url: '/ajax/setCourierID/'+iCourierId+'?2', success: function(strData){
updateDiscountLine();
$('#shipping_cost_container').html(strData);}
});
}else{
$('#basket_page_loading').remove();
$('#basket_page_right').append('<div id="basket_page_loading"></div>');
$.getJSON('/ajax/setCourierID/'+iCourierId+'/'+iCountryID+'/true/true',function(strJSON)
{
$('#basket_delivery_price').html(strJSON.delivery);
$('#basket_discount_price').html(strJSON.discount);
$('#basket_sub_total').html(strJSON.sub_total);
$('#basket_total').html(strJSON.total);
$('#basket_page_loading').remove();
});
}
}else{
$.ajax({async: false, type: 'POST', url: '/ajax/setCourierID/'+iCourierId+'?1', success: function(strData) {updateDiscountLine();} });
}
}
function getDeliveryDates(iCountryID,iCourierId)
{if(document.getElementById('delivery_date').options&&document.getElementById('delivery_date').options.length>0){document.getElementById('delivery_date').options.length=0;if(document.getElementById('delivery_date').options.length!=0)
{$('#delivery_date option').remove();}}
$("#delivery_date_row").hide();$('#delivery_date_row').attr('disabled',true);var i=0;$.post('/ajax/setShippingDate/');try{if(arrCourierDeliveryDates[iCourierId][iCountryID]&&arrCourierDeliveryDates[iCourierId][iCountryID].length>0)
{var arrDeliveryDates=arrCourierDeliveryDates[iCourierId][iCountryID];$("#delivery_date_row").show();$('#delivery_date_row').attr('disabled',false);var keys=new Array();for(k in arrDeliveryDates)
{keys.push(k);}
keys.sort(function(a,b){return(a>b)-(a<b);});$('#delivery_date').attr('disabled',true);var options='';for(var i=0;i<keys.length;i++)
{var key=keys[i];var option;if(i==0){$.post('/ajax/setShippingDate/'+key);var setDate = new Date(key*1000);if($("#named_delivery_text").length){sDatePrefix = 'th';if(setDate.getDate()==1||setDate.getDate()==31){sDatePrefix = 'st'}else if(setDate.getDate()==2){sDatePrefix = 'nd'}else if(setDate.getDate()==3){sDatePrefix = 'rd'} $("#named_delivery_text").text(setDate.getDayName()+', '+setDate.getDate()+sDatePrefix+' '+setDate.getMonthName() )}}
$("#delivery_date_row").show();option=$("<option></option>").attr("value",key).text(arrDeliveryDates[key]);options+=$('<div>').append(option.clone()).remove().html();}
$('#delivery_date').html(options);$('#delivery_date').attr('disabled',false);}}catch(err){return false;}}
function setDeliveryDate(iDeliveryDate){if(iDeliveryDate!='null'){$.post('/ajax/setShippingDate/'+iDeliveryDate);}}
function setRegistrationDetails(blnRepopulate)
{if($('#delivery_address_no').attr('checked'))
{$('.delivery').addClass('field_disabled');$('#delivery_full_name').val($('#full_name').val());$('#delivery_title').val($('#title').val());$('#delivery_firstname').val($('#firstname').val());$('#delivery_surname').val($('#surname').val());$('#delivery_postcode').val($('#postcode').val());$('#delivery_company_name').val($('#company_name').val());$('#delivery_house_number').val($('#house_number').val());$('#delivery_address1').val($('#address1').val());$('#delivery_address2').val($('#address2').val());$('#delivery_town').val($('#town').val());$('#delivery_county').val($('#county').val());$('#delivery_country').val($('#country').val());$('#delivery_telephone').val($('#telephone').val());}
else
{$('.delivery').removeClass('field_disabled');}}
function mirrorRegistrationDetails()
{if($('#delivery_address_no').attr('checked'))
{$('#full_name').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_full_name').val($('#full_name').val());}});
$('#title').blur(function(){if($('#delivery_address_no').attr('checked')){$('#delivery_title').val($('#title').val());}});
$('#firstname').blur(function(){if($('#delivery_address_no').attr('checked')){$('#delivery_firstname').val($('#firstname').val());}});
$('#surname').blur(function(){if($('#delivery_address_no').attr('checked')){$('#delivery_surname').val($('#surname').val());}});
$('#postcode').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_postcode').val($('#postcode').val());}});$('#company_name').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_company_name').val($('#company_name').val());}});$('#house_number').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_house_number').val($('#house_number').val());}});$('#address1').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_address1').val($('#address1').val());}});$('#address2').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_address2').val($('#address2').val());}});$('#town').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_town').val($('#town').val());}});$('#county').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_county').val($('#county').val());}});$('#country').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_country').val($('#country').val());}});$('#telephone').blur(function(){if($('#delivery_address_no').attr('checked'))
{$('#delivery_telephone').val($('#telephone').val());}});}}
jQuery.fn.encHTML=function(){return this.each(function(){var me=jQuery(this);var html=me.html();me.html(html.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'));});};jQuery.fn.decHTML=function(){return this.each(function(){var me=jQuery(this);var html=me.html();me.html(html.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>'));});};jQuery.fn.isEncHTML=function(str){if(str.search(/&amp;/g)!=-1||str.search(/&lt;/g)!=-1||str.search(/&gt;/g)!=-1)
return true;else
return false;};jQuery.fn.decHTMLifEnc=function(){return this.each(function(){var me=jQuery(this);var html=me.html();if(jQuery.fn.isEncHTML(html))
me.html(html.replace(/&amp;/g,'&').replace(/&lt;/g,'<').replace(/&gt;/g,'>'));});}
function URLDecode(url)
{var HEXCHARS="0123456789ABCDEFabcdef";var encoded=url;var plaintext="";var i=0;while(i<encoded.length){var ch=encoded.charAt(i);if(ch=="+"){plaintext+=" ";i++;}else if(ch=="%"){if(i<(encoded.length-2)&&HEXCHARS.indexOf(encoded.charAt(i+1))!=-1&&HEXCHARS.indexOf(encoded.charAt(i+2))!=-1){plaintext+=unescape(encoded.substr(i,3));i+=3;}else{alert('Bad escape combination near ...'+encoded.substr(i));plaintext+="%[ERROR]";i++;}}else{plaintext+=ch;i++;}}
return plaintext;};function initVS3Ajax()
{blnHideAutoComplete=true;$('.ajax_product_search').bind('blur',function(){runQuickOrderProductSearch(this.value,this.id);});$('.ajax_product_search').bind('blur',function(){if(blnHideAutoComplete){$('#product_autocomplete').hide();}});$('.ajax_autocomplete').bind('mouseover',function(){blnHideAutoComplete=false;});$('.ajax_autocomplete').bind('mouseout',function(){blnHideAutoComplete=true;});}
function runAJAXAddToBasket(blnSimplePersonalisation)
{var arrPersonalisations=new Array();var strPersonalisations='';var strPresonalisationQueryString='';if(blnSimplePersonalisation==null)
{blnSimplePersonalisation=false;}
if($('.personalisation_template').length>0)
{$('.personalisation_template:checked').each(function(i,objTickbox)
{arrPersonalisations[i]=objTickbox.value;if(strPersonalisations!='')
{strPersonalisations+=',';}
strPersonalisations+=objTickbox.value;strPresonalisationQueryString='&personalisations[]='+objTickbox.value;});}
if(blnSimplePersonalisation&&$('#personalisation').length>0)
{strPresonalisationQueryString='&personalisation='+$('#personalisation').val();}
if($('#personalise_checkbox:checked').length>0)
{strPresonalisationQueryString+='&personalisations[]='+$('#personalise_checkbox:checked').val();}
$.getJSON('/ajax/addtobasket/?product_id='+$('#product_id').val()+'&quantity='+$('#quantity').val()+strPresonalisationQueryString,function(strJSON)
{updateMiniBasket(strJSON);});return false;}
function updateMiniBasket(strJSON)
{if(strJSON==null)
{$.getJSON('/ajax/getbasket/true',function(strJSON)
{updateMiniBasket(strJSON);});}
else
{$('#basket_items').hide();$('#mini_basket_num_items').text(strJSON.basket_num_items);$('#mini_basket_total').text('');$('#mini_basket_total').append(strJSON.product_total);$('#basket_items').fadeIn();$('#quick_buy_cancel').hide();if(strJSON.note!=undefined&&strJSON.note!='')
{$('#add_note').remove();$('#added_to_basket').append('<span id="add_note"><strong>Please Note: '+strJSON.note+'</strong></span>');}
$('#added_to_basket').fadeIn();window.setTimeout("$('#added_to_basket').fadeOut()",3500);}}
function initModalProductPopup()
{if($('#modal_product_popup').length>0)
{$('#modal_product_popup').jqm({modal:false,trigger:'a.modal_product_trigger',overlay:1});$('.modal_product_trigger').bind('click',function()
{runProductPopup($(this).attr('id'));});}}
function runProductPopup(strID)
{var strParentProductID=new String(strID);iParentProductID=strParentProductID.replace('modal_product_popup_','');$.getJSON("/ajax/product_details/",{parent_product_id:iParentProductID},function(strJSON)
{if(strJSON.title!='')
{$('#modal_product_popup_title').html('');$('#modal_product_popup_description').html('');$('#modal_product_popup_title').append('<h3>'+strJSON.title+'<h3>');$('#modal_product_popup_description').append(strJSON.description);}});}
function initModalFAQPopup()
{if($('#modal_product_popup').length>0)
{$('#modal_product_popup').jqm({modal:false,trigger:'a.modal_faq_trigger',overlay:1});$('.modal_faq_trigger').bind('click',function()
{runFAQPopup($(this).attr('id'));});}}
function runFAQPopup(strID)
{var strFAQID=new String(strID);iFAQID=strFAQID.replace('faq_popup_','');$.getJSON("/ajax/faq/",{faq_id:iFAQID},function(strJSON)
{if(strJSON.title!='')
{$('#modal_product_popup_title').html('');$('#modal_product_popup_description').html('');$('#modal_product_popup_title').append('<h3>'+strJSON.question+'<h3>');$('#modal_product_popup_description').append(strJSON.answer);}});}
function initQuickBuy()
{if($('.thickbox').length>0)
{tb_init('a.thickbox, area.thickbox, input.thickbox');}
if($('#quick_buy').length>0)
{$('#quick_buy').jqm({modal:true,trigger:'a.quick_buy_trigger',toTop:true});$('.quick_buy_trigger').bind('click',function(e)
{if($('#quick_buy:hidden'))
{runQuickBuy($(this).attr('id'));}
return false;});$('#quick_buy').jqmAddClose($('.modal_product_popup_close'));}}
function runQuickBuy(strID)
{$('#quick_buy_content').hide();$('#quick_buy_ok').hide();$('#quick_buy_loading').show();var strParentProductID=new String(strID);iParentProductID=strParentProductID.replace('quick_buy_','');$.getJSON("/ajax/quickbuy/",{parent_product_id:iParentProductID},function(strJSON){$('#quick_buy_content_products').html('');strPersHTML='';if(strJSON.num_available_personalisations)
{blnPersonalise=true;}
else
{blnPersonalise=false;}
if(strJSON.num_products==1&&strJSON.delivery_per_product==0&&1==2)
{var strIdent='';$.post('/ajax/addtobasket/',{product_id:strJSON.products[0].product_id},function(strJSON2){strIdent=strJSON2.latest_identifier;});$('#quick_buy_content_img').attr('src',strJSON.products[0].thumb);if(typeof(strJSON.product_parent.added_to_basket_text)!=undefined&&typeof(strJSON.product_parent.added_to_basket_text)!='undefined')
{strMessage='<p>'+strJSON.product_parent.added_to_basket_text+'</p>';}
else
{strMessage='<p>'+strJSON.product_parent.title+' has been added to your shopping basket</p>';}
if(blnPersonalise)
{strMessage+='<p class="quickbuy_personalise">Personalisation is available for this product. Click <a href="/personalisation/select_type/'+strIdent+'">here</a> to add them.</p>'}
$('#quick_buy_content_products').append(strMessage);$('#quick_buy_content').show();$('#quick_buy_ok').show();$('#quick_buy_loading').hide();}
else if(strJSON.num_products==1&&strJSON.delivery_per_product==1)
{$('#quick_product_id').val(strJSON.products[0].product_id);$('#product_id').val(strJSON.products[0].product_id);$('#datepicker').show();$('#datepicker').css('z-index',3500);$('#delivery_per_product_quickbuy').css('z-index',3510);if($('#product_delivery_stage0').length>0)
{$('#product_delivery_stage0').show();$('#product_delivery_stage1').hide();}
else
{$('#product_delivery_stage1').show();}
$('#product_delivery_stage2').hide();$('#product_delivery_stage3').hide();if(typeof(strJSON.product_parent.added_to_basket_text)!=undefined&&typeof(strJSON.product_parent.added_to_basket_text)!='undefined')
{strMessage='<p>'+strJSON.product_parent.added_to_basket_text+'</p>';}
else
{strMessage='<p>'+strJSON.product_parent.title+' has been added to your shopping basket</p>';}
$('#quick_buy_content_products').append(strMessage);}
else if(strJSON.num_products>1)
{
var strSelectHTML = '';
strQuantityBox = '<input type="text" id="quick_quantity" name="quantity" value="20" size="3" />';
strQuantityTable = '<table cellpadding="0" cellspacing="0" id="product_options_quantity"><tr>';
strQuantityTable += '<td><a href="#" onclick="alterQuantity(-1, 20, 999, \'quick_quantity\');return false;"><img src="/images/img_minus.gif" alt="" /></a></td>';
strQuantityTable += '<td>'+strQuantityBox+'</td>';
strQuantityTable += '<td><a href="#" onclick="alterQuantity(1, 20, 999, \'quick_quantity\');return false;"><img src="/images/img_plus.gif" alt="" /></a></td>';
strQuantityTable += '</tr></table>';
strSelectHTML += strQuantityTable;

strHTML='<p><span class="choose_your">Choose your</span> <strong>'+strJSON.product_parent.title+'</strong>:</p><select name="product_id" id="quickbuy_options">';$.each(strJSON.products,function(i,product){if(product.attribute_summary!=''){strHTML+='<option value='+product.product_id+'">'+product.attribute_summary;if(product.model!='')
{strHTML+=' ('+product.model+')';}
strHTML+='</option>';}});strHTML+='</select>'+strSelectHTML;strHTML+='<input type="submit" id="quick_buy_add_to_basket_submit" value="Add to Basket" onclick="$.post(\'/ajax/addtobasket/\', { product_id: $(\'#quickbuy_options\').val(),quantity: $(\'#quick_quantity\').val() });  $(\'#quick_buy_content_products\').text(\'\'); $(\'#quick_buy_content_products\').append(unescape(\'<p>'+escape(strJSON.product_parent.title.replace('"',"&quot;"))+' has been added to your shopping basket</p>\')); $(\'#quick_buy_content\').show(); $(\'#quick_buy_ok\').show();return false;" />';strHTML+='<input type="image" id="quick_buy_add_to_basket_image" src="/images/quick_buy_add_to_basket.gif" value="Add to Basket" onclick="$.post(\'/ajax/addtobasket/\', { product_id: $(\'#quickbuy_options\').val(),quantity: $(\'#quick_quantity\').val() });  $(\'#quick_buy_content_products\').text(\'\'); $(\'#quick_buy_content_products\').append(unescape(\'<p>'+escape(strJSON.product_parent.title.replace('"',"&quot;"))+' has been added to your shopping basket</p>\')); $(\'#quick_buy_content\').show(); $(\'#quick_buy_ok\').show();return false;" />';$('#quick_buy_content_products').append(strHTML);$('#quick_buy_content_img').attr('src',strJSON.product_parent.thumb);$('#quick_buy_content').show();$('#quick_buy_loading').hide();}
else if(strJSON.num_products==1)
{strProductAttribute='';strHiddenField='';$.each(strJSON.products,function(i,product){strHiddenField='<input type="hidden" name="product_id" value='+product.product_id+'">';strProductAttribute=product.attribute_summary;if(product.model!=''&&strProductAttribute!='')
{strProductAttribute+=' ('+product.model+')';}});strProductAttribute=' ';if(strProductAttribute=='')
{var strIdent='';var objRequest=null;$.ajax({type:"GET",url:"/ajax/addtobasket/",data:"product_id="+strJSON.products[0].product_id,dataType:"json",success:function(objJSON){$('#quick_buy_content_img').attr('src',strJSON.products[0].thumb);if(typeof(strJSON.product_parent.added_to_basket_text)!=undefined&&typeof(strJSON.product_parent.added_to_basket_text)!='undefined')
{strMessage='<p>'+strJSON.product_parent.added_to_basket_text+'</p>';}
else
{strMessage='<p>'+strJSON.product_parent.title+' has been added to your shopping basket</p>';}
if(blnPersonalise)
{strMessage+='<p>Personalisation is available for this product. Click <a href="/personalisation/select_type/'+objJSON.latest_identifier+'/">here</a> to choose.</p>'}
$('#quick_buy_content_products').append(strMessage);$('#quick_buy_content').show();$('#quick_buy_ok').show();$('#quick_buy_loading').hide();}});}
else
{
var strSelectHTML = '';
strQuantityBox = '<input type="text" id="quick_quantity" name="quantity" value="20" size="3" />';
strQuantityTable = '<table cellpadding="0" cellspacing="0" id="product_options_quantity"><tr>';
strQuantityTable += '<td><a href="#" onclick="alterQuantity(-1, 20, 999, \'quick_quantity\');return false;"><img src="/images/img_minus.gif" alt="" /></a></td>';
strQuantityTable += '<td>'+strQuantityBox+'</td>';
strQuantityTable += '<td><a href="#" onclick="alterQuantity(1, 20, 999, \'quick_quantity\');return false;"><img src="/images/img_plus.gif" alt="" /></a></td>';
strQuantityTable += '</tr></table>';
strSelectHTML += strQuantityTable;
strHTML='<p><span class="choose_your">Choose your</span> <strong>'+strJSON.product_parent.title+'</strong>:</p>';strHTML+='<input type="hidden" name="product_id" value='+strJSON.products[0].product_id+'">'+strSelectHTML;strHTML+=strProductAttribute;strHTML+='<input type="submit" id="quick_buy_add_to_basket_submit" value="Add to Basket" onclick="$.post(\'/ajax/addtobasket/\', { product_id: '+strJSON.products[0].product_id+', quantity: $(\'#quick_quantity\').val() });  $(\'#quick_buy_content_products\').text(\'\'); $(\'#quick_buy_content_products\').append(unescape(\'<p>'+escape(strJSON.product_parent.title.replace('"',"&quot;"))+' has been added to your shopping basket</p>\')); $(\'#quick_buy_content\').show(); $(\'#quick_buy_ok\').show();return false;" />';strHTML+='<input type="image" id="quick_buy_add_to_basket_image" src="/images/quick_buy_add_to_basket.gif" value="Add to Basket" onclick="$.post(\'/ajax/addtobasket/\', { product_id: '+strJSON.products[0].product_id+', quantity: $(\'#quick_quantity\').val() });  $(\'#quick_buy_content_products\').text(\'\'); $(\'#quick_buy_content_products\').append(unescape(\'<p>'+escape(strJSON.product_parent.title.replace('"',"&quot;"))+' has been added to your shopping basket</p>\')); $(\'#quick_buy_content\').show(); $(\'#quick_buy_ok\').show();return false;" />';$('#quick_buy_content_products').append(strHTML);$('#quick_buy_content_img').attr('src',strJSON.product_parent.thumb);$('#quick_buy_content').show();$('#quick_buy_loading').hide();}}
else if(strJSON.num_products==0)
{$('#quick_buy').hide();$('.jqmOverlay').remove();alert('Unfortunately this product is not in stock, and cannot be added to your basket at the moment.');}});return false;}
function switchBundleSelectBox(iSortOrder,iSelectionCount)
{$('.bundle_product_'+iSortOrder).each(function(i){objSelect=document.getElementById('bundle_product_'+iSortOrder+'_'+i);if(i==iSelectionCount)
{strId=objSelect.options[objSelect.selectedIndex].value;if(strId.match(/_/))
{$('#product_popup_image_'+iSortOrder+'_'+i).hide();}
else
{$('#product_popup_image_'+iSortOrder+'_'+i).show();$('#product_popup_image_'+iSortOrder+'_'+i).show();$('> a',$('#prod_info_cell_'+iSortOrder+'_'+iSelectionCount)).attr("id",'modal_product_popup_'+strId)}}
else
{objSelect.selectedIndex=0;$('#product_popup_image_'+iSortOrder+'_'+i).hide();}});}
function bookmark(url,title)
{if((navigator.appName=="Microsoft Internet Explorer")&&(parseInt(navigator.appVersion)>=4))
{window.external.AddFavorite(url,title);}
else if(navigator.appName=="Netscape"&&window.sidebar&&window.sidebar.addPanel)
{window.sidebar.addPanel(title,url,"");}
else
{alert("Press CTRL-D (Netscape) or CTRL-T (Opera) to bookmark");}}
function replaceQueryString(url,param,value){var re=new RegExp("([?|&])"+param+"=.*?(&|$)","i");if(url.match(re))
return url.replace(re,'$1'+param+"="+value+'$2');else
return url+'?&'+param+"="+value;}
addEvent(window,'load',initReviewStarRater);addEvent(window,'load',initReviewMultiStarRater);addEvent(window,'load',setupPopupLinks);addEvent(window,'load',setupConfirmationDialogs);addEvent(window,'load',setupVS3FormValidation);addEvent(window,'load',initVS3Ajax);
var jThickboxNewLink;
function tb_remove_open(reloadLink) {
jThickboxNewLink = reloadLink;
tb_remove();
$("div[id^='TB_']")
setTimeout('tb_open_new(jThickboxNewLink);', 1000);
return false;
}
function tb_open_new(jThickboxNewLink){
tb_show(null,jThickboxNewLink,null);
}
function initReviewMultiStarRater()
{
if($('#rating_star_1').length)
{
var iPointer = 1;

while($('#rating_star_' + iPointer).length)
{
$('#rating_star_'  + iPointer + ' li>a').bind("click", function()
{
//parent().parent() is fine here as the html won't change.
$(this).parent().parent().removeClass('onestar twostar threestar fourstar fivestar');

//Set the answer to this question
var strAnswerInput = $(this).parent().parent().attr('id').replace('rating_star_','review_answer_');
$('#'+strAnswerInput).val(this.innerHTML);

switch(this.innerHTML)
{
case "1":
$(this).parent().parent().addClass('onestar');
break;

case "2":
$(this).parent().parent().addClass('twostar');
break;

case "3":
$(this).parent().parent().addClass('threestar');
break;

case "4":
$(this).parent().parent().addClass('fourstar');
break;

case "5":
$(this).parent().parent().addClass('fivestar');
break;
}

return false;
});

iPointer++;

}
}
}

$(function(){$('#additional_delivery_information_new').blur(function(){$.getJSON('/ajax/setDeliveryNotes/'+$('#additional_delivery_information_new').val(), function(strJSON){if(strJSON!='OK'){alert('Your delivey details have not been updated. Please Try Again.');}});});})
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options=$.extend({},options);options.expires=-1;}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000));}else{date=options.expires;}expires='; expires='+date.toUTCString();}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('');}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break;}}}return cookieValue;}};/* Copyright (c) 2006 Brandon Aaron (http://brandonaaron.net)
 * Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
 *
 * $LastChangedDate: 2007-06-19 20:25:28 -0500 (Tue, 19 Jun 2007) $
 * $Rev: 2111 $
 *
 * Version 2.1
 */
(function($){$.fn.bgIframe=$.fn.bgiframe=function(s){if($.browser.msie&&parseInt($.browser.version)<=6){s=$.extend({top:'auto',left:'auto',width:'auto',height:'auto',opacity:true,src:'javascript:false;'},s||{});var prop=function(n){return n&&n.constructor==Number?n+'px':n;},html='<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+'style="display:block;position:absolute;z-index:-1;'+(s.opacity!==false?'filter:Alpha(Opacity=\'0\');':'')+'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+'"/>';return this.each(function(){if($('> iframe.bgiframe',this).length==0)this.insertBefore(document.createElement(html),this.firstChild);});}return this;};if(!$.browser.version)$.browser.version=navigator.userAgent.toLowerCase().match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)[1];})(jQuery);
/*
 * Superfish v1.4.8 - jQuery menu widget
 * Copyright (c) 2008 Joel Birch
 *
 * Dual licensed under the MIT and GPL licenses:
 * 	http://www.opensource.org/licenses/mit-license.php
 * 	http://www.gnu.org/licenses/gpl.html
 *
 * CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt
 */

;(function($){
	$.fn.superfish = function(op){

		var sf = $.fn.superfish,
			c = sf.c,
			$arrow = $(['<span class="',c.arrowClass,'"> &#187;</span>'].join('')),
			over = function(){
				var $$ = $(this), menu = getMenu($$);
				clearTimeout(menu.sfTimer);
				$$.showSuperfishUl().siblings().hideSuperfishUl();
			},
			out = function(){
				var $$ = $(this), menu = getMenu($$), o = sf.op;
				clearTimeout(menu.sfTimer);
				menu.sfTimer=setTimeout(function(){
					o.retainPath=($.inArray($$[0],o.$path)>-1);
					$$.hideSuperfishUl();
					if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);}
				},o.delay);
			},
			getMenu = function($menu){
				var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0];
				sf.op = sf.o[menu.serial];
				return menu;
			},
			addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); };

		return this.each(function() {
			var s = this.serial = sf.o.length;
			var o = $.extend({},sf.defaults,op);
			o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){
				$(this).addClass([o.hoverClass,c.bcClass].join(' '))
					.filter('li:has(div)').removeClass(o.pathClass);
			});
			sf.o[s] = sf.op = o;

			$('li:has(div)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() {
				if (o.autoArrows) addArrow( $('>a:first-child',this) );
			})
			.not('.'+c.bcClass)
				.hideSuperfishUl();

			var $a = $('a',this);
			$a.each(function(i){
				var $li = $a.eq(i).parents('li');
				$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);});
			});
			o.onInit.call(this);

		}).each(function() {
			var menuClasses = [c.menuClass];
			if (sf.op.dropShadows  && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass);
			$(this).addClass(menuClasses.join(' '));
		});
	};

	var sf = $.fn.superfish;
	sf.o = [];
	sf.op = {};
	sf.IE7fix = function(){
		var o = sf.op;
		if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined)
			this.toggleClass(sf.c.shadowClass+'-off');
		};
	sf.c = {
		bcClass     : 'sf-breadcrumb',
		menuClass   : 'sf-js-enabled',
		anchorClass : 'sf-with-ul',
		arrowClass  : 'sf-sub-indicator',
		shadowClass : 'sf-shadow'
	};
	sf.defaults = {
		hoverClass	: 'sfHover',
		pathClass	: 'overideThisToUse',
		pathLevels	: 1,
		delay		: 200,
		animation	: {height:'show' }, //opacity: 'show'
		speed		: 500,
		autoArrows	: false,
		dropShadows : false,
		disableHI	: true,		// true disables hoverIntent detection
		onInit		: function(){}, // callback functions
		onBeforeShow: function(){},
		onShow		: function(){},
		onHide		: function(){}
	};
	$.fn.extend({
		hideSuperfishUl : function(){
			var o = sf.op,
				not = (o.retainPath===true) ? o.$path : '';
			o.retainPath = false;
			var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass)
					.find('>div').hide().css('visibility','hidden');
			o.onHide.call($ul);
			return this;
		},
		showSuperfishUl : function(){
			var o = sf.op,
				sh = sf.c.shadowClass+'-off',
				$ul = this.addClass(o.hoverClass)
					.find('>div:hidden').css('visibility','visible');

  			sf.IE7fix.call($ul);
  			o.onBeforeShow.call($ul);

        //Attempt to reposition if we go
        //over the right hand side based on width
        var menuleft=-1;
        var w = $ul.outerWidth();
        var l = this.offset().left;
        var t = $('.menu').width();
        var to = $('.menu').offset().left;
        var c = $ul.parent().outerWidth();
        var m = $('.menu-dropdown').width();

        menuleft = (w + l > (t+to) ) ? -(m-c) : menuleft;
        $ul.css({left:menuleft+"px"});

      $ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); });

      return this;
		}
	});

})(jQuery);(function($) {
$.fn.jqm=function(o){
var p={
overlay: 50,
overlayClass: 'jqmOverlay',
closeClass: 'jqmClose',
trigger: '.jqModal',
ajax: F,
ajaxText: '',
target: F,
modal: F,
toTop: F,
onShow: F,
onHide: F,
onLoad: F
};
return this.each(function(){if(this._jqm)return H[this._jqm].c=$.extend({},H[this._jqm].c,o);s++;this._jqm=s;
H[s]={c:$.extend(p,$.jqm.params,o),a:F,w:$(this).addClass('jqmID'+s),s:s};
if(p.trigger)$(this).jqmAddTrigger(p.trigger);
});};

$.fn.jqmAddClose=function(e){return hs(this,e,'jqmHide');};
$.fn.jqmAddTrigger=function(e){return hs(this,e,'jqmShow');};
$.fn.jqmShow=function(t){return this.each(function(){t=t||window.event;$.jqm.open(this._jqm,t);});};
$.fn.jqmHide=function(t){return this.each(function(){t=t||window.event;$.jqm.close(this._jqm,t)});};

$.jqm = {
hash:{},
open:function(s,t){var h=H[s],c=h.c,cc='.'+c.closeClass,z=(parseInt(h.w.css('z-index'))),z=(z>0)?z:3000,o=$('<div></div>').css({height:'100%',width:'100%',position:'fixed',left:0,top:0,'z-index':z-1,opacity:c.overlay/100});if(h.a)return F;h.t=t;h.a=true;h.w.css('z-index',z);
 if(c.modal) {if(!A[0])L('bind');A.push(s);}
 else if(c.overlay > 0)h.w.jqmAddClose(o);
 else o=F;

 h.o=(o)?o.addClass(c.overlayClass).prependTo('body'):F;
 if(ie6 && !(typeof document.body.style.maxHeight != "undefined"))
 {
   $('html,body').css({height:'100%',width:'100%'});
   if(o)
   {
     o=o.css({position:'absolute'})[0];
     for(var y in {Top:1,Left:1})
       o.style.setExpression(y.toLowerCase(),"(_=(document.documentElement.scroll"+y+" || document.body.scroll"+y+"))+'px'");
   }
 }

 if(c.ajax) {var r=c.target||h.w,u=c.ajax,r=(typeof r == 'string')?$(r,h.w):$(r),u=(u.substr(0,1) == '@')?$(t).attr(u.substring(1)):u;
  r.html(c.ajaxText).load(u,function(){if(c.onLoad)c.onLoad.call(this,h);if(cc)h.w.jqmAddClose($(cc,h.w));e(h);});}
 else if(cc)h.w.jqmAddClose($(cc,h.w));

 if(c.toTop&&h.o)h.w.before('<span id="jqmP'+h.w[0]._jqm+'"></span>').insertAfter(h.o);
 (c.onShow)?c.onShow(h):h.w.show();e(h);return F;
},
close:function(s){var h=H[s];if(!h.a)return F;h.a=F;
 if(A[0]){A.pop();if(!A[0])L('unbind');}
 if(h.c.toTop&&h.o)$('#jqmP'+h.w[0]._jqm).after(h.w).remove();
 if(h.c.onHide)h.c.onHide(h);else{h.w.hide();if(h.o)h.o.remove();} return F;
},
params:{}};
var s=0,H=$.jqm.hash,A=[],ie6=$.browser.msie&&($.browser.version == "6.0"),F=false,
i=$('<iframe src="javascript:false;document.write(\'\');" class="jqm"></iframe>').css({opacity:0}),
e=function(h){if(ie6)if(h.o)h.o.html('<p style="width:100%;height:100%"/>').prepend(i);else if(!$('iframe.jqm',h.w)[0])h.w.prepend(i); f(h);},
f=function(h){try{$(':input:visible',h.w)[0].focus();}catch(_){}},
L=function(t){$()[t]("keypress",m)[t]("keydown",m)[t]("mousedown",m);},
m=function(e){var h=H[A[A.length-1]],r=(!$(e.target).parents('.jqmID'+h.s)[0]);if(r)f(h);return !r;},
hs=function(w,t,c){return w.each(function(){var s=this._jqm;$(t).each(function() {
 if(!this[c]){this[c]=[];$(this).click(function(){for(var i in {jqmShow:1,jqmHide:1})for(var s in this[i])if(H[this[i][s]])H[this[i][s]].w[i](this);return F;});}this[c].push(s);});});};
})(jQuery);/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);/*
 * Date prototype extensions. Doesn't depend on any
 * other code. Doens't overwrite existing methods.
 *
 * Adds dayNames, abbrDayNames, monthNames and abbrMonthNames static properties and isLeapYear,
 * isWeekend, isWeekDay, getDaysInMonth, getDayName, getMonthName, getDayOfYear, getWeekOfYear,
 * setDayOfYear, addYears, addMonths, addDays, addHours, addMinutes, addSeconds methods
 *
 * Copyright (c) 2006 Jörn Zaefferer and Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
 *
 * Additional methods and properties added by Kelvin Luck: firstDayOfWeek, dateFormat, zeroTime, asString, fromString -
 * I've added my name to these methods so you know who to blame if they are broken!
 *
 * Dual licensed under the MIT and GPL licenses:
 *   http://www.opensource.org/licenses/mit-license.php
 *   http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * An Array of day names starting with Sunday.
 *
 * @example dayNames[0]
 * @result 'Sunday'
 *
 * @name dayNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];

/**
 * An Array of abbreviated day names starting with Sun.
 *
 * @example abbrDayNames[0]
 * @result 'Sun'
 *
 * @name abbrDayNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.abbrDayNames = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];

/**
 * An Array of month names starting with Janurary.
 *
 * @example monthNames[0]
 * @result 'January'
 *
 * @name monthNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.monthNames = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];

/**
 * An Array of abbreviated month names starting with Jan.
 *
 * @example abbrMonthNames[0]
 * @result 'Jan'
 *
 * @name monthNames
 * @type Array
 * @cat Plugins/Methods/Date
 */
Date.abbrMonthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

/**
 * The first day of the week for this locale.
 *
 * @name firstDayOfWeek
 * @type Number
 * @cat Plugins/Methods/Date
 * @author Kelvin Luck
 */
Date.firstDayOfWeek = 1;

/**
 * The format that string dates should be represented as (e.g. 'dd/mm/yyyy' for UK, 'mm/dd/yyyy' for US, 'yyyy-mm-dd' for Unicode etc).
 *
 * @name format
 * @type String
 * @cat Plugins/Methods/Date
 * @author Kelvin Luck
 */
Date.format = 'dd/mm/yyyy';
//Date.format = 'mm/dd/yyyy';
//Date.format = 'yyyy-mm-dd';
//Date.format = 'dd mmm yy';

/**
 * The first two numbers in the century to be used when decoding a two digit year. Since a two digit year is ambiguous (and date.setYear
 * only works with numbers < 99 and so doesn't allow you to set years after 2000) we need to use this to disambiguate the two digit year codes.
 *
 * @name format
 * @type String
 * @cat Plugins/Methods/Date
 * @author Kelvin Luck
 */
Date.fullYearStart = '20';

(function() {

	/**
	 * Adds a given method under the given name
	 * to the Date prototype if it doesn't
	 * currently exist.
	 *
	 * @private
	 */
	function add(name, method) {
		if( !Date.prototype[name] ) {
			Date.prototype[name] = method;
		}
	};

	/**
	 * Checks if the year is a leap year.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.isLeapYear();
	 * @result true
	 *
	 * @name isLeapYear
	 * @type Boolean
	 * @cat Plugins/Methods/Date
	 */
	add("isLeapYear", function() {
		var y = this.getFullYear();
		return (y%4==0 && y%100!=0) || y%400==0;
	});

	/**
	 * Checks if the day is a weekend day (Sat or Sun).
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.isWeekend();
	 * @result false
	 *
	 * @name isWeekend
	 * @type Boolean
	 * @cat Plugins/Methods/Date
	 */
	add("isWeekend", function() {
		return this.getDay()==0 || this.getDay()==6;
	});

	/**
	 * Check if the day is a day of the week (Mon-Fri)
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.isWeekDay();
	 * @result false
	 *
	 * @name isWeekDay
	 * @type Boolean
	 * @cat Plugins/Methods/Date
	 */
	add("isWeekDay", function() {
		return !this.isWeekend();
	});

	/**
	 * Gets the number of days in the month.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getDaysInMonth();
	 * @result 31
	 *
	 * @name getDaysInMonth
	 * @type Number
	 * @cat Plugins/Methods/Date
	 */
	add("getDaysInMonth", function() {
		return [31,(this.isLeapYear() ? 29:28),31,30,31,30,31,31,30,31,30,31][this.getMonth()];
	});

	/**
	 * Gets the name of the day.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getDayName();
	 * @result 'Saturday'
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getDayName(true);
	 * @result 'Sat'
	 *
	 * @param abbreviated Boolean When set to true the name will be abbreviated.
	 * @name getDayName
	 * @type String
	 * @cat Plugins/Methods/Date
	 */
	add("getDayName", function(abbreviated) {
		return abbreviated ? Date.abbrDayNames[this.getDay()] : Date.dayNames[this.getDay()];
	});

	/**
	 * Gets the name of the month.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getMonthName();
	 * @result 'Janurary'
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getMonthName(true);
	 * @result 'Jan'
	 *
	 * @param abbreviated Boolean When set to true the name will be abbreviated.
	 * @name getDayName
	 * @type String
	 * @cat Plugins/Methods/Date
	 */
	add("getMonthName", function(abbreviated) {
		return abbreviated ? Date.abbrMonthNames[this.getMonth()] : Date.monthNames[this.getMonth()];
	});

	/**
	 * Get the number of the day of the year.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getDayOfYear();
	 * @result 11
	 *
	 * @name getDayOfYear
	 * @type Number
	 * @cat Plugins/Methods/Date
	 */
	add("getDayOfYear", function() {
		var tmpdtm = new Date("1/1/" + this.getFullYear());
		return Math.floor((this.getTime() - tmpdtm.getTime()) / 86400000);
	});

	/**
	 * Get the number of the week of the year.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.getWeekOfYear();
	 * @result 2
	 *
	 * @name getWeekOfYear
	 * @type Number
	 * @cat Plugins/Methods/Date
	 */
	add("getWeekOfYear", function() {
		return Math.ceil(this.getDayOfYear() / 7);
	});

	/**
	 * Set the day of the year.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.setDayOfYear(1);
	 * dtm.toString();
	 * @result 'Tue Jan 01 2008 00:00:00'
	 *
	 * @name setDayOfYear
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("setDayOfYear", function(day) {
		this.setMonth(0);
		this.setDate(day);
		return this;
	});

	/**
	 * Add a number of years to the date object.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.addYears(1);
	 * dtm.toString();
	 * @result 'Mon Jan 12 2009 00:00:00'
	 *
	 * @name addYears
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("addYears", function(num) {
		this.setFullYear(this.getFullYear() + num);
		return this;
	});

	/**
	 * Add a number of months to the date object.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.addMonths(1);
	 * dtm.toString();
	 * @result 'Tue Feb 12 2008 00:00:00'
	 *
	 * @name addMonths
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("addMonths", function(num) {
		var tmpdtm = this.getDate();

		this.setMonth(this.getMonth() + num);

		if (tmpdtm > this.getDate())
			this.addDays(-this.getDate());

		return this;
	});

	/**
	 * Add a number of days to the date object.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.addDays(1);
	 * dtm.toString();
	 * @result 'Sun Jan 13 2008 00:00:00'
	 *
	 * @name addDays
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("addDays", function(num) {
		//this.setDate(this.getDate() + num);
		this.setTime(this.getTime() + (num*86400000) );
		return this;
	});

	/**
	 * Add a number of hours to the date object.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.addHours(24);
	 * dtm.toString();
	 * @result 'Sun Jan 13 2008 00:00:00'
	 *
	 * @name addHours
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("addHours", function(num) {
		this.setHours(this.getHours() + num);
		return this;
	});

	/**
	 * Add a number of minutes to the date object.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.addMinutes(60);
	 * dtm.toString();
	 * @result 'Sat Jan 12 2008 01:00:00'
	 *
	 * @name addMinutes
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("addMinutes", function(num) {
		this.setMinutes(this.getMinutes() + num);
		return this;
	});

	/**
	 * Add a number of seconds to the date object.
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.addSeconds(60);
	 * dtm.toString();
	 * @result 'Sat Jan 12 2008 00:01:00'
	 *
	 * @name addSeconds
	 * @type Date
	 * @cat Plugins/Methods/Date
	 */
	add("addSeconds", function(num) {
		this.setSeconds(this.getSeconds() + num);
		return this;
	});

	/**
	 * Sets the time component of this Date to zero for cleaner, easier comparison of dates where time is not relevant.
	 *
	 * @example var dtm = new Date();
	 * dtm.zeroTime();
	 * dtm.toString();
	 * @result 'Sat Jan 12 2008 00:01:00'
	 *
	 * @name zeroTime
	 * @type Date
	 * @cat Plugins/Methods/Date
	 * @author Kelvin Luck
	 */
	add("zeroTime", function() {
		this.setMilliseconds(0);
		this.setSeconds(0);
		this.setMinutes(0);
		this.setHours(0);
		return this;
	});

	/**
	 * Returns a string representation of the date object according to Date.format.
	 * (Date.toString may be used in other places so I purposefully didn't overwrite it)
	 *
	 * @example var dtm = new Date("01/12/2008");
	 * dtm.asString();
	 * @result '12/01/2008' // (where Date.format == 'dd/mm/yyyy'
	 *
	 * @name asString
	 * @type Date
	 * @cat Plugins/Methods/Date
	 * @author Kelvin Luck
	 */
	add("asString", function(format) {
		var r = format || Date.format;
		if (r.split('mm').length>1) { // ugly workaround to make sure we don't replace the m's in e.g. noveMber
			r = r.split('mmmm').join(this.getMonthName(false))
				.split('mmm').join(this.getMonthName(true))
				.split('mm').join(_zeroPad(this.getMonth()+1))
		} else {
			r = r.split('m').join(this.getMonth()+1);
		}
		r = r.split('yyyy').join(this.getFullYear())
			.split('yy').join((this.getFullYear() + '').substring(2))
			.split('dd').join(_zeroPad(this.getDate()))
			.split('d').join(this.getDate());
		return r;
	});

	/**
	 * Returns a new date object created from the passed String according to Date.format or false if the attempt to do this results in an invalid date object
	 * (We can't simple use Date.parse as it's not aware of locale and I chose not to overwrite it incase it's functionality is being relied on elsewhere)
	 *
	 * @example var dtm = Date.fromString("12/01/2008");
	 * dtm.toString();
	 * @result 'Sat Jan 12 2008 00:00:00' // (where Date.format == 'dd/mm/yyyy'
	 *
	 * @name fromString
	 * @type Date
	 * @cat Plugins/Methods/Date
	 * @author Kelvin Luck
	 */
	Date.fromString = function(s)
	{
		var f = Date.format;

		var d = new Date('01/01/1970');

		if (s == '') return d;

		s = s.toLowerCase();
		var matcher = '';
		var order = [];
		var r = /(dd?d?|mm?m?|yy?yy?)+([^(m|d|y)])?/g;
		var results;
		while ((results = r.exec(f)) != null)
		{
			switch (results[1]) {
				case 'd':
				case 'dd':
				case 'm':
				case 'mm':
				case 'yy':
				case 'yyyy':
					matcher += '(\\d+\\d?\\d?\\d?)+';
					order.push(results[1].substr(0, 1));
					break;
				case 'mmm':
					matcher += '([a-z]{3})';
					order.push('M');
					break;
			}
			if (results[2]) {
				matcher += results[2];
			}

		}
		var dm = new RegExp(matcher);
		var result = s.match(dm);
		for (var i=0; i<order.length; i++) {
			var res = result[i+1];
			switch(order[i]) {
				case 'd':
					d.setDate(res);
					break;
				case 'm':
					d.setMonth(Number(res)-1);
					break;
				case 'M':
					for (var j=0; j<Date.abbrMonthNames.length; j++) {
						if (Date.abbrMonthNames[j].toLowerCase() == res) break;
					}
					d.setMonth(j);
					break;
				case 'y':
					d.setYear(res);
					break;
			}
		}

		return d;
	};

	// utility method
	var _zeroPad = function(num) {
		var s = '0'+num;
		return s.substring(s.length-2)
		//return ('0'+num).substring(-2); // doesn't work on IE :(
	};

})();var strFilterType = 'filter';
var strFiltersType = 'filters';
function addFilterToCookie(strValue)
{
var strPickedFilters = $.cookie('VSFilters');
if(strPickedFilters != null && !strPickedFilters.match(strValue))
{
if(strPickedFilters != null && strPickedFilters != '')
{
var strDivider = ';';
}
else
{
var strDivider = '';
}
if(strPickedFilters == 'filters')
{
$.cookie('VSFilters', strValue);
}
else
{
$.cookie('VSFilters', $.cookie('VSFilters') + strDivider + strValue);
}
}
else if(strPickedFilters == null)
{
$.cookie('VSFilters', strValue);
}
}
function repopulateFilters()
{
return false;
var strPickedFilters = $.cookie('VSFilters');
if(strPickedFilters != null && strPickedFilters != '')
{
arrPickedFilters = strPickedFilters.split(';');
for(i=0; i<arrPickedFilters.length; i++)
{
strFilter = arrPickedFilters[i];
arrBits = strFilter.split("_");
var strFilterName = '';
for(var j=0; j<arrBits.length-1; j++)
{
if(strFilterName != '')
{
strFilterName+= '_' + arrBits[j];
}
else
{
strFilterName+= arrBits[j];
}
}
if(strFilterName == 'categories_id')
{
$('.applied_' + strFilterName + '_url_picked').remove();
}
if($('#applied_' + strFilterName).length == 0)
{
$('#ajax_filters_wrapper').append('<input type="hidden" name="' + strFilterName + '[]" value="' + arrBits[j] + '" class="applied_' + strFilterName + ' js_add" id="applied_ajax_filters_' + strFilter + '" />');
}
$('#filter_catalog_navigation_link_' +arrPickedFilters[i] + ' a').addClass('active_filter');
}
}
$.cookie('VSFilters', strPickedFilters);
}
function showAjaxLoaderPopover (){
if($('#ajax_filters_loading').length == 0)
{
var strHTML = '<div id="ajax_filters_loading"></div>';
$('#middle_column').append(strHTML);
}
else
{
$('#ajax_filters_loading').show();
}
}
function isIE()
{
return /msie/i.test(navigator.userAgent) && !/opera/i.test(navigator.userAgent);
}
var lastHash = '';
var blnCheckHash = false;
function pollHash() {
if(blnCheckHash == true && lastHash !== self.document.location.hash) {
lastHash = self.document.location.hash;
showAjaxLoaderPopover();
$('.manual_applied').remove();
updateFromHash();
refreshProductFilters('', getProductListingsQuery());
refreshProductListings();
}
}
function updateFromHash()
{
var strURLCriteria = unescape(self.document.location.hash.substring(1));
arrBits = strURLCriteria.split(':');
blnRemoveDefaultCategories = false;
for(var i=0; i<arrBits.length; i++)
{
var strType = '';
if(arrBits[i].substring(0,4) != 'page') var strType = arrBits[i].substring(0,1);
var strID = arrBits[i].substring(1,arrBits[i].length);
var strApplyAs = null;
var strFullApplyAs = null;
switch(strType)
{
case 't':
strApplyAs = 'tags_id';
break;
case 'b':
strApplyAs = 'price_band_id';
break;
case 'c':
strApplyAs = 'categories_id';
break;
case 'p':
strApplyAs = 'category_parent_id';
break;
case 'm':
strApplyAs = 'manufacturer_id';
break;
case 'a':
strApplyAs = 'attribute_value_ids';
break;
}
if(strApplyAs != null)
{
strFullApplyAs = strApplyAs + '_' + strID;
if($('#ajax_filters_' + strFullApplyAs).length == 0 && $('#applied_ajax_finder_' + strFullApplyAs).length == 0)
{
if(!blnRemoveDefaultCategories && strApplyAs == 'categories_id')
{
blnRemoveDefaultCategories = true;
pullOutCurrentCategory();
}
if(strID != null)
{
if($('#applied_ajax_filters_' + strFullApplyAs).length == 0)
{
$('#ajax_filters_wrapper').append('<input type="hidden" name="' + strApplyAs + '[]" id="applied_ajax_filters_' + strFullApplyAs + '" class="applied_' + strApplyAs + ' url_applied applied_' + strApplyAs + '_picked" value="' + strID + '" />');
}
else
{
$('#applied_ajax_filters_' + strFullApplyAs).attr('disabled', false);
}
}
}
if($('#filter_catalog_navigation_link_' + strFullApplyAs).length > 0)
{
strExistingClass = $('#filter_catalog_navigation_link_' + strFullApplyAs + ' a').attr('className');
$('#filter_catalog_navigation_link_' + strFullApplyAs + ' a').addClass('active_filter');
strClearLinkHTML = '<a href="#" onclick="removeProductFiltersGroup(\'' + strApplyAs + '\'); return false;" class="remove_filter" title="Clear"><span class="remove_filter_span">Clear</span></a>';
$('#filter_catalog_navigation_' + strApplyAs + '_clear_all').text('');
$('#filter_catalog_navigation_' + strApplyAs + '_clear_all').append(strClearLinkHTML);
}
}
else
{
if(arrBits[i].match(/page/))
{
$('#ajax_filters_pages').val(arrBits[i].replace(/page/, ''));
}
if(arrBits[i].match(/sort/))
{
$('#ajax_filters_sortby').val(arrBits[i].replace(/sort/, ''));
}
}
}
}
function pullOutCurrentCategory()
{
strURL = new String(document.location);
if(!strURL.match('search/'))
{
arrTempURLBits = strURL.split('-c');
if(arrTempURLBits.length > 0)
{
blnApplyEndCategoryID = false;
for(var j=1; j< arrTempURLBits.length; j++)
{
if(arrTempURLBits[j].match('#'))
{
strSplit = '#';
}
else
{
strSplit = '/';
}
arrCatID = arrTempURLBits[j].split(strSplit);
strApplyCategoryAs = 'categories_id';
if(j == (arrTempURLBits.length-1))
{
strApplyCategoryAs = 'parent_category_id';
blnApplyEndCategoryID = true;
}
else
{
strID = null;
}
if(blnApplyEndCategoryID)
{
strFullApplyCategoryAs = strApplyCategoryAs + '_' + arrCatID[0];
if(!isNaN(arrCatID[0]))
{
if($('#applied_ajax_filters_' + strFullApplyCategoryAs).length == 0)
{
$('#ajax_filters_wrapper').append('<input type="hidden" name="' + strApplyCategoryAs + '[]" id="appied_ajax_filters_' + strFullApplyCategoryAs + '" class="applied_' + strApplyCategoryAs + ' url_applied applied_' + strApplyCategoryAs + '_picked" value="' + arrCatID[0] + '" />');
}
else
{
$('#applied_ajax_filters_' + strFullApplyCategoryAs).attr('disabled', false);
}
}
}
}
}
}
}
function initialTickFilters()
{
arrFilters = $('#ajax_filters_wrapper').children();
strQueryString = '?';
for(i=0; i<arrFilters.length; i++)
{
if(arrFilters[i].name != undefined && !arrFilters[i].disabled)
{
strFilterName = arrFilters[i].id;
strFilterName = strFilterName.replace(/applied_ajax_filters_/, '');
arrFilterNameBits = strFilterName.split("_",3);
iBlah = arrFilterNameBits.pop();
strPlainFilterName = '';
for(j=0; j<arrFilterNameBits.length; j++)
{
strPlainFilterName  += arrFilterNameBits[j] + '_';
}
strPlainFilterName = strPlainFilterName.substring(0,strPlainFilterName.length-1);

if(strPlainFilterName == 'price_band')
{
strPlainFilterName = 'price_band_id';
}
if(strFilterName != '' && $('.applied_' + strPlainFilterName).length < $('.filter_catalog_navigation_' + strPlainFilterName + '_link').length)
{
if($('#filter_catalog_navigation_link_' + strFilterName).length > 0)
{
strExistingClass = $('#filter_catalog_navigation_link_' + strFilterName + ' a').attr('className');
$('#filter_catalog_navigation_link_' + strFilterName + ' a').addClass('active_filter');
strClearLinkHTML = '<a href="#" onclick="removeProductFiltersGroup(\'' + strExistingClass + '\'); return false;" class="remove_filter" title="Clear"><span>Clear</span></a>';
$('#filter_catalog_navigation_' + strExistingClass + '_clear_all').text('');
$('#filter_catalog_navigation_' + strExistingClass + '_clear_all').append(strClearLinkHTML);
}
}
}
}
var strURLCriteria = unescape(self.document.location.hash.substring(1));
if(strURLCriteria == '')
{
}
else
{
}
}
function refreshProductFiltersNew(strRefreshBasedOn, strQueryString)
{
$.getJSON('/ajax/refreshFilters' + strQueryString ,
function (strJSON)
{
$('#filters_navigation').html('');
$('#filters_navigation').append(strJSON);
}
);
}
var strRefreshBasedOn = ' ';
function refreshProductFilters(strRefreshBasedOn, strQueryString)
{
if(!blnRunningFiltersRefresh)
{
blnRunningFiltersRefresh = true;
$.getJSON('/ajax/refreshFilters' + strQueryString ,
function (strJSON)
{
if(strJSON._narrow_tags == 'Y' || $('.filter_title_tags_id:visible').length >= 1)
{
$('.filter_catalog_navigation_tags_id_link').addClass('filter_catalog_navigation_link_disabled');
$.each(strJSON.tags_id, function(i, iTagID) { $('#filter_catalog_navigation_link_tags_id_' + iTagID).removeClass('filter_catalog_navigation_link_disabled'); });
}
if(strJSON._hide_tag_filters == 'Y')
{
$('.filter_catalog_navigation_tags_id_link').addClass('filter_catalog_navigation_link_disabled');
}
if(strJSON._narrow_attributes == 'Y' || $('.filter_catalog_navigation_attribute_value_ids_title:visible').length >= 1)
{
$('.filter_catalog_navigation_attribute_value_ids_link').addClass('filter_catalog_navigation_link_disabled');
$.each(strJSON.attribute_value_ids, function(i, iAttributeValueID) { $('#filter_catalog_navigation_link_attribute_value_ids_' + iAttributeValueID).removeClass('filter_catalog_navigation_link_disabled'); });
}
if((blnClickedLink && ((strJSON._criteria.categories_id == undefined) || (strRefreshBasedOn != '' && strRefreshBasedOn != 'categories_id'))) || (!blnClickedLink && strRefreshBasedOn != '' && strRefreshBasedOn != 'categories_id')/* || $('.filter_title_categories_id:visible').length >= 1*/)
{
$('.filter_catalog_navigation_categories_id_link').addClass('filter_catalog_navigation_link_disabled');
$.each(strJSON.categories_id, function(i, iCategoryID) { $('#filter_catalog_navigation_link_categories_id_' + iCategoryID).removeClass('filter_catalog_navigation_link_disabled'); });
}
if(strJSON.categories_id != undefined && strJSON._criteria.parent_category_id != undefined)
{
$('.filter_catalog_navigation_category_parent_id').hide();
$('.filter_catalog_navigation_category_parent_id li.filter_catalog_navigation_link').addClass('filter_catalog_navigation_link_disabled');
}
if((blnClickedLink && strJSON._criteria.manufacturer_id == undefined) || (!blnClickedLink && strRefreshBasedOn != '' && strRefreshBasedOn != 'manufacturer_id')/* || $('.filter_title_manufacturer_id:visible').length >= 1*/)
{
$('.filter_catalog_navigation_manufacturer_id_link').addClass('filter_catalog_navigation_link_disabled');
$.each(strJSON.manufacturer_id, function(i, iBrandID) { $('#filter_catalog_navigation_link_manufacturer_id_' + iBrandID).removeClass('filter_catalog_navigation_link_disabled');  });
}
if((blnClickedLink && strJSON._criteria.rating == undefined) || (!blnClickedLink && strRefreshBasedOn != '' && strRefreshBasedOn != 'tags_id'))
{
$('.filter_catalog_navigation_rating_link').addClass('filter_catalog_navigation_link_disabled');
$.each(strJSON.rating, function(i, iRating) { $('#filter_catalog_navigation_link_rating_' + iRating).removeClass('filter_catalog_navigation_link_disabled'); });
}
if((blnClickedLink && strJSON._criteria.price_band_id == undefined) || (!blnClickedLink && strRefreshBasedOn != '' && strRefreshBasedOn != 'price_band_id')/* || $('.filter_title_price_band_id:visible').length >= 1*/)
{
$('.filter_catalog_navigation_price_band_id_link').addClass('filter_catalog_navigation_link_disabled');
$.each(strJSON.price_band_id, function(i, iPriceBandID) { $('#filter_catalog_navigation_link_price_band_id_' + iPriceBandID).removeClass('filter_catalog_navigation_link_disabled'); });
}
toggleBlankFilterGroups();
$('.filter_catalog_navigation_link a').removeClass('filters_being_refreshed');
}
);
blnRunningFiltersRefresh = false;
}
}
function getProductListingsQuery()
{
arrFilters = $('#ajax_' + strFiltersType + '_wrapper').children();
strQueryString = '?';
for(i=0; i<arrFilters.length; i++)
{
if(arrFilters[i].name != undefined && !arrFilters[i].disabled)
{
strQueryString+= arrFilters[i].name + '=' + arrFilters[i].value + '&';
}
}
return strQueryString;
}
var blnRunningFiltersRefresh = false;
var blnRunningRefresh = false;
function refreshProductListings(strRefreshBasedOn)
{
if(!blnRunningRefresh)
{
blnRunningRefresh = true;
strQueryString = getProductListingsQuery();
$.getJSON('/ajax/getProductListings' + strQueryString, function(strJSON) {
toggleBlankFilterGroups();
$('#middle_column').attr('innerHTML', strJSON);
attachAjaxToNumPerPage();
rebuildProductListings();
changePageTitle();
$('#ajax_filters_loading').hide();
$('.quick_buy_trigger').unbind('click');
initQuickBuy();
if(typeof update_product_preview =='function')
{
update_product_preview();
}
if(typeof fnPostFilterCallback == 'function')fnPostFilterCallback(strJSON);
if(typeof tb_call == 'function')tb_call();
$('.hide_after_ajax').hide();
});
if(strRefreshBasedOn != '')
{
var iNumStillActive = 0;
$('.' + strRefreshBasedOn).each(function()
{
if($(this).hasClass('active_filter')) iNumStillActive++;
});
strClearLinkHTML = '';
if(iNumStillActive > 0)
{
strClearLinkHTML = '<a href="#" onclick="removeProductFiltersGroup(\'' + strRefreshBasedOn + '\'); return false;" class="remove_filter" title="Clear"><span>Clear</span></a>';
}
$('#filter_catalog_navigation_' + strRefreshBasedOn + '_clear_all').text('');
$('#filter_catalog_navigation_' + strRefreshBasedOn + '_clear_all').append(strClearLinkHTML);
}
blnRunningRefresh = false;
}
}
function changePageTitle()
{
try
{
if (typeof($('#metatitle').val()) != 'undefined' && $('#metatitle').val() != '')
{
document.title = $('#metatitle').val();
}
else
{
document.title = $('h1').text();
}
}
catch (err)
{
}
}
function closeAjax()
{
$('#ajax_filters_loading').hide();
}
function attachAjaxToNumPerPage()
{
$('.pagination').show();
$('#page_view_options > a, .view_all, .view_all > a').unbind('click');
$('#page_view_options > a, .view_all, .view_all > a').bind('click', function()
{
strlinkText = $(this).text();
strlinkText = strlinkText.replace(/.*\s([0-9]+|all).*/i,'$1');
if (isNaN(strlinkText))
{
$('#ajax_filters_num_per_page').val('all');
$('#ajax_filters_pages').val('1');
showAjaxLoaderPopover();
refreshProductListings('');
return false;
}
else
{
$('#ajax_filters_num_per_page').val(strlinkText);
showAjaxLoaderPopover();
refreshProductListings('');
return false;
}
});
}
function toggleBlankFilterGroups()
{
$('.filter_catalog_navigation').show();
$('.force_hide').hide();
$('.filter_catalog_navigation').each(function(i, objEl)
{
strElementID = objEl.id;
if(!strElementID.match('_keyword'))
{
if($('#' + strElementID + ' > ul > li > div > ul > li.filter_catalog_navigation_link').length == $('#' + strElementID + ' > ul > li > div > ul > .filter_catalog_navigation_link_disabled').length)
{
$('#' + strElementID).hide();
}
else if($('#' + strElementID + ' > ul > li > div > ul > li.filter_catalog_navigation_link:visible').length == 1 && (strElementID.indexOf('categories_id') != -1 || strElementID.indexOf('price') != -1))
{
$('#' + strElementID).hide();
}
}
});
}
function rebuildProductListings()
{
$('.pagination a').unbind('click');
$('.pagination a').bind('click', function()
{
var strText = $(this).text();
strText = strText.replace(/^\s+|\s+$/g, '') ;
if(strText=='')
{
strText = $(this).attr('title');
}
strText = strText.toLowerCase();
strText = strText.replace(/^\s+|\s+$/g,"");
if(strText.match("next") || $(this).hasClass('next_page'))
{
$('.pagination strong').each(function()
{
iCurrentPage = $(this).text();
});
strText = parseInt(iCurrentPage)+parseInt(1);
}
else if(strText.match("prev") || $(this).hasClass('prev_page'))
{
$('.pagination strong').each(function()
{
iCurrentPage = $(this).text();
});
strText = parseInt(iCurrentPage)-parseInt(1);
}
var strHash = self.document.location.hash;
if(!strHash.match('page'))
{
strHash = strHash + ':page' + strText;
}
else
{
arrBits = strHash.split(':');
strCurrentPage = null;
for(i=0; i < arrBits.length; i++)
{
if(arrBits[i].match(/page/))
{
strCurrentPage = arrBits[i];
}
}
strHash = strHash.replace(strCurrentPage, 'page' + strText);
}
self.document.location.hash = strHash;
$.scrollTo('0px', 750);
$('#ajax_filters_pages').val(strText);
$.history.load(self.document.location.hash.replace(/#/, ''));
$('#page_number').remove();
return false;
});
}
function removeProductFiltersGroup(strRemoveGroupKey)
{
strHash = self.document.location.hash;
arrHashBits = strHash.split(':');
strApplyAsBase = null;
switch(strRemoveGroupKey)
{
case 'tags_id':
strApplyAsBase = 't';
break;
case 'price_band_id':
strApplyAsBase = 'b';
break;
case 'categories_id':
strApplyAsBase = 'c';
break;
case 'category_parent_id':
strApplyAsBase = 'p';
break;
case 'manufacturer_id':
strApplyAsBase = 'm';
break;
case 'attribute_value_ids':
strApplyAsBase = 'a';
break;
}
$('#filter_catalog_navigation_title_' + strRemoveGroupKey + ' .active_filter').each(function()
{
$(this).removeClass('active_filter');
removeProductFiltersCriteria($(this).attr('name'), false);
if(strApplyAsBase != null)
{
var iElementId = $(this).attr('id');
iElementId = iElementId.replace(strRemoveGroupKey + '_', '');
strApplyAs = strApplyAsBase + iElementId;
for(var i=0; i<arrHashBits.length; i++)
{
if(arrHashBits[i] == strApplyAs || arrHashBits[i] == '#' + strApplyAs)
{
strHash = strHash.replace(strApplyAs, '');
}
}
}
});
strHash = strHash.replace('::::::::::', ':');
strHash = strHash.replace(':::::::::', ':');
strHash = strHash.replace('::::::::', ':');
strHash = strHash.replace(':::::::', ':');
strHash = strHash.replace('::::::', ':');
strHash = strHash.replace(':::::', ':');
strHash = strHash.replace('::::', ':');
strHash = strHash.replace(':::', ':');
strHash = strHash.replace('::', ':');
if(strHash == ':')
{
strHash = '';
}
strTemp = new String(self.document.location);
if(strTemp.match(/-t[0-9]+$/))
{
document.location = '/search/all-products';
}
else
{
self.document.location.hash = strHash;
}
}
function removeProductFiltersCriteria(strRemoveKey, blnRunRefresh)
{
$('#'+strRemoveKey).removeClass('active_filter');
$('#ajax_filters_wrapper_' + strRemoveKey).remove();
$('#applied_ajax_filters_' + strRemoveKey).attr('disabled', false);
if($('#applied_ajax_filters_' + strRemoveKey).hasClass('base_category_id'))
{
if($('#applied_ajax_filters_parent_category_id_' + $('#applied_ajax_filters_' + strRemoveKey).val() ).length > 0)
{
$('#applied_ajax_filters_' + strRemoveKey).remove();
}
else
{
$('#applied_ajax_filters_' + strRemoveKey).attr('disabled', true);
}
}
else
{
$('#applied_ajax_filters_' + strRemoveKey).remove();
}
$('#your_selection_' + strRemoveKey).remove();
var strID = strRemoveKey;
arrBits = strRemoveKey.split("_");
strRemoveKey = '';
for(var i=0; i<arrBits.length-1; i++)
{
if(strRemoveKey != '')
{
strRemoveKey+= '_' + arrBits[i];
}
else
{
strRemoveKey+= arrBits[i];
}
}
iPosition = strRemoveKey.lastIndexOf("-");
if (iPosition > 0)
{
strRemoveSortNum = strRemoveKey.substring(iPosition);
strRemoveKey = strRemoveKey.substring(0,iPosition);
}
else
{
strRemoveSortNum = '';
}
if(strRemoveKey == 'categories_id')
{
if($('.applied_' + strRemoveKey).length == 0)
{
$('.base_category_id').attr('disabled', false);
}
}
var strApplyAs = null;
var strActualID = strID.replace(strRemoveKey + '_', '');
switch(strRemoveKey)
{
case 'tags_id':
strApplyAs = 't';
break;
case 'price_band_id':
strApplyAs = 'b';
break;
case 'categories_id':
strApplyAs = 'c';
if($('.manual_applied_categories_id').length == 0)
{
if($('.base_category_id:enabled').length == 0)
{
$('.base_category_id').attr('disabled', false);
}
}
break;
case 'category_parent_id':
strApplyAs = 'p';
if($('.manual_applied_categories_id').length == 0)
{
if($('.base_category_id:enabled').length == 0)
{
$('.base_category_id').attr('disabled', false);
}
}
break;
case 'manufacturer_id':
strApplyAs = 'm';
break;
case 'attribute_value_ids':
strApplyAs = 'a';
break;
}
if(strApplyAs != null)
{
if(self.document.location.hash != '')
{
strID = strID.replace(strRemoveKey + strRemoveSortNum + '_', '');
strHash = self.document.location.hash;
strHash = strHash.replace(':' + strApplyAs + strID, '');
strHash = strHash.replace('#' + strApplyAs + strID, '');
if(strHash == '#')
{
strHash = '';
}
self.document.location.hash = strHash;
}
}
if($('.active_filter').length == 0 && $('.active_filter_criteria').length == 0)
{
$('#catalog_navigation_criteria').hide();
}
$.history.load(self.document.location.hash.replace(/#/, ''));
return false;
}
function applyAjaxSortOrder(strSortValue)
{
if($('#ajax_filters_wrapper').length > 0)
{
strSortValue = strSortValue.replace('?sort=', '');
if(!isNaN(strSortValue))
{
$('#ajax_filters_sortby').val(strSortValue);
var strHash = self.document.location.hash;
if(strHash != '')
{
var strDivider = ':';
}
else
{
var strDivider = '';
}
if(!strHash.match('sort'))
{
strHash = strHash + strDivider + 'sort' + strSortValue;
}
else
{
arrBits = strHash.split(':');
strCurrentPage = null;
for(i=0; i < arrBits.length; i++)
{
if(arrBits[i].match(/sort/))
{
strCurrentPage = arrBits[i];
}
}
strHash = strHash.replace(strCurrentPage, 'sort' + strSortValue);
}
self.document.location.hash = strHash;
}
else
{
$('#ajax_filters_sortby').val('');
}
showAjaxLoaderPopover();
refreshProductListings();
}
else
{
document.location.href = document.location.pathname + strSortValue;
}
}
function applyAjaxViewType(strViewType)
{
if(strViewType != "")
{
$.cookie('VSViewType', strViewType, {expires: +365, path: '/', domain: window.location.hostname});
}
showAjaxLoaderPopover();
refreshProductListings();
}
var blnClickedLink = false;
var strClickedLink = ' ';
function filtersHistoryCallback(strHash)
{
if(strHash || $('.manual_applied').length > 0 || $('.url_applied').length > 0)
{
showAjaxLoaderPopover();
rebuildCategoriesForHash(strHash);
refreshProductFilters(strClickedLink, getProductListingsQuery());
refreshProductListings();
}
else if($('.manual_applied').length == 0 && $('.url_applied').length == 0)
{
if(blnClickedLink)
{
$('.base_category_id').attr('disabled', false);
rebuildCategoriesForHash(strHash);
showAjaxLoaderPopover();
$('a.active_filter').removeClass('active_filter');
$('.manual_applied').remove();
$('.url_applied').remove();
refreshProductFilters(strClickedLink, getProductListingsQuery());
refreshProductListings();
blnClickedLink = false;
}
else
{
}
}
else
{
}
}
function rebuildCategoriesForHash(strHash){
blnRebuildCategoriesFromHash = false;
if(!blnClickedLink)
{
blnRebuildCategoriesFromHash = true;
$('.url_applied').each(function()
{
if($(this).hasClass('applied_parent_category_id'))
{
if(strHash == '')
{
$(this).removeClass('url_applied');
$(this).addClass('base_category_id');
}
}
});
}
$('.manual_applied').remove();
$('.url_applied').remove();
updateFromHash();
pullOutCurrentCategory();
if(blnRebuildCategoriesFromHash && strHash)
{
arrHashBits = strHash.split(':');
$('.base_category_id').attr('disabled', true);
for(var i=0; i<arrBits.length; i++)
{
if(arrBits[i].substr(0,1) == 'c')
{
iCategoryID = arrBits[i].substr(1,arrBits[i].length);
$('#applied_ajax_filters_categories_id_' + iCategoryID).attr('disabled', true);
}
}
arrHashBits = location.hash.split(':');
for(var i=0; i<arrBits.length; i++)
{
if(arrBits[i].substr(0,1) == 'c')
{
iCategoryID = arrBits[i].substr(1,arrBits[i].length);
$('#applied_ajax_filters_categories_id_' + iCategoryID).attr('disabled', false);
}
}
}
}/*
 * jQuery history plugin
 *
 * Copyright (c) 2006 Taku Sano (Mikage Sawatari)
 * Licensed under the MIT License:
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Modified by Lincoln Cooper to add Safari support and only call the callback once during initialization
 * for msie when no initial hash supplied.
 * API rewrite by Lauris Buk?is-Haberkorns
 */

(function($) {

function History()
{
	this._curHash = '';
	this._callback = function(hash){};
};

$.extend(History.prototype, {

	init: function(callback) {
		this._callback = callback;
		this._curHash = location.hash;

		if($.browser.msie) {
			// To stop the callback firing twice during initilization if no hash present
			if (this._curHash == '') {
				this._curHash = '#';
			}

			// add hidden iframe for IE
			$("body").prepend('<iframe id="jQuery_history" style="display: none;"></iframe>');
			var iframe = $("#jQuery_history")[0].contentWindow.document;
			iframe.open();
			iframe.close();
			iframe.location.hash = this._curHash;
		}
		else if ($.browser.safari) {
			// etablish back/forward stacks
			this._historyBackStack = [];
			this._historyBackStack.length = history.length;
			this._historyForwardStack = [];
			this._isFirst = true;
			this._dontCheck = false;
		}
		this._callback(this._curHash.replace(/^#/, ''));
		setInterval(this._check, 100);
	},

	add: function(hash) {
		// This makes the looping function do something
		this._historyBackStack.push(hash);

		this._historyForwardStack.length = 0; // clear forwardStack (true click occured)
		this._isFirst = true;
	},

	_check: function() {
		if($.browser.msie) {
			// On IE, check for location.hash of iframe
			var ihistory = $("#jQuery_history")[0];
			var iframe = ihistory.contentDocument || ihistory.contentWindow.document;
			var current_hash = iframe.location.hash;
			if(current_hash != $.history._curHash) {

				location.hash = current_hash;
				$.history._curHash = current_hash;
				$.history._callback(current_hash.replace(/^#/, ''));

			}
		} else if ($.browser.safari) {
			if (!$.history._dontCheck) {
				var historyDelta = history.length - $.history._historyBackStack.length;

				if (historyDelta) { // back or forward button has been pushed
					$.history._isFirst = false;
					if (historyDelta < 0) { // back button has been pushed
						// move items to forward stack
						for (var i = 0; i < Math.abs(historyDelta); i++) $.history._historyForwardStack.unshift($.history._historyBackStack.pop());
					} else { // forward button has been pushed
						// move items to back stack
						for (var i = 0; i < historyDelta; i++) $.history._historyBackStack.push($.history._historyForwardStack.shift());
					}
					var cachedHash = $.history._historyBackStack[$.history._historyBackStack.length - 1];
					if (cachedHash != undefined) {
						$.history._curHash = location.hash;
						$.history._callback(cachedHash);
					}
				} else if ($.history._historyBackStack[$.history._historyBackStack.length - 1] == undefined && !$.history._isFirst) {
					// back button has been pushed to beginning and URL already pointed to hash (e.g. a bookmark)
					// document.URL doesn't change in Safari
					if (document.URL.indexOf('#') >= 0) {
						$.history._callback(document.URL.split('#')[1]);
					} else {
						$.history._callback('');
					}
					$.history._isFirst = true;
				}
			}
		} else {
			// otherwise, check for location.hash
			var current_hash = location.hash;
			if(current_hash != $.history._curHash) {
				$.history._curHash = current_hash;
				$.history._callback(current_hash.replace(/^#/, ''));
			}
		}
	},

	load: function(hash) {
		var newhash;

		if ($.browser.safari) {
			newhash = hash;
		} else {
			newhash = '#' + hash;
			location.hash = newhash;
		}
		this._curHash = newhash;

		if ($.browser.msie) {
			var ihistory = $("#jQuery_history")[0]; // TODO: need contentDocument?
			var iframe = ihistory.contentWindow.document;
			iframe.open();
			iframe.close();
			iframe.location.hash = newhash;
			this._callback(hash);
		}
		else if ($.browser.safari) {
			this._dontCheck = true;
			// Manually keep track of the history values for Safari
			this.add(hash);

			// Wait a while before allowing checking so that Safari has time to update the "history" object
			// correctly (otherwise the check loop would detect a false change in hash).
			var fn = function() {$.history._dontCheck = false;};
			window.setTimeout(fn, 200);
			this._callback(hash);
			// N.B. "location.hash=" must be the last line of code for Safari as execution stops afterwards.
			//      By explicitly using the "location.hash" command (instead of using a variable set to "location.hash") the
			//      URL in the browser and the "history" object are both updated correctly.
			location.hash = newhash;
		}
		else {
		  this._callback(hash);
		}
	}
});

$(document).ready(function() {
	$.history = new History(); // singleton instance
});

})(jQuery);/**
 * jCarousel - Riding carousels with jQuery
 *   http://sorgalla.com/jcarousel/
 *
 * Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com)
 * Dual licensed under the MIT (MIT-LICENSE.txt)
 * and GPL (GPL-LICENSE.txt) licenses.
 *
 * Built on top of the jQuery library
 *   http://jquery.com
 *
 * Inspired by the "Carousel Component" by Bill Scott
 *   http://billwscott.com/carousel/
 */

(function($) {
    /**
     * Creates a carousel for all matched elements.
     *
     * @example $("#mycarousel").jcarousel();
     * @before <ul id="mycarousel" class="jcarousel-skin-name"><li>First item</li><li>Second item</li></ul>
     * @result
     *
     * <div class="jcarousel-skin-name">
     *   <div class="jcarousel-container">
     *     <div disabled="disabled" class="jcarousel-prev jcarousel-prev-disabled"></div>
     *     <div class="jcarousel-next"></div>
     *     <div class="jcarousel-clip">
     *       <ul class="jcarousel-list">
     *         <li class="jcarousel-item-1">First item</li>
     *         <li class="jcarousel-item-2">Second item</li>
     *       </ul>
     *     </div>
     *   </div>
     * </div>
     *
     * @name jcarousel
     * @type jQuery
     * @param Hash o A set of key/value pairs to set as configuration properties.
     * @cat Plugins/jCarousel
     */
    $.fn.jcarousel = function(o) {
        return this.each(function() {
            new $jc(this, o);
        });
    };

    // Default configuration properties.
    var defaults = {
        vertical: false,
        start: 1,
        offset: 1,
        size: null,
        scroll: 3,
        visible: null,
        animation: 'normal',
        easing: 'swing',
        auto: 0,
        wrap: null,
        initCallback: null,
        reloadCallback: null,
        itemLoadCallback: null,
        itemFirstInCallback: null,
        itemFirstOutCallback: null,
        itemLastInCallback: null,
        itemLastOutCallback: null,
        itemVisibleInCallback: null,
        itemVisibleOutCallback: null,
        buttonNextHTML: '<div></div>',
        buttonPrevHTML: '<div></div>',
        buttonNextEvent: 'click',
        buttonPrevEvent: 'click',
        buttonNextCallback: null,
        buttonPrevCallback: null
    };

    /**
     * The jCarousel object.
     *
     * @constructor
     * @name $.jcarousel
     * @param Object e The element to create the carousel for.
     * @param Hash o A set of key/value pairs to set as configuration properties.
     * @cat Plugins/jCarousel
     */
    $.jcarousel = function(e, o) {
        this.options    = $.extend({}, defaults, o || {});

        this.locked     = false;

        this.container  = null;
        this.clip       = null;
        this.list       = null;
        this.buttonNext = null;
        this.buttonPrev = null;

        this.wh = !this.options.vertical ? 'width' : 'height';
        this.lt = !this.options.vertical ? 'left' : 'top';

        // Extract skin class
        var skin = '', split = e.className.split(' ');

        for (var i = 0; i < split.length; i++) {
            if (split[i].indexOf('jcarousel-skin') != -1) {
                $(e).removeClass(split[i]);
                var skin = split[i];
                break;
            }
        }

        if (e.nodeName == 'UL' || e.nodeName == 'OL') {
            this.list = $(e);
            this.container = this.list.parent();

            if (this.container.hasClass('jcarousel-clip')) {
                if (!this.container.parent().hasClass('jcarousel-container'))
                    this.container = this.container.wrap('<div></div>');

                this.container = this.container.parent();
            } else if (!this.container.hasClass('jcarousel-container'))
                this.container = this.list.wrap('<div></div>').parent();
        } else {
            this.container = $(e);
            this.list = $(e).find('>ul,>ol,div>ul,div>ol');
        }

        if (skin != '' && this.container.parent()[0].className.indexOf('jcarousel-skin') == -1)
        	this.container.wrap('<div class=" '+ skin + '"></div>');

        this.clip = this.list.parent();

        if (!this.clip.length || !this.clip.hasClass('jcarousel-clip'))
            this.clip = this.list.wrap('<div></div>').parent();

        this.buttonPrev = $('.jcarousel-prev', this.container);

        if (this.buttonPrev.size() == 0 && this.options.buttonPrevHTML != null)
            this.buttonPrev = this.clip.before(this.options.buttonPrevHTML).prev();

        this.buttonPrev.addClass(this.className('jcarousel-prev'));

        this.buttonNext = $('.jcarousel-next', this.container);

        if (this.buttonNext.size() == 0 && this.options.buttonNextHTML != null)
            this.buttonNext = this.clip.before(this.options.buttonNextHTML).prev();

        this.buttonNext.addClass(this.className('jcarousel-next'));

        this.clip.addClass(this.className('jcarousel-clip'));
        this.list.addClass(this.className('jcarousel-list'));
        this.container.addClass(this.className('jcarousel-container'));

        var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
        var li = this.list.children('li');

        var self = this;

        if (li.size() > 0) {
            var wh = 0, i = this.options.offset;
            li.each(function() {
                self.format(this, i++);
                wh += self.dimension(this, di);
            });

            this.list.css(this.wh, wh + 'px');

            // Only set if not explicitly passed as option
            if (!o || o.size === undefined)
                this.options.size = li.size();
        }

        // For whatever reason, .show() does not work in Safari...
        this.container.css('display', 'block');
        this.buttonNext.css('display', 'block');
        this.buttonPrev.css('display', 'block');

        this.funcNext   = function() { self.next(); };
        this.funcPrev   = function() { self.prev(); };
        this.funcResize = function() { self.reload(); };

        if (this.options.initCallback != null)
            this.options.initCallback(this, 'init');

     if ($.browser.safari  &&  $.browser.version < 523 ) {
            this.buttons(false, false);
            $(window).bind('load', function() { self.setup(); });
        } else
            this.setup();
    };

    // Create shortcut for internal use
    var $jc = $.jcarousel;

    $jc.fn = $jc.prototype = {
        jcarousel: '0.2.3'
    };

    $jc.fn.extend = $jc.extend = $.extend;

    $jc.fn.extend({
        /**
         * Setups the carousel.
         *
         * @name setup
         * @type undefined
         * @cat Plugins/jCarousel
         */
        setup: function() {
            this.first     = null;
            this.last      = null;
            this.prevFirst = null;
            this.prevLast  = null;
            this.animating = false;
            this.timer     = null;
            this.tail      = null;
            this.inTail    = false;

            if (this.locked)
                return;

            this.list.css(this.lt, this.pos(this.options.offset) + 'px');
            var p = this.pos(this.options.start);
            this.prevFirst = this.prevLast = null;
            this.animate(p, false);

            $(window).unbind('resize', this.funcResize).bind('resize', this.funcResize);
        },

        /**
         * Clears the list and resets the carousel.
         *
         * @name reset
         * @type undefined
         * @cat Plugins/jCarousel
         */
        reset: function() {
            this.list.empty();

            this.list.css(this.lt, '0px');
            this.list.css(this.wh, '10px');

            if (this.options.initCallback != null)
                this.options.initCallback(this, 'reset');

            this.setup();
        },

        /**
         * Reloads the carousel and adjusts positions.
         *
         * @name reload
         * @type undefined
         * @cat Plugins/jCarousel
         */
        reload: function() {
            if (this.tail != null && this.inTail)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + this.tail);

            this.tail   = null;
            this.inTail = false;

            if (this.options.reloadCallback != null)
                this.options.reloadCallback(this);

            if (this.options.visible != null) {
                var self = this;
                var di = Math.ceil(this.clipping() / this.options.visible), wh = 0, lt = 0;
                $('li', this.list).each(function(i) {
                    wh += self.dimension(this, di);
                    if (i + 1 < self.first)
                        lt = wh;
                });

                this.list.css(this.wh, wh + 'px');
                this.list.css(this.lt, -lt + 'px');
            }

            this.scroll(this.first, false);
        },

        /**
         * Locks the carousel.
         *
         * @name lock
         * @type undefined
         * @cat Plugins/jCarousel
         */
        lock: function() {
            this.locked = true;
            this.buttons();
        },

        /**
         * Unlocks the carousel.
         *
         * @name unlock
         * @type undefined
         * @cat Plugins/jCarousel
         */
        unlock: function() {
            this.locked = false;
            this.buttons();
        },

        /**
         * Sets the size of the carousel.
         *
         * @name size
         * @type undefined
         * @param Number s The size of the carousel.
         * @cat Plugins/jCarousel
         */
        size: function(s) {
            if (s != undefined) {
                this.options.size = s;
                if (!this.locked)
                    this.buttons();
            }

            return this.options.size;
        },

        /**
         * Checks whether a list element exists for the given index (or index range).
         *
         * @name get
         * @type bool
         * @param Number i The index of the (first) element.
         * @param Number i2 The index of the last element.
         * @cat Plugins/jCarousel
         */
        has: function(i, i2) {
            if (i2 == undefined || !i2)
                i2 = i;

            if (this.options.size !== null && i2 > this.options.size)
            	i2 = this.options.size;

            for (var j = i; j <= i2; j++) {
                var e = this.get(j);
                if (!e.length || e.hasClass('jcarousel-item-placeholder'))
                    return false;
            }

            return true;
        },

        /**
         * Returns a jQuery object with list element for the given index.
         *
         * @name get
         * @type jQuery
         * @param Number i The index of the element.
         * @cat Plugins/jCarousel
         */
        get: function(i) {
            return $('.jcarousel-item-' + i, this.list);
        },

        /**
         * Adds an element for the given index to the list.
         * If the element already exists, it updates the inner html.
         * Returns the created element as jQuery object.
         *
         * @name add
         * @type jQuery
         * @param Number i The index of the element.
         * @param String s The innerHTML of the element.
         * @cat Plugins/jCarousel
         */
        add: function(i, s) {
            var e = this.get(i), old = 0, add = 0;

            if (e.length == 0) {
                var c, e = this.create(i), j = $jc.intval(i);
                while (c = this.get(--j)) {
                    if (j <= 0 || c.length) {
                        j <= 0 ? this.list.prepend(e) : c.after(e);
                        break;
                    }
                }
            } else
                old = this.dimension(e);

            e.removeClass(this.className('jcarousel-item-placeholder'));
            typeof s == 'string' ? e.html(s) : e.empty().append(s);

            var di = this.options.visible != null ? Math.ceil(this.clipping() / this.options.visible) : null;
            var wh = this.dimension(e, di) - old;

            if (i > 0 && i < this.first)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - wh + 'px');

            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) + wh + 'px');

            return e;
        },

        /**
         * Removes an element for the given index from the list.
         *
         * @name remove
         * @type undefined
         * @param Number i The index of the element.
         * @cat Plugins/jCarousel
         */
        remove: function(i) {
            var e = this.get(i);

            // Check if item exists and is not currently visible
            if (!e.length || (i >= this.first && i <= this.last))
                return;

            var d = this.dimension(e);

            if (i < this.first)
                this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) + d + 'px');

            e.remove();

            this.list.css(this.wh, $jc.intval(this.list.css(this.wh)) - d + 'px');
        },

        /**
         * Moves the carousel forwards.
         *
         * @name next
         * @type undefined
         * @cat Plugins/jCarousel
         */
        next: function() {
            this.stopAuto();

            if (this.tail != null && !this.inTail)
                this.scrollTail(false);
            else
                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'last') && this.options.size != null && this.last == this.options.size) ? 1 : this.first + this.options.scroll);
        },

        /**
         * Moves the carousel backwards.
         *
         * @name prev
         * @type undefined
         * @cat Plugins/jCarousel
         */
        prev: function() {
            this.stopAuto();

            if (this.tail != null && this.inTail)
                this.scrollTail(true);
            else
                this.scroll(((this.options.wrap == 'both' || this.options.wrap == 'first') && this.options.size != null && this.first == 1) ? this.options.size : this.first - this.options.scroll);
        },

        /**
         * Scrolls the tail of the carousel.
         *
         * @name scrollTail
         * @type undefined
         * @param Bool b Whether scroll the tail back or forward.
         * @cat Plugins/jCarousel
         */
        scrollTail: function(b) {
            if (this.locked || this.animating || !this.tail)
                return;

            var pos  = $jc.intval(this.list.css(this.lt));

            !b ? pos -= this.tail : pos += this.tail;
            this.inTail = !b;

            // Save for callbacks
            this.prevFirst = this.first;
            this.prevLast  = this.last;

            this.animate(pos);
        },

        /**
         * Scrolls the carousel to a certain position.
         *
         * @name scroll
         * @type undefined
         * @param Number i The index of the element to scoll to.
         * @param Bool a Flag indicating whether to perform animation.
         * @cat Plugins/jCarousel
         */
        scroll: function(i, a) {
            if (this.locked || this.animating)
                return;

            this.animate(this.pos(i), a);
        },

        /**
         * Prepares the carousel and return the position for a certian index.
         *
         * @name pos
         * @type Number
         * @param Number i The index of the element to scoll to.
         * @cat Plugins/jCarousel
         */
        pos: function(i) {
            if (this.locked || this.animating)
                return;

            i = $jc.intval(i);
            if (this.options.wrap != 'circular')
                i = i < 1 ? 1 : (this.options.size && i > this.options.size ? this.options.size : i);

            var back = this.first > i;
            var pos  = $jc.intval(this.list.css(this.lt));

            // Create placeholders, new list width/height
            // and new list position
            var f = this.options.wrap != 'circular' && this.first <= 1 ? 1 : this.first;
            var c = back ? this.get(f) : this.get(this.last);
            var j = back ? f : f - 1;
            var e = null, l = 0, p = false, d = 0;

            while (back ? --j >= i : ++j < i) {
                e = this.get(j);
                p = !e.length;
                if (e.length == 0) {
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    c[back ? 'before' : 'after' ](e);
                }

                c = e;
                d = this.dimension(e);

                if (p)
                    l += d;

                if (this.first != null && (this.options.wrap == 'circular' || (j >= 1 && (this.options.size == null || j <= this.options.size))))
                    pos = back ? pos + d : pos - d;
            }

            // Calculate visible items
            var clipping = this.clipping();
            var cache = [];
            var visible = 0, j = i, v = 0;
            var c = this.get(i - 1);

            while (++visible) {
                e = this.get(j);
                p = !e.length;
                if (e.length == 0) {
                    e = this.create(j).addClass(this.className('jcarousel-item-placeholder'));
                    // This should only happen on a next scroll
                    c.length == 0 ? this.list.prepend(e) : c[back ? 'before' : 'after' ](e);
                }

                c = e;
                var d = this.dimension(e);
                if (d == 0) {
                    //alert('jCarousel: No width/height set for items. This will cause an infinite loop. Aborting...');
                    return 0;
                }

                if (this.options.wrap != 'circular' && this.options.size !== null && j > this.options.size)
                    cache.push(e);
                else if (p)
                    l += d;

                v += d;

                if (v >= clipping)
                    break;

                j++;
            }

             // Remove out-of-range placeholders
            for (var x = 0; x < cache.length; x++)
                cache[x].remove();

            // Resize list
            if (l > 0) {
                this.list.css(this.wh, this.dimension(this.list) + l + 'px');

                if (back) {
                    pos -= l;
                    this.list.css(this.lt, $jc.intval(this.list.css(this.lt)) - l + 'px');
                }
            }

            // Calculate first and last item
            var last = i + visible - 1;
            if (this.options.wrap != 'circular' && this.options.size && last > this.options.size)
                last = this.options.size;

            if (j > last) {
                visible = 0, j = last, v = 0;
                while (++visible) {
                    var e = this.get(j--);
                    if (!e.length)
                        break;
                    v += this.dimension(e);
                    if (v >= clipping)
                        break;
                }
            }

            var first = last - visible + 1;
            if (this.options.wrap != 'circular' && first < 1)
                first = 1;

            if (this.inTail && back) {
                pos += this.tail;
                this.inTail = false;
            }

            this.tail = null;
            if (this.options.wrap != 'circular' && last == this.options.size && (last - visible + 1) >= 1) {
                var m = $jc.margin(this.get(last), !this.options.vertical ? 'marginRight' : 'marginBottom');
                if ((v - m) > clipping)
                    this.tail = v - clipping - m;
            }

            // Adjust position
            while (i-- > first)
                pos += this.dimension(this.get(i));

            // Save visible item range
            this.prevFirst = this.first;
            this.prevLast  = this.last;
            this.first     = first;
            this.last      = last;

            return pos;
        },

        /**
         * Animates the carousel to a certain position.
         *
         * @name animate
         * @type undefined
         * @param mixed p Position to scroll to.
         * @param Bool a Flag indicating whether to perform animation.
         * @cat Plugins/jCarousel
         */
        animate: function(p, a) {
            if (this.locked || this.animating)
                return;

            this.animating = true;

            var self = this;
            var scrolled = function() {
                self.animating = false;

                if (p == 0)
                    self.list.css(self.lt,  0);

                if (self.options.wrap == 'both' || self.options.wrap == 'last' || self.options.size == null || self.last < self.options.size)
                    self.startAuto();

                self.buttons();
                self.notify('onAfterAnimation');
            };

            this.notify('onBeforeAnimation');

            // Animate
            if (!this.options.animation || a == false) {
                this.list.css(this.lt, p + 'px');
                scrolled();
            } else {
                var o = !this.options.vertical ? {'left': p} : {'top': p};
                this.list.animate(o, this.options.animation, this.options.easing, scrolled);
            }
        },

        /**
         * Starts autoscrolling.
         *
         * @name auto
         * @type undefined
         * @param Number s Seconds to periodically autoscroll the content.
         * @cat Plugins/jCarousel
         */
        startAuto: function(s) {
            if (s != undefined)
                this.options.auto = s;

            if (this.options.auto == 0)
                return this.stopAuto();

            if (this.timer != null)
                return;

            var self = this;
            this.timer = setTimeout(function() { self.next(); }, this.options.auto * 1000);
        },

        /**
         * Stops autoscrolling.
         *
         * @name stopAuto
         * @type undefined
         * @cat Plugins/jCarousel
         */
        stopAuto: function() {
            if (this.timer == null)
                return;

            clearTimeout(this.timer);
            this.timer = null;
        },

        /**
         * Sets the states of the prev/next buttons.
         *
         * @name buttons
         * @type undefined
         * @cat Plugins/jCarousel
         */
        buttons: function(n, p) {
            if (n == undefined || n == null) {
                var n = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'first') || this.options.size == null || this.last < this.options.size);
                if (!this.locked && (!this.options.wrap || this.options.wrap == 'first') && this.options.size != null && this.last >= this.options.size)
                    n = this.tail != null && !this.inTail;
            }

            if (p == undefined || p == null) {
                var p = !this.locked && this.options.size !== 0 && ((this.options.wrap && this.options.wrap != 'last') || this.first > 1);
                if (!this.locked && (!this.options.wrap || this.options.wrap == 'last') && this.options.size != null && this.first == 1)
                    p = this.tail != null && this.inTail;
            }

            var self = this;

            this.buttonNext[n ? 'bind' : 'unbind'](this.options.buttonNextEvent, this.funcNext)[n ? 'removeClass' : 'addClass'](this.className('jcarousel-next-disabled')).attr('disabled', n ? false : true);
            this.buttonPrev[p ? 'bind' : 'unbind'](this.options.buttonPrevEvent, this.funcPrev)[p ? 'removeClass' : 'addClass'](this.className('jcarousel-prev-disabled')).attr('disabled', p ? false : true);

            if (this.buttonNext.length > 0 && (this.buttonNext[0].jcarouselstate == undefined || this.buttonNext[0].jcarouselstate != n) && this.options.buttonNextCallback != null) {
                this.buttonNext.each(function() { self.options.buttonNextCallback(self, this, n); });
                this.buttonNext[0].jcarouselstate = n;
            }

            if (this.buttonPrev.length > 0 && (this.buttonPrev[0].jcarouselstate == undefined || this.buttonPrev[0].jcarouselstate != p) && this.options.buttonPrevCallback != null) {
                this.buttonPrev.each(function() { self.options.buttonPrevCallback(self, this, p); });
                this.buttonPrev[0].jcarouselstate = p;
            }
        },

        notify: function(evt) {
            var state = this.prevFirst == null ? 'init' : (this.prevFirst < this.first ? 'next' : 'prev');

            // Load items
            this.callback('itemLoadCallback', evt, state);

            if (this.prevFirst !== this.first) {
                this.callback('itemFirstInCallback', evt, state, this.first);
                this.callback('itemFirstOutCallback', evt, state, this.prevFirst);
            }

            if (this.prevLast !== this.last) {
                this.callback('itemLastInCallback', evt, state, this.last);
                this.callback('itemLastOutCallback', evt, state, this.prevLast);
            }

            this.callback('itemVisibleInCallback', evt, state, this.first, this.last, this.prevFirst, this.prevLast);
            this.callback('itemVisibleOutCallback', evt, state, this.prevFirst, this.prevLast, this.first, this.last);
        },

        callback: function(cb, evt, state, i1, i2, i3, i4) {
            if (this.options[cb] == undefined || (typeof this.options[cb] != 'object' && evt != 'onAfterAnimation'))
                return;

            var callback = typeof this.options[cb] == 'object' ? this.options[cb][evt] : this.options[cb];

            if (!$.isFunction(callback))
                return;

            var self = this;

            if (i1 === undefined)
                callback(self, state, evt);
            else if (i2 === undefined)
                this.get(i1).each(function() { callback(self, this, i1, state, evt); });
            else {
                for (var i = i1; i <= i2; i++)
                    if (i !== null && !(i >= i3 && i <= i4))
                        this.get(i).each(function() { callback(self, this, i, state, evt); });
            }
        },

        create: function(i) {
            return this.format('<li></li>', i);
        },

        format: function(e, i) {
            var $e = $(e).addClass(this.className('jcarousel-item')).addClass(this.className('jcarousel-item-' + i));
            $e.attr('jcarouselindex', i);
            return $e;
        },

        className: function(c) {
            return c + ' ' + c + (!this.options.vertical ? '-horizontal' : '-vertical');
        },

        dimension: function(e, d) {
            var el = e.jquery != undefined ? e[0] : e;

            var old = !this.options.vertical ?
                el.offsetWidth + $jc.margin(el, 'marginLeft') + $jc.margin(el, 'marginRight') :
                (el.offsetHeight > 0 ? el.offsetHeight : ($('#'+el.id+ ' img').attr('height'))+5) + $jc.margin(el, 'marginTop') + $jc.margin(el, 'marginBottom');


            if (d == undefined || old == d)
                return old;

            var w = !this.options.vertical ?
                d - $jc.margin(el, 'marginLeft') - $jc.margin(el, 'marginRight') :
                d - $jc.margin(el, 'marginTop') - $jc.margin(el, 'marginBottom');

            $(el).css(this.wh, w + 'px');

            return this.dimension(el);
        },

        clipping: function() {
            return !this.options.vertical ?
                this.clip[0].offsetWidth - $jc.intval(this.clip.css('borderLeftWidth')) - $jc.intval(this.clip.css('borderRightWidth')) :
                this.clip[0].offsetHeight - $jc.intval(this.clip.css('borderTopWidth')) - $jc.intval(this.clip.css('borderBottomWidth'));
        },

        index: function(i, s) {
            if (s == undefined)
                s = this.options.size;

            return Math.round((((i-1) / s) - Math.floor((i-1) / s)) * s) + 1;
        }
    });

    $jc.extend({
        /**
         * Gets/Sets the global default configuration properties.
         *
         * @name defaults
         * @descr Gets/Sets the global default configuration properties.
         * @type Hash
         * @param Hash d A set of key/value pairs to set as configuration properties.
         * @cat Plugins/jCarousel
         */
        defaults: function(d) {
            return $.extend(defaults, d || {});
        },

        margin: function(e, p) {
            if (!e)
                return 0;

            var el = e.jquery != undefined ? e[0] : e;

            if (p == 'marginRight' && $.browser.safari) {
                var old = {'display': 'block', 'float': 'none', 'width': 'auto'}, oWidth, oWidth2;

                $.swap(el, old, function() { oWidth = el.offsetWidth; });

                old['marginRight'] = 0;
                $.swap(el, old, function() { oWidth2 = el.offsetWidth; });

                return oWidth2 - oWidth;
            }

            return $jc.intval($.css(el, p));
        },

        intval: function(v) {
            v = parseInt(v);
            return isNaN(v) ? 0 : v;
        }
    });

})(jQuery);
