PulldownWidget = function(unique_id) {
  this._unique_id = unique_id;
  PulldownWidget.prototype.get_instances_hash()[unique_id] = this;
};

PulldownWidget.add_static_member('instances_hash', {});

PulldownWidget.add_method('get_instance', function (ui) {
  return PulldownWidget.prototype.get_instances_hash()[ui];
});

PulldownWidget.add_method('add_new', function (form_element_name, new_value, new_name) {
  try {
    var counter = 1;

    for (var i = 1; i < document.forms.contentForm.elements[form_element_name].options.length; i++) {
      if (new_name.toLowerCase() > document.forms.contentForm.elements[form_element_name].options[i].text.toLowerCase()) {
        counter++;
     	} else {
        break
      }
    }
 
    var newOption = new Option(new_name, new_value, false, true);

    if ( (navigator.userAgent.toLowerCase().indexOf('msie') != -1) &&
	   (navigator.userAgent.toLowerCase().indexOf('opera') == -1) &&
           (navigator.userAgent.toLowerCase().indexOf('webtv') == -1) )
    {
	    document.forms.contentForm.elements[form_element_name].add(newOption);
	  }
    else {
           document.forms.contentForm.elements[form_element_name].add(newOption, document.forms.contentForm.elements[form_element_name].options[counter]);
	  }
    this.remove_empty_option(form_element_name);
  }
  catch (error) {
      alert('Error adding node to pulldown:\n' + error);
  }	
});

PulldownWidget.add_method('edit', function (form_element_name, new_value, value, new_name) {
  try {
    var counter = 1;

    for (var i = 1; i < document.forms.contentForm.elements[form_element_name].options.length; i++) {
      if (value == document.forms.contentForm.elements[form_element_name].options[i].value) break;
      counter++;
    }
    document.forms.contentForm.elements[form_element_name].remove(counter);
    this.add_new(form_element_name, value, new_name);
  }
  catch (error) {
    alert('Error removing node from pulldown:\n' + error);	
  }
});	
PulldownWidget.add_method('remove_empty_option', function (form_element_name) {
  if (document.forms.contentForm.elements[form_element_name].options[0].value == -999999) {
    document.forms.contentForm.elements[form_element_name].remove(0);
  }
}
);

