//
// Copyright Just2Easy Limited 2010
//     All rights reserved
//

var ie  = document.all
var ns6 = document.getElementById&&!document.all
var menuShowing = undefined ;
var menuSelObj = null;
var overpopupmenu = false;
var fileId = "";

function getElementWidth(o){
   if (typeof o.clip !== "undefined")
      return o.clip.width;
   else {
      if (o.style.pixelWidth)
         return o.style.pixelWidth;
      else
         return o.offsetWidth;
   }
}

function getElementHeight(o){
   if (typeof o.clip !== "undefined")
      return o.clip.height;
   else {
      if (o.style.pixelHeight)
         return o.style.pixelHeight;
      else 
         return o.offsetHeight;
   }
}

function getScrollXY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	
	return {x:scrOfX, y:scrOfY};
}

function mouseSelect(e){
	var obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;
  
	if( menuShowing != undefined ){
		if( overpopupmenu==false ){
			hideDialogue();
			return true;
		}
    
		return true;
	}
  
	return true;
}

// APPLE/MOBILE DEVICE FUNCTIONS
function getFileIdByPoint(x, y) {
    var elem = document.elementFromPoint(x, y);
    
    if (elem != undefined){
    	fileId = getTableCell(elem);
    	return fileId;
    }
    
    return "";
}

function getFilenameFromFileId(fileId) {
	if (fileId != "") {
		var node = document.getElementById(fileId);
		
		if (node != undefined) {
			node = node.firstChild;
			return node.nodeValue;
		}
	}
	return "";
}

function hideElementById(fileId) {
	document.getElementById(fileId).style.display = "none";
}

function renameElementById(fileId, value) {
	var node = document.getElementById(fileId);
	node = node.firstChild;
	node.data = value;
}
// ENDAPPLE/MOBILE DEVICE FUNCTIONS

// POP UP MENU
function showMenu(e) {
	e = e || window.event	
	var obj = ns6 ? e.target.parentNode : event.srcElement.parentElement;
	menuSelObj = obj;
	fileId = getTableCell(menuSelObj);

	if (fileId != ""){
		showDialogue('menudiv',e);
		return false;
	}
	
	return true;
}

function hideDialogue(){
	if (menuShowing!=undefined){
		overpopupmenu = false;
		document.getElementById(menuShowing).style.display = "none";
		menuShowing = undefined;		
	}
	
	return false;
}

function showDialogue(dName,e){
	hideDialogue(menuShowing);
	
	e = e || window.event	
	var d = document.getElementById(dName);
	
	if (ns6) {
		d.style.left = e.clientX + document.body.scrollLeft;
		d.style.top  = e.clientY + document.body.scrollTop;
	} else {
		d.style.pixelLeft = event.clientX + document.body.scrollLeft;
		d.style.pixelTop  = event.clientY + document.body.scrollTop;
	}

	d.style.display = "";
	menuShowing = dName;
	addShadow(dName);
	return true;
}

function getTableCell(o){
	while ( o.parentNode != undefined ){
		if ( ("" + o.id).length>0 )
			return o.id;
		
		o = o.parentNode;
	}
	
	return "";
}

function bg(o){
	o.style.backgroundColor='#EFEFEF';
}

function bgClear(o){
	o.style.backgroundColor='white';
}

function addShadow(dName){
	// Add a rectangular blurry shadow to an object.
	
	// First remove any existing shadow
	var shadow = document.getElementById('shadow');
	if (shadow != undefined){
		var node = document.getElementById('shadow')
		node.parentNode.removeChild(node);
	}

	var src = "src=\"/markShapes/rectangularShadow.png\">"
	var anchor = document.getElementById(dName);

	var div = document.createElement('div')
 	div.style.position = "relative"
 	div.id = 'shadow';

	var layer = 100;
	var width  = getElementWidth(anchor);	//parseFloat(anchor.style.width);
	var height = getElementHeight(anchor);	//parseFloat(anchor.style.height);
	var shadowWidth = 691;
	var shadowHeight = 352;
	var shadowOffset = 15;
	
	// SHADOW bottom left
	t = document.createElement('div')
	setStyle(t,layer-1)
	t.style.top = "0px"
	t.style.left = "0px"
	t.style.width = (width/2) + "px";
	t.style.height = "20px"
	t.innerHTML = "<img style=\"position:absolute; top:" + (shadowOffset - shadowHeight) + "px; left:0px;\" " + src;
	div.appendChild(t)

	// bottom right
	t = document.createElement('div')
	setStyle(t,layer-1)
	t.style.top = "0px"
	t.style.left = (width/2) + "px"
	t.style.width = (20+width/2) + "px"
	t.style.height = "20px"
	t.innerHTML = "<img style=\"position:absolute; top:" + (shadowOffset - shadowHeight) + "px; left:" + (width/2 + shadowOffset - shadowWidth) +  "px;\" " + src;
	div.appendChild(t)

	// top right
	t = document.createElement('div')
	setStyle(t,layer-1)
	t.style.top = (-height) + "px"
	t.style.left = width + "px"
	t.style.width = "20px"
	t.style.height = height + "px"
	t.innerHTML = "<img style=\"position:absolute; top:0px; left:" + (shadowOffset - shadowWidth) + "px;\" " + src;
	div.appendChild(t)

  	document.getElementById(dName).appendChild(div)
}

function setStyle(e,layer){
	e.style.position = "absolute"
	e.style.top = "0px"
	e.style.left = "0px"
	e.style.width = "25px"
	e.style.height = "25px"
	e.style.overflow = "hidden"
	e.style.zIndex = layer
}

function moveDialogue(ev){
	if(dialogueToDrag){
		ev = ev || window.event
		var mousePos = mouseCoords(ev)

		var top = mousePos.y - dialogueToDrag.mouseOffset.y
		var left = mousePos.x - dialogueToDrag.mouseOffset.x
		dialogueToDrag.style.cursor = 'move';
		
		var d = document.getElementById(dialogueToDrag.dialogue);
		var scrolls = getScrollXY();
		
		if (ns6) {
			d.style.left = left + document.body.scrollLeft - scrolls.x;
			d.style.top  = top + document.body.scrollTop - scrolls.y;
		} else {
			d.style.pixelLeft = left + document.body.scrollLeft - scrolls.x;
			d.style.pixelTop  = top + document.body.scrollTop - scrolls.y;
		}

		return false
	}
}

function endMove(){
	dialogueToDrag.style.cursor = 'default';
	dialogueToDrag = undefined;
}

function startDialogueDrag(ev,dialogue){
	ev = ev || window.event

	if (ev.button==2 ) 
		return false

	var obj = ns6 ? ev.target.parentNode : event.srcElement.parentElement;
	dialogueToDrag = obj
	var mousePos = mouseCoords(ev)
	var pos = getPosition(obj)

	obj.mouseOffset = {x:mousePos.x-pos.x, y:mousePos.y-pos.y};
	obj.dialogue = dialogue;
	return false	
}

document.onmousedown = mouseSelect;
document.oncontextmenu = showMenu;
document.onmousemove = moveDialogue;

