(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);};});})();/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */

/**
 * Create a cookie with the given name and value and other optional parameters.
 *
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Set the value of a cookie.
 * @example $.cookie('the_cookie', 'the_value', { expires: 7, path: '/', domain: 'jquery.com', secure: true });
 * @desc Create a cookie with all available options.
 * @example $.cookie('the_cookie', 'the_value');
 * @desc Create a session cookie.
 * @example $.cookie('the_cookie', null);
 * @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
 *       used when the cookie was set.
 *
 * @param String name The name of the cookie.
 * @param String value The value of the cookie.
 * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
 * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
 *                             If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
 *                             If set to null or omitted, the cookie will be a session cookie and will not be retained
 *                             when the the browser exits.
 * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
 * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
 * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
 *                        require a secure protocol (like HTTPS).
 * @type undefined
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */

/**
 * Get the value of a cookie with the given name.
 *
 * @example $.cookie('the_cookie');
 * @desc Get the value of a cookie.
 *
 * @param String name The name of the cookie.
 * @return The value of the cookie.
 * @type String
 *
 * @name $.cookie
 * @cat Plugins/Cookie
 * @author Klaus Hartl/klaus.hartl@stilbuero.de
 */
jQuery.cookie = function(name, value, options) {
    if (typeof value != 'undefined') { // name and value given, set cookie
        options = options || {};
        if (value === null) {
            value = '';
            options = $.extend({}, options); // clone object since it's unexpected behavior if the expired property were changed
            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(); // use expires attribute, max-age is not supported by IE
        }
        // NOTE Needed to parenthesize options.path and options.domain
        // in the following expressions, otherwise they evaluate to undefined
        // in the packed version for some reason...
        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 { // only name given, get cookie
        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]);
                // Does this cookie string begin with the name we want?
                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._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((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'); });
        }
        toggleBlankFilterGroups();
        $('.filter_catalog_navigation_link a').removeClass('filters_being_refreshed');
      }
    );
    blnRunningFiltersRefresh = false;
  }
  //addFilterToCookie(strRefreshBasedOn);
}
function getProductListingsQuery()
{
  arrFilters = $('#ajax_' + strFiltersType + '_wrapper').children();
  strQueryString = '?';
  for(i=0; i<arrFilters.length; i++)
  {
    if(arrFilters[i].name != undefined && !arrFilters[i].disabled)
    {
      strQueryString+= arrFilters[i].name + '=' + arrFilters[i].value + '&';
    }
  }
  return strQueryString;
}

var blnRunningFiltersRefresh = false;
var blnRunningRefresh = false;

function refreshProductListings(strRefreshBasedOn)
{
  if(!blnRunningRefresh)
  {
    blnRunningRefresh = true;
    strQueryString = getProductListingsQuery();
    //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').unbind('click');
  $('#page_view_options > a, .view_all, .view_all > a').bind('click', function()
  {
    strlinkText = $(this).text();
    strlinkText = strlinkText.replace(/.*\s([0-9]+|all).*/i,'$1');
    if (isNaN(strlinkText))
    {
      $('#ajax_filters_num_per_page').val('all');
      $('#ajax_filters_pages').val('1');
      showAjaxLoaderPopover();
      refreshProductListings('');
      return false;
    }
    else
    {
      $('#ajax_filters_num_per_page').val(strlinkText);
      showAjaxLoaderPopover();
      refreshProductListings('');
      return false;
    }
  });
}

function toggleBlankFilterGroups()
{
  $('.filter_catalog_navigation').show();
  $('.force_hide').hide();
  $('.filter_catalog_navigation').each(function(i, objEl)
  {
    strElementID = objEl.id;
    if(!strElementID.match('_keyword'))
    {
      if($('#' + strElementID + ' > ul > li > div > ul > li.filter_catalog_navigation_link').length == $('#' + strElementID + ' > ul > li > div > ul > .filter_catalog_navigation_link_disabled').length)
      {
        $('#' + strElementID).hide();
      }
      else if($('#' + strElementID + ' > ul > li > div > ul > li.filter_catalog_navigation_link:visible').length == 1)
      {
        $('#' + strElementID).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 + '_', '');

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



//Generic Show/Hide function, shows or hides depending on element display status
//usage: showOrHide('element_id');
function showOrHide(elementid)
{
  if(document.getElementById(elementid))
  {
    element = document.getElementById(elementid);
    //alert(element.style.display);
    if(element.style.display == "none")
    {
      element.style.display = '';
    }
    else
    {
      element.style.display = 'none';
    }
  }
}


//
//  This function shows the different delivery address
//  fields on the register page via checkout
//
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(document.getElementById(element)) document.getElementById(element).style.display = '';
      //if(document.getElementById(element+'_header')) document.getElementById(element+'_header').style.display = '';
      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(element)) document.getElementById(element).style.display = 'none';
      //if(document.getElementById(element+'_header')) document.getElementById(element+'_header').style.display = 'none';
      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');
    }
  }

}

//
//  This function shows the different messages
//  when changing quantity via basket
//
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;
    }
  }

  //Should never get here
  return true;
}

