var browserName=navigator.userAgent.toLowerCase();

var win= null;
function NewWindow(mypage,myname,w,h,scroll){
	var winl = (screen.width-w)/2;
	var wint = (screen.height-h)/2;
	var settings ='height='+h+',';
	settings +='width='+w+',';
	settings +='top='+wint+',';
	settings +='left='+winl+',';
	settings +='scrollbars='+scroll+',';
	settings +='resizable=no';
	win=window.open(mypage,myname,settings);
	if(parseInt(navigator.appVersion) >= 4){win.window.focus();}
	}
	
	function MM_openBrWindow(theURL,winName,features) {
	window.open(theURL,winName,features);
}

function getObj(name) {
if (document.getElementById) {
	this.obj = document.getElementById(name);
	this.style = document.getElementById(name).style;
} else if (document.all) {
	this.obj = document.all[name];
	this.style = document.all[name].style;
} else if (document.layers) {
	if (document.layers[name]) {
		this.obj = document.layers[name];
		this.style = document.layers[name];
   } else {
		this.obj = eval("document.layers." + name + ".layers[name]");
		this.style = eval("document.layers." + name + ".layers[name]");
   }
}
}

function findPosLeft(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 findPosTop(obj) {
	var curtop = 0;
	var printstring = '';
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

function getObj(name) {
	if (document.getElementById) {
		this.obj = document.getElementById(name);
		if (this.obj) this.style = document.getElementById(name).style;
	} else if (document.all) {
		this.obj = document.all[name];
		if (this.obj) this.style = document.all[name].style;
	} else if (document.layers) {
		if (document.layers[name]) {
			this.obj = document.layers[name];
			if (this.obj) this.style = document.layers[name];
	   } else {
			this.obj = eval("document.layers." + name + ".layers[name]");
			if (this.obj) this.style = eval("document.layers." + name + ".layers[name]");
	   }
	}
}

function ShowDiv(DivName) {

	if	(document.layers) {
		document.layers[DivName].visibility="visible"; 
	} else if (document.getElementById) {
		document.getElementById(DivName).style.display="";
		document.getElementById(DivName).style.visibility="visible";
	} else if (document.all) {
		document.all(DivName).style.display="";
		document.all(DivName).style.visibility="visible";	
	}
}

function HideDiv(DivName) {
	if	(document.layers) {
		document.layers[DivName].visibility="hidden"; 
	} else if (document.getElementById) {
		document.getElementById(DivName).style.display="none";
		document.getElementById(DivName).style.visibility="hidden";
	} else if (document.all) {
		document.all(DivName).style.display="none";
		document.all(DivName).style.visibility="hidden";	
	}
}

function showTip(obj,header,img,content,stature,figure,hair) {
	var popin = new getObj("popin")
	var popinheader = new getObj("popin_header")
	var popinimg = new getObj("popin_img")
	var popincontent = new getObj("popin_innertxt")
	var popinstature = new getObj("popin_stature")
	var popinfigure = new getObj("popin_figure")
	var popinhair = new getObj("popin_hair")
	
	var intmoveLeft = 0;
	var intmoveTop = 0;
	
	if (browserName.indexOf('safari') !=-1) {
		intmoveLeft = -12;
		intmoveTop = 30;
	} else {
		intmoveLeft = -12;
		intmoveTop = 10;
	}
	
	if (obj && popin.obj)	{
		popin.style.top = findPosTop(obj) + intmoveTop - 80 + 'px';
		// if the popin value is going to go past the right side, show it on the right
		if (findPosLeft(obj) > 500)
		{
		popin.style.left = (findPosLeft(obj)) + intmoveLeft - 400 + 'px';
		}
		else
		{
		popin.style.left = (findPosLeft(obj)) + intmoveLeft + 80 + 'px';
		}
		popincontent.obj.innerHTML = content;
		popinheader.obj.innerHTML = header;
		document.popin_img.src = img;
		popinstature.obj.innerHTML = stature;
		popinfigure.obj.innerHTML = figure;
		popinhair.obj.innerHTML = hair;
	}
	ShowDiv("popin")
}

function showRates(obj) {
	var popin = new getObj("popin-rates")
		
	var intmoveLeft = 0;
	var intmoveTop = 0;
	
	if (browserName.indexOf('safari') !=-1) {
		intmoveLeft = -12;
		intmoveTop = 30;
	} else {
		intmoveLeft = -12;
		intmoveTop = 10;
	}
	
	if (obj && popin.obj)	{
		popin.style.top = findPosTop(obj) + intmoveTop - 80 + 'px';
		// if the popin value is going to go past the right side, show it on the right
	
		popin.style.left = (findPosLeft(obj)) + intmoveLeft + 120 + 'px';
	}
	ShowDiv("popin-rates")
}




function showForm(obj,girl_id,girl_name) {
	var popin = new getObj("popin-form")
		
	var intmoveLeft = 0;
	var intmoveTop = 0;
	
	
	if (browserName.indexOf('safari') !=-1) {
		intmoveLeft = -12;
		intmoveTop = 30;
	} else {
		intmoveLeft = -12;
		intmoveTop = 10;
	}
	
	if (obj && popin.obj)	{
		popin.style.top = findPosTop(obj) + intmoveTop - 180  + 'px';
		// if the popin value is going to go past the right side, show it on the right
	
		popin.style.left = (findPosLeft(obj)) + intmoveLeft - 80  + 'px';
	}
	ShowDiv("popin-form")
	document.getElementById("span_girl_name").innerHTML = girl_name;
	document.getElementById("girl_id").value = girl_id;	
}

// Tab switcher
function tabswitcher(strTabSet, intTabID) {
	strButtons = 'tabset_' + strTabSet + '_button';
	strDivs = 'tabset_' + strTabSet + '_div';
	for (i = 1; i <= 10; i++) {
		try {
			var objTab =   document.getElementById(strButtons + i);
			var objLayer = document.getElementById(strDivs + i);
			
			if (i == intTabID) {
				objTab.className = 'on';
				objLayer.style.display = 'block';
			} else {
				objTab.className = '';
				objLayer.style.display = 'none';
			}
		} catch(e) { i = 100; }
	}
}

function offsetPosition(obj)
{
	this.Height = obj.offsetHeight;
	this.Width = obj.offsetWidth;

	var curLeft = 0;
	var curTop = 0;
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curLeft += obj.offsetLeft
			curTop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else {
		if (obj.x) curLeft += obj.x;
		if (obj.y) curtop += obj.y;
	}
	this.Left = curLeft;
	this.Top = curTop;
}

///////////// OverLayers /////////////
var openLayers = new Array();

function CloseAllOverLayers()
{
//alert("CloseAllOverLayers");
    var name;
    while (name = openLayers.pop())
    {
	    var overLayer = new getObj(name);
	    if (overLayer) overLayer.style.display = 'none';
	}
}

function CloseOverLayer(layerType)
{
//alert("CloseOverLayer " + layerType);
	var overLayer = new getObj(layerType);
	if (overLayer) overLayer.style.display = 'none';
	else return false;

    return true;
}

function ShowOverLayer(layerType)
{
//alert("ShowOverLayer " + layerType);
	var overLayer = new getObj(layerType);
	if (overLayer) overLayer.style.display = 'inline';
	else return false;

	openLayers.push(layerType);
    return true;
}

function ShowOverLayerRelative(layerType, relativeTo)
{
//alert("ShowOverLayerRelative " + layerType + ", " + relativeTo);
	return ShowOverLayerRelativeToObj(layerType, new getObj(relativeTo).obj);
}

function ShowOverLayerRelativeToObj(layerType, objRelativeTo)
{
//alert("ShowOverLayerRelativeToObj " + layerType + ", " + objRelativeTo.id);
	var overLayer = new getObj(layerType);

	if (overLayer && objRelativeTo) {
//alert(objRelativeTo + " ; " + objRelativeTo.name + " ; " + objRelativeTo.id + " ; " + objRelativeTo.style + " ; " + objRelativeTo.obj);
		var overLayerPos = new offsetPosition(objRelativeTo);

//alert(overLayerPos.Top + " ! " + overLayerPos.Left);
		overLayer.style.left = overLayerPos.Left + 'px';
		overLayer.style.top = overLayerPos.Top + 1 + 'px';
//alert(layerType + " = " + overLayer.style.top + " : " + overLayer.style.left);
		overLayer.style.display = 'inline';

        openLayers.push(layerType);
	} else return false;

    return true;
}

function ShowOverLayerCentralized(id)
{
//alert("ShowOverLayerCentralized " + id);
	var overLayer = new getObj(id);

	ShowOverLayerObjCentralized(overLayer);
}



function ShowOverLayerObjCentralized(overLayer, left, top)
{
//alert(overLayer + " : " + overLayer.style.width + " : " + overLayer.style.height);
//alert(document.documentElement.clientHeight + " : "
// + self.screen.availHeight + " : "
//  + window.screen.availHeight + " : "
//   + self.innerHeight + " : "
//   + document.documentElement.clientHeight + " : ");

//alert (overLayer + " - " + left + " - " + top);

var objWidth = 0;
var objHeight = 0;
var scrollLeft = 0;
var scrollTop = 0;
var wWidth = 0;
var wHeight = 0;
var spaceleft = 0;
var spacetop = 0;

	if (overLayer == null) return;

	objWidth = parseInt(overLayer.style.width);
	objHeight = parseInt(overLayer.style.height);
	
	if (objWidth < 0 || isNaN(objWidth)) objWidth = 0;
	if (objHeight < 0 || isNaN(objHeight)) objHeight = 0;
	
//alert(overLayer + " : " + objWidth + " : " + objHeight);
	
	scrollLeft = 0;
	scrollTop = 0;
    if (self.pageYOffset) // all except Explorer
    {
	    scrollLeft = self.pageXOffset;
	    scrollTop = self.pageYOffset;
    }
    else if (document.documentElement && document.documentElement.scrollTop)
	    // Explorer 6 Strict
    {
	    scrollLeft = document.documentElement.scrollLeft;
	    scrollTop = document.documentElement.scrollTop;
    }
    else if (document.body) // all other Explorers
    {
	    scrollLeft = document.body.scrollLeft;
	    scrollTop = document.body.scrollTop;
    }
	
    wWidth = 200;
	wHeight = 200;
	
    if (self.innerHeight) // all except Explorer
    {
	    wWidth = self.innerWidth;
	    wHeight = self.innerHeight;
    }
    else if (document.documentElement && document.documentElement.clientHeight) // Explorer 6 Strict Mode
    {
	    wWidth = document.documentElement.clientWidth;
	    wHeight = document.documentElement.clientHeight;
    }
    else if (document.body) // other Explorers
    {
	    wWidth = document.body.clientWidth;
	    wHeight = document.body.clientHeight;
    }
	
	spaceleft = parseInt((wWidth - objWidth)/2) + scrollLeft;
	spacetop  = parseInt((wHeight - objHeight)/2) + scrollTop;

	if (spaceleft < 0 || isNaN(spaceleft)) spaceleft = 0;
	if (spacetop < 0 || isNaN(spacetop)) spacetop = 0;

//alert(spacetop + " : " + spaceleft);
//alert (spaceleft);
//alert (spacetop);
	if ( left == null ) { overLayer.style.left = spaceleft + 'px'; }
	else { overLayer.style.left = left + 'px'; }
	if ( left == top ) { overLayer.style.top = spacetop + 'px'; }
	else { overLayer.style.top = top + 100 + 'px'; }
	overLayer.style.display = 'block';


    if (typeof(overLayer.obj) == 'undefined') openLayers.push(overLayer.id);
    else openLayers.push(overLayer.obj.id);

    return true;
}

function ShowOverLayerContentCentralized( content)
{
	//var popupheadtext = new getObj("popup_headtext");
	var popupcontent = new getObj("popup_body");
		
	//popupheadtext.obj.innerHTML = headtext;
	popupcontent.obj.innerHTML = content;

	
	ShowOverLayerCentralized("messageOverLayer");
}

//findPosLeft and findPosTop are two helper function for ShowOverLayerContentCentralized_1
function findPosLeft(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 findPosTop(obj) {
	var curtop = 0;
	var printstring = '';
	if (obj.offsetParent) {
		while (obj.offsetParent) {
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	} else if (obj.y) {
		curtop += obj.y;
	}
	return curtop;
}

//This function is changed from ShowOverLayerContentCentralized to accept id as a new parameter
//This change will help to display meassgeBox will different Property
function ShowOverLayerContentCentralized_1(obj, headtext, content)
{
	var popupheadtext = new getObj("popup_headtext_1");
	var popupcontent = new getObj("popup_body_1");
		
	popupheadtext.obj.innerHTML = headtext;
	popupcontent.obj.innerHTML = content;
	
	var overLayer = new getObj("messageOverLayer_1");
	var left = findPosLeft(obj);
	var top = findPosTop(obj) - parseInt(overLayer.style.height);
	
	if (browserName.indexOf('safari') !=-1) {
		intmoveLeft = -12;
		intmoveTop = 30;
	} else {
		intmoveLeft = 0;
		intmoveTop = -30;
	}
	//ShowOverLayerCentralized("messageOverLayer_1");
	ShowOverLayerObjCentralized(overLayer, left + intmoveLeft, top + intmoveTop);
}

function CopyTextFromEstimate(targetID)
{
	var target = new getObj(targetID);
	var popupcontent = new getObj("estimate_body");
		
	target.obj.value = popupcontent.obj.innerHTML;
	
	ShowOverLayerCentralized("estimateOverLayer");
}

function confirmStationChange(control)
{
    return confirm("Please remember that by replacing this station for a new one you should answer again all questions of this section.\r\n\r\n Are sure you want to continue?");
}


	function ShowDiv(DivName)
		{
			if	(document.layers) {
				document.layers[DivName].visibility="visible"; 
				document.layers[DivName].display="";
			} else if (document.getElementById) {
				document.getElementById(DivName).style.display="";
				document.getElementById(DivName).style.visibility="visible";
			} else if (document.all) {
				document.all(DivName).style.display="";
				document.all(DivName).style.visibility="visible";	
			}
		}
		
		function HideDiv(DivName) 
		{
			if	(document.layers) {
				document.layers[DivName].visibility="hidden"; 
				document.layers[DivName].display="none"; 
				
			} else if (document.getElementById) {
				document.getElementById(DivName).style.display="none";
				document.getElementById(DivName).style.visibility="hidden";
			} else if (document.all) {
				document.all(DivName).style.display="none";
				document.all(DivName).style.visibility="hidden";	
			}
		}

	 function submitCheck(check)
	 {
		  if (check.name1.value == "")
		  {
			alert("Your Name field cannot be blank - please re-enter");
			check.name1.focus();
			return false;
		  }
		  else if (check.email1.value == "")
		  {
			alert("Your Email field cannot be blank - please re-enter");
			check.email1.focus();
			return false;
		  }
		  else if (isValidEmail(check.email1.value)==false)
		  {
		   alert("Please enter a valid email address");
		   check.email1.focus();
			return false;
		  }
		   if (check.name2.value == "")
		  {
			alert("Your Friends Name field cannot be blank - please re-enter");
			check.name2.focus();
			return false;
		  }
		  else if (check.email2.value == "")
		  {
			alert("The Friends Email field cannot be blank - please re-enter");
			check.email2.focus();
			return false;
		  }
		  else if (isValidEmail(check.email2.value)==false)
		  {
		   	alert("Please enter a valid email address");
		   	check.email2.focus();
			return false;
		  }
		  else
		  {
			return true;
		  }
	 }
	
	function isValidEmail (str)
	{
		  // Return immediately if an invalid value was passed in
		  if (str+"" == "undefined" || str+"" == "null")
		   return false;
		
		  else
		  {
		   if (str+"" == "")
		 return true;  // email is not required
		   else
		
		  str += "";
		  namestr = str.substring(0, str.indexOf("@"));  // everything before the '@'
		  domainstr = str.substring(str.indexOf("@")+1, str.length); // everything after the '@'
		
		  // Rules:
		  // namestr must contain something before the '@'
		  // domainstr must contain a period that is not the first character (i.e. right after
		  // the '@').
		  if ((namestr.length == 0) || (domainstr.indexOf(".") <= 0) || (domainstr.indexOf("@") != -1))
		   return false;
		  }
		
		 return true;
	 }
	  
function IsNumeric(sText)
{
var ValidChars = "0123456789.";
var IsNumber=true;
var Char;

for (i = 0; i < sText.length && IsNumber == true; i++) 
{ 
Char = sText.charAt(i); 
if (ValidChars.indexOf(Char) == -1) 
{
IsNumber = false;
}
}
return IsNumber;

}									  
	
function IsEmpty(aTextField) {
if ((aTextField.value.length==0) ||
(aTextField.value==null)) {
return true;
}
else { return false; }
}
	
	function ClearSubEmail(theClearMk){
		if (theClearMk) {
			if (document.getElementById("emad").value == "Enter e-mail address")
				document.getElementById("emad").value = "";
		}
		else {
			if (document.getElementById("emad").value == "")
				document.getElementById("emad").value = "Enter e-mail address";
		}
	}	 
	
	function submit_form()
	{
		var elemName;
		var requiredFields;
		var numericFields;
		var emailFields;
		var message;
		var bErrors;	
	
		requiredFields =  document.frmCustomForm.elements['_requiredfields'].value;
		emailFields =  document.frmCustomForm.elements['_emailfields'].value;
		numericFields =  document.frmCustomForm.elements['_numericfields'].value;
	
		message = '';
		bErrors = false;
	
		for (var i = 0; i < document.frmCustomForm.elements.length; i++)
		{
			elemName = document.frmCustomForm.elements[i].name;
			if (elemName.charAt(0) != '_')
			{		
	
				//alert(elemName);
	
				if (requiredFields.indexOf(elemName) > -1)
				{
					// required field
					if (IsEmpty(document.frmCustomForm.elements[i]) == true)
					{
						message = message + elemName + ' is a required field.\n';
						bErrors = true;
					}
				}
	
			}
		}
	
		if (bErrors)
		{
			alert('Please correct the following errors:\n' + message);
			return false;
		}
		else		
			return true;
	}
	
	
	function check_email(str) {
		var at="@";
		var dot=".";
		var lat=str.indexOf(at);
		var lstr=str.length;
		var ldot=str.indexOf(dot);
		if (str.indexOf(at)==-1){
		    alert("Please enter a valid E-mail address");
		   return false;
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		    alert("Please enter a valid E-mail address");
		   return false;
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    alert("Please enter a valid E-mail address");
		    return false;
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    alert("Please enter a valid E-mail address");
		    return false;
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    alert("Please enter a valid E-mail address");
		    return false;
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    alert("Please enter a valid E-mail address");
		    return false;
		 }
		
		 if (str.indexOf(" ")!=-1){
		    alert("Please enter a valid E-mail address");
		    return false;
		 }
  	     return true;
	}

// Reset the content to stop the flash audio from playing
function stopPopflash() {
	var popupcontent = new getObj("popup_bodyflash");
	popupcontent.obj.innerHTML = '';
}
	
function showPopflash(obj, content, offsetleft, strFileName) {
	var popin = new getObj("popflash")
	var popupcontent = new getObj("popup_bodyflash");
		
	popupcontent.obj.innerHTML = content;
	
	var intmoveLeft = 0;
	var intmoveTop = 0;
	
	if (browserName.indexOf('safari') !=-1) {
		intmoveLeft = -12;
		intmoveTop = 30;
	} else {
		intmoveLeft = -12;
		intmoveTop = 10;
	}
	
	if (obj && popin.obj)	{
		popin.style.top = findPosTop(obj) + 'px';
		// if the popin value is going to go past the right side, show it on the right
	
		if (offsetleft == null)
		popin.style.left = (findPosLeft(obj)) + 'px';
	else
		popin.style.left = (findPosLeft(obj)) + offsetleft + 'px';
	}
	ShowOverLayerCentralized("popflash")
	
	if (strFileName) {
		urchinTracker('/video/' + strFileName);	
	}
}

function showPopvideo(obj, content) {
	var popin = new getObj("popvideo")
	var popupcontent = new getObj("popup_body");
		
	popupcontent.obj.innerHTML = content;
	
	var intmoveLeft = 0;
	var intmoveTop = 0;
	
	if (browserName.indexOf('safari') !=-1) {
		intmoveLeft = -12;
		intmoveTop = 30;
	} else {
		intmoveLeft = -12;
		intmoveTop = 10;
	}
	
	if (obj && popin.obj)	{
		popin.style.top = findPosTop(obj) - 100 + 'px';
		// if the popin value is going to go past the right side, show it on the right
		popin.style.left = (findPosLeft(obj)) - 100 + 'px';
	}
	ShowDiv("popvideo")
}


// *** START DIV DRAG CODE *** //

//*****************************************************************************
// 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.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;

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();
  }
}

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);
  }
}

