(function($) {

$.fn.selectores = function(options) {

	var defaults = {
		Texto: "Seleccionar...",
		Valor: false,
		Accion: false,
		Indice: false,
		Ancho: false
	};
	
	var nav = $.browser;
	
	if(nav.msie && nav.version<8){
		var ocultar = true;
	}
	
	var opts = $.extend(defaults,options);

	this.each(function(){
		var objeto = this.id;
		var input = $('<input type="text"/>');
		input.css({width:$(this).outerWidth() + 'px',
				height:'20px',
				top:$(this).position().top + 'px',
				left:$(this).position().left + 'px'}).
			val(opts.Texto).
			insertAfter(this);//val(opts.Texto.replace('í',''))

		input.focus(function(){
			$('.selectores').hide();
			selectores.show();/*
			$('.buscar .contenedor').css('display', 'block');
			$('#zona_extension').animate({height: '1200px'}, 250);
			$('.buscar .contenedor').animate({height: '800px'}, 250);*/
			//$('h2').css('position', 'static');
			if(ocultar){
				$('li.paso .selector').css('visibility','visible');
				if(objeto=='buscar_horarios'){$('li.paso:eq(3) .selector').css('visibility','hidden');}
				if(objeto=='buscar_dias'){$('li.paso:eq(4) .selector').css('visibility','hidden');}
				$('#zona_contenido .cuerpo').css('visibility','hidden');
			}
			if(opts.Indice){
				listado.css('height', indice.outerHeight() + 'px');
			}else{
				listado.css('max-height', '200px');
			}
			$(input).select();
		});

		input.click(function(){
			this.select();
			return false;
		});

		input.keypress(function(){
			return false;
		});

		var hidden = $('<input type="hidden" value="" />').insertAfter(input);
		if($.trim($(this).attr('name')) != ''){
			hidden.attr('name',$(this).attr('name'));
			$(this).attr('name','')
		}
		if(opts.Valor && opts.Valor!='-1'){
			hidden.val(opts.Valor);
			input.addClass('activado');
		}

		var img = $('<span></span>').insertAfter(input);
		/*img.css({position:'absolute',
				right:(input.position().left - 8) + 'px',
				top:(input.position().top + 2) + 'px'});*/

		input.mouseover(function(){
			input.addClass('hover');
		}).mouseout(function(){
			input.removeClass('hover');
		});
		
		img.mouseover(function(){
			input.addClass('hover');
		}).mouseout(function(){
			input.removeClass('hover');
		});

		img.click(function(e){
			if(!$(selectores).is(':visible')){
				$('.selectores').hide();
				$(selectores).show();
				listado.css('height', selectores.find('.indice').height() + 'px');
				$(input).select();
			} else {
				$('.selectores').hide();
				if(ocultar){
					$('li.paso:eq(3) .selector').css('visibility','visible');
					$('li.paso:eq(4) .selector').css('visibility','visible');
					$('#zona_contenido .cuerpo').css('visibility','visible');
				}
			}
			return false;
		});

		var selectores = $('<ul class="selectores">' +
							'<li class="indice">' +
								'<ul>' +
								'</ul>' +
							'</li>' +
							'<li class="listado">' +
								'<ul>' +
								'</ul>' +
							'</li>' +
						'</ul>').insertAfter(input);

		var listado = selectores.find('.listado');

		if(opts.Ancho){
			selectores.css('width', opts.Ancho + 80 + 'px');
			listado.css('width', opts.Ancho + 'px');
		}else{
			listado.css('min-width', $(this).outerWidth() + 9 + 'px');
		}

		listado.mouseover(function(e){
			if($(e.target).children().length == 0)
				$(e.target).addClass('hover');
				//$(e.target).animate({marginLeft: '+=10px'}, 250);
				//$(e.target).animate({paddingLeft: '+=6px'}, 150);
			return false;
		});

		listado.mouseout(function(e){
			if($(e.target).children().length == 0)
				$(e.target).removeClass('hover');
				//$(e.target).animate({marginLeft: '-=10px'}, 250);
				//$(e.target).animate({paddingLeft: '-=6px'}, 50);
			return false;
		});

		listado.click(function(e){
			input.val(String($.trim($(e.target).html())).replace('&amp;','&'));
			hidden.val($(e.target).data('value'));
			//input.css('color', '#fff');
			input.addClass('seleccionado');
			
			if(opts.Accion=='ajax_Horarios'){ ajax_Horarios($(e.target).data('value')); }
			
			selectores.hide();
			if(ocultar){ 
				$('li.paso:eq(3) .selector').css('visibility','visible');
				$('li.paso:eq(4) .selector').css('visibility','visible');
				$('#zona_contenido .cuerpo').css('visibility','visible');
			}
			return false;
		}); 

		var indice = selectores.find('.indice');


		var iul = selectores.find('.indice ul');
		var cul = selectores.find('.listado ul');

		var indices = Array();
		$(this).find('option').each(function(){
		if(opts.Indice){
			var letter = String($(this).html()).substring(0,1).toLowerCase();
			if(!indices[letter]){
				iul.append('<li>' + letter + '</li>');
				indices[letter] = letter;
			}
		}else{
				iul.append('<li>.</li>');
				//indice.css('display', 'none');
			}
			$('<li class="' + $(this).attr('class') + '">' + $(this).html() + '</li>').
				data('value',$(this).attr('value')).
				appendTo(cul);
		});

		indice.click(function(e){
			var activo = String($.trim($(e.target).html())).toLowerCase();
			indice.find('.activo').removeClass('activo');
			listado.find('.activo').removeClass('activo');
			$(e.target).addClass('activo');
			listado.find('ul li').each(function(){
				if(String($(this).html()).substring(0,1).toLowerCase() == activo) {
					$(this).addClass('activo');
					var divOffset = listado.offset().top;
					var pOffset = $(this).offset().top;
					var pScroll = pOffset - divOffset - 1;
					listado.animate({scrollTop: '+=' + pScroll + 'px'}, 250);
					return false;
				}
			});
			return false;
		});

		indice.mouseover(function(e){
			if($(e.target).children().length == 0)
				$(e.target).addClass('hover');
			return false;
		});

		indice.mouseout(function(e){
			if($(e.target).children().length == 0)
				$(e.target).removeClass('hover');
			return false;
		});

		selectores.css('top', input.position().top + input.outerHeight() + 'px').
			css('left', input.position().left + 'px').
			hide();

		$(document).click(function() {
			$('.selectores').hide();
				if(ocultar){
					$('li.paso:eq(3) .selector').css('visibility','visible');
					$('li.paso:eq(4) .selector').css('visibility','visible');
					$('#zona_contenido .cuerpo').css('visibility','visible');
				}
		});

		$(this).css('visibility','hidden');
		if(!opts.Indice){indice.css('visibility','hidden');}
	});
};

})(jQuery);
