/**
 * eCommunities ECMS Context Menu Class 
 * @author Kevin Farley
 * @version 2.0
 * @requires ECMS.ECORE.geometry
 * @requires ECMS.ECORE.rpc
 */

// Declare the required ECMS namespaces if they do not already exist
if (ECMS == null || typeof(ECMS) != "object") { var ECMS = new Object(); }
if (ECMS.ECORE == null || typeof(ECMS.ECORE) != "object") { ECMS.ECORE = new Object(); }
if (ECMS.ECORE.contextMenu == null || typeof(ECMS.ECORE.contextMenu) != "object") { ECMS.ECORE.contextMenu = new Object(); }

ECMS.ECORE.contextMenu = {

	hideMenu: false,
	
	show: function (eventID, cMenu, menuHeight, menuItems) {
		// First run setDimensions for positioning guide values
		ECMS.ECORE.geometry.setDimensions();
	
		var elm = document.getElementById(cMenu);
		var evt = (window.event) ? window.event : eventID;
		
		if (evt.clientY + 5 + menuHeight > ECMS.ECORE.geometry.viewportHeight) { 
			elm.style.top = ECMS.ECORE.geometry.viewportHeight + ECMS.ECORE.geometry.verticalScroll - menuHeight + 'px'; 
		} else { 
			elm.style.top = evt.clientY + ECMS.ECORE.geometry.verticalScroll + 5 + 'px'; 
		}
		
		if (evt.clientX + 5 + 150 > ECMS.ECORE.geometry.viewportWidth) { 
			elm.style.left = ECMS.ECORE.geometry.viewportWidth + ECMS.ECORE.geometry.horizontalScroll - 150 + 'px'; 
		} else { 
			elm.style.left = evt.clientX + ECMS.ECORE.geometry.horizontalScroll + 5 + 'px'; 
		}
		
		var items = menuItems.split("::");
		for (var i in items) {
		  var menuItem = items[i].split(",");
		  if ((menuItem.length > 2) && ((menuItem[2] == 'disabled') || (menuItem[2] == 1))) { // The 1 is a deprecated value, use the string identifier.
			document.getElementById(menuItem[0]).className = 'ECMS_contextDisabled';
			document.getElementById(menuItem[0]).href = "";
			document.getElementById(menuItem[0]).ecmstags = null;
			document.getElementById(menuItem[0]).onclick = null;
		  } else if ((menuItem.length > 2) && (menuItem[2] == 'onclick')) {
			document.getElementById(menuItem[0]).className = 'ECMS_contextLink';
			document.getElementById(menuItem[0]).href = "";
			document.getElementById(menuItem[0]).ecmstags = menuItem[1];
			document.getElementById(menuItem[0]).onclick = ECMS.ECORE.contextMenu.menu;
		  } else {
			document.getElementById(menuItem[0]).className = 'ECMS_contextLink';
			document.getElementById(menuItem[0]).href = menuItem[1];
			document.getElementById(menuItem[0]).ecmstags = null;
			document.getElementById(menuItem[0]).onclick = null;
		  }
		}
		hidecm = "ECMS.ECORE.contextMenu.hide('" + cMenu + "')";
		ECMS.ECORE.contextMenu.hideMenu = window.setTimeout(hidecm,2000);
		elm.style.display = "block";
		// Choose return method based on IE or everyone else
		if (evt.preventDefault) {
			evt.preventDefault(); // everyone else
		} else { 
			evt.returnValue = false; // IE only
		}
	},
	
	hide: function (cMenu) { document.getElementById(cMenu).style.display = "none"; },
	onCMenu: function () { window.clearTimeout(ECMS.ECORE.contextMenu.hideMenu); },
	offCMenu: function (cMenu) { 
		hidecm = "ECMS.ECORE.contextMenu.hide('" + cMenu + "')";
		ECMS.ECORE.contextMenu.hideMenu = window.setTimeout(hidecm,500); 
	},
	
	menu: function () {
		var tags = this.ecmstags.split('/');
		var taglist = new Array();
		var tag;
		var i;
		for (i in tags) { 
			tag = tags[i].split('=');
			taglist[tag[0]] = tag[1]; 
		}
		switch(this.id) {
		case('folderCut'):
		case('mediaCut'):
			ECMS.ECORE.contextMenu.cut(taglist['type'],taglist['cid']);
			ECMS.ECORE.contextMenu.hide(taglist['menu']);
			return false;
			break;
		case('folderCopy'):
		case('mediaCopy'):
			ECMS.ECORE.contextMenu.copy(taglist['type'],taglist['cid']);
			ECMS.ECORE.contextMenu.hide(taglist['menu']);
			return false;
			break;
		case('folderPaste'):
			ECMS.ECORE.contextMenu.paste(taglist['type'],taglist['cid']);
			ECMS.ECORE.contextMenu.hide(taglist['menu']);
			return false;
			break;
		}
	},
	
	selectItem: function (item,type,itemID) {
		var maxFiles = document.getElementById('ECMS_fileMax');
		if (maxFiles) {
			maxFiles = maxFiles.value;
		} else {
			maxFiles = '-1';
		}
		
		var pageLoaded = document.getElementById('ECMS_pageLoaded').value;
		var rpc = document.getElementById('ECMS_RPC');
		if (item.className == 'list-cell-icon') {
			rpc.src = 'rpc.php?rpc=select&loaded=' + pageLoaded + '&' + type + 'ID=' + itemID + '&max=' + maxFiles;
			item.className = 'list-cell-icon-selected';
		} else if (item.className == 'list-cell-icon-selected') {
			rpc.src = 'rpc.php?rpc=unselect&loaded=' + pageLoaded + '&' + type + 'ID=' + itemID;
			item.className = 'list-cell-icon';
		} else if (item.className == 'list-cell-thumb') {
			rpc.src = 'rpc.php?rpc=select&loaded=' + pageLoaded + '&' + type + 'ID=' + itemID + '&max=' + maxFiles;
			item.className = 'list-cell-thumb-selected';
		} else if (item.className == 'list-cell-thumb-selected') {
			rpc.src = 'rpc.php?rpc=unselect&loaded=' + pageLoaded + '&' + type + 'ID=' + itemID;
			item.className = 'list-cell-thumb';
		}
		return false;
	},
	
	cut: function (type,itemID) {
		var pageLoaded = document.getElementById('ECMS_pageLoaded').value;
		var rpc = document.getElementById('ECMS_RPC');
		rpc.src = 'rpc.php?rpc=cutItems&loaded=' + pageLoaded + '&' + type + 'ID=' + itemID;
	},
	
	copy: function (type,itemID) {
		var pageLoaded = document.getElementById('ECMS_pageLoaded').value;
		var rpc = document.getElementById('ECMS_RPC');
		rpc.src = 'rpc.php?rpc=copyItems&loaded=' + pageLoaded + '&' + type + 'ID=' + itemID;
	},
	
	paste: function (type,folderID) {
		var rpc = document.getElementById('ECMS_RPC');
		rpc.src = 'rpc.php?rpc=pasteItems&folderID=' + folderID;
	}
	
}
