var Banner = {};

Banner.Randomer = function(){
}

Banner.Randomer.prototype = {
	AddBanners: function(elements){
		this.elements = elements;
	},
	/**
	 * Элемент где храняться баннеры.
	 */
	SetBannerContainer: function(value){
		this.bannerContainer = value;
	},
	Rnd: function(aPriority, iMaxCount){
		var bannersOrder = [];
		var clonedElements = this.Clone(this.elements);
		
		bannersOrder[0] = this.GetBanner(this.elements.length, aPriority);
		for(var i = 1; i < iMaxCount; i++){
			var nextVal = this.GetBanner(this.elements.length, aPriority);
			while(this.ArrayContains(bannersOrder, nextVal)){
				var xxx;
				nextVal = (nextVal == this.elements.length - 1) ? 0 : (nextVal + 1);
			}
			bannersOrder[i] = nextVal;
		}
		this.bannerContainer.innerHTML = '';
		for(var i = 0; i < bannersOrder.length; i++){
			var current = bannersOrder[i];
			clonedElements[current].style.display = 'block';
			this.bannerContainer.appendChild(clonedElements[current]);
			if(i%2 == 1){
				var oBreak = document.createElement('div');
				oBreak.style.clear = 'left';
				this.bannerContainer.appendChild(oBreak);
			}
		}
	},
	/**
	 * Содержит ли массив значение.
	 */
	ArrayContains: function(arr, value){
		for(var i = 0; i < arr.length; i++){
			if(arr[i] == value) return true;
		}
		return false;
	},
	Clone: function(elementsArr){
		var arr = [];
		for(var i = 0; i < elementsArr.length; i++){
			arr[i] = elementsArr[i].cloneNode(true);
			$(arr[i]).removeClass('first');
		}
		return arr;
	},
	/**
	 * Получить случайное число.
	 */
	GetRandom: function(number){
		return Math.floor((number + 1) * Math.random());
	},
	
	GetBanner : function (number, aPriority){
		var iPrioritySum = 0;
		for(var i = 0;i < aPriority.length; i++ ){
			iPrioritySum += aPriority[i];
		}
		var rnd=Math.floor( Math.random() * ( iPrioritySum / 100 + 1) );
		var iPriorityCnt = 0;
		var iShowBanner = 0;
		for (var i = 0;i < aPriority.length; i++ ){
			iPriorityCnt += Math.round( aPriority[i]/100 );
			if(rnd <= iPriorityCnt){
				iShowBanner = i;
				break;
			}
		}
		return iShowBanner;
	}
}

function showRandomBanner(banners, aPriority){
	var iPrioritySum=0;
	for(var i = 0;i < aPriority.length; i++ ){
		iPrioritySum += aPriority[i];
	};
	var rnd = Math.floor( Math.random() * ( iPrioritySum / 100 + 1) );
	var iPriorityCnt = 0;
	var iShowBanner = 0;
	for( var i = 0; i < aPriority.length; i++ ){
		iPriorityCnt += Math.round( aPriority[i]/100 );
		if(rnd <= iPriorityCnt){
			iShowBanner = i;
			break;
		}
	};
	banners.css('display', 'none').filter(':eq(' + iShowBanner + ')').css('display', 'block');
};



