var ConditionalSelect=new Class({Binds:["update"],Implements:Options,options:{includeBlankOption:false,blankOptionLabel:"-"},initialize:function(c,d,e,a,b){this.setOptions(b);this.element=$(c);this.parent=$(d);this.data=e;this.values=new Hash(a);this.parent.addEvent("change",function(f){this.update(f.target)}.bind(this));window.addEvent("ajaxready",function(f){this.update(f.target)}.bind(this));this.update()},update:function(d){if(d){this.parent=$(d)}this.element.set("html","");if(this.options.includeBlankOption){var c=new Element("option",{value:""});c.set("html",this.options.blankOptionLabel);this.element.appendChild(c)}var e=0;var b=new Array();for(i=0;i<this.parent.options.length;i++){if(this.parent.options[i].selected){b[e]=this.parent.options[i].value;e++}}for(s=0;s<b.length;s++){currentSelect=b[s];if(this.data[currentSelect]){var a=this.element;var f=false;if(b.length>1){f=true;a=new Element("optgroup",{label:(this.parent.getFirst(("[value="+currentSelect+"]")).get("text")?this.parent.getFirst(("[value="+currentSelect+"]")).get("text"):currentSelect)})}for(i=0;i<this.data[currentSelect].length;i++){var c=new Element("option",{value:this.data[currentSelect][i]["value"]});c.set("html",this.data[currentSelect][i]["label"]);if((!this.values&&this.data[currentSelect][i]["default"]=="true")||(this.values&&this.values.hasValue(this.data[currentSelect][i]["value"].toString()))){c.selected=true}a.appendChild(c)}if(f){this.element.appendChild(a)}}}if(this.element.options.length==0){this.element.options[0]=new Option("-","")}this.element.fireEvent("change",[this.element,this.parent,this.data])}});
