/*--- selects ---*/
function initSelects(){
	$('div.select-elements').each(function(_i){
		
		var _hold = $(this);
		var _url = _hold.find('.url').text();
		var sub_hold = _hold.find('.info');
		var default_text = sub_hold.find('.default');
		var sel_text = sub_hold.find('.selected');
		
		var sel_numb = sel_text.find('span');
		
		var _start_select = _hold.find('.start_select').text();

		var _table = _hold.find('.table').text();
		var _rid = _hold.find('.rid').text();
		var _sel_name = _hold.attr('name');
		var sel_array = Array();
		if(_start_select != '') {
			sel_array = _start_select.split('_');
			sel_numb.text(sel_array.length);
			default_text.hide();
			sel_text.show();
			_hold.find('.start_select').html('<input type="hidden" value="'+_start_select+'" name="'+_sel_name+'" />');
		}
		
		var _box = $(' \
			<div class="select-drop"> \
				<div class="list-hold"> \
					<div class="loader">loading...</div> \
				</div> \
				<div class="bottom-part"> \
					<div class="bg-c"> \
						<a href="#" class="btn-deselect">Deselect all</a> \
					</div> \
					<a href="#" class="btn-close">close</a> \
					<div class="bg-l"></div> \
					<div class="bg-r"></div> \
				</div> \
			</div> \
		');
		_box.appendTo(_hold);
		var _list;
		var _data = _hold.find('.data');
		var data_t = -1;
		var capt_def = '';
		sub_hold.mouseenter(function(){
			_hold.addClass('hover');
		}).mouseleave(function(){
			_hold.removeClass('hover');
		}).click(function(){
			_hold.find('.start_select').text('');
			
			if(_box.is(':hidden')){
				_hold.addClass('opened');
				if(data_t != _data.text()){
					data_t = _data.text();
					$.getJSON(_url, {table:_table, filds:data_t, selected:sel_array.join('_')},
						function(data){
							var list_hold = $('<ul></ul>');
							$.each(data, function(i){
								var _name = this[0];
								var _title = this[1];
								var _check = this[2];
								var _capt = this[3];
								if(!_check) _check = false;
								if(_capt && _capt != '' && _capt != capt_def){
									capt_def = _capt;
									list_hold.append('<li><strong>'+capt_def+'</strong></li>');
								}
								if(_name && _title){
									list_hold.append('<li> \
									<span class="list"> \
											<input type="checkbox" value="'+_name+'" name="'+_sel_name+"["+_name+']" id="'+_name+_i+'"'+((_check)?('checked="true"'):(''))+'/> \
											<label for="'+_name+_i+'">'+_title+'</label> \
										</li> \
									</span> \
									');
								}
							});
							_box.find('.list-hold').html(list_hold);
							_list = list_hold.find('input:checkbox');
							if(_list.filter(':checked').length > 0){
								sel_numb.text(_list.filter(':checked').length);					
								default_text.hide();
								sel_text.show();
							}
							_list.click(function(){
								if(_list.filter(':checked').length == 0){
									sel_text.hide();						
									default_text.show();
									sel_numb.text('');
								} else {
									sel_numb.text(_list.filter(':checked').length);						
									default_text.hide();
									sel_text.show();
								}
								if(_rid != ''){
									var check_list='';
									_list.filter(':checked').each(function(){
										check_list += $(this).val()+'_';
									});
									check_list = check_list.substring(0, check_list.length-1);
									if(check_list == '') {
										check_list = 0;	
									}
									$('#'+_rid).text(check_list).siblings('div.info').find('span.selected').hide().siblings('span.default').show();
									$('#'+_rid).siblings('div.select-drop').find('div.list-hold').html('<div class="loader">Loading...</div>');
								}
							});
							_box.find('a.btn-deselect').click(function(){
								_list.removeAttr('checked');
								sel_text.hide();					
								default_text.show();
								sel_numb.text('');
								return false;
							});
						}
					);
				} 
			}
			else{
				_hold.removeClass('opened');
			}
			return false;
		});
		$('body').bind('mousedown', function(e){
			if(_hold.hasClass('opened')){
				e = e || event;
				var t = e.target || e.srcElement;
				t = $(t);
				if(t.parents('div.select-elements:eq(0)').get(0) != _hold.get(0)) _hold.removeClass('opened');
			}
		});
		_box.find('a.btn-close').click(function(){
			_hold.removeClass('opened');
			return false;
		});
	});
}
$(document).ready(function(){
	initSelects();
});