
var multySelect = new Class({
	Implements: [Events, Options],
	
	options: {
		title: 'Выбрать из списка'
		
	},
	initialize: function(elements, options){
		var ie6 = (navigator.userAgent.search('MSIE 6.0') != -1);
		if(ie6) return false;
		
		this.elements = $$(elements);
		//alert(this.elements.length);
		var params = Array.link(arguments, {options: Object.type, elements: $defined});
		this.setOptions(params.options || null);
		
		
		
		this.srReplaceSelects();
		
		
	},
	
	srReplaceSelects: function(){
		var s = this.elements;
		var len = s.length
	
		for (var i = 0; i < len; i++) this.rsSelectReplace(s[i]);
		
		

		document.addEvent('click', function(e){
			//e.stop();
			srOnDocumentClick(e);
		});
	},
	rsSelectReplace: function(sel){
		this.buildBox(sel);
	},
	
	//строим список
	buildBox: function(sel){
		var _self = this;
		
		var title = sel.getProperty('data:title');
		//определяем координаты замещаемого селекта
		var wrapper = sel.getParent('.JS_select_wrapper');
	
		
		sel.setStyles({
			'z-index': -1000,
			'position': 'relative',
			'visibility': 'hidden',
			'height': 21
		});
		sel.getParent('div.form').getElement('input[type=submit]').setStyle('display','none');
		
		//alert(this.elements.length);
		
		var slBoxContainer = new Element('div', {
			'class': 'slBoxContainer'
		});
		slBoxContainer.inject(wrapper);
		
		var slTitle = new Element('div',{
			'class': 'slTitle',
			'events': {
				'click': function(e){
					e.stop();
					var ul = this.getNext('.ulBoxContainer');
					_self.showBox(ul);//показать / скрыть
				}
			}
		});
		slTitle.inject(slBoxContainer);
		
		window.addEvent('click', function(){
			slBoxContainer.getElement('.ulBoxContainer').setStyle('display', 'none');
		});
		
		

		
		var p = new Element('p');
		p.inject(slTitle);
		p.set('text', this.options.title);
		
		var ulBoxContainer = new Element('div', {
			'class': 'ulBoxContainer'
		});
		ulBoxContainer.inject(slBoxContainer);
		
		//создаем ul
		var ul = new Element('ul',{
			'class': 'srList',
			'data:rel': sel.getProperty('id')
		});
		ul.inject(ulBoxContainer);
		
		var options = sel.options;
		var len = options.length;
		
		options[0].text = title;

		for(var i = 0; i < len; i++){
			var li = new Element('li',{
				//'value': options[i].getProperty('value'),
				'value': options[i].value,
				'index': i,
				'events': {
					'mouseover': function() { this.addClass('srHoverLi'); },
					'mouseout': function() { this.removeClass('srHoverLi'); },
					'click': function(e){e.stop();_self.checked(this);}//отметить / снять
				}
			});
			if(options[i].selected) li.addClass('slSelected');
			li.inject(ul);
			var span = new Element('span');
			span.inject(li);
			span.set('text', options[i].text);
			
		}
		
		var slFooter = new Element('div', {
			'class': 'slFooter'
		});
		slFooter.inject(ulBoxContainer);
		var button = new Element('input', {
			'class': 'slSubmit',
			'type': 'submit',
			'value': 'Выбрать',
			'events': {
				'click': function(e){
					e.stop();
					var id = this.getParent('div').getPrevious('ul').getProperty('data:rel');
					var form = $(id).getParent('div.form');
					form.removeEvent('submit');
					var sel = form.getElement('select');
					var name = sel.getProperty('name');
					var items = new Array();
					var options = sel.options;
					for(i=0;i<options.length;i++){
					var item = options[i];
						if(item.selected) {
							items.push(item.value);
						}
					}
					var s = '?';
					items.each(function(item){
						s += name+'['+item+']='+item+'&';
					});
					location.href=window.location.pathname+s;
					//alert(window.location.pathname+s);
					//form.submit();
				}
			}
		});
		button.inject(slFooter);
	
	
	},
	
	// вспомогательные служебные функции
	isDisplay: function(el){
		if(el.getStyle('display') == 'block') return true; else return false;
	},
	isChecked: function(li){
		if(li.hasClass('slSelected')) return true; else return false;
	},
	showBox: function(el){
		if(!this.isDisplay(el)) el.setStyle('display', 'block'); else el.setStyle('display', 'none');
	},
	checked: function(li){
		var ul = li.getParent('ul');
		ul.getFirst('li').removeClass('slSelected');
		if(!this.isChecked(li)) li.addClass('slSelected'); else li.removeClass('slSelected');
		this.selChecked(li);
	},
	
	selChecked: function(li){//изменяем выпадающий список аналогично ul
		var ul = li.getParent('ul');
		var id = ul.getProperty('data:rel');
		var sel = $(id);
		index = li.getProperty('index');
		var options = sel.options;
		if(index != 0){
				if(this.isChecked(li)) options[index].selected = true; else options[index].selected = false;
		}
		else {
			var len = options.length;
			var li = ul.getElements('li')

			for(var i = 1; i < len; i++){
				options[i].selected = false;
				li[i].removeClass('slSelected');
			}
		
		}
	},
	
	some: function(){
	
	}
	
});



