(function(){var _jQuery=window.jQuery,_$=window.$;var jQuery=window.jQuery=window.$=function(selector,context){return new jQuery.fn.init(selector,context);};var quickExpr=/^[^<]*(<(.|\s)+>)[^>]*$|^#(\w+)$/,isSimple=/^.[^:#\[\.]*$/,undefined;jQuery.fn=jQuery.prototype={init:function(selector,context){selector=selector||document;if(selector.nodeType){this[0]=selector;this.length=1;return this;}if(typeof selector=="string"){var match=quickExpr.exec(selector);if(match&&(match[1]||!context)){if(match[1])selector=jQuery.clean([match[1]],context);else{var elem=document.getElementById(match[3]);if(elem){if(elem.id!=match[3])return jQuery().find(selector);return jQuery(elem);}selector=[];}}else
return jQuery(context).find(selector);}else if(jQuery.isFunction(selector))return jQuery(document)[jQuery.fn.ready?"ready":"load"](selector);return this.setArray(jQuery.makeArray(selector));},jquery:"1.2.6",size:function(){return this.length;},length:0,get:function(num){return num==undefined?jQuery.makeArray(this):this[num];},pushStack:function(elems){var ret=jQuery(elems);ret.prevObject=this;return ret;},setArray:function(elems){this.length=0;Array.prototype.push.apply(this,elems);return this;},each:function(callback,args){return jQuery.each(this,callback,args);},index:function(elem){var ret=-1;return jQuery.inArray(elem&&elem.jquery?elem[0]:elem,this);},attr:function(name,value,type){var options=name;if(name.constructor==String)if(value===undefined)return this[0]&&jQuery[type||"attr"](this[0],name);else{options={};options[name]=value;}return this.each(function(i){for(name in options)jQuery.attr(type?this.style:this,name,jQuery.prop(this,options[name],type,i,name));});},css:function(key,value){if((key=='width'||key=='height')&&parseFloat(value)<0)value=undefined;return this.attr(key,value,"curCSS");},text:function(text){if(typeof text!="object"&&text!=null)return this.empty().append((this[0]&&this[0].ownerDocument||document).createTextNode(text));var ret="";jQuery.each(text||this,function(){jQuery.each(this.childNodes,function(){if(this.nodeType!=8)ret+=this.nodeType!=1?this.nodeValue:jQuery.fn.text([this]);});});return ret;},wrapAll:function(html){if(this[0])jQuery(html,this[0].ownerDocument).clone().insertBefore(this[0]).map(function(){var elem=this;while(elem.firstChild)elem=elem.firstChild;return elem;}).append(this);return this;},wrapInner:function(html){return this.each(function(){jQuery(this).contents().wrapAll(html);});},wrap:function(html){return this.each(function(){jQuery(this).wrapAll(html);});},append:function(){return this.domManip(arguments,true,false,function(elem){if(this.nodeType==1)this.appendChild(elem);});},prepend:function(){return this.domManip(arguments,true,true,function(elem){if(this.nodeType==1)this.insertBefore(elem,this.firstChild);});},before:function(){return this.domManip(arguments,false,false,function(elem){this.parentNode.insertBefore(elem,this);});},after:function(){return this.domManip(arguments,false,true,function(elem){this.parentNode.insertBefore(elem,this.nextSibling);});},end:function(){return this.prevObject||jQuery([]);},find:function(selector){var elems=jQuery.map(this,function(elem){return jQuery.find(selector,elem);});return this.pushStack(/[^+>] [^+>]/.test(selector)||selector.indexOf("..")>-1?jQuery.unique(elems):elems);},clone:function(events){var ret=this.map(function(){if(jQuery.browser.msie&&!jQuery.isXMLDoc(this)){var clone=this.cloneNode(true),container=document.createElement("div");container.appendChild(clone);return jQuery.clean([container.innerHTML])[0];}else
return this.cloneNode(true);});var clone=ret.find("*").andSelf().each(function(){if(this[expando]!=undefined)this[expando]=null;});if(events===true)this.find("*").andSelf().each(function(i){if(this.nodeType==3)return;var events=jQuery.data(this,"events");for(var type in events)for(var handler in events[type])jQuery.event.add(clone[i],type,events[type][handler],events[type][handler].data);});return ret;},filter:function(selector){return this.pushStack(jQuery.isFunction(selector)&&jQuery.grep(this,function(elem,i){return selector.call(elem,i);})||jQuery.multiFilter(selector,this));},not:function(selector){if(selector.constructor==String)if(isSimple.test(selector))return this.pushStack(jQuery.multiFilter(selector,this,true));else
selector=jQuery.multiFilter(selector,this);var isArrayLike=selector.length&&selector[selector.length-1]!==undefined&&!selector.nodeType;return this.filter(function(){return isArrayLike?jQuery.inArray(this,selector)<0:this!=selector;});},add:function(selector){return this.pushStack(jQuery.unique(jQuery.merge(this.get(),typeof selector=='string'?jQuery(selector):jQuery.makeArray(selector))));},is:function(selector){return!!selector&&jQuery.multiFilter(selector,this).length>0;},hasClass:function(selector){return this.is("."+selector);},val:function(value){if(value==undefined){if(this.length){var elem=this[0];if(jQuery.nodeName(elem,"select")){var index=elem.selectedIndex,values=[],options=elem.options,one=elem.type=="select-one";if(index<0)return null;for(var i=one?index:0,max=one?index+1:options.length;i<max;i++){var option=options[i];if(option.selected){value=jQuery.browser.msie&&!option.attributes.value.specified?option.text:option.value;if(one)return value;values.push(value);}}return values;}else
return(this[0].value||"").replace(/\r/g,"");}return undefined;}if(value.constructor==Number)value+='';return this.each(function(){if(this.nodeType!=1)return;if(value.constructor==Array&&/radio|checkbox/.test(this.type))this.checked=(jQuery.inArray(this.value,value)>=0||jQuery.inArray(this.name,value)>=0);else if(jQuery.nodeName(this,"select")){var values=jQuery.makeArray(value);jQuery("option",this).each(function(){this.selected=(jQuery.inArray(this.value,values)>=0||jQuery.inArray(this.text,values)>=0);});if(!values.length)this.selectedIndex=-1;}else
this.value=value;});},html:function(value){return value==undefined?(this[0]?this[0].innerHTML:null):this.empty().append(value);},replaceWith:function(value){return this.after(value).remove();},eq:function(i){return this.slice(i,i+1);},slice:function(){return this.pushStack(Array.prototype.slice.apply(this,arguments));},map:function(callback){return this.pushStack(jQuery.map(this,function(elem,i){return callback.call(elem,i,elem);}));},andSelf:function(){return this.add(this.prevObject);},data:function(key,value){var parts=key.split(".");parts[1]=parts[1]?"."+parts[1]:"";if(value===undefined){var data=this.triggerHandler("getData"+parts[1]+"!",[parts[0]]);if(data===undefined&&this.length)data=jQuery.data(this[0],key);return data===undefined&&parts[1]?this.data(parts[0]):data;}else
return this.trigger("setData"+parts[1]+"!",[parts[0],value]).each(function(){jQuery.data(this,key,value);});},removeData:function(key){return this.each(function(){jQuery.removeData(this,key);});},domManip:function(args,table,reverse,callback){var clone=this.length>1,elems;return this.each(function(){if(!elems){elems=jQuery.clean(args,this.ownerDocument);if(reverse)elems.reverse();}var obj=this;if(table&&jQuery.nodeName(this,"table")&&jQuery.nodeName(elems[0],"tr"))obj=this.getElementsByTagName("tbody")[0]||this.appendChild(this.ownerDocument.createElement("tbody"));var scripts=jQuery([]);jQuery.each(elems,function(){var elem=clone?jQuery(this).clone(true)[0]:this;if(jQuery.nodeName(elem,"script"))scripts=scripts.add(elem);else{if(elem.nodeType==1)scripts=scripts.add(jQuery("script",elem).remove());callback.call(obj,elem);}});scripts.each(evalScript);});}};jQuery.fn.init.prototype=jQuery.fn;function evalScript(i,elem){if(elem.src)jQuery.ajax({url:elem.src,async:false,dataType:"script"});else
jQuery.globalEval(elem.text||elem.textContent||elem.innerHTML||"");if(elem.parentNode)elem.parentNode.removeChild(elem);}function now(){return+new Date;}jQuery.extend=jQuery.fn.extend=function(){var target=arguments[0]||{},i=1,length=arguments.length,deep=false,options;if(target.constructor==Boolean){deep=target;target=arguments[1]||{};i=2;}if(typeof target!="object"&&typeof target!="function")target={};if(length==i){target=this;--i;}for(;i<length;i++)if((options=arguments[i])!=null)for(var name in options){var src=target[name],copy=options[name];if(target===copy)continue;if(deep&&copy&&typeof copy=="object"&&!copy.nodeType)target[name]=jQuery.extend(deep,src||(copy.length!=null?[]:{}),copy);else if(copy!==undefined)target[name]=copy;}return target;};var expando="jQuery"+now(),uuid=0,windowData={},exclude=/z-?index|font-?weight|opacity|zoom|line-?height/i,defaultView=document.defaultView||{};jQuery.extend({noConflict:function(deep){window.$=_$;if(deep)window.jQuery=_jQuery;return jQuery;},isFunction:function(fn){return!!fn&&typeof fn!="string"&&!fn.nodeName&&fn.constructor!=Array&&/^[\s[]?function/.test(fn+"");},isXMLDoc:function(elem){return elem.documentElement&&!elem.body||elem.tagName&&elem.ownerDocument&&!elem.ownerDocument.body;},globalEval:function(data){data=jQuery.trim(data);if(data){var head=document.getElementsByTagName("head")[0]||document.documentElement,script=document.createElement("script");script.type="text/javascript";if(jQuery.browser.msie)script.text=data;else
script.appendChild(document.createTextNode(data));head.insertBefore(script,head.firstChild);head.removeChild(script);}},nodeName:function(elem,name){return elem.nodeName&&elem.nodeName.toUpperCase()==name.toUpperCase();},cache:{},data:function(elem,name,data){elem=elem==window?windowData:elem;var id=elem[expando];if(!id)id=elem[expando]=++uuid;if(name&&!jQuery.cache[id])jQuery.cache[id]={};if(data!==undefined)jQuery.cache[id][name]=data;return name?jQuery.cache[id][name]:id;},removeData:function(elem,name){elem=elem==window?windowData:elem;var id=elem[expando];if(name){if(jQuery.cache[id]){delete jQuery.cache[id][name];name="";for(name in jQuery.cache[id])break;if(!name)jQuery.removeData(elem);}}else{try{delete elem[expando];}catch(e){if(elem.removeAttribute)elem.removeAttribute(expando);}delete jQuery.cache[id];}},each:function(object,callback,args){var name,i=0,length=object.length;if(args){if(length==undefined){for(name in object)if(callback.apply(object[name],args)===false)break;}else
for(;i<length;)if(callback.apply(object[i++],args)===false)break;}else{if(length==undefined){for(name in object)if(callback.call(object[name],name,object[name])===false)break;}else
for(var value=object[0];i<length&&callback.call(value,i,value)!==false;value=object[++i]){}}return object;},prop:function(elem,value,type,i,name){if(jQuery.isFunction(value))value=value.call(elem,i);return value&&value.constructor==Number&&type=="curCSS"&&!exclude.test(name)?value+"px":value;},className:{add:function(elem,classNames){jQuery.each((classNames||"").split(/\s+/),function(i,className){if(elem.nodeType==1&&!jQuery.className.has(elem.className,className))elem.className+=(elem.className?" ":"")+className;});},remove:function(elem,classNames){if(elem.nodeType==1)elem.className=classNames!=undefined?jQuery.grep(elem.className.split(/\s+/),function(className){return!jQuery.className.has(classNames,className);}).join(" "):"";},has:function(elem,className){return jQuery.inArray(className,(elem.className||elem).toString().split(/\s+/))>-1;}},swap:function(elem,options,callback){var old={};for(var name in options){old[name]=elem.style[name];elem.style[name]=options[name];}callback.call(elem);for(var name in options)elem.style[name]=old[name];},css:function(elem,name,force){if(name=="width"||name=="height"){var val,props={position:"absolute",visibility:"hidden",display:"block"},which=name=="width"?["Left","Right"]:["Top","Bottom"];function getWH(){val=name=="width"?elem.offsetWidth:elem.offsetHeight;var padding=0,border=0;jQuery.each(which,function(){padding+=parseFloat(jQuery.curCSS(elem,"padding"+this,true))||0;border+=parseFloat(jQuery.curCSS(elem,"border"+this+"Width",true))||0;});val-=Math.round(padding+border);}if(jQuery(elem).is(":visible"))getWH();else
jQuery.swap(elem,props,getWH);return Math.max(0,val);}return jQuery.curCSS(elem,name,force);},curCSS:function(elem,name,force){var ret,style=elem.style;function color(elem){if(!jQuery.browser.safari)return false;var ret=defaultView.getComputedStyle(elem,null);return!ret||ret.getPropertyValue("color")=="";}if(name=="opacity"&&jQuery.browser.msie){ret=jQuery.attr(style,"opacity");return ret==""?"1":ret;}if(jQuery.browser.opera&&name=="display"){var save=style.outline;style.outline="0 solid black";style.outline=save;}if(name.match(/float/i))name=styleFloat;if(!force&&style&&style[name])ret=style[name];else if(defaultView.getComputedStyle){if(name.match(/float/i))name="float";name=name.replace(/([A-Z])/g,"-$1").toLowerCase();var computedStyle=defaultView.getComputedStyle(elem,null);if(computedStyle&&!color(elem))ret=computedStyle.getPropertyValue(name);else{var swap=[],stack=[],a=elem,i=0;for(;a&&color(a);a=a.parentNode)stack.unshift(a);for(;i<stack.length;i++)if(color(stack[i])){swap[i]=stack[i].style.display;stack[i].style.display="block";}ret=name=="display"&&swap[stack.length-1]!=null?"none":(computedStyle&&computedStyle.getPropertyValue(name))||"";for(i=0;i<swap.length;i++)if(swap[i]!=null)stack[i].style.display=swap[i];}if(name=="opacity"&&ret=="")ret="1";}else if(elem.currentStyle){var camelCase=name.replace(/\-(\w)/g,function(all,letter){return letter.toUpperCase();});ret=elem.currentStyle[name]||elem.currentStyle[camelCase];if(!/^\d+(px)?$/i.test(ret)&&/^\d/.test(ret)){var left=style.left,rsLeft=elem.runtimeStyle.left;elem.runtimeStyle.left=elem.currentStyle.left;style.left=ret||0;ret=style.pixelLeft+"px";style.left=left;elem.runtimeStyle.left=rsLeft;}}return ret;},clean:function(elems,context){var ret=[];context=context||document;if(typeof context.createElement=='undefined')context=context.ownerDocument||context[0]&&context[0].ownerDocument||document;jQuery.each(elems,function(i,elem){if(!elem)return;if(elem.constructor==Number)elem+='';if(typeof elem=="string"){elem=elem.replace(/(<(\w+)[^>]*?)\/>/g,function(all,front,tag){return tag.match(/^(abbr|br|col|img|input|link|meta|param|hr|area|embed)$/i)?all:front+"></"+tag+">";});var tags=jQuery.trim(elem).toLowerCase(),div=context.createElement("div");var wrap=!tags.indexOf("<opt")&&[1,"<select multiple='multiple'>","</select>"]||!tags.indexOf("<leg")&&[1,"<fieldset>","</fieldset>"]||tags.match(/^<(thead|tbody|tfoot|colg|cap)/)&&[1,"<table>","</table>"]||!tags.indexOf("<tr")&&[2,"<table><tbody>","</tbody></table>"]||(!tags.indexOf("<td")||!tags.indexOf("<th"))&&[3,"<table><tbody><tr>","</tr></tbody></table>"]||!tags.indexOf("<col")&&[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"]||jQuery.browser.msie&&[1,"div<div>","</div>"]||[0,"",""];div.innerHTML=wrap[1]+elem+wrap[2];while(wrap[0]--)div=div.lastChild;if(jQuery.browser.msie){var tbody=!tags.indexOf("<table")&&tags.indexOf("<tbody")<0?div.firstChild&&div.firstChild.childNodes:wrap[1]=="<table>"&&tags.indexOf("<tbody")<0?div.childNodes:[];for(var j=tbody.length-1;j>=0;--j)if(jQuery.nodeName(tbody[j],"tbody")&&!tbody[j].childNodes.length)tbody[j].parentNode.removeChild(tbody[j]);if(/^\s/.test(elem))div.insertBefore(context.createTextNode(elem.match(/^\s*/)[0]),div.firstChild);}elem=jQuery.makeArray(div.childNodes);}if(elem.length===0&&(!jQuery.nodeName(elem,"form")&&!jQuery.nodeName(elem,"select")))return;if(elem[0]==undefined||jQuery.nodeName(elem,"form")||elem.options)ret.push(elem);else
ret=jQuery.merge(ret,elem);});return ret;},attr:function(elem,name,value){if(!elem||elem.nodeType==3||elem.nodeType==8)return undefined;var notxml=!jQuery.isXMLDoc(elem),set=value!==undefined,msie=jQuery.browser.msie;name=notxml&&jQuery.props[name]||name;if(elem.tagName){var special=/href|src|style/.test(name);if(name=="selected"&&jQuery.browser.safari)elem.parentNode.selectedIndex;if(name in elem&&notxml&&!special){if(set){if(name=="type"&&jQuery.nodeName(elem,"input")&&elem.parentNode)throw"type property can't be changed";elem[name]=value;}if(jQuery.nodeName(elem,"form")&&elem.getAttributeNode(name))return elem.getAttributeNode(name).nodeValue;return elem[name];}if(msie&&notxml&&name=="style")return jQuery.attr(elem.style,"cssText",value);if(set)elem.setAttribute(name,""+value);var attr=msie&&notxml&&special?elem.getAttribute(name,2):elem.getAttribute(name);return attr===null?undefined:attr;}if(msie&&name=="opacity"){if(set){elem.zoom=1;elem.filter=(elem.filter||"").replace(/alpha\([^)]*\)/,"")+(parseInt(value)+''=="NaN"?"":"alpha(opacity="+value*100+")");}return elem.filter&&elem.filter.indexOf("opacity=")>=0?(parseFloat(elem.filter.match(/opacity=([^)]*)/)[1])/100)+'':"";}name=name.replace(/-([a-z])/ig,function(all,letter){return letter.toUpperCase();});if(set)elem[name]=value;return elem[name];},trim:function(text){return(text||"").replace(/^\s+|\s+$/g,"");},makeArray:function(array){var ret=[];if(array!=null){var i=array.length;if(i==null||array.split||array.setInterval||array.call)ret[0]=array;else
while(i)ret[--i]=array[i];}return ret;},inArray:function(elem,array){for(var i=0,length=array.length;i<length;i++)if(array[i]===elem)return i;return-1;},merge:function(first,second){var i=0,elem,pos=first.length;if(jQuery.browser.msie){while(elem=second[i++])if(elem.nodeType!=8)first[pos++]=elem;}else
while(elem=second[i++])first[pos++]=elem;return first;},unique:function(array){var ret=[],done={};try{for(var i=0,length=array.length;i<length;i++){var id=jQuery.data(array[i]);if(!done[id]){done[id]=true;ret.push(array[i]);}}}catch(e){ret=array;}return ret;},grep:function(elems,callback,inv){var ret=[];for(var i=0,length=elems.length;i<length;i++)if(!inv!=!callback(elems[i],i))ret.push(elems[i]);return ret;},map:function(elems,callback){var ret=[];for(var i=0,length=elems.length;i<length;i++){var value=callback(elems[i],i);if(value!=null)ret[ret.length]=value;}return ret.concat.apply([],ret);}});var userAgent=navigator.userAgent.toLowerCase();jQuery.browser={version:(userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/)||[])[1],safari:/webkit/.test(userAgent),opera:/opera/.test(userAgent),msie:/msie/.test(userAgent)&&!/opera/.test(userAgent),mozilla:/mozilla/.test(userAgent)&&!/(compatible|webkit)/.test(userAgent)};var styleFloat=jQuery.browser.msie?"styleFloat":"cssFloat";jQuery.extend({boxModel:!jQuery.browser.msie||document.compatMode=="CSS1Compat",props:{"for":"htmlFor","class":"className","float":styleFloat,cssFloat:styleFloat,styleFloat:styleFloat,readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing"}});jQuery.each({parent:function(elem){return elem.parentNode;},parents:function(elem){return jQuery.dir(elem,"parentNode");},next:function(elem){return jQuery.nth(elem,2,"nextSibling");},prev:function(elem){return jQuery.nth(elem,2,"previousSibling");},nextAll:function(elem){return jQuery.dir(elem,"nextSibling");},prevAll:function(elem){return jQuery.dir(elem,"previousSibling");},siblings:function(elem){return jQuery.sibling(elem.parentNode.firstChild,elem);},children:function(elem){return jQuery.sibling(elem.firstChild);},contents:function(elem){return jQuery.nodeName(elem,"iframe")?elem.contentDocument||elem.contentWindow.document:jQuery.makeArray(elem.childNodes);}},function(name,fn){jQuery.fn[name]=function(selector){var ret=jQuery.map(this,fn);if(selector&&typeof selector=="string")ret=jQuery.multiFilter(selector,ret);return this.pushStack(jQuery.unique(ret));};});jQuery.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(name,original){jQuery.fn[name]=function(){var args=arguments;return this.each(function(){for(var i=0,length=args.length;i<length;i++)jQuery(args[i])[original](this);});};});jQuery.each({removeAttr:function(name){jQuery.attr(this,name,"");if(this.nodeType==1)this.removeAttribute(name);},addClass:function(classNames){jQuery.className.add(this,classNames);},removeClass:function(classNames){jQuery.className.remove(this,classNames);},toggleClass:function(classNames){jQuery.className[jQuery.className.has(this,classNames)?"remove":"add"](this,classNames);},remove:function(selector){if(!selector||jQuery.filter(selector,[this]).r.length){jQuery("*",this).add(this).each(function(){jQuery.event.remove(this);jQuery.removeData(this);});if(this.parentNode)this.parentNode.removeChild(this);}},empty:function(){jQuery(">*",this).remove();while(this.firstChild)this.removeChild(this.firstChild);}},function(name,fn){jQuery.fn[name]=function(){return this.each(fn,arguments);};});jQuery.each(["Height","Width"],function(i,name){var type=name.toLowerCase();jQuery.fn[type]=function(size){return this[0]==window?jQuery.browser.opera&&document.body["client"+name]||jQuery.browser.safari&&window["inner"+name]||document.compatMode=="CSS1Compat"&&document.documentElement["client"+name]||document.body["client"+name]:this[0]==document?Math.max(Math.max(document.body["scroll"+name],document.documentElement["scroll"+name]),Math.max(document.body["offset"+name],document.documentElement["offset"+name])):size==undefined?(this.length?jQuery.css(this[0],type):null):this.css(type,size.constructor==String?size:size+"px");};});function num(elem,prop){return elem[0]&&parseInt(jQuery.curCSS(elem[0],prop,true),10)||0;}var chars=jQuery.browser.safari&&parseInt(jQuery.browser.version)<417?"(?:[\\w*_-]|\\\\.)":"(?:[\\w\u0128-\uFFFF*_-]|\\\\.)",quickChild=new RegExp("^>\\s*("+chars+"+)"),quickID=new RegExp("^("+chars+"+)(#)("+chars+"+)"),quickClass=new RegExp("^([#.]?)("+chars+"*)");jQuery.extend({expr:{"":function(a,i,m){return m[2]=="*"||jQuery.nodeName(a,m[2]);},"#":function(a,i,m){return a.getAttribute("id")==m[2];},":":{lt:function(a,i,m){return i<m[3]-0;},gt:function(a,i,m){return i>m[3]-0;},nth:function(a,i,m){return m[3]-0==i;},eq:function(a,i,m){return m[3]-0==i;},first:function(a,i){return i==0;},last:function(a,i,m,r){return i==r.length-1;},even:function(a,i){return i%2==0;},odd:function(a,i){return i%2;},"first-child":function(a){return a.parentNode.getElementsByTagName("*")[0]==a;},"last-child":function(a){return jQuery.nth(a.parentNode.lastChild,1,"previousSibling")==a;},"only-child":function(a){return!jQuery.nth(a.parentNode.lastChild,2,"previousSibling");},parent:function(a){return a.firstChild;},empty:function(a){return!a.firstChild;},contains:function(a,i,m){return(a.textContent||a.innerText||jQuery(a).text()||"").indexOf(m[3])>=0;},visible:function(a){return"hidden"!=a.type&&jQuery.css(a,"display")!="none"&&jQuery.css(a,"visibility")!="hidden";},hidden:function(a){return"hidden"==a.type||jQuery.css(a,"display")=="none"||jQuery.css(a,"visibility")=="hidden";},enabled:function(a){return!a.disabled;},disabled:function(a){return a.disabled;},checked:function(a){return a.checked;},selected:function(a){return a.selected||jQuery.attr(a,"selected");},text:function(a){return"text"==a.type;},radio:function(a){return"radio"==a.type;},checkbox:function(a){return"checkbox"==a.type;},file:function(a){return"file"==a.type;},password:function(a){return"password"==a.type;},submit:function(a){return"submit"==a.type;},image:function(a){return"image"==a.type;},reset:function(a){return"reset"==a.type;},button:function(a){return"button"==a.type||jQuery.nodeName(a,"button");},input:function(a){return/input|select|textarea|button/i.test(a.nodeName);},has:function(a,i,m){return jQuery.find(m[3],a).length;},header:function(a){return/h\d/i.test(a.nodeName);},animated:function(a){return jQuery.grep(jQuery.timers,function(fn){return a==fn.elem;}).length;}}},parse:[/^(\[) *@?([\w-]+) *([!*$^~=]*) *('?"?)(.*?)\4 *\]/,/^(:)([\w-]+)\("?'?(.*?(\(.*?\))?[^(]*?)"?'?\)/,new RegExp("^([:.#]*)("+chars+"+)")],multiFilter:function(expr,elems,not){var old,cur=[];while(expr&&expr!=old){old=expr;var f=jQuery.filter(expr,elems,not);expr=f.t.replace(/^\s*,\s*/,"");cur=not?elems=f.r:jQuery.merge(cur,f.r);}return cur;},find:function(t,context){if(typeof t!="string")return[t];if(context&&context.nodeType!=1&&context.nodeType!=9)return[];context=context||document;var ret=[context],done=[],last,nodeName;while(t&&last!=t){var r=[];last=t;t=jQuery.trim(t);var foundToken=false,re=quickChild,m=re.exec(t);if(m){nodeName=m[1].toUpperCase();for(var i=0;ret[i];i++)for(var c=ret[i].firstChild;c;c=c.nextSibling)if(c.nodeType==1&&(nodeName=="*"||c.nodeName.toUpperCase()==nodeName))r.push(c);ret=r;t=t.replace(re,"");if(t.indexOf(" ")==0)continue;foundToken=true;}else{re=/^([>+~])\s*(\w*)/i;if((m=re.exec(t))!=null){r=[];var merge={};nodeName=m[2].toUpperCase();m=m[1];for(var j=0,rl=ret.length;j<rl;j++){var n=m=="~"||m=="+"?ret[j].nextSibling:ret[j].firstChild;for(;n;n=n.nextSibling)if(n.nodeType==1){var id=jQuery.data(n);if(m=="~"&&merge[id])break;if(!nodeName||n.nodeName.toUpperCase()==nodeName){if(m=="~")merge[id]=true;r.push(n);}if(m=="+")break;}}ret=r;t=jQuery.trim(t.replace(re,""));foundToken=true;}}if(t&&!foundToken){if(!t.indexOf(",")){if(context==ret[0])ret.shift();done=jQuery.merge(done,ret);r=ret=[context];t=" "+t.substr(1,t.length);}else{var re2=quickID;var m=re2.exec(t);if(m){m=[0,m[2],m[3],m[1]];}else{re2=quickClass;m=re2.exec(t);}m[2]=m[2].replace(/\\/g,"");var elem=ret[ret.length-1];if(m[1]=="#"&&elem&&elem.getElementById&&!jQuery.isXMLDoc(elem)){var oid=elem.getElementById(m[2]);if((jQuery.browser.msie||jQuery.browser.opera)&&oid&&typeof oid.id=="string"&&oid.id!=m[2])oid=jQuery('[@id="'+m[2]+'"]',elem)[0];ret=r=oid&&(!m[3]||jQuery.nodeName(oid,m[3]))?[oid]:[];}else{for(var i=0;ret[i];i++){var tag=m[1]=="#"&&m[3]?m[3]:m[1]!=""||m[0]==""?"*":m[2];if(tag=="*"&&ret[i].nodeName.toLowerCase()=="object")tag="param";r=jQuery.merge(r,ret[i].getElementsByTagName(tag));}if(m[1]==".")r=jQuery.classFilter(r,m[2]);if(m[1]=="#"){var tmp=[];for(var i=0;r[i];i++)if(r[i].getAttribute("id")==m[2]){tmp=[r[i]];break;}r=tmp;}ret=r;}t=t.replace(re2,"");}}if(t){var val=jQuery.filter(t,r);ret=r=val.r;t=jQuery.trim(val.t);}}if(t)ret=[];if(ret&&context==ret[0])ret.shift();done=jQuery.merge(done,ret);return done;},classFilter:function(r,m,not){m=" "+m+" ";var tmp=[];for(var i=0;r[i];i++){var pass=(" "+r[i].className+" ").indexOf(m)>=0;if(!not&&pass||not&&!pass)tmp.push(r[i]);}return tmp;},filter:function(t,r,not){var last;while(t&&t!=last){last=t;var p=jQuery.parse,m;for(var i=0;p[i];i++){m=p[i].exec(t);if(m){t=t.substring(m[0].length);m[2]=m[2].replace(/\\/g,"");break;}}if(!m)break;if(m[1]==":"&&m[2]=="not")r=isSimple.test(m[3])?jQuery.filter(m[3],r,true).r:jQuery(r).not(m[3]);else if(m[1]==".")r=jQuery.classFilter(r,m[2],not);else if(m[1]=="["){var tmp=[],type=m[3];for(var i=0,rl=r.length;i<rl;i++){var a=r[i],z=a[jQuery.props[m[2]]||m[2]];if(z==null||/href|src|selected/.test(m[2]))z=jQuery.attr(a,m[2])||'';if((type==""&&!!z||type=="="&&z==m[5]||type=="!="&&z!=m[5]||type=="^="&&z&&!z.indexOf(m[5])||type=="$="&&z.substr(z.length-m[5].length)==m[5]||(type=="*="||type=="~=")&&z.indexOf(m[5])>=0)^not)tmp.push(a);}r=tmp;}else if(m[1]==":"&&m[2]=="nth-child"){var merge={},tmp=[],test=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(m[3]=="even"&&"2n"||m[3]=="odd"&&"2n+1"||!/\D/.test(m[3])&&"0n+"+m[3]||m[3]),first=(test[1]+(test[2]||1))-0,last=test[3]-0;for(var i=0,rl=r.length;i<rl;i++){var node=r[i],parentNode=node.parentNode,id=jQuery.data(parentNode);if(!merge[id]){var c=1;for(var n=parentNode.firstChild;n;n=n.nextSibling)if(n.nodeType==1)n.nodeIndex=c++;merge[id]=true;}var add=false;if(first==0){if(node.nodeIndex==last)add=true;}else if((node.nodeIndex-last)%first==0&&(node.nodeIndex-last)/first>=0)add=true;if(add^not)tmp.push(node);}r=tmp;}else{var fn=jQuery.expr[m[1]];if(typeof fn=="object")fn=fn[m[2]];if(typeof fn=="string")fn=eval("false||function(a,i){return "+fn+";}");r=jQuery.grep(r,function(elem,i){return fn(elem,i,m,r);},not);}}return{r:r,t:t};},dir:function(elem,dir){var matched=[],cur=elem[dir];while(cur&&cur!=document){if(cur.nodeType==1)matched.push(cur);cur=cur[dir];}return matched;},nth:function(cur,result,dir,elem){result=result||1;var num=0;for(;cur;cur=cur[dir])if(cur.nodeType==1&&++num==result)break;return cur;},sibling:function(n,elem){var r=[];for(;n;n=n.nextSibling){if(n.nodeType==1&&n!=elem)r.push(n);}return r;}});jQuery.event={add:function(elem,types,handler,data){if(elem.nodeType==3||elem.nodeType==8)return;if(jQuery.browser.msie&&elem.setInterval)elem=window;if(!handler.guid)handler.guid=this.guid++;if(data!=undefined){var fn=handler;handler=this.proxy(fn,function(){return fn.apply(this,arguments);});handler.data=data;}var events=jQuery.data(elem,"events")||jQuery.data(elem,"events",{}),handle=jQuery.data(elem,"handle")||jQuery.data(elem,"handle",function(){if(typeof jQuery!="undefined"&&!jQuery.event.triggered)return jQuery.event.handle.apply(arguments.callee.elem,arguments);});handle.elem=elem;jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];handler.type=parts[1];var handlers=events[type];if(!handlers){handlers=events[type]={};if(!jQuery.event.special[type]||jQuery.event.special[type].setup.call(elem)===false){if(elem.addEventListener)elem.addEventListener(type,handle,false);else if(elem.attachEvent)elem.attachEvent("on"+type,handle);}}handlers[handler.guid]=handler;jQuery.event.global[type]=true;});elem=null;},guid:1,global:{},remove:function(elem,types,handler){if(elem.nodeType==3||elem.nodeType==8)return;var events=jQuery.data(elem,"events"),ret,index;if(events){if(types==undefined||(typeof types=="string"&&types.charAt(0)=="."))for(var type in events)this.remove(elem,type+(types||""));else{if(types.type){handler=types.handler;types=types.type;}jQuery.each(types.split(/\s+/),function(index,type){var parts=type.split(".");type=parts[0];if(events[type]){if(handler)delete events[type][handler.guid];else
for(handler in events[type])if(!parts[1]||events[type][handler].type==parts[1])delete events[type][handler];for(ret in events[type])break;if(!ret){if(!jQuery.event.special[type]||jQuery.event.special[type].teardown.call(elem)===false){if(elem.removeEventListener)elem.removeEventListener(type,jQuery.data(elem,"handle"),false);else if(elem.detachEvent)elem.detachEvent("on"+type,jQuery.data(elem,"handle"));}ret=null;delete events[type];}}});}for(ret in events)break;if(!ret){var handle=jQuery.data(elem,"handle");if(handle)handle.elem=null;jQuery.removeData(elem,"events");jQuery.removeData(elem,"handle");}}},trigger:function(type,data,elem,donative,extra){data=jQuery.makeArray(data);if(type.indexOf("!")>=0){type=type.slice(0,-1);var exclusive=true;}if(!elem){if(this.global[type])jQuery("*").add([window,document]).trigger(type,data);}else{if(elem.nodeType==3||elem.nodeType==8)return undefined;var val,ret,fn=jQuery.isFunction(elem[type]||null),event=!data[0]||!data[0].preventDefault;if(event){data.unshift({type:type,target:elem,preventDefault:function(){},stopPropagation:function(){},timeStamp:now()});data[0][expando]=true;}data[0].type=type;if(exclusive)data[0].exclusive=true;var handle=jQuery.data(elem,"handle");if(handle)val=handle.apply(elem,data);if((!fn||(jQuery.nodeName(elem,'a')&&type=="click"))&&elem["on"+type]&&elem["on"+type].apply(elem,data)===false)val=false;if(event)data.shift();if(extra&&jQuery.isFunction(extra)){ret=extra.apply(elem,val==null?data:data.concat(val));if(ret!==undefined)val=ret;}if(fn&&donative!==false&&val!==false&&!(jQuery.nodeName(elem,'a')&&type=="click")){this.triggered=true;try{elem[type]();}catch(e){}}this.triggered=false;}return val;},handle:function(event){var val,ret,namespace,all,handlers;event=arguments[0]=jQuery.event.fix(event||window.event);namespace=event.type.split(".");event.type=namespace[0];namespace=namespace[1];all=!namespace&&!event.exclusive;handlers=(jQuery.data(this,"events")||{})[event.type];for(var j in handlers){var handler=handlers[j];if(all||handler.type==namespace){event.handler=handler;event.data=handler.data;ret=handler.apply(this,arguments);if(val!==false)val=ret;if(ret===false){event.preventDefault();event.stopPropagation();}}}return val;},fix:function(event){if(event[expando]==true)return event;var originalEvent=event;event={originalEvent:originalEvent};var props="altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode metaKey newValue originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target timeStamp toElement type view wheelDelta which".split(" ");for(var i=props.length;i;i--)event[props[i]]=originalEvent[props[i]];event[expando]=true;event.preventDefault=function(){if(originalEvent.preventDefault)originalEvent.preventDefault();originalEvent.returnValue=false;};event.stopPropagation=function(){if(originalEvent.stopPropagation)originalEvent.stopPropagation();originalEvent.cancelBubble=true;};event.timeStamp=event.timeStamp||now();if(!event.target)event.target=event.srcElement||document;if(event.target.nodeType==3)event.target=event.target.parentNode;if(!event.relatedTarget&&event.fromElement)event.relatedTarget=event.fromElement==event.target?event.toElement:event.fromElement;if(event.pageX==null&&event.clientX!=null){var doc=document.documentElement,body=document.body;event.pageX=event.clientX+(doc&&doc.scrollLeft||body&&body.scrollLeft||0)-(doc.clientLeft||0);event.pageY=event.clientY+(doc&&doc.scrollTop||body&&body.scrollTop||0)-(doc.clientTop||0);}if(!event.which&&((event.charCode||event.charCode===0)?event.charCode:event.keyCode))event.which=event.charCode||event.keyCode;if(!event.metaKey&&event.ctrlKey)event.metaKey=event.ctrlKey;if(!event.which&&event.button)event.which=(event.button&1?1:(event.button&2?3:(event.button&4?2:0)));return event;},proxy:function(fn,proxy){proxy.guid=fn.guid=fn.guid||proxy.guid||this.guid++;return proxy;},special:{ready:{setup:function(){bindReady();return;},teardown:function(){return;}},mouseenter:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseover",jQuery.event.special.mouseenter.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseover",jQuery.event.special.mouseenter.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseenter";return jQuery.event.handle.apply(this,arguments);}},mouseleave:{setup:function(){if(jQuery.browser.msie)return false;jQuery(this).bind("mouseout",jQuery.event.special.mouseleave.handler);return true;},teardown:function(){if(jQuery.browser.msie)return false;jQuery(this).unbind("mouseout",jQuery.event.special.mouseleave.handler);return true;},handler:function(event){if(withinElement(event,this))return true;event.type="mouseleave";return jQuery.event.handle.apply(this,arguments);}}}};jQuery.fn.extend({bind:function(type,data,fn){return type=="unload"?this.one(type,data,fn):this.each(function(){jQuery.event.add(this,type,fn||data,fn&&data);});},one:function(type,data,fn){var one=jQuery.event.proxy(fn||data,function(event){jQuery(this).unbind(event,one);return(fn||data).apply(this,arguments);});return this.each(function(){jQuery.event.add(this,type,one,fn&&data);});},unbind:function(type,fn){return this.each(function(){jQuery.event.remove(this,type,fn);});},trigger:function(type,data,fn){return this.each(function(){jQuery.event.trigger(type,data,this,true,fn);});},triggerHandler:function(type,data,fn){return this[0]&&jQuery.event.trigger(type,data,this[0],false,fn);},toggle:function(fn){var args=arguments,i=1;while(i<args.length)jQuery.event.proxy(fn,args[i++]);return this.click(jQuery.event.proxy(fn,function(event){this.lastToggle=(this.lastToggle||0)%i;event.preventDefault();return args[this.lastToggle++].apply(this,arguments)||false;}));},hover:function(fnOver,fnOut){return this.bind('mouseenter',fnOver).bind('mouseleave',fnOut);},ready:function(fn){bindReady();if(jQuery.isReady)fn.call(document,jQuery);else
jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});jQuery.extend({isReady:false,readyList:[],ready:function(){if(!jQuery.isReady){jQuery.isReady=true;if(jQuery.readyList){jQuery.each(jQuery.readyList,function(){this.call(document);});jQuery.readyList=null;}jQuery(document).triggerHandler("ready");}}});var readyBound=false;function bindReady(){if(readyBound)return;readyBound=true;if(document.addEventListener&&!jQuery.browser.opera)document.addEventListener("DOMContentLoaded",jQuery.ready,false);if(jQuery.browser.msie&&window==top)(function(){if(jQuery.isReady)return;try{document.documentElement.doScroll("left");}catch(error){setTimeout(arguments.callee,0);return;}jQuery.ready();})();if(jQuery.browser.opera)document.addEventListener("DOMContentLoaded",function(){if(jQuery.isReady)return;for(var i=0;i<document.styleSheets.length;i++)if(document.styleSheets[i].disabled){setTimeout(arguments.callee,0);return;}jQuery.ready();},false);if(jQuery.browser.safari){var numStyles;(function(){if(jQuery.isReady)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}if(numStyles===undefined)numStyles=jQuery("style, link[rel=stylesheet]").length;if(document.styleSheets.length!=numStyles){setTimeout(arguments.callee,0);return;}jQuery.ready();})();}jQuery.event.add(window,"load",jQuery.ready);}jQuery.each(("blur,focus,load,resize,scroll,unload,click,dblclick,"+"mousedown,mouseup,mousemove,mouseover,mouseout,change,select,"+"submit,keydown,keypress,keyup,error").split(","),function(i,name){jQuery.fn[name]=function(fn){return fn?this.bind(name,fn):this.trigger(name);};});var withinElement=function(event,elem){var parent=event.relatedTarget;while(parent&&parent!=elem)try{parent=parent.parentNode;}catch(error){parent=elem;}return parent==elem;};jQuery(window).bind("unload",function(){jQuery("*").add(document).unbind();});jQuery.fn.extend({_load:jQuery.fn.load,load:function(url,params,callback){if(typeof url!='string')return this._load(url);var off=url.indexOf(" ");if(off>=0){var selector=url.slice(off,url.length);url=url.slice(0,off);}callback=callback||function(){};var type="GET";if(params)if(jQuery.isFunction(params)){callback=params;params=null;}else{params=jQuery.param(params);type="POST";}var self=this;jQuery.ajax({url:url,type:type,dataType:"html",data:params,complete:function(res,status){if(status=="success"||status=="notmodified")self.html(selector?jQuery("<div/>").append(res.responseText.replace(/<script(.|\s)*?\/script>/g,"")).find(selector):res.responseText);self.each(callback,[res.responseText,status,res]);}});return this;},serialize:function(){return jQuery.param(this.serializeArray());},serializeArray:function(){return this.map(function(){return jQuery.nodeName(this,"form")?jQuery.makeArray(this.elements):this;}).filter(function(){return this.name&&!this.disabled&&(this.checked||/select|textarea/i.test(this.nodeName)||/text|hidden|password/i.test(this.type));}).map(function(i,elem){var val=jQuery(this).val();return val==null?null:val.constructor==Array?jQuery.map(val,function(val,i){return{name:elem.name,value:val};}):{name:elem.name,value:val};}).get();}});jQuery.each("ajaxStart,ajaxStop,ajaxComplete,ajaxError,ajaxSuccess,ajaxSend".split(","),function(i,o){jQuery.fn[o]=function(f){return this.bind(o,f);};});var jsc=now();jQuery.extend({get:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data=null;}return jQuery.ajax({type:"GET",url:url,data:data,success:callback,dataType:type});},getScript:function(url,callback){return jQuery.get(url,null,callback,"script");},getJSON:function(url,data,callback){return jQuery.get(url,data,callback,"json");},post:function(url,data,callback,type){if(jQuery.isFunction(data)){callback=data;data={};}return jQuery.ajax({type:"POST",url:url,data:data,success:callback,dataType:type});},ajaxSetup:function(settings){jQuery.extend(jQuery.ajaxSettings,settings);},ajaxSettings:{url:location.href,global:true,type:"GET",timeout:0,contentType:"application/x-www-form-urlencoded",processData:true,async:true,data:null,username:null,password:null,accepts:{xml:"application/xml, text/xml",html:"text/html",script:"text/javascript, application/javascript",json:"application/json, text/javascript",text:"text/plain",_default:"*/*"}},lastModified:{},ajax:function(s){s=jQuery.extend(true,s,jQuery.extend(true,{},jQuery.ajaxSettings,s));var jsonp,jsre=/=\?(&|$)/g,status,data,type=s.type.toUpperCase();if(s.data&&s.processData&&typeof s.data!="string")s.data=jQuery.param(s.data);if(s.dataType=="jsonp"){if(type=="GET"){if(!s.url.match(jsre))s.url+=(s.url.match(/\?/)?"&":"?")+(s.jsonp||"callback")+"=?";}else if(!s.data||!s.data.match(jsre))s.data=(s.data?s.data+"&":"")+(s.jsonp||"callback")+"=?";s.dataType="json";}if(s.dataType=="json"&&(s.data&&s.data.match(jsre)||s.url.match(jsre))){jsonp="jsonp"+jsc++;if(s.data)s.data=(s.data+"").replace(jsre,"="+jsonp+"$1");s.url=s.url.replace(jsre,"="+jsonp+"$1");s.dataType="script";window[jsonp]=function(tmp){data=tmp;success();complete();window[jsonp]=undefined;try{delete window[jsonp];}catch(e){}if(head)head.removeChild(script);};}if(s.dataType=="script"&&s.cache==null)s.cache=false;if(s.cache===false&&type=="GET"){var ts=now();var ret=s.url.replace(/(\?|&)_=.*?(&|$)/,"$1_="+ts+"$2");s.url=ret+((ret==s.url)?(s.url.match(/\?/)?"&":"?")+"_="+ts:"");}if(s.data&&type=="GET"){s.url+=(s.url.match(/\?/)?"&":"?")+s.data;s.data=null;}if(s.global&&!jQuery.active++)jQuery.event.trigger("ajaxStart");var remote=/^(?:\w+:)?\/\/([^\/?#]+)/;if(s.dataType=="script"&&type=="GET"&&remote.test(s.url)&&remote.exec(s.url)[1]!=location.host){var head=document.getElementsByTagName("head")[0];var script=document.createElement("script");script.src=s.url;if(s.scriptCharset)script.charset=s.scriptCharset;if(!jsonp){var done=false;script.onload=script.onreadystatechange=function(){if(!done&&(!this.readyState||this.readyState=="loaded"||this.readyState=="complete")){done=true;success();complete();head.removeChild(script);}};}head.appendChild(script);return undefined;}var requestDone=false;var xhr=window.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):new XMLHttpRequest();if(s.username)xhr.open(type,s.url,s.async,s.username,s.password);else
xhr.open(type,s.url,s.async);try{if(s.data)xhr.setRequestHeader("Content-Type",s.contentType);if(s.ifModified)xhr.setRequestHeader("If-Modified-Since",jQuery.lastModified[s.url]||"Thu, 01 Jan 1970 00:00:00 GMT");xhr.setRequestHeader("X-Requested-With","XMLHttpRequest");xhr.setRequestHeader("Accept",s.dataType&&s.accepts[s.dataType]?s.accepts[s.dataType]+", */*":s.accepts._default);}catch(e){}if(s.beforeSend&&s.beforeSend(xhr,s)===false){s.global&&jQuery.active--;xhr.abort();return false;}if(s.global)jQuery.event.trigger("ajaxSend",[xhr,s]);var onreadystatechange=function(isTimeout){if(!requestDone&&xhr&&(xhr.readyState==4||isTimeout=="timeout")){requestDone=true;if(ival){clearInterval(ival);ival=null;}status=isTimeout=="timeout"&&"timeout"||!jQuery.httpSuccess(xhr)&&"error"||s.ifModified&&jQuery.httpNotModified(xhr,s.url)&&"notmodified"||"success";if(status=="success"){try{data=jQuery.httpData(xhr,s.dataType,s.dataFilter);}catch(e){status="parsererror";}}if(status=="success"){var modRes;try{modRes=xhr.getResponseHeader("Last-Modified");}catch(e){}if(s.ifModified&&modRes)jQuery.lastModified[s.url]=modRes;if(!jsonp)success();}else
jQuery.handleError(s,xhr,status);complete();if(s.async)xhr=null;}};if(s.async){var ival=setInterval(onreadystatechange,13);if(s.timeout>0)setTimeout(function(){if(xhr){xhr.abort();if(!requestDone)onreadystatechange("timeout");}},s.timeout);}try{xhr.send(s.data);}catch(e){jQuery.handleError(s,xhr,null,e);}if(!s.async)onreadystatechange();function success(){if(s.success)s.success(data,status);if(s.global)jQuery.event.trigger("ajaxSuccess",[xhr,s]);}function complete(){if(s.complete)s.complete(xhr,status);if(s.global)jQuery.event.trigger("ajaxComplete",[xhr,s]);if(s.global&&!--jQuery.active)jQuery.event.trigger("ajaxStop");}return xhr;},handleError:function(s,xhr,status,e){if(s.error)s.error(xhr,status,e);if(s.global)jQuery.event.trigger("ajaxError",[xhr,s,e]);},active:0,httpSuccess:function(xhr){try{return!xhr.status&&location.protocol=="file:"||(xhr.status>=200&&xhr.status<300)||xhr.status==304||xhr.status==1223||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpNotModified:function(xhr,url){try{var xhrRes=xhr.getResponseHeader("Last-Modified");return xhr.status==304||xhrRes==jQuery.lastModified[url]||jQuery.browser.safari&&xhr.status==undefined;}catch(e){}return false;},httpData:function(xhr,type,filter){var ct=xhr.getResponseHeader("content-type"),xml=type=="xml"||!type&&ct&&ct.indexOf("xml")>=0,data=xml?xhr.responseXML:xhr.responseText;if(xml&&data.documentElement.tagName=="parsererror")throw"parsererror";if(filter)data=filter(data,type);if(type=="script")jQuery.globalEval(data);if(type=="json")data=eval("("+data+")");return data;},param:function(a){var s=[];if(a.constructor==Array||a.jquery)jQuery.each(a,function(){s.push(encodeURIComponent(this.name)+"="+encodeURIComponent(this.value));});else
for(var j in a)if(a[j]&&a[j].constructor==Array)jQuery.each(a[j],function(){s.push(encodeURIComponent(j)+"="+encodeURIComponent(this));});else
s.push(encodeURIComponent(j)+"="+encodeURIComponent(jQuery.isFunction(a[j])?a[j]():a[j]));return s.join("&").replace(/%20/g,"+");}});jQuery.fn.extend({show:function(speed,callback){return speed?this.animate({height:"show",width:"show",opacity:"show"},speed,callback):this.filter(":hidden").each(function(){this.style.display=this.oldblock||"";if(jQuery.css(this,"display")=="none"){var elem=jQuery("<"+this.tagName+" />").appendTo("body");this.style.display=elem.css("display");if(this.style.display=="none")this.style.display="block";elem.remove();}}).end();},hide:function(speed,callback){return speed?this.animate({height:"hide",width:"hide",opacity:"hide"},speed,callback):this.filter(":visible").each(function(){this.oldblock=this.oldblock||jQuery.css(this,"display");this.style.display="none";}).end();},_toggle:jQuery.fn.toggle,toggle:function(fn,fn2){return jQuery.isFunction(fn)&&jQuery.isFunction(fn2)?this._toggle.apply(this,arguments):fn?this.animate({height:"toggle",width:"toggle",opacity:"toggle"},fn,fn2):this.each(function(){jQuery(this)[jQuery(this).is(":hidden")?"show":"hide"]();});},slideDown:function(speed,callback){return this.animate({height:"show"},speed,callback);},slideUp:function(speed,callback){return this.animate({height:"hide"},speed,callback);},slideToggle:function(speed,callback){return this.animate({height:"toggle"},speed,callback);},fadeIn:function(speed,callback){return this.animate({opacity:"show"},speed,callback);},fadeOut:function(speed,callback){return this.animate({opacity:"hide"},speed,callback);},fadeTo:function(speed,to,callback){return this.animate({opacity:to},speed,callback);},animate:function(prop,speed,easing,callback){var optall=jQuery.speed(speed,easing,callback);return this[optall.queue===false?"each":"queue"](function(){if(this.nodeType!=1)return false;var opt=jQuery.extend({},optall),p,hidden=jQuery(this).is(":hidden"),self=this;for(p in prop){if(prop[p]=="hide"&&hidden||prop[p]=="show"&&!hidden)return opt.complete.call(this);if(p=="height"||p=="width"){opt.display=jQuery.css(this,"display");opt.overflow=this.style.overflow;}}if(opt.overflow!=null)this.style.overflow="hidden";opt.curAnim=jQuery.extend({},prop);jQuery.each(prop,function(name,val){var e=new jQuery.fx(self,opt,name);if(/toggle|show|hide/.test(val))e[val=="toggle"?hidden?"show":"hide":val](prop);else{var parts=val.toString().match(/^([+-]=)?([\d+-.]+)(.*)$/),start=e.cur(true)||0;if(parts){var end=parseFloat(parts[2]),unit=parts[3]||"px";if(unit!="px"){self.style[name]=(end||1)+unit;start=((end||1)/e.cur(true))*start;self.style[name]=start+unit;}if(parts[1])end=((parts[1]=="-="?-1:1)*end)+start;e.custom(start,end,unit);}else
e.custom(start,val,"");}});return true;});},queue:function(type,fn){if(jQuery.isFunction(type)||(type&&type.constructor==Array)){fn=type;type="fx";}if(!type||(typeof type=="string"&&!fn))return queue(this[0],type);return this.each(function(){if(fn.constructor==Array)queue(this,type,fn);else{queue(this,type).push(fn);if(queue(this,type).length==1)fn.call(this);}});},stop:function(clearQueue,gotoEnd){var timers=jQuery.timers;if(clearQueue)this.queue([]);this.each(function(){for(var i=timers.length-1;i>=0;i--)if(timers[i].elem==this){if(gotoEnd)timers[i](true);timers.splice(i,1);}});if(!gotoEnd)this.dequeue();return this;}});var queue=function(elem,type,array){if(elem){type=type||"fx";var q=jQuery.data(elem,type+"queue");if(!q||array)q=jQuery.data(elem,type+"queue",jQuery.makeArray(array));}return q;};jQuery.fn.dequeue=function(type){type=type||"fx";return this.each(function(){var q=queue(this,type);q.shift();if(q.length)q[0].call(this);});};jQuery.extend({speed:function(speed,easing,fn){var opt=speed&&speed.constructor==Object?speed:{complete:fn||!fn&&easing||jQuery.isFunction(speed)&&speed,duration:speed,easing:fn&&easing||easing&&easing.constructor!=Function&&easing};opt.duration=(opt.duration&&opt.duration.constructor==Number?opt.duration:jQuery.fx.speeds[opt.duration])||jQuery.fx.speeds.def;opt.old=opt.complete;opt.complete=function(){if(opt.queue!==false)jQuery(this).dequeue();if(jQuery.isFunction(opt.old))opt.old.call(this);};return opt;},easing:{linear:function(p,n,firstNum,diff){return firstNum+diff*p;},swing:function(p,n,firstNum,diff){return((-Math.cos(p*Math.PI)/2)+0.5)*diff+firstNum;}},timers:[],timerId:null,fx:function(elem,options,prop){this.options=options;this.elem=elem;this.prop=prop;if(!options.orig)options.orig={};}});jQuery.fx.prototype={update:function(){if(this.options.step)this.options.step.call(this.elem,this.now,this);(jQuery.fx.step[this.prop]||jQuery.fx.step._default)(this);if(this.prop=="height"||this.prop=="width")this.elem.style.display="block";},cur:function(force){if(this.elem[this.prop]!=null&&this.elem.style[this.prop]==null)return this.elem[this.prop];var r=parseFloat(jQuery.css(this.elem,this.prop,force));return r&&r>-10000?r:parseFloat(jQuery.curCSS(this.elem,this.prop))||0;},custom:function(from,to,unit){this.startTime=now();this.start=from;this.end=to;this.unit=unit||this.unit||"px";this.now=this.start;this.pos=this.state=0;this.update();var self=this;function t(gotoEnd){return self.step(gotoEnd);}t.elem=this.elem;jQuery.timers.push(t);if(jQuery.timerId==null){jQuery.timerId=setInterval(function(){var timers=jQuery.timers;for(var i=0;i<timers.length;i++)if(!timers[i]())timers.splice(i--,1);if(!timers.length){clearInterval(jQuery.timerId);jQuery.timerId=null;}},13);}},show:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.show=true;this.custom(0,this.cur());if(this.prop=="width"||this.prop=="height")this.elem.style[this.prop]="1px";jQuery(this.elem).show();},hide:function(){this.options.orig[this.prop]=jQuery.attr(this.elem.style,this.prop);this.options.hide=true;this.custom(this.cur(),0);},step:function(gotoEnd){var t=now();if(gotoEnd||t>this.options.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();this.options.curAnim[this.prop]=true;var done=true;for(var i in this.options.curAnim)if(this.options.curAnim[i]!==true)done=false;if(done){if(this.options.display!=null){this.elem.style.overflow=this.options.overflow;this.elem.style.display=this.options.display;if(jQuery.css(this.elem,"display")=="none")this.elem.style.display="block";}if(this.options.hide)this.elem.style.display="none";if(this.options.hide||this.options.show)for(var p in this.options.curAnim)jQuery.attr(this.elem.style,p,this.options.orig[p]);}if(done)this.options.complete.call(this.elem);return false;}else{var n=t-this.startTime;this.state=n/this.options.duration;this.pos=jQuery.easing[this.options.easing||(jQuery.easing.swing?"swing":"linear")](this.state,n,0,1,this.options.duration);this.now=this.start+((this.end-this.start)*this.pos);this.update();}return true;}};jQuery.extend(jQuery.fx,{speeds:{slow:600,fast:200,def:400},step:{scrollLeft:function(fx){fx.elem.scrollLeft=fx.now;},scrollTop:function(fx){fx.elem.scrollTop=fx.now;},opacity:function(fx){jQuery.attr(fx.elem.style,"opacity",fx.now);},_default:function(fx){fx.elem.style[fx.prop]=fx.now+fx.unit;}}});jQuery.fn.offset=function(){var left=0,top=0,elem=this[0],results;if(elem)with(jQuery.browser){var parent=elem.parentNode,offsetChild=elem,offsetParent=elem.offsetParent,doc=elem.ownerDocument,safari2=safari&&parseInt(version)<522&&!/adobeair/i.test(userAgent),css=jQuery.curCSS,fixed=css(elem,"position")=="fixed";if(elem.getBoundingClientRect){var box=elem.getBoundingClientRect();add(box.left+Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),box.top+Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));add(-doc.documentElement.clientLeft,-doc.documentElement.clientTop);}else{add(elem.offsetLeft,elem.offsetTop);while(offsetParent){add(offsetParent.offsetLeft,offsetParent.offsetTop);if(mozilla&&!/^t(able|d|h)$/i.test(offsetParent.tagName)||safari&&!safari2)border(offsetParent);if(!fixed&&css(offsetParent,"position")=="fixed")fixed=true;offsetChild=/^body$/i.test(offsetParent.tagName)?offsetChild:offsetParent;offsetParent=offsetParent.offsetParent;}while(parent&&parent.tagName&&!/^body|html$/i.test(parent.tagName)){if(!/^inline|table.*$/i.test(css(parent,"display")))add(-parent.scrollLeft,-parent.scrollTop);if(mozilla&&css(parent,"overflow")!="visible")border(parent);parent=parent.parentNode;}if((safari2&&(fixed||css(offsetChild,"position")=="absolute"))||(mozilla&&css(offsetChild,"position")!="absolute"))add(-doc.body.offsetLeft,-doc.body.offsetTop);if(fixed)add(Math.max(doc.documentElement.scrollLeft,doc.body.scrollLeft),Math.max(doc.documentElement.scrollTop,doc.body.scrollTop));}results={top:top,left:left};}function border(elem){add(jQuery.curCSS(elem,"borderLeftWidth",true),jQuery.curCSS(elem,"borderTopWidth",true));}function add(l,t){left+=parseInt(l,10)||0;top+=parseInt(t,10)||0;}return results;};jQuery.fn.extend({position:function(){var left=0,top=0,results;if(this[0]){var offsetParent=this.offsetParent(),offset=this.offset(),parentOffset=/^body|html$/i.test(offsetParent[0].tagName)?{top:0,left:0}:offsetParent.offset();offset.top-=num(this,'marginTop');offset.left-=num(this,'marginLeft');parentOffset.top+=num(offsetParent,'borderTopWidth');parentOffset.left+=num(offsetParent,'borderLeftWidth');results={top:offset.top-parentOffset.top,left:offset.left-parentOffset.left};}return results;},offsetParent:function(){var offsetParent=this[0].offsetParent;while(offsetParent&&(!/^body|html$/i.test(offsetParent.tagName)&&jQuery.css(offsetParent,'position')=='static'))offsetParent=offsetParent.offsetParent;return jQuery(offsetParent);}});jQuery.each(['Left','Top'],function(i,name){var method='scroll'+name;jQuery.fn[method]=function(val){if(!this[0])return;return val!=undefined?this.each(function(){this==window||this==document?window.scrollTo(!i?val:jQuery(window).scrollLeft(),i?val:jQuery(window).scrollTop()):this[method]=val;}):this[0]==window||this[0]==document?self[i?'pageYOffset':'pageXOffset']||jQuery.boxModel&&document.documentElement[method]||document.body[method]:this[0][method];};});jQuery.each(["Height","Width"],function(i,name){var tl=i?"Left":"Top",br=i?"Right":"Bottom";jQuery.fn["inner"+name]=function(){return this[name.toLowerCase()]()+num(this,"padding"+tl)+num(this,"padding"+br);};jQuery.fn["outer"+name]=function(margin){return this["inner"+name]()+num(this,"border"+tl+"Width")+num(this,"border"+br+"Width")+(margin?num(this,"margin"+tl)+num(this,"margin"+br):0);};});})();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;}};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');
    }
    //refreshProductListings();
  }
  $.cookie('VSFilters', strPickedFilters);
}
function showAjaxLoaderPopover (){

  if($('#ajax_filters_loading').length == 0)
  {
    var strHTML = '<div id="ajax_filters_loading"></div>';
    $('#middle_column').append(strHTML);
    //$('body').append(strHTML);
  }
  else
  {
    $('#ajax_filters_loading').show();
    //$('#ajax_filters_loading').fadeIn(250);
  }
  //$('#middle_column').fadeOut(500);
}

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;
    //alert('hash changed, looking to update');
    // hash has changed, so do stuff:
    //initialTickFilters();
    showAjaxLoaderPopover();
    $('.manual_applied').remove();
    updateFromHash();
    refreshProductFilters('', getProductListingsQuery());
    refreshProductListings();
  }
}

