
/***************************************************
				Drag and Drop
****************************************************/

var dd_action;
var dd_objectType_target; 
var dd_dragobject_type; 
var dd_tabId;
var dd_moduleId_src;
var dd_moduleId_target;
var dd_menuType_target;
var dd_menuSupportedLevels_target;
var dd_objectId_src;
var dd_objectId_target;
var dd_dragicon_src;
var dd_params_src;
var dd_params_target;
var dd_moduleLocked_src;
var dd_moduleLocked_target;
var dd_tabWorkflowState;


function dd_startDrag(tabId, dragicon_src, action, dragobject_type, objectId_src, moduleId_src, dragparams){

	// Init global vars
	dd_tabId = tabId;
	dd_action = null;
	dd_objectType_target = null; 
	dd_dragobject_type = null; 
	dd_moduleId_src = null;
	dd_moduleId_target = null;
	dd_objectId_src = null;
	dd_objectId_target = null;
	dd_dragicon_src = null;
	dd_params_src = null;
	dd_params_target = null;

	// Set global vars
	dd_action = action;
	dd_dragicon_src = dragicon_src;
	dd_dragobject_type = dragobject_type;
	dd_objectId_src = objectId_src;		
	dd_moduleId_src	= moduleId_src;
	dd_params_src = dragparams;	
	
	// Highlight src-element
	dragicon_src.border = '2';
}

function dd_overDrag(icon, objectType_target, objectId_target, moduleId_target, dragparams) {	
	
	dd_objectType_target = objectType_target;		
	dd_moduleId_target = moduleId_target;
	dd_objectId_target = objectId_target;
	dd_params_target = 	dragparams;
	
	var debug = false;	
	
	var divJSDebug = getObject("divJSDebug");
	
	//dd_debug();return;
	
	// prevent drop of locked on unlocked module and vice versa
	if(dd_dragobject_type == OBJECT_TYPE_MODULE && dd_objectType_target != OBJECT_TYPE_PANE && dd_moduleLocked_src != dd_moduleLocked_target){
		if(debug)
			divJSDebug.innerText = "prevent drop of locked on unlocked module and vice versa";
		return;			
	}
	
	// Prevent d&d for locked modules when workflow state is not 1
	if(dd_tabWorkflowState != 1 && (dd_moduleLocked_src == 1 || dd_moduleLocked_target == 1))
		return;
		
	// Prevent drop without valid action
	if(dd_action==null){
		if(debug)
			divJSDebug.innerText = "Prevent drop without valid action";
		return;			
	}		
		
	// Prevent drop of illegal object exept Modules on Panes
	if(	!(dd_dragobject_type==OBJECT_TYPE_MODULE && dd_objectType_target==OBJECT_TYPE_PANE))
	{
		if(debug)
			divJSDebug.innerText = "Prevent drop of illegal object";
		if(dd_dragobject_type!=dd_objectType_target)
			return;	
	}
			
	// Prevent drop on same object
	if(dd_objectId_src==dd_objectId_target){
		if(debug)
			divJSDebug.innerText = "Prevent drop on same object";
		return;			
	}
	
	if(dd_dragobject_type==OBJECT_TYPE_TAB && dd_objectType_target==OBJECT_TYPE_TAB){
		// Prevent d&d of MenuItems with children on List Menus
		if(dd_menuSupportedLevels_target!=-1 && dd_params_src[0]){
			if(debug)
				divJSDebug.innerText = "Prevent d&d of MenuItems with children on List Menus";
			return;
		}		 
	}
		
	// Prevent 'Add'-d&d across menus
	if(dd_objectId_src=="-1" && dd_moduleId_src!=dd_moduleId_target){
		if(debug)
			divJSDebug.innerText = "Prevent 'Add'-d&d across menus";
		return;			
	}				
		
	icon.border = '2';
	if(debug)
		divJSDebug.innerText = "";
	window.event.returnValue = false;	
		
}

function dd_leaveDrag(icon) {	
	if(icon.id!=dd_dragicon_src.id)
		icon.border = '0';
}


function dd_endDrag(icon) {		
	icon.border = '0';
}

