var dynamicOptionListCount=0,dynamicOptionListObjects=[];
function initDynamicOptionLists(){for(var a=0;a<dynamicOptionListObjects.length;a++){var b=dynamicOptionListObjects[a];if(b.formName!=null)b.form=document.forms[b.formName];else if(b.formIndex!=null)b.form=document.forms[b.formIndex];else{for(var c=b.fieldNames[0][0],e=0;e<document.forms.length;e++)if(typeof document.forms[e][c]!="undefined"){b.form=document.forms[e];break}if(b.form==null){alert("ERROR: Couldn't find form element "+c+" in any form on the page! Init aborted");return}}for(c=0;c<b.fieldNames.length;c++)for(e=
0;e<b.fieldNames[c].length-1;e++){var d=b.form[b.fieldNames[c][e]];if(typeof d=="undefined"){alert("Select box named "+b.fieldNames[c][e]+" could not be found in the form. Init aborted");return}if(e==0)if(d.options!=null)for(l=0;l<d.options.length;l++){var f=d.options[l],g=b.findMatchingOptionInArray(b.options,f.text,f.value,false);if(g!=null){var h=f.selected,i=new Option(f.text,f.value,f.defaultSelected,f.selected);i.selected=f.selected;i.defaultSelected=f.defaultSelected;i.DOLOption=g;d.options[l]=
i;d.options[l].selected=h}}if(d.onchange==null)d.onchange=new Function("dynamicOptionListObjects["+b.index+"].change(this)")}}resetDynamicOptionLists()}function resetDynamicOptionLists(a){for(var b=0;b<dynamicOptionListObjects.length;b++){var c=dynamicOptionListObjects[b];if(typeof a=="undefined"||a==null||a==c.form)for(var e=0;e<c.fieldNames.length;e++)c.change(c.form[c.fieldNames[e][0]],true)}}
function DOLOption(a,b,c,e){this.text=a;this.value=b;this.defaultSelected=c;this.selected=e;this.options=[];return this}
function DynamicOptionList(){this.form=null;this.options=[];this.longestString=[];this.numberOfOptions=[];this.currentField=this.currentNode=null;this.currentNodeDepth=0;this.fieldNames=[];this.formName=this.formIndex=null;this.fieldListIndexes={};this.fieldIndexes={};this.selectFirstOption=true;this.numberOfOptions=[];this.longestString=[];this.values={};this.forValue=DOL_forValue;this.forText=DOL_forText;this.forField=DOL_forField;this.forX=DOL_forX;this.addOptions=DOL_addOptions;this.addOptionsTextValue=
DOL_addOptionsTextValue;this.setDefaultOptions=DOL_setDefaultOptions;this.setValue=this.setValues=DOL_setValues;this.setFormIndex=DOL_setFormIndex;this.setFormName=DOL_setFormName;this.printOptions=DOL_printOptions;this.addDependentFields=DOL_addDependentFields;this.change=DOL_change;this.child=DOL_child;this.selectChildOptions=DOL_selectChildOptions;this.populateChild=DOL_populateChild;this.change=DOL_change;this.addNewOptionToList=DOL_addNewOptionToList;this.findMatchingOptionInArray=DOL_findMatchingOptionInArray;
if(arguments.length>0){for(var a=0;a<arguments.length;a++){this.fieldListIndexes[arguments[a].toString()]=this.fieldNames.length;this.fieldIndexes[arguments[a].toString()]=a}this.fieldNames[this.fieldNames.length]=arguments}this.index=window.dynamicOptionListCount++;window.dynamicOptionListObjects[this.index]=this}
function DOL_findMatchingOptionInArray(a,b,c,e){if(a==null||typeof a=="undefined")return null;for(var d=null,f=null,g=0;g<a.length;g++){var h=a[g];if(h.value==c&&h.text==b)return h;if(!e){if(d==null&&c!=null&&h.value==c)d=h;if(f==null&&b!=null&&h.text==b)f=h}}return d!=null?d:f}
function DOL_forX(a,b){if(this.currentNode==null)this.currentNodeDepth=0;var c=this.currentNode==null?this:this.currentNode,e=this.findMatchingOptionInArray(c.options,b=="text"?a:null,b=="value"?a:null,false);if(e==null){e=new DOLOption(null,null,false,false);e[b]=a;c.options[c.options.length]=e}this.currentNode=e;this.currentNodeDepth++;return this}function DOL_forValue(a){return this.forX(a,"value")}function DOL_forText(a){return this.forX(a,"text")}
function DOL_forField(a){this.currentField=a;return this}function DOL_addNewOptionToList(a,b,c,e){b=new DOLOption(b,c,e,false);if(a==null)a=[];for(c=0;c<a.length;c++)if(a[c].text==b.text&&a[c].value==b.value){if(b.selected)a[c].selected=true;if(b.defaultSelected)a[c].defaultSelected=true;return a}a[a.length]=b}
function DOL_addOptions(){if(this.currentNode==null)this.currentNode=this;if(this.currentNode.options==null)this.currentNode.options=[];for(var a=0;a<arguments.length;a++){var b=arguments[a];this.addNewOptionToList(this.currentNode.options,b,b,false);if(typeof this.numberOfOptions[this.currentNodeDepth]=="undefined")this.numberOfOptions[this.currentNodeDepth]=0;if(this.currentNode.options.length>this.numberOfOptions[this.currentNodeDepth])this.numberOfOptions[this.currentNodeDepth]=this.currentNode.options.length;
if(typeof this.longestString[this.currentNodeDepth]=="undefined"||b.length>this.longestString[this.currentNodeDepth].length)this.longestString[this.currentNodeDepth]=b}this.currentNode=null;this.currentNodeDepth=0}
function DOL_addOptionsTextValue(){if(this.currentNode==null)this.currentNode=this;if(this.currentNode.options==null)this.currentNode.options=[];for(var a=0;a<arguments.length;a++){var b=arguments[a++],c=arguments[a];this.addNewOptionToList(this.currentNode.options,b,c,false);if(typeof this.numberOfOptions[this.currentNodeDepth]=="undefined")this.numberOfOptions[this.currentNodeDepth]=0;if(this.currentNode.options.length>this.numberOfOptions[this.currentNodeDepth])this.numberOfOptions[this.currentNodeDepth]=
this.currentNode.options.length;if(typeof this.longestString[this.currentNodeDepth]=="undefined"||b.length>this.longestString[this.currentNodeDepth].length)this.longestString[this.currentNodeDepth]=b}this.currentNode=null;this.currentNodeDepth=0}function DOL_child(a){var b=this.fieldListIndexes[a.name];a=this.fieldIndexes[a.name];if(a<this.fieldNames[b].length-1)return this.form[this.fieldNames[b][a+1]];return null}
function DOL_setDefaultOptions(){if(this.currentNode==null)this.currentNode=this;for(var a=0;a<arguments.length;a++){var b=this.findMatchingOptionInArray(this.currentNode.options,null,arguments[a],false);if(b!=null)b.defaultSelected=true}this.currentNode=null}
function DOL_setValues(){if(this.currentField==null)alert("Can't call setValues() without using forField() first!");else{if(typeof this.values[this.currentField]=="undefined")this.values[this.currentField]={};for(var a=0;a<arguments.length;a++)this.values[this.currentField][arguments[a]]=true;this.currentField=null}}function DOL_setFormIndex(a){this.formIndex=a}function DOL_setFormName(a){this.formName=a}
function DOL_printOptions(a){if(navigator.appName=="Netscape"&&parseInt(navigator.appVersion)<=4){a=this.fieldIndexes[a];var b="";if(typeof this.numberOfOptions[a]!="undefined")for(var c=0;c<this.numberOfOptions[a];c++)b+="<OPTION>";b+="<OPTION>";if(typeof this.longestString[a]!="undefined")for(c=0;c<this.longestString[a].length;c++)b+="_";document.writeln(b)}}
function DOL_addDependentFields(){for(var a=0;a<arguments.length;a++){this.fieldListIndexes[arguments[a].toString()]=this.fieldNames.length;this.fieldIndexes[arguments[a].toString()]=a}this.fieldNames[this.fieldNames.length]=arguments}
function DOL_change(a,b){if(b==null||typeof b=="undefined")b=false;var c=this.fieldListIndexes[a.name];c=this.fieldIndexes[a.name];c=this.child(a);if(c!=null){if(a.type=="select-one"){if(c.options!=null)c.options.length=0;if(a.options!=null&&a.options.length>0&&a.selectedIndex>=0){var e=a.options[a.selectedIndex];this.populateChild(e.DOLOption,c,b);this.selectChildOptions(c,b)}}else if(a.type=="select-multiple"){e=[];if(!b)for(var d=0;d<c.options.length;d++){var f=c.options[d];f.selected&&this.addNewOptionToList(e,
f.text,f.value,f.defaultSelected)}c.options.length=0;if(a.options!=null){a=a.options;for(d=0;d<a.length;d++)a[d].selected&&this.populateChild(a[d].DOLOption,c,b);a=false;if(!b)for(d=0;d<c.options.length;d++){f=this.findMatchingOptionInArray(e,c.options[d].text,c.options[d].value,true);if(f!=null)a=c.options[d].selected=true}a||this.selectChildOptions(c,b)}}this.change(c,b)}}
function DOL_populateChild(a,b,c){if(a!=null&&a.options!=null)for(c=0;c<a.options.length;c++){var e=a.options[c];if(b.options==null)b.options=[];var d=false,f=false;for(f=0;f<b.options.length;f++){var g=b.options[f];if(g.text==e.text&&g.value==e.value){d=true;break}}if(!d){d=new Option(e.text,e.value,false,false);d.selected=false;d.defaultSelected=false;d.DOLOption=e;b.options[b.options.length]=d}}}
function DOL_selectChildOptions(a,b){var c=this.values[a.name],e=false;if(b&&c!=null&&typeof c!="undefined")for(b=0;b<a.options.length;b++){var d=a.options[b].value;if(d!=null&&c[d]!=null&&typeof c[d]!="undefined"){e=true;break}}d=false;for(b=0;b<a.options.length;b++){var f=a.options[b];if(e&&f.value!=null&&c[f.value]!=null&&typeof c[f.value]!="undefined")d=f.selected=true;else if(!e&&f.DOLOption!=null&&f.DOLOption.defaultSelected)d=f.selected=true;else f.selected=false}if(this.selectFirstOption&&
!d&&a.options.length>0)a.options[0].selected=true;else if(!d&&a.type=="select-one")a.selectedIndex=-1};