
function Browser() 
{  
	var ua, s, i;  
	this.isIE    = false;  
	this.isNS    = 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;
var BANMover = false;
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 element's 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();  
	 }
	 BANMover = true;
}

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);  
	}
	 BANMover = false;
}
