﻿//***********************************************************************//
// ImageScroller - Author:iLawton - PureNet Solutions Ltd
//***********************************************************************//

var IsScrolling = false;
var Element;
var ScrollerSpans;
var ItemWidth = 206;
var ItemHeight = 77;

function addLoadEvent(func) {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = func;		
	} else {
		window.onload = function() {
			if (oldonload) {
				oldonload();
			}
			func();
		}
	}
}

function DetectBrowser() {
	// Detects browser version and sets a higher scroll speed if the browser is IE 8.0 and above
	var browser = navigator.appName;
	var b_version = navigator.appVersion;
	var version = parseFloat(b_version);
	var speed = 3;
	var ie8 = b_version.indexOf("MSIE 8.0");

	if ((browser == "Microsoft Internet Explorer") && (ie8 != -1)) {
		speed = 2;
	}
	else if ((browser == "Netscape" || browser == "Microsoft Internet Explorer") && (version >= 4)) {
		speed = 2;
	}
	else {
		speed = 2;
	}

	return speed;
}



function ScrollLeft(ElementID) {
	Scroll(ElementID, -(DetectBrowser()));
}

function ScrollRight(ElementID) {
	Scroll(ElementID, DetectBrowser());
}

function ScrollLeftSetValues(ElementID, width, height) {
	ItemWidth = width;
	ItemHeight = height;
	Scroll(ElementID, -(DetectBrowser()));
}

function ScrollRightSetValues(ElementID, width, height) {
	ItemWidth = width;
	ItemHeight = height;
	Scroll(ElementID, DetectBrowser());
}

function ScrollUp(ElementID) {
	ScrollVertical(ElementID, DetectBrowser());
}

function ScrollDown(ElementID) {
	ScrollVertical(ElementID, -(DetectBrowser()));
}


function Scroll(ElementID, Value) {
	if (!IsScrolling) {
		Element = document.getElementById(ElementID);
		if (Element != null) {
			ScrollerSpans = getElementsByClass("ScrollerSpan", Element);
			IsScrolling = true;
			MoveImages(Value);
		}
	}
}

function ScrollVertical(ElementID, Value) {
	if (!IsScrolling) {
		Element = document.getElementById(ElementID);
		if (Element != null) {
			ScrollerSpans = getElementsByClass("ScrollerSpan", Element);
			IsScrolling = true;
			MoveImagesVertical(Value);
		}
	}
}

function StopScrolling() {
	IsScrolling = false;
	if (Element != null)
		Element.onMouseout = null;
}

function MoveImages(Value) {	
		
	if ((ScrollerSpans.length * ItemWidth) > Element.offsetWidth) {
		if (IsScrolling) {
			var MaxLeft = 0;
			var MaxRight = Element.offsetWidth;

			for (var i = 0; i < ScrollerSpans.length; i++) {
				var Image = ScrollerSpans[i];

				if ((Value > 0 // We're going right
					&& ScrollerSpans[0].offsetLeft >= 0)
					|| (Value < 0 // We're going left
					&& ScrollerSpans[ScrollerSpans.length-1].offsetLeft <= (Element.offsetWidth - Image.offsetWidth))) {
					IsScrolling = false;
					break;
				}
				if (Image.style != null) {
					Image.style.left = (Image.offsetLeft + Value) + "px";

					if (Image.offsetLeft < MaxLeft) {
						MaxLeft = Image.offsetLeft;
					}

					if ((Image.offsetLeft + ItemWidth) > MaxRight) {
						MaxRight = (Image.offsetLeft + ItemWidth);
					}
				}
			}
			setTimeout("MoveImages(" + Value + ");", 0);
		}
	}
}

function MoveImagesVertical(Value) {
	if ((ScrollerSpans.length * ItemHeight) > Element.offsetHeight) {
		if (IsScrolling) {
			var MaxTop = 0;
			var MaxBottom = Element.offsetHeight;

			for (var i = 0; i < ScrollerSpans.length; i++) {

				var Image = ScrollerSpans[i];
				//alert(Image.offsetTop);
				if ((Value > 0 // We're going down
					&& ScrollerSpans[0].offsetTop >= 0) 
					|| (Value < 0 // We're going up
					&& ScrollerSpans[ScrollerSpans.length - 1].offsetTop <= (Element.offsetHeight - Image.offsetHeight))) {
					IsScrolling = false;
					break;
				}

				if (Image.style != null) {
					Image.style.top = (Image.offsetTop + Value) + "px";

					if (Image.offsetTop < MaxTop) {
						MaxTop = Image.offsetTop;
					}

					if ((Image.offsetTop + ItemHeight) > MaxBottom) {
						MaxBottom = (Image.offsetTop + ItemHeight);
					}
				}
			}

			setTimeout("MoveImagesVertical(" + Value + ");", 0);
		}
	} else {
	}
}


