
/***************************************************
				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);
}

/***************************************************
			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);	
}



