// needed: eventlib.js
/////////////////////////////////////////////////////
// grid handling
/////////////////////////////////////////////////////
/*grid*////////////////////////////////////////////////////
function doCopyMoveArray(dest, copymove){
	var selRows = gridasGridObj.getProperty("selection/values");
	var action = (copymove) ? "Copy" : "Move";
	// here i submit the info, but maybe someone can do it the script array!!!
	if(typeof(externalCopyMove)=="function"){
		externalCopyMove(dest, copymove, selRows);
	}else{
		alert(action + " rows[" +selRows + "] to row:" + dest);
	}
}
/*grid*////////////////////////////////////////////////////
function isDragZone(sel){//hack
	return (sel.id.indexOf("/box")>0)? true : false ;
}
/*grid*////////////////////////////////////////////////////
function isDropZone(sel){//hack
	return (sel.id.indexOf("/box")>0)? true : false ;
}
/*grid*////////////////////////////////////////////////////
function whatRow(sel){ // hack
	return sel.parentNode.id.split(":")[1]
}
/*grid*////////////////////////////////////////////////////
function redrawGrid(){
	gridasGridObj.setProperty("selection/index", -1);
	gridasGridObj.refresh();
}
/*grid*////////////////////////////////////////////////////
function getSelectedRowIdList(aRow){
	var seR = new Array();
	var selRows = new Array();
	selRows = gridasGridObj.getProperty("selection/values");
	if(selRows.length ==0 || selRows[0]==-1){
		selRows[0] = aRow;
		gridasGridObj.setSelectionValues([aRow]);
	}
	for(var i=0; i<selRows.length; i++){
		seR[i] = "tag50.data.item:"+selRows[i];
	}
	return seR;
}

/////////////////////////////////////////////////////
// event handling
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
function dragdropStop(e){
	var sel =(e && e.target) ? e.target : window.event.srcElement;
	if(isDropZone(sel)){
		var dest = whatRow(sel);
		var copymove = _checkForCtrlKey(e);
		doCopyMoveArray(dest, copymove);
		redrawGrid();
		initAllx(); // calls dragdropAttach(); // otherwise no more dragdrop
	}
	document.body.removeChild(document.getElementById("draggingPart"));
	removeEvent(document, 'mouseup', dragdropStop, false);
	removeEvent(document, 'mousemove', dragdropMove, false);
}
/////////////////////////////////////////////////////
var oSel=null; // just for see the destination

function dragdropMove(e){
	var sel =(e && e.target) ? e.target : window.event.srcElement;
	if(oSel){
		oSel.style.marginTop = "";
	}
	if(isDropZone(sel)){
		sel.style.marginTop="2px";
		oSel = sel;
	}
	document.getElementById("draggingPart").style.left = _pagePosX(e)+ 10; // offset +10 otherwise target == movingdata;
	document.getElementById("draggingPart").style.top = _pagePosY(e);
}
/////////////////////////////////////////////////////
function dragdropStart(e){
	var sel =(e && e.target) ? e.target : window.event.srcElement;
	if(isDragZone(sel)){
		var drag = document.createElement("DIV");
		drag.setAttribute("id","draggingPart");

		var selIds = getSelectedRowIdList(whatRow(sel));
		for(var i=selIds.length-1; i>=0; i--){
			var cl = document.getElementById(selIds[i]).cloneNode(true);
			var d = drag.appendChild(cl);
		}

		var xPos= _absLeft(sel)+sel.offsetWidth;
		var yPos= _absTop(sel);
		drag.style.left = xPos + "px";
		drag.style.top = yPos + "px";
		drag.style.position = "absolute";

		/*-moz-opacity:0.5; filter:alpha(opacity=50);*/
		drag.style.MozOpacity = 0.5;
		drag.style.filter = "alpha(opacity=50)";

		document.body.appendChild(drag);

		// attach following events
		addEvent(document, 'mouseup',dragdropStop);
		addEvent(document, 'mousemove',dragdropMove);
	}
}
/////////////////////////////////////////////////////
function dragdropAttach(){
	var ptr= document.getElementById("tag50.layout/left"); //hack to get the numCol
	if(document.addEventListener){
		ptr.addEventListener('mousedown',dragdropStart,false);
	}else{
		ptr.onmousedown = dragdropStart;
	}
}
/////////////////////////////////////////////////////
//here we start
/////////////////////////////////////////////////////
addEvent( window, "load",  dragdropAttach);
/////////////////////////////////////////////////////
/////////////////////////////////////////////////////
// attach function to the init after refresh
attachAllx("dragdropAttach");
/////////////////////////////////////////////////////