function updateFromHash()
{
  var strURLCriteria = unescape(self.document.location.hash.substring(1));

  arrBits = strURLCriteria.split(':');
  blnRemoveDefaultCategories = false;
  //$('a.active_filter').removeClass('active_filter');

  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;
          //$('.applied_categories_id_url_picked').attr('disabled', 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; // set to null, to avoid putting in level 1 categories when we're at level 3 etc.
        }

        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()
{
  //repopulateFilters();
  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_/, '');

      //addFilterToCookie(strFilterName);
      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';
      }

      //alert(strPlainFilterName + ': '  + $('.applied_' + strPlainFilterName).length + '/' + $('.filter_catalog_navigation_' + strPlainFilterName + '_link').length);
      //filter_catalog_navigation_categories_id_link
      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>';
          //alert(strFilterName);
          $('#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 == '')
  {
    //refreshProductFilters('', getProductListingsQuery());
  }
  else
  {
    //showAjaxLoaderPopover();
    //updateFromHash();
    //refreshProductListings('');
  }
}
function refreshProductFiltersNew(strRefreshBasedOn, strQueryString)
{
  $.getJSON('/ajax/refreshFilters' + strQueryString ,
    function (strJSON)
    {
      $('#filters_navigation').html('');
      $('#filters_navigation').append(strJSON);
      //alert('Updated!');
    }
  );
}
var strRefreshBasedOn = ' ';
function refreshProductFilters(strRefreshBasedOn, strQueryString)
{
  //alert('/ajax/refreshFilters' + 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) || (!blnClickedLink && strRefreshBasedOn != '' && strRefreshBasedOn != 'categories_id')/* || $('.filter_title_categories_id:visible').length >= 1*/)
        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*/)
        {
          //alert('UPdating the manufacturer_ids...' + strJSON._criteria.manufacturer_id + ', ' + strRefreshBasedOn + ', ' + blnClickedLink);
          $('.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'); });
        }
        if(strJSON._filter_categories_from_top != undefined)
        {
          if(strJSON._show_children_of != undefined)
          {
            if($('li.filter_catalog_navigation_categories_id_child_of_' + strJSON._show_children_of).length > 0)
            {
              $('li.filter_catalog_navigation_categories_id_link').hide();
              $('li.filter_catalog_navigation_categories_id_child_of_' + strJSON._show_children_of).show();
            }
          }
        }
        toggleBlankFilterGroups();
        $('.filter_catalog_navigation_link a').removeClass('filters_being_refreshed');
      }
    );
    blnRunningFiltersRefresh = false;
  }
  //addFilterToCookie(strRefreshBasedOn);
}
function getProductListingsQuery()
{
  arrFilters = $('#ajax_' + strFiltersType + '_wrapper').children();
  strQueryString = '?';
  arrParentProductIds = [];

	blnPassFlagOnly = ($('#apply_num_products_to_new_products_filters').length > 0) ? true : false;
	blnCondenseIds = ($('#condense_parent_ids_in_ajax_call').length > 0) ? true : false;

  for(i=0; i<arrFilters.length; i++)
  {
    if(arrFilters[i].name != undefined && !arrFilters[i].disabled)
    {
      if (arrFilters[i].name != 'parent_product_id_sort[]' || !blnCondenseIds)
      {
      	strQueryString+= arrFilters[i].name + '=' + arrFilters[i].value + '&';
      }
      else
      {
      	arrParentProductIds[arrParentProductIds.length] = arrFilters[i].value;
      }
    }
  }
  if (blnPassFlagOnly)
  {
  	strQueryString += 'parent_product_id_flag=true';
  }
  else if (blnCondenseIds)
  {
  	strQueryString += 'parent_product_id_sort=' + arrParentProductIds.join(',');
  }

  return strQueryString;
}

