/*
<!---
	<fuseDoc>
		<title>Skin : Javascript : Layout</title>
		<item>
			<description>
				<![CDATA[
					<p>This script file is invoked by switch_script.cfm template
					and it is one of the default scripts.</p>
			
					<p>Functions used in this application are written 
					in this file.</p>
				]]>
			</description>
			<date> 08/03/2005</date>
			<author>JLN</author>
		</item>
	</fuseDoc>
--->
*/

var ie = document.all&&document.getElementById ? 1:0;
var functionlist = new Array();

init = function()
{
	addEvents();

	functionlist[functionlist.length] = sizeBorders();
	captureScroll();
	if (document.getElementById("menuObj"))
		configMenu(document.getElementById("menuObj"));

	for (i=0; i < functionlist.length; i++)
	{
		temp = function(){ functionlist[i];}
		temp();
	}
}

sizeBorders = function()
{
	if (document.getElementById("controlpanel"))
	{
		var container = document.getElementById("container");
		var controlpanel = document.getElementById("controlpanel");
		var workspace = document.getElementById("workspace");
		
		if (ie)
			workspace.style.width = (document.documentElement.offsetWidth - controlpanel.clientWidth - 76) + "px";
		else
		{
			workspace.style.width = (document.body.offsetWidth - controlpanel.clientWidth - 56) + "px";
		}
	
	}
}

toggleControlpanel = function()
{
	if (document.getElementById("controlpanel").clientWidth < 236)
	{
		document.getElementById("workspace").style.marginLeft = '290px';
		animate(document.getElementById("controlpanel"), 236, 0);
		document["sidemenutoggle"].src = sideToggleClose.src;
		document.getElementById("sidemenutoggle").alt = document.getElementById("sidemenutoggle").alt.replace("Open", "Close");
		document.getElementById("sidemenutoggle").parentNode.title = document.getElementById("sidemenutoggle").parentNode.title.replace("Open", "Close");
	}
	else
	{
		document.getElementById("workspace").style.marginLeft = '70px';
		animate(document.getElementById("controlpanel"), 30, 0);
		document["sidemenutoggle"].src = sideToggleOpen.src;
		document.getElementById("sidemenutoggle").alt = document.getElementById("sidemenutoggle").alt.replace("Close", "Open");
		document.getElementById("sidemenutoggle").parentNode.title = document.getElementById("sidemenutoggle").parentNode.title.replace("Close", "Open");
	}
	switchToggle(current_graphics_path.split("/")[0] + "/global_functions/global_updateControlPanel.cfm?ID=" + current_crossID);
}

animate = function(obj, w, h)
{
	var originalWidth = obj.clientWidth;
	var originalHeight = obj.clientHeight;
	var inc = 5;
	document.getElementById("sidemenu").style.display = "none";
	divResize(obj, originalWidth, originalHeight, originalWidth, originalHeight, w, h, inc, 0);
}

divResize = function(obj, ow, oh, w, h, cw, ch, inc, step)
{
	var timeoutInt = 5;
	step++;
	
	if (ow < cw)
		w = w + (cw - ow) / inc;
	else
		w = w - (ow - cw) / inc;
		
	if (oh < ch)
		h = h + (ch - oh) / inc;
	else
		h = h - (oh - ch) / inc;

	obj.style.width = w + "px";
	document.getElementById("sidemenutop").style.width = w + "px";
	document.getElementById("sidemenu").style.width = w + "px";
	document.getElementById("sidemenubottom").style.width = w + "px";
	
	workspacewidth = (ow + w);
	
	if (ow < 236)
	{
		document.getElementById("workspace").style.left = workspacewidth + 20 + "px";
		document.getElementById("navcontainer").style.left = workspacewidth + "px";
	}
	else
	{
		document.getElementById("workspace").style.left = workspacewidth - 236 + 50 + "px";
		document.getElementById("navcontainer").style.left = workspacewidth - 236 + "px";
	}
	
	if (step < inc)
	{
		go = function(){divResize(obj, ow, oh, w, h, cw, ch, inc, step);}
		setTimeout("go()", timeoutInt);
	}
	else
	{
		if (ow < 236)
		{
			document.getElementById("sidemenu").style.display = "block";
			document.getElementById("controlpanel").style.border = "solid 1px #003366";
			document.getElementById("controlpanel").style.background = "#fff";
		}
		else
		{
			document.getElementById("sidemenu").style.display = "none";
			document.getElementById("controlpanel").style.border = "1px";
			document.getElementById("controlpanel").style.background = "Transparent";
		}
	}
		
	sizeBorders();
	sizeSubject();
}

var req;
var turlID = new Array();

function switchToggle(url) 
{
	turlID[0] = url;
    if (window.XMLHttpRequest) 
	{
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open("GET", url, true);
        req.send(null);
    } 
	else if (window.ActiveXObject) 
	{
        req = new ActiveXObject("Microsoft.XMLHTTP");
        if (req) 
		{
            req.onreadystatechange = processReqChange;
            req.open("GET", url, true);
            req.send();
        }
    }
}

function processReqChange() 
{
    if (req.readyState == 4) 
	{
        if (req.status == 200) 
		{
			//document.getElementById("status").innerHTML = req.responseText;
		} 
		else 
		{
            go = function()
			{
				switchToggle(turlID[0]);
			}
			alert(req.status);
			setTimeout("go()", 1000);
        }
    }
}

