// |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
// 
// Coded by Travis Beckham
// This is modified version by msgre, for original version look at author's site:
// http://www.squidfingers.com | http://www.podlob.com
// If want to use this code, feel free to do so, but please leave this message intact.
// If you do remove this, I will hunt you down :)
//
// |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

var w3c = (document.getElementById) ?true:false;
var iex = (document.all)            ?true:false;
var ns4 = (document.layers)         ?true:false;
var supported = (w3c || iex || ns4) ?true:false;

var active = false;
var curObj,curNest;


// ---------------------------------------------------------------------------
function mousemoved (evt){
    // mouse position
	if(iex){
		mousex = (document.documentElement && document.documentElement.scrollLeft) ? document.documentElement.scrollLeft : document.body.scrollLeft;
		mousey = (document.documentElement && document.documentElement.scrollTop) ? document.documentElement.scrollTop : document.body.scrollTop;
		mousex += window.event.clientX;
		mousey += window.event.clientY;
	}
	else{
		mousex = evt.pageX;
		mousey = evt.pageY;
	}
    // position calculation
	if (active) {
        // original code for page offset and visible page height by Peter-Paul Koch
        // visit author page: http://www.quirksmode.org/viewport/compatibility.html
		
        // page offset 
        var pageOffsetX;
        if (self.pageXOffset) { // all except Explorer
            pageOffsetX = self.pageXOffset;
        }
        else if (document.documentElement && document.documentElement.scrollLeft) { // Explorer 6 Strict
            pageOffsetX = document.documentElement.scrollLeft;
        }
        else if (document.body) { // all other Explorers
            pageOffsetX = document.body.scrollLeft;
        }
		
		var pageOffsetY;
        if (self.pageYOffset) { // all except Explorer
            pageOffsetY = self.pageYOffset;
        }
        else if (document.documentElement && document.documentElement.scrollTop) { // Explorer 6 Strict
            pageOffsetY = document.documentElement.scrollTop;
        }
        else if (document.body) { // all other Explorers
            pageOffsetY = document.body.scrollTop;
        }
		
		

        // visible page height
        var visibleWidth;
        if (self.innerWidth) { // all except Explorer
            visibleWidth = self.innerWidth;
        }
        else if (document.documentElement && document.documentElement.clientWidth) { // Explorer 6 Strict Mode
            visibleWidth = document.documentElement.clientWidth;
        }
        else if (document.body) { // other Explorers
            visibleWidth = document.body.clientWidth;
        }
		
		var visibleHeight;
        if (self.innerHeight) { // all except Explorer
            visibleHeight = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
            visibleHeight = document.documentElement.clientHeight;
        }
        else if (document.body) { // other Explorers
            visibleHeight = document.body.clientHeight;
        }
		
		

        // div position calculation
        var divPosX = 0;
        if (mousex > ((visibleWidth / 2) + pageOffsetX)) {
            divPosX = (document.getElementById(curObj).offsetWidth + 30) * (-1);
        }
        divPosX += 15;
		
		var divPosY = 0;
        if (mousey > ((visibleHeight / 2) + pageOffsetY)) {
            divPosY = (document.getElementById(curObj).offsetHeight + 30) * (-1);
        }
        divPosY += 15;
		
		
		
		shiftTo(curObj, mousex + divPosX, mousey + divPosY, curNest);
        
        // show div
        getStyle(curObj,curNest).visibility = "visible";
	}
	return true;
}

// ---------------------------------------------------------------------------
function getStyle(objstr, nest)
{
	nest = (nest) ? "document."+nest+"." : "";
	return (w3c) ? document.getElementById(objstr).style : (iex) ? document.all[objstr].style : (ns4) ? eval(nest+"document."+objstr) : false;
}

// ---------------------------------------------------------------------------
function shiftTo (objstr, x, y, nest)
{
	var obj = getStyle(objstr,nest);
	if(iex){
		obj.pixelLeft = x;
		obj.pixelTop = y;
	}
	else if(ns4){
		obj.moveTo(x,y);
	}
	else if(w3c){
		obj.left = x + "px";
		obj.top = y + "px";
	}
}

// ---------------------------------------------------------------------------
function show(objstr,image,nest)
{
	curObj = objstr;
	curNest = (nest) ? nest : null;
	active = true;
	
	document.images['bigPicture'].src = eval(id[image]+".src");
}

// ---------------------------------------------------------------------------
function hide()
{
	getStyle(curObj,curNest).visibility = "hidden";
	active = false;
}

// ---------------------------------------------------------------------------
if(supported){
	if(ns4){
		document.captureEvents(Event.MOUSEMOVE);
	}
	document.onmousemove = mousemoved;
}