function ge()
{
  var ea;
  for( var i = 0; i < arguments.length; i++ ) {
    var e = arguments[i];
    if( typeof e == 'string' )
      e = document.getElementById(e);
    if( arguments.length == 1 )
      return e;
    if( !ea )
      ea = new Array();
    ea[ea.length] = e;
  }
  return ea;
}

function show()
{
  for( var i = 0; i < arguments.length; i++ ) {
    var element = ge(arguments[i]);
    if (element && element.style) element.style.display = '';
  }
  return false;
}

function hide()
{
  for( var i = 0; i < arguments.length; i++ ) {
    var element = ge(arguments[i]);
    if (element && element.style) element.style.display = 'none';
  }
  return false;
}

function shown(el) {
    el = ge(el);
    return (el.style.display != 'none');
}

function toggle()
{
  for( var i = 0; i < arguments.length; i++ ) {
    var element = ge(arguments[i]);
    element.style.display = (element.style.display == 'block') ? 'none' : 'block';
  }
  return false;
}

function editor_two_level_change(selector, subtypes_array, sublabels_array)
{
  selector = ge(selector);
  if( selector.getAttribute("typefor") )
    subselector = ge(selector.getAttribute("typefor"));
  
  if( selector && subselector ) {    
    // Clear Old Options
    subselector.options.length = 1;
    type_value = selector.options[selector.selectedIndex].value;
    
    // Fill with New Options
    index = 1;
    suboptions = subtypes_array[type_value];
    for(var key in suboptions) {
      subselector.options[index] = new Option(suboptions[key], key);
      index++;
    }

    if (sublabels_array)  {
        if (sublabels_array[type_value]) {
            subselector.options[0] = new Option(sublabels_array[type_value], "");
            subselector.options[0].selected = true;
        } else {
            subselector.options[0] = new Option("---", "");
            subselector.options[0].selected = true;
        }
    } 

    // Potentially Disable Subtype Selector
    subselector.disabled = (type_value == "" || subselector.options.length <= 1);
  }
}

function editor_two_level_set_subselector(subselector, value)
{
  subselector = ge(subselector);
  if( subselector ) {
    opts = subselector.options;
    for( var index=0; index < opts.length; index++ ) {
      if ((opts[index].value == value) || ( value === null && opts[index].value == '' )) {
        subselector.selectedIndex = index;
      }
    }
  }
}

function regionCountryChange(label_id, country_id, region_id, label_prefix) {
    switch(country_id) {
        case '1039': //canada
            show(region_id);
            ge(label_id).innerHTML = label_prefix + 'Province';
        break;
        case '1228': //usa
            show(region_id);
            ge(label_id).innerHTML = label_prefix + 'State';
        break;
        default:
            ge(label_id).innerHTML = label_prefix + 'Country';
            hide(region_id);
        break;
    }
}

function regionCountryChange_twoLabels(country_label_id, region_label_id, country_id, region_id, label_prefix) {

    show(country_label_id);
    ge(country_label_id).innerHTML = label_prefix + 'Country';

    switch(country_id) {
        case '1039': //canada
            show(region_id);
            show(region_label_id);
            ge(region_label_id).innerHTML = label_prefix + 'Province';
        break;
        case '1228': //usa
            show(region_id);
            show(region_label_id);
            ge(region_label_id).innerHTML = label_prefix + 'State';
        break;
        default:
            ge(region_label_id).innerHTML = label_prefix + 'State';
            ge(region_id).disabled = true;
        break;
    }

}

function regionCountryChange_restrictions(country_select_id, region_select_id) {
        country_select = ge(country_select_id);
        if (country_select.value == 1228) {//ignore U.S. country query
            country_select.value = '';
         } else if (country_select.value == 1039) {// ignore Canada country query if province is present
               region_select = ge(region_select_id);
               if (region_select.value) {
                    country_select.value = '';
               }       
         }
}