function dd_drop(icon) {	

	if(dd_dragicon_src!=null)
		dd_dragicon_src.border = '0';
	icon.border = '0';	
	
	// Prevent d&d of selected MenuItems onto another menu
	if(dd_dragobject_type==OBJECT_TYPE_TAB && dd_objectType_target==OBJECT_TYPE_TAB){
		if(dd_moduleId_src!=dd_moduleId_target  && dd_params_src[1]){
			alert(MOVE_MENUITEM_FAILED);			
			return;
		}
	}
	
	if(dd_action=="movetab" && dd_objectType_target==OBJECT_TYPE_TAB){
	
		// open action selection popup for menu-d&d
		if(dd_objectId_target=="-1")
			dd_action_execute('assigntab');
		else
			dd_MenuItemShowActionSelectionPopup(icon.id);	
			
	} 
	else if(dd_action=="movecontent"){
		__popupAdminMenu(icon.id, 'divContent_dd_ActionSelection', 5, 5);
	}
	else if(dd_action=="movemodule" && dd_objectType_target!=OBJECT_TYPE_PANE){
		__popupAdminMenu(icon.id, 'divModule_dd_ActionSelection', 5, 5);
	}	
	else
		dd_action_execute();		
}

function dd_action_execute(action) {	

	if(arguments.length < 2)
		params = '';
		
	if(arguments.length > 0)
		dd_action = action;	
		
	var action_url = location.href;		
	
	var action_query = 'evt=dnd&ddtabId=' + dd_tabId + '&ddaction=' + dd_action + '&dragobjecttype=' + dd_dragobject_type + '&targetobjecttype=' + dd_objectType_target + '&targetID=' + dd_objectId_target + '&srcID=' + dd_objectId_src + '&dragparams=' + dd_params_src;
	
	if(dd_moduleId_src!=null)
		action_query += '&moduleId_src=' + dd_moduleId_src;
	
	if(dd_moduleId_target!=null)
		action_query += '&moduleId_target=' + dd_moduleId_target;
	
	/*if(action_url.search(/\?/gi)==-1)
		action_url = action_url + '?'+ action_query + '&dragparams=' + dd_params_src;
	else
		action_url = action_url + '&' + action_query + '&dragparams=' + dd_params_src;*/
						
	var callback;
	if(	dd_action==EVENT_DND_MOVE_MODULE || 
		dd_action==EVENT_DND_MOVE_MODULE_UP || 
		dd_action==EVENT_DND_MOVE_MODULE_DOWN){
		callback = 'dd_Callback_ReloadPage';
	} else
		callback = 'dd_Callback_ReloadModules';
		
	ajx_SendRequest("POST", "admin/QuickEditEvtHandler.aspx", action_query, true, callback);
}

function dd_Callback_ReloadPage(response){
	location.reload();
}

function dd_Callback_ReloadModules(response){
	if(dd_moduleId_src!=dd_moduleId_target)
		qir_RefreshModule(dd_moduleId_src, dd_moduleId_target);
	else
		qir_RefreshModule(dd_moduleId_src);
}

function dd_debug(){

	var debug = 'dd_action:' + dd_action; 
	debug += '\r\ndd_dragobject_type: ' + dd_dragobject_type;
	debug += '\r\ndd_objectType_target: ' + dd_objectType_target;
	debug += '\r\dd_objectId_src: ' + dd_objectId_src;
	debug += '\r\dd_objectId_target: ' + dd_objectId_target;
	debug += '\r\dd_moduleId_src: ' + dd_moduleId_src;
	debug += '\r\dd_moduleId_target: ' + dd_moduleId_target;
	
	alert(debug);
}

/***************************************************
				Module Drag and Drop
****************************************************/


var dd_tbl_module_src;

function dd_pane_leaveDrag(pane) {	
	pane.className = 'body_tbl_dotted_bottom';
}

function dd_pane_drop(pane) {	
	pane.className = 'body_tbl_dotted_bottom';	
	dd_action_execute();
}

/***************************************************
				Menuitem Drag and Drop
****************************************************/

function dd_MenuItemShowActionSelectionPopup(iconId){
	var tmp1 = getObject('tr_dd_action_pop_moveup');
	var tmp2 = getObject('tr_dd_action_pop_movedown');
	var tmp3 = getObject('tr_dd_action_pop_moveleft');
	var tmp4 = getObject('tr_dd_action_pop_moveright');
	var tmp5 = getObject('tr_dd_action_pop_assign');
	
	if(dd_menuType_target==0){
		tmp1.style.display = 'none';
		tmp2.style.display = 'none';
		tmp3.style.display = 'inline';
		tmp4.style.display = 'inline';
	} else {
		// vertical menu
		tmp1.style.display = 'inline';
		tmp2.style.display = 'inline';
		tmp3.style.display = 'none';
		tmp4.style.display = 'none';
	}
	
	if(dd_menuSupportedLevels_target==-1 || dd_menuSupportedLevels_target > 1)
		tmp5.style.display = 'inline';
	else
		tmp5.style.display = 'none';
	
	dd_menuType_target = null;
	dd_menuSupportedLevels_target = null;
	
	__popupAdminMenu(iconId, 'divMenu_dd_ActionSelection', 5, 5);
}

