if(Object.isUndefined(Effect)){throw ("dragdrop.js requires including script.aculo.us' effects.js library")}if(typeof DeprecationNotifier!="undefined"){DeprecationNotifier.logDeprecation=false}var Droppables={drops:[],remove:function(a){this.drops=this.drops.reject(function(b){return b.element==$(a)})},add:function(b){b=$(b);var a=Object.extend({greedy:true,hoverclass:null,tree:false},arguments[1]||{});if(a.containment){a._containers=[];var c=a.containment;if(Object.isArray(c)){c.each(function(e){a._containers.push($(e))})}else{a._containers.push($(c))}}if(a.accept){a.accept=[a.accept].flatten()}Element.makePositioned(b);a.element=b;this.drops.push(a)},findDeepestChild:function(a){deepest=a[0];for(i=1;i<a.length;++i){if(Element.isParent(a[i].element,deepest.element)){deepest=a[i]}}return deepest},isContained:function(b,a){var c;if(a.tree){c=b.treeNode}else{c=b.parentNode}return a._containers.detect(function(e){return c==e})},isAffected:function(a,c,b){return((b.element!=c)&&((!b._containers)||this.isContained(c,b))&&((!b.accept)||(Element.classNames(c).detect(function(e){return b.accept.include(e)})))&&Position.within(b.element,a[0],a[1]))},deactivate:function(a){if(a.hoverclass){Element.removeClassName(a.element,a.hoverclass)}this.last_active=null},activate:function(a){if(a.hoverclass){Element.addClassName(a.element,a.hoverclass)}this.last_active=a},show:function(a,c){if(!this.drops.length){return}var b,e=[];this.drops.each(function(f){if(Droppables.isAffected(a,c,f)){e.push(f)}});if(e.length>0){b=Droppables.findDeepestChild(e)}if(this.last_active&&this.last_active!=b){this.deactivate(this.last_active)}if(b){Position.within(b.element,a[0],a[1]);if(b.onHover){b.onHover(c,b.element,Position.overlap(b.overlap,b.element))}if(b!=this.last_active){Droppables.activate(b)}}},fire:function(b,a){if(!this.last_active){return}Position.prepare();if(this.isAffected([Event.pointerX(b),Event.pointerY(b)],a,this.last_active)){if(this.last_active.onDrop){this.last_active.onDrop(a,this.last_active.element,b);return true}}},reset:function(){if(this.last_active){this.deactivate(this.last_active)}}};var Draggables={drags:[],observers:[],register:function(a){if(this.drags.length==0){this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.updateDrag.bindAsEventListener(this);this.eventKeypress=this.keyPress.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);Event.observe(document,"mousemove",this.eventMouseMove);Event.observe(document,"keypress",this.eventKeypress)}this.drags.push(a)},unregister:function(a){this.drags=this.drags.reject(function(b){return b==a});if(this.drags.length==0){Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);Event.stopObserving(document,"keypress",this.eventKeypress)}},activate:function(a){if(a.options.delay){this._timeout=setTimeout(function(){Draggables._timeout=null;window.focus();Draggables.activeDraggable=a}.bind(this),a.options.delay)}else{window.focus();this.activeDraggable=a}},deactivate:function(){this.activeDraggable=null},updateDrag:function(a){if(!this.activeDraggable){return}var b=[Event.pointerX(a),Event.pointerY(a)];if(this._lastPointer&&(this._lastPointer.inspect()==b.inspect())){return}this._lastPointer=b;this.activeDraggable.updateDrag(a,b)},endDrag:function(a){if(this._timeout){clearTimeout(this._timeout);this._timeout=null}if(!this.activeDraggable){return}this._lastPointer=null;this.activeDraggable.endDrag(a);this.activeDraggable=null},keyPress:function(a){if(this.activeDraggable){this.activeDraggable.keyPress(a)}},addObserver:function(a){this.observers.push(a);this._cacheObserverCallbacks()},removeObserver:function(a){this.observers=this.observers.reject(function(b){return b.element==a});this._cacheObserverCallbacks()},notify:function(b,a,c){if(this[b+"Count"]>0){this.observers.each(function(e){if(e[b]){e[b](b,a,c)}})}if(a.options[b]){a.options[b](a,c)}},_cacheObserverCallbacks:function(){["onStart","onEnd","onDrag"].each(function(a){Draggables[a+"Count"]=Draggables.observers.select(function(b){return b[a]}).length})}};var Draggable=Class.create({initialize:function(b){var c={handle:false,reverteffect:function(g,f,e){var h=Math.sqrt(Math.abs(f^2)+Math.abs(e^2))*0.02;new Effect.Move(g,{x:-e,y:-f,duration:h,queue:{scope:"_draggable",position:"end"}})},endeffect:function(f){var e=Object.isNumber(f._opacity)?f._opacity:1;new Effect.Opacity(f,{duration:0.2,from:0.7,to:e,queue:{scope:"_draggable",position:"end"},afterFinish:function(){Draggable._dragging[f]=false}})},zindex:1000,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!arguments[1]||Object.isUndefined(arguments[1].endeffect)){Object.extend(c,{starteffect:function(e){e._opacity=Element.getOpacity(e);Draggable._dragging[e]=true;new Effect.Opacity(e,{duration:0.2,from:e._opacity,to:0.7})}})}var a=Object.extend(c,arguments[1]||{});this.element=$(b);if(a.handle&&Object.isString(a.handle)){this.handle=this.element.down("."+a.handle,0)}if(!this.handle){this.handle=$(a.handle)}if(!this.handle){this.handle=this.element}if(a.scroll&&!a.scroll.scrollTo&&!a.scroll.outerHTML){a.scroll=$(a.scroll);this._isScrollChild=Element.childOf(this.element,a.scroll)}Element.makePositioned(this.element);this.options=a;this.dragging=false;this.eventMouseDown=this.initDrag.bindAsEventListener(this);Event.observe(this.handle,"mousedown",this.eventMouseDown);Draggables.register(this)},destroy:function(){Event.stopObserving(this.handle,"mousedown",this.eventMouseDown);Draggables.unregister(this)},currentDelta:function(){return([parseInt(Element.getStyle(this.element,"left")||"0"),parseInt(Element.getStyle(this.element,"top")||"0")])},initDrag:function(a){if(!Object.isUndefined(Draggable._dragging[this.element])&&Draggable._dragging[this.element]){return}if(Event.isLeftClick(a)){var c=Event.element(a);if((tag_name=c.tagName.toUpperCase())&&(tag_name=="INPUT"||tag_name=="SELECT"||tag_name=="OPTION"||tag_name=="BUTTON"||tag_name=="TEXTAREA")){return}var b=[Event.pointerX(a),Event.pointerY(a)];var e=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(f){return(b[f]-e[f])});Draggables.activate(this);Event.stop(a)}},startDrag:function(c){this.dragging=true;if(!this.delta){this.delta=this.currentDelta()}if(this.options.zindex){this.originalZ=parseInt(Element.getStyle(this.element,"z-index")||0);this.element.style.zIndex=this.options.zindex}if(this.options.ghosting){this._clone=this.element.cloneNode(true);if(this.options.dragclone){document.body.appendChild(this._clone);var b=this.element;this.element=this._clone;this._clone=b;b=null}else{this.element.parentNode.insertBefore(this._clone,this.element)}this._originallyAbsolute=(this.element.getStyle("position")=="absolute");if(!this._originallyAbsolute){Position.absolutize(this.element)}}if(this.options.scroll){if(this.options.scroll==window){var a=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=a.left;this.originalScrollTop=a.top}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop}}Draggables.notify("onStart",this,c);if(this.options.starteffect){this.options.starteffect(this.element)}},updateDrag:function(event,pointer){if(!this.dragging){this.startDrag(event)}if(!this.options.quiet){Position.prepare();Droppables.show(pointer,this.element)}Draggables.notify("onDrag",this,event);this.draw(pointer);if(this.options.change){this.options.change(this)}if(this.options.scroll){this.stopScrolling();var p;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){p=[left,top,left+width,top+height]}}else{p=Position.page(this.options.scroll);p[0]+=this.options.scroll.scrollLeft+Position.deltaX;p[1]+=this.options.scroll.scrollTop+Position.deltaY;p.push(p[0]+this.options.scroll.offsetWidth);p.push(p[1]+this.options.scroll.offsetHeight)}var speed=[0,0];if(pointer[0]<(p[0]+this.options.scrollSensitivity)){speed[0]=pointer[0]-(p[0]+this.options.scrollSensitivity)}if(pointer[1]<(p[1]+this.options.scrollSensitivity)){speed[1]=pointer[1]-(p[1]+this.options.scrollSensitivity)}if(pointer[0]>(p[2]-this.options.scrollSensitivity)){speed[0]=pointer[0]-(p[2]-this.options.scrollSensitivity)}if(pointer[1]>(p[3]-this.options.scrollSensitivity)){speed[1]=pointer[1]-(p[3]-this.options.scrollSensitivity)}this.startScrolling(speed)}if(Prototype.Browser.WebKit){window.scrollBy(0,0)}Event.stop(event)},finishDrag:function(c,g){this.dragging=false;if(this.options.quiet){Position.prepare();var f=[Event.pointerX(c),Event.pointerY(c)];Droppables.show(f,this.element)}if(this.options.ghosting){if(this.options.dragclone){var b=this.element;this.element=this._clone;this._clone=b;b=null}else{if(!this._originallyAbsolute){Position.relativize(this.element)}}delete this._originallyAbsolute;Element.remove(this._clone);this._clone=null}var h=false;if(g){h=Droppables.fire(c,this.element);if(!h){h=false}}if(h&&this.options.onDropped){this.options.onDropped(this.element)}Draggables.notify("onEnd",this,c);var a=this.options.revert;if(a&&Object.isFunction(a)){a=a(this.element)}var e=this.currentDelta();if(a&&this.options.reverteffect){if(h==0||a!="failure"){this.options.reverteffect(this.element,e[1]-this.delta[1],e[0]-this.delta[0])}}else{this.delta=e}if(this.options.zindex){this.element.style.zIndex=this.originalZ}if(this.options.endeffect){this.options.endeffect(this.element)}Draggables.deactivate(this);Droppables.reset()},keyPress:function(a){if(a.keyCode!=Event.KEY_ESC){return}this.finishDrag(a,false);Event.stop(a)},endDrag:function(a){if(!this.dragging){return}this.stopScrolling();this.finishDrag(a,true);Event.stop(a)},draw:function(a){var g=Position.cumulativeOffset(this.element);if(this.options.ghosting){var c=Position.realOffset(this.element);g[0]+=c[0]-Position.deltaX;g[1]+=c[1]-Position.deltaY}var f=this.currentDelta();g[0]-=f[0];g[1]-=f[1];if(this.options.scroll&&(this.options.scroll!=window)){g[0]=this.options.scroll.scrollLeft;g[1]=this.options.scroll.scrollTop}var e=[0,1].map(function(h){return(a[h]-g[h]-this.offset[h])}.bind(this));if(this.options.snap){if(Object.isFunction(this.options.snap)){e=this.options.snap(e[0],e[1],this)}else{if(Object.isArray(this.options.snap)){e=e.map(function(h,j){return(h/this.options.snap[j]).round()*this.options.snap[j]}.bind(this))}else{e=e.map(function(h){return(h/this.options.snap).round()*this.options.snap}.bind(this))}}}var b=this.element.style;if((!this.options.constraint)||(this.options.constraint=="horizontal")){b.left=e[0]+"px"}if((!this.options.constraint)||(this.options.constraint=="vertical")){b.top=e[1]+"px"}if(b.visibility=="hidden"){b.visibility=""}},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null}},startScrolling:function(a){if(!(a[0]||a[1])){return}this.scrollSpeed=[a[0]*this.options.scrollSpeed,a[1]*this.options.scrollSpeed];this.lastScrolled=new Date();this.scrollInterval=setInterval(this.scroll.bind(this),10)},scroll:function(){var current=new Date();var delta=current-this.lastScrolled;this.lastScrolled=current;if(this.options.scroll==window){with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){var d=delta/1000;this.options.scroll.scrollTo(left+d*this.scrollSpeed[0],top+d*this.scrollSpeed[1])}}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*delta/1000;this.options.scroll.scrollTop+=this.scrollSpeed[1]*delta/1000}Position.prepare();Droppables.show(Draggables._lastPointer,this.element);Draggables.notify("onDrag",this);if(this._isScrollChild){Draggables._lastScrollPointer=Draggables._lastScrollPointer||$A(Draggables._lastPointer);Draggables._lastScrollPointer[0]+=this.scrollSpeed[0]*delta/1000;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*delta/1000;if(Draggables._lastScrollPointer[0]<0){Draggables._lastScrollPointer[0]=0}if(Draggables._lastScrollPointer[1]<0){Draggables._lastScrollPointer[1]=0}this.draw(Draggables._lastScrollPointer)}if(this.options.change){this.options.change(this)}},_getWindowScroll:function(w){var T,L,W,H;with(w.document){if(w.document.documentElement&&documentElement.scrollTop){T=documentElement.scrollTop;L=documentElement.scrollLeft}else{if(w.document.body){T=body.scrollTop;L=body.scrollLeft}}if(w.innerWidth){W=w.innerWidth;H=w.innerHeight}else{if(w.document.documentElement&&documentElement.clientWidth){W=documentElement.clientWidth;H=documentElement.clientHeight}else{W=body.offsetWidth;H=body.offsetHeight}}}return{top:T,left:L,width:W,height:H}}});Draggable._dragging={};var SortableObserver=Class.create({initialize:function(b,a){this.element=$(b);this.observer=a;this.lastValue=Sortable.serialize(this.element)},onStart:function(){this.lastValue=Sortable.serialize(this.element)},onEnd:function(){Sortable.unmark();if(this.lastValue!=Sortable.serialize(this.element)){this.observer(this.element)}}});var Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(a){while(a.tagName.toUpperCase()!="BODY"){if(a.id&&Sortable.sortables[a.id]){return a}a=a.parentNode}},options:function(a){a=Sortable._findRootElement($(a));if(!a){return}return Sortable.sortables[a.id]},destroy:function(a){var b=Sortable.options(a);if(b){Draggables.removeObserver(b.element);b.droppables.each(function(c){Droppables.remove(c)});b.draggables.invoke("destroy");delete Sortable.sortables[b.element.id]}},create:function(c){c=$(c);var b=Object.extend({element:c,tag:"li",dropOnEmpty:false,tree:false,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:c,handle:false,only:false,delay:0,hoverclass:null,ghosting:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,format:this.SERIALIZE_RULE,elements:false,handles:false,onChange:Prototype.emptyFunction,onUpdate:Prototype.emptyFunction},arguments[1]||{});this.destroy(c);var a={revert:true,quiet:b.quiet,scroll:b.scroll,scrollSpeed:b.scrollSpeed,scrollSensitivity:b.scrollSensitivity,delay:b.delay,ghosting:b.ghosting,constraint:b.constraint,handle:b.handle};if(b.starteffect){a.starteffect=b.starteffect}if(b.reverteffect){a.reverteffect=b.reverteffect}else{if(b.ghosting){a.reverteffect=function(g){g.style.top=0;g.style.left=0}}}if(b.endeffect){a.endeffect=b.endeffect}if(b.zindex){a.zindex=b.zindex}var e={overlap:b.overlap,containment:b.containment,tree:b.tree,hoverclass:b.hoverclass,onHover:Sortable.onHover};var f={onHover:Sortable.onEmptyHover,overlap:b.overlap,containment:b.containment,hoverclass:b.hoverclass};Element.cleanWhitespace(c);b.draggables=[];b.droppables=[];if(b.dropOnEmpty||b.tree){Droppables.add(c,f);b.droppables.push(c)}(b.elements||this.findElements(c,b)||[]).each(function(j,g){var h=b.handles?$(b.handles[g]):(b.handle?$(j).select("."+b.handle)[0]:j);b.draggables.push(new Draggable(j,Object.extend(a,{handle:h})));Droppables.add(j,e);if(b.tree){j.treeNode=c}b.droppables.push(j)});if(b.tree){(Sortable.findTreeElements(c,b)||[]).each(function(g){Droppables.add(g,f);g.treeNode=c;b.droppables.push(g)})}this.sortables[c.id]=b;Draggables.addObserver(new SortableObserver(c,b.onUpdate))},findElements:function(b,a){return Element.findChildren(b,a.only,a.tree?true:false,a.tag)},findTreeElements:function(b,a){return Element.findChildren(b,a.only,a.tree?true:false,a.treeTag)},onHover:function(f,e,a){if(Element.isParent(e,f)){return}if(a>0.33&&a<0.66&&Sortable.options(e).tree){return}else{if(a>0.5){Sortable.mark(e,"before");if(e.previousSibling!=f){var b=f.parentNode;f.style.visibility="hidden";e.parentNode.insertBefore(f,e);if(e.parentNode!=b){Sortable.options(b).onChange(f)}Sortable.options(e.parentNode).onChange(f)}}else{Sortable.mark(e,"after");var c=e.nextSibling||null;if(c!=f){var b=f.parentNode;f.style.visibility="hidden";e.parentNode.insertBefore(f,c);if(e.parentNode!=b){Sortable.options(b).onChange(f)}Sortable.options(e.parentNode).onChange(f)}}}},onEmptyHover:function(f,h,j){var k=f.parentNode;var a=Sortable.options(h);if(!Element.isParent(h,f)){var g;var c=Sortable.findElements(h,{tag:a.tag,only:a.only});var b=null;if(c){var e=Element.offsetSize(h,a.overlap)*(1-j);for(g=0;g<c.length;g+=1){if(e-Element.offsetSize(c[g],a.overlap)>=0){e-=Element.offsetSize(c[g],a.overlap)}else{if(e-(Element.offsetSize(c[g],a.overlap)/2)>=0){b=g+1<c.length?c[g+1]:null;break}else{b=c[g];break}}}}h.insertBefore(f,b);Sortable.options(k).onChange(f);a.onChange(f)}},unmark:function(){if(Sortable._marker){Sortable._marker.hide()}},mark:function(b,a){var e=Sortable.options(b.parentNode);if(e&&!e.ghosting){return}if(!Sortable._marker){Sortable._marker=($("dropmarker")||Element.extend(document.createElement("DIV"))).hide().addClassName("dropmarker").setStyle({position:"absolute"});document.getElementsByTagName("body").item(0).appendChild(Sortable._marker)}var c=Position.cumulativeOffset(b);Sortable._marker.setStyle({left:c[0]+"px",top:c[1]+"px"});if(a=="after"){if(e.overlap=="horizontal"){Sortable._marker.setStyle({left:(c[0]+b.clientWidth)+"px"})}else{Sortable._marker.setStyle({top:(c[1]+b.clientHeight)+"px"})}}Sortable._marker.show()},_tree:function(f,b,g){var e=Sortable.findElements(f,b)||[];for(var c=0;c<e.length;++c){var a=e[c].id.match(b.format);if(!a){continue}var h={id:encodeURIComponent(a?a[1]:null),element:f,parent:g,children:[],position:g.children.length,container:$(e[c]).down(b.treeTag)};if(h.container){this._tree(h.container,b,h)}g.children.push(h)}return g},tree:function(e){e=$(e);var c=this.options(e);var b=Object.extend({tag:c.tag,treeTag:c.treeTag,only:c.only,name:e.id,format:c.format},arguments[1]||{});var a={id:null,parent:null,children:[],container:e,position:0};return Sortable._tree(e,b,a)},_constructIndex:function(b){var a="";do{if(b.id){a="["+b.position+"]"+a}}while((b=b.parent)!=null);return a},sequence:function(b){b=$(b);var a=Object.extend(this.options(b),arguments[1]||{});return $(this.findElements(b,a)||[]).map(function(c){return c.id.match(a.format)?c.id.match(a.format)[1]:""})},setSequence:function(b,c){b=$(b);var a=Object.extend(this.options(b),arguments[2]||{});var e={};this.findElements(b,a).each(function(f){if(f.id.match(a.format)){e[f.id.match(a.format)[1]]=[f,f.parentNode]}f.parentNode.removeChild(f)});c.each(function(f){var g=e[f];if(g){g[1].appendChild(g[0]);delete e[f]}})},serialize:function(c){c=$(c);var b=Object.extend(Sortable.options(c),arguments[1]||{});var a=encodeURIComponent((arguments[1]&&arguments[1].name)?arguments[1].name:c.id);if(b.tree){return Sortable.tree(c,arguments[1]).children.map(function(e){return[a+Sortable._constructIndex(e)+"[id]="+encodeURIComponent(e.id)].concat(e.children.map(arguments.callee))}).flatten().join("&")}else{return Sortable.sequence(c,arguments[1]).map(function(e){return a+"[]="+encodeURIComponent(e)}).join("&")}}};Element.isParent=function(b,a){if(!b.parentNode||b==a){return false}if(b.parentNode==a){return true}return Element.isParent(b.parentNode,a)};Element.findChildren=function(e,b,a,c){if(!e.hasChildNodes()){return null}c=c.toUpperCase();if(b){b=[b].flatten()}var f=[];$A(e.childNodes).each(function(h){if(h.tagName&&h.tagName.toUpperCase()==c&&(!b||(Element.classNames(h).detect(function(j){return b.include(j)})))){f.push(h)}if(a){var g=Element.findChildren(h,b,a,c);if(g){f.push(g)}}});return(f.length>0?f.flatten():[])};Element.offsetSize=function(a,b){return a["offset"+((b=="vertical"||b=="height")?"Height":"Width")]};myDeco.groups={init:function(){try{myDeco.groups.invites.init();myDeco.groups.inviteFriendsManually.init();myDeco.groups.inviteFriendsManually.AddingAsFriend.init();myDeco.groups.icons.init()}catch(a){console.log("main.js : myDeco.groups.init : "+a)}},questions:{init:function(){var a=$$(".posted");a._each(function(b){myDeco.groups.questions.activateHideShowLink(b)})},activateHideShowLink:function(a){var e=a.id.replace(/question/,"");var b=$("hide-answers-for-question"+e);if(b){var c=document.createElement("a");c.style.display="none";c.className="link";c.id="show-answers-for-question"+e;c.innerHTML="Show answers";b.parentNode.appendChild(c);Event.observe(b,"click",myDeco.groups.questions.hideReplies);Event.observe(c,"click",myDeco.groups.questions.hideReplies)}},hideReplies:function(g){var a=g.element;var h=a.id.replace(/hide-answers-for-question/,"");var h=h.replace(/show-answers-for-question/,"");var f=$("answers-for-question"+h);var b=$("hide-answers-for-question"+h);var c=$("show-answers-for-question"+h);f.style.display=f.style.display=="block"?"none":"block";b.style.display=b.style.display=="block"?"none":"block";c.style.display=b.style.display=="block"?"none":"block";if(g.preventDefault){g.preventDefault()}g.returnValue=false}},invites:{init:function(){console.log("main.js : groups.invites.init");var a=$("group-invite-friends");if(a){a.friendsList=$("current-friends");a.friendsList.select(".add");if(a.friendsList){a.internalInviteLinks=a.friendsList.select(".add a")}a.invitesList=$("invites-list");a.externalAddButton=$("add-external-friend");a.addInvite=function(c){var e=$(Builder.node("a",{href:"#"},[c.innerHTML]));e.observe("click",function(f){Event.stop(f);a.removeInvite(e)});var b=$(Builder.node("li",{className:"remove internal",id:c.parentNode.id.replace(/friend/,"invite")},[e]));a.invitesList.appendChild(b);c.parentNode.remove()};a.removeInvite=function(c){var e=$(Builder.node("a",{href:"#"},[c.innerHTML]));e.observe("click",function(f){Event.stop(f);a.addInvite(e)});var b=$(Builder.node("li",{className:"add",id:c.parentNode.id.replace(/invite/,"friend")},[e]));a.friendsList.appendChild(b);c.parentNode.remove()};if(a.internalInviteLinks){a.internalInviteLinks._each(function(b){b.observe("click",function(c){Event.stop(c);a.addInvite(b)})})}Event.observe(a.externalAddButton,"click",myDeco.groups.invites.addExternal);Event.observe("group-invite-friends","submit",myDeco.groups.invites.handleSubmit)}},addExternal:function(g){Event.stop(g);var f=Event.findElement(g,"form");var c=$("external-name").value;var b=$("external-email").value;var h=$(Builder.node("a",{href:"#",title:b},c));h.observe("click",function(j){Event.stop(j);h.parentNode.remove()});var a=$(Builder.node("li",{className:"remove external"},[h]));f.invitesList.appendChild(a);c.value=b.value=""},handleSubmit:function(f){Event.stop(f);var c=Event.element(f);var b=[];var a=[];c.select("#invites-list li.internal")._each(function(e){b.push(e.id.replace(/invite-/,""))});c.select("#invites-list li.external a")._each(function(e){a.push({name:e.innerHTML,email:e.title})});$("group-invite-friends-external").value=Object.toJSON(a);$("group-invite-friends-internal").value=Object.toJSON(b);if(!c.submitContainer){c.submitContainer=c.select(".submit-button")[0]}c.submitContainer.toggleClassName("disabled");c.submit()}},icons:{init:function(){console.log("main.js : myDeco.groups.icons.init");$$(".select-icon-li")._each(function(c){var a=c.getElementsByTagName("INPUT")[0].value;if(a){var b=c.getElementsByTagName("IMG")[0];var e=c.getElementsByTagName("IMG")[0].alt;var f=$("group_name").value;if(b&&f&&e){Event.observe(b,"click",function(g){myDeco.groups.icons.setIcon(g,a,f,e)})}}})},setIcon:function(f,a,g,c){Event.stop(f);var b=new Ajax.Request("/groups/"+g+"/edit-icon/",{method:"post",parameters:"image_id="+a,onSuccess:function(j){var h=$$(".group-avatar");var e=h[0].getElementsByTagName("IMG")[0];e.src=c},onFailure:function(){console.log("setting icon failed")}})}},invite:{init:function(){var a=$("add-more-fields");if(a){Event.observe(a,"click",myDeco.groups.invite.addMoreFields)}},createFieldset:function(){var a=Builder.node("fieldset",[Builder.node("div",{className:"field"},[Builder.node("label","Friend's name"),Builder.node("input",{type:"text"})]),Builder.node("div",{className:"field"},[Builder.node("label","Friend's email address"),Builder.node("input",{type:"text"})])])},addMoreFields:function(a){Event.stop(a);$("invite-friends").appendChild(myDeco.groups.invite.createFieldset())}},inviteFriendsManually:{init:function(){try{if($("addfriendbutton")){Event.observe("addfriendbutton","click",myDeco.groups.inviteFriendsManually.addFriend)}if($("import")){Event.observe("import","submit",myDeco.groups.inviteFriendsManually.addContactsToImport)}if($("send-your-invites")){Event.observe($("send-your-invites").down(".form-submit-button"),"click",myDeco.groups.inviteFriendsManually.handleSubmit)}}catch(a){console.log("main.js : myDeco.groups.inviteFriendsManually.init : "+a)}},addFriend:function(){var e=$("invite_name");var a=$("invite_email");var f=$("contacts-to-invite")||$("contacts-imported");var b=myDeco.formValidation.validate($("invite"));if(b.valid){var c=Builder.node("li",{className:"remove"},[Builder.node("a",{href:"#",title:a.value,className:""},[e.value])]);f.appendChild(c);Event.observe(f.lastChild,"click",function(g){Event.stop(g);Event.findElement(g,"li").remove();return false});e.value="";a.value=""}},addContactsToImport:function(b){Event.stop(b);var a=$("import");$("manual_contacts").value=myDeco.groups.inviteFriendsManually.collectContacts();a.submit()},handleSubmit:function(c){Event.stop(c);var a=$("send-your-invites");if(!($("contacts-to-invite")||$("contacts-imported")).empty()){$("invites").value=myDeco.groups.inviteFriendsManually.collectContacts();a.submit()}else{if($("invite-submit-div").hasClassName("error-appear")){return}$("invite-submit-div").addClassName("error-appear");var b=Builder.node("div",[Builder.node("div",{className:"error form-error-field"},"Please add at least one friend before you re-submit")]);Element.insert($("invite-submit-div").firstChild,{before:b.innerHTML})}},collectContacts:function(){var a=[];($("contacts-to-invite")||$("contacts-imported")).immediateDescendants()._each(function(b){a.push({email:b.descendants()[0].title,name:b.descendants()[0].innerHTML})});return a.toJSON()},AddingAsFriend:{init:function(){try{if($("friends-invite-completed")){$("friends-invite-completed").immediateDescendants()._each(function(b){if(b.hasClassName("exist")){Event.observe(b.down(".exist"),"click",myDeco.groups.inviteFriendsManually.AddingAsFriend.SendAddingRequest)}})}}catch(a){console.log("myDeco.groups.inviteFriendsManually.AddingAsFriend error : "+a)}},SendAddingRequest:function(b){Event.stop(b);var f=Event.element(b);var a=f.href.toQueryParams();var c={username:a.username};try{new Ajax.Request(myDeco.urls.addFriend,{method:"post",parameters:c,onCreate:function(){console.log("Sending addFriend request...")},onSuccess:function(g){var e=g.responseText.evalJSON();if(e.success){Event.stopObserving(f,"click",myDeco.groups.inviteFriendsManually.AddingAsFriend.SendAddingRequest);f.replace('<a href="/people/'+a.username+'" class="requested">Friends request pending...</a>')}else{console.log("addFriend error: "+e.error)}},onFailure:function(){console.log("addFriend failed")}})}catch(b){console.log("myDeco.inviteFriendsManually.AddingAsFriend.sendAddingReq error: "+b)}return false}}}};addLoadEvent(myDeco.groups.init);myDeco.actionLinks={init:function(){myDeco.actionLinks.notMyStyle.init();myDeco.actionLinks.myStyle.init()},notMyStyle:{init:function(){console.log("main.js : myDeco.actionLinks.notMyStyle.init");var a=$$("a.not-my-style");a._each(function(b){myDeco.actionLinks.notMyStyle.activateLink(b)})},activateLink:function(a){Event.observe(a,"click",myDeco.actionLinks.notMyStyle.send)},send:function(f){Event.stop(f);console.log("main.js : myDeco.actionLinks.notMyStyle.send");var b=f.element();var a=b.getAttribute("rel");var g=a.toQueryParams();var c=new Ajax.Request(myDeco.urls.setScore,{parameters:g,method:"post",onSuccess:function(){myDeco.actionLinks.notMyStyle.success(b)},onFailure:function(){myDeco.actionLinks.notMyStyle.failure(b)}})},success:function(a){var b=Builder.node("span","marked Not my style");a.replace(b.innerHTML)},failure:function(){alert("Sorry, there has been an error. Please try again later.")}},myStyle:{init:function(){console.log("main.js : myDeco.actionLinks.myStyle.init");var a=$$(".recommend");a._each(function(b){myDeco.actionLinks.myStyle.activateLink(b)})},activateLink:function(b){var a=b.getAttribute("rel");var e=myDeco.actionLinks.myStyle.urlToParams(a);var c=new Ajax.Request(myDeco.urls.canRate,{parameters:e,method:"post",onSuccess:function(f){myDeco.actionLinks.myStyle.canRate(f,b)}})},canRate:function(c,b){var a=c.responseText.evalJSON();if(a.can_rate){Event.observe(b,"click",myDeco.actionLinks.myStyle.send)}else{myDeco.actionLinks.myStyle.deactivateLink(b)}},urlToParams:function(b,f){var c=b.slice(b.indexOf("score"));var e=c.split("/");var a={content_type:e[1],object_id:e[2]};if(f){a.value=e[3]}return a},send:function(f){Event.stop(f);console.log("main.js : myDeco.actionLinks.myStyle.send");var b=f.element();var a=b.getAttribute("rel");var g=myDeco.actionLinks.myStyle.urlToParams(a,true);var c=new Ajax.Request(myDeco.urls.setScore,{parameters:g,method:"post",onSuccess:function(e){myDeco.actionLinks.myStyle.rateComplete(e,b)},onFailure:function(){myDeco.actionLinks.myStyle.failure()}})},rateComplete:function(c,b){var a=c.responseText.evalJSON();if(a.success){myDeco.actionLinks.myStyle.deactivateLink(b)}else{myDeco.actionLinks.myStyle.failure()}},deactivateLink:function(a){var b=Builder.node("span","Recommended");a.replace(b.innerHTML)},failure:function(){alert("Sorry, there has been an error. Please try again later.")}}};addLoadEvent(myDeco.actionLinks.init);myDeco.postOptions={init:function(){var a=$$(".external-link");a._each(function(e){var g=e.href;var f=g.split("?");var h=(f.length>1)?f[1].substr(4):"";var c=(f.length>2)?f[2]:"";redirectUrl=h+"?"+c;e.href=redirectUrl;var b=false;["del","redd","magnolia","digg"]._each(function(j){if(e.hasClassName(j)){b=true}});if(b){e.target="_blank"}})}};addLoadEvent(myDeco.postOptions.init);myDeco.panelSwitcher={period:5000,next:function(a){if(a.activeLink.next){a.activeLink.next()}},init:function(){var a=$$(".panel-switcher");a._each(function(b){var c=0.5;b.links=b.select(".panel-tab");b.links.each(function(g,f){if(f==0){b.activeLink=g;g.activeImage=g.firstDescendant();g.image=$(Builder.node("img",{src:g.activeImage.src.replace(/-on/,"-off"),style:"display:none"}));g.appendChild(g.image);b.activeLink=g}else{g.image=g.firstDescendant();g.activeImage=$(Builder.node("img",{src:g.image.src.replace(/-off/,"-on"),style:"display:none"}));g.appendChild(g.activeImage)}g.panel=$(g.id.replace(/tab-/,""));var e=g.panel.getElementsByTagName("A");g.panel.firstDescendant().observe("click",function(){location.href=e[0].href});g.activate=function(){if(b.activeLink!=g&&!b.effect){b.effect=true;new Effect.Parallel([new Effect.Fade(b.activeLink.activeImage,{duration:0.25,afterFinish:function(){new Effect.Appear(b.activeLink.image,{duration:0.25})}}),new Effect.Fade(g.image,{duration:0.25,afterFinish:function(){new Effect.Appear(g.activeImage,{duration:0.25})}}),new Effect.Fade(b.activeLink.panel),new Effect.Appear(g.panel)],{duration:c,afterFinish:function(){g.panel.style.zIndex="3";b.activeLink.style.zIndex="2";b.activeLink=g;b.effect=false}})}};g.observe("click",function(h){Event.stop(h);clearInterval(b.interval);b.interval=false;g.activate(h)});g.panel.observe("click",function(){clearInterval(b.interval);b.interval=false})});b.links.each(function(f,e){f.next=function(){if(e+1<b.links.length){b.links[e+1].activate()}}});b.interval=setInterval(function(){myDeco.panelSwitcher.next(b)},myDeco.panelSwitcher.period)})}};addLoadEvent(myDeco.panelSwitcher.init);myDeco.speechBubblesBuild={init:function(){$$(".speech-bubble .speech-bubble-item").each(function(c){var b=c.getElementsByClassName("description")[0];var a=new InfoPopupsClass(c,b,{timeout:200,dontOverlay:true})})}};addLoadEvent(myDeco.speechBubblesBuild.init);myDeco.pluralizer={pluralize:function(){var b=$("profile-alert-count");var a=$("alert-pluralizer");var e=a.innerHTML;if(b){var c=b.innerHTML;if(a){pluralised=(e.substring(e.length-1)=="s")?e:e+"s";notPluralised=pluralised.substring(0,pluralised.length-1);a.innerHTML=(c>1||c==0)?pluralised:notPluralised}}}};myDeco.removeQuestion={init:function(){var a=$$(".delete-question");a._each(function(b){b.observe("click",function(c){myDeco.removeQuestion.remove(c)})})},remove:function(f){Event.stop(f);var a=Event.element(f);var b=a.href.substring(a.href.indexOf("?")+1,a.href.length);var c=myDeco.urls.removeQuestion;new Ajax.Request(c,{method:"post",parameters:b,onSuccess:function(e){myDeco.removeQuestion.handleSuccess(e,f)},onFailure:function(){}})},handleSuccess:function(){window.location.reload()}};addLoadEvent(myDeco.removeQuestion.init);myDeco.resendConfirmationEmail={init:function(){var a=$("confirmation-email");if((a!=null)&&myDeco.confirm_email){a.show();var b=$("confirmation-email-button");b.observe("click",function(c){myDeco.resendConfirmationEmail.send(c)})}},send:function(b){Event.stop(b);var a=myDeco.urls.resendEmail;new Ajax.Request(a,{method:"post",parameters:"",onSuccess:function(c){myDeco.resendConfirmationEmail.handleSuccess(c,b)},onFailure:function(){}})},handleSuccess:function(f,c){var b=f.responseText.evalJSON();var a=$("confirmation-email-notice-area");if(b.success){a.innerHTML="An email has been sent to: "+b.email+"<br><br>Please check your inbox and click the link provided."}else{a.innerHTML="An error occured. Please reload the page and try again."}}};addLoadEvent(myDeco.resendConfirmationEmail.init);myDeco.slideShow={init:function(){var a=$("previous");var b=$("next");if(a&&b){b.observe("click",function(c){myDeco.slideShow.next(c,b)});a.observe("click",function(c){myDeco.slideShow.previous(c,a)});myDeco.slideShow.send(0)}},next:function(c,b){Event.stop(c);var a=myDeco.slideShow.imageNum;if(myDeco.slideShow.nextImage){if(!myDeco.slideShow.initialLoad){myDeco.slideShow.imageNum+=1}myDeco.slideShow.send(myDeco.slideShow.imageNum)}},previous:function(c,b){Event.stop(c);var a=myDeco.slideShow.imageNum;if(a>0){myDeco.slideShow.imageNum-=1;myDeco.slideShow.send((myDeco.slideShow.imageNum));myDeco.slideShow.enableButton(b)}},send:function(a,b){var c="../about-me/gallery/";new Ajax.Request(c,{method:"POST",parameters:{number:a},onSuccess:function(e){myDeco.slideShow.handleSuccess(e)},onFailure:function(){}})},handleSuccess:function(j,g){var a=j.responseText.evalJSON();var h=a.url;var c=a.description;var b=$("galleryImg");var f=$("slide-description");new Effect.Fade(b,{duration:0.5,afterFinish:function(){b.src=h;new Effect.Appear(b,{duration:0.5})}});f.innerHTML=c;myDeco.slideShow.nextImage=a.next;myDeco.slideShow.previousImage=myDeco.slideShow.imageNum;myDeco.slideShow.setButtonStatus();myDeco.slideShow.initialLoad=false},disableButton:function(a){a.addClassName("disabled")},enableButton:function(a){a.removeClassName("disabled")},setButtonStatus:function(){if(!myDeco.slideShow.previousImage){myDeco.slideShow.disableButton($("previous"))}else{myDeco.slideShow.enableButton($("previous"))}if(!myDeco.slideShow.nextImage){myDeco.slideShow.disableButton($("next"))}else{myDeco.slideShow.enableButton($("next"))}},imageNum:0,initialLoad:true,nextImage:false,previousImage:false};addLoadEvent(myDeco.slideShow.init);myDeco.productBubbles={build:function(){$$(".product-thumbnail")._each(function(b){var a=b.firstDescendant();var c=a.next();new InfoPopupsClass(a,c,{position:"right",timeout:300})})}};addLoadEvent(myDeco.productBubbles.build);myDeco.invites={init:function(){console.log("main.js : invites");var a=$("invite-friends");if(a){a.friendsList=$("contacts-imported");if(a.friendsList){a.inviteLinks=a.friendsList.select(".add a")}a.invitesList=$("contacts-to-invite");a.addInvite=function(c){var e=$(Builder.node("a",{href:"#",title:c.getAttribute("title")},[c.innerHTML]));e.observe("click",function(g){Event.stop(g);a.removeInvite(e)});var b=$(Builder.node("li",{className:"remove internal",id:c.parentNode.id.replace(/friend/,"invite")},[e]));a.invitesList.appendChild(b);var f;if(typeof(c.parentNode.remove)!="function"){f=$(c.parentNode)}else{f=c.parentNode}f.remove()};a.removeInvite=function(c){var e=$(Builder.node("a",{href:"#",title:c.getAttribute("title")},[c.innerHTML]));e.observe("click",function(f){Event.stop(f);a.addInvite(e)});var b=$(Builder.node("li",{className:"add",id:c.parentNode.id.replace(/invite/,"friend")},[e]));a.friendsList.appendChild(b);c.parentNode.remove()};if(a.inviteLinks){a.inviteLinks._each(function(b){b.observe("click",function(c){Event.stop(c);a.addInvite(b)})})}Event.observe("invite-friends","submit",myDeco.invites.handleSubmit)}},handleSubmit:function(c){Event.stop(c);var b=Event.element(c);var a=[];b.select("#invites-list li")._each(function(e){a.push({name:e.firstDescendant().innerHTML,email:e.firstDescendant().getAttribute("title")})});$("invites").value=a.toJSON();b.submit()}};addLoadEvent(myDeco.invites.init);myDeco.inlineFormCheck={init:function(){myDeco.inlineFormCheck.userCommentButtons();myDeco.inlineFormCheck.productRatingForm()},userCommentButtons:function(){var a=$$(".user-comment-button");if(a.size()>0){a._each(function(b){if(myDeco.username!=null){b.href="#user-comment";b.addClassName("inline-form-button")}})}},productRatingForm:function(){var b=$("rateit-button");var a=$$(".rateit-button");if(b&&(myDeco.username!=null)){b.addClassName("inline-form-button");a.each(function(c){c.observe("click",function(f){b.showForm(f)})})}else{if(b){b.observe("click",function(c){Event.stop(c);window.location=myDeco.urls.userLoginQuick});a.each(function(c){c.observe("click",function(f){Event.stop(f);window.location=myDeco.urls.userLoginQuick})})}}}};myDeco.showBublesAtRegisterPage={init:function(){$$("sign-up-form .bubble")._each(function(a){Effect.Appear(a,{duration:0.2})})}};addLoadEvent(myDeco.showBublesAtRegisterPage.init);myDeco.rotateQuestion={init:function(){var a=$$(".question-position");a._each(function(b){b.observe("click",function(c){myDeco.rotateQuestion.next(c,a)})})},next:function(j,g){Event.stop(j);var a=myDeco.rotateQuestion.questionNum;if(a>4){a=1;myDeco.rotateQuestion.questionNum=1;var f=$("rotate-question-5");f.hide();var c=$("rotate-question-1");c.show()}else{var h=$("rotate-question-"+a);h.hide();myDeco.rotateQuestion.questionNum+=1;var b=$("rotate-question-"+(a+1));b.show()}},startLoop:0,questionNum:1,initialLoad:true,nextQuestion:false,previousQuestion:false};addLoadEvent(myDeco.rotateQuestion.init);myDeco.showSaveRoomBtn={init:function(){var a=$("room-edit-popup");if(a){Effect.Appear(a,{duration:0.2})}}};addLoadEvent(myDeco.showSaveRoomBtn.init);myDeco.checkForDuplicatePhoto={init:function(){var a=$$(".save-photo").pluck("rel");if(a.length){myDeco.checkForDuplicatePhoto.send(a)}},send:function(a){new Ajax.Request($F("duplicateUrl"),{parameters:{object_ids:a},onSuccess:myDeco.checkForDuplicatePhoto.handleSuccess})},handleSuccess:function(c){var a=c.responseText.evalJSON(),b=a.object_ids;if(b){b._each(function(e){$("add-to-photo-link-"+e).addClassName("disabled")})}}};addLoadEvent(myDeco.checkForDuplicatePhoto.init);myDeco.CmsLinks={init:function(){var a=$$(".cmslink");a._each(function(b){b.observe("click",function(c){myDeco.CmsLinks.click(c,b)})})},click:function(b,a){if(a.href.indexOf("http")==0&&a.href.split("/")[2].split(":")[0]!=window.location.hostname){Event.stop(b);myDeco.CmsLinks.extwin=window.open(a.href,"mydecoext")}}};addLoadEvent(myDeco.CmsLinks.init);myDeco.BasketLogin={init:function(){var a=$("basket-login-button");if(!a){return}a.observe("click",myDeco.BasketLogin.onClick)},onClick:function(f){Event.stop(f);var b=Event.findElement(f,"a").href;var c=Event.findElement(f,"form");var a=c.select("#login_next_url_input")[0];a.value=b;c.submit()}};addLoadEvent(myDeco.BasketLogin.init);myDeco.fileInputs={_observers:{update:null,keystrokes:null},init:function(c){if(this._observers.update==null){this._observers={update:this.update.bindAsEventListener(this),keystrokes:this.getKeyStrokes.bindAsEventListener(this)}}var b=Object.isElement(c)?c.select(".fileinputs > input"):$$(".fileinputs > input"),a=this;b._each(function(g){g.addClassName("file");var f=g.up(".fileinputs");var h=f.select("input.text").first();if(Object.isUndefined(h)){h=Builder.node("input",{className:"text",type:"text"})}var e=f.select("div.fakefile").first();if(Object.isUndefined(e)){e=Builder.node("div",{className:"fakefile"},[Builder.node("div",{className:"field"},h),Builder.node("a",{className:"button"},Builder.node("span",{className:"inner"},"Browse"))]);g.up().insert(e)}g.textInput=h;g.observe("change",a._observers.update);g.observe("keypress",a._observers.keystrokes)})},getKeyStrokes:function(c){var a=c.element();var b=(window.event)?window.event:c;if(b.keyCode==8){a.textInput.value=a.textInput.value.substring(0,a.textInput.value.length-1)}else{a.textInput.value=a.value+String.fromCharCode(b.charCode)}},update:function(b){var a=b.element();a.textInput.value=a.value}};addLoadEvent(myDeco.fileInputs.init.bind(myDeco.fileInputs));myDeco.bubbles={init:function(){$$(".bubble")._each(function(a){a.appendChild(Builder.node("div",{className:"bubble-tip"}))})},create:function(b){var a=Builder.node("div",{className:"bubble"},[Builder.node("div",{className:"rounded"},[Builder.node("p",[b])]),Builder.node("div",{className:"bubble-tip"})]);Effect.Appear(a);return a}};addLoadEvent(myDeco.bubbles.init);myDeco.tabs={};myDeco.tabs.Tab=function(a,b){this._dom=a;this._link=a.down(".cmslink");this._container=$(a.id+"-container");this.isActive=a.hasClassName("active");this._switcherId="";this.prev=null;this.next=null;this._preActivateCallback=b};myDeco.tabs.Tab.prototype={activate:function(a){if(this.isActive){return}this._dom.addClassName("active");if(!a){this._container.show()}else{new Effect.Appear(this._container,{duration:0.4,queue:{scope:this._switcherId,position:"end"}})}this.isActive=true},deactivate:function(a){if(!this.isActive){return}this._dom.removeClassName("active");if(!a){this._container.hide()}else{Effect.Queues.get(this._switcherId).each(function(b){b.cancel()});new Effect.Fade(this._container,{duration:0.1,queue:{scope:this._switcherId}})}this.isActive=false},getId:function(){return this._dom.identify()},attachHandlers:function(a,b,c){this._link.observe("click",function(g){g.stop();if(this.isActive){return}if(a){window.clearInterval(a)}this._preActivateCallback(this);this.activate(b);for(var f=0;f<c.length;f++){c[f](this)}}.bind(this));if(a){this._container.observe("mouseover",function(f){window.clearInterval(a)})}},setContent:function(a){this._container.innerHTML=a},hasContent:function(){return !this._container.innerHTML.blank()},getLink:function(){return this._link},getContainer:function(){return this._container}};myDeco.tabs.TabSwitcher=function(c,b){var a=this;this._options={use_effects:true,period:7000,endless:false,auto_switch:true};this._options=Object.extend(this._options,b);this._dom=c;this._firstTab=null;this.activeTab=null;this._navigationLinks=null;this._interval=null;if(this._options.auto_switch){this._interval=window.setInterval(this.activateNext.bind(this),this._options.period)}this._navigationLinks=this._dom.select(".tabs-navigation");this._navigationLinks.invoke("observe","click",function(h){var g=Event.findElement(h,".tabs-navigation");Event.stop(h);a._navigationLinks.invoke("removeClassName","disabled");var f=!(g.hasClassName("prev-link")?a.activatePrev():a.activateNext());if(f){g.addClassName("disabled")}});this._callbacks=[];var e=null;this._dom.select(".tab:not(.inactive)")._each(function(g){var f=new myDeco.tabs.Tab(g,function(h){a.activeTab.deactivate(a._options.use_effects);a.activeTab=h});f.attachHandlers(a._interval,a._options.use_effects,a._callbacks);f._switcherId=a.getId();if(f.isActive){a.activeTab=f}f.prev=e;if(e){e.next=f}e=f;if(!a._firstTab){a._firstTab=f}})};myDeco.tabs.TabSwitcher.prototype={activateNext:function(){if(!this._firstTab){return false}var a=true;var b=this.activeTab;if(!b.next){if(!this._options.endless){a=false;window.clearInterval(this._interval)}else{b=this._firstTab}}else{b=this.activeTab.next}if(a){this.activeTab.deactivate(this._options.use_effects);b.activate(this._options.use_effects);this.activeTab=b}return a&&b.next},activatePrev:function(){if(!this._firstTab){return false}var a=true;var b=this.activeTab;if(!b.prev){a=false;window.clearInterval(this._interval)}else{b=this.activeTab.prev}if(a){this.activeTab.deactivate(this._options.use_effects);b.activate(this._options.use_effects);this.activeTab=b}return a&&b.prev},getId:function(){return this._dom.identify()},getTabById:function(b){var a=this._firstTab;while(a){if(a.getId()==b){return a}a=a.next}return null},switchTabById:function(b){var a=this.getTabById(b);if(!a||b==this.activeTab.getId()){return}this.activeTab.deactivate(this._options.use_effects);a.activate(this._options.use_effects);this.activeTab=a},addCallback:function(a){if(a instanceof Function){this._callbacks.push(a)}}};myDeco.tabs.tabSwitcherCollection={switchers:[],init:function(b,a){if(myDeco.tabs.tabSwitcherCollection.switchers.length&&!a){return}$$(".tab-switcher")._each(function(e){var c={use_effects:!e.hasClassName("noeffect"),endless:e.hasClassName("endless"),auto_switch:!e.hasClassName("no-auto-switch")};myDeco.tabs.tabSwitcherCollection.switchers.push(new myDeco.tabs.TabSwitcher(e,c))})},getSwitcherById:function(a){if(!myDeco.tabs.tabSwitcherCollection.switchers.length){myDeco.tabs.tabSwitcherCollection.init()}return myDeco.tabs.tabSwitcherCollection.switchers.find(function(b){return b.getId()==a})}};addLoadEvent(myDeco.tabs.tabSwitcherCollection.init);myDeco.RoomApp=Class.create({currentRoom:null,modelHash:null,roomType:null,roomTypeLabel:"room",loadTimeout:60*1000,saveTimeout:30*1000,deleteTimeout:30*1000,competitions:new Hash(),pendingCompetitions:[],switcher:null,initialize:function(){this.roomSearch=new myDeco.MiniSearch($("room-search-form"),$("room-search-results"),{tab:"showcase-tab-4",autoStart:false,itemClickHandler:this.loadRoom.bind(this),bubbleContent:this.roomBubbleContent.bind(this),dataSources:{profile:{url:myDeco.urls.ws.userRooms,parameters:{type:this.roomType},itemMap:this.searchItemRoomMap}}});this.roomSearch.searchForm.filter.value="type,"+this.roomType;if(this.roomTypeLabel){$$(".room-type-label").invoke("update",this.roomTypeLabel)}this.roomControls=$("top-menu");with(this.roomControls){select(".new-button").invoke("observe","click",this.createNewRoom.bindAsEventListener(this));select(".save-button").invoke("observe","click",this.checkSaveRoom.bindAsEventListener(this));select(".save-as-button").invoke("observe","click",this.displaySaveDialog.bindAsEventListener(this,true));select(".delete-button").invoke("observe","click",this.displayDeleteDialog.bindAsEventListener(this))}var current_location=location.href;var obj=this;$$(".join-link").each(function(button){button.href=myDeco.urls.register+"?next="+current_location;button.observe("click",function(e){obj.saveDraft()})});$$("#not-logged-form a.ajax-login-link").invoke("observe","click",function(e){myDeco.popupForms.close(e)});this.switcher=myDeco.tabs.tabSwitcherCollection.getSwitcherById("showcases")},postInit:function(){document.observe("mydeco:login",this.updateAppComponents.bindAsEventListener(this));this.updateAppComponents();window.onbeforeunload=this.unloadHandler.bind(this);window.switchState=this.switchState.bind(this);if(window.opener&&!window.opener.closed&&window.opener.loadAction){this.switchState(null,window.opener.loadAction,window.opener.loadValue)}else{this.loadCompetitions()}this.restoreDraft()},updateAppComponents:function(){var a=this;this.roomSearch.dataSources.profile.url=myDeco.urls.ws.userRooms;this.roomSearch.performSearch();this.focusSearch(this.roomSearch);if(myDeco.urls.ws.userRooms){$$("#room-search-form .profile-switch").invoke("enable")}else{$$("#room-search-form .profile-switch").invoke("disable")}},loadCompetitions:function(a){var b=this;new Ajax.Request((a?a:myDeco.urls.ws.room_competitions),{method:"get",parameters:{type:this.roomType},onSuccess:function(e){var c=e.responseText.evalJSON(true);if(a){b.competitions=new Hash();b.competitions.set(a,c)}else{b.competitions=new Hash(c)}b.attachCompetitions()}})},switchState:function(a,c,b){switch(c){case"openRoom":if(b){this.loadRoom(a,b);this.loadCompetitions()}break;case"enterCompetition":this.loadCompetitions(b);break;case"conversationReply":b=b.evalJSON();if(b.room){this.loadRoom(null,b.room)}this.conversationReplyUrl=b.conversation;this.roomControls.select("a.save-as-button").invoke("update","Reply");this.roomControls.select("a.save-button").invoke("hide");this.roomControls.select("a.delete-button").invoke("hide");$$("#room-save-form fieldset.public").invoke("hide");break;default:console.log("Unknown action: "+c)}},searchItemRoomMap:function(a){if(!a.ws_url){a.ws_url=a.id}return a},roomBubbleContent:function(b){var a=new Element("div");a.update('<img src="'+b.thumbnail+'" alt="" class="room-thumbnail"/>');a.insert("<h3>"+b.name+"</h3>");if(b.author==myDeco.username){a.insert('<ul class="result-item-actions"><li><a title="Delete this item" href="#" class="delete-item">Delete</a></li></ul>');a.select("a.delete-item").invoke("observe","click",this.displayDeleteDialog.bindAsEventListener(this,b))}else{a.insert('<p>By <a href="'+myDeco.urls.account+b.author+"/"+this.roomType+'s/" target="people">'+b.author+"</a></p>")}return a},loadRoom:function(f,c){if(f&&this.confirmDiscardUnsavedChanges(f)){return}var h=this;var g=null;function e(){if(g){window.clearTimeout(g)}h.roomSearch.hideLoader()}function a(){e();myDeco.popupForms.alert("Unable to open the selected "+h.roomTypeLabel+" - it seems to be corrupted!")}function b(j){e();h.focusSearch();h.currentRoom=j;h.modelHash=Object.toJSON(h.getRoomModel());h.unFreezeMenus();h.updateProductDetail()}this.roomSearch.showLoader();g=window.setTimeout(a,h.loadTimeout);c=c.ws_url||c;return new Ajax.Request(c,{method:"get",onFailure:a,onSuccess:function(k){var j=k.responseText.evalJSON(true);j.ws_url=c;if(j.image&&j.model){if(j.author!=myDeco.username){j.original_author=j.original_author||j.author}h.createRoom(j,b)}else{a()}}})},updateProductDetail:function(){this.hideInfoPopup();if(!this.currentRoom.products.length){this.productDetail={};return}var a=this;return new Ajax.Request(myDeco.urls.ws.product,{method:"get",parameters:{id:a.currentRoom.products.uniq()},onSuccess:function(c){var b=c.responseText.evalJSON(true);a.productDetail=b;a.checkForDeleted()}})},showInfoPopup:function(a){var c=this.productDetail&&this.productDetail[a];if(!c){return}if(this.infoFadeEffect){this.infoFadeEffect=this.infoFadeEffect.cancel()}var b=$("product-info");b.update('<div class="general-info"><h3>'+c.name+'</h3><ul class="result-item-actions"><li><a title="More info on product" target="product_info" class="product_info" href="'+c.url+'">More info</a></li>'+(myDeco.username?'<li><a class="shortlist-button" href="#"><span class="inner">Shortlist</span></a></li>':"")+'</ul></div><div class="price-info"><div class="price">'+myDeco.settings.LOCALECONV.currency_symbol+c.price+"</div>"+(c.price_before_discount?'<div class="result-item-discount">was '+c.price_before_discount+"</div>":"")+'<div><a class="button button-highlight buy-now-button external" href="/aff/?product='+a+'" target="_blank"><span class="inner">Go to shop</span></a></div><div><a class="merchant-link external" href="/aff/?product='+a+'" target="_blank">'+c.supplier+"</a></div></div>");b.select(".buy-now-button, .merchant-link").invoke("observe","click",myDeco.buynow.clickHandler.bindAsEventListener(myDeco.buynow,a,c.price));b.select(".shortlist-button").invoke("observe","click",myDeco.shortlist.buttonClick.bindAsEventListener(myDeco.shortlist,a));b.setStyle({opacity:1}).show();b.select("a.product_info").invoke("observe","click",myDeco.openPopup)},hideInfoPopup:function(){this.infoFadeEffect=new Effect.Fade("product-info",{duration:1})},isUserLogged:function(a){if(!myDeco.username){myDeco.popupForms.show(a,$("not-logged-form"),"center");return false}else{return true}},displaySaveDialog:function(a,h){if(a){var f=Event.element(a);Event.stop(a);if(f&&f.hasClassName("inactive")){return}}if(!this.isUserLogged(a)){return}var k=this.currentRoom;var b=k.ws_url;var g=false;if(h||(myDeco.username!=k.author)){k.author=myDeco.username;b=myDeco.urls.ws.userRooms;g=true}var e=this;var c=$("room-save-form");c.stopObserving("submit");c.observe("submit",function j(l){Event.stop(l);c.stopObserving("submit",j);var m=c.serialize(true);Object.extend(k,m);c.getInputs("checkbox").each(function(n){k[n.name]=n.checked});if(m.competitions){e.pendingCompetitions=Object.isArray(m.competitions)?m.competitions:[m.competitions]}e.saveRoom(b,g,c);myDeco.popupForms.close(l)});c.getElements().each(function(l){if(typeof k[l.name]!="undefined"){if(l.type=="checkbox"){l.checked=k[l.name]?true:false}else{l.value=k[l.name]}}});myDeco.popupForms.show(a,c,"center")},checkSaveRoom:function(b){if(b){var a=Event.element(b);Event.stop(b);if(a&&a.hasClassName("inactive")){return}}if(!this.isUserLogged(b)){return}if(!this.currentRoom.ws_url||myDeco.username!=this.currentRoom.author){this.displaySaveDialog(b,true)}else{this.saveRoom(this.currentRoom.ws_url)}},saveDraft:function(){this.currentRoom.model=this.getRoomModel();this.modelHash=Object.toJSON(this.currentRoom.model);if(this.roomType=="montage"){this.currentRoom.model=this.currentRoom.model.slice(0,10);this.currentRoom.products=this.currentRoom.model.pluck("product_id").uniq()}myDeco.createCookie(this.roomType+"_draft",Object.toJSON(this.currentRoom),0.1,window.location.pathname)},restoreDraft:function(){var b=this;var a=myDeco.readCookie(this.roomType+"_draft");if(a){a=a.evalJSON(true);myDeco.eraseCookie(this.roomType+"_draft");this.createRoom(a,function(c){b.focusSearch();b.currentRoom=c;b.modelHash=Object.toJSON(b.getRoomModel());b.unFreezeMenus();b.updateProductDetail()})}},saveRoom:function(a,h,b){var f=this;var k=null;function c(){if(k){window.clearTimeout(k)}f.roomSearch.hideLoader()}function g(){c();myDeco.popupForms.alert("There was an error while saving the current "+f.roomTypeLabel+" - please try again.")}function j(l){c();f.currentRoom.ws_url=l.location;f.currentRoom.id=l.id;f.modelHash=Object.toJSON(f.getRoomModel());f.roomSearch.performSearch(null,"profile");if(f.currentRoom["public"]&&f.pendingCompetitions.length){f.enterCompetitions(f.pendingCompetitions);f.pendingCompetitions=[]}else{if(f.conversationReplyUrl){f.replyToConversation(f.conversationReplyUrl)}else{myDeco.popupForms.alert("Your "+f.roomTypeLabel+" was saved successfully!")}}}this.currentRoom.model=this.getRoomModel();this.focusSearch(this.roomSearch);this.roomSearch.showLoader();k=window.setTimeout(g,f.saveTimeout);var e={};if(!h){e["X-HTTP-Method-Override"]="PUT"}return new Ajax.Request(a,{method:"post",postBody:Object.toJSON(this.currentRoom),contentType:"application/json",requestHeaders:e,onFailure:g,onSuccess:function(m){var l=m.responseText.evalJSON(true);if(window.opener&&!window.opener.closed&&window.opener.fireEventFromChild){window.opener.fireEventFromChild("body","save","modeleditor",{type:f.backendRoomType(),id:l.id})}if(f.saveRoomImages){f.saveRoomImages(l.location,j.curry(l))}else{j(l)}},onComplete:function(){if(b){myDeco.formControls.submitButtons.enable(b)}}})},replyToConversation:function(a){var b={subject:this.currentRoom.name,question:this.currentRoom.description,answer:this.currentRoom.description,room:this.currentRoom.id};return new Ajax.Request(a,{postBody:Object.toJSON(b),contentType:"application/json",onSuccess:function(c){myDeco.addCacheMissParam(window.opener.location);window.opener.focus();window.close()}})},enterCompetitions:function(e){var f=this;var g=new Hash();var h=new Hash();function a(){var j="<h2>Your "+f.roomTypeLabel+" was saved successfully!</h2>";g=g.keys();if(g.length>0){j+="<h3>You entered your moodboard into these competitions:</h3><ul><li>";j+=g.join("</li><li>");j+="</li></ul>"}if(h.keys().length>0){j+="<h3>Sorry, there was a problem entering your moodboard into these competitions:</h3><ul>";h.each(function(k){j+="<li>"+k.key+": "+k.value+"</li>"});j+="</ul>"}myDeco.popupForms.alert('<div class="detailed-errors">'+j+"</div>")}var b=e.length;function c(j,k,l){var m=f.competitions.get(l).title;j.set(m,k);if(!--b){a();if(window.opener&&window.opener.loadAction=="enterCompetition"){myDeco.addCacheMissParam(window.opener.location)}}}e.each(function(j){new Ajax.Request(j,{parameters:{room_id:f.currentRoom.id},onFailure:function(m){var k=m.responseText.evalJSON(true);var l=k.error.message.__all__[0].replace(/Sorry,?\s/,"");c(h,l,j)},onSuccess:function(k){c(g,"",j)}})})},attachCompetitions:function(){if(this.competitions&&this.competitions.size()){var b=$("room-save-form").down("fieldset.competitions");b.update('<h3>Enter our great competitions!</h3><p>You&rsquo;ve created a masterpiece, so why not enter to win some great prizes? Check the competitions you would like to enter below.</p><div class="labels-holder"></div>');var a=b.down(".labels-holder");this.competitions.each(function(e){var c=new Element("label");c.update('<div class="competition-image"><img src="'+e.value.thumbnail_url+'" alt=""/></div><div class="competition-info"><input type="checkbox" value="'+e.key+'" name="competitions" />'+e.value.title+"</div>");a.appendChild(c)});b.select("input").invoke("observe","click",function(f){var c=Event.element(f);if(c.checked){$("id_public").checked=true}});$("id_public").observe("click",function(f){var c=Event.element(f);if(!c.checked){b.select("input").each(function(e){e.checked=false})}})}},displayDeleteDialog:function(c,g){if(c){var a=Event.element(c);Event.stop(c);if(a&&a.hasClassName("inactive")){return}}g=g||this.currentRoom;if(!g.ws_url){return}var f=this;var b=$("room-delete-form");b.stopObserving("submit");b.observe("submit",function e(h){Event.stop(h);b.stopObserving("submit",e);f.deleteRoom(g.ws_url);myDeco.popupForms.close(h)});b.down(".room-name").update(g.name);b.down(".room-thumbnail").update('<img src="'+g.thumbnail+'"/>');myDeco.popupForms.show(c,b,"center")},deleteRoom:function(c){var g=this;var f=null;function e(){if(f){window.clearTimeout(f)}g.roomSearch.hideLoader()}function a(){e();myDeco.popupForms.alert("There was an error while deleting the "+g.roomTypeLabel+" - please try again.")}function b(){e();g.roomSearch.performSearch(null,"profile");if(c==g.currentRoom.ws_url){g.createNewRoom()}myDeco.popupForms.alert("Your "+g.roomTypeLabel+" was deleted successfully!")}this.focusSearch(this.roomSearch);this.roomSearch.showLoader();f=window.setTimeout(a,g.deleteTimeout);return new Ajax.Request(c,{method:"post",requestHeaders:{"X-HTTP-Method-Override":"DELETE"},onFailure:a,onSuccess:function(h){if(window.opener&&!window.opener.closed&&window.opener.fireEventFromChild){window.opener.fireEventFromChild("body","delete","modeleditor",{type:g.backendRoomType(),id:g.currentRoom.id})}b()}})},displayPhotoUploadDialog:function(c){if(c){var a=Event.element(c);Event.stop(c);if(a&&a.hasClassName("inactive")){return}}var b=$("photo-upload-form");b.reset();b.action=this.photoUpload.formActionUrl;window.myDeco._roomApp=this;b.callback.value="myDeco._roomApp.photoUploadResultHandler";myDeco.popupForms.show(c,b,"center")},photoUploadResultHandler:function(a){var b=$("photo-upload-form").removeClassName("disabled");b.getElementsBySelector(".bubble").invoke("remove");if(a&&a.error){$H(a.error.message).each(function(e){var f=b[e[0]].up("div");var c=myDeco.bubbles.create(e[1][0]);f.parentNode.insertBefore(c,f)})}else{myDeco.popupForms.hide(b);if(this.photoUpload.successHandler){this.photoUpload.successHandler()}this.focusSearch(this.photoUpload.searchTarget);this.photoUpload.searchTarget.performSearch(null,this.photoUpload.searchDataSource)}},createNewRoom:function(a){if(a&&this.confirmDiscardUnsavedChanges(a)){return}this.reset();this.currentRoom={name:"Untitled",type:this.roomType,products:[],model:[]};this.modelHash=Object.toJSON(this.getRoomModel());this.updateProductDetail()},reset:function(a){if(a){Event.stop(a)}if(!this.currentRoom){this.unFreezeMenus()}},roomRequiresSave:function(){return this.currentRoom&&Object.toJSON(this.getRoomModel())!=this.modelHash},confirmDiscardUnsavedChanges:function(a){Event.stop(a);if(this.roomRequiresSave()&&!window.confirm("Your "+this.roomTypeLabel+" has not been saved.\nDo you wish to discard your changes?")){return true}},unloadHandler:function(){if(this.roomRequiresSave()){return"Have you saved your "+this.roomTypeLabel+"? You may lose all your work!"}},focusSearch:function(a){if(a&&a.tab){this.switcher.switchTabById(a.tab)}else{this.switcher.switchTabById("showcase-tab-1")}},unFreezeControls:function(){this.roomControls.select("a.save-button").invoke("removeClassName","inactive");this.roomControls.select("a.save-as-button").invoke("removeClassName","inactive");this.roomControls.select("a.delete-button").invoke("removeClassName","inactive")},freezeControls:function(a){if(typeof(a)=="undefined"){this.roomControls.select("a.save-button").invoke("addClassName","inactive");this.roomControls.select("a.save-as-button").invoke("addClassName","inactive")}this.roomControls.select("a.delete-button").invoke("addClassName","inactive")},unFreezeMenus:function(){$$("ul.global-menu li a").invoke("removeClassName","inactive");if(!myDeco.username){this.freezeControls(true)}$$("#sidebar div.tab-switcher").invoke("show")},displayStatusMessage:function(a){$("status-bar").update(a)},clearStatusMessage:function(){$("status-bar").update("")},checkForDeleted:function(){},backendRoomType:function(){var a=this.roomType;switch(a){case"montage":a="moodboards";break;case"decorated-photo":a="decorated_photos";break;default:a="rooms"}return a}});myDeco.MontageRoomApp=Class.create(myDeco.RoomApp,{roomType:"montage",roomTypeLabel:"moodboard",canvas:null,selectedItem:null,zIndex:1,splashShown:true,initialize:function($super){$super();this.productSearch=new myDeco.MiniSearch($("product-search-form"),$("product-search-results"),{tab:$("showcase-tab-1"),itemDragStartHandler:this.productDragStartHandler.bind(this),bubbleContent:this.productBubbleContent.bind(this)});$$(".welcome-screen .new-button").invoke("observe","click",this.createNewRoom.bindAsEventListener(this));$$(".welcome-screen .rooms-button").invoke("observe","click",this.reset.bindAsEventListener(this,this.roomSearch));with($("bottom-menu")){select(".montage-item-delete-button a").invoke("observe","click",this.itemDeleteHandler.bindAsEventListener(this));select(".montage-item-duplicate-button a").invoke("observe","click",this.itemDuplicateHandler.bindAsEventListener(this));select(".montage-item-front-button a").invoke("observe","click",this.itemFrontHandler.bindAsEventListener(this));select(".montage-item-back-button a").invoke("observe","click",this.itemBackHandler.bindAsEventListener(this));select(".montage-item-flip-h-button a").invoke("observe","click",this.itemFlipHHandler.bindAsEventListener(this));select(".montage-item-flip-v-button a").invoke("observe","click",this.itemFlipVHandler.bindAsEventListener(this));select(".montage-item-rotate-left a").invoke("observe","click",this.itemRotateLeftHandler.bindAsEventListener(this));select(".montage-item-rotate-right a").invoke("observe","click",this.itemRotateRightHandler.bindAsEventListener(this))}this.canvas=$("canvas");Droppables.add("canvas",{accept:"result-icon",onDrop:this.addProductHandler.bind(this)});Event.observe(document,"keydown",this.keyHandler.bindAsEventListener(this));Event.observe(window,"message",this.postMessageHandler.bindAsEventListener(this));this.postInit()},switchState:function($super,a,c,b){switch(c){case"addProduct":this.addProduct(b);break;default:$super(a,c,b)}},addProduct:function(a){var b=this;new Ajax.Request(myDeco.urls.ws.product,{method:"get",parameters:{id:a},onSuccess:function(e){var c=e.responseText.evalJSON(true);b.addProductHandler(c[a])}})},updateAppComponents:function($super){$super();var e=$("welcome-guest");var c=$("welcome-logged");if(myDeco.username){if(e){e.hide()}if(c){c.down(".username").update(myDeco.username);c.show()}else{this.unFreezeMenus()}this.initShortlistTab();this.initScrapbookTab()}else{if(e){e.show()}if(c){c.hide()}var a=$("showcase-tab-2-container");a.down(".mini-search").hide();a.down(".tab-text").hide();a.down(".login-required").show();var b=$("showcase-tab-3-container");b.down(".mini-search").hide();b.down(".login-required").show()}},initScrapbookTab:function(){var a=$("showcase-tab-2-container");a.down(".login-required").hide();a.down(".mini-search").show();a.down(".tab-text").show();this.scrapbookSearch=new myDeco.MiniSearch($("scrapbook-search-form"),$("scrapbook-search-results"),{tab:$("showcase-tab-2"),itemDragStartHandler:this.productDragStartHandler.bind(this),bubbleContent:this.scrapbookBubbleContent.bind(this),dataSources:{scrapbook:{url:myDeco.urls.ws.userScrapbookImages,sort:function(e,c){return e.created>c.created?-1:1},itemLabel:"scrapbook photos",itemMap:this.scrapbookProductMap}}});this.photoUpload={formActionUrl:myDeco.urls.scrapbookUploadIframe,searchTarget:this.scrapbookSearch};$$(".photo-upload-button").invoke("observe","click",this.displayPhotoUploadDialog.bindAsEventListener(this))},initShortlistTab:function(){var a=$("showcase-tab-3-container");a.down(".login-required").hide();a.down(".mini-search").show();this.shortlistSearch=new myDeco.MiniSearch($("shortlist-search-form"),$("shortlist-search-results"),{tab:$("showcase-tab-3"),itemDragStartHandler:this.productDragStartHandler.bind(this),bubbleContent:this.productBubbleContent.bind(this),dataSources:{shortlist:{url:myDeco.urls.ws.userShortlistedProducts,itemLabel:"shortlisted products"}}})},productBubbleContent:function(a){return"<h3>"+a.name+'</h3><ul class="result-item-actions"><li><a title="More info on product" target="product_info" href="'+a.url+'">More info</a></li><li><a title="Go to shop" target="product_info" href="/aff/?product='+a.id+'">Go to shop</a></li></ul>'},scrapbookProductMap:function(a){return{id:null,name:a.title,url:null,ws_url:a.id,image:a.image,thumbnail:a.thumbnail}},scrapbookBubbleContent:function(b){var a=new Element("div");a.insert("<h3>"+b.name+"</h3>");if(b.ws_url){a.insert('<ul class="result-item-actions"><li><a title="Delete this item" href="#" class="delete-item">Delete</a></li></ul>');a.select("a.delete-item").invoke("observe","click",this.deleteScrapbookItem.bindAsEventListener(this,b.ws_url))}return a},deleteScrapbookItem:function(b,a){Event.stop(b);var c=this;return new Ajax.Request(a,{method:"post",requestHeaders:{"X-HTTP-Method-Override":"DELETE"},onCreate:function(){c.scrapbookSearch.showLoader()},onFailure:function(){c.scrapbookSearch.hideLoader();myDeco.popupForms.alert("There was an error while deleting the photo - please try again.")},onSuccess:function(){c.scrapbookSearch.hideLoader();c.scrapbookSearch.performSearch();myDeco.popupForms.alert("Your photo was deleted successfully!")}})},createRoom:function(a,j){var c=this.canvas.clientWidth;var h=this.canvas.clientHeight;var g=this;var e=a.model.length;var k=[];var f="Loading moodboard, ";function b(){if(!--e){if(k.length){myDeco.popupForms.alert(k.length+" image"+(k.length>1?"s":"")+" in this moodboard "+(k.length>1?"are":"is")+" no longer available.")}g.clearStatusMessage();return j(a)}if(a.model.length){g.displayStatusMessage(f+Math.ceil((1-e/a.model.length)*100)+"%")}}g.displayStatusMessage(f+"0%");this.reset(null,this.roomSearch);a.model.each(function(m){var l=new Element("img");l.onload=function(){var n=g.createCanvas(l)||l;n.className="montage-item";n.setStyle({zIndex:m.z_index,left:(m.left*c)+"px",top:(m.top*h)+"px",width:(m.width*c)+"px",height:(m.height*h)+"px"});g.canvas.appendChild(n);n=g.transformItem(n,m.rotation,m.mirror,true,true);g.copyItemProperties(m,n);g.zIndex=Math.max(g.zIndex,m.z_index);return b()};l.onerror=function(){k.push(l.src);return b()};l.src=m.image})},getRoomModel:function(){var a=this.canvas.clientWidth;var c=this.canvas.clientHeight;var b=this.canvas.select(".montage-item").map(function(e){return{product_id:e.productId,image:e.origSrc||e.src,z_index:e.style.zIndex,left:(parseInt(e.style.left)/a),top:(parseInt(e.style.top)/c),width:((e.offsetWidth-4)/a),height:((e.offsetHeight-4)/c),mirror:e.mirror,rotation:e.rotation}});b.sort(function(f,e){return f.z_index-e.z_index});b.each(function(f,e){f.z_index=e+1});return b},reset:function($super,c,b){this.splashShown=false;this.removeDragResize();this.canvas.update();if(c&&b){var a=Event.element(c);if(a.rel){b.performSearch(c,a.rel)}}this.focusSearch(b);$super(c)},setupDragResize:function(a,b){a.stopObserving();new Resize(a,{min:function(){return{w:20,h:20}},max:function(){return{w:600,h:600}},selectElement:this.itemSelectHandler.bind(this),unselectElement:this.itemUnselectHandler.bind(this),proportional:true});if(b){Resizes.activate(a);Drags.deactivate()}new Drag(a,{self:true})},removeDragResize:function(a){if(a){Resizes.destroyRS(a);Drags.destroyDD(a)}else{Resizes.destroy();Drags.destroy()}},copyItemProperties:function(a,b){b.productId=a.productId||a.product_id;b.rotation=a.rotation;b.mirror=a.mirror;b.transparent=a.transparent;b.origSrc=a.origSrc},addProductHandler:function(f,b,a){if(this.splashShown){this.createNewRoom(null)}b=b||this.canvas;if(!b){return false}var h=Position.page(b);if(a){var c=(Event.pointerX(a)-h[0]-20);var k=(Event.pointerY(a)-h[1]-20)}var e=this;var g=new Element("img");var j=f.product||f;g.onload=function(){var m=(g.naturalWidth||g.width);var n=(g.naturalHeight||g.height);var l=e.createCanvas(g)||g;c=c||((b.getWidth()-m)/2).round();k=k||((b.getHeight()-n)/2).round();l.rotation=0;l.mirror=0;l.transparent=j.transparent_image?true:false;l.productId=j.id;l.className="montage-item";l.setStyle({zIndex:e.zIndex,left:c+"px",top:k+"px",width:m+"px",height:n+"px"});b.appendChild(l);if(l.productId){e.currentRoom.products.push(l.productId)}e.updateProductDetail();e.setupDragResize(l,true);e.clearStatusMessage()};e.displayStatusMessage("Loading image...");g.src=j.transparent_image||j.image},createCanvas:function(a){var b=new Element("canvas");if(b&&b.getContext){b.src=a.src;b.width=a.width;b.height=a.height;var c=b.getContext("2d");c.drawImage(a,0,0,b.width,b.height);return b}else{return null}},productDragStartHandler:function(a,b){if(!b.image&&b.thumbnail_270){b.image=b.thumbnail_270}if(!b.transparent_image&&b.thumbnail_nobkg_270){b.transparent_image=b.thumbnail_nobkg_270}a._clone.product=b},itemSelectHandler:function(a){a.focus();this.selectedItem=a;if(a.productId){this.showInfoPopup(a.productId)}else{this.hideInfoPopup()}},itemUnselectHandler:function(a){this.selectedItem=null;this.hideInfoPopup()},getSelectedItem:function(b,a){if(b){Event.stop(b)}return a||this.selectedItem},itemDeleteHandler:function(b,a){if(a=this.getSelectedItem(b,a)){if(a.productId){var c=this.currentRoom.products;var e=a.productId;c.splice(c.indexOf(e),1);this.updateProductDetail()}this.removeDragResize(a);a.remove();this.selectedItem=null}},itemDuplicateHandler:function(c,b){if(b=this.getSelectedItem(c,b)){var e=b.cloneNode(true);if(e.tagName=="CANVAS"){var a=e.getContext("2d");a.drawImage(b,0,0);e.src=b.src}this.copyItemProperties(b,e);e.style.left=(parseInt(b.style.left)+20)+"px";e.style.top=(parseInt(b.style.top)+20)+"px";b.parentNode.appendChild(e);if(b.productId){this.currentRoom.products.push(b.productId)}this.setupDragResize(e,true);this.selectedItem=e}},itemFrontHandler:function(b,a){if(a=this.getSelectedItem(b,a)){a.style.zIndex=++this.zIndex}},itemBackHandler:function(b,a){if(a=this.getSelectedItem(b,a)){a.style.zIndex=0}},itemFlipHHandler:function(b,a){if(a=this.getSelectedItem(b,a)){this.transformItem(a,0,1)}},itemFlipVHandler:function(b,a){if(a=this.getSelectedItem(b,a)){this.transformItem(a,2,1)}},itemRotateLeftHandler:function(b,a){if(a=this.getSelectedItem(b,a)){this.transformItem(a,3,0)}},itemRotateRightHandler:function(b,a){if(a=this.getSelectedItem(b,a)){this.transformItem(a,1,0)}},transformItem:function(g,p,m,c,n){var f=this;g.rotation=((g.rotation||0)+p)%4;g.mirror=((g.mirror||0)+m)%2;this.removeDragResize(g);function o(r,q,t,u){if(!u&&q%2){r.setStyle({width:r.clientHeight+"px",height:r.clientWidth+"px"})}if(!t&&q%2){r.setStyle({top:parseInt(r.style.top)+Math.round((r.offsetWidth-r.offsetHeight)/2)+"px",left:parseInt(r.style.left)+Math.round((r.offsetHeight-r.offsetWidth)/2)+"px"})}f.setupDragResize(r,true);return f.selectedItem=r}var l=g.cloneNode(true);this.copyItemProperties(g,l);if(l.tagName=="CANVAS"){l.src=g.src;l.width=l.height=Math.max(g.width,g.height);var b=l.getContext("2d");for(var e=1;e<=p;e++){b.translate(l.width,0);b.rotate(90*Math.PI/180)}if(m){b.transform(-1,0,0,1,l.width+1,0)}b.drawImage(g,0,0,l.width,l.height);g.replace(l);return o(l,p,c,n)}else{window.clearTimeout(g.applyServerTransform);var a={},j=/mirror=(\d+).*rotation=(\d+)/;var h=j.exec(g.style.filter)||["",0,0];a.mirror=(parseInt(h[1])+m)%2;a.rotation=(parseInt(h[2])+p)%4;g.style.filter="progid:DXImageTransform.Microsoft.BasicImage(mirror="+a.mirror+") progid:DXImageTransform.Microsoft.BasicImage(rotation="+a.rotation+")";function k(){var r=g.origSrc||g.src;l.origSrc=r;l.style.filter="";l.onload=function(){g.replace(l);return o(l,a.rotation,c,n)};var q="m"+g.mirror+"r"+(g.rotation*90);l.src=r.replace(/.*(product_images.*)(\.png)/,myDeco.settings.IMAGE_TRANSFORM_SERVICE+"/$1_"+q+"$2")}g.applyServerTransform=k.delay(1);return o(g,p,c,!n)}},keyHandler:function(b){var a=Event.element(b);if(!this.selectedItem){return}Event.stop(b);switch(b.keyCode){case 8:case 46:this.itemDeleteHandler();break;case 66:this.itemBackHandler();break;case 68:this.itemDuplicateHandler();break;case 70:this.itemFrontHandler();break;case 86:this.itemFlipVHandler();break;case 72:this.itemFlipHHandler();break;case 76:this.itemRotateLeftHandler();break;case 82:this.itemRotateRightHandler();break;case 37:case 38:case 39:case 10:break}},postMessageHandler:function(a){if(a.data=="close-iframe"&&myDeco.user){myDeco.user.ajaxLoginCloseHandler(a)}},checkForDeleted:function(){var a=this;this.canvas.select(".montage-item")._each(function(b){if(b.productId&&typeof a.productDetail[b.productId]=="object"&&a.productDetail[b.productId]==null){b.productId=null}});this.currentRoom.products=this.currentRoom.products.select(function(b){return a.productDetail[b]})}});addLoadEvent(function(){if(myDeco.browser.isIE6){return}myDeco.montage=new myDeco.MontageRoomApp()});myDeco.MiniSearch=Class.create({searchForm:null,resultElement:null,resultList:null,loader:null,dataSources:{},useControls:true,autoStart:true,bubbleTimeOut:false,initialize:function(c,b,a){this.searchForm=c;this.searchForm.observe("submit",this.performSearch.bindAsEventListener(this));this.searchForm.select("input.query").invoke("observe","focus",this.clearExampleQuery);this.searchSourceSwitches=this.searchForm.select(".source-switch");this.searchSourceSwitches.invoke("observe","click",this.switchSource.bindAsEventListener(this));this.resultElement=b;this.resultList=this.resultElement.down(".result-list");this.loader=this.resultElement.down(".ajax-loader");if(a){Object.extend(this,a)}if(this.useControls){this.resultElement.down(".prev-button").observe("click",this.getMoreResults.bindAsEventListener(this,-1));this.resultElement.down(".next-button").observe("click",this.getMoreResults.bindAsEventListener(this,1))}if(this.autoStart){this.performSearch()}},performSearch:function(a,b){if(a){Event.stop(a)}this.searchForm.startrank.value=0;if(this.searchForm._source){if(b){this.searchForm._source.value=b}else{b=this.searchForm._source.value}}this.searchSourceSwitches._each(function(c){if(c.value==b){c.addClassName("selected")}else{c.removeClassName("selected")}});if(b&&this.dataSources[b]){if(Object.isFunction(this.dataSources[b])){this.getResults=this.dataSources[b]}else{this.getResults=this.getProfileResults.curry(this.dataSources[b])}}else{this.getResults=this.getSearchResults}return this.getResults(0,parseInt(this.searchForm.count.value))},getMoreResults:function(b,c){if(b){Event.stop(b)}var a=parseInt(this.searchForm.count.value);var e=parseInt(this.searchForm.startrank.value)+(c*a);if(e>=0&&e<this.totalResultCount){this.searchForm.startrank.value=e;return this.getResults(e,a)}},getSearchResults:function(e,b){var a=this.searchForm.db.value;var c=this;return this.searchForm.request({onCreate:function(){c.showLoader()},onFailure:function(f){console.log("Ajax error: ",f.statusText);c.hideLoader()},onSuccess:function(k){var f=k.responseText.evalJSON(true).results[a];var g=f.items.map(function(l){l[1].id=l[0];return l[1]});var h="Showing "+g.length+" of "+f.estmatches+" results";if(c.searchForm.query.value!=""){h+=" for “<strong>"+c.searchForm.query.value+"</strong>”"}h+=".";var j=(Math.ceil(e/b)+1)+"/"+Math.ceil(f.estmatches/b);c.totalResultCount=f.lowerbound;c.updateFacetControls(f.facets);c.updateResults(g,h,j);c.hideLoader()}})},getProfileResults:function(a,e,b){var c=this;return new Ajax.Request(a.url,Object.extend({method:"get",onCreate:function(){c.showLoader()},onFailure:function(f){console.log("Ajax error: ",f.statusText);c.hideLoader()},onSuccess:function(m){var f=$H(m.responseText.evalJSON(true));var l=c.searchForm.query.value.toLowerCase();var j=f.keys().reject(function(n){return f.get(n)==null});var g=j.map(function(o){var n=f.get(o);n.id=o;return n});if(a.sort){g=g.sort(a.sort)}if(a.itemMap){g=g.map(a.itemMap)}g=g.select(function(n){return n.name.toLowerCase().include(l)});c.totalResultCount=g.length;g=g.slice(e,e+b);var h="Showing "+g.length+" of "+c.totalResultCount+" "+(a.itemLabel||"results")+".";var k=(Math.ceil(e/b)+1)+"/"+Math.ceil(c.totalResultCount/b);c.updateResults(g,h,k);c.hideLoader()}},a))},updateFacetControls:function(a){if(!(myDeco.search&&myDeco.search.controls)){return}myDeco.search.doSearch=function(){};var b=this;if(a){a.each(function(h){var c=myDeco.search.controls.get("facet_"+h[0]);if(c){c.callback=function(k){var j=b.searchForm;j.getInputs("hidden","facet").invoke("remove");k[1].each(function(m){var l=new Element("input");l.type="hidden";l.name="facet";l.value=unescape(m);j.appendChild(l)});c.collapseParent(true);b.performSearch()};if(h[1].length){if(h[0]=="image_colour"){var g=new Hash();h[1].each(function(j){g.set(j[2],true)});c.setView(g,"json",false)}else{var e=document.createDocumentFragment(),f=new Element("ul");e.appendChild(f);h[1].each(function(k){var j=new Element("li");j.update('<a href="#">'+k[0]+"</a>");j.className="value:"+k[2];f.appendChild(j)});c.node.update().appendChild(e);c.items=$A(c.node.childNodes);c.init()}}}})}},updateResults:function(a,f,h){this.resultElement.down(".message").update(f);if(this.useControls&&h){this.resultElement.down(".page").update(h)}var c=new Element("ul");for(var b=0,e=a.length;b<e;b++){c.appendChild(this.createResultItem(a[b]))}this.resultList.select("li")._each(function(j){j.bubble&&j.bubble.remove()});this.resultList.update(c);var g=new Element("div");g.className="clear";this.resultList.appendChild(g)},createResultItem:function(c){var a=new Element("div",{"class":"result-icon"});var f=c.texture_thumbnail||c.thumbnail_50||c.thumbnail;if(f){a.update('<img src="'+f+'" alt="'+c.name+'"/>')}if(c.colour_value){var e="#"+Number(c.colour_value).toPaddedString(6,16);a.setStyle({backgroundColor:e})}if(this.itemClickHandler){a.observe("click",this.itemClickHandler.bindAsEventListener(null,c));a.addClassName("clickable")}if(this.itemDragStartHandler){new Draggable(a,{revert:true,ghosting:true,dragclone:true,onStart:this.itemDragStartHandler.bindAsEventListener(null,c)});a.addClassName("draggable")}var b=new Element("li");b.appendChild(a);if(this.bubbleContent){b.bubble=new Element("div",{"class":"bubble bubble-bottom"});b.bubble.update(this.bubbleContent(c)).hide();b.bubble.select(".result-item-actions a:not(.delete-item)").invoke("observe","click",myDeco.openPopup);b.bubble.insert('<img class="bubble-tip" alt="" src="'+myDeco.settings.STATIC_URL+'img/bubble-tip-bottom.png"/>');$(document.body).appendChild(b.bubble);b.observe("mouseover",this.showBubble.bindAsEventListener(this));b.observe("mouseout",this.hideBubble.bindAsEventListener(this));b.bubble.observe("mouseover",this.keepBubble.bindAsEventListener(this));b.bubble.observe("mouseout",this.hideBubble.bindAsEventListener(this))}return b},showBubble:function(c){var b=c.findElement("li"),a,f;if(this.bubbleTimeOut){clearTimeout(this.bubbleTimeOut)}this.resultList.select("li")._each(function(e){e.bubble&&e.bubble.hide()});if(!b){return}a=b.bubble;f=b.cumulativeOffset();a.setStyle({left:f.left-20+"px",top:f.top-a.getHeight()+"px"}).show()},hideBubble:function(c){var b=c.findElement("li"),a=typeof b!="undefined"?b.bubble:c.findElement(".bubble");if(a){this.bubbleTimeOut=setTimeout(function(){new Effect.Fade(a,{duration:0.05})},100)}},keepBubble:function(a){if(this.bubbleTimeOut){clearTimeout(this.bubbleTimeOut)}},showLoader:function(){this.loader.removeClassName("ajax-loader-hidden")},hideLoader:function(){this.loader.addClassName("ajax-loader-hidden")},switchSource:function(b){var a=Event.element(b);this.performSearch(b,a.value)},clearExampleQuery:function _clearExampleQuery(a){var b=Event.element(a);b.stopObserving(a.type,_clearExampleQuery);if(b.hasClassName("example")){b.removeClassName("example");b.value=""}}});window.dhtmlHistory={isIE:false,isOpera:false,isSafari:false,isKonquerer:false,isGecko:false,isSupported:false,create:function(k){var c=this;window.historyStorage.setup(k);if(k&&k.baseTitle){if(k.baseTitle.indexOf("@@@")<0&&historyStorage.debugMode){throw new Error("Programmer error: options.baseTitle must contain the replacement parameter '@@@' to be useful.")}this.baseTitle=k.baseTitle}var e=navigator.userAgent.toLowerCase();var a=navigator.platform.toLowerCase();var f=navigator.vendor||"";if(f==="KDE"){this.isKonqueror=true;this.isSupported=false}else{if(typeof window.opera!=="undefined"){this.isOpera=true;this.isSupported=true}else{if(typeof document.all!=="undefined"){this.isIE=true;this.isSupported=true}else{if(f.indexOf("Apple Computer, Inc.")>-1){this.isSafari=true;this.isSupported=(a.indexOf("mac")>-1)}else{if(e.indexOf("gecko")!=-1){this.isGecko=true;this.isSupported=true}}}}}if(this.isSafari){this.createSafari()}else{if(this.isOpera){this.createOpera()}}var b=this.getCurrentLocation();this.currentLocation=b;if(this.isIE){if(k&&k.blankURL){var g=k.blankURL;this.blankURL=(g.indexOf("?")!=g.length-1?g+"?":g)}this.createIE(b)}var j=function(){c.firstLoad=null};this.addEventListener(window,"unload",j);if(this.isIE){this.ignoreLocationChange=true}else{if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.ignoreLocationChange=true;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true)}else{this.ignoreLocationChange=false;this.firstLoad=false;this.fireOnNewListener=true}}var h=function(){c.checkLocation()};setInterval(h,100)},initialize:function(a){this.originalTitle=document.title;if(this.isIE){if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.fireOnNewListener=false;this.firstLoad=true;historyStorage.put(this.PAGELOADEDSTRING,true)}else{this.fireOnNewListener=true;this.firstLoad=false}}if(a){this.addListener(a)}},addListener:function(a){this.listener=a;if(this.fireOnNewListener){this.fireHistoryEvent(this.currentLocation);this.fireOnNewListener=false}},changeTitle:function(e){var b=(e&&e.newTitle?this.baseTitle.replace("@@@",e.newTitle):this.originalTitle);if(document.title==b){return}document.title=b;if(this.isIE){this.iframe.contentWindow.document.title=b}if(!this.isIE&&!this.isOpera){var c=decodeURIComponent(document.location.hash);if(c!=""){var a=encodeURIComponent(this.removeHash(c));document.location.hash=a}else{}}},add:function(e,f){var c=this;var a=encodeURIComponent(this.removeHash(e));if(this.isSafari){historyStorage.put(e,f);this.currentLocation=a;window.location.hash=a;this.putSafariState(a);this.changeTitle(f)}else{var b=function(){if(c.currentWaitTime>0){c.currentWaitTime=c.currentWaitTime-c.waitTime}if(document.getElementById(a)&&c.debugMode){var g="Exception: History locations can not have the same value as _any_ IDs that might be in the document, due to a bug in IE; please ask the developer to choose a history location that does not match any HTML IDs in this document. The following ID is already taken and cannot be a location: "+e;throw new Error(g)}historyStorage.put(e,f);c.ignoreLocationChange=true;c.ieAtomicLocationChange=true;c.currentLocation=a;window.location.hash=a;if(c.isIE){c.iframe.src=c.blankURL+a}c.ieAtomicLocationChange=false;c.changeTitle(f)};window.setTimeout(b,this.currentWaitTime);this.currentWaitTime=this.currentWaitTime+this.waitTime}},isFirstLoad:function(){return this.firstLoad},getVersion:function(){return this.VERSIONNUMBER},PAGELOADEDSTRING:"DhtmlHistory_pageLoaded",VERSIONNUMBER:"0.8",baseTitle:"@@@",originalTitle:null,blankURL:"blank.html?",listener:null,waitTime:200,currentWaitTime:0,currentLocation:null,iframe:null,safariHistoryStartPoint:null,safariStack:null,safariLength:null,ignoreLocationChange:null,fireOnNewListener:null,firstLoad:null,ieAtomicLocationChange:null,addEventListener:function(c,b,a){if(c.addEventListener){c.addEventListener(b,a,false)}else{if(c.attachEvent){c.attachEvent("on"+b,function(){a(window.event)})}}},createIE:function(a){this.waitTime=400;var b=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var e="rshHistoryFrame";var c='<iframe frameborder="0" id="'+e+'" style="'+b+'" src="'+this.blankURL+a+'"></iframe>';document.write(c);this.iframe=document.getElementById(e)},createOpera:function(){this.waitTime=400;var a='<img src="javascript:location.href=\'javascript:dhtmlHistory.checkLocation();\';" style="'+historyStorage.hideStyles+'" />';document.write(a)},createSafari:function(){var e="rshSafariForm";var c="rshSafariStack";var b="rshSafariLength";var a=historyStorage.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var h=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var g=(historyStorage.debugMode?"width:800px;height:20px;border:1px solid black;margin:0;padding:0;":historyStorage.hideStyles);var f='<form id="'+e+'" style="'+a+'"><textarea style="'+h+'" id="'+c+'">[]</textarea><input type="text" style="'+g+'" id="'+b+'" value=""/></form>';document.write(f);this.safariStack=document.getElementById(c);this.safariLength=document.getElementById(b);if(!historyStorage.hasKey(this.PAGELOADEDSTRING)){this.safariHistoryStartPoint=history.length;this.safariLength.value=this.safariHistoryStartPoint}else{this.safariHistoryStartPoint=this.safariLength.value}},getCurrentLocation:function(){var a=(this.isSafari?this.getSafariState():this.getCurrentHash());return a},getCurrentHash:function(){var b=window.location.href;var a=b.indexOf("#");return(a>=0?b.substr(a+1):"")},getSafariStack:function(){var a=this.safariStack.value;return historyStorage.fromJSON(a)},getSafariState:function(){var a=this.getSafariStack();var b=a[history.length-this.safariHistoryStartPoint-1];return b},putSafariState:function(b){var a=this.getSafariStack();a[history.length-this.safariHistoryStartPoint]=b;this.safariStack.value=historyStorage.toJSON(a)},fireHistoryEvent:function(b){var a=decodeURIComponent(b);var c=historyStorage.get(a);this.changeTitle(c);this.listener.call(null,a,c)},checkLocation:function(){if(!this.isIE&&this.ignoreLocationChange){this.ignoreLocationChange=false;return}if(!this.isIE&&this.ieAtomicLocationChange){return}var a=this.getCurrentLocation();if(a==this.currentLocation){return}this.ieAtomicLocationChange=true;if(this.isIE&&this.getIframeHash()!=a){this.iframe.src=this.blankURL+a}else{if(this.isIE){return}}this.currentLocation=a;this.ieAtomicLocationChange=false;this.fireHistoryEvent(a)},getIframeHash:function(){var b=this.iframe.contentWindow.document;var a=String(b.location.search);if(a.length==1&&a.charAt(0)=="?"){a=""}else{if(a.length>=2&&a.charAt(0)=="?"){a=a.substring(1)}}return a},removeHash:function(b){var a;if(b===null||b===undefined){a=null}else{if(b===""){a=""}else{if(b.length==1&&b.charAt(0)=="#"){a=""}else{if(b.length>1&&b.charAt(0)=="#"){a=b.substring(1)}else{a=b}}}}return a},iframeLoaded:function(a){if(this.ignoreLocationChange){this.ignoreLocationChange=false;return}var b=String(a.search);if(b.length==1&&b.charAt(0)=="?"){b=""}else{if(b.length>=2&&b.charAt(0)=="?"){b=b.substring(1)}}window.location.hash=b;this.fireHistoryEvent(b)}};window.historyStorage={setup:function(b){if(typeof b!=="undefined"){if(b.debugMode){this.debugMode=b.debugMode}if(b.toJSON){this.toJSON=b.toJSON}if(b.fromJSON){this.fromJSON=b.fromJSON}}var e="rshStorageForm";var g="rshStorageField";var a=this.debugMode?historyStorage.showStyles:historyStorage.hideStyles;var f=(historyStorage.debugMode?"width: 800px;height:80px;border:1px solid black;":historyStorage.hideStyles);var c='<form id="'+e+'" style="'+a+'"><textarea id="'+g+'" style="'+f+'"></textarea></form>';document.write(c);this.storageField=document.getElementById(g);if(typeof window.opera!=="undefined"){this.storageField.focus()}},put:function(a,c){var b=encodeURIComponent(a);this.assertValidKey(b);if(this.hasKey(a)){this.remove(a)}this.storageHash[b]=c;this.saveHashTable()},get:function(a){var c=encodeURIComponent(a);this.assertValidKey(c);this.loadHashTable();var b=this.storageHash[c];if(b===undefined){b=null}return b},remove:function(a){var b=encodeURIComponent(a);this.assertValidKey(b);this.loadHashTable();delete this.storageHash[b];this.saveHashTable()},reset:function(){this.storageField.value="";this.storageHash={}},hasKey:function(a){var b=encodeURIComponent(a);this.assertValidKey(b);this.loadHashTable();return(typeof this.storageHash[b]!=="undefined")},isValidKey:function(a){return(typeof a==="string")},showStyles:"border:0;margin:0;padding:0;",hideStyles:"left:-1000px;top:-1000px;width:1px;height:1px;border:0;position:absolute;",debugMode:false,storageHash:{},hashLoaded:false,storageField:null,assertValidKey:function(a){var b=this.isValidKey(a);if(!b&&this.debugMode){throw new Error("Please provide a valid key for window.historyStorage. Invalid key = "+a+".")}},loadHashTable:function(){if(!this.hashLoaded){var a=this.storageField.value;if(a!==""&&a!==null){this.storageHash=this.fromJSON(a);this.hashLoaded=true}}},saveHashTable:function(){this.loadHashTable();var a=this.toJSON(this.storageHash);this.storageField.value=a},toJSON:function(a){return a.toJSONString()},fromJSON:function(a){return a.parseJSON()}};myDeco.starRating={ratings:{},init:function(b){b=Object.isElement(b)?b:document.body;var a=b.select(".star-rating");a._each(function(e){if(!e.id||!e.hasClassName("use_ajax")){e.select("li a").invoke("observe","click",myDeco.starRating.starClickSimple);return}var f=e.id.split("-");var c={ctype:f[0],object_id:f[1],canRate:false,rate_type:"rating"};myDeco.starRating.ratings[e.id]=c});if(Object.keys(myDeco.starRating.ratings).length==0){return}new Ajax.Request(myDeco.urls.canRateMulti,{parameters:{ratings:$H(myDeco.starRating.ratings).toJSON()},method:"post",onSuccess:function(e){var c=e.responseText.evalJSON();if(c.success){myDeco.starRating.ratings=c.ratings;$H(myDeco.starRating.ratings)._each(function(f){rating=$(f.key);info=f.value;if(info.canRate){rating.select("li a")._each(function(g){g.observe("click",myDeco.starRating.starClickAjax.bindAsEventListener(g,rating))})}else{myDeco.starRating.handleBlocked(rating)}})}},onFailure:function(c){myDeco.starRating.ratings._each(function(e){rating=$(e.key);myDeco.starRating.handleBlocked(rating)})}})},handleBlocked:function(c){var b=myDeco.starRating.ratings[c.id],a=c.up("form").down(".new-rating-message");if(!b.canRate){c.addClassName("inactive");if(a){a.hide()}if(b.score!=null){myDeco.starRating.setScore(b.ctype,b.score)}}},starClickSimple:function(a){a.stop();var b=myDeco.starRating.getDataFromId(this.id);myDeco.starRating.setScore(b.rating,b.score)},getDataFromId:function(b){var a=b.split("-");return{rating:a[0],score:a.slice(-1)}},starClickAjax:function(c,b){c.stop();var a=myDeco.starRating.ratings[b.id];if(!a.canRate){return}var e=myDeco.starRating.getDataFromId(this.id)["score"];new Ajax.Request(myDeco.urls.setScore,{parameters:{content_type:a.ctype,value:e,object_id:a.object_id},method:"post",onSuccess:function(m){var g=m.responseText.evalJSON();if(g.success){var k=$("votes-"+a.ctype),f=b.up("form").down(".new-rating-message");if(k){var l=(parseInt(k.innerHTML)||0)+1;k.update(l);k.removeClassName("empty");var h=$("avg-rating-"+a.ctype);if(h){var j=Math.round((window.parseInt(h.readAttribute("rel"))*(l-1)+window.parseInt(e))/l);h.src=h.src.replace(/\d+\.png$/,j+".png")}}if(f){f.hide()}myDeco.starRating.setScore(a.ctype,e);b.addClassName("inactive");myDeco.starRating.ratings[ratingId]["canRate"]=false}}})},setScore:function(a,b){$(a+"-rating-input-"+b).checked=true;$(a+"-stars").setStyle({width:20*b+"%"});message=$(a+"-rated-message");if(message){message.show()}}};addLoadEvent(myDeco.starRating.init);myDeco.Util={};myDeco.Util.searchSliderDecorators={price:[myDeco.settings.LOCALECONV.currency_symbol,"start"],dimension:["cm","end"]};myDeco.Util.decorateString=function(b,a,e){if(b==""){return""}var c=a[0];if(b.indexOf(c)!=-1||e){b=b.replace(c,"")}else{switch(a[1]){case"end":b+=c;break;case"start":b=c+b;break}}return b};myDeco.Util.classNameSubstr=function(b,c){if(!b){return null}b=$(b);var a=[];b.className.split(" ").each(function(e,f){if(e.indexOf(c)!=-1){a.push(e)}});if(a.length==1){a=a[0]}return a};myDeco.Util.classNameGetValue=function(e,f){e=$(e);if(!myDeco.Util.classNameSubstr){return null}var b=myDeco.Util.classNameSubstr(e,f);if(!(b instanceof Array)){b=[b]}for(var c=0,a=b.length;c<a;c++){b[c]=b[c].replace(f,"")}if(b.length==1){b=b[0]}return b};myDeco.Util._regexpCache=$H();myDeco.Util._getClassRegExp=function(a){if(!myDeco.Util._regexpCache[a]){myDeco.Util._regexpCache[a]=new RegExp("\\b"+a+"\\b")}return myDeco.Util._regexpCache[a]};myDeco.Util.fastAddClassName=function(a,c){var b=myDeco.Util._getClassRegExp(c);if(!a.className.match(b)){a.className+=" "+c}};myDeco.Util.fastRemoveClassName=function(a,c){var b=myDeco.Util._getClassRegExp(c);a.className=a.className.replace(b,"")};myDeco.Util.extendSearchElements=function(){Element.addMethods({classNameGetValue:myDeco.Util.classNameGetValue,fastAddClassName:myDeco.Util.fastAddClassName,fastRemoveClassName:myDeco.Util.fastRemoveClassName})};myDeco.Util.extendSearchElements();myDeco.search={json:$H({curfacets:$A()}),baseJson:null,refiners:$A(),controls:$H(),lastControlUid:null,activeAjaxCalls:0,loaderNodes:null,renderCallbacks:$H(),rshLastRawLocation:null,disableRsh:myDeco.disableRsh||false,fromRsh:false,rshRenderQuery:function(b){var a=$H(b.toQueryParams());myDeco.search.controls.each(function(h){var c=h.key;h=h.value;if(typeof(h.setView)=="function"){var f=a.get(c)?a.get(c):null;if(h.uid=="results-sort"){f=a.get("sort")||null}if(h.uid=="view-switch"){f=a.get("view")||null}try{h.setView(f,"query",false)}catch(g){console.warn(h.uid+' setView() raised exception: "'+g,'".\nData ',f)}}});myDeco.search.renderCallbacks.set("rshRenderQuery",function(){})},rshListener:function(b){var a;if(b==""){b=a=myDeco.search.JSONtoQuery(myDeco.search.baseJson)}else{a=unescape(b)}myDeco.search.fromRsh=true;myDeco.search.renderCallbacks.set("rshRenderQuery",function(){return myDeco.search.rshRenderQuery(a)});myDeco.search.doSearch(a);myDeco.search.rshLastRawLocation=escape(a)||b},rshCheckLocation:function(a){if(a&&a!=myDeco.search.rshLastRawLocation){myDeco.search.rshListener(a)}},rshInit:function(){window.dhtmlHistory.initialize();window.dhtmlHistory.fireOnNewListener=false;myDeco.search.rshCheckLocation(window.dhtmlHistory.getCurrentLocation());window.dhtmlHistory.addListener(myDeco.search.rshListener)},location2coords:function(a,c,b){new Ajax.Request(myDeco.urls.ws.location_to_coords,{method:"get",parameters:"location="+encodeURIComponent(a),onSuccess:function(e){if(typeof c=="function"){c(e.responseText.evalJSON()[0].coord)}},onFailure:function(e){if(typeof b=="function"){b(e.responseText.evalJSON().error)}}})},updateJSON:function(a){var b=a[0];a=a[1];if(a instanceof Array){myDeco.search.json.set(b,$A(a).clone())}else{myDeco.search.json.set(b,a)}},JSONtoQuery:function(a){return $H(a).toQueryString()},createCallback:function(){try{myDeco.search.loadersShow(true)}catch(a){console.warn("ajax onCreate exception: "+a);myDeco.search.loadersShow(false)}},completeCallback:function(b){try{if(myDeco.search.activeAjaxCalls==b.request.options.id){myDeco.search.processResponse(b)}}catch(a){console.warn("ajax onComplete exception: "+a);myDeco.search.loadersShow(false)}},doSearch:function(e,b){myDeco.search.activeAjaxCalls++;var a={method:"get",parameters:e,evalJSON:true,sanitizeJSON:false,onCreate:myDeco.search.createCallback,onComplete:myDeco.search.completeCallback,id:myDeco.search.activeAjaxCalls};var c=new Ajax.Request("ajax/",a);if(!myDeco.search.fromRsh&&!myDeco.search.disableRsh){window.dhtmlHistory.add(e)}myDeco.search.fromRsh=false},showError:function(){myDeco.search.loadersShow(false);console.warn(arguments)},processResponse:function(c){try{var a=c.responseText.evalJSON()}catch(b){myDeco.search.showError(b);return}if(200==c.status&&a.success){myDeco.search.renderSearchResults(a);myDeco.search.renderCallbacks.each(function(h){var f=h.value;if(typeof f=="function"){try{f()}catch(g){console.warn('myDeco.search.renderCallbacks item "'+h.key+'" raised exception: "'+g+'"')}}});myDeco.search.omniture(a.omniture_data||"")}else{myDeco.search.showError(a.error.type,a.error.message)}myDeco.search.outlet_overlay_init();myDeco.search.loadersShow(false);$("body").fire("updated:search")},loadersShow:function(a){if(a){myDeco.search.loaderNodes.each(function(b){b.removeClassName("ajax-loader-hidden")})}else{myDeco.search.loaderNodes.each(function(b){b.addClassName("ajax-loader-hidden")})}},renderSearchResults:function(a){var b=function(c){var f=$A(["facet_","tags"]);var g=true;f.each(function(h){if(c.indexOf(h)==0){g=false}});var e=(c!=myDeco.search.lastControlUid)||g;return e};$H(a).each(function(j){var m=myDeco.search.controls.get(j.key)||"";m.uid=m.uid||"";if(m&&typeof(m.setView)=="function"&&b(m.uid)){try{m.setView(j.value,"json",false)}catch(l){console.warn(m.uid+" setView() raised exception "+l,m.parentId,m)}}if(j.key=="query_info"){var h=$("debugSearchQueryCount"),f=$("debugSearchQueryTable");if(f&&h){var g=f.down("tbody"),k=parseInt(h.innerHTML)+1,c="<tr><td>"+k+"</td><td>"+j.value[0].url+"</td><td>"+j.value[0].time+"</td></tr>";h.innerHTML=k;g.insert(c)}}});myDeco.search.lastControlUid=null},outlet_overlay_init:function(){if(myDeco.username){$$(".outlet-members-only").each(function(a){a.fastRemoveClassName("outlet-members-only")})}},init:function(){myDeco.search.outlet_overlay_init();if(!myDeco.settings.SEARCH_NO_PROCESS_URL_PARAMS){var b=(location.href.match(/\?([^\#]*)/) instanceof Array)?location.href.match(/\?([^\#]*)/)[1]:"";$H(b.toQueryParams()).each(function(e){if(e[0].match(/^WL_/)){e[1]=escape(escape(e[1]))}myDeco.search.updateJSON(e)})}if(myDeco.search.json.get("prefdb")){myDeco.search.updateJSON(["db",myDeco.search.json.get("prefdb")])}var c=myDeco.search.json.get("query");if(c){if(c instanceof Array){c.each(function(e){e=e.replace(/\+/," ")})}else{c=c.replace(/\+/," ")}myDeco.search.json.set("query",c)}myDeco.search.loaderNodes=$$(".ajax-loader");$$(".search-refiner-item").each(function(f,e){myDeco.search.refiners.push(new myDeco.search.Refiner(f,e))});var a=$$(".search-refiner-reset");if(a&&myDeco.search.refiners.length>3){a=a[0];a.removeClassName("hidden");a.observe("click",function(f){cleanJsonItems=["curfacets","db","prefdb","query","startrank","view","count"];myDeco.search.json.keys()._each(function(e){if(cleanJsonItems.indexOf(e)==-1){myDeco.search.json.unset(e)}});myDeco.search.controls._each(function(e){e.value.setView([],"uiReset",false)});myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))})}myDeco.search.baseJson=$H();myDeco.search.json.each(function(e){myDeco.search.baseJson.set(e.key,e.value)});if(!myDeco.search.disableRsh){myDeco.search.rshInit()}if(myDeco.resultRanking){myDeco.search.renderCallbacks.set("RRInit",myDeco.resultRanking.initRatingBoxes)}if($("facet_distance")){myDeco.search.renderCallbacks.set("show_distance_facets",function(){if($("facet_distance").firstDescendant()){$("distance-facets-block").show()}if($$(".result-item").length==0){$("view-on-map-link-js").hide()}else{if($("postcode").getValue()){$("view-on-map-link-js").show()}}})}if(myDeco.wl){myDeco.search.renderCallbacks.whiteLabelingResize=myDeco.wl.update}},omniture:function(a){}};if(!myDeco.search.disableRsh){window.dhtmlHistory.create({toJSON:function(a){return Object.toJSON(a)},fromJSON:function(a){return a.evalJSON()},blankURL:"/common/js/blank.html?"})}myDeco.search.Refiner=function(c,a){if(!c){return}var b=this;this.refinerNode=$(c);this.index=a;this.controls=$H();this.toggleNode=$(this.refinerNode.select(".search-refiner-item-heading")[0]);this.isCollapsed=false;this.resetNode=$(this.refinerNode.select(".search-refiner-reset")[0]).show();this.controlsNodes=$A(this.refinerNode.select(".search-refiner-control"));this.toggle=function(g,f){if(g){b.isCollapsed=!b.refinerNode.hasClassName("search-refiner-item-collapsed");if(b.isCollapsed){b.refinerNode.fastAddClassName("search-refiner-item-collapsed");b.manualCollapsed=true}else{b.refinerNode.fastRemoveClassName("search-refiner-item-collapsed")}return false}if(f){b.refinerNode.fastAddClassName("search-refiner-item-collapsed")}else{if(!b.isCollapsed){b.refinerNode.fastRemoveClassName("search-refiner-item-collapsed")}}};this.reset=function(g){Event.stop(g);var f=false;b.controls.each(function(e){e=e.value;f=f||e.setView(null,"uiReset",false)});if(f){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}return false};this.init=function(){if(b.refinerNode.hasClassName("search-refiner-item-collapse")&&b.toggleNode){Event.observe(b.toggleNode,"click",b.toggle)}if(b.resetNode){Event.observe(b.resetNode,"click",b.reset)}if(b.refinerNode.hasClassName("search-refiner-item-collapsed")){b.isCollapsed=true}b.controlsNodes.each(function(e){var f=b.controlFactory(e);if(f){b.controls.set(f.uid,f);myDeco.search.controls.set(f.uid,f)}else{console.log("There is no control for node: ",e)}})};this.controlFactory=function(e){if(e.hasClassName("search-refiner-colors")){e.id="facet_"+e.id;myDeco.search.json.get("curfacets").push(e.id);return new myDeco.search.ColourControl(e,b.ColourControlCallback,b.index)}if(e.hasClassName("list-scrollable")){e.id="facet_"+e.id;myDeco.search.json.get("curfacets").push(e.id);return new myDeco.search.FacetControl(e,b.facetListCallback,b.index)}if(e.hasClassName("refiner-sponsored")){e.id="facet_"+e.id;return new myDeco.search.SponsoredSuppliersControl(e,b.SponsoredSuppliersControlCallback,b.index)}if(e.hasClassName("refiner-tagcloud")){return new myDeco.search.RefinerTagList(e,b.refinerTagListCallback,b.index)}if(e.hasClassName("refiner-filter")){e.id="filter_"+e.id;return new myDeco.search.Filter(e,b.refinerFilterCallback)}if(e.hasClassName("search-pager")){e.id="paginator";var f=$("paginator-bottom");return new myDeco.search.PaginatorControl(e,b.paginatorCallback,f)}if(e.hasClassName("control-viewswitch")){return new myDeco.search.ViewSwitchControl(e,b.viewSwitchCallback)}if(e.hasClassName("refiner-comparesort")){return new myDeco.search.CompareSorterControl(e,b.compareSorterCallback)}if(e.hasClassName("refiner-type-dimension")){return new myDeco.search.DimensionsControl(e,b.dimensionsCallback)}if(e.hasClassName("search-refiner-results")){e.id="items";return new myDeco.search.ResultsRenderControl(e)}if(e.hasClassName("wizard-find-button")){return new myDeco.search.WizardFindControl(e,b.wizardFindButtonCallback)}if(e.hasClassName("location-refiner")){return new myDeco.search.GeosearchControl(e,b.geosearchCallback)}return null};this.facetListCallback=function(h,e,f){if(f=="moar"){var g=myDeco.search.JSONtoQuery(myDeco.search.json)+"&facet_count="+h[0]+","+h[1]+"&rtype=facet";myDeco.search.doSearch(g,true);return}myDeco.search.updateJSON(h);myDeco.search.updateJSON(["startrank",0]);if(f!="control"){if(h[1].length!=0){myDeco.search.lastControlUid=h[0]}else{myDeco.search.lastControlUid=null}if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}}};this.refinerTagListCallback=function(g,e,f){myDeco.search.updateJSON(g);myDeco.search.updateJSON(["startrank",0]);if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}};this.SponsoredSuppliersControlCallback=function(g,e,f){myDeco.search.updateJSON(g);myDeco.search.updateJSON(["startrank",0]);if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}};this.ColourControlCallback=function(g,e,f){myDeco.search.updateJSON(g);myDeco.search.updateJSON(["startrank",0]);if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}};this.refinerFilterCallback=function(f,e){f[1]=$A([f[1]]).compact();myDeco.search.updateJSON(f);myDeco.search.updateJSON(["startrank",0]);if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}};this.paginatorCallback=function(g,f,e){myDeco.search.updateJSON(["startrank",g[1]]);if(e){myDeco.search.renderCallbacks.set("paginatorScoll",function(){$(document.body).scrollTo();myDeco.search.renderCallbacks.set("paginatorScoll",null)})}if(f){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json)+"&rtype=short")}};this.viewSwitchCallback=function(f,e){myDeco.search.updateJSON(["startrank",0]);myDeco.search.updateJSON(["view",f]);switch(f){case"images":myDeco.search.updateJSON(["count",40]);break;case"details":default:myDeco.search.updateJSON(["count",20]);break}if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json)+"&rtype=short")}};this.compareSorterCallback=function(f,e){myDeco.search.updateJSON(["sort",f]);if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json)+"&rtype=short")}};this.dimensionsCallback=function(f,e){myDeco.search.updateJSON(f);if(e){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}};this.wizardFindButtonCallback=function(e){myDeco.search.json.set("curfacets",[]);document.location.href=e+"&"+unescape(myDeco.search.JSONtoQuery(myDeco.search.json))};this.geosearchCallback=function(f,e){myDeco.search.updateJSON(["distance_centre",f.join(",")]);if(e!=false){myDeco.search.doSearch(myDeco.search.JSONtoQuery(myDeco.search.json))}};this.init()};addLoadEvent(myDeco.search.init,true);myDeco.search.CompareSorterControl=function(a,c){var b=this;if(!a){return}this.node=$(a);this.uid=this.node.id;this.sorters=this.node.select(".sort");this.previousSorter=null;this.callback=c;this.show=function(e,f){if(!e&&f&&b.node.hasClassName("refiner-comparesort-hidden")){b.setView(f,"control",false)}if(e){b.node.fastAddClassName("refiner-comparesort-hidden")}else{b.node.fastRemoveClassName("refiner-comparesort-hidden")}};this.setView=function(f,g,e){switch(g){case"json":break;case"query":case"control":this.sorters.each(function(k){if(k.classNameGetValue("sort-direction-")!=""){k.fastRemoveClassName("sort-direction-asc");k.fastRemoveClassName("sort-direction-desc")}if(f){var j=f.substring(1,f.length);var h=(f.charAt(0)=="+")?"asc":"desc";if(k.hasClassName("compare-column-"+j)){k.addClassName("sort-direction-"+h);b.previousSorter=k}}});break;case"uiReset":break}};this.getView=function(){var e="";this.sorters.each(function(f){if(f.hasClassName("sort-direction-asc")||f.hasClassName("sort-direction-desc")){e=((f.classNameGetValue("sort-direction-")=="asc")?"+":"-")+f.classNameGetValue("compare-column-")}});return e};this.sorterClick=function(g){Event.stop(g);var h=Event.findElement(g,"div");if(b.previousSorter&&b.previousSorter!=h){b.previousSorter.fastRemoveClassName("sort-direction-asc");b.previousSorter.fastRemoveClassName("sort-direction-desc")}if(h.hasClassName("sort-direction-asc")){h.fastRemoveClassName("sort-direction-asc");h.fastAddClassName("sort-direction-desc")}else{if(h.hasClassName("sort-direction-desc")){h.fastRemoveClassName("sort-direction-desc");h.fastAddClassName("sort-direction-asc")}}if(!h.hasClassName("sort-direction-asc")&&!h.hasClassName("sort-direction-desc")){h.fastAddClassName("sort-direction-desc")}b.previousSorter=h;var f=((h.classNameGetValue("sort-direction-")=="asc")?"+":"-")+h.classNameGetValue("compare-column-");b.callback(f,true);return false};this.init=function(){this.sorters.each(function(e){Event.observe(e,"click",b.sorterClick)})};this.init()};myDeco.search.ViewSwitchControl=function(a,c){var b=this;if(!a){return}this.node=$(a);this.uid=this.node.id;this.callback=c;this.items=this.node.select(".control-viewswitch-item");this.selectedItem=null;this.setView=function(g,h,e){var f="";switch(h){case"json":break;case"query":case"control":b.items.each(function(j){if(j.viewMode==g){b.activateSwitch(j);f=j.viewMode}else{b.deactivateSwitch(j)}});if(f==""){b.activateSwitch(b.items[0]);f=b.items[0].viewMode}break;case"uiReset":break}b.callback(f,false)};this.getView=function(){for(var e=0;e<b.items.length;e++){if(b.isActiveSwitch(b.items[e])){return b.items[e].viewMode}}};this.itemClick=function(g){Event.stop(g);var f=Event.findElement(g,"a");if(b.selectedItem!=f){b.deactivateSwitch(b.selectedItem);b.activateSwitch(f);b.callback(f.viewMode,true)}return false};this.isActiveSwitch=function(e){return(e.hasClassName("control-viewswitch-state-"+e.viewMode+"-active")==true)};this.activateSwitch=function(e){b.selectedItem=e;return e.fastAddClassName("control-viewswitch-state-"+e.viewMode+"-active")};this.deactivateSwitch=function(e){return e.fastRemoveClassName("control-viewswitch-state-"+e.viewMode+"-active")};this.init=function(){this.items.each(function(e){Event.observe(e,"click",b.itemClick);e.viewMode=e.classNameGetValue("control-viewswitch-item-");if(b.isActiveSwitch(e)){b.selectedItem=e}})};this.init()};myDeco.search.PaginatorControl=function(a,e,b){var c=this;if(!a){return}this.node=$(a);this.uid=this.node.id;this.cloneNode=$(b);this.statusNode=this.node.parentNode.select(".search-results-showing")[0];this.callback=e;this.itemClick=function(h){Event.stop(h);var f=Event.findElement(h,"a");var g=f.sRank;c.callback([c.uid,g],true,f.doScroll);return false};this.setView=function(g,h,f){switch(h){case"json":c.statusNode.innerHTML=g[0];c.node.innerHTML=c.cloneNode.innerHTML=g[1];c.init(c.node);c.init(c.cloneNode,true);break;case"query":case"control":break;case"uiReset":break}};this.init=function(h,f){var g=$A(h.getElementsByTagName("a"));g.each(function(j){Event.observe(j,"click",c.itemClick);j.sRank=j.href.toQueryParams()["startrank"];j.doScroll=f})};this.init(c.node);this.init(c.cloneNode,true)};myDeco.search.Filter=function(a,c){var b=this;if(!a){return}this.node=$(a);this.uid=this.node.id;this.callback=c;this.setView=function(g,h,e){switch(h){case"json":case"query":case"control":case"uiReset":g=g||"";var f=null;b.items.each(function(j){var k=j.select(".checkbox")[0];k.checked=false;switch(k.name){case"is_3d":k.checked=(g=="1");break;case"discounted":k.checked=(g=="1");break;case"design_boutique":case"clearance":k.checked=(g==k.value);break;default:k.checked=false}if(k.checked){f=k.value}});break}b.callback([b.uid,f],e)};this.items=this.node.select(".form-item");this.itemClick=function(j){var f=Event.findElement(j,"input");var h=f.checked?f.value:null;if(b.uid=="filter_discounted"&&window.location.href.match(/\/special-offers\//)){var g=window.location.href.replace(/filter_discounted%3D1%26/,"");window.location=g.href.replace(/\/special-offers\//,"/");return}if(b.uid=="filter_clearance"&&window.location.href.match(/\/outlet\//)){var g=window.location.href.replace(/filter_clearance%3D1%26/,"");window.location=g.replace(/\/outlet\//,"/");return}b.callback([b.uid,h],true)};this.init=function(){this.items.each(function(f){var e=f.select(".checkbox")[0];Event.observe(e,"click",b.itemClick);if(e.checked){b.callback([b.uid,e.value],false)}})};this.init()};myDeco.search.SponsoredSuppliersControl=function(a,e,c){var b=this;if(!a){return}this.data=$A();this.node=$(a);this.uid=this.node.id;this.parentId=c;this.callback=e;this.items=$H();this.collapseParent=function(g){var f=myDeco.search.refiners[b.parentId].refinerNode;if(g){f.fastAddClassName("search-refiner-item-hidden")}else{f.fastRemoveClassName("search-refiner-item-hidden")}};this.itemClick=function(g){Event.stop(g);var f=Event.findElement(g,"a");if(!f.iValue){f.iValue=b._getFacetValueFromQuery(f.href)}if(f.hasClassName("retailer-active")){f.fastRemoveClassName("retailer-active");b.data=b.data.without(f.iValue)}else{f.fastAddClassName("retailer-active");b.data.push(f.iValue)}b.callback([b.uid,b.data],true,"click");return false};this.setView=function(g,h,f){switch(h){case"json":b.node.innerHTML=g;b.collapseParent((g==""));break;case"uiReset":b.node.innerHTML="";b.data=[];break}b.callback([b.uid,b.data],false,h)};this.getView=function(){return b.data};this._getFacetValueFromQuery=function(g){var h=g.toQueryParams()["facet"];if(typeof(h)=="string"){h=$A([h])}var f="";h.each(function(j){var k=j.split(",");if("facet_"+k[0]==b.uid){f=j}});return f};this.init=function(){Event.observe(this.node,"click",b.itemClick)};this.init()};myDeco.search.RefinerTagList=function(a,e,c){var b=this;if(!a){return}this.node=$(a);this.uid=this.node.id;this.data=$A();this.parentId=c;this.callback=e;this.collapse=function(g){var f=myDeco.search.refiners[b.parentId];if(typeof(f.toggle)=="function"){f.toggle(null,g)}};this.items=$A(this.node.getElementsByTagName("li"));this.setView=function(k,l,g){b.data=$A();var h=b.items.length;var f=function(t,q){var r=$(t.getElementsByTagName("a")[0]);r.href="?tag="+q[0];r.innerHTML=q[0];t.iValue=q[0];t.className="tag"+q[1]};var j=function(r,u,t){if(!r.hasClassName("tag-selected")){var q;t.each(function(v){q=[v.key,v.value];throw $break});if(q){f(r,q);t.unset(q[0])}else{r.fastAddClassName("tag-hidden")}}else{if(t.get(u)){t.unset(u)}}};var o=function(q,t,r){if(r.indexOf(t)!=-1){q.fastAddClassName("tag-selected");q.fastRemoveClassName("tag-hidden");r=r.without(t)}};var m=function(q){q.fastRemoveClassName("tag-selected")};var p=false;var n=function(r){var q=false;if(!r.hasClassName("tag-hidden")){if(r.hasClassName("tag-selected")){r.fastRemoveClassName("tag-selected");q=true}}return q};b.items.each(function(r){var t=r.iValue;switch(l){case"json":k=$H(k);j(r,t,k);break;case"query":case"control":if(k instanceof Array){k=$A(k)}else{k=$A([k])}m(r);o(r,t,k);break;case"uiReset":var q=n(r);if(q){p=q}break}if(r.hasClassName("tag-selected")){b.data.push(t)}if(r.hasClassName("tag-hidden")){h--}});b.collapse(h==0);if(l!="json"){b.callback([b.uid,b.data],g)}return p};this.itemClick=function(g){Event.stop(g);var f=Event.findElement(g,"li");if(!f.hasClassName("tag-selected")){b.data.push(f.iValue);f.fastAddClassName("tag-selected")}else{f.fastRemoveClassName("tag-selected");b.data=b.data.without(f.iValue)}b.callback([b.uid,b.data],true);return false};this.init=function(){this.items.each(function(g){Event.observe(g,"click",b.itemClick);var f=$(g.getElementsByTagName("a")[0]);g.iValue=f.innerHTML})};this.init()};myDeco.search.ResultsRenderControl=function(a){if(!a){return}var b=this;this.node=$(a);this.uid=this.node.id;this.imagesViewInit=function(){b.node.select(".result-item-mode-image").each(function(f){var e=f.select(".result-item-bubble")[0];var c=new InfoPopupsClass(f,e,{position:"top",timeout:200,outOfViewport:true})})};this.imagesViewCleanup=function(){$$("body > .result-item-bubble").each(function(c){c.remove()})};this.detailsViewInit=function(){b.detailsViewCleanup();if($$("#search-results .result-item").length>1){var c=myDeco.search.controls.get("results-sort");c.show()}};this.detailsViewCleanup=function(){var c=myDeco.search.controls.get("results-sort");c.show(true)};this.setView=function(f,g){if(myDeco.search.controls.get("view-switch")){var e=myDeco.search.controls.get("view-switch").getView()}switch(g){case"json":b.node.innerHTML=f;var c=myDeco.search.json.get("geolocation")||myDeco.readCookie("geolocation");if(c){$$(".result-item-content .object-search-location")._each(function(h){h.innerHTML=c})}break}switch(e){case"images":b.detailsViewCleanup();b.imagesViewInit();break;case"details":b.imagesViewCleanup();b.detailsViewInit();break;default:break}};this.init=function(){b.setView(null,"init")};this.init()};myDeco.search.FacetControl=function(a,e,c){if(!a){return}var b=this;this.node=a;this.uid=this.node.id;this.parentId=c;this.data=$A();this.callback=e;this.loadedFacets=0;this.collapseParent=function(f){if(typeof(myDeco.search.refiners[b.parentId].toggle)=="function"){myDeco.search.refiners[b.parentId].toggle(null,f)}};this.itemHover=function(g){var f=Event.element(g);if(!f){return}if(g.type=="mouseover"){f.fastAddClassName("list-scrollable-hover")}if(g.type=="mouseout"){f.fastRemoveClassName("list-scrollable-hover")}};this.itemClick=function(h){Event.stop(h);var f=Event.findElement(h,"li");if(!f){return false}if(f.hasClassName("all-retailers")){b.loadedFacets+=20;b.callback([b.uid,b.loadedFacets],true,"moar");return false}if(b.node.hasClassName("radiobutton-facet-js")){f.siblings()._each(function(j){b.data=$A();j.removeClassName("list-scrollable-selected")})}f.toggleClassName("list-scrollable-selected");var g=f.classNameGetValue("value:");if(f.hasClassName("list-scrollable-selected")){b.data.push(g)}else{b.data=b.data.without(g)}b.callback([b.uid,b.data],true,"click");return false};this.refreshData=function(){b.data=$A();Element.childElements(b.node)._each(function(f){if(f.hasClassName("list-scrollable-selected")){b.data.push(f.classNameGetValue("value:"))}})};this.setView=function(h,j,f){var g=false;switch(j){case"json":b.node.innerHTML=h;b.collapseParent((h==""));b.refreshData();break;case"uiReset":b.node.innerHTML="";b.data=[];g=true;break}b.callback([b.uid,b.data],false,j);return g};this.getView=function(){return b.data};this.init=function(){Event.observe(b.node,"click",b.itemClick);Event.observe(b.node,"mouseover",b.itemHover);Event.observe(b.node,"mouseout",b.itemHover);b.refreshData()};this.init()};myDeco.search.ColourControl=function(a,e,c){if(!a){return}var b=this;this.node=a;this.uid=this.node.id;this.parentId=c;this.data=$A();this.items=$A();this.enabledItems=0;this.callback=e;this.collapseParent=function(f){if(typeof(myDeco.search.refiners[b.parentId].toggle)=="function"){myDeco.search.refiners[b.parentId].toggle(null,f)}};this.itemClick=function(h){Event.stop(h);var f=Event.findElement(h,"a");if(!f.hasClassName("list-scrollable-disabled")){f.toggleClassName("list-scrollable-selected");var g=f.href.toQueryParams()["facet"];if(f.hasClassName("list-scrollable-selected")){b.data.push(g)}else{b.data=b.data.without(g)}b.callback([b.uid,b.data],true,"click")}return false};this.selectItem=function(g,f){if(f.indexOf(g.iValue)!=-1){g.fastAddClassName("list-scrollable-selected");g.fastRemoveClassName("list-scrollable-disabled");b.enabledItems++;f.without(g.iValue);b.data.push(g.iValue)}};this.cleanItem=function(f){if(f.hasClassName("list-scrollable-selected")){f.fastRemoveClassName("list-scrollable-selected");b.data.without(f.iValue);return true}return false};this.resetItem=function(f){f.fastRemoveClassName("list-scrollable-selected");b.data.without(f.iValue)};this.updateItem=function(f,g){b.enabledItems++;if(f.hasClassName("list-scrollable-selected")){b.data.push(f.iValue);return}if(g.get(unescape(f.iValue))){f.fastRemoveClassName("list-scrollable-disabled")}else{f.fastAddClassName("list-scrollable-disabled");b.enabledItems--}};this.setView=function(j,k,f){b.data=$A();b.enabledItems=0;j=j||"";if(typeof j=="string"){j=[j]}if(j instanceof Array){j=$A(j)}else{j=$H(j)}if(k=="query"){for(var h=0;h<j.length;h++){j[h]=escape(j[h])}}var g=false;switch(k){case"json":b.items.each(function(l){b.updateItem(l,j)});break;case"control":case"query":b.items.each(function(l){b.resetItem(l);b.selectItem(l,j)});break;case"uiReset":b.items.each(function(l){if(b.cleanItem(l)){g=g||true}});break}b.collapseParent(b.enabledItems==0);if(k!="json"){b.callback([b.uid,b.data],f,k)}return g};this.getView=function(){return b.data};this.init=function(){var f=this.node.getElementsByTagName("a");for(var g=0;g<f.length;g++){var h=$(f[g]);h.iValue=h.href.toQueryParams()["facet"];b.items.push(h);if(!h.hasClassName("list-scrollable-disabled")){b.enabledItems++}}Event.observe(b.node,"click",b.itemClick)};this.init()};myDeco.search.DimensionsControl=function(a,c){if(!a){return}var b=this;this.node=a;this.uid=this.node.id;this.callback=c;this.handleTimeout=null;this.setView=function(h,j,e){var g=false;switch(j){case"uiReset":if((b.inputs.element_min.value!=b.inputs.initial.min)||(b.inputs.element_max.value!=b.inputs.initial.max)){g=true;b.inputs.element_min.value=b.inputs.min=b.inputs.initial.min;b.inputs.element_max.value=b.inputs.max=b.inputs.initial.max;b.callback([b.data[0],[]],e)}break;case"query":if(h){var f=h.split(",");b.inputs.element_min.value=b.inputs.min=f[0];b.inputs.element_max.value=b.inputs.max=f[1]}break}return g};this.onKeyUp=function(h){var g=1000;if(h.keyCode==Event.KEY_RETURN){g=1}var f=function(){b.handleEdited(Event.findElement(h,"input"))};if(b.handleTimeout){window.clearTimeout(b.handleTimeout)}b.handleTimeout=window.setTimeout(f,g)};this.handleEdited=function(e){if(isNaN(e.value)){return e.value=b.inputs[e.ind]}e.value=parseInt(e.value);if(e.value){if(b.inputs[e.ind]!=e.value){b.inputs[e.ind]=e.value;b.data[1]=[b.inputs.min,b.inputs.max].join(",");if((b.inputs.initial.min==b.inputs.min)&&(b.inputs.initial.max==b.inputs.max)){b.callback([b.data[0],[]],true)}else{b.callback(b.data,true)}}}};this._get_inputs=function(e){var g={initial:{}};var f=/^\w+_(min|max)$/;e.each(function(h){var j=f.exec(h.name);h.ind=j[1];g.initial[h.ind]=g[h.ind]=h.value;g["element_"+h.ind]=h;g.name=name});return g};this.init=function(e){b.inputs=b._get_inputs(e);for(name in b.inputs){b.data=[b.uid,[b.inputs.min,b.inputs.max].join(",")];Event.observe(b.inputs.element_min,"keyup",b.onKeyUp);Event.observe(b.inputs.element_max,"keyup",b.onKeyUp)}};this.init(this.node.select("input.refiner-value"))};myDeco.search.WizardFindControl=function(a,b){if(!a){return}obj=this;this.node=a;this.url=this.node.href;this.callback=b;this.submit=function(c){Event.stop(c);obj.callback(obj.url)};this.init=function(){Event.observe(obj.node,"click",obj.submit)};this.init()};myDeco.search.GeosearchControl=function(a,c){if(!a){return}var b=this;this.node=a;this.uid=this.node.id;this.callback=c;this.data=$A();this.postcodeField=$("postcode");this.errorMessage=$$(".distance .error")[0];this.viewOnMapLink=$("view-on-map-link-js");this.facetsBlock=$("distance-facets-block");this.facetsList=$$("#distance-facets-block .search-refiner-control")[0];this.init=function(){Event.observe(b.node,"submit",b.submit);b.postcodeField.observe("focus",b.clearFieldError).observe("click",b.clearFieldError).observe("keyup",function(){if(this.getValue()&&$$(".result-item").length){b.viewOnMapLink.show()}else{b.viewOnMapLink.hide()}});b.viewOnMapLink.observe("click",b.viewOnMap);b.readData();if(b.facetsList.firstDescendant()){b.facetsBlock.show()}};this.clearFieldError=function(){this.removeClassName("error")};this.viewOnMap=function(f){if(f){Event.stop(f)}if(!b.saveData()){return false}b.resetErrorState();myDeco.search.location2coords(b.postcode,function(g){var e=myDeco.search.json.clone();e.unset("curfacets");e.unset("db");e.unset("display");e.set("view","geo_products");e.set("distance_centre",g.join(","));e.set("geolocation",b.postcode);location.href="?"+unescape(myDeco.search.JSONtoQuery(e))},b.handleLoc2coordsError)};this.submit=function(f){Event.stop(f);if(!b.saveData()){return false}b.resetErrorState();myDeco.search.location2coords(b.postcode,b.callback,b.handleLoc2coordsError)};this.handleLoc2coordsError=function(e){b.postcodeField.addClassName("error");b.errorMessage.show().innerHTML=e.message};this.resetErrorState=function(){b.errorMessage.hide();b.postcodeField.removeClassName("error")};this.setView=function(g,h,e){var f=false;switch(h){case"uiReset":b.postcodeField.clear();myDeco.search.json.set("geolocation","");myDeco.eraseCookie("geolocation");myDeco.search.controls.get("facet_distance").setView([],"uiReset",false);b.facetsBlock.hide();b.viewOnMapLink.hide();f=true;b.callback([],e);break;case"json":console.log("GeosearchControl.setView, json");case"query":b.readData();break}return f};this.getView=function(){return b.data};this.saveData=function(){b.postcode=b.postcodeField.getValue();if(!b.postcode){return false}myDeco.createCookie("geolocation",b.postcode,60);return true};this.readData=function(){var e=myDeco.search.json.get("geolocation")||myDeco.readCookie("geolocation");if(e){$$(".result-item-content .object-search-location")._each(function(f){f.innerHTML=e});b.postcode=e;b.postcodeField.setValue(e);b.viewOnMapLink.show()}};this.init()};if(typeof Prototype==="undefined"){throw ("SkyByte.js requires Prototype.js library")}var SkyByte={Version:"1.2"};var Browser={cursor:function(a){document.body.style.cursor=a}};function debug(a){s="";for(var b in a){s+=b+":"+a[b]+"\n"}alert(s)}var Mouse={callbacks:[],x:0,y:0,event:null,start:function(b){b=b||"global";if(this.callbacks.length===0){this.eventMouseMove=this._mouseMove.bindAsEventListener(this);Event.observe(document,"mousemove",this.eventMouseMove)}var a=this.callbacks.detect(function(c){return c==b});if(!a){this.callbacks.push(b)}},stop:function(a){a=a||"global";this.callbacks=this.callbacks.reject(function(b){return b==a});if(this.callbacks.length===0){Event.stopObserving(document,"mousemove",this.eventMouseMove)}},_mouseMove:function(b){var c,a;this.x=Event.pointerX(b);this.y=Event.pointerY(b);this.event=b;if(Mouse.callbacks){for(a=0,len=Mouse.callbacks.length;a<len;++a){c=Mouse.callbacks[a];if(typeof c=="object"){c._mouseMove(b)}}}}};Object.extend(Element,{add:function(e,a,c,b){var f;for(var g in b){val=b[g];if(g=="clone"){f=val.cloneNode(true)}}if(!f){f=document.createElement(e)}for(g in a){f.setAttribute(g,a[g])}for(g in c){f.style[g.camelize()]=c[g]}for(g in b){val=b[g];switch(g){case"a":if(typeof val=="string"){val=$(val)}f=val.appendChild(f);break;case"c":f.className=val;break;case"id":f.id=val;break;case"txt":if(f.tagName=="TABLE"||f.tagName=="TFOOT"||f.tagName=="THEAD"||f.tagName=="TR"){}else{if(f.innerHTML){f.innerHTML=val}}break}}return f},rem:function(a){if(a.parentNode){d=a.parentNode.removeChild(a);return d}},putAt:function(a,b){if(a){a.style.left=b.x+"px";a.style.top=b.y+"px"}},showAt:function(a,b){if(a){a.style.left=b.x+"px";a.style.top=b.y+"px";a.style.width=b.w+"px";a.style.height=b.h+"px"}},xywh:function(a){var b=Element.getDimensions(a);var e=Position.cumulativeOffset(a);return{x:e[0],y:e[1],w:b.width,h:b.height}},wh:function(a){var b=Element.getDimensions(a);return{w:b.width,h:b.height}}});if(typeof Prototype=="undefined"){throw ("SkyByteDD.js requires Prototype.js library")}else{if(typeof SkyByte=="undefined"){throw ("SkyByteDD.js requires SkyByte.js library")}}var SkyByteDD={Version:"1.2"};var Drags={drag:null,drags:[],hide:{x:-100,y:-100,w:0,h:0},register:function(a){if(this.drags.length===0){Mouse.start(this);this.eventMouseUp=this._mouseUp.bindAsEventListener(this);Event.observe(document,"mouseup",this.eventMouseUp);if(navigator.appVersion.match(/\bMSIE\b/)){this.eventMouseOver=this._mouseOver.bindAsEventListener(this);this.eventMouseOut=this._mouseOut.bindAsEventListener(this)}this.div=Element.add("div",{},{},{a:document.body,c:"dragmove"});document.body.onselectstart=function(){return false}}this.drags.push(a)},unregister:function(a){this.drags=this.drags.reject(function(b){return b.element==a})},is_drag:function(a){return this.drags.detect(function(b){return b.element==a})},destroy:function(){var b,c,a;if(this.drags.length>0){this.drag=null;$A(this.drags).each(function(e){if(typeof e.destroy==="function"){e.destroy()}})}if(this.drags.length===0&&this.div){Element.rem(this.div);Mouse.stop(this);Event.stopObserving(document,"mouseup",this.eventMouseUp)}},destroyDD:function(a){var b=Drags.is_drag(a);if(!b){return}if(b.destroy){b.destroy()}},activate:function(a,b){this.drag=a;this.drag.IE=false;if(this.drag.element.tagName==="IMG"&&navigator.appVersion.match(/\bMSIE\b/)){this.drag.IE=true;Event.observe(document,"mouseover",this.eventMouseOver);Event.observe(document,"mouseout",this.eventMouseOut)}},deactivate:function(){if(this.drag&&this.drag.IE){Event.stopObserving(document,"mouseover",this.eventMouseOver);Event.stopObserving(document,"mouseout",this.eventMouseOut)}this.drag=null},_mouseOver:function(a){var b=Drops.is_drop(Event.element(a));if(b){Drops.drop=b;Drops.show_frame()}},_mouseOut:function(a){if(Drops&&Drops.lastActive&&typeof Drops.lastActive.options.mouseOut==="function"){Drops.lastActive.options.mouseOut(Drops.lastActive.element);Drops.lastActive=null}Drops.hide_frame();Drops.drop=null},_mouseMove:function(a){if(!this.drag){return}this.drag._mouseMove(a);Event.stop(a)},_mouseUp:function(a){if(!this.drag){return}this.drag._mouseUp(a);this.drag=null;Event.stop(a)}};var Drag=Class.create();Drag.prototype={initialize:function(a){this.element=$(a);this.options=Object.extend({self:false,classname:"drag",caption:"",affect:false},arguments[1]||{});if(this.options.self){this.options.self=this.element;Element.makePositioned(this.options.self)}this.eventMouseDown=this._mouseDown.bindAsEventListener(this);Event.observe(this.element,"mousedown",this.eventMouseDown);Drags.register(this)},destroy:function(){Event.stopObserving(this.element,"mousedown",this.eventMouseDown);Drags.unregister(this.element)},currentDelta:function(){return([parseInt(Element.getStyle(this.options.self,"left")||"0"),parseInt(Element.getStyle(this.options.self,"top")||"0")])},_mouseDown:function(b){var a,c,f;if(this.options.self){a=this.options.self;c=[Mouse.x,Mouse.y];f=Position.cumulativeOffset(a);this.offset=[0,1].map(function(e){return(c[e]-f[e])})}Browser.cursor("default");Drops.affect=this.options.affect;Drags.activate(this);Event.stop(b)},_mouseUp:function(b){var a;Element.putAt(Drags.div,Drags.hide);if(this.element&&Drops.drop&&(this.element!=Drops.drop.element)){if(Drops.drop.options.accept===this.element.tagName){a=true}if(Drops.drop.options.accept===""){a=true}if(Drops.affect){a=true}if(a){if(typeof Drops.drop.options.mouseUp==="function"){Drops.drop.options.mouseUp(Drops.drop.element,this.element)}}}Drops.affect=false;Drags.deactivate();Drops.hide_frame();Resizes.activate(this.element)},_mouseMove:function(g){Resizes.hide_frame();var k,h,j,l,c,b,f,a,m;if(this.options.self){f=this.options.self;j=Position.cumulativeOffset(f);h=this.currentDelta();j[0]-=h[0];j[1]-=h[1];l=[];l.push(Mouse.x);l.push(Mouse.y);c=[0,1].map(function(e){return(l[e]-j[e]-this.offset[e])}.bind(this));b=f.style;b.left=c[0]+"px";b.top=c[1]+"px"}else{a=Drags.div;a.className="dragmove";m=this.options.caption;if(this.element&&Drops.drop&&(this.element!=Drops.drop.element)){if(Drops.drop.options.accept&&Drops.drop.options.accept===this.element.tagName){k=true}if(Drops.drop.options.accept===""){k=true}if(Drops.affect){k=true}if(k){cap=Drops.drop.options.caption;if(cap){m=cap}a.className=this.options.classname;if(typeof Drops.drop.options.mouseOver==="function"){Drops.lastActive=Drops.drop;Drops.drop.options.mouseOver(Drops.drop.element,this.element)}}}a.innerHTML=m;Mouse.x+=15;Mouse.y+=10;Element.putAt(a,Mouse)}}};var Drops={lastActive:null,frameactive:null,drop:null,affect:null,drops:[],hide:{x:-10,y:-10,w:0,h:0},register:function(a){if(this.drops.length===0){this.L=Element.add("div",{},{},{a:document.body,c:"drop"});this.R=Element.add("div",{},{},{a:document.body,c:"drop"});this.T=Element.add("div",{},{},{a:document.body,c:"drop"});this.B=Element.add("div",{},{},{a:document.body,c:"drop"})}this.drops.push(a)},unregister:function(a){this.hide_frame();this.drops=this.drops.reject(function(b){return b.element==a})},destroy:function(){var b,c,a;if(this.drops.length>0){Element.rem(this.L);Element.rem(this.R);Element.rem(this.T);Element.rem(this.B);$A(this.drops).each(function(e){if(typeof e.destroy==="function"){e.destroy()}});this.drop=null;this.hide_frame()}},is_drop:function(a){return this.drops.detect(function(b){return b.element==a})},show_frame:function(){this.frameactive=true;var a=Element.xywh(this.drop.element);this.L.className=this.drop.options.classname;this.R.className=this.drop.options.classname;this.T.className=this.drop.options.classname;this.B.className=this.drop.options.classname;Element.showAt(this.L,{x:a.x,y:a.y,w:1,h:a.h});Element.showAt(this.R,{x:(a.x+a.w),y:a.y,w:1,h:a.h});Element.showAt(this.T,{x:a.x,y:a.y,w:a.w,h:1});Element.showAt(this.B,{x:a.x,y:(a.y+a.h),w:a.w,h:1})},hide_frame:function(){if(this.drops.length>0&&this.frameactive){this.frameactive=false;Element.showAt(this.L,this.hide);Element.showAt(this.R,this.hide);Element.showAt(this.T,this.hide);Element.showAt(this.B,this.hide)}}};var Drop=Class.create();Drop.prototype={initialize:function(a){this.element=$(a);this.options=Object.extend({caption:"",classname:"drop",accept:this.element.tagName,mouseUp:null,mouseOver:null,mouseOut:null},arguments[1]||{});this.eventMouseOver=this._mouseOver.bindAsEventListener(this);Event.observe(this.element,"mouseover",this.eventMouseOver);this.eventMouseOut=this._mouseOut.bindAsEventListener(this);Event.observe(this.element,"mouseout",this.eventMouseOut);Drops.register(this)},destroy:function(){Event.stopObserving(this.element,"mouseover",this.eventMouseOver);Event.stopObserving(this.element,"mouseout",this.eventMouseOut);Drops.unregister(this.element)},_mouseOver:function(a){var b=Drops.is_drop(Event.element(a));if(!b){b=Drops.is_drop(this.element)}if(b){Drops.drop=b;Drops.show_frame()}Event.stop(a)},_mouseOut:function(a){if(Drops.lastActive&&typeof Drops.lastActive.options.mouseOut==="function"){Drops.lastActive.options.mouseOut(Drops.lastActive.element);Drops.lastActive=null}Drops.drop=null;Drops.hide_frame();Event.stop(a)}};if(!Prototype){throw ("SkyByteRS.js requires Prototype.js library")}else{if(!SkyByte){throw ("SkyByteRS.js requires SkyByte.js library")}else{if(!SkyByteDD){throw ("SkyByteRS.js requires SkyByteDD.js library")}}}var SkyByteRS={Version:"1.2.3"};var Resizes={resizes:[],resize:{},resizing:null,frameactive:false,register:function(a){if(this.resizes.length===0){this.L=Element.add("div",{},{position:"absolute",top:"-50px",left:"-50px"},{c:"resizel",a:document.body});this.R=Element.add("div",{},{position:"absolute",top:"-50px",left:"-50px"},{c:"resizer",a:document.body});this.T=Element.add("div",{},{position:"absolute",top:"-50px",left:"-50px"},{c:"resizet",a:document.body});this.B=Element.add("div",{},{position:"absolute",top:"-50px",left:"-50px"},{c:"resizeb",a:document.body});this.box=Element.add("div",{},{position:"absolute",top:"-50px",left:"-50px"},{c:"resizebox",a:document.body});this.TM=Element.add("div",{},{cursor:"s-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.TM);this.BM=Element.add("div",{},{cursor:"s-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.BM);this.LT=Element.add("div",{},{cursor:"se-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.LT);this.LM=Element.add("div",{},{cursor:"e-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.LM);this.LB=Element.add("div",{},{cursor:"ne-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.LB);this.RT=Element.add("div",{},{cursor:"sw-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.RT);this.RM=Element.add("div",{},{cursor:"e-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.RM);this.RB=Element.add("div",{},{cursor:"nw-resize",overflow:"hidden",position:"absolute",top:"-50px",left:"-50px"},{c:"resizeknob",a:document.body});Drags.register(this.RB);this.eventMouseDown=this._mouseDown.bindAsEventListener(this);this.eventMouseOver=this._mouseOver.bindAsEventListener(this);this.eventMouseOut=this._mouseOut.bindAsEventListener(this);this.eventClick=this._observeClick.bindAsEventListener(this);Event.observe(document,"mousedown",this.eventClick);Event.observe(this.TM,"mousedown",this.eventMouseDown);Event.observe(this.TM,"mouseover",this.eventMouseOver);Event.observe(this.TM,"mouseout",this.eventMouseOut);Event.observe(this.BM,"mousedown",this.eventMouseDown);Event.observe(this.BM,"mouseover",this.eventMouseOver);Event.observe(this.BM,"mouseout",this.eventMouseOut);Event.observe(this.LT,"mousedown",this.eventMouseDown);Event.observe(this.LT,"mouseover",this.eventMouseOver);Event.observe(this.LT,"mouseout",this.eventMouseOut);Event.observe(this.LM,"mousedown",this.eventMouseDown);Event.observe(this.LM,"mouseover",this.eventMouseOver);Event.observe(this.LM,"mouseout",this.eventMouseOut);Event.observe(this.LB,"mousedown",this.eventMouseDown);Event.observe(this.LB,"mouseover",this.eventMouseOver);Event.observe(this.LB,"mouseout",this.eventMouseOut);Event.observe(this.RT,"mousedown",this.eventMouseDown);Event.observe(this.RT,"mouseover",this.eventMouseOver);Event.observe(this.RT,"mouseout",this.eventMouseOut);Event.observe(this.RM,"mousedown",this.eventMouseDown);Event.observe(this.RM,"mouseover",this.eventMouseOver);Event.observe(this.RM,"mouseout",this.eventMouseOut);Event.observe(this.RB,"mousedown",this.eventMouseDown);Event.observe(this.RB,"mouseover",this.eventMouseOver);Event.observe(this.RB,"mouseout",this.eventMouseOut)}this.resizes.push(a)},unregister:function(a){this.hide_frame();this.resizes=this.resizes.reject(function(b){return b.element==a})},destroyRS:function(a){var b=Resizes.is_resize(a);if(!b){return}if(b.destroy){b.destroy()}},destroy:function(){var a,b;if(this.resizes.length>0){$A(this.resizes).each(function(c){if(c.destroy){c.destroy()}})}if(this.resizes.length===0&&this.TM){this.resize={};Element.rem(this.T);Element.rem(this.B);Element.rem(this.L);Element.rem(this.R);Drags.unregister(this.TM);Element.rem(this.TM);Drags.unregister(this.TB);Element.rem(this.BM);Drags.unregister(this.LT);Element.rem(this.LT);Drags.unregister(this.LM);Element.rem(this.LM);Drags.unregister(this.LB);Element.rem(this.LB);Drags.unregister(this.RT);Element.rem(this.RT);Drags.unregister(this.RM);Element.rem(this.RM);Drags.unregister(this.RB);Element.rem(this.RB);Event.stopObserving(this,"mousedown",this.eventMouseDown);Event.stopObserving(this,"mouseover",this.eventMouseOver);Event.stopObserving(this,"mouseout",this.eventMouseOut);Event.stopObserving(document,"mousedown",this.eventClick)}this.hide_frame()},is_resize:function(a){return this.resizes.detect(function(b){return b.element===a})},activate:function(a){var b=Resizes.is_resize(a);if(!b){return}Resizes.resize=b;this.element=a;if(typeof(Resizes.resize.options.selectElement)==="function"){Resizes.resize.options.selectElement(this.element)}this.show_frame(Element.xywh(this.element))},deactivate:function(){if(typeof(this.resize.options.unselectElement)==="function"){this.resize.options.unselectElement(this.element)}this.hide_frame()},show_frame:function(e){var a=this.resize.options;if(this.resizes.length==0){return}this.frameactive=true;if(a.indicator==true){this.box.innerHTML=e.w+"x"+e.h;var b=Element.wh(this.box);Element.putAt(this.box,{x:e.x+(e.w/2)-(b.w/2),y:e.y+(e.h/2)-(b.h/2)})}Element.showAt(this.L,{x:e.x,y:e.y,w:1,h:e.h});Element.showAt(this.R,{x:(e.x+e.w),y:e.y,w:1,h:e.h});Element.showAt(this.T,{x:e.x,y:e.y,w:e.w,h:1});Element.showAt(this.B,{x:e.x,y:(e.y+e.h),w:e.w,h:1});Element.putAt(this.TM,{x:e.x+((e.w/2)-4),y:(e.y-2)});Element.putAt(this.BM,{x:e.x+((e.w/2)-4),y:e.y+(e.h-4)});Element.putAt(this.LT,{x:(e.x-3),y:(e.y-2)});Element.putAt(this.LM,{x:(e.x-3),y:e.y+((e.h/2)-3)});Element.putAt(this.LB,{x:(e.x-3),y:e.y+(e.h-4)});Element.putAt(this.RT,{x:e.x+(e.w-4),y:(e.y-2)});Element.putAt(this.RM,{x:e.x+(e.w-4),y:e.y+((e.h/2)-3)});Element.putAt(this.RB,{x:e.x+(e.w-4),y:e.y+(e.h-4)})},hide_frame:function(){if(this.frameactive){this.show_frame({x:-500,y:-500,w:10,h:10});this.frameactive=false}},border:function(e){var b=Element.add("div",{},{background:"red",border:"0",margin:0,padding:0,visibility:"hidden"},{clone:e,a:e.parentNode});var a=Element.wh(b);var c=Element.wh(e);Element.rem(b);return{w:(c.w-a.w),h:(c.h-a.h)}},minmax:function(p){var v,q,n;var y=0;var m=0;var x=0;var l=0;var h=Element.add("div",{},{},{a:p.parentNode});var t=Element.wh(h);Element.rem(h);var f=Element.add("div",{},{position:"absolute",top:"0px",left:"0px"},{a:document.body});var e=Element.add("div",{},{width:"auto",height:"auto","float":"left"},{clone:p,txt:"",a:f});var j=Element.xywh(f);var c=Element.xywh(e);Element.rem(f);var w=c.x;var r=c.y;var u=j.w-(c.x+c.w);var b=j.h-(c.y+c.h);var g=Element.xywh(p);var k=p.getElementsByTagName("*");for(v=0,len=k.length;v<len;++v){q=k[v];n=Element.xywh(q);mW=n.x+n.w;mH=n.y+n.h;if(mW>y){y=mW}if(mH>m){m=mH}}var z={};z.minW=y-g.x;if(z.minW<0){z.minW=0}z.minH=m-g.y;if(z.minH<0){z.minH=0}z.maxW=(t.w-u-w);z.maxH=(t.h-r-b);z.w=g.w;z.h=g.h;if(z.maxW<=0||z.maxW<g.w){z.maxW=t.w}if(z.maxH<=0||z.maxH<g.h){z.maxH=0}return z},_mouseMove:function(l){var k;if(!this.init){return}var f=this.resize.options;var t=this.init.mouse;var h=this.init.wh;var o=this.init.border;var q=this.init.minmax;var b=f.proportional;var j=(t.x-Mouse.x);var g=(t.y-Mouse.y);if(h.h>0){k=(h.w/h.h)}else{k=1}var n=this.init.lefttop.x;var m=this.init.lefttop.y;var a=(h.w-j);var r=(h.h-g);switch(this.init.knob){case this.RM:a=(h.w-j);r=h.h;break;case this.LM:a=(h.w+j);r=h.h;break;case this.TM:a=h.w;r=(h.h+g);break;case this.BM:a=h.w;r=(h.h-g);break;case this.LB:a=(h.w+j);break;case this.LT:a=(h.w+j);r=(h.h+g);break;case this.RT:r=(h.h+g);break;case this.RB:break}if(q.minW){if(a<=q.minW){a=q.minW}}if(q.minH){if(r<=q.minH){r=q.minH}}if(q.maxW){if(a>=q.maxW){a=q.maxW}}if(q.maxH){if(r>=q.maxH){r=q.maxH}}switch(this.init.knob){case this.LB:case this.LT:case this.RT:case this.RB:if(b){if(a/r>k){a=Math.round(k*r)}else{r=Math.round(a/k)}}}switch(this.init.knob){case this.LM:n-=a-h.w;break;case this.TM:m-=r-h.h;break;case this.LB:n-=a-h.w;break;case this.LT:n-=a-h.w;m-=r-h.h;break;case this.RT:m-=r-h.h;break}a=a-o.w;if(a<0){a=0}r=r-o.h;if(r<0){r=0}if(n<0){n=0}if(m<0){m=0}if(Prototype.Browser.IE&&this.element.rotation%2==1){this.element.style.width=r+"px";this.element.style.height=a+"px"}else{this.element.style.width=a+"px";this.element.style.height=r+"px"}this.element.style.left=n+"px";this.element.style.top=m+"px";var c=Element.xywh(this.element);this.show_frame(c);if(typeof f.mouseMove==="function"){f.mouseMove(this.element)}return c},_mouseDown:function(b){var f=Event.element(b);Event.stop(b);if(f.className!="resizeknob"){return}switch(f){case this.TM:Drags.activate(this);break;case this.BM:Drags.activate(this);break;case this.LT:Drags.activate(this);break;case this.LM:Drags.activate(this);break;case this.LB:Drags.activate(this);break;case this.RT:Drags.activate(this);break;case this.RM:Drags.activate(this);break;case this.RB:Drags.activate(this);break}var c=this.minmax(this.element);var a=this.resize.options;if(a.min.w){c.minW=a.min.w}if(a.min.h){c.minH=a.min.h}if(a.max.w){c.maxW=a.max.w}if(a.max.h){c.maxH=a.max.h}this.init={lefttop:{x:parseInt(this.element.style.left),y:parseInt(this.element.style.top)},knob:f,mouse:{x:Mouse.x,y:Mouse.y},wh:{w:c.w,h:c.h},border:this.border(this.element),minmax:c};if(typeof a.startResize==="function"){a.startResize(this.element)}},_observeClick:function(f){var a,c;if(!this.frameactive){return}var g=Event.element(f);var b=Resizes.is_resize(this.element);if(b){c=b.options.click;if(c==true){if(g!=this.element&&!g.hasClassName("ignore-clicks")){this.deactivate()}}else{if(c==false){}else{a=$(c);if(a==g){this.deactivate()}}}}},_mouseUp:function(b){var a=this.resize.options;if(typeof a.endResize==="function"){a.endResize(this.element)}this.init=false;Browser.cursor("default")},_mouseOver:function(a){var b=Event.element(a);if(b.className==="resizeknob"){b.style.background="black"}},_mouseOut:function(a){var b=Event.element(a);if(b.className==="resizeknob"){b.style.background="white"}}};var Resize=Class.create();Resize.prototype={initialize:function(a){this.element=$(a);this.options=Object.extend({event:"mousedown",startResize:null,mouseMove:null,selectElement:null,unselectElement:null,endResize:null,indicator:true,click:true,proportional:true,min:{w:0,h:0},max:{w:0,h:0}},arguments[1]||{});if(typeof this.options.min==="function"){this.options.min=this.options.min(this);if(!this.options.min){this.options.min={w:0,h:0}}}if(typeof this.options.max==="function"){this.options.max=this.options.max(this);if(!this.options.max){this.options.max={w:0,h:0}}}this.eventActivate=this.activate.bindAsEventListener(this);Event.observe(this.element,this.options.event,this.eventActivate);Resizes.register(this)},activate:function(b){var a=Event.element(b);Resizes.activate(a)},destroy:function(){Event.stopObserving(this.element,this.options.event,this.eventActivate);Resizes.unregister(this.element)}};if(typeof(Window)=="undefined"){var Window=function(){}}if(!window.postMessage){function getLocationFragment(a){var b=(a.href).replace("##","#").split("#")[1];return decodeURIComponent(b||"")}function setLocationFragment(a,c,b){var g="#"+(encodeURIComponent(c||""));try{a.hash=g;if(a.hash!=g){throw true}}catch(f){a.href=(b||"")+g}}Window.prototype.postMessage=function(b,a){setLocationFragment(this.location,b,a)};if(!window.dispatchEvent&&!window.fireEvent){window._messageObservers=[];if(window.attachEvent){window._attachEvent=window.attachEvent;window.attachEvent=function(b,a){if(b=="onmessage"){return window._messageObservers.push(a)}else{return window._attachEvent(b,a)}}}}function checkForMessages(){var e=getLocationFragment(window.location);if(e){setLocationFragment(window.location,null);if(document.createEvent){var c=document.createEvent("Event");c.initEvent("message",true,false);c.data=e;if(window.dispatchEvent){window.dispatchEvent(c)}else{document.dispatchEvent(c)}}else{if(document.createEventObject){var c=document.createEventObject();c.type="message";c.data=e;if(window.fireEvent){window.fireEvent(c)}else{if(window._messageObservers){var f=window._messageObservers,a=f.length;for(var b=0;b<a;b++){f[b](c)}}}}}}}setInterval(checkForMessages,200)}Window.postMessage=function(c,b,a){if(c.postMessage){return c.postMessage(b,a)}else{return Window.prototype.postMessage.call(c,b,a)}};