/*
 * jQuery select replacement
 * http://crgdesign.com.br/blog/
 *
 * Copyright (c) 2009 Carlos Roberto Gomes Júnior - Version: 1.1
 *
 *****************************************************************************
 * Versão alterada para nao dar hover. somente qdo clicar
 *****************************************************************************
 *
 */
(function() {
	jQuery.fn.selectreplace = function(options) {
		settings = jQuery.extend(
			{
				width: 220,
				borderSize:0,
				forceZindex:-1,
				float:'none',
				mouseOutClass:'',
				mouseOverClass:'',
				scrollAfter: 19,
				autoZindex:true,
				lastZindex:200,
				id:'sr'
			}, 
		options);
		
		return this.each(function(){  

			var select_element = $(this);
			
			if($(this).children("option[selected]").length >0){
				var selected_text = $(this).children("option[selected]").text();
			} else {
				var selected_text = $(this).children("option:first").text();
			}
			 
			var select_body = '<div class="selbox"><div class="selected"><a href="#" id="'+settings.id+'" class="selected-focus">'+selected_text+'</a></div><ul></ul></div>';

			select_element.after(select_body).hide();

			var select = select_element.next(".selbox");
			var sel_option = select.children(".selected");
		 
			if($.browser.msie && $.browser.version <= 6){
				sel_option.height(sel_option.innerHeight());
			} else {
				sel_option.height(sel_option.height());
			}
		 
			var ul = select.children("ul");
		 
			sel_option
				.addClass(settings.mouseOutClass)
				.click(function(){
					if( ul.css('display') == 'none' ) {
						ul
							.show()
							.children("li")
							.addClass("m_out")
							.removeClass("m_over")
							.eq(select_element.attr("selectedIndex"))
							.addClass("m_over")
							.removeClass("m_out");
					} else {
						ul.hide();
						ul.parent().children("div").css({
							'background-position':'0px -32px'
						})						
					}
					return false;
				});
		 
		 
			if($.browser.msie && $.browser.version <= 7){
				sel_option.css({display:'inline-block'});
			}
		 
			var list = new Array();
			var first = true;
			var class_first = '';
			$(this).children().each(function(){
				if(this.nodeName == "OPTION"){
					class_first = '';
					if (first) { 
						class_first = 'class="first_option_sr"';
						first = false;
					}
					list.push('<li '+class_first+'>'+$(this).text()+'</li>');
				}
			});

			select.css({width:settings.width, float:settings.float});

			if(settings.autoZindex){
				var selboxObjects = $('.selbox');
				if(selboxObjects.length > 1) {
					selboxObjects.eq(selboxObjects.length-1).css({zIndex:(settings.lastZindex-(selboxObjects.length-1))});
				} else {
					selboxObjects.eq(selboxObjects.length-1).css({zIndex:settings.lastZindex});
				}
			}

			if(settings.forceZindex >= 0 ){
				select.css({zIndex:settings.forceZindex});
			}

			$("*").not(".selbox").click(function( e ){
				if( !e.target.className.match(/selected/) ) {
					ul.hide();
					ul.parent().children("div").css({
						'background-position':'0px -32px'
					})
				}
			});

			ul
				.css({width:(settings.width-settings.borderSize), visibility:'hidden'})  
				.append(list.join(''));

				if(settings.scrollAfter > 0 && ul.find('li').length > settings.scrollAfter ){
					var hsum = 0;
					for(i=0; i < settings.scrollAfter; i++ ){
						hsum += ul.find('li').eq(i).innerHeight()
					}
					ul.addClass('scroll').height(108);
				}
				
				ul.css({visibility:'visible'})

				.hide();

				ul.children("li").click(function(){
					$(this).parent().parent().children("div").css({
						'background-position':'0px -32px'
					})
					var index = ul.children().index(this);
					select_element.attr("selectedIndex", index);
					sel_option.children('.selected-focus').text($(this).text());
					ul.hide();
					select_element.trigger("change");
				})

				.css({position:'relative'})

				.hover(function(){
					$(this).addClass("m_over").removeClass("m_out");
				}, function(){
					$(this).addClass("m_out").removeClass("m_over");
				}).blur(function(){ $(this).addClass("m_out").removeClass("m_over"); });
				
		});
	};
})(jQuery);



