if(Object.isUndefined(Effect))throw"dragdrop.js requires including script.aculo.us' effects.js library";
var Droppables={drops:[],remove:function(a){this.drops=this.drops.reject(function(b){return b.element==$(a)})},add:function(a,b){a=$(a);var c=Object.extend({greedy:true,hoverclass:null,tree:false},b||{});if(c.containment){c._containers=[];b=c.containment;Object.isArray(b)?b.each(function(d){c._containers.push($(d))}):c._containers.push($(b))}if(c.accept)c.accept=[c.accept].flatten();Element.makePositioned(a);c.element=a;this.drops.push(c)},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(a,b){var c;c=b.tree?a.treeNode:a.parentNode;return b._containers.detect(function(d){return c==d})},isAffected:function(a,b,c){return c.element!=b&&(!c._containers||this.isContained(b,c))&&(!c.accept||Element.classNames(b).detect(function(d){return c.accept.include(d)}))&&Position.within(c.element,a[0],a[1])},deactivate:function(a){a.hoverclass&&Element.removeClassName(a.element,a.hoverclass);this.last_active=null},activate:function(a){a.hoverclass&&
Element.addClassName(a.element,a.hoverclass);this.last_active=a},show:function(a,b){if(this.drops.length){var c,d=[];this.drops.each(function(e){Droppables.isAffected(a,b,e)&&d.push(e)});if(d.length>0)c=Droppables.findDeepestChild(d);this.last_active&&this.last_active!=c&&this.deactivate(this.last_active);if(c){Position.within(c.element,a[0],a[1]);c.onHover&&c.onHover(b,c.element,Position.overlap(c.overlap,c.element));c!=this.last_active&&Droppables.activate(c)}}},fire:function(a,b){if(this.last_active){Position.prepare();
if(this.isAffected([Event.pointerX(a),Event.pointerY(a)],b,this.last_active))if(this.last_active.onDrop){this.last_active.onDrop(b,this.last_active.element,a);return true}}},reset:function(){this.last_active&&this.deactivate(this.last_active)}},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){var b=[Event.pointerX(a),Event.pointerY(a)];if(!(this._lastPointer&&this._lastPointer.inspect()==b.inspect())){this._lastPointer=b;this.activeDraggable.updateDrag(a,b)}}},endDrag:function(a){if(this._timeout){clearTimeout(this._timeout);this._timeout=
null}if(this.activeDraggable){this._lastPointer=null;this.activeDraggable.endDrag(a);this.activeDraggable=null}},keyPress:function(a){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(a,b,c){this[a+"Count"]>0&&this.observers.each(function(d){d[a]&&d[a](a,b,c)});b.options[a]&&
b.options[a](b,c)},_cacheObserverCallbacks:function(){["onStart","onEnd","onDrag"].each(function(a){Draggables[a+"Count"]=Draggables.observers.select(function(b){return b[a]}).length})}},Draggable=Class.create({initialize:function(a,b){var c={handle:false,reverteffect:function(d,e,f){var g=Math.sqrt(Math.abs(e^2)+Math.abs(f^2))*0.02;new Effect.Move(d,{x:-f,y:-e,duration:g,queue:{scope:"_draggable",position:"end"}})},endeffect:function(d){var e=Object.isNumber(d._opacity)?d._opacity:1;new Effect.Opacity(d,
{duration:0.2,from:0.7,to:e,queue:{scope:"_draggable",position:"end"},afterFinish:function(){Draggable._dragging[d]=false}})},zindex:1E3,revert:false,quiet:false,scroll:false,scrollSensitivity:20,scrollSpeed:15,snap:false,delay:0};if(!b||Object.isUndefined(b.endeffect))Object.extend(c,{starteffect:function(d){d._opacity=Element.getOpacity(d);Draggable._dragging[d]=true;new Effect.Opacity(d,{duration:0.2,from:d._opacity,to:0.7})}});b=Object.extend(c,b||{});this.element=$(a);if(b.handle&&Object.isString(b.handle))this.handle=
this.element.down("."+b.handle,0);if(!this.handle)this.handle=$(b.handle);if(!this.handle)this.handle=this.element;if(b.scroll&&!b.scroll.scrollTo&&!b.scroll.outerHTML){b.scroll=$(b.scroll);this._isScrollChild=Element.childOf(this.element,b.scroll)}Element.makePositioned(this.element);this.options=b;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]))if(Event.isLeftClick(a))if(!((tag_name=Event.element(a).tagName.toUpperCase())&&(tag_name=="INPUT"||tag_name=="SELECT"||tag_name=="OPTION"||tag_name=="BUTTON"||tag_name=="TEXTAREA"))){var b=
[Event.pointerX(a),Event.pointerY(a)],c=Position.cumulativeOffset(this.element);this.offset=[0,1].map(function(d){return b[d]-c[d]});Draggables.activate(this);Event.stop(a)}},startDrag:function(a){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);this.element._originallyAbsolute=
this.element.getStyle("position")=="absolute";this.element._originallyAbsolute||Position.absolutize(this.element);this.element.parentNode.insertBefore(this._clone,this.element)}if(this.options.scroll)if(this.options.scroll==window){var b=this._getWindowScroll(this.options.scroll);this.originalScrollLeft=b.left;this.originalScrollTop=b.top}else{this.originalScrollLeft=this.options.scroll.scrollLeft;this.originalScrollTop=this.options.scroll.scrollTop}Draggables.notify("onStart",this,a);this.options.starteffect&&
this.options.starteffect(this.element)},updateDrag:function(a,b){this.dragging||this.startDrag(a);if(!this.options.quiet){Position.prepare();Droppables.show(b,this.element)}Draggables.notify("onDrag",this,a);this.draw(b);this.options.change&&this.options.change(this);if(this.options.scroll){this.stopScrolling();var c;if(this.options.scroll==window)with(this._getWindowScroll(this.options.scroll))c=[left,top,left+width,top+height];else{c=Position.page(this.options.scroll);c[0]+=this.options.scroll.scrollLeft+
Position.deltaX;c[1]+=this.options.scroll.scrollTop+Position.deltaY;c.push(c[0]+this.options.scroll.offsetWidth);c.push(c[1]+this.options.scroll.offsetHeight)}var d=[0,0];if(b[0]<c[0]+this.options.scrollSensitivity)d[0]=b[0]-(c[0]+this.options.scrollSensitivity);if(b[1]<c[1]+this.options.scrollSensitivity)d[1]=b[1]-(c[1]+this.options.scrollSensitivity);if(b[0]>c[2]-this.options.scrollSensitivity)d[0]=b[0]-(c[2]-this.options.scrollSensitivity);if(b[1]>c[3]-this.options.scrollSensitivity)d[1]=b[1]-
(c[3]-this.options.scrollSensitivity);this.startScrolling(d)}Prototype.Browser.WebKit&&window.scrollBy(0,0);Event.stop(a)},finishDrag:function(a,b){this.dragging=false;if(this.options.quiet){Position.prepare();var c=[Event.pointerX(a),Event.pointerY(a)];Droppables.show(c,this.element)}if(this.options.ghosting){this.element._originallyAbsolute||Position.relativize(this.element);delete this.element._originallyAbsolute;Element.remove(this._clone);this._clone=null}c=false;if(b)(c=Droppables.fire(a,this.element))||
(c=false);c&&this.options.onDropped&&this.options.onDropped(this.element);Draggables.notify("onEnd",this,a);if((a=this.options.revert)&&Object.isFunction(a))a=a(this.element);b=this.currentDelta();if(a&&this.options.reverteffect){if(c==0||a!="failure")this.options.reverteffect(this.element,b[1]-this.delta[1],b[0]-this.delta[0])}else this.delta=b;if(this.options.zindex)this.element.style.zIndex=this.originalZ;this.options.endeffect&&this.options.endeffect(this.element);Draggables.deactivate(this);
Droppables.reset()},keyPress:function(a){if(a.keyCode==Event.KEY_ESC){this.finishDrag(a,false);Event.stop(a)}},endDrag:function(a){if(this.dragging){this.stopScrolling();this.finishDrag(a,true);Event.stop(a)}},draw:function(a){var b=Position.cumulativeOffset(this.element);if(this.options.ghosting){var c=Position.realOffset(this.element);b[0]+=c[0]-Position.deltaX;b[1]+=c[1]-Position.deltaY}c=this.currentDelta();b[0]-=c[0];b[1]-=c[1];if(this.options.scroll&&this.options.scroll!=window&&this._isScrollChild){b[0]-=
this.options.scroll.scrollLeft-this.originalScrollLeft;b[1]-=this.options.scroll.scrollTop-this.originalScrollTop}c=[0,1].map(function(e){return a[e]-b[e]-this.offset[e]}.bind(this));if(this.options.snap)c=Object.isFunction(this.options.snap)?this.options.snap(c[0],c[1],this):Object.isArray(this.options.snap)?c.map(function(e,f){return(e/this.options.snap[f]).round()*this.options.snap[f]}.bind(this)):c.map(function(e){return(e/this.options.snap).round()*this.options.snap}.bind(this));var d=this.element.style;
if(!this.options.constraint||this.options.constraint=="horizontal")d.left=c[0]+"px";if(!this.options.constraint||this.options.constraint=="vertical")d.top=c[1]+"px";if(d.visibility=="hidden")d.visibility=""},stopScrolling:function(){if(this.scrollInterval){clearInterval(this.scrollInterval);this.scrollInterval=null;Draggables._lastScrollPointer=null}},startScrolling:function(a){if(a[0]||a[1]){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 a=new Date,b=a-this.lastScrolled;this.lastScrolled=a;if(this.options.scroll==window)with(this._getWindowScroll(this.options.scroll)){if(this.scrollSpeed[0]||this.scrollSpeed[1]){a=b/1E3;this.options.scroll.scrollTo(left+a*this.scrollSpeed[0],top+a*this.scrollSpeed[1])}}else{this.options.scroll.scrollLeft+=this.scrollSpeed[0]*b/1E3;this.options.scroll.scrollTop+=this.scrollSpeed[1]*b/1E3}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]*b/1E3;Draggables._lastScrollPointer[1]+=this.scrollSpeed[1]*b/1E3;if(Draggables._lastScrollPointer[0]<0)Draggables._lastScrollPointer[0]=0;if(Draggables._lastScrollPointer[1]<0)Draggables._lastScrollPointer[1]=0;this.draw(Draggables._lastScrollPointer)}this.options.change&&this.options.change(this)},
_getWindowScroll:function(a){var b,c,d;with(a.document){if(a.document.documentElement&&documentElement.scrollTop){b=documentElement.scrollTop;c=documentElement.scrollLeft}else if(a.document.body){b=body.scrollTop;c=body.scrollLeft}if(a.innerWidth){d=a.innerWidth;a=a.innerHeight}else if(a.document.documentElement&&documentElement.clientWidth){d=documentElement.clientWidth;a=documentElement.clientHeight}else{d=body.offsetWidth;a=body.offsetHeight}}return{top:b,left:c,width:d,height:a}}});
Draggable._dragging={};
var SortableObserver=Class.create({initialize:function(a,b){this.element=$(a);this.observer=b;this.lastValue=Sortable.serialize(this.element)},onStart:function(){this.lastValue=Sortable.serialize(this.element)},onEnd:function(){Sortable.unmark();this.lastValue!=Sortable.serialize(this.element)&&this.observer(this.element)}}),Sortable={SERIALIZE_RULE:/^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,sortables:{},_findRootElement:function(a){for(;a.tagName.toUpperCase()!="BODY";){if(a.id&&Sortable.sortables[a.id])return a;
a=a.parentNode}},options:function(a){if(a=Sortable._findRootElement($(a)))return Sortable.sortables[a.id]},destroy:function(a){if(a=Sortable.options(a)){Draggables.removeObserver(a.element);a.droppables.each(function(b){Droppables.remove(b)});a.draggables.invoke("destroy");delete Sortable.sortables[a.element.id]}},create:function(a,b){a=$(a);var c=Object.extend({element:a,tag:"li",dropOnEmpty:false,tree:false,treeTag:"ul",overlap:"vertical",constraint:"vertical",containment:a,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},b||{});this.destroy(a);var d={revert:true,quiet:c.quiet,scroll:c.scroll,scrollSpeed:c.scrollSpeed,scrollSensitivity:c.scrollSensitivity,delay:c.delay,ghosting:c.ghosting,constraint:c.constraint,handle:c.handle};if(c.starteffect)d.starteffect=c.starteffect;if(c.reverteffect)d.reverteffect=
c.reverteffect;else if(c.ghosting)d.reverteffect=function(g){g.style.top=0;g.style.left=0};if(c.endeffect)d.endeffect=c.endeffect;if(c.zindex)d.zindex=c.zindex;var e={overlap:c.overlap,containment:c.containment,tree:c.tree,hoverclass:c.hoverclass,onHover:Sortable.onHover},f={onHover:Sortable.onEmptyHover,overlap:c.overlap,containment:c.containment,hoverclass:c.hoverclass};Element.cleanWhitespace(a);c.draggables=[];c.droppables=[];if(c.dropOnEmpty||c.tree){Droppables.add(a,f);c.droppables.push(a)}(c.elements||
this.findElements(a,c)||[]).each(function(g,h){h=c.handles?$(c.handles[h]):c.handle?$(g).select("."+c.handle)[0]:g;c.draggables.push(new Draggable(g,Object.extend(d,{handle:h})));Droppables.add(g,e);if(c.tree)g.treeNode=a;c.droppables.push(g)});if(c.tree)(Sortable.findTreeElements(a,c)||[]).each(function(g){Droppables.add(g,f);g.treeNode=a;c.droppables.push(g)});this.sortables[a.id]=c;Draggables.addObserver(new SortableObserver(a,c.onUpdate))},findElements:function(a,b){return Element.findChildren(a,
b.only,b.tree?true:false,b.tag)},findTreeElements:function(a,b){return Element.findChildren(a,b.only,b.tree?true:false,b.treeTag)},onHover:function(a,b,c){if(!Element.isParent(b,a))if(!(c>0.33&&c<0.66&&Sortable.options(b).tree))if(c>0.5){Sortable.mark(b,"before");if(b.previousSibling!=a){c=a.parentNode;a.style.visibility="hidden";b.parentNode.insertBefore(a,b);b.parentNode!=c&&Sortable.options(c).onChange(a);Sortable.options(b.parentNode).onChange(a)}}else{Sortable.mark(b,"after");var d=b.nextSibling||
null;if(d!=a){c=a.parentNode;a.style.visibility="hidden";b.parentNode.insertBefore(a,d);b.parentNode!=c&&Sortable.options(c).onChange(a);Sortable.options(b.parentNode).onChange(a)}}},onEmptyHover:function(a,b,c){var d=a.parentNode,e=Sortable.options(b);if(!Element.isParent(b,a)){var f=Sortable.findElements(b,{tag:e.tag,only:e.only}),g=null;if(f){var h=Element.offsetSize(b,e.overlap)*(1-c);for(c=0;c<f.length;c+=1)if(h-Element.offsetSize(f[c],e.overlap)>=0)h-=Element.offsetSize(f[c],e.overlap);else{g=
h-Element.offsetSize(f[c],e.overlap)/2>=0?c+1<f.length?f[c+1]:null:f[c];break}}b.insertBefore(a,g);Sortable.options(d).onChange(a);e.onChange(a)}},unmark:function(){Sortable._marker&&Sortable._marker.hide()},mark:function(a,b){var c=Sortable.options(a.parentNode);if(!(c&&!c.ghosting)){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 d=
Position.cumulativeOffset(a);Sortable._marker.setStyle({left:d[0]+"px",top:d[1]+"px"});if(b=="after")c.overlap=="horizontal"?Sortable._marker.setStyle({left:d[0]+a.clientWidth+"px"}):Sortable._marker.setStyle({top:d[1]+a.clientHeight+"px"});Sortable._marker.show()}},_tree:function(a,b,c){for(var d=Sortable.findElements(a,b)||[],e=0;e<d.length;++e){var f=d[e].id.match(b.format);if(f){f={id:encodeURIComponent(f?f[1]:null),element:a,parent:c,children:[],position:c.children.length,container:$(d[e]).down(b.treeTag)};
f.container&&this._tree(f.container,b,f);c.children.push(f)}}return c},tree:function(a,b){a=$(a);var c=this.options(a);b=Object.extend({tag:c.tag,treeTag:c.treeTag,only:c.only,name:a.id,format:c.format},b||{});return Sortable._tree(a,b,{id:null,parent:null,children:[],container:a,position:0})},_constructIndex:function(a){var b="";do if(a.id)b="["+a.position+"]"+b;while((a=a.parent)!=null);return b},sequence:function(a,b){a=$(a);var c=Object.extend(this.options(a),b||{});return $(this.findElements(a,
c)||[]).map(function(d){return d.id.match(c.format)?d.id.match(c.format)[1]:""})},setSequence:function(a,b,c){a=$(a);var d=Object.extend(this.options(a),c||{}),e={};this.findElements(a,d).each(function(f){if(f.id.match(d.format))e[f.id.match(d.format)[1]]=[f,f.parentNode];f.parentNode.removeChild(f)});b.each(function(f){var g=e[f];if(g){g[1].appendChild(g[0]);delete e[f]}})},serialize:function(a,b){a=$(a);var c=Object.extend(Sortable.options(a),b||{}),d=encodeURIComponent(b&&b.name?b.name:a.id);return c.tree?
Sortable.tree(a,b).children.map(function(e){return[d+Sortable._constructIndex(e)+"[id]="+encodeURIComponent(e.id)].concat(e.children.map(arguments.callee))}).flatten().join("&"):Sortable.sequence(a,b).map(function(e){return d+"[]="+encodeURIComponent(e)}).join("&")}};Element.isParent=function(a,b){if(!a.parentNode||a==b)return false;if(a.parentNode==b)return true;return Element.isParent(a.parentNode,b)};
Element.findChildren=function(a,b,c,d){if(!a.hasChildNodes())return null;d=d.toUpperCase();if(b)b=[b].flatten();var e=[];$A(a.childNodes).each(function(f){if(f.tagName&&f.tagName.toUpperCase()==d&&(!b||Element.classNames(f).detect(function(g){return b.include(g)})))e.push(f);if(c)(f=Element.findChildren(f,b,c,d))&&e.push(f)});return e.length>0?e.flatten():[]};Element.offsetSize=function(a,b){return a["offset"+(b=="vertical"||b=="height"?"Height":"Width")]};if(!Control)var Control={};
Control.Slider=Class.create({initialize:function(a,b,c){var d=this;this.handles=Object.isArray(a)?a.collect(function(e){return $(e)}):[$(a)];this.track=$(b);this.options=c||{};this.axis=this.options.axis||"horizontal";this.increment=this.options.increment||1;this.step=parseInt(this.options.step||"1");this.range=this.options.range||$R(0,1);this.value=0;this.values=this.handles.map(function(){return 0});this.spans=this.options.spans?this.options.spans.map(function(e){return $(e)}):false;this.options.startSpan=
$(this.options.startSpan||null);this.options.endSpan=$(this.options.endSpan||null);this.restricted=this.options.restricted||false;this.maximum=this.options.maximum||this.range.end;this.minimum=this.options.minimum||this.range.start;this.alignX=parseInt(this.options.alignX||"0");this.alignY=parseInt(this.options.alignY||"0");this.trackLength=this.maximumOffset()-this.minimumOffset();this.handleLength=this.isVertical()?this.handles[0].offsetHeight!=0?this.handles[0].offsetHeight:this.handles[0].style.height.replace(/px$/,
""):this.handles[0].offsetWidth!=0?this.handles[0].offsetWidth:this.handles[0].style.width.replace(/px$/,"");this.disabled=this.dragging=this.active=false;this.options.disabled&&this.setDisabled();if(this.allowedValues=this.options.values?this.options.values.sortBy(Prototype.K):false){this.minimum=this.allowedValues.min();this.maximum=this.allowedValues.max()}this.eventMouseDown=this.startDrag.bindAsEventListener(this);this.eventMouseUp=this.endDrag.bindAsEventListener(this);this.eventMouseMove=this.update.bindAsEventListener(this);
this.handles.each(function(e,f){f=d.handles.length-1-f;d.setValue(parseFloat((Object.isArray(d.options.sliderValue)?d.options.sliderValue[f]:d.options.sliderValue)||d.range.start),f);e.makePositioned().observe("mousedown",d.eventMouseDown)});this.track.observe("mousedown",this.eventMouseDown);document.observe("mouseup",this.eventMouseUp);document.observe("mousemove",this.eventMouseMove);this.initialized=true},dispose:function(){var a=this;Event.stopObserving(this.track,"mousedown",this.eventMouseDown);
Event.stopObserving(document,"mouseup",this.eventMouseUp);Event.stopObserving(document,"mousemove",this.eventMouseMove);this.handles.each(function(b){Event.stopObserving(b,"mousedown",a.eventMouseDown)})},setDisabled:function(){this.disabled=true},setEnabled:function(){this.disabled=false},getNearestValue:function(a){if(this.allowedValues){if(a>=this.allowedValues.max())return this.allowedValues.max();if(a<=this.allowedValues.min())return this.allowedValues.min();var b=Math.abs(this.allowedValues[0]-
a),c=this.allowedValues[0];this.allowedValues.each(function(d){var e=Math.abs(d-a);if(e<=b){c=d;b=e}});return c}if(a>this.range.end)return this.range.end;if(a<this.range.start)return this.range.start;return a},setValue:function(a,b){if(!this.active){this.activeHandleIdx=b||0;this.activeHandle=this.handles[this.activeHandleIdx];this.updateStyles()}b=b||this.activeHandleIdx||0;if(this.initialized&&this.restricted){if(b>0&&a<this.values[b-1])a=this.values[b-1];if(b<this.handles.length-1&&a>this.values[b+
1])a=this.values[b+1]}a=this.getNearestValue(a);this.values[b]=a;this.value=this.values[0];this.handles[b].style[this.isVertical()?"top":"left"]=this.translateToPx(a);this.drawSpans();if(!this.dragging||!this.event)this.updateFinished()},setValueBy:function(a,b){this.setValue(this.values[b||this.activeHandleIdx||0]+a,b||this.activeHandleIdx||0)},translateToPx:function(a){return Math.round((this.trackLength-this.handleLength)/(this.range.end-this.range.start)*(a-this.range.start))+"px"},translateToValue:function(a){return a/
(this.trackLength-this.handleLength)*(this.range.end-this.range.start)+this.range.start},getRange:function(a){var b=this.values.sortBy(Prototype.K);a=a||0;return $R(b[a],b[a+1])},minimumOffset:function(){return this.isVertical()?this.alignY:this.alignX},maximumOffset:function(){return this.isVertical()?(this.track.offsetHeight!=0?this.track.offsetHeight:this.track.style.height.replace(/px$/,""))-this.alignY:(this.track.offsetWidth!=0?this.track.offsetWidth:this.track.style.width.replace(/px$/,""))-
this.alignX},isVertical:function(){return this.axis=="vertical"},drawSpans:function(){var a=this;this.spans&&$R(0,this.spans.length-1).each(function(b){a.setSpan(a.spans[b],a.getRange(b))});if(this.options.startSpan)this.setSpan(this.options.startSpan,$R(0,this.values.length>1?this.getRange(0).min():this.value));if(this.options.endSpan)this.setSpan(this.options.endSpan,$R(this.values.length>1?this.getRange(this.spans.length-1).max():this.value,this.maximum))},setSpan:function(a,b){if(this.isVertical()){a.style.top=
this.translateToPx(b.start);a.style.height=this.translateToPx(b.end-b.start+this.range.start)}else{a.style.left=this.translateToPx(b.start);a.style.width=this.translateToPx(b.end-b.start+this.range.start)}},updateStyles:function(){this.handles.each(function(a){Element.removeClassName(a,"selected")});Element.addClassName(this.activeHandle,"selected")},startDrag:function(a){if(Event.isLeftClick(a)){if(!this.disabled){this.active=true;var b=Event.element(a),c=[Event.pointerX(a),Event.pointerY(a)];if(b==
this.track){b=Position.cumulativeOffset(this.track);this.event=a;this.setValue(this.translateToValue((this.isVertical()?c[1]-b[1]:c[0]-b[0])-this.handleLength/2));b=Position.cumulativeOffset(this.activeHandle);this.offsetX=c[0]-b[0];this.offsetY=c[1]-b[1]}else{for(;this.handles.indexOf(b)==-1&&b.parentNode;)b=b.parentNode;if(this.handles.indexOf(b)!=-1){this.activeHandle=b;this.activeHandleIdx=this.handles.indexOf(this.activeHandle);this.updateStyles();b=Position.cumulativeOffset(this.activeHandle);
this.offsetX=c[0]-b[0];this.offsetY=c[1]-b[1]}}}Event.stop(a)}},update:function(a){if(this.active){if(!this.dragging)this.dragging=true;this.draw(a);Prototype.Browser.WebKit&&window.scrollBy(0,0);Event.stop(a)}},draw:function(a){var b=[Event.pointerX(a),Event.pointerY(a)],c=Position.cumulativeOffset(this.track);b[0]-=this.offsetX+c[0];b[1]-=this.offsetY+c[1];this.event=a;this.setValue(this.translateToValue(this.isVertical()?b[1]:b[0]));if(this.initialized&&this.options.onSlide)this.options.onSlide(this.values.length>
1?this.values:this.value,this)},endDrag:function(a){if(this.active&&this.dragging){this.finishDrag(a,true);Event.stop(a)}this.dragging=this.active=false},finishDrag:function(){this.dragging=this.active=false;this.updateFinished()},updateFinished:function(){if(this.initialized&&this.options.onChange)this.options.onChange(this.values.length>1?this.values:this.value,this);this.event=null}});
Object.extend(Prototype,{Browser:{IE:!!(window.attachEvent&&!window.opera),Opera:!!window.opera,WebKit:navigator.userAgent.indexOf("AppleWebKit/")>-1,Gecko:navigator.userAgent.indexOf("Gecko")>-1&&navigator.userAgent.indexOf("KHTML")==-1},BrowserFeatures:{XPath:!!document.evaluate,ElementExtensions:!!window.HTMLElement,SpecificElementExtensions:document.createElement("div").__proto__!==document.createElement("form").__proto__}});var YAHOO=function(){return{util:{}}}();
YAHOO.util.Color=new (function(){this.hsv2rgb=function(a,b,c){if(b==0){b=c*255;a=c*255;c=c*255}else{var d=a*6;if(d==6)d=0;a=Math.floor(d);var e=c*(1-b),f=c*(1-b*(d-a));b=c*(1-b*(1-(d-a)));if(a==0){var_r=c;var_g=b;var_b=e}else if(a==1){var_r=f;var_g=c;var_b=e}else if(a==2){var_r=e;var_g=c;var_b=b}else if(a==3){var_r=e;var_g=f;var_b=c}else if(a==4){var_r=b;var_g=e;var_b=c}else{var_r=c;var_g=e;var_b=f}b=var_r*255;a=var_g*255;c=var_b*255}return[Math.round(b),Math.round(a),Math.round(c)]};this.rgb2hsv=
function(a,b,c){a/=255;b/=255;c/=255;var d=Math.min(a,b,c),e=Math.max(a,b,c);deltaMax=e-d;var f,g,h,j;if(deltaMax==0)d=f=0;else{d=deltaMax/e;g=((e-a)/6+deltaMax/2)/deltaMax;h=((e-b)/6+deltaMax/2)/deltaMax;j=((e-c)/6+deltaMax/2)/deltaMax;if(a==e)f=j-h;else if(b==e)f=1/3+g-j;else if(c==e)f=2/3+h-g;if(f<0)f+=1;if(f>1)f-=1}return[f,d,e]};this.rgb2hex=function(a,b,c){return this.toHex(a)+this.toHex(b)+this.toHex(c)};this.hexchars="0123456789ABCDEF";this.toHex=function(a){a=a||0;a=parseInt(a,10);if(isNaN(a))a=
0;a=Math.round(Math.min(Math.max(0,a),255));return this.hexchars.charAt((a-a%16)/16)+this.hexchars.charAt(a%16)};this.toDec=function(a){return this.hexchars.indexOf(a.toUpperCase())};this.hex2rgb=function(a){var b=[];b[0]=this.toDec(a.substr(0,1))*16+this.toDec(a.substr(1,1));b[1]=this.toDec(a.substr(2,1))*16+this.toDec(a.substr(3,1));b[2]=this.toDec(a.substr(4,1))*16+this.toDec(a.substr(5,1));return b};this.isValidRGB=function(a){if(!a[0]&&a[0]!=0||isNaN(a[0])||a[0]<0||a[0]>255)return false;if(!a[1]&&
a[1]!=0||isNaN(a[1])||a[1]<0||a[1]>255)return false;if(!a[2]&&a[2]!=0||isNaN(a[2])||a[2]<0||a[2]>255)return false;return true}});Control||(Control={});Control.colorPickers=[];Control.ColorPicker=Class.create();
Control.ColorPicker.prototype={initialize:function(a,b){Control.colorPickers.push(this);this.field=$(a);this.fieldName=this.field.name||this.field.id;this.options=Object.extend({IMAGE_BASE:"/images/color_picker/"},b||{});this.swatch=$(this.options.swatch)||this.field;this.openEvent=this.options.openEvent||null;this.rgb={};this.hsv={};this.isOpen=false;if(!Control.ColorPicker.CONTROL){Control.ColorPicker.CONTROL={};if(!$("colorpicker")){a=Builder.node("div",{id:"colorpicker"});a.innerHTML='<div id="colorpicker-div"><img id="colorpicker-bg" src="'+
this.options.IMAGE_BASE+'pickerbg.png" alt=""><div id="colorpicker-bg-overlay" style="z-index: 1002;"></div><div id="colorpicker-selector"></div></div><div id="colorpicker-hue-container"><img src="'+this.options.IMAGE_BASE+'hue.png" id="colorpicker-hue-bg-img"><div id="colorpicker-hue-slider"><div id="colorpicker-hue-thumb"></div></div></div><div id="colorpicker-footer"><span id="colorpicker-value">#<input type="text" onclick="this.select()" id="colorpicker-value-input" name="colorpicker-value" value="" /></span><button id="colorpicker-okbutton">OK</button></div>';
document.body.appendChild(a);$("colorpicker").style.left="-1500px"}Control.ColorPicker.CONTROL={popUp:$("colorpicker"),pickerArea:$("colorpicker-div"),selector:$("colorpicker-selector"),okButton:$("colorpicker-okbutton"),value:$("colorpicker-value"),input:$("colorpicker-value-input"),picker:new Draggable($("colorpicker-selector"),{snap:function(c,d){return[Math.min(Math.max(c,0),Control.ColorPicker.activeColorPicker.control.pickerArea.offsetWidth),Math.min(Math.max(d,0),Control.ColorPicker.activeColorPicker.control.pickerArea.offsetHeight)]},
zindex:1009,change:function(c){c=c.currentDelta();Control.ColorPicker.activeColorPicker.update(c[0],c[1])}}),hueSlider:new Control.Slider("colorpicker-hue-thumb","colorpicker-hue-slider",{axis:"vertical",onChange:function(c){Control.ColorPicker.activeColorPicker.updateHue(c)},onSlide:function(c){Control.ColorPicker.activeColorPicker.updateHue(c)}})};Element.hide($("colorpicker"))}this.control=Control.ColorPicker.CONTROL;this.fixInternetExploder();this.toggleOnClickListener=this.toggle.bindAsEventListener(this);
this.updateOnChangeListener=this.updateFromFieldValue.bindAsEventListener(this);this.closeOnClickOkListener=this.close.bindAsEventListener(this);this.updateOnClickPickerListener=this.updateSelector.bindAsEventListener(this);Event.observe(this.swatch,"click",this.toggleOnClickListener);Event.observe(this.field,"change",this.updateOnChangeListener);Event.observe(this.control.input,"change",this.updateOnChangeListener);this.lostFocusCloseListener=this.closeOnLostFocus.bindAsEventListener(this);Event.observe(document,
"click",this.lostFocusCloseListener);this.updateSwatch();this.openEvent&&this.swatch!=this.field&&this.open(this.openEvent)},fixInternetExploder:function(){if(Prototype.Browser.IE)for(var a=Control.ColorPicker.CONTROL.popUp,b=$("colorpicker").getElementsByTagName("*"),c=b.length-1;c>=0;c--)if(b[c].style.backgroundImage!="none"){var d=b[c].style.backgroundImage;d=b[c].style.backgroundImage.substring(5,d.length-2);a.style.backgroundImage="none";a.style.filter="progid:DXImageTransform.Microsoft.AlphaImageLoader(enabled=true, sizingMethod=crop, src='"+
d+"')"}},toggle:function(a){this[this.isOpen?"close":"open"](a);Event.stop(a)},open:function(a){Control.colorPickers.each(function(e){e.close()});Control.ColorPicker.activeColorPicker=this;this.isOpen=true;Element.show(this.control.popUp);if(this.options.getPopUpPosition)var b=this.options.getPopUpPosition.bind(this)(a);else{b=Position.cumulativeOffset(this.swatch||this.field);var c=Element.cumulativeScrollOffset(this.swatch||this.field),d=document.viewport.getScrollOffsets();b[0]-=c[0]-d[0];b[1]-=
c[1]-d[1];b[0]=b[0]+(this.swatch||this.field).offsetWidth+10}this.control.popUp.style.left=b[0]+"px";this.control.popUp.style.top=b[1]+"px";this.updateFromFieldValue();Event.observe(this.control.okButton,"click",this.closeOnClickOkListener);Event.observe(document,"click",this.lostFocusCloseListener);Event.observe(this.control.pickerArea,"mousedown",this.updateOnClickPickerListener);this.options.onOpen&&this.options.onOpen.bind(this)(a)},close:function(){if(Control.ColorPicker.activeColorPicker==this)Control.ColorPicker.activeColorPicker=
null;this.isOpen=false;Element.hide(this.control.popUp);Event.stopObserving(this.control.okButton,"click",this.closeOnClickOkListener);Event.stopObserving(document,"click",this.lostFocusCloseListener);Event.stopObserving(this.control.pickerArea,"mousedown",this.updateOnClickPickerListener);this.options.onClose&&this.options.onClose.bind(this)()},closeOnLostFocus:function(a){this._isWithin(a)||this.close()},_isWithin:function(a){a=Event.element(a);var b=this.control.popUp;return b!=null&&($(b)==a||
Element.childOf(a,$(b)))},updateHue:function(a){a=(this.control.pickerArea.offsetHeight-a*100)/this.control.pickerArea.offsetHeight;if(a==1)a=0;a=YAHOO.util.Color.hsv2rgb(a,1,1);if(YAHOO.util.Color.isValidRGB(a)){this.control.pickerArea.style.backgroundColor="rgb("+a[0]+", "+a[1]+", "+a[2]+")";this.update()}},updateFromFieldValue:function(a){if(this.isOpen){a=a&&Event.findElement(a,"input")||this.field;a=YAHOO.util.Color.hex2rgb(a.value);if(YAHOO.util.Color.isValidRGB(a)){a=YAHOO.util.Color.rgb2hsv(a[0],
a[1],a[2]);this.control.selector.style.left=Math.round(a[1]*this.control.pickerArea.offsetWidth)+"px";this.control.selector.style.top=Math.round((1-a[2])*this.control.pickerArea.offsetWidth)+"px";this.control.hueSlider.setValue(1-a[0])}}},updateSelector:function(a){var b=Event.pointerX(a),c=Event.pointerY(a),d=Position.cumulativeOffset($("colorpicker-bg"));this.control.selector.style.left=b-d[0]-6+"px";this.control.selector.style.top=c-d[1]-6+"px";this.update(b-d[0],c-d[1]);this.control.picker.initDrag(a)},
updateSwatch:function(){var a=YAHOO.util.Color.hex2rgb(this.field.value);if(YAHOO.util.Color.isValidRGB(a)){this.swatch.style.backgroundColor="rgb("+a[0]+", "+a[1]+", "+a[2]+")";this.swatch.style.color=YAHOO.util.Color.rgb2hsv(a[0],a[1],a[2])[2]>0.65?"#000000":"#FFFFFF"}},update:function(a,b){a||(a=this.control.picker.currentDelta()[0]);b||(b=this.control.picker.currentDelta()[1]);this.hsv={hue:1-this.control.hueSlider.value,saturation:a/this.control.pickerArea.offsetWidth,brightness:(this.control.pickerArea.offsetHeight-
b)/this.control.pickerArea.offsetHeight};a=YAHOO.util.Color.hsv2rgb(this.hsv.hue,this.hsv.saturation,this.hsv.brightness);this.rgb={red:a[0],green:a[1],blue:a[2]};this.field.value=YAHOO.util.Color.rgb2hex(a[0],a[1],a[2]);this.control.input.value=this.field.value;this.updateSwatch();this.options.onUpdate&&this.options.onUpdate.bind(this)(this.field.value)}};var ImageCropEditor=Class.create();
ImageCropEditor.prototype={initialize:function(a,b,c,d){this.imageElement=$(a);this.width=b;this.height=c;this.options=d||{};this.overlayContainer=$(this.options.overlayContainer||document.documentElement);this.onChange=null;this.cropTop=this.cropLeft=0;this.cropWidth=b;this.cropHeight=c;this.enabled=this.needsRedraw=false;this.imageVisible=true;this.leftDimmer=this.createDimmer();this.topDimmer=this.createDimmer();this.rightDimmer=this.createDimmer();this.bottomDimmer=this.createDimmer();this.topLeftHandle=
this.createHandle("nw");this.topMiddleHandle=this.createHandle("n");this.topRightHandle=this.createHandle("ne");this.bottomLeftHandle=this.createHandle("sw");this.bottomMiddleHandle=this.createHandle("s");this.bottomRightHandle=this.createHandle("se");this.middleLeftHandle=this.createHandle("w");this.middleRightHandle=this.createHandle("e");a=function(e){if(this.enabled){this.setTrackingHandle("se",e);var f=this.fromScreenX(Event.pointerX(e)),g=this.fromScreenY(Event.pointerY(e));this.cropLeft=f;
this.cropTop=g;this.cropHeight=this.cropWidth=0;this.changed();Event.stop(e)}}.bind(this);this.leftDimmer.observe("mousedown",a);this.rightDimmer.observe("mousedown",a);this.topDimmer.observe("mousedown",a);this.bottomDimmer.observe("mousedown",a);this.area=$(document.createElement("div"));this.area.style.position="absolute";this.area.style.overflow="hidden";this.area.style.cursor="move";this.area.style.backgroundColor="#fff";this.area.style.zIndex=1;this.area.setOpacity(0.01);this.area.observe("mousedown",
function(e){if(this.enabled){this.setTrackingHandle("a",e);Event.stop(e)}}.bind(this));this.overlayContainer.appendChild(this.area);this.topMarquee=this.createMarquee("horizontal");this.bottomMarquee=this.createMarquee("horizontal");this.leftMarquee=this.createMarquee("vertical");this.rightMarquee=this.createMarquee("vertical");$(document.documentElement).observe("mousemove",function(e){this.trackHandle(e)}.bind(this));$(document.documentElement).observe("mouseup",function(e){this.setTrackingHandle(null,
e)}.bind(this))},setImage:function(a,b,c,d){var e=this.enabled;e&&this.hide();this.imageElement=$(a);this.width=b;this.height=c;if(d){this.cropTop=this.cropLeft=0;this.cropWidth=b;this.cropHeight=c;this.changed()}e&&this.show()},show:function(){if(!this.enabled){this.enabled=true;this.setNeedsRedraw();this.redrawingIntervalId=window.setInterval(this.checkRedraw.bind(this),1E3/15);this.visibilityCheckingIntervalId=window.setInterval(this.checkImageVisible.bind(this),500)}},hide:function(){if(this.enabled){if(this.redrawingIntervalId){window.clearInterval(this.redrawingIntervalId);
this.redrawingIntervalId=null}if(this.visibilityCheckingIntervalId){window.clearInterval(this.visibilityCheckingIntervalId);this.visibilityCheckingIntervalId=null}this.enabled=false;this.redraw()}},checkImageVisible:function(){var a=this.isImageVisible();if(a!=this.imageVisible){this.imageVisible=a;this.needsRedraw=true}},checkRedraw:function(){this.needsRedraw&&this.redraw()},setCropLeft:function(a){if(a&&a!="")this.cropLeft=a=parseInt(a)},setCropTop:function(a){if(a&&a!="")this.cropTop=a=parseInt(a)},
setCropWidth:function(a){if(a&&a!="")this.cropWidth=a=parseInt(a)},setCropHeight:function(a){if(a&&a!="")this.cropHeight=a=parseInt(a)},getCropLeft:function(){return this.cropLeft},getCropTop:function(){return this.cropTop},getCropWidth:function(){return this.cropWidth},getCropHeight:function(){return this.cropHeight},changed:function(){this.checkSize();this.setNeedsRedraw();this.onChange&&this.onChange(this)},checkSize:function(){if(this.cropTop<0)this.cropTop=0;else if(this.cropTop>this.height)this.cropTop=
this.height;if(this.cropLeft<0)this.cropLeft=0;else if(this.cropLeft>this.width)this.cropLeft=this.width;if(this.cropLeft+this.cropWidth>this.width)this.cropLeft=this.width-this.cropWidth;if(this.cropTop+this.cropHeight>this.height)this.cropTop=this.height-this.cropHeight;var a=this.width/this.imageElement.getDimensions().width,b=10*(this.height/this.imageElement.getDimensions().height);if(this.cropWidth<10*a)this.cropWidth=0;if(this.cropHeight<b)this.cropHeight=0},isImageVisible:function(){for(var a=
true,b=this.imageElement;b&&b.nodeType==1;){if(b.style.display=="none"){a=false;break}b=$(b.parentNode)}return a},setNeedsRedraw:function(){this.needsRedraw=true},redraw:function(){this.needsRedraw=false;if(this.enabled&&this.isImageVisible()){this.area.style.left=this.toScreenX(this.cropLeft)+"px";this.area.style.top=this.toScreenY(this.cropTop)+"px";this.area.style.width=this.toScreenX(this.cropLeft+this.cropWidth)-this.toScreenX(this.cropLeft)+"px";this.area.style.height=this.toScreenY(this.cropTop+
this.cropHeight)-this.toScreenY(this.cropTop)+"px";this.area.show();if(this.cropWidth>0&&this.cropHeight>0){if(this.cropLeft>0){this.leftDimmer.style.left=this.toScreenX(0)+"px";this.leftDimmer.style.top=this.toScreenY(this.cropTop)+"px";this.leftDimmer.style.width=this.toScreenX(this.cropLeft)-this.toScreenX(0)+"px";this.leftDimmer.style.height=this.toScreenY(this.cropHeight)-this.toScreenY(0)+"px";this.leftDimmer.show()}else this.leftDimmer.hide();if(this.cropLeft+this.cropWidth<this.width){this.rightDimmer.style.left=
this.toScreenX(this.cropLeft+this.cropWidth)+"px";this.rightDimmer.style.top=this.toScreenY(this.cropTop)+"px";this.rightDimmer.style.width=this.toScreenX(this.width)-this.toScreenX(this.cropLeft+this.cropWidth)+"px";this.rightDimmer.style.height=this.toScreenY(this.cropHeight)-this.toScreenY(0)+"px";this.rightDimmer.show()}else this.rightDimmer.hide();if(this.cropTop>0){this.topDimmer.style.left=this.toScreenX(0)+"px";this.topDimmer.style.top=this.toScreenY(0)+"px";this.topDimmer.style.width=this.toScreenX(this.width)-
this.toScreenX(0)+"px";this.topDimmer.style.height=this.toScreenY(this.cropTop)-this.toScreenY(0)+"px";this.topDimmer.show()}else this.topDimmer.hide();if(this.cropTop+this.cropHeight<this.height){this.bottomDimmer.style.left=this.toScreenX(0)+"px";this.bottomDimmer.style.top=this.toScreenY(this.cropTop+this.cropHeight)+"px";this.bottomDimmer.style.width=this.toScreenX(this.width)-this.toScreenX(0)+"px";this.bottomDimmer.style.height=this.toScreenY(this.height)-this.toScreenY(this.cropTop+this.cropHeight)+
"px";this.bottomDimmer.show()}else this.bottomDimmer.hide();this.topMarquee.style.left=this.toScreenX(this.cropLeft)+"px";this.topMarquee.style.top=this.toScreenY(this.cropTop)+"px";this.topMarquee.style.width=this.toScreenX(this.cropWidth)-this.toScreenX(0)+"px";this.topMarquee.style.height="1px";this.topMarquee.show();this.bottomMarquee.style.left=this.toScreenX(this.cropLeft)+"px";this.bottomMarquee.style.top=this.toScreenY(this.cropTop+this.cropHeight)+"px";this.bottomMarquee.style.width=this.toScreenX(this.cropWidth)-
this.toScreenX(0)+"px";this.bottomMarquee.style.height="1px";this.bottomMarquee.show();this.leftMarquee.style.left=this.toScreenX(this.cropLeft)+"px";this.leftMarquee.style.top=this.toScreenY(this.cropTop)+"px";this.leftMarquee.style.width="1px";this.leftMarquee.style.height=this.toScreenY(this.cropHeight)-this.toScreenY(0)+"px";this.leftMarquee.show();this.rightMarquee.style.left=this.toScreenX(this.cropLeft+this.cropWidth)+"px";this.rightMarquee.style.top=this.toScreenY(this.cropTop)+"px";this.rightMarquee.style.width=
"1px";this.rightMarquee.style.height=this.toScreenY(this.cropHeight)-this.toScreenY(0)+"px";this.rightMarquee.show();this.topLeftHandle.style.left=this.toScreenX(this.cropLeft)-3-1+"px";this.topLeftHandle.style.top=this.toScreenY(this.cropTop)-3-1+"px";this.topLeftHandle.style.width="6px";this.topLeftHandle.style.height="6px";this.topLeftHandle.show();this.topMiddleHandle.style.left=this.toScreenX(this.cropLeft+this.cropWidth/2-1)-3+"px";this.topMiddleHandle.style.top=this.toScreenY(this.cropTop)-
3-1+"px";this.topMiddleHandle.style.width="6px";this.topMiddleHandle.style.height="6px";this.topMiddleHandle.show();this.topRightHandle.style.left=this.toScreenX(this.cropLeft+this.cropWidth)-3-1+"px";this.topRightHandle.style.top=this.toScreenY(this.cropTop)-3-1+"px";this.topRightHandle.style.width="6px";this.topRightHandle.style.height="6px";this.topRightHandle.show();this.bottomLeftHandle.style.left=this.toScreenX(this.cropLeft)-3-1+"px";this.bottomLeftHandle.style.top=this.toScreenY(this.cropTop+
this.cropHeight)-3-1+"px";this.bottomLeftHandle.style.width="6px";this.bottomLeftHandle.style.height="6px";this.bottomLeftHandle.show();this.bottomMiddleHandle.style.left=this.toScreenX(this.cropLeft+this.cropWidth/2-1)-3+"px";this.bottomMiddleHandle.style.top=this.toScreenY(this.cropTop+this.cropHeight)-3-1+"px";this.bottomMiddleHandle.style.width="6px";this.bottomMiddleHandle.style.height="6px";this.bottomMiddleHandle.show();this.bottomRightHandle.style.left=this.toScreenX(this.cropLeft+this.cropWidth)-
3-1+"px";this.bottomRightHandle.style.top=this.toScreenY(this.cropTop+this.cropHeight)-3-1+"px";this.bottomRightHandle.style.width="6px";this.bottomRightHandle.style.height="6px";this.bottomRightHandle.show();this.middleLeftHandle.style.left=this.toScreenX(this.cropLeft)-3-1+"px";this.middleLeftHandle.style.top=this.toScreenY(this.cropTop+this.cropHeight/2)-3-1+"px";this.middleLeftHandle.style.width="6px";this.middleLeftHandle.style.height="6px";this.middleLeftHandle.show();this.middleRightHandle.style.left=
this.toScreenX(this.cropLeft+this.cropWidth)-3-1+"px";this.middleRightHandle.style.top=this.toScreenY(this.cropTop+this.cropHeight/2)-3-1+"px";this.middleRightHandle.style.width="6px";this.middleRightHandle.style.height="6px";this.middleRightHandle.show()}else{this.leftDimmer.hide();this.rightDimmer.hide();this.topDimmer.hide();this.bottomDimmer.hide();this.topMarquee.hide();this.bottomMarquee.hide();this.leftMarquee.hide();this.rightMarquee.hide();this.topLeftHandle.hide();this.topMiddleHandle.hide();
this.topRightHandle.hide();this.bottomLeftHandle.hide();this.bottomMiddleHandle.hide();this.bottomRightHandle.hide();this.middleLeftHandle.hide();this.middleRightHandle.hide();this.leftDimmer.style.left=this.toScreenX(0)+"px";this.leftDimmer.style.top=this.toScreenY(0)+"px";this.leftDimmer.style.width=this.toScreenX(this.width)-this.toScreenX(0)+"px";this.leftDimmer.style.height=this.toScreenY(this.height)-this.toScreenY(0)+"px";this.leftDimmer.show()}}else{this.leftDimmer.hide();this.rightDimmer.hide();
this.topDimmer.hide();this.bottomDimmer.hide();this.topMarquee.hide();this.bottomMarquee.hide();this.leftMarquee.hide();this.rightMarquee.hide();this.topLeftHandle.hide();this.topMiddleHandle.hide();this.topRightHandle.hide();this.bottomLeftHandle.hide();this.bottomMiddleHandle.hide();this.bottomRightHandle.hide();this.middleLeftHandle.hide();this.middleRightHandle.hide();this.area.hide()}},toScreenX:function(a){var b=Position.cumulativeOffset(this.imageElement)[0],c=this.imageElement.getDimensions().width/
this.width;return Math.round(b+a*c)},toScreenY:function(a){var b=Position.cumulativeOffset(this.imageElement)[1],c=this.imageElement.getDimensions().height/this.height;return Math.round(b+a*c)},fromScreenX:function(a){var b=Position.cumulativeOffset(this.imageElement)[0],c=this.width/this.imageElement.getDimensions().width;return Math.round((a-b)*c)},fromScreenY:function(a){var b=Position.cumulativeOffset(this.imageElement)[1],c=this.height/this.imageElement.getDimensions().height;return Math.round((a-
b)*c)},createDimmer:function(){var a=$(document.createElement("div"));a.style.backgroundColor="#000";a.style.display="none";a.style.position="absolute";a.style.overflow="hidden";a.setOpacity&&a.setOpacity(0.4);a.style.zIndex=1;this.overlayContainer.appendChild(a);return a},createHandle:function(a){var b=$(document.createElement("div"));b.style.backgroundColor="#fff";b.style.display="none";b.style.position="absolute";b.style.overflow="hidden";b.style.border="solid 1px #000";b.style.cursor=a+"-resize";
b.style.zIndex=4;b.setOpacity&&b.setOpacity(0.5);b.observe("mousedown",function(c){this.setTrackingHandle(a,c);Event.stop(c)}.bind(this));this.overlayContainer.appendChild(b);return b},createMarquee:function(a){var b=$(document.createElement("div"));b.style.display="none";b.style.position="absolute";b.style.overflow="hidden";b.style.background=a=="horizontal"?"#fff url(/images/image_editing/marquee_horizontal.gif) repeat-x":"#fff url(/images/image_editing/marquee_vertical.gif) repeat-y";b.style.zIndex=
3;this.overlayContainer.appendChild(b);return b},setTrackingHandle:function(a,b){if(this.trackingHandle=a){var c=this.width/this.imageElement.getDimensions().width;a=this.height/this.imageElement.getDimensions().height;c=Math.round((Event.pointerX(b)-this.toScreenX(this.cropLeft))*c);b=Math.round((Event.pointerY(b)-this.toScreenY(this.cropTop))*a);this.trackingOffset=[c,b]}},trackHandle:function(a){if(this.trackingHandle){var b=this.width/this.imageElement.getDimensions().width,c=this.height/this.imageElement.getDimensions().height;
b=Math.round(10*b);c=Math.round(10*c);var d=this.fromScreenX(Event.pointerX(a));a=this.fromScreenY(Event.pointerY(a));if(d<0)d=0;if(d>this.width)d=this.width;if(a<0)a=0;if(a>this.height)a=this.height;if(this.trackingHandle=="a"){this.cropLeft=d-this.trackingOffset[0];this.cropTop=a-this.trackingOffset[1];this.changed()}else{if(this.trackingHandle=="w"||this.trackingHandle=="nw"||this.trackingHandle=="sw"){if(d>this.cropLeft+this.cropWidth-b)d=this.cropLeft+this.cropWidth-b;if(d!=this.cropLeft){var e=
this.cropLeft;this.cropLeft=d;this.cropWidth=e+this.cropWidth-this.cropLeft;this.changed()}}if(this.trackingHandle=="e"||this.trackingHandle=="ne"||this.trackingHandle=="se"){if(d<this.cropLeft+b)d=this.cropLeft+b;if(d!=this.cropLeft+this.cropWidth){this.cropWidth=d-this.cropLeft;this.changed()}}if(this.trackingHandle=="n"||this.trackingHandle=="nw"||this.trackingHandle=="ne"){if(a>this.cropTop+this.cropHeight-c)a=this.cropTop+this.cropHeight-c;if(a!=this.cropTop){b=this.cropTop;this.cropTop=a;this.cropHeight=
b+this.cropHeight-this.cropTop;this.changed()}}if(this.trackingHandle=="s"||this.trackingHandle=="sw"||this.trackingHandle=="se"){if(a<this.cropTop+c)a=this.cropTop+c;if(a!=this.cropTop+this.cropHeight){this.cropHeight=a-this.cropTop;this.changed()}}}}}};var ObjectPicker=Class.create();
ObjectPicker.prototype={initialize:function(a,b){this.searchField=$(a);this.searchField.observe("blur",this.scheduleSearch.bind(this));this.options=b||{};this.request=null;this.lastQuery="";this.scheduled=null},scheduleSearch:function(){var a=this.searchField.value.strip();if(a!=this.lastQuery&&(!this.selectedHit||this.selectedHit.title!=a)){this.cancelSearch();this.unselect();if(this.scheduled){window.clearTimeout(this.scheduled);this.scheduled=null}if(a.length>0)this.scheduled=window.setTimeout(function(){this.search(a)}.bind(this),
this.options.delay||1E3);else this.depopulate()}},cancelSearch:function(){if(this.request){this.lastQuery=null;this.setRequest(null)}},searchNow:function(){var a=this.searchField.value.strip();a!=""&&this.search(a)},search:function(a){this.lastQuery=a;var b=$(this.searchField.id+"_progress_indicator");this.setRequest(new Ajax.Request(this.options.url,{method:"get",asynchronous:true,evalScripts:true,parameters:encodeURIComponent(this.options.parameter)+"="+a,onLoading:function(){b&&b.show()}.bind(this),
onFailure:function(c){Errors.reportForAjax(c)}.bind(this),onSuccess:function(c,d){c=d||this.evaluateJson(c);this.populate(a,c)}.bind(this),onComplete:function(){b&&b.hide()}.bind(this),onException:function(c,d){Errors.log(d)}.bind(this)}))},evaluateJson:function(a){var b=null;if((a=a.responseText)&&a.toString().strip().length>0)b=eval("("+a+")");return b},depopulate:function(){for(var a=$(this.options.hitContainer||this.options.fieldContainer.nextSibling);a.firstChild;)a.removeChild(a.firstChild);
a.hide();this.selectionElement=null},populate:function(a,b){this.depopulate();if(this.options.maxHits&&b.length>this.options.maxHits){this.display_max_hits_warning=true;b=b.slice(0,this.options.maxHits)}var c=$(this.options.hitContainer||this.options.fieldContainer.nextSibling),d=this.createHitHeader(a,b);d&&c.appendChild(d);d=$(document.createElement("table"));d.className="hit_table";c.appendChild(d);var e=$(document.createElement("tbody"));d.appendChild(e);var f=null;b.each(function(g,h){if(h%3==
0){f=$(document.createElement("tr"));e.appendChild(f)}h=$(document.createElement("td"));var j=$(document.createElement("div"));j.className="hit";j.observe("click",function(){this.select(g,j);return false}.bind(this));j.innerHTML=g.html;h.appendChild(j);f.appendChild(h)}.bind(this));(a=this.createHitFooter(a,b))&&c.appendChild(a);c.show()},createHitHeader:function(a,b){var c=$(document.createElement("div"));if(this.display_max_hits_warning){c.className="max_hits";c.innerHTML=_("Vi kunne ikke vise alle treffene. Skriv litt mer for \u00e5 snevre inn s\u00f8ket.")}else if(b.length==
0)if(this.options.allowCreation){c.className="create_offer";if(this.options.willBeCreated){a=_("<strong>%s</strong> vil bli opprettet. Vil du fylle ut mer informasjon?",a);b=_("Ja takk!")}else{if(this.options.required){c.className="no_results";a=_("Beklager, <strong>%s</strong> fant vi ikke.",a)}else a=_("Du kan opprette <strong>%s</strong> om du vil.",a);b=_("Opprett stedet")}c.innerHTML=a;c.appendChild(document.createTextNode(" "));b=Button.linkToFunction(b,function(){this.showForm();return false}.bind(this),
{color:"green"});c.appendChild(b)}else{c.className="no_results";c.innerHTML=_("Beklager, ingen treff p\u00e5 <strong>%s</strong>.",a)}else if(this.options.allowCreation){c.className="hit_header";c.appendChild(document.createTextNode(this.getHitHeaderText(b)))}return c},getHitHeaderText:function(a){return a.length==1?_("Mente du dette?"):_("Mente du en av disse?")},createHitFooter:function(a,b){if(this.options.allowCreation)if(b.length>0){a=$(document.createElement("div"));a.className="hit_footer";
a.appendChild(document.createTextNode(_("Stod det ikke der?")));a.appendChild(document.createTextNode(" "));b=Button.linkToFunction(this.getHitFooterText(),function(){this.showForm();return false}.bind(this),{color:"green"});a.appendChild(b);return a}},getHitFooterText:function(){return _("Opprett nytt sted")},showForm:function(){var a=$(this.options.createForm);if(a){Form.getElements(a).each(function(b){b.disabled=""});if(!a.visible()){$(this.options.fieldContainer).hide();$(this.options.hitContainer).hide();
a.show();if(a=(new Selector("input[type=text]")).findElements(a)[0]){if(a.value=="")a.value=this.searchField.value;a.focus()}a=$(this.options.field);a.value="";a.disabled="true";GoogleMapsSupport.checkAllResize()}this.searchField.blur();this.searchField.disabled="true"}},hideForm:function(){var a=$(this.options.createForm);if(a){if(a.visible()){$(this.options.fieldContainer).show();$(this.options.hitContainer).show();a.hide();var b=(new Selector("input[type=text]")).findElements(a)[0];if(b)b.value=
"";b=$(this.options.field);b.value=this.selectedHit?this.selectedHit.id:"";b.disabled=""}this.searchField.disabled="";Form.getElements(a).each(function(c){c.blur();c.disabled="disabled"})}},select:function(a){$(this.options.field).value=a.id;if(this.selectionElement){this.selectionElement.parentNode.removeChild(this.selectionElement);this.selectionElement=null}this.depopulate();this.selectionElement=this.makeSelection(a);a=$(this.options.hitContainer||this.options.fieldContainer.nextSibling);a.appendChild(this.selectionElement);
a.show();this.searchField.value="";this.searchField.blur();this.searchField.disabled="true";$(this.options.fieldContainer).hide()},unselect:function(){this.depopulate();$(this.options.field).value="";$(this.options.fieldContainer).show();this.searchField.disabled="";this.searchField.focus()},makeSelection:function(a){var b=$(document.createElement("div")),c=$(document.createElement("img"));c.src="/images/action_icons/remove_24.png";c.alt=_("Fjern valg");c.title=c.alt;var d=$(document.createElement("a"));
d.href="#";d.observe("click",function(e){this.unselect();this.searchField.value="";Event.stop(e)}.bind(this));d.className="picker_change_link";d.appendChild(c);b.appendChild(d);c=$(document.createElement("span"));c.innerHTML=a.html;this.stripHighlight(c);b.appendChild(c);return b},stripHighlight:function(a){(new Selector("strong.highlight")).findElements(a).each(function(b){for(var c=$(document.createElement("span"));b.firstChild;){var d=b.firstChild;b.removeChild(d);c.appendChild(d)}b.parentNode.replaceChild(c,
b);throw $break;})},setRequest:function(a){if(this.request){if(this.request.transport)try{this.request.transport.abort()}catch(b){}this.request=null}this.request=a}};
