/*
 * jQuery Selectbox plugin 0.1.3
 *
 * Copyright 2011, Dimitar Ivanov (http://www.bulgaria-web-developers.com/projects/javascript/selectbox/)
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
 * 
 * Date: Wed Jul 29 23:20:57 2011 +0200
 * 
 * Ch5 modded. Made Changes in original file. Add packed version below.
 */
(function(b,j,i){function k(c,a){function g(c){b(d).each(function(){var e=b(this);this!==c.target&&!e.has(c.target).length&&e.triggerHandler(a,[c.target])})}var a=a||c+i,d=b(),f=c+"."+a+"-special-event";b.event.special[a]={setup:function(){d=d.add(this);1===d.length&&b(j).bind(f,g)},teardown:function(){d=d.not(this);0===d.length&&b(j).unbind(f)},add:function(a){var b=a.handler;a.handler=function(a,c){a.target=c;b.apply(this,arguments)}}}}b.map("click dblclick mousemove mousedown mouseup mouseover mouseout change select submit keydown keypress keyup".split(" "),
function(b){k(b)});k("focusin","focus"+i);k("focusout","blur"+i);b.addOutsideEvent=k})(jQuery,document,"outside");
(function(b,j){function i(){this._state=[];this._defaults={classHolder:"sbHolder",classHolderDisabled:"sbHolderDisabled",classSelector:"sbSelector",classOptions:"sbOptions",classGroup:"sbGroup",classSub:"sbSub",classDisabled:"sbDisabled",classToggleOpen:"sbToggleOpen",classOpen:"sbHolderOpen",classToggle:"sbToggle",speed:200,effect:"slide",onChange:null,onOpen:null,onClose:null}}var k=!0;b.extend(i.prototype,{_isOpenSelectbox:function(b){return!b?!1:this._getInst(b).isOpen},_isDisabledSelectbox:function(b){return!b?
!1:this._getInst(b).isDisabled},_attachSelectbox:function(c,a){function g(){var a,c=this.attr("id").split("_")[1];for(a in h._state)a!==c&&h._state.hasOwnProperty(a)&&b(":input[sb='"+a+"']")[0]&&h._closeSelectbox(b(":input[sb='"+a+"']")[0])}function d(a,d){var f=d&&d.sub?!0:!1,g=d&&d.disabled?!0:!1;a.each(function(a){var d=b(this),m=b("<li>");d.is(":selected")&&(j.text(d.text()),o=k);a===q-1&&m.addClass("last");a=!d.is(":disabled")&&!g?b("<a>",{href:""+d.val(),rel:d.val(),text:d.text(),click:function(){n.attr("id").split("_");
h._changeSelectbox(c,b(this).attr("rel"),b(this).text());h._closeSelectbox(c)}}):b("<span>",{text:d.text()}).addClass(e.settings.classDisabled);f&&a.addClass(e.settings.classSub);a.appendTo(m);m.appendTo(l)})}if(this._getInst(c))return!1;var f=b(c),h=this,e=h._newInst(f),i,j,n,l,o=!1;f.find("optgroup");var p=f.find("option"),q=p.length;f.attr("sb",e.uid);b.extend(e.settings,h._defaults,a);h._state[e.uid]=!1;f.hide();i=b("<div>",{id:"sbHolder_"+e.uid,"class":e.settings.classHolder});j=b("<a>",{id:"sbSelector_"+
e.uid,href:"#","class":e.settings.classSelector,click:function(a){a.preventDefault();g.apply(b(this),[]);a=b(this).attr("id").split("_")[1];h._state[a]?h._closeSelectbox(c):h._openSelectbox(c)}});n=b("<a>",{id:"sbToggle_"+e.uid,href:"#","class":e.settings.classToggle,click:function(a){a.preventDefault();g.apply(b(this),[]);a=b(this).attr("id").split("_")[1];h._state[a]?h._closeSelectbox(c):h._openSelectbox(c)}});n.appendTo(i);l=b("<ul>",{id:"sbOptions_"+e.uid,"class":e.settings.classOptions,css:{display:"none"}});
f.children().each(function(a){if(0<a){var a=b(this),c,f={};if(a.is("option"))d(a);else if(a.is("optgroup")){c=b("<li>");b("<span>",{text:a.attr("label")}).addClass(e.settings.classGroup).appendTo(c);c.appendTo(l);if(a.is(":disabled"))f.disabled=!0;f.sub=!0;d(a.find("option"),f)}}});o||j.text(p.first().text());b.data(c,"selectbox",e);j.appendTo(i);l.appendTo(i);i.insertAfter(f)},_detachSelectbox:function(c){var a=this._getInst(c);if(!a)return!1;b("#sbHolder_"+a.uid).remove();b.data(c,"selectbox",null);
b(c).show()},_changeSelectbox:function(){},_enableSelectbox:function(c){var a=this._getInst(c);if(!a||!a.isDisabled)return!1;b("#sbHolder_"+a.uid).removeClass(a.settings.classHolderDisabled);a.isDisabled=!1;b.data(c,"selectbox",a)},_disableSelectbox:function(c){var a=this._getInst(c);if(!a||a.isDisabled)return!1;b("#sbHolder_"+a.uid).addClass(a.settings.classHolderDisabled);a.isDisabled=k;b.data(c,"selectbox",a)},_optionSelectbox:function(c,a,g){var d=this._getInst(c);if(!d)return!1;d[a]=g;b.data(c,
"selectbox",d)},_openSelectbox:function(c){var a=this._getInst(c);if(a&&!a.isOpen&&!a.isDisabled){var g=b("#sbOptions_"+a.uid),d=parseInt(b(window).height(),10),f=b("#sbHolder_"+a.uid).offset(),h=b(window).scrollTop(),e=g.prev().height(),d=d-(f.top-h)-e/2,f=this._get(a,"onOpen");g.css({top:e+"px",maxHeight:d-e+"px"});"fade"===a.settings.effect?g.fadeIn(a.settings.speed):g.slideDown(a.settings.speed);b("#sbToggle_"+a.uid).addClass(a.settings.classToggleOpen).parent().addClass(a.settings.classOpen);
this._state[a.uid]=k;a.isOpen=k;f&&f.apply(a.input?a.input[0]:null,[a]);b.data(c,"selectbox",a)}},_closeSelectbox:function(c){var a=this._getInst(c);if(a&&a.isOpen){var g=this._get(a,"onClose");"fade"===a.settings.effect?b("#sbOptions_"+a.uid).fadeOut(a.settings.speed):b("#sbOptions_"+a.uid).slideUp(a.settings.speed);b("#sbToggle_"+a.uid).removeClass(a.settings.classToggleOpen).parent().removeClass(a.settings.classOpen);this._state[a.uid]=!1;a.isOpen=!1;g&&g.apply(a.input?a.input[0]:null,[a]);b.data(c,
"selectbox",a)}},_newInst:function(b){return{id:b[0].id.replace(/([^A-Za-z0-9_-])/g,"\\\\$1"),input:b,uid:Math.floor(99999999*Math.random()),isOpen:!1,isDisabled:!1,settings:{}}},_getInst:function(c){try{return b.data(c,"selectbox")}catch(a){throw"Missing instance data for this selectbox";}},_get:function(b,a){return b.settings[a]!==j?b.settings[a]:this._defaults[a]}});b.fn.selectbox=function(c){var a=Array.prototype.slice.call(arguments,1);return"string"==typeof c&&"isDisabled"==c?b.selectbox["_"+
c+"Selectbox"].apply(b.selectbox,[this[0]].concat(a)):"option"==c&&2==arguments.length&&"string"==typeof arguments[1]?b.selectbox["_"+c+"Selectbox"].apply(b.selectbox,[this[0]].concat(a)):this.each(function(){"string"==typeof c?b.selectbox["_"+c+"Selectbox"].apply(b.selectbox,[this].concat(a)):b.selectbox._attachSelectbox(this,c)})};b.selectbox=new i;b.selectbox.version="0.1.3"})(jQuery);
