/*
 * jQuery select replacement
 * http://crgdesign.com.br/blog/
 * Copyright (c) 2009 Carlos Roberto Gomes Júnior - Version: 1.1
 *
 *
 *
 ***********************************************************************************************************************************************
 * Versão 2.0 by Pub Design: totalmente alterada para nao dar hover(somente no clique), aceitar multiplos selects e trabalhar com jsscrollpane. 
 ***********************************************************************************************************************************************
 */
(function() {
	jQuery.fn.selectreplace = function(options) {
		settings = jQuery.extend(
			{
				width: 220,
				height: 32,
				content_width: 210,
				width_opts: 185,		//'auto' ou valor em pixel (qdo for auto = content_width - tamanho do drag)
				content_height: 181,
				scrollAfter: 'auto',	//'auto' ou qtd de itens (qdo for auto = content_height)
				id:'sr'					//nome do campo original
			}, 
		options);

		return this.each(function(){

			var sel_elmt = $(this);

			if(sel_elmt.children('option[selected]').length >0){
				var sel_text = sel_elmt.children('option[selected]').text()
			} else {
				var sel_text = sel_elmt.children('option:first').text()
			}

			var select_body = ''
				+ '<div class="selbox" id="sr_'+settings.id+'">'
					+ '<div class="selbox-holder">'
						+ '<div class="selected">'
							+ '<a href="javascript:void(0);" class="selected-focus">'+sel_text+'</a>'
						+ '</div>'
					+ '</div>'
					+ '<div class="selbox-opts">'
						+ '<div class="div-opts">'
							+ '<ul></ul>'
						+ '</div>'
					+ '</div>'
				+ '</div>';

			sel_elmt.after(select_body).hide()

			var select = sel_elmt.next('.selbox').children('.selbox-holder')
			var sel_opt = select.children('.selected')
			var opts = sel_elmt.next('.selbox').children('.selbox-opts')
			var divul = opts.children('.div-opts')
			var ul = divul.children('ul')

			/* widths */
			select.css({'width':settings.width+'px'})
			sel_opt.css({'width':settings.width+'px'})
			opts.css({'width':settings.content_width+'px'})

			sel_opt
				.click(function(){
					if( opts.css('display')=='none' ) {
						opts.show();
						ul
							.children('li')
								.addClass('m_out')
								.removeClass('m_over')
							.eq(sel_elmt.attr('selectedIndex'))
								.addClass('m_over')
								.removeClass('m_out');
					} else {
						opts.hide();
					}
					return false;
				});

			if($.browser.msie && $.browser.version <= 7){
				sel_opt.css({display:'inline-block'});
			}

			var list = new Array();
			sel_elmt.children().each(function(){
				if(this.nodeName == 'OPTION'){
					list.push('<li>'+$(this).text()+'</li>');
				}
			});

			//$('*').not('.selbox').click(function(e){
			$('*').not('#sr_'+settings.id).click(function(e){
				var cn = e.target.className;
				if( 
					!cn.match(/selected/) && 
					!cn.match(/jScrollPaneDragTop/) && 
					!cn.match(/jScrollPaneDragBottom/) && 
					!cn.match(/jScrollPaneDrag/) && 
					!cn.match(/jScrollPaneTrack/)
				){
					opts.hide();
				}
			});

			ul.append(list.join(''));

			opts.css({ visibility:'hidden' });

			if(settings.scrollAfter == 'auto'){
				opts.css({'height':settings.content_height+'px', 'padding-bottom':'5px'});
				divul.css({'height':settings.content_height+'px'});
			} else {
				/*
				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();
					}
					opts.height(hsum);
					divul.height(hsum);
				}
				*/
			}

			divul.jScrollPane();
			$('.jScrollPaneContainer').width((settings.content_width-1))

			/*
			if(settings.width_opts=='auto'){
				settings.width_opts = settings.content_width-parseInt($('.jScrollPaneTrack').width());
			}
			*/			

			divul.css({'width':settings.width_opts+'px'});
			//opts.css({'width':settings.width_opts+'px'});


			opts
				.css({visibility:'visible'})
				.hide();

			ul
				.css({'width':settings.width_opts+'px'})
				.children('li')
					.css({'width':settings.width_opts+'px'})
					.click(function(){
						var index = ul.children('li').index(this)
						sel_elmt.attr('selectedIndex', index)
						sel_opt.children('.selected-focus').text($(this).text())
						opts.hide()
						sel_elmt.trigger('change')
					})
					.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')
					});

			ul.find('li').eq(0).addClass('first_option');
			ul.find('li').eq((ul.find('li').length-1)).addClass('last_option');
		});
	};
})(jQuery);



