// {{{ function ID(id)
function ID(id)
{ return(document.getElementById(id)); }


// }}}
// {{{ function empty_select(select)
function empty_select(select)
{
   // empty all options in a select box
   var options = select.getElementsByTagName('option');
   while(options.length > 0)
   { select.removeChild(options[options.length - 1]); }
} // end function empty_select(select)


// }}}
// {{{ function add_option_to_select(select, value, text, selected)
function add_option_to_select(select, value, text, selected)
{
   option = document.createElement('option');
   option.setAttribute('value', value);
   if(!is_undefined(selected))
   { option.setAttribute('selected', selected); }
   option.appendChild(document.createTextNode(text));
   select.appendChild(option);
} // end function add_option_to_select(select, value, text, selected)


// }}}
// {{{ function is_undefined(v)
function is_undefined(v)
{
   var undef;
   return(v === undef);
} // end function is_undefined(v)


// }}}
// {{{ function getElementsByClass(node, searchClass, tag)
function getElementsByClass(node, searchClass, tag)
{
   var classElements = new Array();
   var els = node.getElementsByTagName(tag); // use "*" for all elements
   var elsLen = els.length;
   var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
   var i, j;

   for (i = 0, j = 0; i < elsLen; i++)
   {
      if ( pattern.test(els[i].className) )
      {
         classElements[j] = els[i];
         j++;
      } // end if ( pattern.test(els[i].className) )
   } // end for (i = 0, j = 0; i < elsLen; i++)
   return(classElements);
} // end function getElementsByClass(node, searchClass, tag)


// }}}
// {{{ function disable_submit_button(button_id, new_text)
function disable_submit_button(button_id, new_text)
{
   var button = ID(button_id);
   if(!button) { return(false); }

   button.setAttribute('disabled', true);

   if(!is_undefined(new_text))
   { button.setAttribute('value', new_text); }

   return(true);
} // end function disable_submit_button(button_id, new_text)


// }}}
// {{{ function clear_textbox(textbox, initial_value)
function clear_textbox(textbox, initial_value)
{
   if(textbox.value == initial_value) { textbox.value = ""; }
   return(false);
} // end function clear_textbox(textbox, initial_value)


// }}}
// {{{ function toggle_block_element(id)
function toggle_block_element(id)
{
   if(!id) { return(false); }

   var element = document.getElementById(id);
   if(!element) { return(false); }

   if(element.style.display.match(/none/i) || (element.style.display == '') )
   { element.style.display = 'block'; }
   else
   { element.style.display = 'none'; }

   return(true);
} // end 


// }}}
// {{{ function trim(str)
function trim(str)
{ return(str.replace(/^\s*|\s*$/g, "")); }


// }}}