var blnRunningFiltersRefresh = false;
var blnRunningRefresh = false;

function refreshProductListings(strRefreshBasedOn)
{
  if(!blnRunningRefresh)
  {
    blnRunningRefresh = true;
    strQueryString = getProductListingsQuery();
    //refreshProductFilters(strRefreshBasedOn, strQueryString);
    //alert('/ajax/refreshProductListings' + strQueryString);
    $.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, .view_all_btn').unbind('click');
  $('#page_view_options > a, .view_all, .view_all > a, .view_all_btn').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).hide(); // hide if only 1 option, as not much point in filtering with 1 choice
      }
    }
  });
}

function rebuildProductListings()
{
  //initQuickBuy();
  $('.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);
    //alert('scroll?!');

    $('#ajax_filters_pages').val(strText);
    //showAjaxLoaderPopover();
    //refreshProductListings('page');
    $.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 = '';
  }

  //alert($('.filter_catalog_navigation_link .filter_catalog_navigation_' + strRemoveGroupKey + '_link').length);

  //$('.filter_catalog_navigation_link .filter_catalog_navigation_' + strRemoveGroupKey + '_link').removeClass('active_filter');


  //if(strHash != self.document.location.hash)
  //{
  // Added redirect to blank search when removing tags. Otherwise the url causes reselection - AS
  strTemp = new String(self.document.location);
  if(strTemp.match(/-t[0-9]+$/))
  {
    document.location = '/search/all-products';
  }
  else
  {
    self.document.location.hash = strHash;
  }
 // }

  //showAjaxLoaderPopover();
  //refreshProductListings(strRemoveGroupKey);
}

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];
    }
  }

  //take out -x (sort order)
  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 + '_', '');

  if(typeof blnFilterFromTop != 'undefined' && blnFilterFromTop == true)
  {
    // flip back to show the categories with same parent as the one just removed
    strClassnames = $('#filter_catalog_navigation_link_categories_id_' + strActualID).attr('className');
    arrClassnames = strClassnames.split(' ');

    for(var j=0; j<arrClassnames.length; j++)
    {
      if(arrClassnames[j].substr(0,49) == 'filter_catalog_navigation_categories_id_child_of_')
      {
        $('li.filter_catalog_navigation_categories_id_child_of_' + strActualID).hide();
        $('li.filter_catalog_navigation_categories_id_child_of_' + arrClassnames[j].substr(49,arrClassnames[j].length)).show();

        $('input.applied_categories_id').remove();

        if( $('#applied_ajax_filters_parent_category_id_' + arrClassnames[j].substr(49,arrClassnames[j].length)).length == 0)
        {
          $('#ajax_filters_wrapper').append('<input type="hidden" name="categories_id[]" value="' + arrClassnames[j].substr(49,arrClassnames[j].length) + '" class="active_filter_criteria base_category_id  applied_categories_id applied_categories_id_url_picked" id="applied_ajax_filters_categories_id_' + arrClassnames[j].substr(49,arrClassnames[j].length) + '">');
        }
      }
    }
  }

  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
    {
      // default action on page load
      //rebuildCategoriesForHash(strHash);
      //alert('filtersHistoryCallback 3');
    }
  }
  else
  {
    //alert('fallback, ' + $('.manual_applied').length + ', ' + $('.url_applied').length);
    //alert('filtersHistoryCallback 4');
  }
}
function rebuildCategoriesForHash(strHash){
  blnRebuildCategoriesFromHash = false;

    if(!blnClickedLink)
    {
      blnRebuildCategoriesFromHash = true;
      $('.url_applied').each(function()
      {
        if($(this).hasClass('applied_parent_category_id'))
        {
          //if($('.base_category_id:enabled').length == 1)
          //{
            if(strHash == '')
            {
              $(this).removeClass('url_applied');
              $(this).addClass('base_category_id');
            }
          //}
        }
      });
    }


    $('.manual_applied').remove();
    $('.url_applied').remove();
    updateFromHash();

    //if(strHash == '')
    //{
      pullOutCurrentCategory();
    //}

    if(blnRebuildCategoriesFromHash && strHash)
    {
      //alert('blnRebuildCategoriesFromHash');
      // remove all categories from the Hash we've been passed
      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);
        }
      }

      // get the new Hash that we've generated in updateFromHash() call
      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);
        }
      }
    }
}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 AJAXRemoveItem(iKey) {
  if (confirm("Are you sure you want to remove this item from your basket?\n\nClick \"OK\" for Yes or \"Cancel\" for No")) {
    $.getJSON('/ajax/removefrombasket/' + iKey, function (data) {
      if (data == "OK") {
        updateMiniBasket();
      }
    });
  }
  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();
      if ($('#delivery_country_id').length > 0 && $('#courier_id').hasClass('update_on_currency_change')) {
        //change_country($('#delivery_country_id'));
        change_country(document.getElementById('delivery_country_id'));
      }
      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 arrPausedCrossfaders = [];
var arrPausePromoUnits = Array();
var arrCancelPromoUnits = Array();
var arrCurrentBanners = Array();
var iBannerIDOverride = null;

function pausePromoUnitFade(strPromoUnitName) {
  arrPausePromoUnits[parseInt(strPromoUnitName)] = 0;
  arrPausedCrossfaders[strPromoUnitName] = true;
}

function resumePromoUnitFade(strPromoUnitName, iInterval, iMouseoutInterval) {
  arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
  arrPausedCrossfaders[strPromoUnitName] = false;
}
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 + "')", 0);
  if (blnPauseOnHover == 'true') {
    $('.' + strPromoUnitName + 'fade').attr('onmouseover', 'pausePromoUnitFade("' + strPromoUnitName + '");');
    $('.' + strPromoUnitName + 'fade').attr('onmouseout', 'resumePromoUnitFade("' + strPromoUnitName + '", "' + iInterval * 1000 + '", "' + iMouseoutInterval + '");');
  }

  $('.promo_slider_pause').unbind();
  $('.promo_slider_pause').bind('click',function(){
    pausePromoUnitFade(strPromoUnitName);
  });

  $('.promo_slider_play').unbind();
  $('.promo_slider_play').bind('click',function(){
    resumePromoUnitFade(strPromoUnitName, iInterval*1000, iMouseoutInterval);
  });

  $('.' + strPromoUnitName + 'thumbs > a').bind('click', function () {
    var iName = this.name;
    var WrapObject = $(this).parent().parent().parent().parent().parent();
    if (WrapObject.hasClass('multi_promos')) {
      clearInterval(promoUnitFadeTimer);
      arrCancelPromoUnits[parseInt(strPromoUnitName)] = 1;
      arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
      $.each(WrapObject.children('div'), function () {
        $.each($(this).children('div'), function () {
          runPromoUnitFade($(this).attr('id') + '_', parseInt(iName) - 1, -1);
        });
      });
      return false;
    } else {
      clearInterval(promoUnitFadeTimer);
      arrCancelPromoUnits[parseInt(strPromoUnitName)] = 1;
      arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
      runPromoUnitFade(strPromoUnitName, parseInt(this.name) - 1, -1);
      return false;
    }
  });
  $('.promo_slider_prev').bind('click', function () {
    var strId = $(this).parent().attr('id');
    iNewBannerID = $('.' + strPromoUnitName + 'fade:visible').attr('id').replace(strId + '_', '');
    clearInterval(promoUnitFadeTimer);
    arrCancelPromoUnits[parseInt(strPromoUnitName)] = 1;
    arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
    runPromoUnitFade(strPromoUnitName, iNewBannerID, -1);
    arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
    arrCancelPromoUnits[parseInt(strPromoUnitName)] = 0;
    promoUnitFadeTimer = window.setTimeout("triggerRunPromoUnitFade('" + strPromoUnitName + "', '" + iNewBannerID + "', '" + iInterval * 1000 + "')", 0);
    return false;
  });
  $('.promo_slider_next').bind('click', function () {
    var strId = $(this).parent().attr('id');
    iNewBannerID = $('.' + strPromoUnitName + 'fade:visible').attr('id').replace(strId + '_', '');
    clearInterval(promoUnitFadeTimer);
    arrCancelPromoUnits[parseInt(strPromoUnitName)] = 1;
    arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
    runPromoUnitFade(strPromoUnitName, iNewBannerID, -1);
    arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
    arrCancelPromoUnits[parseInt(strPromoUnitName)] = 0;
    promoUnitFadeTimer = window.setTimeout("triggerRunPromoUnitFade('" + strPromoUnitName + "', '" + iNewBannerID + "', '" + iInterval * 1000 + "')", 0);
    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 (typeof promoUnitOnChange == 'function') {
    promoUnitOnChange(strPromoUnitName);
  }
  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, blnM2) {
  while ($('#' + strElementID + '_' + iPriceBreakQuantity).length == 0 && iPriceBreakQuantity > 0) {
    iPriceBreakQuantity--;
  }
  if (iPriceBreakQuantity > 0) {
    if (iPriceBreakQuantity != iLastPriceBreakPointer || blnM2 == true) {
      $('.' + 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++) {
          if (typeof (arrCouriers[arrCourierIDs[i]]) != 'undefined') {
            var newoption = document.createElement('option');
            newoption.text = arrCouriers[arrCourierIDs[i]];
            newoption.value = arrCourierIDs[i];
            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>');
    }
    if (strJSON.strNewBasketHover != undefined && strJSON.strNewBasketHover != '') {
      $('#view_basket_hover').remove();
      $(strJSON.strNewBasketHover).insertAfter('#view_basket');
    }
    if (strJSON.strNewBasketHover != undefined && strJSON.strNewBasketHover != '' && strJSON.basket_num_items == 0) {
      $('#view_basket_hover').remove();
    }
    $('#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) {
      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) {
        strHTML += '<option value=' + product.product_id + '">' + product.attribute_summary;
        if (product.model != '') {
          strHTML += ' (' + product.model + ')';
        }
        strHTML += '</option>';
      });
      strHTML += '</select>';
      strHTML += '<input type="submit" id="quick_buy_add_to_basket_submit" value="Add to Basket" onclick="$.post(\'/ajax/addtobasket/\', { product_id: $(\'#quickbuy_options\').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() });  $(\'#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 + ')';
        }
      });
      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 {
        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 + '">';
        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 + '});  $(\'#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 + '});  $(\'#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.');
      }
    });
  });
});

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, '');
  }
}
