//=============================================================================
var CBanners_Item = function() {
	var self = this;

	self.Image		= "";
	self.URL		= "";
	self.Interval	= 0;

	self.Loaded		= false;
}

//=============================================================================
var CBanners = function() {
	//private
		var self			= this;

		var ImageList		= Array();

		var TimerInterval	= 5000;

		var CurrentPos		= 0;

		var CancelLoop		= false;

	//public
		self.Element	= null;
		self.Element2	= null;

		self.Wrapper	= null;

	//=========================================================================
	self.Start = function() {
		if(self.Element == null || ImageList.length <= 1) return;

		var Count = ImageList.length - 1;
		for(var i = 0;i < ImageList.length;i++) {
			var NewElement = XElement.AddChild("Banner_Container_Number_" + i, self.Wrapper, (i + 1));

			if(i == 0) {
				NewElement.className = "Banner_Container_Number_Active";
			}else{
				NewElement.className = "Banner_Container_Number";
			}

			NewElement.value = i;
			NewElement.style.right	= (15 + (Count * (24 + 10))) + "px";
			NewElement.style.bottom	= (12) + "px";

			NewElement.onclick = function() {
				CancelLoop = true;

				self.SetBanner(this.value);

				CurrentPos = this.value + 1;

				if(CurrentPos >= ImageList.length) {
					CurrentPos = 0;
				}
			}

			Count--;
		}

		CurrentPos++;

		if(CurrentPos >= ImageList.length) {
			CurrentPos = 0;
		}

		self.PreloadBanner(CurrentPos);

		setTimeout(self.OnLoop, TimerInterval);
	}

	//-------------------------------------------------------------------------
	self.OnLoop = function() {
		if(CancelLoop) { 
			return;
		}

		self.SetBanner(CurrentPos);

		CurrentPos++;

		if(CurrentPos >= ImageList.length) {
			CurrentPos = 0;
		}

		self.PreloadBanner(CurrentPos);

		setTimeout(self.OnLoop, TimerInterval);
	}

	//-------------------------------------------------------------------------
	self.SetBanner = function(ID) {
		if(ID < 0 || ID >= ImageList.length)	return;
		if(self.Element == null)				return;
		if(self.Element2 == null)				return;

		TimerInterval = ImageList[ID].Interval;

		function OnDone() {
			self.Element2.style.backgroundImage = "url('./images/homepage-banners/" + ImageList[ID].Image + "')";

			self.Element2.onclick = function() {
				document.location.href = ImageList[ID].URL;
			}
		}

		for(var i = 0;i < ImageList.length;i++) {
			var NumElement = XElement.GetByID("Banner_Container_Number_" + i);

			if(i == ID) {
				NumElement.className = "Banner_Container_Number_Active";
			}else{
				NumElement.className = "Banner_Container_Number";
			}
		}

		self.Element.style.backgroundImage = "url('./images/homepage-banners/" + ImageList[ID].Image + "')";

		XEffect.FadeOut(self.Element2, 15, OnDone);
	}

	//-------------------------------------------------------------------------
	self.PreloadBanner = function(ID) {
		if(ImageList[ID].Loaded == false) {
			var Picture = new Image();

			Picture.onload = function() {
				ImageList[ID].Loaded = true;
			}

			Picture.src = "./images/homepage-banners/" + ImageList[ID].Image;
		}
	}

	//-------------------------------------------------------------------------
	self.AddImage = function(Image, URL, Interval) {
		var Item = new CBanners_Item();

		Item.Image		= Image;
		Item.URL		= URL;
		Item.Interval	= Interval;

		ImageList.push(Item);
	}
}

//=============================================================================