//This function shows message after checking stock level when updating quantity via basket
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;
  }
}

//
//  This function shows the different messages
//  when remove items via basket
//
function removeItem(iKey)
{
  if (confirm("Are you sure you want to remove this item from your basket?\n\nClick \"OK\" for Yes or \"Cancel\" for No"))
  {
    return true;
  }
  else
  {
    return false;
  }
}

function popupWindow(url,width,height)
{
  LeftPosition = (screen.width) ? (screen.width-500)/2 : 0;
  TopPosition = (screen.height) ? (screen.height-500)/2 : 0;

  settings = 'height='+height+',width='+width+',top='+TopPosition+',left='+LeftPosition+',toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=1';
  win = window.open(url,null,settings);

  return false;
}

//
// Toggle the display of prices in different currencies
//
function initCurrency(strCurrency)
{
  var strStoredCurrency = $.cookie('VSCurrency');

  hideCurrencyPrices();

  if(!strStoredCurrency)
  {
    toggleCurrency(strCurrency);
  }
  else
  {
    toggleCurrency(strStoredCurrency);
  }

}

function hideCurrencyPrices()
{
  var arrCurrencies = $('#currency_options').children();
  for(var i=0; i < arrCurrencies.length; ++i)
  {
    //
    $('#link_' + arrCurrencies[i].id).bind("click", function(){
      var strCurrency = this.id;
      strCurrency = strCurrency.replace(/link_currency_/, '');
      toggleCurrency(strCurrency);
      this.blur();
      return false;
    });
  }
}

function refreshCurrency()
{
  hideCurrencyPrices();
  toggleCurrency($.cookie('VSCurrency'));
}

function toggleCurrency(strCurrencyCode)
{
  if($("#price_swap") && $('#link_currency_' + strCurrencyCode).attr('name') == 'N')
  {
    $("#price_swap").css('visibility', 'hidden');
  }
  else
  {
    $("#price_swap").css('visibility', 'visible');
  }
  if(strCurrencyCode == $.cookie('VSCurrency'))
  {
    return;
  }
  var arrCurrencies = $('#currency_options').children();
  for(var i=0; i < arrCurrencies.length; ++i)
  {
    if(document.getElementById('link_' + arrCurrencies[i].id))
    {
      document.getElementById('link_' + arrCurrencies[i].id).className = '';
      var strCurrency = arrCurrencies[i].id;
      strCurrency = strCurrency.replace(/currency_/, '');
      $("." + strCurrency).hide();
      $("#img_currency_active_" + strCurrency).hide();
      $("#img_currency_inactive_" + strCurrency).show();
      //
      $("#extra_img_currency_active_" + strCurrency).hide();
      $("#extra_img_currency_inactive_" + strCurrency).show();
    }
  }
  document.getElementById('link_currency_' + strCurrencyCode).className = 'active';
  if($('#link_currency_' + strCurrencyCode).attr('name') == 'N')
  {
    if($("#price_swap"))
    {
      $("#price_swap").css('visibility', 'hidden');
    }
  }
  if($.cookie('VSCurrency') != strCurrencyCode)
  {
    $.cookie('VSCurrency', strCurrencyCode, {expires: +365, path: '/', domain: window.location.hostname});
  }
  $("." + strCurrencyCode).show();
  $("#img_currency_active_" + strCurrencyCode).show();
  $("#img_currency_inactive_" + strCurrencyCode).hide();
  //
  $("#extra_img_currency_active_" + strCurrencyCode).show();
  $("#extra_img_currency_inactive_" + strCurrencyCode).hide();
}

