var slider_el = new Array();


var isDisplay = function(el){
	if(el.getStyle('display') == 'block') return true; else return false;
}

var isActive = function(a){
	if(a.hasClass('active')) return true; else return false;
}


/************************************************************
*
*	AccordionView
*	Аккордеон для одиночного дива в стиле 
*	бла-бла-ба (показать подробнее/скрыть подробнее)
*	требует передать объект ссылки, скрытый объект и родительский контейнер
*	Ширина считается по ширине родителя
*
***************************************************************/

var AccordionView = new Class({
	Implements: [Events, Options],
	
	options: {
		parent: false,
		hidden: false,
		duration: 500
		
	},
	
	initialize: function(a, options){
		this.setOptions(options);
		
		var elem = this.options.hidden;
		var _self = this;
		this.flag = false;
		
		//считаем его ширину. полагаем, что она равна ширине содержащего контейнера (parent)
		elem.setStyle('width', this.options.parent.getStyle('width'));
		
		this.showEffect = new Fx.Morph(elem, {
			duration: this.options.duration,
			onComplete: function(){
				if(_self.flag){
					this.set({display: 'none'});
				}
				if(!_self.flag){
					//a.set('text', _self.options.hideText);
					//a.removeClass('plus');
					//a.addClass('minus');
				}
				else{
					//a.set('text', _self.options.showText);
					//a.removeClass('minus');
					//a.addClass('plus');
				}
			},
			onStart: function(){
				if(!_self.flag){
					this.set({display: 'block'});
				}
			}
			
		});
	},

	transform: function(){
		var elem = this.options.hidden;
		//вспомогательная переменная. показывает, в каком состоянии блок
		this.flag = this.is_visible();
		//сбрасываем фиксацию высоты
		elem.setStyle('height','auto');

		if(!this.flag){
			var sz = elem.getDimensions();
			this.showEffect.set({display: 'block', height: 1});
			this.showEffect.start({
				'height': [1, sz.height]
			});
		}
		else{
			
			var sz = elem.getSize();
			this.showEffect.start({
				'height': [sz.y, 1]
			});

		}
		
	},
	is_visible: function(){
		
		var visible = true;
		if(this.options.hidden.getStyle('display') != 'block') visible = false;
		return visible;
	}
});

/************************************************************
*
*	AccordionView
*	Аккордеон для одиночного дива в стиле 
*	бла-бла-ба (показать подробнее/скрыть подробнее)
*	требует передать объект ссылки, скрытый объект и родительский контейнер
*	Открывается мгновенно!!! Зато не важна ширина и можно использовать с левыми картинками
*
***************************************************************/

var AccordionView2 = new Class({
	Implements: [Events, Options],
	
	options: {
		parent: false,
		hidden: false,
		duration: 500,
		hideText: 'Скрыть подробности',
		showText: 'Показать подробнее'
		
	},
	
	initialize: function(a, options){
		this.setOptions(options);
		
		var elem = this.options.hidden;
	
		this.flag = false;
		
		this.a = a;
		
			
		
	},

	transform: function(){
		var elem = this.options.hidden;
		//вспомогательная переменная. показывает, в каком состоянии блок
		//this.flag = this.is_visible();
		this.flag = isDisplay(this.options.hidden);
		//сбрасываем фиксацию высоты
		elem.setStyle('height','auto');

	
		
				if(this.flag){
					this.options.hidden.setStyles({display: 'none'});
					this.a.set('text', this.options.showText);
					this.a.removeClass('minus');
					this.a.addClass('plus');
				}
				else{
					this.options.hidden.setStyles({display: 'block'});
					this.a.set('text', this.options.hideText);
					this.a.removeClass('plus');
					this.a.addClass('minus');
				}
				
				
		
	},
	is_visible: function(){
		
		var visible = true;
		if(this.options.hidden.getStyle('display') != 'block') visible = false;
		return visible;
	}
});



/* *************************************
*
*  UMI REQUEST
*
************************************ */

var umiRequest = new Class({
	initialize: function (){

		},
	send: function (request){
			this.cook = document.cookie;//получаем все куки
			request.setHeader('Cookie', this.cook);
			request.send();
		}
});

var umi = new umiRequest();





/************************************************************
*
*	RadioAccord  (радио - по аналогии с радоибаттон)
*	Аккордеон для нескольких связанных блоков. 
*	Общий контейнер -trigger, элемент-переключатель - switcher, скрываемый блок - out
*	требует передать имена классов этих элементов
*	Открывается мгновенно!!! 
*
***************************************************************/

var RadioAccord = new Class({
	Implements: [Events, Options],
	
	options: {
		trigger: '.trigger',
		switcher: '.switch',
		out: '.out'
		
	},
	
	initialize: function(options){
		this.setOptions(options);
		
		var _self = this;
		this.A = new Array();//в этом массиве храним весь комплект
		this.trigger = $$(this.options.trigger).each(function(item, index){
			var switcher = item.getElement(_self.options.switcher);
			var out = item.getElement(_self.options.out);
			_self.A[index] = new Hash({
				trigger: item,
				switcher: switcher,
				out: out
			});
			
			switcher.addEvent('click', function(e){
				if(e) e.stop();
				
				_self.doSomeThing(this);
			});
		});
		
		
	},

	getOutByEl: function(el){
		var i = 0;
		this.A.each(function(item, index){
			if(item.switcher == el) i = index;
		});
		return this.A[i].out;
	},
	
	closeAll: function(){
		this.A.each(function(item){
			item.out.setStyle('display', 'none');
		});
		return true;
	},
	
	showOut: function(el){
		el = this.getOutByEl(el);
		el.setStyle('display', 'block');
		
		ajax_show_gallery(el);
		return true;
	},
	
	isDisplay: function(el){
		el = this.getOutByEl(el);
		
		if(el.getStyle('display') == 'none') return false; else return true;
	},
	
	doSomeThing: function(el){
		if(this.isDisplay(el)){
			this.closeAll();
		}
		else{
			this.closeAll();
			this.showOut(el);
		}
		return true;
	}
});






