dom = document.getElementById ? true : false;
ns5 = ((navigator.userAgent.indexOf("Gecko") > -1) && dom) ? true : false;
ie5 = ((navigator.userAgent.indexOf("MSIE") >- 1) && dom) ? true : false;
ns4 = (document.layers && !dom) ? true : false;
ie4 = (document.all && !dom) ? true : false;
nodyn = (!ns5 && !ns4 && !ie4 && !ie5) ? true : false;

/*
	-----
	Rollout
	-----
*/

function rolloutAddItem(id, srcOn, srcOff) {
	this.id = id;

	if ( null != srcOn ) {
		this.on = new Image();
		this.on.src = srcOn;
	}

	if ( null != srcOff ) {
		this.off = new Image();
		this.off.src = srcOff;
	}
}

// Rollover
function rolloutSwap(img, swap) {
	if ( nodyn ) {
		return;
	}

	obj = document.getElementById(img.id);

	if ( null != obj ) {
		obj.src = swap ? img.on.src : img.off.src;
	}
}


/*
	-----
	Fade images
	-----
*/
fadeImageList = new Object();
fadeImageTimer = new Object();

// Fade an image
function fadeImage(object, opacity, delta, rate){
	if ( ! ie5 ) {
		return;
	}

	direction = object.filters.alpha.opacity > opacity ? -1 : 1;

	delta = Math.min(direction * (opacity - object.filters.alpha.opacity), delta);
	object.filters.alpha.opacity += direction * delta;

	clearTimeout(fadeImageTimer[object.sourceIndex]);

	if ( object.filters.alpha.opacity != opacity ) {
		fadeImageList[object.sourceIndex] = object;
		fadeImageTimer[object.sourceIndex] = setTimeout("fadeImage(fadeImageList[" + object.sourceIndex + "], " + opacity + ", " + delta + ", " + rate + ")", rate);
	}
}


/*
	-----
	Floating description
	-----
*/

var descTimer = null;

var descOffsetX = 20;
var descOffsetY = 12;

var descObject;
var descCss;

var descDisplay = false;

var descMouseX, descMouseY;

function descInit() {
	if ( nodyn ) {
		return;
	}

	descObject = ns4 ? document.tipDiv.document : ie4 ? document.all['divDesc'] : (ie5 || ns5) ? document.getElementById('divDesc') : null;
	descCss = ns4 ? document.divDesc : descObject.style;

	if ( descObject ) {
		if ( ns4 ) {
			document.captureEvents(Event.MOUSEMOVE);
		}

		document.onmousemove = descTrackMouse;
	}
}

function descShow(title, text, info) {
	if ( '' == title ) {
		return;
	}
	else if ( ! descObject ) {
		descInit();

		if ( ! descObject ) {
			return;
		}
	}

	clearTimeout(descTimer);

	var content = '';

	content += '<div class="imageDescTitle">' + title + '</div>'

	if ( text ) {
		content += '<div class="imageDescText">' + text + '</div>'
	}

	if ( info ) {
		content += '<div class="imageDescInfo">' + info + '</div>'
	}

	content = '<div class="imageDescBackground">' + content + '</div>';

	descDisplay = true;
 	descObject.innerHTML = content;
	descCss.visibility = 'visible';
}

function descHide(hide) {
	if ( ! descObject ) {
		return;
	}

	if ( hide ) {
		descDisplay = false;
		descCss.visibility = 'hidden';
	}
	else {
		descTimer = setTimeout("descHide(true)", 100);
	}
}

function descPosition() {
	var tpWd = ns4 ? descObject.width : (ie4 || ie5) ? descObject.clientWidth : descObject.offsetWidth;
	var tpHt = ns4 ? descObject.height : (ie4 || ie5) ? descObject.clientHeight : descObject.offsetHeight;

	var winWd = (ns4 || ns5) ? window.innerWidth - 20 + window.pageXOffset : document.body.clientWidth + document.body.scrollLeft;
	var winHt = (ns4 || ns5) ? window.innerHeight - 20 + window.pageYOffset : document.body.clientHeight + document.body.scrollTop;

	if ( (descMouseX + descOffsetX + tpWd) > winWd ) {
		descCss.left = ns4 ? descMouseX - (tpWd + descOffsetX) : descMouseX - (tpWd + descOffsetX) + "px";
	}
	else {
		descCss.left = ns4 ? descMouseX + descOffsetX : descMouseX + descOffsetX + "px";
	}

	if ( (descMouseY + descOffsetY + tpHt) > winHt ) {
		descCss.top = ns4 ? winHt - (tpHt + descOffsetY) : winHt - (tpHt + descOffsetY) + "px";
	}
	else {
		descCss.top = ns4 ? descMouseY + descOffsetY : descMouseY + descOffsetY + "px";
	}
}

function descTrackMouse(evt) {
	descMouseX = (ns4 || ns5)? evt.pageX : window.event.clientX + document.body.scrollLeft;
	descMouseY = (ns4 || ns5)? evt.pageY : window.event.clientY + document.body.scrollTop;

	if ( descDisplay ) {
		descPosition();
	}
}