var dragAndDropObject=new Class({Implements:[Options],options:{containerElement:null,helpElement:null,animationSpeed:0,animationSpeedTransfer:200,dndElements:[],dndDragObj:null,dragDataX:null,dragDataY:null,dragDataIndex:null,dragDataVirtualPlace:null,dragDataLeft:null,dragDataRight:null,dragDataUp:null,dragDataDown:null,dragDataTimer:null,numColumns:3,width:145,height:48,OffSetShiftX:75,OffSetShiftY:24,spaceHorizontal:1,spaceVertical:1,dragSnap:6,borderElement:null,tempElement:null,garbageIndex:-1,borderLeft:0,otherClass:null,otherOffsetX:-451,otherOffsetY:0,sendToEnd:true},initialize:function(b){this.setOptions(b);this.initializeElements()},initializeElements:function(){this.options.dndElements=this.options.containerElement.getElements("div");this.options.containerElement.setStyle("height",((Math.floor(this.options.dndElements.length/this.options.numColumns)+1)*(this.options.height+this.options.spaceVertical))-this.options.spaceVertical+8)},draw:function(){$each(this.options.dndElements,function(c,b){c.setStyle("top",this.getTop(b));c.setStyle("left",this.getLeft(b))}.bind(this))},onDrag:function(c,e){var b=parseInt(c.getStyle("left"))-this.options.dragDataX;var d=parseInt(c.getStyle("top"))-this.options.dragDataY;if(b>this.options.OffSetShiftX&&this.options.dragDataRight){if(this.options.dragDataVirtualPlace>=0){if((parseInt(this.options.dragDataVirtualPlace)!=(Math.ceil(this.options.dndElements.length/this.options.numColumns)*this.options.numColumns)-1)){this.options.dragDataVirtualPlace=this.options.dragDataVirtualPlace+1}}else{if((this.options.dragDataIndex+1)==this.options.dndElements.length){this.options.dragDataVirtualPlace=this.options.dragDataIndex+1}else{this.arraySwap(this.options.dragDataIndex,this.options.dragDataIndex+1)}}this.createDragData(c)}if(b<-this.options.OffSetShiftX&&this.options.dragDataLeft){if(this.options.dragDataVirtualPlace>=0){this.options.dragDataVirtualPlace=this.options.dragDataVirtualPlace-1}else{this.arraySwap(this.options.dragDataIndex,this.options.dragDataIndex-1)}this.createDragData(c)}if(d>this.options.OffSetShiftY&&this.options.dragDataDown){if(this.options.dragDataIndex+this.options.numColumns>=this.options.dndElements.length){this.options.dragDataVirtualPlace=this.options.dragDataIndex+this.options.numColumns;this.arraySwap(this.options.dragDataIndex,this.options.dndElements.length-1)}else{this.arraySwap(this.options.dragDataIndex,this.options.dragDataIndex+this.options.numColumns)}this.createDragData(c)}if(d<-this.options.OffSetShiftY&&this.options.dragDataUp){if(this.options.dragDataVirtualPlace>=0){this.arraySwap(this.options.dragDataIndex,this.options.dragDataVirtualPlace-this.options.numColumns);this.options.dragDataVirtualPlace=-1}else{this.arraySwap(this.options.dragDataIndex,this.options.dragDataIndex-this.options.numColumns)}this.createDragData(c)}if(this.delayTimer!=null){$clear(this.delayTimer)}if(e!=2){this.delayTimer=this.onDrag.delay(1500,this,[c,2])}},moveEnable:function(){if(this.options.dndDragObj==null){this.options.dndDragObj=new Array(this.options.dndElements.length);$each(this.options.dndElements,function(d,b){d.removeEvents();d.getElement("img").ondragstart=function(){return false};var c=new Drag(d,{onStart:function(e){this.createDragData(e);this.options.dragDataVirtualPlace=-1;e.setStyle("z-index","10");return false}.bind(this),onDrag:function(e){this.options.tempElement=e;this.onDrag(e)}.bind(this),onComplete:function(e){this.animate(e);this.options.dragDataX=null;this.options.dragDataY=null;this.options.dragDataIndex=null;this.options.dragDataVirtualPlace=null;this.options.dragDataLeft=null;this.options.dragDataRight=null;this.options.dragDataUp=null;this.options.dragDataDown=null}.bind(this)});this.options.dndDragObj[b]=c;elem2=d.getElements("span")[0];elem2.removeEvents();elem2.addEvent("click",function(){this.clickHandlerAdd(d)}.bind(this))}.bind(this))}else{$each(this.options.dndDragObj,function(b){b.attach()}.bind(this))}},createDragData:function(c){var b=this.options.dndElements.indexOf(c);this.options.dragDataIndex=b;if(b%this.options.numColumns!=0){this.options.dragDataLeft=true}else{this.options.dragDataLeft=false}if((b%this.options.numColumns!=(this.options.numColumns-1))){this.options.dragDataRight=true}else{this.options.dragDataRight=false}if(b>=this.options.numColumns){this.options.dragDataUp=true}else{this.options.dragDataUp=false}if(Math.floor(this.options.dndElements.length/this.options.numColumns)>Math.floor(b/this.options.numColumns)&&((this.options.dndElements.length%this.options.numColumns!=0)||this.options.dndElements.length-this.options.numColumns>b)){this.options.dragDataDown=true}else{this.options.dragDataDown=false}this.options.dragDataY=this.getTop(b);this.options.dragDataX=this.getLeft(b)},findGarbage:function(){var b=-1;$each(this.options.dndElements,function(d,c){if(d.id=="divider"){b=c;return}});return b},saveData:function(){drdkGuide.personal.channels.empty();$each(this.options.dndElements,function(c,b){altText=c.getElement("img").alt;drdkGuide.personal.channel.add(altText)});drdkGuide.personal.channel.set()},moveDisable:function(){$each(this.options.dndElements,function(c,b){c.removeEvents();c.addEvent("click",function(){this.clickHandlerAdd(c)}.bind(this))}.bind(this));if(this.options.dndDragObj!=null){$each(this.options.dndDragObj,function(b){b.detach()}.bind(this))}},arraySwap:function(b,d){var c=this.options.dndElements[b];var e=null;if(b<d){if(d>this.options.dndElements.length){d=this.options.dndElements.length-1}e=Array((d-b+1));for(counter=b;counter<d;counter++){this.options.dndElements[counter]=this.options.dndElements[counter+1];e[counter-b]=counter}this.options.dndElements[counter]=c;e[counter-b]=counter;b=counter}else{e=Array((b-d-1));for(counter=b;counter>d;counter--){this.options.dndElements[counter]=this.options.dndElements[counter-1];e[b-counter]=counter}this.options.dndElements[counter]=c;e[b-counter]=counter;b=counter}$each(e,function(f){if(b!=f){this.animate(this.options.dndElements[f])}}.bind(this))},animate:function(c){var b=this.options.dndElements.indexOf(c);var d=new Fx.Morph(c,{duration:this.options.animationSpeed});d.start({left:[this.getLeft(b)],top:[this.getTop(b)],"z-index":0})},getTop:function(b){return(Math.floor(b/this.options.numColumns)*(this.options.height+this.options.spaceVertical))},getLeft:function(b){return((b%this.options.numColumns)*(this.options.width+this.options.spaceHorizontal))+this.options.borderLeft},getChannelPosInArray:function(b,c){for(pos=0;pos<b.length;pos++){if(b[pos].source_url==c){return pos}}},addElement:function(d,b,c){d.setStyle("z-index","0");if(b){d.clone().inject(this.options.containerElement)}else{if(this.options.dndElements.length==0){d.clone().inject(this.options.containerElement)}else{if(c==-1){d.clone().inject(this.options.dndElements[1],"before")}else{if(c==this.options.dndElements.length-2){d.clone().inject(this.options.dndElements[this.options.dndElements.length-3],"after")}else{d.clone().inject(this.options.dndElements[c],"after")}}}}d.setStyle("z-index","50");this.options.dndDragObj=null;this.initializeElements();this.draw();if(this.options.sendToEnd==true){this.moveDisable()}else{this.moveEnable()}if(this.options.dndElements.length>0){this.options.containerElement.removeClass("hide");if(this.options.helpElement!=null){this.options.helpElement.addClass("hide")}}else{this.options.containerElement.addClass("hide");if(this.options.helpElement!=null){this.options.helpElement.removeClass("hide")}}},getAddPositionEndX:function(){return this.getLeft(this.options.dndElements.length)},getAddPositionEndY:function(){return this.getTop(this.options.dndElements.length)},getOriginalPosition:function(c){endPos=null;var b=this.getChannelPosInArray(drdkGuide.channels,c.getElements("img")[0].alt);for(a=0;a<this.options.dndElements.length;a++){pos=this.getChannelPosInArray(drdkGuide.channels,this.options.dndElements[a].getElements("img")[0].alt);if(pos>b){return a-1}}return this.options.dndElements.length},getAddPositionInListX:function(b){return this.getLeft(b)},getAddPositionInListY:function(b){return this.getTop(b)},clickHandlerAdd:function(d){d.removeEvents();d.getElements("span")[0].removeEvents();var c=this.options.dndElements.indexOf(d);if(this.options.sendToEnd==false){newPos=this.options.otherClass.getOriginalPosition(d);var b=this.options.otherClass.getAddPositionInListX(newPos+1);var g=this.options.otherClass.getAddPositionInListY(newPos+1);if(this.options.otherClass.options.dndElements.length!=0){var f=new Array(this.options.otherClass.options.dndElements.length+1);for(a=0;a<newPos+1;a++){f[a]=this.options.otherClass.options.dndElements[a]}f[a]=d;for(a=a+1;a<this.options.otherClass.options.dndElements.length+1;a++){f[a]=this.options.otherClass.options.dndElements[a-1]}this.options.otherClass.options.dndElements=f;for(t=newPos+2;t<this.options.otherClass.options.dndElements.length;t++){this.options.otherClass.animate(this.options.otherClass.options.dndElements[t])}}}else{newPos=null;var b=this.options.otherClass.getAddPositionEndX();var g=this.options.otherClass.getAddPositionEndY()}b=this.options.otherOffsetX+b;g=this.options.otherOffsetY+g;var e=new Fx.Morph(d,{duration:this.options.animationSpeedTransfer});d.setStyle("z-index","50");e.start({left:[b],top:[g]}).chain(function(){this.options.otherClass.addElement(d,this.options.sendToEnd,newPos);d.dispose();this.options.containerElement.setStyle("height",((Math.floor(this.options.dndElements.length/this.options.numColumns)+1)*(this.options.height+this.options.spaceVertical))-this.options.spaceVertical+8);d.setStyle("z-index","0")}.bind(this));this.options.dndElements.erase(this.options.dndElements[c]);for(t=c;t<this.options.dndElements.length;t++){this.animate(this.options.dndElements[t])}if(this.options.dndElements.length>0){this.options.containerElement.removeClass("hide");if(this.options.helpElement!=null){this.options.helpElement.addClass("hide")}}else{this.options.containerElement.addClass("hide");if(this.options.helpElement!=null){this.options.helpElement.removeClass("hide")}}}});
