// Author: Jeff Gaynor 06/12/2007 HotGigs, Inc.
// Purpose: Functions to manage div popups with transparency, loading, and auto-resize functions

// Set Netscape up to run the "captureMousePosition" function whenever
// the mouse is moved. For Internet Explorer and Netscape 6, you can capture
// the movement a little easier.
if (document.layers) { // Netscape
    document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = captureMousePosition;
} else if (document.all) { // Internet Explorer
    document.onmousemove = captureMousePosition;
} else if (document.getElementById) { // Netcsape 6
    document.onmousemove = captureMousePosition;
}
// Global variables
xMousePos = 0; // Horizontal position of the mouse on the screen
yMousePos = 0; // Vertical position of the mouse on the screen
xMousePosMax = 0; // Width of the page
yMousePosMax = 0; // Height of the page
browserName=navigator.appName; 

function captureMousePosition(e) {
    if (document.layers) {
        // When the page scrolls in Netscape, the event's mouse position
        // reflects the absolute position on the screen. innerHight/Width
        // is the position from the top/left of the screen that the user is
        // looking at. pageX/YOffset is the amount that the user has
        // scrolled into the page. So the values will be in relation to
        // each other as the total offsets into the page, no matter if
        // the user has scrolled or not.
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    } else if (document.all) {
        // When the page scrolls in IE, the event's mouse position
        // reflects the position from the top/left of the screen the
        // user is looking at. scrollLeft/Top is the amount the user
        // has scrolled into the page. clientWidth/Height is the height/
        // width of the current page the user is looking at. So, to be
        // consistent with Netscape (above), add the scroll offsets to
        // both so we end up with an absolute value on the page, no
        // matter if the user has scrolled or not.
        if(typeof document.body != undefined && document.body != null)
        {        	
       		xMousePos = window.event.x+document.body.scrollLeft;
        	yMousePos = window.event.y+document.body.scrollTop;
        	xMousePosMax = document.body.clientWidth+document.body.scrollLeft;
        	yMousePosMax = document.body.clientHeight+document.body.scrollTop;
        }
    } else if (document.getElementById) {
        // Netscape 6 behaves the same as Netscape 4 in this regard
        xMousePos = e.pageX;
        yMousePos = e.pageY;
        xMousePosMax = window.innerWidth+window.pageXOffset;
        yMousePosMax = window.innerHeight+window.pageYOffset;
    }
}
// Show object by ID
function show(objectID,poptype) {
	var myObject = document.getElementById(objectID);
	myObject.style.display='block';
	if (poptype == 'mouse') {
		myObject.style.display='block';
		myObject.style.position = 'absolute';
		myObject.style.fontSize = '70%';
		if (browserName == 'Microsoft Internet Explorer') {
			divWidthOffset = 220;
			divHeightOffset = 240;
		} else {
			divWidthOffset = 210;
			divHeightOffset = 105;
		};
		myObject.style.left = divWidthOffset + xMousePos+'px';
		myObject.style.top = divHeightOffset + yMousePos+'px';
	};
}
// Hide object by ID
function hide(objectID) {
	var myObject = document.getElementById(objectID);
	myObject.style.display='none';
	myObject = null;
}
// Change content inside an object
function loadContent(objectID,newContent){
	var myObject = document.getElementById(objectID);
	myObject.innerHTML = newContent;
	return false;
}
// Load a url into an object by ID
function loadObject(url, target) {
  document.getElementById(target).innerHTML = 'Loading...';
  if (window.XMLHttpRequest) {
    req = new XMLHttpRequest();
  } else if (window.ActiveXObject) {
    req = new ActiveXObject("Microsoft.XMLHTTP");
  }
  if (req != undefined) {
    req.onreadystatechange = function() {loadSuccess(url, target);};
    req.open("POST", url, true);
    req.send("");
  }
}
// If load succesful, display the item. Otherwise, display load error.
function loadSuccess(url, target) {
  if (req.readyState == 4) { // only if req is "loaded"
    if (req.status == 200) { // only if "OK"
      document.getElementById(target).innerHTML = req.responseText;
    } else {
      document.getElementById(target).innerHTML=" Load error:\n"+ req.status + "\n" +req.statusText;
    }
  }
}
// Load a page into a div by ID/
function load(name, div) {
	loadObject(name, div);
	return false;
}
// Resize the div in case the user scrolls
function resize(ObjectID){
	var myObject = document.getElementById(ObjectID);
	var htmlheight = document.body.parentNode.scrollHeight;
	var windowheight = window.innerHeight;
	if ( htmlheight < windowheight ) {
		document.body.style.height = windowheight + "px";
		myObject.style.height = windowheight + "px";
	} else {
		document.body.style.height = htmlheight + "px";
		myObject.style.height = htmlheight + "px";
	}
}