function initVat()
{
  if($('#vat_options'))
  {
    var arrVatOptions = $('#vat_options').children();
    for(var i=0; i < arrVatOptions.length; ++i)
    {
      $('#link_' + arrVatOptions[i].id).bind("click", function(){
        var strDisplayPrices = this.id;
        strDisplayPrices = strDisplayPrices.replace(/link_vat_options_/, '');
        refreshVat();
        this.blur();
        return false;
      });
    }
  }
  if($('#price_swap'))
  {
    $("#price_swap").bind("click", function(){
      toggleVat(false);
      this.blur();
      return false;
    });
  }
  toggleVat($.cookie('VSVatPrices'));
}
function refreshVat()
{
  var strDisplayPricesCookie = $.cookie('VSVatPrices');
  if(strDisplayPricesCookie == '')
  {
    return;
  }
  toggleVat($.cookie('VSVatPrices'));
}

function toggleVat(strDisplayPrices)
{
  if(strDisplayPrices == false)
  {
    if($.cookie('VSVatPrices') == 'inc')
    {
      strDisplayPrices = 'ex';
    }
    else
    {
      strDisplayPrices = 'inc';
    }
  }
  if(strDisplayPrices == 'ex')
  {
    $("#link_vat_options_ex").addClass('active');
    $("#link_vat_options_inc").removeClass('active');
    $(".ex").show();
    $(".inc").hide();
    if($("#vat_basket_row"))
    {
      $("#vat_basket_row").show();
    }
  }
  else
  {
    $("#link_vat_options_inc").addClass('active');
    $("#link_vat_options_ex").removeClass('active');
    $(".ex").hide();
    $(".inc").show();
    if($("#vat_basket_row"))
    {
      $("#vat_basket_row").hide();
    }
  }
  if($.cookie('VSVatPrices') != strDisplayPrices)
  {
    $.cookie('VSVatPrices', strDisplayPrices, {expires: +365, path: '/', domain: window.location.hostname});
  }
}
function initReviewStarRater()
{
  if($('#review_star_1').length)
  {
    var iPointer = 1;
    while($('#review_star_' + iPointer).length)
    {
      $('#review_star_' + iPointer).bind("click", function(){
        var strCurrentWidth = this.innerHTML;
        var strNewWidth= strCurrentWidth*20 + '%';
        $('#review_star_user_rating').css('width', strNewWidth);
        $('#review_form_rating').focus();
        $('#review_form_rating').val(strCurrentWidth);
        $('#review_form_rating').blur();
        $('#review_form_subject').focus();
        $('#review_form_rating_errors').hide();
        var iMessagePointer = 1;
        while($('#rating_message_' + iMessagePointer).length)
        {
          $('#rating_message_' + iMessagePointer).hide();
          iMessagePointer++;
        }
        $('#rating_message_' + strCurrentWidth).show();
        return false;
      });
      iPointer++;
    }
  }
}
function updateLHSNavigationCookie(iCategoryGroupID)
{
  $.cookie('VSCategoryGroup', iCategoryGroupID, {expires: +364, path: '/', domain: window.location.hostname});
}
function updateLHSNavigationTabs(iCategoryGroupID)
{
  var iCounter = 1;
  while($('#category_group_' + iCounter + '_on').length > 0)
  {
   if($('#category_group_' + iCounter + '_on').length)
    {
      $('#category_group_' + iCounter + '_on').hide();
    }
    if($('#category_group_' + iCounter + '_off').length)
    {
      $('#category_group_' + iCounter + '_off').show();
    }
    iCounter++;
  }
  if($('#category_group_' + iCategoryGroupID + '_on').length)
  {
    $('#category_group_' + iCategoryGroupID + '_off').hide();
    $('#category_group_' + iCategoryGroupID + '_on').show();
  }
}
function updateLHSNavigationLinks(iCategoryGroupID)
{
  var iCounter = 1;
  while($('#category_group_' + iCounter + '_on').length > 0)
  {
    if($('#shop_categories_' + iCounter).length > 0)
    {
      $('#shop_categories_' + iCounter).hide();
    }
    iCounter++;
  }
  $('#shop_categories_' + iCategoryGroupID).show();
}
function showLHSNavigation(iCategoryGroupID)
{
  updateLHSNavigationTabs(iCategoryGroupID);
  updateLHSNavigationLinks(iCategoryGroupID);
  updateLHSNavigationCookie(iCategoryGroupID);
}
function toggleLHSCategoryFilterNavigation()
{
  if($('#menu_left').length > 0)
  {
    showOrHide('menu_left');
  }
  else if($('#default_navigation').length > 0)
  {
    showOrHide('default_navigation');
  }
  showOrHide('filter_wrapper');
}
var arrPausePromoUnits = Array();
var arrCancelPromoUnits = Array();
var arrCurrentBanners = Array();
var iBannerIDOverride = null;
function pausePromoUnitFade(strPromoUnitName)
{
  //arrPausePromoUnits[strPromoUnitName] = 0;
  arrPausePromoUnits[parseInt(strPromoUnitName)] = 0;
}
function resumePromoUnitFade(strPromoUnitName, iInterval, iMouseoutInterval)
{
  //arrPausePromoUnits[strPromoUnitName] = 1;
  arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
  //window.setTimeout("runPromoUnitFade('" + strPromoUnitName + "', '" + arrCurrentBanners[strPromoUnitName] + "', '" + iInterval + "')", iMouseoutInterval);
  //runPromoUnitFade(strPromoUnitName, arrCurrentBanners[strPromoUnitName], iInterval);
}
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 + '");');
  }

  $('.' + strPromoUnitName + 'thumbs > a').bind('click', function()
  {
    clearInterval(promoUnitFadeTimer);
    arrCancelPromoUnits[parseInt(strPromoUnitName)] = 1;
    arrPausePromoUnits[parseInt(strPromoUnitName)] = 1;
    runPromoUnitFade(strPromoUnitName, parseInt(this.name)-1, -1);
    return false;
  });
}
function triggerRunPromoUnitFade(strPromoUnitName, iStartingBannerID, iInterval){
  if(arrCancelPromoUnits[parseInt(strPromoUnitName)] == 0)
  {
    promoUnitFadeTimer = window.setTimeout("runPromoUnitFade('" + strPromoUnitName + "', '" + iStartingBannerID + "', '" + iInterval + "');", iInterval);
  }
  else
  {
    arrCancelPromoUnits[parseInt(strPromoUnitName)] = 0;
  }
}
function runPromoUnitFade(strPromoUnitName, iStartingBannerID, iInterval)
{
  iNewBannerID = parseInt(iStartingBannerID) + parseInt(1);
  if (!$("#" + strPromoUnitName + iNewBannerID).length) {
    iNewBannerID = 0;
  }
  if (arrPausePromoUnits[parseInt(strPromoUnitName)] == 1) {
    arrCurrentBanners[strPromoUnitName] = iNewBannerID;
    $("#" + strPromoUnitName + iStartingBannerID).fadeOut(Math.ceil(iInterval / (iInterval / 1000)));
    $("." + strPromoUnitName + 'fade').fadeOut(Math.ceil(iInterval / (iInterval / 1000)));
    $("#" + strPromoUnitName + iNewBannerID).fadeIn(Math.ceil(iInterval / (iInterval / 1000)));
    if(iStartingBannerID<0)iStartingBannerID=0;
    if($('#thumb_' + strPromoUnitName + iStartingBannerID).length > 0)
    {
      $("." + strPromoUnitName + 'thumbs').removeClass('selected');
      $("#thumb_" + strPromoUnitName + iNewBannerID).addClass('selected');
    }
  }
  if(iInterval > 0) {
    triggerRunPromoUnitFade(strPromoUnitName, iNewBannerID, iInterval);
  }
}
var iLastPriceBreakPointer = 0;
function togglePriceBands(iPriceBreakQuantity, strElementID,blnM2)
{
  //alert(iPriceBreakQuantity + '//' + strElementID);
  while($('#' + strElementID + '_' + iPriceBreakQuantity).length == 0 && iPriceBreakQuantity > 0)
  {
    iPriceBreakQuantity--;
  }
  if(iPriceBreakQuantity > 0)
  {
    if (iPriceBreakQuantity != iLastPriceBreakPointer||blnM2==true)
    {
      //alert('togglePriceBands');
      $('.' + 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 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)) {
    $.post('/ajax/setCountryID/'+iCountryID, function(data)
    {
      /*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>');
        }
      }
  }
}

});
/*end of discount update function */
    });
    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;

        // remove any possible "Choose Country" option, which would have an empty value
        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');
        }

        // clear out all the current options
        if (document.getElementById('courier_id').options && document.getElementById('courier_id').options.length > 0) {
          document.getElementById('courier_id').options.length = 0;
        }

        // loop over the couriers for this country
        for (var i = 0; i < arrCourierIDs.length; i++) {
          // add as new option
          var newoption = document.createElement('option');
          newoption.text = arrCouriers[arrCourierIDs[i]];
          newoption.value = arrCourierIDs[i];
          document.getElementById('courier_id').add(newoption, newoption.selectedIndex);

          // on first instance of this loop, set the courier cookie to be the current courier
          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)
{
  //alert(iCountryID);
	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)
    {
      $.post('/ajax/setCourierID/'+iCourierId, function(strData)
      {
        $('#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
  {
    $.post('/ajax/setCourierID/'+iCourierId);
  }
}
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;
	//unset shipping date
	$.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);

          // Try and fix sorting?
          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();
            // Build the Option html up
            option = $("<option></option>").attr("value",key).text(arrDeliveryDates[key]);
            // Add it to a div and get the html from within the div and remove this div from the object
            // append it to a string to add to DOM at a later date.
            options += $('<div>').append(option.clone()).remove().html();
        	}
          $('#delivery_date').html(options);
          $('#delivery_date').attr('disabled', false);
        }
  } catch (err) {
        return false;
  }

}
/**
 *
 * @access public
 * @return void
 **/
