//=============================================================================
YPP_FadeIn = function(Element, Steps, Callback) {
	if(Steps < 1) {
		return;
	}
 
	var Count = 0;
 
	var AlphaStep = 1.0 / Steps;
 
	function OnFade() {
		Element.style.filter		= "alpha(opacity=" + ((Count * AlphaStep) * 100) + ")";
		Element.style.MozOpacity	= Count * AlphaStep;
		Element.style.opacity		= Count * AlphaStep;
 
		Count++;
 
		if(Count < Steps) {
			setTimeout(OnFade, 10);
		}else{
			Element.style.filter		= "alpha(opacity=100)";
			Element.style.MozOpacity	= 1.0;
			Element.style.opacity		= 1.0;
 
			if(Callback) {
				Callback();
			}
		}
	}
 
	OnFade();
}

//-----------------------------------------------------------------------------
YPP_FadeOut = function(Element, Steps, Callback) {
	if(Steps < 1) {
		return;
	}
 
	var Count = Steps;
 
	var AlphaStep = 1.0 / Steps;
 
	function OnFade() {
		Element.style.filter		= "alpha(opacity=" + ((Count * AlphaStep) * 100) + ")";
		Element.style.MozOpacity	= Count * AlphaStep;
		Element.style.opacity		= Count * AlphaStep;
 
		Count--;
 
		if(Count >= 0) {
			setTimeout(OnFade, 10);
		}else{
			Element.style.filter		= "alpha(opacity=0)";
			Element.style.MozOpacity	= 0.0;
			Element.style.opacity		= 0.0;
 
			if(Callback) {
				Callback();
			}
		}
	}
 
	OnFade();
}

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

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

	self.Loaded		= false;
};

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

		var ImageList		= Array();

		var TimerInterval	= 5000;

		var CurrentPos		= 0;

		var CancelLoop		= false;

		var Locked			= false;

	//public
		self.Container1	= null;
		self.Container2	= null;
		
		self.Wrapper	= null;

		self.Path		= "";

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

		var Count = ImageList.length - 1;
		for(var i = 0;i < ImageList.length;i++) {
			$(self.Wrapper).append("<div id=\"HomeBannersNumber" + i + "\">" + (i + 1) + "</div>");

			var NewElement = $("#HomeBannersNumber" + i).get(0); 

			if(i == 0) {
				NewElement.className = "HomeBannersNumberActive";
			}else{
				NewElement.className = "HomeBannersNumber";
			}

			NewElement.value = i;
			NewElement.style.right	= (15 + (Count * (24 + 10))) + "px";
			NewElement.style.top	= (334 - 15 - 24) + "px";

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

				self.SetBanner(this.value);

				CurrentPos = this.value + 1;

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

			Count--;
		}

		$(self.Container2).css("z-index", parseInt($(self.Container1).css("z-index")) + 1);

		self.SetBanner(0);

		CurrentPos++;

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

		self.PreloadBanner(CurrentPos);

		setTimeout(self.OnLoop, TimerInterval);
	}

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

		if(Locked) {
		}else{
			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.Container1 == null)				return;
		if(self.Container2 == null)				return;

		TimerInterval = ImageList[ID].Interval;

		function OnDone() {
			$(self.Container2).css("background-image", "url('" + self.Path + ImageList[ID].Image + "')");
			YPP_FadeIn($(self.Container2).get(0), 1);

			$(self.Container2).bind("click", function() {
				document.location.href = ImageList[ID].URL;
			});

			Locked = false;
		}

		for(var i = 0;i < ImageList.length;i++) {
			if(i == ID) {
				$("#HomeBannersNumber" + i).attr("class", "HomeBannersNumberActive");
			}else{
				$("#HomeBannersNumber" + i).attr("class", "HomeBannersNumber");
			}
		}

		Locked = true;

		$(self.Container1).css("background-image", "url('" + self.Path + ImageList[ID].Image + "')");
		YPP_FadeOut($(self.Container2).get(0), 50, OnDone);
	}

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

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

			Picture.src = self.Path + ImageList[ID].Image;
		}
	}

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

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

		ImageList.push(Item);
	}
};

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

