jQuery.fn.addOption=function()
{if(arguments.length==0)return this;var selectOption=true;var multiple=false;if(typeof arguments[0]=="object")
{multiple=true;var items=arguments[0];}
if(arguments.length>=2)
{if(typeof arguments[1]=="boolean")selectOption=arguments[1];else if(typeof arguments[2]=="boolean")selectOption=arguments[2];if(!multiple)
{var value=arguments[0];var text=arguments[1];}}
this.each(function()
{if(this.nodeName.toLowerCase()!="select")return;if(multiple)
{for(var v in items)
{jQuery(this).addOption(v,items[v],selectOption);}}
else
{var option=document.createElement("option");option.value=value;option.text=text;this.options.add(option);}
if(selectOption)
{this.options[this.options.length-1].selected=true;}})
return this;}
jQuery.fn.removeOption=function()
{if(arguments.length==0)return this;if(typeof arguments[0]=="string")var value=arguments[0];else if(typeof arguments[0]=="number")var index=arguments[0];else return this;this.each(function()
{if(this.nodeName.toLowerCase()!="select")return;if(value)
{var optionsLength=this.options.length;for(var i=optionsLength-1;i>=0;i--)
{if(this.options[i].value==value)
{this.options[i]=null;}}}
else
{this.remove(index);}})
return this;}
jQuery.fn.sortOptions=function(ascending)
{this.each(function()
{if(this.nodeName.toLowerCase()!="select")return;ascending=typeof ascending=="undefined"?true:ascending;var optionsLength=this.options.length;var sortArray=[];for(var i=0;i<optionsLength;i++)
{sortArray[i]={value:this.options[i].value,text:this.options[i].text};}
sortArray.sort(function(option1,option2)
{option1text=option1.text.toLowerCase();option2text=option2.text.toLowerCase();if(option1text==option2text)return 0;if(ascending)
{return option1text<option2text?-1:1;}
else
{return option1text>option2text?-1:1;}});for(var i=0;i<optionsLength;i++)
{this.options[i].text=sortArray[i].text;this.options[i].value=sortArray[i].value;}})
return this;}
jQuery.fn.selectOptions=function(value){this.each(function(){if(this.nodeName.toLowerCase()!="select")return;var optionsLength=this.options.length;for(var i=0;i<optionsLength;i++){if(this.options[i].value==value){this.options[i].selected=true;};}})
return this;}
