/**
 * Drage Pane lib
 */

//*****************************************************************************
// Do not remove this notice.
//
// Copyright 2001 by Mike Hall.
// See http://www.brainjar.com for terms of use.
//*****************************************************************************
// Determine browser and version.
		
function Browser() {
	var ua, s, i;
			
	this.isIE    = false;
	this.isOther    = false;
	this.version = null;
	
	ua = navigator.userAgent;
			
	s = "MSIE";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isIE = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
			
	s = "Netscape6/";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = parseFloat(ua.substr(i + s.length));
		return;
	}
			
	// Treat any other "Gecko" browser as NS 6.1.
	s = "Gecko";
	if ((i = ua.indexOf(s)) >= 0) {
		this.isNS = true;
		this.version = 6.1;
		return;
	}
}
			
var browser = new Browser();
			
// Global object to hold drag information.
			
var dragObj = new Object();
dragObj.zIndex = 0;
			
function dragStart(event, id) {
			
	var el;
	var x, y;
			
	// If an element id was given, find it. Otherwise use the element being
	// clicked on.
			
	if (id)
	    dragObj.elNode = document.getElementById(id);
	else {
		if (browser.isIE)
			dragObj.elNode = window.event.srcElement;
		if (browser.isNS)
		    dragObj.elNode = event.target;
			
		// If this is a text node, use its parent element.
		if (dragObj.elNode.nodeType == 3)
		    dragObj.elNode = dragObj.elNode.parentNode;
	}
			
	// Get cursor position with respect to the page.
	if (browser.isIE) {
	    x = window.event.clientX + document.documentElement.scrollLeft
		      + document.body.scrollLeft;
	    y = window.event.clientY + document.documentElement.scrollTop
		      + document.body.scrollTop;
	}
	if (browser.isNS) {
	    x = event.clientX + window.scrollX;
	    y = event.clientY + window.scrollY;
	}
			
	// Save starting positions of cursor and element.
	dragObj.cursorStartX = x;
	dragObj.cursorStartY = y;
	dragObj.elStartLeft  = parseInt(dragObj.elNode.style.left, 10);
	dragObj.elStartTop   = parseInt(dragObj.elNode.style.top,  10);
		
	if (isNaN(dragObj.elStartLeft)) dragObj.elStartLeft = 0;
	if (isNaN(dragObj.elStartTop))  dragObj.elStartTop  = 0;
			
	// Update elements z-index.
	dragObj.elNode.style.zIndex = ++dragObj.zIndex;
			
	// Capture mousemove and mouseup events on the page.
	if (browser.isIE) {
		document.attachEvent("onmousemove", dragGo);
		document.attachEvent("onmouseup",   dragStop);
		window.event.cancelBubble = true;
		window.event.returnValue = false;
	}
	if (browser.isNS) {
		document.addEventListener("mousemove", dragGo,   true);
		document.addEventListener("mouseup",   dragStop, true);
		event.preventDefault();
	}
}
			
function dragGo(event) {
			
	var x, y;
			
	// Get cursor position with respect to the page.
			
	if (browser.isIE) {
		x = window.event.clientX + document.documentElement.scrollLeft
		    + document.body.scrollLeft;
		y = window.event.clientY + document.documentElement.scrollTop
			+ document.body.scrollTop;
	}
	if (browser.isNS) {
	    x = event.clientX + window.scrollX;
	    y = event.clientY + window.scrollY;
	}
			
	// Move drag element by the same amount the cursor has moved.
			
	dragObj.elNode.style.left = (dragObj.elStartLeft + x - dragObj.cursorStartX) + "px";
	dragObj.elNode.style.top  = (dragObj.elStartTop  + y - dragObj.cursorStartY) + "px";
			
	if (browser.isIE) {
	    window.event.cancelBubble = true;
	    window.event.returnValue = false;
	}
	if (browser.isNS)
	    event.preventDefault();
}
			
function dragStop(event) {
			
	// Stop capturing mousemove and mouseup events.
			
	if (browser.isIE) {
	    document.detachEvent("onmousemove", dragGo);
	    document.detachEvent("onmouseup",   dragStop);
	}
	if (browser.isNS) {
	    document.removeEventListener("mousemove", dragGo,   true);
	    document.removeEventListener("mouseup",   dragStop, true);
	}
}
			
function MM_findObj(n, d) { //v4.01
	var p,i,x;  
	if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);
	}
	if(!(x=d[n])&&d.all) 
		x=d.all[n]; 
	for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && d.getElementById) x=d.getElementById(n); return x;
}
			
function MM_showHideLayers() { //v6.0
	var i,p,v,obj,args=MM_showHideLayers.arguments;
	for (i=0; i<(args.length-2); i+=3)
		if ((obj=MM_findObj(args[i]))!=null) { 
			v=args[i+2];
			if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
			obj.visibility=v; 
		}
}
			
function closeBox(id){
	document.getElementById(id).style.visibility="hidden";
}
			
function setPosition(evt, id){	
	var tempX,tempY;
	var len;
				
	if (evt.pageX){ 
		tempX = evt.pageX;
		tempY = evt.pageY;
	} else if (evt.clientX){
	  	tempX = evt.clientX + (document.documentElement.scrollLeft ?  document.documentElement.scrollLeft : document.body.scrollLeft);
	  	tempY = evt.clientY + (document.documentElement.scrollTop ?  document.documentElement.scrollTop : document.body.scrollTop);
	} else if (evt.pageXOffset){
	  	tempX = evt.pageXOffset;
		tempY = evt.pageYOffset;
	} else if (evt.offsetLeft){
		tempX = evt.offsetLeft;
		tempY = evt.offsetTop;
	} else if (evt.screenX){
		tempX = evt.screenX;
		tempY = evt.screenY;
	} else if (evt.x){
		tempX = evt.x;
		tempY = evt.y;
	} else if (evt.style){
		if (evt.style.left){
			tempX = evt.style.left;
			tempY = evt.style.top;
		}
	} else {
		tempX = 0;
		tempY = 0;
	}
				
	if (tempX == "undefined"){
		tempX = 0;
		tempY = 0;
	}
				
	tempX = tempX + "";
				
	len = tempX.length;
				
	if (tempX.charAt(len-1) != "x"){
		tempX = tempX + "px";
		tempY = tempY + "px";
	}
			
			
	document.getElementById(id).style.left = tempX;
	document.getElementById(id).style.top = tempY;
}
			
function setInitialPosition(id){
	document.getElementById(id).style.left = -1 + "px";
	document.getElementById(id).style.top = -1 + "px";
}			

