/* 
  Misc functions for common html needs. 
  Steaven Woyan
*/

//removes rows from a table from the end up to stopRow
function clearTable(table_id, stopRow) {
  var t = document.getElementById(table_id);  
  if(!t) {return;}
  var s = t.style.visibility;
  t.style.visibility = "hidden";
  var stop = 0;
  if(arguments.length == 2) {
    stop = stopRow;
  }
  for(var x = t.rows.length - 1; x > stop; --x) {
    t.deleteRow(x);
  }
  t.style.visibility = s;
}

//get the selected radio value
function getRadioValue(radio_name) {
  var value = null;
  var radioObject = document.getElementsByName(radio_name);
  if(!radioObject) {
    return null;
  }
  for(var x = 0; x < radioObject.length; ++x) {
    if(radioObject[x].checked) {
      value = radioObject[x].value;
      break;
    }
  }
  return value;
}

//set a status field
function setStatus(field, msg, iserr) {
  var o = document.getElementById(field);
  o.innerHTML = msg;
  if(iserr) {
    o.setAttribute("class", "status_err");
    o.setAttribute("className", "status_err");
  }
  else {
    o.setAttribute("class", "status");
    o.setAttribute("className", "status");
  }
}

//validate a field
//field: the id of the field to validate
//type: the type expected: 1=any, 2=numeric, 3=integer, 4=usa date, 5=iso date, 6=email
//required: value required
//msg: (optional) the message to setStatus with.
function validateField(field, type, required, msg) {
 
  var o = document.getElementById(field);
  if(!o) {
    return false;
  }
  
  var r;  
  var v = "" + o.value;
  if(required && (v.trim().length == 0)) {
    r = false;
    o.style.backgroundColor = "red";
    if(arguments.length == 4) {
      setStatus("Validation error(s) occurred: " + msg, "red");
    }    
    return r;
  }
  
  switch(type) {
    case 1: r = true; break;
    case 2: r = v.isNumeric(); break;
    case 3: r = v.isInteger(); break;
    case 4: r = v.isUSADate(); break;
    case 5: r = v.isISODate(); break;
    case 6: r = v.isEmail(); break;
    default: r = false; break; 
  }  
  o.style.backgroundColor = (r ? "" : "red");
  if(!r && arguments.length == 4) {
    setStatus("Validation error(s) occurred: " + msg, "red");
  }
  return r;
}
