jQuery.fn.combobox=function(i,k,h){var a=this;this.combobox=new Function();var j={comboboxContainerClass:null,comboboxValueContentContainerClass:null,comboboxValueContentClass:null,comboboxDropDownButtonClass:null,comboboxDropDownClass:null,comboboxDropDownItemClass:null,comboboxDropDownItemHoverClass:null,comboboxDropDownGroupItemHeaderClass:null,comboboxDropDownGroupItemContainerClass:null};var b={animationType:"slide",animationSpeed:"fast",width:120};if(i){jQuery.extend(j,i)}if(k){jQuery.extend(b,k)}this.combobox.onChange=h||null;function d(l){return l[0].internalCombobox}function e(l){return function(){d(l).remove()}}function c(l){return function(){d(l).update()}}function g(l){return function(){d(l).updateSelection()}}function f(l){return function(m){d(l).addRange(m)}}jQuery.fn.extend(this.combobox,{addRange:f(a),remove:e(a),update:c(a),updateSelection:g(a)});return this.each(function(){this.internalCombobox=new l(this);this.internalCombobox.initialise();function l(T){var ac=jQuery(T);var aj=null;var V="background-color:#fff;border-left: solid 2px #777;border-top: solid 2px #777;border-right: solid 1px #ccc;border-bottom: solid 1px #ccc;";var aE="padding:0;";var aA=null;var ae="list-style-type:none;min-height:15px;padding-top:0;margin:0;overflow:auto";var o="cursor:default;padding:2px;background:#fff;border-right:solid 1px #000;border-bottom:solid 1px #000;border-left:solid 1px #aaa;border-top:solid 1px #aaa;";var U="display:block;";var w="cursor:default;padding-left:2px;font-weight:normal;font-style:normal;";var P="list-style-type:none;";var N="padding-left:10px;margin-left:0;";var aB="";var an="font-style:italic;font-weight:bold;";var r=300;var aL=null;var M="position:relative;overflow:hidden;";var O=null;var p="float:left;position:absolute;cursor:default;overflow:hidden;";var aa="padding-left:3px;";var aC=null;var x="overflow:hidden;width:16px;height:18px;color:#000;background:#D6D3CE;font-family:arial;font-size:8px;cursor:default;text-align:center;vertical-align:middle;";var aJ="background-repeat:no-repeat;float:right;";var C="padding-left:0px;padding-top:1px;width:12px;height:13px;border-right:solid 2px #404040;border-bottom:solid 2px #404040;border-left:solid 2px #f0f0f0;border-top:solid 2px #f0f0f0";var aD="padding-left:1px;padding-top:3px;width:12px;height:13px;border:solid 1px #808080";var at="&#9660;";var ak=null;var t=null;var v=null;var ax=false;var aH=0;var aI=null;var m=0;var E=null;var X=null;var aF=null;String.format=function(){var aO=null;if(arguments.length!=0){aO=arguments[0];for(var aN=1;aN<arguments.length;aN++){var aP=new RegExp("\\{"+(aN-1)+"\\}","gm");aO=aO.replace(aP,arguments[aN])}}return aO};function Q(aO){var aN=null;if(aO){if(aO.substr(-2,2)=="px"){aN=aO.substr(0,(aO.length-2))}}return aN}function ao(aN,aO){var aP=(aN.outerWidth()-aN.width());aN.width(aO-aP)}function av(aO,aN){var aP=(aO.outerHeight()-aO.height());aO.height(aN-aP)}function u(aN,aR){var aQ=aR.split(";");if(aQ.length>0){for(var aP=0;aP<aQ.length;aP++){var aS=aQ[aP];var aO=aS.split(":");aN.css(aO[0],aO[1])}}}function J(aN){var aO=new Object();aO.width=0;aO.height=0;sizingImageJQuery=jQuery("<img style='border:none;margin:0;padding:0;'></img>");sizingImageJQuery.attr("src",aN);aj.append(sizingImageJQuery);aO.width=sizingImageJQuery.width();aO.height=sizingImageJQuery.height();sizingImageJQuery.remove();return aO}function af(aP){var aO=null;var aN=aP.css("background-image");aN=aN.replace("url(","","gi");aN=aN.replace('"',"","gi");aN=aN.replace('"',"","gi");aN=aN.replace(")","","gi");if(aN!="none"){aO=J(aN)}return aO}function H(){E=af(aC);X=af(aL)}function Z(aP){if(j.comboboxValueContentContainerClass){if(X!=null){var aN=aL.height();var aQ=(aP*aN);if(X.height>aQ){var aO=String.format("0px -{0}px",aQ);aL.css("background-position",aO)}}}}function y(aQ){if(j.comboboxDropDownButtonClass){if(E!=null){var aP=aC.width();var aR=(aQ*aP);if(E.width>aR){var aN=String.format("-{0}px 0px",aR);aC.css("background-position",aN)}}}else{var aO=C;if(aQ==1){aO=aD}u(aC,aO)}}function B(aN){Z(aN);y(aN)}function s(){var aP="";if(j.comboboxValueContentContainerClass){aP=String.format("<div class='{0}' style='{1}'></div>",j.comboboxValueContentContainerClass,M)}else{aP=String.format("<div style='{0}'></div>",M)}var aO="";if(j.comboboxValueContentClass){aO=String.format("<div class='{0}' style='{1}'></div>",j.comboboxValueContentClass,p)}else{aO=String.format("<div style='{0}'></div>",p+aa)}var aN="";if(j.comboboxDropDownButtonClass){aN=String.format("<div class='{1}' style='{0}'></div>",aJ,j.comboboxDropDownButtonClass)}else{aN=String.format("<div style='{0}'>{1}</div>",(aJ+x),at)}O=jQuery(aO);aC=jQuery(aN);aL=jQuery(aP);aL.appendTo(aj);O.appendTo(aL);aC.appendTo(aL);H();aF=Q(O.css("max-height"));B(0)}function al(aQ){var aU="";var aW=null;var aS="";var aO="";var aR=null;var aT="";var aN="option";var aP=aQ[0];if(aP.title){if(aP.title!=""){aO=aP.title}}if(aQ.is("option")){if(aP.dataText){aS=aP.dataText}else{aS=aQ.text()}aR=aQ.val();if(j.comboboxDropDownItemClass){aW=j.comboboxDropDownItemClass;aT=U}else{aT=(U+w)}if(aW){aU=String.format("<li style='{0}' class='{1}'>{2}</li>",aT,aW,aS)}else{aU=String.format("<li style='{0}'>{1}</li>",aT,aS)}}else{if(aQ[0].dataText){aS=aQ[0].dataText}else{aS=aQ.attr("label")}aR=aQ.attr("class");aN="optgroup";if(j.comboboxDropDownGroupItemHeaderClass){aW=j.comboboxDropDownGroupItemHeaderClass;aT=aB}else{aT=(aB+an)}if(aW){aU=String.format("<li><span style='{0}' class='{1}'>{2}</span></li>",aT,aW,aS)}else{aU=String.format("<li><span style='{0}'>{1}</span></li>",aT,aS)}}var aV=jQuery(aU);aV.css("display","inline");aV[0].dataText=aS;aV[0].dataValue=aR;aV[0].dataType=aN;if(aO==""){aO=aS}aV[0].title=aO;return aV}function am(aN,aO){aO.each(function(){var aS=jQuery(this);var aU=al(aS);aN.append(aU);var aR=aU.offset().left;aR-=aI.left;if(aR<0){aR=0}var aQ=(aR+aU.outerWidth());if(aQ>aH){aH=aQ}u(aU,U);if(aS.is("optgroup")){var aP="";if(j.comboboxDropDownGroupItemContainerClass){aP=String.format("<ul style='{0}' class='{1}'></ul>",P,j.comboboxDropDownGroupItemContainerClass)}else{aP=String.format("<ul style='{0}'></ul>",(P+N))}var aT=jQuery(aP);aU.append(aT);am(aT,aS.children())}})}function au(){var aN=ac.children();ak=null;v=null;if(aA){aA.empty()}else{var aQ="";if(j.comboboxDropDownClass){aQ=String.format("<ul class='{0}' style='{1}'></ul>",j.comboboxDropDownClass,ae)}else{aQ=String.format("<ul style='{0}'></ul>",(ae+o))}aA=jQuery(aQ);aA.appendTo(aj);aA.attr("tabIndex",0)}if(aN.length>0){aH=0;aI=aA.offset();am(aA,aN)}var aO=Q(aA.css("max-height"));if(aO){r=aO}var aP=aA.height();if(aP>r){aA.height(r)}m=aA.height()}function I(){var aN=aj.outerWidth();if(aN<aH){aN=aH}aA.width(aN)}function q(){O.height("auto");var aO=O.outerHeight();var aN=aL.height();if(aF){if(aF<aO){aO=aF;O.height(aO)}}var aP=((aN-aO)/2);if(aP<0){aP=0}O.css("top",aP)}function Y(){aj.width(b.width);var aQ=aj.width();ao(aL,aQ);var aP=(aL.width()-aC.outerWidth());ao(O,aP);var aN=aC.outerHeight();av(aL,aN);aA.css("position","absolute");aA.css("z-index","20000");I();var aR=aA.offset().left;var aO=(aR-(aj.outerWidth()-aj.width()));aA.css("left",aO+1);aA.hide()}function W(){var aQ=false;var aN=ac[0];var aO;if(aN.length>0){var aP=jQuery("li[@dataValue='"+ac.val()+"']",aA);O.html(aP[0].dataText);O.attr("title",aP[0].title);q();if(v){if(v!=ac.val()){aQ=true}}v=ac.val();if(aQ){if(a.combobox.onChange){a.combobox.onChange()}}if(ak){aw(ak,false)}ak=aP;aw(ak,true)}}function K(aN){if(aN){if(m>=r){var aO=aN.offset();if((aO.top>m)||(aO.top<=aN.outerHeight())){aN[0].scrollIntoView()}}}}function aw(aO,aN){if(aO){if(j.comboboxDropDownItemHoverClass){if(aN){aO.addClass(j.comboboxDropDownItemHoverClass)}else{aO.removeClass(j.comboboxDropDownItemHoverClass)}}else{if(aN){aO.css("background","#000");aO.css("color","#fff")}else{aO.css("background","");aO.css("color","")}}}}function R(){var aN="";if(j.comboboxContainerClass){aN=String.format("<div class='{0}' style='{1}'></div>",j.comboboxContainerClass,aE)}else{aN=String.format("<div style='{0}' style='{1}'></div>",V,aE)}aj=jQuery(aN);ac.before(aj);aj.append(ac);ac.hide();aj.attr("tabIndex",0)}this.initialise=function(){R();s();au();Y();az();W()};function n(){aA.focus();K(ak)}function ap(){aj.focus();aM()}function ag(aN){aA.animate({height:"toggle",top:aN},b.animationSpeed,n)}function ah(aN){aA.animate({height:"toggle",opacity:"toggle",top:aN},b.animationSpeed,ap)}function aK(aN){aA.animate({height:"toggle",opacity:"toggle"},b.animationSpeed,aN)}function ad(){var aO=aj.position().top;var aR=aA.outerHeight();var aQ=(aO+aj.outerHeight());var aS=jQuery(window).scrollTop();var aT=jQuery(window).height();var aN=(aT-(aQ-aS));var aP;aP=aQ;ax=false;if(aN<aR){if((aO-aS)>aR){aP=(aO-aR);ax=true}}return aP}function F(aQ){if(aQ){if(aA.is(":hidden")){ar();aw(t,false);aw(ak,true);B(1);var aO=ad();aA.css("top",aO);aA.css("left",aj.offset().left);switch(b.animationType){case"slide":if(ax){var aN=aj.position().top;var aP=aj.outerHeight();aA.css("top",(aN-aP));ag(aO)}else{aK(n)}break;case"fade":aA.fadeIn(b.animationSpeed,n);break;default:aA.show(1,n)}}}else{if(aA.is(":visible")){B(0);switch(b.animationType){case"slide":if(ax){aN=aj.position().top;dropdownListHeight=aA.height();ah(aN-aj.outerHeight())}else{aK(ap)}break;case"fade":aA.fadeOut(b.animationSpeed,ap);break;default:aA.hide();ap()}}}}function aG(aN,aO){var aP=ac[0];if(aO==null){aP.selectedIndex=aN}else{aP.value=aO}if(aP.onchange){aP.onchange()}W()}function S(aQ){var aN=ac[0];var aO=aN.selectedIndex;var aP=-1;var aR=aN.length-1;switch(aQ){case":next":aP=aO+1;if(aP>aR){aP=aR}break;case":previous":aP=aO-1;if(aP<0){aP=0}break;case":first":aP=0;break;case":last":aP=aR;break}aG(aP,null);K(ak)}function L(){return aA.is(":visible")}function ay(){jQuery("li",aA).not("ul").not("span").not("[@dataType='optgroup']").each(function(){var aN=jQuery(this);aN.click(function(aO){aO.stopPropagation();G(aN)});aN.mouseover(function(){ai(aN)});aN.mouseout(function(){D(aN)})})}function aq(){aA.blur(function(aN){aN.stopPropagation();ab()})}function aM(){aj.click(function(){A()})}function ar(){aj.unbind("click")}function az(){aj.keydown(function(aN){aN.preventDefault();z(aN)});aM();aq();ay()}function A(){if(aA.is(":hidden")){F(true)}else{F(false)}}function ab(){if(aA.is(":visible")){F(false)}}function G(aN){aG(null,aN[0].dataValue);F(false)}function ai(aN){aw(ak,false);aw(t,false);aw(aN,true)}function D(aN){t=aN}function z(aN){switch(aN.which){case 33:case 36:S(":first");break;case 34:case 35:S(":last");break;case 37:S(":previous");break;case 38:if(aN.altKey){F(!(L()))}else{S(":previous")}break;case 39:S(":next");break;case 40:if(aN.altKey){F(!(L()))}else{S(":next")}break;case 27:case 13:F(false);break;case 9:aA.blur();jQuery(window)[0].focus();break}}this.updateSelection=function(){W()};this.update=function(){au();I();ay();W()};this.remove=function(){aj.before(ac);aj.remove();ac[0].internalCombobox=null;ac.show()};this.addRange=function(aQ){if(aQ){var aR=ac[0].options;var aP=aR.length;for(optionIndex in aQ){var aO=aQ[optionIndex];var aN=document.createElement("option");aN.value=aO.value;aN.text=aO.text;aN.dataText=aO.text;if(aO.title){aN.title=aO.title}aR[aP+optionIndex]=aN}ac.combobox.update()}}}})};