//
// Copyright Dave Barnwell dave@freshsauce.co.uk
// Feel Free to reuse this code for non-commercial projects
// Commercial resale use of this code is prohibited (we've all got to make a buck)
//

function startSlide() {
	if (!document.getElementsByTagName) return false;
	var divs = document.getElementsByTagName("div");
	var nLeft = 0;
	var c=0;
	var yMove = 0;
	for (var i=0; i<divs.length; i++) {
		elm = divs[i];
		if (elm.className == "windowOne" || elm.className == "window" || elm.className == "windowWide") {
			yMove = parseInt(elm.offsetHeight);	// Y scroll distance based on content height
			nLeft = 2;
		}
		if (elm.className == "slider" && !elm.setup) {
			elm.yDir = 1;
			elm.setup = 1;	// indicate setup
			elm.yMoveBy = yMove;
			var moves = Math.floor(parseInt(elm.offsetHeight)/yMove)-1;
			elm.limit = -moves*elm.yMoveBy;
			elm.style.position = "absolute";
			elm.style.top = "0px";
			elm.style.left = nLeft + "px";
			elm.id = "slider"+i;
			nLeft += 174;	// width of display elements
			var msec = 5000+(i*250);
			setTimeout("Move('"+elm.id+"',"+10000+")",msec);
		}
	}
}

function rand ( n )
{
  return ( Math.floor ( Math.random ( ) * n + 1 ) );
}

function Move(eid,msec) {
	if (!document.getElementById) return false;
	var elm = document.getElementById(eid);
	var ypos = parseInt(elm.style.top);
	if (ypos >= 0) elm.yDir =-1;
	if (ypos <= elm.limit) elm.yDir = 1;
	if (BrowserDetect.browser == "Firefox" && BrowserDetect.OS == "Windows") {
		// Firefox on PC
		// firefox render bug on PC but not other platforms, so jump to position
		// do nothing for euipped 4 sport as home page scrollers push under flash!
		//elm.style.top = (ypos+(elm.yDir*elm.yMoveBy)) + "px";
	} else {
		// scroll to position
		elm.style.top = ypos+(elm.yDir*elm.yMoveBy)+"px";
		//moveElement(elm.id,parseInt(elm.style.left),ypos+(elm.yDir*elm.yMoveBy),10);
	}
	setTimeout("Move('"+elm.id+"',"+msec+")",msec);
}

function addLoadEvent(func) {
	// Allow multiple loaders
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;
	} else {
			window.onload = function() {
				oldonload();
				func();
			}
	}
}

function moveElement(elementID,final_x,final_y,interval) {
  if (!document.getElementById) return false;
  if (!document.getElementById(elementID)) return false;
  var elem = document.getElementById(elementID);
  if (elem.movement) {
    clearTimeout(elem.movement);
  }
  if (!elem.style.left) {
    elem.style.left = "0px";
  }
  if (!elem.style.top) {
    elem.style.top = "0px";
  }
  var xpos = parseInt(elem.style.left);
  var ypos = parseInt(elem.style.top);
  if (xpos == final_x && ypos == final_y) {
    return true;
  }
  if (xpos < final_x) {
    var dist = Math.ceil((final_x - xpos)/10);
    xpos = xpos + dist;
  }
  if (xpos > final_x) {
    var dist = Math.ceil((xpos - final_x)/10);
    xpos = xpos - dist;
  }
  if (ypos < final_y) {
    var dist = Math.ceil((final_y - ypos)/10);
    ypos = ypos + dist;
  }
  if (ypos > final_y) {
    var dist = Math.ceil((ypos - final_y)/10);
    ypos = ypos - dist;
  }
  elem.style.left = xpos + "px";
  elem.style.top = ypos + "px";
  var repeat = "moveElement('"+elementID+"',"+final_x+","+final_y+","+interval+")";
  elem.movement = setTimeout(repeat,interval);
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

addLoadEvent(startSlide);
//setTimeout(startSlide,2000);	// Call again after two seconds incase body has onLoad tag set