function setDeliveryDate(iDeliveryDate){
  if (iDeliveryDate != 'null') {
   $.post('/ajax/setShippingDate/'+iDeliveryDate);
  }
}

function setRegistrationDetails(blnRepopulate)
{
  if ($('#delivery_address_no').attr('checked'))
  {
    // grey our fields out
    $('.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
  {
    /*if ($('#delivery_address_no').attr('checked') && blnRepopulate)
    {
      $('.delivery').addClass('field_disabled');
      $('#delivery_full_name').val($('#full_name').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) //function decode URL
{
// Replace + with ' '
// Replace %xx with equivalent character
// Put [ERROR] in output if %xx is invalid.
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++;
}
} // while

return plaintext;
};

    function initVS3Ajax()
    {
      blnHideAutoComplete = true;
      $('.ajax_product_search').bind('blur', function() { runQuickOrderProductSearch(this.value, this.id); });
      //$('.ajax_product_search').bind('focus', 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;
        });
      }

      // catch any basic personalisation
      if(blnSimplePersonalisation && $('#personalisation').length > 0)
      {
        strPresonalisationQueryString = '&personalisation='+$('#personalisation').val();
      }

      // catch non-simple personalisation (checkbox)
      if($('#personalise_checkbox:checked').length>0)
      {
        strPresonalisationQueryString += '&personalisations[]='+$('#personalise_checkbox:checked').val();
      }

      $.getJSON('/ajax/addtobasket/?product_id=' + $('#product_id').val() + '&quantity=' + $('#quantity').val() + strPresonalisationQueryString, function(strJSON)
      {
        updateMiniBasket(strJSON);
      });
      return false;
    }

    function updateMiniBasket(strJSON)
    {
      if(strJSON==null)
      {
        $.getJSON('/ajax/getbasket/true', function(strJSON)
        {
          updateMiniBasket(strJSON);
        });
      }
      else
      {
        $('#basket_items').hide();
        $('#mini_basket_num_items').text(strJSON.basket_num_items);
        $('#mini_basket_total').text('');
        $('#mini_basket_total').append(strJSON.product_total);
        $('#basket_items').fadeIn();
        $('#quick_buy_cancel').hide();

        if(strJSON.note != undefined && strJSON.note != '')
        {
          $('#add_note').remove();
          $('#added_to_basket').append('<span id="add_note"><strong>Please Note: ' + strJSON.note + '</strong></span>');
        }
        $('#added_to_basket').fadeIn();

        window.setTimeout("$('#added_to_basket').fadeOut()", 3500);
      }
    }

function initModalProductPopup()
{
  if($('#modal_product_popup').length > 0)
  {
  //alert('here we are');
    $('#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)
  {
  //alert('here we are');
    $('#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');
  }

  //$('.quick_buy_trigger').unbind('click');
  if($('#quick_buy').length > 0)
  {
    //alert("initQuickBuy");
    // Hack to fix IE Issues.
    //$('body').append($('#quick_buy').clone(true));
    //$('#parent_container #quick_buy').remove();


    //console.log('IE: '+$.browser.msie+' Version:'+$.browser.version);
    //console.log($.jqm);
    $('#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'));

  }
	/*
  * JM, not sure why this is here, but lightbox is init'd in the view for each attr swatch
  * so have commented it out
  $("div[ @id ^= 'attribute_swatches_' ]").each(function(i, n) {
		$("#"+$(n).attr("id")+" a").lightBox({
      fixedNavigation:true,
      imageLoading: '/images/lightbox-ico-loading.gif',
    	imageBtnClose: '/images/lightbox-btn-close.gif',
    	imageBtnPrev: '/images/lightbox-btn-prev.gif',
    	imageBtnNext: '/images/lightbox-btn-next.gif',
      imageBlank: '/images/lightbox-blank.gif'
    });
  });
  */
}
function runQuickBuy(strID)
{
  $('#quick_buy_content').hide();
  $('#quick_buy_ok').hide();
  //$('#quick_buy_content_products').text('');
  $('#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('');

      // Sort out personalisation options
      strPersHTML = '';

      if( strJSON.num_available_personalisations )
      {
        blnPersonalise = true;
      }
      else
      {
        blnPersonalise = false;
      }


      // Quick fix by AS to force the quick buy to display attribute selection.
      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_cancel').hide();
        $('#quick_buy_loading').hide();
        //location.reload();
      }
      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);
        /*$('#delivery_per_product_quickbuy input').css('z-index', 4000);*/
        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);
        //location.reload();
      }
      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="text" id="personalisation" name="personalisation" value="Enter Personalisations..." onfocus="document.getElementById(\'personalisation\').value=\'\'">';
        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 == '' )
        {
          //$.post('/ajax/addtobasket/', { product_id: strJSON.products[0].product_id });
          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_cancel').hide();
            $('#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: $(\'#quickbuy_options\').val() });  $(\'#quick_buy_content_products\').text(\'\'); $(\'#quick_buy_content_products\').append(\'<p>' + 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="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: $(\'#quickbuy_options\').val() });  $(\'#quick_buy_content_products\').text(\'\'); $(\'#quick_buy_content_products\').append(\'<p>' + 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)
{
  //alert(iSortOrder+'_'+iSelectionCount);
  //objSelects = document.getElementsByName('bundle_product');

  $('.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");
  }
}

// Fire off some startup commands */
addEvent(window, 'load', initMultiStarMultiReviewRater);
addEvent(window, 'load', initReviewMultiStarRater);
addEvent(window, 'load', initReviewStarRater);
addEvent(window, 'load', setupPopupLinks);
addEvent(window, 'load', setupConfirmationDialogs);
addEvent(window, 'load', setupVS3FormValidation);
addEvent(window, 'load', initVS3Ajax);



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

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 initMultiStarMultiReviewRater(){
  //#advanced_reviews
  $('#advanced_reviews .review_label .rating li>a').bind("click", function()
      {
        //parent().parent() is fine here as the html won't change.
        $(this).parent().parent().removeClass('nostar onestar twostar threestar fourstar fivestar');

          var strAnswerInput = $(this).parent().parent().attr('id').replace(/rating_star_(.+)_/,'review_answer_$1_');


        if(this.innerHTML != $('#'+strAnswerInput).val())
        {
        //Set the answer to this question

        $('#'+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;
        }
        }
        else
        {
         $(this).parent().parent().addClass('nostar');
         $('#'+strAnswerInput).val('');
        }
        return false;
      });


}

$(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.');
      }
    });
  });
})