/***************************************************
			Site Admin-Icons Drag and Drop
****************************************************/


var sai_nowX;
var sai_nowY;
var sai_offsetx;
var sai_offsety;
var sai_actual_pos_Y = 0;


function GetScrollHeight(){
	var scrollHeight = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	return scrollHeight;
}


window.attachEvent("onscroll", MoveAdminBtns);

function MoveAdminBtns(){
	o = document.getElementById('layerAdminBtns');
	
	if(o != null){
		if(sai_actual_pos_Y > parseInt(document.body.offsetHeight) - 135)
			sai_actual_pos_Y = parseInt(document.body.offsetHeight) - 135;
	
		o.style.top = sai_actual_pos_Y + GetScrollHeight();
		 //__toggleIFrameShim(o.id, 1, 'sai_shimframe');  
	}
}


function sai_dd_init(o){
	sai_offsetx=event.clientX;
    sai_offsety=event.clientY;
	sai_nowX=parseInt(o.style.left);
    sai_nowY=parseInt(o.style.top);  
    //__toggleIFrameShim(o.id, 1, 'sai_shimframe');  
}

function sai_dd(o){
	var posX=sai_nowX+event.clientX-sai_offsetx;
	var posY=sai_nowY+event.clientY-sai_offsety;  
	
	if(posX < 0)
		posX = 0;
	
	if(posX > parseInt(document.body.offsetWidth) - 110)
		posX = parseInt(document.body.offsetWidth) - 110;
	
	if(posY < 0)
		posY = 0;
	
	if(posY > parseInt(document.body.offsetHeight) + GetScrollHeight() - 135)
		posY = parseInt(document.body.offsetHeight) + GetScrollHeight()  - 135;
			
	
	o.style.left=posX;
	o.style.top=posY;
	
	//__toggleIFrameShim(o.id, 1, 'sai_shimframe');
	
	return false;
}

function sai_dd_end(o){
	var new_x=o.style.left;
	var new_y=o.style.top;
	
	// Save new Position in Session	
	sai_actual_pos_Y = parseInt(o.style.top) - GetScrollHeight();
	var url = "admin/QuickEditEvtHandler.aspx";
	var body = "sai_new_x=" + new_x + "&sai_new_y=" + new_y;		
	ajx_SendRequest("POST", url, body, true);	
}

/***************************************************
			Site Admin Workflow Drag and Drop
****************************************************/


var saw_nowX;
var saw_nowY;
var saw_offsetx;
var saw_offsety;
var saw_actual_pos_Y = 0;


function GetScrollHeight(){
	var scrollHeight = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
	return scrollHeight;
}


window.attachEvent("onscroll", MoveAdminWorkflow);

function MoveAdminWorkflow(){
	o = document.getElementById('layerAdminWorkflow');
	
	if(o != null){
		if(saw_actual_pos_Y > parseInt(document.body.offsetHeight) - 135)
			saw_actual_pos_Y = parseInt(document.body.offsetHeight) - 135;
	
		o.style.top = saw_actual_pos_Y + GetScrollHeight();
		 //__toggleIFrameShim(o.id, 1, 'saw_shimframe');  
	}
}


function saw_dd_init(o){
	saw_offsetx=event.clientX;
    saw_offsety=event.clientY;
	saw_nowX=parseInt(o.style.left);
    saw_nowY=parseInt(o.style.top);  
    //__toggleIFrameShim(o.id, 1, 'saw_shimframe');  
}

function saw_dd(o){
	var posX=saw_nowX+event.clientX-saw_offsetx;
	var posY=saw_nowY+event.clientY-saw_offsety;  
	
	if(posX < 0)
		posX = 0;
	
	if(posX > parseInt(document.body.offsetWidth) - 110)
		posX = parseInt(document.body.offsetWidth) - 110;
	
	if(posY < 0)
		posY = 0;
	
	if(posY > parseInt(document.body.offsetHeight) + GetScrollHeight() - 135)
		posY = parseInt(document.body.offsetHeight) + GetScrollHeight()  - 135;
			
	
	o.style.left=posX;
	o.style.top=posY;
	
	//__toggleIFrameShim(o.id, 1, 'saw_shimframe');
	
	return false;
}

function saw_dd_end(o){
	var new_x=o.style.left;
	var new_y=o.style.top;
	
	// Save new Position in Session	
	saw_actual_pos_Y = parseInt(o.style.top) - GetScrollHeight();
	var url = "admin/QuickEditEvtHandler.aspx";
	var body = "saw_new_x=" + new_x + "&saw_new_y=" + new_y;		
	ajx_SendRequest("POST", url, body, true);	
}



