var serverRegexp = /http:\/\/t3.dotgnu.info\/([^?]*)(\?relative)?/
/* nicked off Scott Andrew's example */
function addEvent(elm, evType, fn, useCapture) 
{
	if (elm.addEventListener) 
	{
		elm.addEventListener(evType, fn, useCapture);
			return true;
	}
	else if (elm.attachEvent) 
	{
		var r = elm.attachEvent('on' + evType, fn);
		return r;
	}
	else if(elm != window) 
	{
		elm['on' + evType] = fn;
	}
}

function getViewPort()
{
	if (self.innerWidth)
	{
		frameWidth = self.innerWidth;
		frameHeight = self.innerHeight;
	}
	else if (document.documentElement && document.documentElement.clientWidth)
	{
		frameWidth = document.documentElement.clientWidth;
		frameHeight = document.documentElement.clientHeight;
	}
	else if (document.body)
	{
		frameWidth = document.body.clientWidth;
		frameHeight = document.body.clientHeight;
	}
	return { "width" : frameWidth, "height" : frameHeight };
}

function findPosX(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 findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
				obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function positionFooter(footer)
{
	if(!document.all)
	{
		var area = getViewPort();
		var bottom = findPosY(footer) + footer.offsetHeight;
		var difference = bottom - area.height;
		if(difference < 0)
		{
			footer.style.position = 'fixed';
		}
	}
}

function onload()
{
	var footer = document.getElementById("footer");
	if(footer)
	{
		positionFooter(footer);
	}
}

addEvent(window, "load", onload, true);

function makeRelative(imageObj)
{
	var url = imageObj.src;
	var match = url.match(serverRegexp);
	if(match && match[1] && !match[2])
	{
		var path = match[1];
		imageObj.src = "/" + path + "?relative";
	}
	// TODO: other ways around relative-ness
}
