jQuery.fn.fadeGall = function(_options){

var _options = jQuery.extend({
	gall_holder: '.list',		// холдер меняющихся елементов;
	gall_nav: false,			// массив ссылок навигации, если не указан - навигации нет;
	btn_prev: false,			// class кнопки previous;
	btn_next:false,				// class кнопки next;
	btn_play_stop: false,		// class кнопки play/stop;
	play_class: 'play',			// class который ставится на кнопку play/stop при нажатии на 'play';
	active_class: 'active',		// class активного елемента, ставится для навигации и блоков ;
	change_speed: 100,			// скорость смены елемента;
	change_time: false			// время между сменой елементов;
}, _options);

return this.each(function() {
	var gall_box = jQuery(this);
	var gall_holder = gall_box.find(_options.gall_holder);
	var gall_list = gall_holder.children();
	var gall_nav = false;
	if(_options.gall_nav) { gall_nav = gall_box.find(_options.gall_nav);}
	var active_class = _options.active_class;
	var _active = gall_list.index(gall_list.filter('.' + active_class));
	if(_active == -1) { _active = 0;}
	var change_speed = _options.change_speed;
	var change_time = _options.change_time;
	var _timer;
	
	// set default css styles
	gall_list.removeClass(active_class).css({
		position: 'absolute',
		top: 0,
		left: 0,
		zIndex: 1,
		opacity: 0
	});
	gall_list.eq(_active).addClass(active_class).css({
		position: 'relative',
		zIndex: 2,
		opacity: 1
	});
	if(change_time) { _timer = setTimeout(function(){ _nextEl();}, change_time);}

	//function nextEl
	function  _nextEl(){
		var _ind = _active;
		if(_ind < gall_list.length -1 ){ _ind++;}
		else{ _ind = 0;}
		_changeEl(_ind);
	}
	
	//function changeEl
	function _changeEl(_ind) {
		if(_ind != _active) {
			if (_timer) { clearTimeout(_timer);}
			gall_holder.stop().animate({height: gall_list.eq(_ind).outerHeight()}, change_speed/2);
			gall_list.eq(_active).css({zIndex: 1, position: 'absolute'}).removeClass(active_class).stop().animate({opacity: 0}, change_speed);
			gall_list.eq(_ind).css({zIndex: 2, position: 'relative'}).addClass(active_class).stop().animate({opacity: 1}, change_speed, function(){
				gall_holder.height('auto');
			});
			_active = _ind;
			if(change_time) { _timer = setTimeout(function(){ _nextEl();}, change_time);}
		}
	}
});
};