/* =========================================================

// Date: 2010-04-09
// Company: DCitc
// Autor: Sergey Samartsev
// Web: http://dcitc.com

// ========================================================= */

(function($) {

$.fn.changer = function(options) {

	this.each(function(){ 	
		
		var settings = {
			speed: 'normal',
			timeout: 2000,
			containerheight: 'auto',
			elements_to_show: 3
		};
		
		if(options)
			$.extend(settings, options);
		
		var elements = $(this).children();
		var shown_elements = new Array();		
	
		if (elements.length > settings.elements_to_show) {
		   for (var i=0; i<settings.elements_to_show; i++) {
			shown_elements[shown_elements.length]=i;
		   }
		   for (var i=settings.elements_to_show-1; i>=0; i--) {
			var position = $(elements[i]).position();
			$(elements[i]).css('position', 'absolute');
			$(elements[i]).css(position);			
		   }
                   for (var i=settings.elements_to_show; i<elements.length; i++) {
			$(elements[i]).hide();
//			$(elements[i]).css('display','none');
		   }
		}
		setTimeout(function(){
			$.changer.next(elements, settings, shown_elements);
		}, settings.timeout);
		
	});
};


$.changer = function() {}
$.changer.next = function (elements, settings, shown_elements) {
	var pos = Math.floor(Math.random()*(settings.elements_to_show));
	var element_from = shown_elements[pos];
	var position = $(elements[element_from]).position();
	// find non displayed element
	var found = false;
	var element_to = -1;
	var e = 0;
	while (!found && (e<1000)) {
		var p = Math.floor(Math.random()*elements.length);
		if (('|'+shown_elements.join('|')+'|').indexOf('|'+p+'|')==-1) {
			found = true;
			element_to = p;
		}		
	}
	$(elements[element_to]).css('position', 'absolute');
	$(elements[element_to]).css(position);
	$(elements[element_from]).fadeOut(settings.speed);
	$(elements[element_to]).fadeIn(settings.speed);
	shown_elements[pos]=element_to;

	setTimeout((function(){$.changer.next(elements, settings, shown_elements);}), settings.timeout);
};
})(jQuery);
