(function($){var hideTimeout=false;$.fn.is_dropdown=function(options){var args=arguments;switch(options){case'getValue':return getValue(this[0]);case'getText':return getText(this[0]);}
return this.each(function(){var obj=this;var $obj=$(this);switch(options){case'setData':return setData(obj,args[1]);case'setDisabled':return setDisabled(obj,args[1]);case'setEnabled':return setEnabled(obj,args[1]);case'disable':return disable(obj);case'enable':return enable(obj);case'setText':return setText(obj,args[1]);case'setValue':return setValue(obj,args[1],args[2]);}
var defaults={id:'is_dropdown',name:'is_dropdown',data:[],active:-1,value:false,text:false,onsetvalue:false,onsettext:false}
if(this.params&&this.params.id==defaults.id)return;this.params=$.extend(defaults,options);var text=$obj.text();if($obj.attr("name"))obj.params.name=$obj.attr("name");$obj.empty().addClass('is-dropdown').html('<div class="is-dropdown-container">'+'<div class="is-dropdown-input"><input type="text" name="'+obj.params.name+'_text" autocomplete="off"><input type="hidden" name="'+obj.params.name+'"></div>'+'<a href="#"></a>'+'</div>'+'<div class="is-dropdown-list"></div>');if($obj.hasClass('disabled')){disable($obj);}
$obj.find('.is-dropdown-list').focus(function(){if(hideTimeout){window.clearTimeout(hideTimeout);hideTimeout=0;}
$obj.find('input[type=text]').focus();});setData(obj,obj.params.data);$obj.find('input[type=text]').blur(function(){var $input=$(this);if($obj.find('.is-dropdown-list').css('display')=='none')return;hideTimeout=window.setTimeout(function(){hideList($obj);hideTimeout=0;setText(obj,$input.val());},300);}).keydown(function(e){if(obj.params.filterTimeout)window.clearTimeout(obj.params.filterTimeout);switch(e.keyCode){case 13:b=hideList($obj);window.setTimeout(function(){var text=$obj.find('input[type=text]').val();setText(obj,text);},1);if(b)return false;break;case 27:hideList($obj);window.setTimeout(function(){setValue(obj,obj.params.value,obj.params.text);},1);break;case 9:case 16:case 17:case 18:case 35:case 36:case 37:case 39:break;case 33:moveBy(obj,-5);return false;break;case 34:moveBy(obj,5);return false;break;case 38:moveBy(obj,-1);return false;break;case 40:moveBy(obj,1);return false;break;default:showList($obj);obj.params.filterTimeout=window.setTimeout(function(){filterList(obj,$obj.find('input[type=text]').val());},1+obj.params.filteredData.length);break;}
return true;});$obj.find('a').attr('tabIndex',-1).click(function(){if($obj.hasClass('disabled'))return false;if(listVisible(obj)){hideList($obj);}else{showList($obj,true);if(obj.params.filterTimeout)window.clearTimeout(obj.params.filterTimeout);obj.params.filterTimeout=window.setTimeout(function(){filterList(obj,$obj.find('input[type=text]').val());if(obj.params.filteredData.length<=1)filterList(obj,'');},1+obj.params.filteredData.length/2);}
return false;});setText(obj,text);obj.datasource=false;obj.ondatasource=function(datasource,type){switch(type){case'bind':obj.datasource=datasource;break;case'unbind':obj.datasource=false;break;case'position':break;case'data':break;}
update(obj);}
if(obj.params.datasource){obj.params.datasource.bindControl(obj);}});}
function update(obj){var $obj=$(obj);obj=$obj[0];if(obj.datasource&&obj.datasource.getRowData()){var value=obj.datasource.getRowData()[obj.dataField];if(value||value===0||value==="0")setValue(obj,value,value);}}
function setData(obj,data){var $obj=$(obj);obj=$obj[0];if(!data)data=[];obj.params.data=data;obj.params.filteredData=[];obj.params.filter=true;var $list=$obj.find('.is-dropdown-list');$list.hide().empty();if(!obj.params.text){setText(obj,'');}else{setText(obj,obj.params.text);}}
function setEnabled(obj,value){if(value)enable(obj);else disable(obj);}
function setDisabled(obj,value){if(value)disable(obj);else enable(obj);}
function disable(obj){var $obj=$(obj);hideList(obj);$obj.addClass('disabled').find('input[type=text]').attr('disabled',true);}
function enable(obj){var $obj=$(obj);hideList(obj);$obj.removeClass('disabled').find('input[type=text]').attr('disabled',false);}
function setText(obj,text){var $obj=$(obj);obj=$obj[0];if(!text)text='';text=text+'';var value='';var found=false;if(text!=''){for(var i=0;i<obj.params.data.length;i++){var item=obj.params.data[i];var innerText=item.text+'';if(innerText.toUpperCase()==text.toUpperCase()){value=item.value;break;}
var index=innerText.toUpperCase().indexOf(text.toUpperCase());if(index>=0){if(found){value='';break;}
value=item.value;found=true;}}}
setValue(obj,value,text);}
function setValue(obj,value,text){var $obj=$(obj);obj=$obj[0];if(!value){}else{var found=false;var itemText;var itemValue;var i;if(!found){for(i=0;i<obj.params.filteredData.length;i++){itemText=obj.params.filteredData[i].text+'';itemValue=obj.params.filteredData[i].value+'';if(value==itemValue){found=true;text=itemText;break;}}}
if(!found){for(i=0;i<obj.params.data.length;i++){itemText=obj.params.data[i].text+'';itemValue=obj.params.data[i].value+'';if(value==itemValue){found=true;text=itemText;break;}}}
if(!found)value='';}
var old_value=obj.params.value;var old_text=obj.params.text;obj.params.value=value;obj.params.text=text;if(!text){$obj.find('input[type=text]').val('');}else{$obj.find('input[type=text]').val(text);}
if(!value){$obj.find('input[type=hidden]').val('');}else{$obj.find('input[type=hidden]').val(value);}
if(old_value!=value&&obj.params.onsetvalue)obj.params.onsetvalue(obj);if(old_text!=text&&obj.params.onsettext)obj.params.onsettext(obj);if(value==''){$obj.find('input[type=text]').addClass('no-value');}else{$obj.find('input[type=text]').removeClass('no-value');}}
function getValue(obj){var $obj=$(obj);return $obj.find('input[type=hidden]').val();}
function getText(obj){var $obj=$(obj);return $obj.find('input[type=text]').val();}
function moveBy(obj,offset){if(offset==0)return;var d=new Date();var $obj=$(obj);obj=$obj[0];var $input=$obj.find('input[type=text]');if(!listVisible(obj)){showList($obj,true);if(obj.params.filterTimeout)window.clearTimeout(obj.params.filterTimeout);obj.params.filterTimeout=window.setTimeout(function(){filterList(obj,$input.val());if(obj.params.filteredData.length<=1)filterList(obj,'');},1+obj.params.filteredData.length/2);}else{var $list=$obj.find('.is-dropdown-list');var list=$list[0];var active=obj.params.active;var i;if(active<0){if(offset<0){for(i=obj.params.filteredData.length-1;i>=0;i--){if(!obj.params.filteredData[i].hidden){active=i;break;}}}else{for(i=0;i<obj.params.filteredData.length;i++){if(!obj.params.filteredData[i].hidden){active=i;break;}}}}else{list.childNodes[active].className='';var newActive=-1;if(offset<0){for(i=active-1;i>=0;i--){if(!obj.params.filteredData[i].hidden){offset++;newActive=i;if(offset==0)break;}}}else{for(i=active+1;i<obj.params.filteredData.length;i++){if(!obj.params.filteredData[i].hidden){offset--;newActive=i;if(offset==0)break;}}}
active=newActive;}
if(active>=0){var $active=$(list.childNodes[active]);$input.val($active.addClass('active').text());var offsetTop=$active.get(0).offsetTop;if(offsetTop+$active.outerHeight()>$list.scrollTop()+$list.innerHeight()){$list.scrollTop(offsetTop-5*$active.outerHeight());}else if(offsetTop<$list.scrollTop()){$list.scrollTop(offsetTop);}}
obj.params.active=active;}
window.status='moveBy:'+(new Date()-d);}
function filterList(obj,text){function drawFilteredData(){var $list=$obj.find('.is-dropdown-list');$list.empty();var updateHtml=(obj.params.filteredData.length<=500);for(i=0;i<obj.params.filteredData.length;i++){var itemText=obj.params.filteredData[i].text+'';var itemValue=obj.params.filteredData[i].value+'';itemValue=htmlEncode(itemValue);if(updateHtml){var filterPos=obj.params.filteredData[i].filterPos;if(filterPos==0){itemText='<b>'+htmlEncode(itemText.substr(0,text.length))+'</b>'+
htmlEncode(itemText.substr(filterPos+text.length));}else{itemText=htmlEncode(itemText.substr(0,filterPos))+'<b>'+htmlEncode(itemText.substr(filterPos,text.length))+'</b>'+
htmlEncode(itemText.substr(filterPos+text.length));}}else{itemText=htmlEncode(itemText);}
$list.append('<div _value="'+itemValue+'">'+itemText+'</div>');}
$list.find('div').click(function(){hideList($obj);var $div=$(this);setValue(obj,$div.attr('_value'),$div.text());});}
var d=new Date();var $obj=$(obj);obj=$obj[0];if(obj.params.filter==text)return;obj.params.active=-1;var isSubset=(!obj.params.shorter&&text.indexOf(obj.params.filter)>=0);obj.params.filter=text;obj.params.shorter=false;var searchList;if(isSubset){searchList=obj.params.filteredData;}else{searchList=obj.params.data;}
obj.params.filteredData=[];for(i=0;i<searchList.length;i++){var item=searchList[i];var innerText=item.text+'';var index=innerText.toUpperCase().indexOf(text.toUpperCase());if(index>=0){item.filterPos=index;obj.params.filteredData.push(item);if(obj.params.filteredData.length>=500){obj.params.shorter=true;break;}}}
drawFilteredData();window.status='filterList:'+(new Date()-d);}
function listVisible(obj){return(obj.childNodes[1].style.display!='none');}
function hideList(obj){var $obj=$(obj);var $list=$obj.find('.is-dropdown-list');if($list.css('display')=='none')return false;$list.hide();return true;}
function showList(obj,select){var $obj=$(obj);obj=$obj[0];var $list=$obj.find('.is-dropdown-list');if($list.css('display')!='none')return;$list.width($obj.width()).height(104);var top=$obj.offset().top;if(top+$obj.outerHeight()+$list.outerHeight()>$(window).height()){$list.css('top',$obj.offset().top-$list.outerHeight());}else{$list.css('top','auto');}
obj.params.active=-1;$list.show().children('.active').removeClass('active');$obj.find('input[type=text]').focus();if(select&&obj.params.value)$obj.find('input[type=text]').select();}
function htmlEncode(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/\"/g,"&quot;");}
function htmlDecode(s){return s.replace(/&quot;/g,"\"").replace(/&gt;/g,">").replace(/&lt;/g,"<").replace(/&amp;/g,"&");}})(jQuery);