


v.cC={cz:function(element,handle){handle=handle?handle:element;var group=this.createGroup(element);group.setHandle(handle);group.transparentDrag();group.onTopWhileDragging();return group},createGroup:function(element){var group=new bQ(this,element);var position=v.css().readStyle(element,'position');if(position=='static'){element.style["position"]='relative'}else if(position=='absolute'){v.coordinates().aM(element).reposition(element)}group.register('draginit',this._showDragEventStatus);group.register('dragmove',this._showDragEventStatus);group.register('dragend',this._showDragEventStatus);return group},_showDragEventStatus:function(dragEvent){window.status=dragEvent.toString()},constraints:function(){return this.dH},bR:function(type,event,group){return new bT(type,event,group)}};function bQ(ax,element){this.ax=ax;this.element=element;this._handle=null;this._thresholdDistance=0;this._transforms=new Array();this._listeners=new Array();this._listeners['draginit']=new Array();this._listeners['dragstart']=new Array();this._listeners['dragmove']=new Array();this._listeners['dragend']=new Array()};bQ.prototype={setHandle:function(handle){var events=v.events();handle.bJ=this;events.register(handle,'mousedown',this.cP);handle.onmousedown=function(){return false};if(this.element!=handle)events.unregister(this.element,'mousedown',this.cP)},register:function(type,func){this._listeners[type].push(func)},addTransform:function(transformFunc){this._transforms.push(transformFunc)},verticalOnly:function(){this.addTransform(this.ax.constraints().vertical())},horizontalOnly:function(){this.addTransform(this.ax.constraints().horizontal())},setThreshold:function(thresholdDistance){this._thresholdDistance=thresholdDistance},transparentDrag:function(opacity){var opacity=typeof(opacity)!="undefined"?opacity:0.75;var originalOpacity=v.css().readStyle(this.element,"opacity");this.register('dragstart',function(dragEvent){var element=dragEvent.group.element;element.style.opacity=opacity;element.style.filter='alpha(opacity='+(opacity*100)+')'});this.register('dragend',function(dragEvent){var element=dragEvent.group.element;element.style.opacity=originalOpacity;element.style.filter='alpha(opacity=100)'})},onTopWhileDragging:function(zIndex){var zIndex=typeof(zIndex)!="undefined"?zIndex:100000;var originalZIndex=v.css().readStyle(this.element,"z-index");this.register('dragstart',function(dragEvent){dragEvent.group.element.style.zIndex=zIndex});this.register('dragend',function(dragEvent){dragEvent.group.element.style.zIndex=originalZIndex})},cP:function(event){event=v.events().fix(event);var group=document.bJ=this.bJ;var dragEvent=group.ax.bR('draginit',event,group);group._isThresholdExceeded=false;group.dN=dragEvent.mouseOffset;group._grabOffset=dragEvent.mouseOffset.minus(dragEvent.aM);v.events().register(document,'mousemove',group.cV);document.onmousemove=function(){return false};v.events().register(document,'mouseup',group.cS);group._notifyListeners(dragEvent)},cV:function(event){event=v.events().fix(event);var coordinates=v.coordinates();var group=this.bJ;if(!group)return;var dragEvent=group.ax.bR('dragmove',event,group);var newTopLeftOffset=dragEvent.mouseOffset.minus(group._grabOffset);if(!group._isThresholdExceeded){var distance=dragEvent.mouseOffset.distance(group.dN);if(distance<group._thresholdDistance)return;group._isThresholdExceeded=true;group._notifyListeners(group.ax.bR('dragstart',event,group))}for(i in group._transforms){var transform=group._transforms[i];newTopLeftOffset=transform(newTopLeftOffset,dragEvent)}var dragDelta=newTopLeftOffset.minus(dragEvent.aM);var newTopLeftPosition=dragEvent.bN.plus(dragDelta);newTopLeftPosition.reposition(group.element);dragEvent.transformedMouseOffset=newTopLeftOffset.plus(group._grabOffset);group._notifyListeners(dragEvent);var errorDelta=newTopLeftOffset.minus(coordinates.aM(group.element));if(errorDelta.x!=0||errorDelta.y!=0){coordinates.bN(group.element).plus(errorDelta).reposition(group.element)}},cS:function(event){event=v.events().fix(event);var group=this.bJ;var dragEvent=group.ax.bR('dragend',event,group);group._notifyListeners(dragEvent);this.bJ=null;v.events().unregister(document,'mousemove',group.cV);document.onmousemove=null;v.events().unregister(document,'mouseup',group.cS)},_notifyListeners:function(dragEvent){var listeners=this._listeners[dragEvent.type];for(i in listeners){listeners[i](dragEvent)}}};function bT(type,event,group){this.type=type;this.group=group;this.mousePosition=v.coordinates().mousePosition(event);this.mouseOffset=v.coordinates().mouseOffset(event);this.transformedMouseOffset=this.mouseOffset;this.bN=v.coordinates().bN(group.element);this.aM=v.coordinates().aM(group.element)};bT.prototype={toString:function(){return "";}};v.cC.dH={vertical:function(){return function(coordinate,dragEvent){var x=dragEvent.aM.x;return coordinate.x!=x?coordinate.ax.create(x,coordinate.y):coordinate}},horizontal:function(){return function(coordinate,dragEvent){var y=dragEvent.aM.y;return coordinate.y!=y?coordinate.ax.create(coordinate.x,y):coordinate}}}
