// Browser Detection
isMac = (navigator.appVersion.indexOf("Mac") != -1) ? true : false;
NS4 = (document.layers) ? true : false;
IEmac = ((document.all) && (isMac)) ? true : false;
IE4plus = (document.all) ? true : false;
IE4 = ((document.all) && (navigator.appVersion.indexOf("MSIE 4.") != -1)) ? true : false;
IE5 = ((document.all) && (navigator.appVersion.indexOf("MSIE 5.") != -1)) ? true : false;
ver4 = (NS4 || IE4plus) ? true : false;
NS6 = (!document.layers) && (navigator.userAgent.indexOf('Netscape') != -1) ? true : false;

// Body onload utility (supports multiple onload functions)
var gSafeOnload = new Array();
function SafeAddOnload(f) {
	if (IEmac && IE4) {  // IE 4.5 blows out on testing window.onload
		window.onload = SafeOnload;
		gSafeOnload[gSafeOnload.length] = f;
	} else if  (window.onload) {
		if (window.onload != SafeOnload) {
			gSafeOnload[0] = window.onload;
			window.onload = SafeOnload;
		}		
		gSafeOnload[gSafeOnload.length] = f;
	} else {
		window.onload = f;
	}
}

SafeAddOnload("externalLinks()");
window.onload = SafeOnload;

function SafeOnload() {
	for (var i = 0; i < gSafeOnload.length; i++) {
	    var f = gSafeOnload[i];
		eval(f);
	}
}

function getElement(id){
	if (document.all) return document.all[id];
	if (document.getElementById) return document.getElementById(id);
}

function getElementHeight(elem) {
	if (NS4) {
		var elem = getObjNN4(document, elem);
		return elem.clip.height;
	} else {
		var obj = getElement(elem);
		var xPos = 0;
		if (obj != null) {
		    if (! obj.offsetHeight) { 
			    xPos = obj.style.pixelHeight;
		    } else {
			    xPos = obj.offsetHeight;
		    }
		}
		return xPos;
	} 
}

function getElementWidth(elem) {
	if (NS4) {
		var elem = getObjNN4(document, elem);
		return elem.clip.width;
	} else {
		var obj = getElement(elem);
		var xPos = 0;
		if (obj != null) {
		    if (! obj.offsetWidth) {
			    xPos = obj.style.pixelWidth;
		    } else {
			    xPos = obj.offsetWidth;
		    }
		}
		return xPos;
	}
}

function resizeToc(c, t) {
    var cheight = Number(getElementHeight(c));
    var theight = Number(getElementHeight(t));
    if (theight > 0 && cheight > (theight + 10) ) {
        var newheight = cheight - 10;
        getElement(t).style.height = newheight + "px";
    }
}

function findPosX(obj) {
	var curleft = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curleft += obj.offsetLeft;
			obj = obj.offsetParent;
		}
	} else if (obj.x) {
		curleft += obj.x;
	}
	return curleft;
}

function findPosY(obj) {
	var curtop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop;
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

function PosCal(parent, id, event) {
	var p = getElement(parent);
	var c = getElement(id);
	var posx = findPosX(p);
	var posy = findPosY(p);
	c.style.left = posx;
	c.style.top = posy + 16;
}

// open links with rel="external" in a new window
function externalLinks() {
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") {
			anchor.target = "_blank";
		}
	}
}

// v1.0 - Drag resize
var dragc = 0;
var tempX, left, right, lelem, lwidth, relem, rwidth, lower, upper;
var newleft, newright, newlower, newupper, minwidth, maxwidth, style;
var belem, telem, newbottom, newtop, bounds, bheight, theight;
var IE = document.all ? true : false;
if (!IE) document.captureEvents(Event.MOUSEMOVE);

function dragContext () {
	this.left0		= 0;
	this.top0		= 0;
	this.eventx0	= 0;
	this.eventy0	= 0;
	this.Obj		= 0;
	this.Valid		= false;
	this.horiz		= true;
	this.vert		= true;
}