function left(str, n)
{
        if (n <= 0)     // Invalid bound, return blank string
                return "";
        else if (n > String(str).length)   // Invalid bound, return
                return str;                // entire string
        else // Valid bound, return appropriate substring
                return String(str).substring(0,n);
}


function hideHelp(e)
{
	if (ie)
		obj = e;
	else
		obj = this;
		
	obj.style.display = "none";
}

function ihideHelp()
{
	document.getElementById("helpSpan").style.display = "none";
}

function updateHelp(e) 
{
	
	if (ie)
		obj = e;
	else
		obj = this;
		
	offsetTop = 180;
	offsetLeft = document.getElementById("workspace").offsetWidth;
	
	if (!document.getElementById("helpSpan"))
	{
		ihelp = document.createElement("div");
		theBody = document.getElementsByTagName("body")[0];
		theBody.appendChild(ihelp);
		ihelp.id = "helpSpan";
		ihelp.innerHTML = obj.childNodes[1].innerHTML;
		ihelp.style.position = "absolute";
	}
	else
	{
		ihelp = document.getElementById("helpSpan");
	}
	
	x = obj.offsetLeft + offsetLeft - 250 + "px";
	y = obj.offsetTop + offsetTop + "px";
	
	ihelp.style.left = x;
	ihelp.style.top = y;
	
	ihelp.style.display = "block";
}

var topStart = 5;
var c = new Array();

function captureScroll()
{
	if (ie)
		window.onscroll = function(){startScroll()};
	else
		window.addEventListener("scroll", startScroll, false);

	startScroll();
}

function startScroll()
{
	getSizes();

	var step = 1;
	var start = c["menuTop"];
	var current = c["menuTop"];
	var end = eval(c["scrollPos"] + topStart);

	if (c["menuTop"] > c["scrollPos"])
		step = -step;

	scrollTween(start, current, end, step);
}

function scrollTween(start, current, end, step)
{
	var flag = true;
	
	if (step < 0)
	{
		if (current < eval(end - step) - 2)
			flag = false;

		current = current - (end - start) / step;
	}
	else
	{
		if (c["menuHeight"] > c["screenHeight"])
			end = eval((end - (topStart * 2)) - (c["menuHeight"] - c["screenHeight"]));

		if (current > eval(end + step))
			flag = false;

		current = current + (end - start) / step;
	}

	if (flag && c["docHeight"] >= end + step)
	{
		animateM(start, start, end, step, 0);
	}
}

function animateM(start, current, end, step, inc)
{
	var time = 10;
	var freq = 80;
	var diff = start - end;

	if (inc < freq)
	{
		diff = diff / freq;
		current = current - diff;
		inc = inc + 1;
		c["menu"].style.top = current + "px";
		go = function(){animateM(start, current, end, step, inc);}
		setTimeout("go()", time);
	}
}

function getSizes()
{
	if (document.getElementById("controlpanel"))
	{
		c["menu"]				= document.getElementById("controlpanel");
		c["menuHeight"] 		= c["menu"].offsetHeight;
		c["menuTop"] 			= c["menu"].offsetTop;
		c["menuBottom"] 		= c["menu"].offsetTop + c["menuHeight"];
		c["scrollPos"] 			= document.documentElement.scrollTop;
		c["docHeight"] 			= document.getElementById("workspace").offsetHeight;
		c["screenHeight"] 		= ie ? document.documentElement.clientHeight:window.innerHeight;
	}
}

//menu
function configMenu(el)
{
	el.style.display = "block";
	as = el.getElementsByTagName("IMG");
	uls = el.getElementsByTagName("LI");
	sps = el.getElementsByTagName("SPAN");

	for (s=0; s < sps.length; s++)
	{
		if (sps[s].className != "active")
		{
			sps[s].onmouseover = function()
			{
				this.className = "hover";
			}
			sps[s].onmouseout = function()
			{
				this.className = "";
			}
		}
	}
	
	for (u=0; u < uls.length; u++)
	{
		if (uls[u].getElementsByTagName("SPAN")[0].innerHTML.indexOf("arrow_d.gif") != -1)
			uls[u].parentNode.style.display = "block";
		
		if (uls[u].getElementsByTagName("SPAN")[0].className == "active")
			uls[u].parentNode.style.display = "block";
			
	}

	for (a=0; a < as.length; a++)
	{
		as[a].onclick = function()
		{
			for (i=0; i < this.parentNode.childNodes.length; i++)
			{
				try{
				if (this.parentNode.parentNode.childNodes[i].tagName == "UL")
				{
					toggleDisplay(this.parentNode.parentNode.childNodes[i]);
					toggleArrow(this);
					getSizes();
				}}catch(e){}
			}
			this.blur();
		}
	}
}

function toggleArrow(obj)
{
	if (obj.src.indexOf("_d") != -1)
		obj.src = obj.src.replace("_d","");
	else
		obj.src = obj.src.replace("arrow.gif","arrow_d.gif");
}

function toggleDisplay(el)
{
	if (el.style.display == "block")
		el.style.display = "none";
	else
		el.style.display = "block";
}

//display editmark icons
function toggleIcons(objectID) {
	object = document.getElementById(objectID);
	state = object.style.display;
	
	if (state == 'block') { 
		object.style.display = 'none'; 
	}
	else if (state != 'block') {
		object.style.display = 'block';
	}
}
