/*
 * jQuery selectbox plugin
 *
 * Copyright (c) 2007 Sadri Sahraoui (brainfault.com)
 * Licensed under the GPL license and MIT:
 *   http://www.opensource.org/licenses/GPL-license.php
 *   http://www.opensource.org/licenses/mit-license.php
 *
 * Version: 1.2
 */
jQuery.fn.extend({selectbox:function(a){return this.each(function(){new jQuery.SelectBox(this,a)})}});if(!window.console){var console={log:function(a){}}}jQuery.SelectBox=function(i,j){var k=j||{};k.inputType=k.inputType||"input";k.inputClass=k.inputClass||"selectbox";k.containerClass=k.containerClass||"selectbox-wrapper";k.hoverClass=k.hoverClass||"current";k.currentClass=k.currentClass||"selected";k.groupClass=k.groupClass||"groupname";k.maxHeight=k.maxHeight||200;k.loopnoStep=k.loopnoStep||false;k.onChangeCallback=k.onChangeCallback||false;k.onChangeParams=k.onChangeParams||false;k.debug=k.debug||false;var l=i.id;var m=0;var n=false;var o=0;var p=jQuery(i);var q=setupContainer(k);var r=setupInput(k);p.hide().before(r).before(q);init();r.click(function(){if(!n){q.toggle()}}).focus(function(){if(q.not(':visible')){n=true;q.show()}}).keydown(function(a){switch(a.keyCode){case 38:a.preventDefault();moveSelect(-1);break;case 40:a.preventDefault();moveSelect(1);break;case 13:a.preventDefault();$('li.'+k.hoverClass).trigger('click');break;case 27:hideMe();break}}).blur(function(){if(q.is(':visible')&&o>0){if(k.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').indexOf('_container')==-1){hideMe()}else{r.focus()}}else{hideMe()}}});function hideMe(){o=0;q.hide()}function init(){q.append(getSelectOptions(r.attr('id'))).hide();var a=r.css('width');if(q.height()>k.maxHeight){q.width(parseInt(a)+parseInt(r.css('paddingRight'))+parseInt(r.css('paddingLeft')));q.height(k.maxHeight)}else q.width(a)}function setupContainer(a){var b=document.createElement("div");q=jQuery(b);q.attr('id',l+'_container');q.addClass(a.containerClass);q.css('display','none');return q}function setupInput(a){if(k.inputType=="span"){var b=document.createElement("span");var c=jQuery(b);c.attr("id",l+"_input");c.addClass(a.inputClass);c.attr("tabIndex",p.attr("tabindex"))}else{var b=document.createElement("input");var c=jQuery(b);c.attr("id",l+"_input");c.attr("type","text");c.addClass(a.inputClass);c.attr("autocomplete","off");c.attr("readonly","readonly");c.attr("tabIndex",p.attr("tabindex"));c.css("width",p.css("width"))}return c}function moveSelect(a){var b=jQuery("li",q);if(!b||b.length==0)return false;firstchoice=0;while($(b[firstchoice]).hasClass(k.groupClass))firstchoice++;m+=a;if($(b[m]).hasClass(k.groupClass))m+=a;if(m<firstchoice){(k.loopnoStep?m=b.size()-1:m=b.size())}else if(k.loopnoStep&&m>b.size()-1){m=firstchoice}else if(m>b.size()){m=firstchoice}scroll(b,m);b.removeClass(k.hoverClass);jQuery(b[m]).addClass(k.hoverClass)}function scroll(a,b){var c=jQuery(a[b]).get(0);var a=q.get(0);if(c.offsetTop+c.offsetHeight>a.scrollTop+a.clientHeight){a.scrollTop=c.offsetTop+c.offsetHeight-a.clientHeight}else if(c.offsetTop<a.scrollTop){a.scrollTop=c.offsetTop}}function setCurrent(){var a=jQuery("li."+k.currentClass,q).get(0);var b=(''+a.id).split('_');var c=b[b.length-1];if(k.onChangeCallback){p.get(0).selectedIndex=$('li',q).index(a);k.onChangeParams={selectedVal:p.val()};k.onChangeCallback(k.onChangeParams)}else{p.val(c);p.change()}if(k.inputType=='span')r.html($(a).html());else r.val($(a).html());return true}function getCurrentSelected(){return p.val()}function getCurrentValue(){return r.val()}function getSelectOptions(d){var e=new Array();var f=document.createElement('ul');e=p.children('option');if(e.length==0){var g=new Array();g=p.children('optgroup');for(x=0;x<g.length;x++){e=$("#"+g[x].id).children('option');var h=document.createElement('li');h.setAttribute('id',d+'_'+$(this).val());h.innerHTML=$("#"+g[x].id).attr('label');h.className=k.groupClass;f.appendChild(h);e.each(function(){var c=document.createElement('li');c.setAttribute('id',d+'_'+$(this).val());c.innerHTML=$(this).html();if($(this).is(':selected')){r.html($(this).html());$(c).addClass(k.currentClass)}f.appendChild(c);$(c).mouseover(function(a){o=1;if(k.debug)console.log('over on : '+this.id);jQuery(a.target,q).addClass(k.hoverClass)}).mouseout(function(a){o=-1;if(k.debug)console.log('out on : '+this.id);jQuery(a.target,q).removeClass(k.hoverClass)}).click(function(a){var b=$('li.'+k.hoverClass,q).get(0);if(k.debug)console.log('click on :'+this.id);$('li.'+k.currentClass,q).removeClass(k.currentClass);$(this).addClass(k.currentClass);setCurrent();p.get(0).blur();hideMe()})})}}else e.each(function(){var c=document.createElement('li');c.setAttribute('id',d+'_'+$(this).val());c.innerHTML=$(this).html();if($(this).is(':selected')){r.val($(this).html());$(c).addClass(k.currentClass)}f.appendChild(c);$(c).mouseover(function(a){o=1;if(k.debug)console.log('over on : '+this.id);jQuery(a.target,q).addClass(k.hoverClass)}).mouseout(function(a){o=-1;if(k.debug)console.log('out on : '+this.id);jQuery(a.target,q).removeClass(k.hoverClass)}).click(function(a){var b=$('li.'+k.hoverClass,q).get(0);if(k.debug)console.log('click on :'+this.id);$('li.'+k.currentClass,q).removeClass(k.currentClass);$(this).addClass(k.currentClass);setCurrent();p.get(0).blur();hideMe()})});return f}};
