/*
 * This resets an array of elements by making their selectedIndex = 0
 * You need to pass the elements in as an array of ids
 */
function resetIndexs(arrElementIds) {
	var i = 0;
	for (i = 0; i < arrElementIds.length; i++)
	{
		document.getElementById(arrElementIds[i]).selectedIndex = 0;
	}
}


/*********************
 * General Functions *
 *********************/
 
 /**
  * isNumber(nodeValue)
  * hasClass(node, className)
  * addClass(node, className)
  * removeClass(node, className)
  * toggleClass(node, className)
  * eregReplace(search, replace, subject)
  * removeNode(node)
  */
 
 /**
 * Returns true if an element's value is a number
 */
function isNumber(nodeValue) {
    var nodeValueParsed = parseFloat(nodeValue).toString();

    if ((nodeValue != '') && (nodeValue.length == nodeValueParsed.length) && (nodeValueParsed != 'NaN'))
    {
        return true;
    }
    else
    {
        return false;
    }
}

/**
 * Returns true if an element has a specified class name
 */
function hasClass(node, className) {
  if (typeof node == 'string') {
    node = document.getElementById(node);
  }
  if (node.className == className) {
    return true;
  }
  var reg = new RegExp('(^| )'+ className +'($| )')
  if (reg.test(node.className)) {
    return true;
  }
  return false;
}

/**
 * Adds a class name to an element
 */
function addClass(node, className) {
  if (typeof node == 'string') {
    node = document.getElementById(node);
  }
  if (hasClass(node, className)) {
    return false;
  }
  node.className += ' '+ className;
  return true;
}

/**
 * Removes a class name from an element
 */
function removeClass(node, className) {
  if (typeof node == 'string') {
    node = document.getElementById(node);
  }
  if (!hasClass(node, className)) {
    return false;
  }
  node.className = eregReplace('(^|\\s+)'+ className +'($|\\s+)', ' ', node.className);
  return true;
}

/**
 * Toggles a class name on or off for an element
 */
function toggleClass(node, className) {
  if (typeof node == 'string') {
    node = document.getElementById(node);
  }
  if (!removeClass(node, className) && !addClass(node, className)) {
    return false;
  }
  return true;
}

/**
 * Emulate PHP's ereg_replace function in javascript
 */
function eregReplace(search, replace, subject) {
  return subject.replace(new RegExp(search,'g'), replace);
}

/**
 * Removes an element from the page
 */
function removeNode(node) {
  if (typeof node == 'string') {
    node = document.getElementById(node);
  }
  if (node && node.parentNode) {
    return node.parentNode.removeChild(node);
  }
  else {
    return false;
  }
}