
/***************************************************
				Drag and Drop
****************************************************/

var dd_action;
var dd_objectType_target; 
var dd_dragobject_type; 
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;
var dd_moduleLocked_src;
var dd_moduleLocked_target;


function dd_startDrag(dragicon_src, action, dragobject_type, objectId_src, moduleId_src, dragparams){

	// Init global vars
	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 = 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 = dragparams;
	
	// Highlight src-element
	dragicon_src.border = '2';
}

function dd_overDrag(icon, objectType_target, objectId_target, moduleId_target) {	
	
	dd_objectType_target = objectType_target;		
	dd_moduleId_target = moduleId_target;
	dd_objectId_target = objectId_target;		
	
	//dd_debug();return;
	
	// prevent drop of locked on unlocked module and vice versa
	if(dd_objectType_target != 'PANE' && dd_moduleLocked_src != dd_moduleLocked_target)
		return;
		
	// Prevent drop without valid action
	if(dd_action==null)
		return;		
		
	// Prevent drop of illegal object exept Modules on Panes, Products on Modules and Products on ObjectLinks
	if(	!(dd_dragobject_type==OBJECT_TYPE_MODULE && dd_objectType_target==OBJECT_TYPE_PANE) && 
		!(dd_moduleId_src!=dd_moduleId_target && dd_dragobject_type==OBJECT_TYPE_SHOP_PRODUCT_ITEM && dd_objectType_target==OBJECT_TYPE_MODULE) && 
		!(dd_dragobject_type==OBJECT_TYPE_SHOP_PRODUCT_ITEM && dd_objectType_target==OBJECT_TYPE_OBJECTLINK) 
		)
	{
		if(dd_dragobject_type!=dd_objectType_target)
			return;	
	}
			
	// Prevent drop on same object
	if(dd_objectId_src==dd_objectId_target)
		return;	
		
	// Prevent 'Add'-d&d across menus
	if(dd_objectId_src=="-1" && dd_moduleId_src!=dd_moduleId_target)
		return;	
		
	icon.border = '2';
	
	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';	
	
	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&ddaction=' + dd_action + '&dragobjecttype=' + dd_dragobject_type + '&targetobjecttype=' + dd_objectType_target + '&targetID=' + dd_objectId_target + '&srcID=' + dd_objectId_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;
	else
		action_url = action_url + '&' + action_query + '&dragparams=' + dd_params;
						
	location.href = action_url;
}

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);
}


