;(function(){
	$.fn.changeBox = function(options) {
		var opts = $.extend({}, $.fn.changeBox.defaultOptions, options);
		
		return this.each(function(){
			var t = this;
			countDown(t, opts);
		});
	};
	
	$.fn.changeBox.defaultOptions = {
		boxDuration  : 5000,
		boxName      : 'banner',
		efectDuration: 500,
		from	     : '',
		to  		 : ''
	};
})(jQuery);

/**
 * Odpocet casu do dalsiho efektniho prechodu
 * 
 * @param  object t     Aktualni element
 * @param  object opts  Objekt s nastavenim
 * @return void
 */
function countDown (t, opts) {
	var timeOut = setTimeout(function(){
		nextBox(opts);
		countDown(t, opts);
	}, opts.boxDuration);
};

/**
 * Prechod na dalsi box
 * 
 * @param  object opts  Objekt s nastavenim
 * @return void
 */
function nextBox(opts) {
	var from = getActiveBox(opts);
	var to   = from + 1;
	
	if(!$('#' + opts.boxName + '-' + to).length) {
		to = 0;
	}
	
	opts.from = opts.boxName + '-' + from;
	opts.to   = opts.boxName + '-' + to;

	changeContent(opts);
}

/**
 * Funkce, ktera provede efektni prechod mezi 2 boxy
 * 
 * @param  string from
 * @param  string to
 * @return void
 */
function changeContent(opts) {
	/* fungovalo divne v IE
	$('#' + opts.from).fadeOut(opts.efectDuration, function(){
		$('#' + opts.to).fadeIn(opts.efectDuration);
	});
	*/
	
	$('#' + opts.from).fadeOut(opts.efectDuration, function(){
		$('#' + opts.to).show();
	});
}

/**
 * Ziskani cisla aktualniho boxu
 * 
 * @param  object opts  Objekt s nastavenim
 * @return int
 */
function getActiveBox(opts) {
	var i = 0;
	
	while($('#' + opts.boxName + '-' + i).css('display') == 'none') {
		i++;
	}

	if(!$('#' + opts.boxName + '-' + i).length) {
		i = 0;
	}
	
	return i;
}

