
var DargObject;
var Dom = YAHOO.util.Dom;
var Event = YAHOO.util.Event;
var DDM = YAHOO.util.DragDropMgr;
var LastCursor;
var blockIdArray = new Array();

YAHOO.example.DDApp = {
    init: function() {
        var cols=3,i,j;
        for (i=1;i<cols+1;i=i+1) {
            new YAHOO.util.DDTarget("ul"+i);
        }
        
        for(i=0;i<blockIdArray.length;i++)
        	new YAHOO.example.DDList("block" + blockIdArray[i].bid,  blockIdArray[i].position);
    }
};


YAHOO.example.DDList = function(id, sGroup, config) {

    YAHOO.example.DDList.superclass.constructor.call(this, id, sGroup, config);

    var el = this.getDragEl();
    Dom.setStyle(el, "opacity", 0.67); 

    this.goingUp = false;
    this.lastY = 0;
};

YAHOO.extend(YAHOO.example.DDList, YAHOO.util.DDProxy, {

    startDrag: function(x, y) {
        
        var dragEl = this.getDragEl();
        var clickEl = this.getEl();
        Dom.setStyle(clickEl, "visibility", "hidden");                
        
        dragEl.innerHTML = clickEl.innerHTML;
        var region = YAHOO.util.Region.getRegion(clickEl);

        Dom.setStyle(dragEl, "color", Dom.getStyle(clickEl, "color"));
        Dom.setStyle(dragEl, "backgroundColor", Dom.getStyle(clickEl, "backgroundColor"));
        Dom.setStyle(dragEl, "border", "0px");
        Dom.setStyle(dragEl, "text-align", "right");
        Dom.setStyle(dragEl, "height", region.bottom - region.top + 10);
        Dom.setStyle(dragEl, "direction", Dom.getStyle(clickEl, "direction"));
        
        if (clickEl.previousSibling)
        	dragEl.previousSiblingId = clickEl.previousSibling.id;               
        else
            dragEl.previousSiblingId = 0;
                       
        LastCursor = Dom.getStyle(document.body, "cursor");
        Dom.setStyle(document.body, "cursor", 'move');               
        YAHOO.util.Event.removeListener("Body", "click"); 
    },

    endDrag: function(e) {		
        var srcEl = this.getEl();
        var proxy = this.getDragEl();

        
        Dom.setStyle(proxy, "visibility", "");
        var a = new YAHOO.util.Motion( 
            proxy, { 
                points: { 
                    to: Dom.getXY(srcEl)
                }
            }, 
            0.2, 
            YAHOO.util.Easing.easeOut 
        )
        var proxyid = proxy.id;
        var thisid = this.id;
        DargObject = proxy;
        
        a.onComplete.subscribe(function() {
                Dom.setStyle(proxyid, "visibility", "hidden");
                Dom.setStyle(proxyid, "top", "0px");                        
                Dom.setStyle(proxyid, "left", "0px");                        
                Dom.setStyle(thisid, "visibility", "");
                Dom.setStyle(document.body, "cursor", LastCursor);
                document.getElementById(proxyid).innerHTML = '';
			    var blocksId = new Array();
			    var blocksCookie = '';
			    for (i=1; i<=3; i++) {
			        var place = document.getElementById('ul'+i);
			        blocksId[i - 1] = '';
			        for(var idx=0;idx<place.childNodes.length;idx++) 
			        	if (place.childNodes[idx].tagName == "LI")
			        		blocksId[i - 1] += place.childNodes[idx].id.replace('block', '') + ',';
			       	if (idx > 0)
			       		blocksId[i - 1] = blocksId[i - 1].substr(0, blocksId[i - 1].length - 1);       		
			       	blocksCookie += i + '=>' + blocksId[i - 1] + ':'
			    }
			    blocksCookie = blocksCookie.substr(0, blocksCookie.length - 1);      					    
                createCookie("homePageBlocks_"+lang, blocksCookie, 365);               	
                if ((srcEl.previousSibling!=null && proxy.previousSiblingId != srcEl.previousSibling.id) || (srcEl.previousSibling == null && proxy.previousSiblingId != 0) || (srcEl.parentNode != proxy.parentNode) ) {
					document.getElementById("_pnblockid").value = srcEl.id;
					if (srcEl.previousSibling == null)
				  		document.getElementById("_pnupblockid").value = srcEl.parentNode.id;
				  	else
				  		document.getElementById("_pnupblockid").value = srcEl.previousSibling.id;				  		
                }
            });
        a.animate();
    },

    onDragDrop: function(e, id) {
        
        if (DDM.interactionInfo.drop.length === 1) {

            
            var pt = DDM.interactionInfo.point; 

            
            var region = DDM.interactionInfo.sourceRegion; 

            
            if (!region.intersect(pt)) {
                var destEl = Dom.get(id);
                var destDD = DDM.getDDById(id);
                destEl.appendChild(this.getEl());
                destDD.isEmpty = false;
                DDM.refreshCache();
            }

        }
    },

    onDrag: function(e) {

        
        var y = Event.getPageY(e);

        if (y < this.lastY) {
            this.goingUp = true;
        } else if (y > this.lastY) {
            this.goingUp = false;
        }

        this.lastY = y;
    },

    onDragOver: function(e, id) {
    
        var srcEl = this.getEl();
        var destEl = Dom.get(id);

        
        if (destEl.nodeName.toLowerCase() == "li") {
            var orig_p = srcEl.parentNode;
            var p = destEl.parentNode;

            if (this.goingUp) {
                p.insertBefore(srcEl, destEl); 
            } else {
                p.insertBefore(srcEl, destEl.nextSibling); 
            }

            DDM.refreshCache();
        }
    }
});
Event.onDOMReady(YAHOO.example.DDApp.init, YAHOO.example.DDApp, true);
