
/**************************************************
* Name: hijaxtest.js
* Author: PCJ
* Modified: 2008-03-17 08:28:05
* Overview:
* Copyright: WLD
* Notes: 
**************************************************/

// Adds window DomReady events safely
function winAddReadyEvent (func) {
	var d = window.document;
	var u = window.navigator.userAgent.toLowerCase ();

	function init (e) {
		if (!arguments.callee.done) {
			arguments.callee.done = true;
			func (e);
		}
	}

	if (/khtml|webkit/.test (u)) { // Konqi/Safari
		(function () {
			if (/complete|loaded/.test (d.readyState)) {
				init ('poll');
			} else {
				setTimeout (arguments.callee, 10);
			}
		}) ();
	} else if (/msie/.test (u) && !window.opera) { // IE
		(function () {
			try {
				d.documentElement.doScroll ('left');
			} catch (e) {
				setTimeout (arguments.callee, 10);
				return;
			}
			init ('poll');
		}) ();
		d.attachEvent (
			'onreadystatechange',
			function (e) {
				if (d.readyState == 'complete') {
					d.detachEvent ('on' + e.type, arguments.callee);
					init (e.type);
				}
			}
		);
	} else if (d.addEventListener && (/gecko/.test (u) && parseFloat (u.split ('rv:')[1]) >= 1.8) || (/opera/.test (u) && parseFloat (u.split ('opera/')[1]) > 9)) { // Others with native DOMContentLoaded
		d.addEventListener (
			'DOMContentLoaded',
			function (e) {
				this.removeEventListener (e.type, arguments.callee, false);
				init (e.type);
			},
			false
		);
	} else { // Worst case fallback
		winAddLoadEvent (func);
	}
}

// Adds window load events safely
function winAddLoadEvent (func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
		window.onload = function () {
			oldonload ();
			func ();
		}
	}
}

// Prepare our variables
var scroller, scrollerlist; //, scrollerbar;

// Attach our gfx preparation as the first ondomready Hijax call
winAddReadyEvent (doGfxPrep);

// Now add the gfx animation as for load time
winAddLoadEvent (doGfxRun);

// The graphics effects preparation function
function doGfxPrep () {
	// Check for some sanity
	if (!document.getElementById ("scroller")) return false;
	if (!document.getElementById ("scrollerlist")) return false;
	//if (!document.getElementById ("scrollerbar")) return false;

	// Get the relevant elements
	scroller = document.getElementById ("scroller");
	scrollerlist = document.getElementById ("scrollerlist");
	//scrollerbar = document.getElementById ("scrollerbar");

	// Hide the scrollerlist and scrollerbar immediately
	scrollerlist.style.left = "-1430px";
	//scrollerbar.style.top = "190px";
}

// The graphics effects animation function
function doGfxRun () {
	// Now slide the components in
	objSlide ("scrollerlist", 0, 0, 20);
	//setTimeout ("objSlide (\"scrollerbar\", 0, 140, 50);", 500);
}

// Gracefully slides an object
function objSlide (elementID, finalx, finaly, timedelay) {
	if (!document.getElementById (elementID)) return false;

	var moveElement = document.getElementById (elementID);
	if (moveElement.movement) clearTimeout (moveElement.movement);

	if (!moveElement.style.left) moveElement.style.left = "0px";
	if (!moveElement.style.top) moveElement.style.top = "0px";

	var xpos = parseInt (moveElement.style.left);
	var ypos = parseInt (moveElement.style.top);

	if (xpos == finalx && ypos == finaly) return true;

	if (xpos < finalx) {
		var distance = Math.ceil ((finalx - xpos) / 10);
		xpos += distance;
	}

	if (xpos > finalx) {
		var distance = Math.ceil ((xpos - finalx) / 10);
		xpos -= distance;
	}

	if (ypos < finaly) {
		var distance = Math.ceil ((finaly - ypos) / 10);
		ypos += distance;
	}

	if (ypos > finaly) {
		var distance = Math.ceil ((ypos - finaly) / 10);
		ypos -= distance;
	}

	moveElement.style.left = xpos + "px";
	moveElement.style.top = ypos + "px";

	var iteration = "objSlide ('" + elementID + "', " + finalx + ", " + finaly + ", " + timedelay + ")";
	moveElement.movement = setTimeout (iteration, timedelay);
}
