jQuery.fn.extend({selectbox:function(options){return this.each(function(index){new jQuery.SelectBox(this,options,index)})}});if(!window.console){var console={log:function(msg){}}}jQuery.SelectBox=function(selectobj,options,index){var opt=options||{};opt.selectorType=opt.selectorType||"id";opt.inputType=opt.inputType||"span";opt.outerContainerClass=opt.outerContainerClass||"select_container";opt.inputClass=opt.inputClass||"selectbox";opt.containerClass=opt.containerClass||"selectbox-wrapper";opt.containerBotClass=opt.containerBotClass||"selectbox-wrapper-bottom";opt.containerZ=(opt.containerZ-index)||(1000-index);opt.hoverClass=opt.hoverClass||"current";opt.currentClass=opt.currentClass||"selected";opt.groupClass=opt.groupClass||"groupname";opt.maxHeight=opt.maxHeight||110;opt.noLooping=opt.noLooping||false;opt.selectedIndex=opt.selectedIndex||0;opt.onChangeCallback=opt.onChangeCallback||false;opt.onChangeParams=opt.onChangeParams||false;opt.debug=opt.debug||false;var elm_id=selectobj.id;var elmCheck=$('#'+elm_id+'_outer_container')[0];if(elmCheck){$('#'+elm_id+'_outer_container').remove()}var active=-1;var inFocus=false;var heightCalculated=false;var containerBotOffset=0;var hasfocus=0;var $select=jQuery(selectobj);var $container=setupContainer(opt);var $selContainer=setupSelContainer();var $innerContainer=setupInnerContainer(opt);var $containerBot=setupContainerBot();var $input=setupInput(opt);$select.hide().before($selContainer);$selContainer.append($input).append($container).append($containerBot);$container.append($innerContainer);init();$input.click(function(){if(!inFocus){$container.toggle();$containerBot.toggle()}}).focus(function(){if($container.not(':visible')){inFocus=true;$container.show();setHeight();$containerBot.show()}}).keydown(function(event){switch(event.keyCode){case 38:event.preventDefault();moveSelect(-1);break;case 40:event.preventDefault();moveSelect(1);break;case 13:event.preventDefault();$('li.'+opt.hoverClass).trigger('click');break;case 27:hideMe();break}}).blur(function(){if($innerContainer.is(':visible')&&hasfocus>0){if(opt.debug)console.log('container visible and has focus')}else{if((jQuery.browser.msie&&jQuery.browser.version.substr(0,1)<=8)||jQuery.browser.safari){if(document.activeElement.getAttribute('id')!=null){if(document.activeElement.getAttribute('id').indexOf('_container_inner')==-1){hideMe()}else{if(jQuery.browser.msie&&jQuery.browser.version.substr(0,1)==8){$input.focus();return}else{$input.focus()}}}else{hideMe()}}else{hideMe()}hideMe()}});function hideMe(){hasfocus=0;$container.hide();$containerBot.hide()}function setHeight(){if(!heightCalculated){var iContHt=$innerContainer.height();if(iContHt>opt.maxHeight){$container.height(opt.maxHeight);$innerContainer.height(opt.maxHeight);var w=jQuery("ul",$innerContainer).css('width');jQuery("ul",$innerContainer).css('width',parseInt(w)-20)}else{$container.height(iContHt)}heightCalculated=true;if(jQuery.browser.msie&&jQuery.browser.version.substr(0,1)<7){containerBotOffset=parseInt($container.height())+parseInt($container.css('top'))+parseInt($container.css('padding-top'))-4}else{containerBotOffset=parseInt($container.height())+parseInt($container.css('top'))+parseInt($container.css('padding-top'))}$containerBot.css('top',containerBotOffset)}}function init(){$innerContainer.append(getSelectOptions($input.attr(options.selectorType)));$container.parent().css('zIndex',options.containerZ);var width=$input.css('width');$container.width(width)}function setupContainer(options){var container=document.createElement("div");$container=jQuery(container);$container.attr('id',elm_id+'_container');$container.addClass(options.containerClass);$container.css('display','none');return $container}function setupContainerBot(){var containerBot=document.createElement("div");$containerBot=jQuery(containerBot);$containerBot.attr('id',elm_id+'_container_bot');$containerBot.addClass(options.containerBotClass);$containerBot.css('display','none');return $containerBot}function setupSelContainer(){var selContainer=document.createElement("div");$selContainer=jQuery(selContainer);$selContainer.attr('id',elm_id+'_outer_container');$selContainer.addClass(options.outerContainerClass);return $selContainer}function setupInnerContainer(options){var innerContainer=document.createElement("div");$innerContainer=jQuery(innerContainer);$innerContainer.attr('id',elm_id+'_container_inner');$innerContainer.addClass('selectbox-wrapper-inner');return $innerContainer}function setupInput(options){if(opt.inputType=="span"){var input=document.createElement("span");var $input=jQuery(input);$input.attr("id",elm_id+"_input");$input.addClass(options.inputClass);$input.attr("tabIndex",$select.attr("tabindex"));$input.html($select.children().eq(options.selectedIndex).html())}else{var input=document.createElement("input");var $input=jQuery(input);$input.attr("id",elm_id+"_input");$input.attr("type","text");$input.addClass(options.inputClass);$input.attr("autocomplete","off");$input.attr("readonly","readonly");$input.attr("tabIndex",$select.attr("tabindex"));$input.css("width",$select.css("width"))}return $input}function moveSelect(step){var lis=jQuery("li",$innerContainer);if(!lis||lis.length==0)return false;firstchoice=0;active+=step;while($(lis[firstchoice]).hasClass(opt.groupClass))firstchoice++;if($(lis[active]).hasClass(opt.groupClass))active+=step;if(active<firstchoice){(opt.noLooping?active=0:active=lis.size()-1)}else if(active>lis.size()-1){(opt.noLooping?active=lis.size()-1:active=0)}scroll(lis,active);lis.removeClass(opt.hoverClass);jQuery(lis[active]).addClass(opt.hoverClass)}function scroll(list,active){var el=jQuery(list[active]).get(0);var list=$innerContainer.get(0);if(el.offsetTop+el.offsetHeight>list.scrollTop+list.clientHeight){list.scrollTop=el.offsetTop+el.offsetHeight-list.clientHeight}else if(el.offsetTop<list.scrollTop){list.scrollTop=el.offsetTop}}function setCurrent(){var li=jQuery("li."+opt.currentClass,$innerContainer).get(0);var ar=(''+li.id).split('_');var el=ar[ar.length-1];if(opt.onChangeCallback){$select.get(0).selectedIndex=$('li',$innerContainer).index(li);opt.onChangeParams={selectedVal:$select.val()};opt.onChangeCallback(opt.onChangeParams)}else{$select.val(el);$select.change()}if(opt.inputType=='span'){$input.html($(li).html())}else{$input.val($(li).html())}return true}function getCurrentSelected(){return $select.val()}function getCurrentValue(){return $input.val()}function getSelectOptions(parentid){var select_options=new Array();var ul=document.createElement('ul');select_options=$select.children('option');if(select_options.length==0){var select_optgroups=new Array();select_optgroups=$select.children('optgroup');for(x=0;x<select_optgroups.length;x++){select_options=$("#"+select_optgroups[x].id).children('option');var li=document.createElement('li');li.setAttribute('id',parentid+'_'+$(this).val());li.innerHTML=$("#"+select_optgroups[x].id).attr('label');li.className=opt.groupClass;ul.appendChild(li);select_options.each(function(){var li=document.createElement('li');li.setAttribute('id',parentid+'_'+$(this).val());li.innerHTML=$(this).html();if($(this).is(':selected')){$input.html($(this).html());$(li).addClass(opt.currentClass)}ul.appendChild(li);$(li).mouseover(function(event){hasfocus=1;if(opt.debug)console.log('over on : '+this.id);jQuery(event.target,$container).addClass(opt.hoverClass)}).mouseout(function(event){hasfocus=-1;if(opt.debug)console.log('out on : '+this.id);jQuery(event.target,$container).removeClass(opt.hoverClass)}).click(function(event){alert("clicked");var fl=$('li.'+opt.hoverClass,$container).get(0);if(opt.debug)console.log('click on :'+this.id);$('li.'+opt.currentClass,$container).removeClass(opt.currentClass);$(this).addClass(opt.currentClass);setCurrent();$select.get(0).blur();hideMe()})})}}else select_options.each(function(){var li=document.createElement('li');li.setAttribute('id',parentid+'_'+$(this).val());li.innerHTML=$(this).html();if($(this).is(':selected')){$input.val($(this).html());$(li).addClass(opt.currentClass)}ul.appendChild(li);$(li).mouseover(function(event){hasfocus=1;if(opt.debug)console.log('over on : '+this.id);jQuery(event.target,$innerContainer).addClass(opt.hoverClass)}).mouseout(function(event){hasfocus=-1;if(opt.debug)console.log('out on : '+this.id);jQuery(event.target,$innerContainer).removeClass(opt.hoverClass)}).click(function(event){var fl=$('li.'+opt.hoverClass,$innerContainer).get(0);if(opt.debug)console.log('click on :'+this.id);$('li.'+opt.currentClass,$innerContainer).removeClass(opt.currentClass);$(this).addClass(opt.currentClass);setCurrent();$select.get(0).blur();hideMe()})});return ul}};
