/* DONT USE. These functions subsumed in util-ccel.js */

/*
 * jph5, 2006-07-14
 * I have no idea what this will take and don't know javascript that well.
 * Don't laugh.
 */

/* add a function to be called for the body's onload event */
if (!self.addLoadEvent)
{
	// Only define addLoadEvent() if it hasn't already been defined
	function addLoadEvent(func)
	{
	        var oldonload = window.onload;
	        if (typeof window.onload != 'function') {
	                window.onload = func;
	        } else {
	                window.onload = function() {
	                        if (oldonload) {
	                                oldonload();
	                        }
	                        func();
	                }
	        }
	}
}

function createResizeHandle()
{
	var resizehandle = document.createElement('td');
	resizehandle.id = 'resizehandle';
	resizehandle.style.cursor = 'e-resize';
	resizehandle.style.color = '#999';
	resizehandle.style.backgroundImage = 'url(/pix/resizeHandle.jpg)';
	resizehandle.style.width = '5px';
	resizehandle.title = 'Click and drag to resize area';
	if (resizehandle.addEventListener)
		resizehandle.addEventListener("mousedown", downHandler, true);
	else if (resizehandle.attachEvent)
		resizehandle.attachEvent("onmousedown", downHandler);
	resizehandle.appendChild(document.createTextNode('.'));
	var sidebarleft = document.getElementById('sidebar-left');
	sidebarleft.parentNode.insertBefore(resizehandle, sidebarleft.nextSibling);

	function downHandler(event)
	{
		beginDrag(resizehandle, event);
	}
}

function beginDrag(element, downevent)
{
	var sidebarleft = document.getElementById('sidebar-left');
	var tocdiv = document.getElementById('tocdiv');
	var sidebarorigwidth = parseInt(sidebarleft.offsetWidth);
	var tocdivorigwidth = parseInt(tocdiv.offsetWidth);
	var startX = downevent.clientX;
	if (document.addEventListener)
	{
		document.addEventListener("mousemove", moveHandler, true);
		document.addEventListener("mouseup", upHandler, true);
	}
	else if (document.attachEvent)
	{
		document.attachEvent("onmousemove", moveHandler);
		document.attachEvent("onmouseup", upHandler);
	}

	if (downevent.stopPropagation)
		downevent.stopPropagation();
	else
		downevent.cancelBubble = true;
	if (downevent.preventDefault)
		downevent.preventDefault();
	else
		downevent.returnValue = false;

	function moveHandler(event)
	{
		var deltaX = event.clientX - startX;
		var width = sidebarorigwidth + deltaX;
		var tocdivwidth = tocdivorigwidth + deltaX;
		if (width > 0)
			sidebarleft.style.width = width + 'px';
		if (tocdivwidth > 0)
			tocdiv.style.width = tocdivwidth + 'px';
		if (event.stopPropagation)
			event.stopPropagation();
		else
			event.cancelBubble = true;
	}

	function upHandler(event)
	{
		if (document.removeEventListener)
		{
			document.removeEventListener("mouseup", upHandler, true);
			document.removeEventListener("mousemove", moveHandler, true);
		}
		else if (document.detachEvent)
		{
			document.detachEvent("onmouseup", upHandler);
			document.detachEvent("onmousemove", moveHandler);
		}
		if (event.stopPropagation)
			event.stopPropagation();
		else
			event.cancelBubble = true;
	}
}

//image rollover for toc plus/minus icons
function highlight(obj){
	var source=obj.src;
	var i=source.indexOf(".gif");
	if(source.indexOf("_hilite.gif")==-1 && i!=-1){
		source=source.substring(0,i);
		obj.src=source+"_hilite.gif";
	}
}
function unhighlight(obj){
	var source=obj.src;
	var i=source.indexOf("_hilite.gif");
	if(i!=-1){
		source=source.substring(0,i);
		obj.src=source+".gif";
	}
}

function t(div,pic) {
  var d, p;
  if (document.getElementById) { // DOM-compliant browsers
    d=document.getElementById(div);
    p=document.getElementById(pic);
  }
  if (d.style.display == "block") {
    d.style.display="none";
    p.src="/pix/shut_hilite.gif";
  } else {
    d.style.display="block";
    p.src="/pix/open_hilite.gif";
  }
}

function expand_subsection()
{
	if (document.getElementById('book_section_id'))
	{
		var id = document.getElementById('book_section_id').name;
		if (document.getElementById('toc'+id))
		{
			var elem = document.getElementById('toc'+id);
			if (elem.nextSibling && elem.nextSibling.nodeName.toLowerCase() == 'div' && elem.nextSibling.style.display != 'block')
			{
				var div_id = elem.nextSibling.id.substr(1);
				t('d'+div_id, 'p'+div_id);
				if (document.getElementById('p'+div_id))
					unhighlight(document.getElementById('p'+div_id));
			}
		}
	}

}

function expand_toc()
{
	if (document.getElementById('book_section_id'))
	{
		var id = document.getElementById('book_section_id').name;
		if (document.getElementById('toc'+id))
		{
			var elem = document.getElementById('toc'+id);
			elem.className = elem.className + ' toc_selected_section';
			_expand_toc(elem.parentNode);
		}
	}
}

function _expand_toc(div_elem)
{
	if (div_elem.style.display != 'none')
	{
		// Base case
		return;
	}

	// Continue recursively up the tree
	var id = div_elem.id.substr(1);
	t('d'+id, 'p'+id);
	if (document.getElementById('p'+id))
		unhighlight(document.getElementById('p'+id));

	_expand_toc(div_elem.parentNode);
}