function mymove(e) {
	if (!dragc.Valid) return false;
	if (!e) e = window.event;
	var le			= dragc.Obj;
	var left		= dragc.left0 + e.clientX - dragc.eventx0;
	var top			= dragc.top0  + e.clientY - dragc.eventy0;
	var newwidth	= dragc.left0 - left;
	newleft			= lwidth - newwidth;
	newright		= rwidth + newwidth;
	newlower		= lower - newwidth;
	newupper		= upper - newwidth;
	if (newleft >= minwidth && newleft <= maxwidth) {
		if (dragc.horiz) lelem.style.width = newleft + "px";
		if (dragc.horiz) relem.style.width = (newright - 10) + "px";
	}
	return false;	
	// setting this to 'true' causes the same issue for IE6 as 
	// commenting out 'e.preventDefault();' does for Mozilla
}

function dragon(e) {
	initElem(right, left);
	if (!e) e = window.event;
	if (dragc.Valid) return false;
	if ( ( tempX >= lower ) && ( tempX <= upper ) ) {		
		dragc = new dragContext();
		dragc.Valid		= true;
		dragc.Obj		= relem;
		var sLeft0		= relem.offsetLeft;
		var sTop0		= relem.offsetTop;
		dragc.left0		= sLeft0;
		dragc.top0		= sTop0;
		dragc.eventx0	= e.clientX;
		dragc.eventy0	= e.clientY;
		dragc.horiz		= true;
		dragc.vert		= false;
		if (document.addEventListener) {
			document.addEventListener('mousemove', mymove,  true);
			e.preventDefault();
		} else {
			document.onmousemove = mymove;
		}
  	} else {
		dragoff(null);
	}
	return true;
}

function dragoff(e) {
	if (document.addEventListener) {
		document.removeEventListener('mousemove', mymove,  true);
	} else {
		document.onmousemove = getX;
	}
	lower = findPosX(lelem) + lelem.offsetWidth - 2;
	upper = findPosX(lelem) + lelem.offsetWidth + 2;
	dragc = 0;
	return true;
}

function getX(e) {
	if (IE) { // grab the x-y pos.s if browser is IE
		tempX = event.clientX + document.body.scrollLeft;
	} else {  // grab the x-y pos.s if browser is NS
		tempX = e.pageX;
	}
	if ( ( tempX >= lower ) && ( tempX <= upper ) ) {
	    if (style == "vert") {
		    document.body.style.cursor = 'w-resize';
		} else {
		    document.body.style.cursor = 'n-resize';
		}
	} else {
		document.body.style.cursor = '';
	}
}

function initElem(right, left) {
    if (style == "vert") {
	    relem	= getElement(right);
	    lelem	= getElement(left);
	    rwidth	= relem.offsetWidth;
	    lwidth	= lelem.offsetWidth;
	    lower	= findPosX(lelem) + lwidth - 2;
	    upper	= findPosX(lelem) + lwidth + 2;
	} else {
	    belem   = getElement(right);
	    telem   = getElement(left);
	    bheight = belem.offsetHeight;
	    theight = telem.offsetHeight;
	    lower   = findPosY(telem) + theight - 2;
	    upper   = findPosY(telem) + theight + 2;
	}
}

function dragInit(rightid, leftid, minw, maxw, type) {
	right		= rightid;
	left		= leftid;
	minwidth	= minw;
	maxwidth	= maxw;
	style       = type;
	initElem(right, left);
	if (document.addEventListener) {
		document.addEventListener('mousedown',	dragon,  true);
		document.addEventListener('mouseup',	dragoff, true);
		document.addEventListener('mousemove',	getX,	true);
	} else {
		document.onmousedown	= dragon;
		document.onmouseup		= dragoff;
		document.onmousemove	= getX;	
	}
}