function toggle(div_id) {
	var el = document.getElementById(div_id);
	if ( el.style.display == 'none' ) {	el.style.display = 'block';}
	else {el.style.display = 'none';}
}

function blanket_size(popUpDivVar) {
	var blanket_height = getWindowHeight();
	var blanket = document.getElementById('blanket');
	blanket.style.height = blanket_height + 'px';

	var popUpDiv = document.getElementById(popUpDivVar);
	popUpDiv.style.height = blanket_height + 'px';
}

function setPopupPos(contentId, contentWidth, classname) {
	var window_width = getWindowWidth();
	var popUpContent = document.getElementById(contentId);
	var leftPos = (window_width - contentWidth)/2;
	popUpContent.style.left = leftPos + 'px';
	if (classname) popUpContent.className = classname;
}

function getWindowHeight() {
	if (typeof window.innerWidth != 'undefined') {
		viewportheight = window.innerHeight;
	} else {
		viewportheight = document.documentElement.clientHeight;
	}
	if ((viewportheight > document.body.parentNode.scrollHeight) && (viewportheight > document.body.parentNode.clientHeight)) {
		blanket_height = viewportheight;
	} else {
		if (document.body.parentNode.clientHeight > document.body.parentNode.scrollHeight) {
			blanket_height = document.body.parentNode.clientHeight;
		} else {
			blanket_height = document.body.parentNode.scrollHeight;
		}
	}
	return blanket_height;
}

function getWindowWidth() {
	if (typeof window.innerWidth != 'undefined') {
		viewportwidth = window.innerHeight;
	} else {
		viewportwidth = document.documentElement.clientHeight;
	}
	if ((viewportwidth > document.body.parentNode.scrollWidth) && (viewportwidth > document.body.parentNode.clientWidth)) {
		window_width = viewportwidth;
	} else {
		if (document.body.parentNode.clientWidth > document.body.parentNode.scrollWidth) {
			window_width = document.body.parentNode.clientWidth;
		} else {
			window_width = document.body.parentNode.scrollWidth;
		}
	}
	return window_width;
}

function popup(windowname) {
	blanket_size(windowname);
	toggle('blanket');
	toggle(windowname);
}

function closePopupDiv(divid) {
	popup('popUpDiv');
	document.getElementById(divid).innerHTML = document.getElementById("popup_box_content").innerHTML;
	document.getElementById(divid).style.display = "none";
}


/* functions to drag the popup box */

function getID(id)
{
	return document.getElementById(id);
}

// 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;
    return;
  }

  s = "Netscape6/";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    return;
  }

  s = "Gecko";
  if ((i = ua.indexOf(s)) >= 0) {
    this.isNS = true;
    return;
  }
}
var browser = new Browser();

// Global object to hold drag information.

var dragObj = new Object();
function dragStart(event, id) {
  var x, y;
  dragObj.elNode = getID(id);
  // 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;

  // 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);
  }
}


/* general functions for the popup boxes. */
var AjaxObject;
function getAjaxObject(){
	var AJAX;
	try {
		AJAX = new XMLHttpRequest();
	} catch(e) {
		try {
			AJAX = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				AJAX = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				alert("Your browser does not support AJAX.");
				return false;
			}
		}
	}
	return AJAX;
}

function getAjaxPostObject(retFn, url, params) {

	AjaxObject = getAjaxObject();
	if (AjaxObject) {
		AjaxObject.onreadystatechange = retFn;
		AjaxObject.open("POST", url, true);

		//Send the proper header information along with the request
		AjaxObject.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		AjaxObject.setRequestHeader("Content-length", params.length);
		AjaxObject.setRequestHeader("Connection", "close");
		AjaxObject.send(params);
	}
	return false;
}

function showPopupDiv(retFn, url, params){
	popup('popUpDiv');
	document.getElementById("popUpDiv").innerHTML= "";
	getAjaxPostObject(retFn, url, params);
	return false;
}

function updatePopupDiv(contentid, width, classname) {
	if(AjaxObject.readyState == 4) {
		if(AjaxObject.status == 200) {
			document.getElementById("popUpDiv").innerHTML = document.getElementById("popup_box").innerHTML;
			document.getElementById("popup_box_content").innerHTML = document.getElementById(contentid).innerHTML;
			document.getElementById(contentid).innerHTML = "";
			setPopupPos("popup_box_content", width, classname);

			var result = AjaxObject.responseText;
			var results = result.split("||");
			document.getElementById(results[1]).innerHTML = results[2];
		} else {
			alert("Error: "+ AjaxObject.statusText +" "+ AjaxObject.status);
		}
	}
}