/**
 * jQuery selectstyler plugin
 * Replaces standard selects with more customizable ones.
 * @version 0.1(05/03/2008)
 * @author Dmitriy Chekanov, d.chekanov@gmail.com
 * @example $('select').selectstyler() 
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 * @todo почистить, добавить комментарии. 
 */

(function($){
	
	/**
	 * Основная функция
	 * 
	 * @param {Object} options объект с параметрами
	 * @return jQuery
	 */
	
	$.fn.selectstyler = function(options) {
		// получение параметров плагина. если при вызове плагина пар-ры не указаны, берутся пар-ры из объекта selectstyler.defaults
		var opts = $.extend({}, $.fn.selectstyler.defaults, options);
		// цикл обрабатывает каждый найденный элемент
		return this.each(function(i) {
			$$ = $(this);
			$$.addClass('ss_hidden ss_oselect_' + i);
			
			var $newSelectWrapper = $('<div class="ss_wrapper"></div>');
			var $newSelectList = $('<ul class="ss_list ss_list_' + i + '"></ul>');
			var $newSelectControl = $('<div class="ss_nselect ss_control_wrapper_' + i + '"><div class="ss_control_button"></div><div class="ss_control_input"><span></span></div></div>');
			
			$newSelectControl.find('.ss_control_input span').text($(this).find('option[selected]').text());
			
			$$.find('option').each(function(j){
				$newSelectList.append('<li><a href="' + $(this).val() +'">' + $(this).text() + '</a></li>');
				$newSelectList.find('li:last').click(function(){
					$this = $(this);
					$('.ss_oselect_' + i).find('option').each(function(){
						if($this.text() == $(this).text()){
							$('.ss_oselect_' + i).find('option').each(function(){ $(this).removeAttr('selected'); });
							$(this).attr('selected', 'selected');
							$('.ss_control_wrapper_' + i).click();
						};
					});
					$('.ss_control_wrapper_' + i).find('.ss_control_input span').text($('.ss_oselect_' + i).find('option[selected]').text());
				});
			});
			
			$newSelectList.find('li').hover(function(){
				$(this).addClass('hovered');
			}, function(){
				$(this).removeClass('hovered');
			});
			
			$newSelectWrapper.insertAfter(this);
			$newSelectControl.appendTo($newSelectWrapper);
			$newSelectList.appendTo($newSelectWrapper);
			
			$('.ss_control_wrapper_' + i).toggle(function(){
				$('.ss_list_' + i).slideDown('fast');
			}, function(){
				$('.ss_list_' + i).slideUp('fast');
			});
			
			$('.ss_list_' + i).hide();
			$$.hide();
			
		});
	};

	/**
	 * Параметры по умолчанию
	 */
	$.fn.selectstyler.defaults = {
		
	};
	
})(jQuery);
