/* 
*  Author:  David Gailey
*  File name: className.js
*
*  provides modified element.className manipulation functions from prototype framework			
*                
*/

  function strip(st) {
    return st.replace(/^\s+/, '').replace(/\s+$/, '');
  }

  function hasClassName(elementId, className) {
    var element;
    if (!(element = document.getElementById(elementId))) return false;
    var elementClassName = element.className;
    return (elementClassName.length > 0 && (elementClassName == className ||
      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));
  }

  function addClassName(elementId, className) {
  	var element;
    if (!(element = document.getElementById(elementId))) return false;
    if (!hasClassName(elementId,className))
      element.className += (element.className ? ' ' : '') + className;
    return element;
  }

  function removeClassName(elementId, className) {
  	var element;
    if (!(element = document.getElementById(elementId))) return false;
    element.className = strip(element.className.replace(new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' '));
    return element;
  }

  function toggleClassName(elementId, className) {
  	var element;
    if (!(element = document.getElementById(elementId))) return false;
    return element[element.hasClassName(elementId,className) ?
      'removeClassName' : 'addClassName'](className);
  }