function ErrorClass(formname)
{
  this.success = true;
  this.errors = Array();
  this.formname = formname;
}

ErrorClass.prototype.adderror = function(field, code, problem)
{
  this.success = false;
  error = new Array();
  error['code'] = code;
  error['problem'] = problem;
  if (this.errors[field] == null)
    this.errors[field] = error;
}

ErrorClass.prototype.removeerror = function(field) // Not Tested!
{
  errorsarray = new Array();
  this.success = true;
  for (index in this.errors)
  {
    if (index != field) 
    {
      errorsarray[index] = this.errors[index];
      this.success = false
    }
  }
  this.errors = errorsarray;
}
ErrorClass.prototype.errordialog = function(highlightOnly)
{
  var showme = false;
  var badinputs = YAHOO.util.Dom.getElementsByClassName('sw_error_validator');
  var errorarray = new Array();
  for (input in badinputs)
  {
    YAHOO.util.Dom.removeClass(badinputs[input].id,'sw_error_validator');
  }

  for (error in this.errors)
  {

    if(!this.errors.hasOwnProperty(error))
        continue;

    errorarray[error] = this.errors[error].problem;
    showme = true;
    if (document[this.formname][error])
    {
      if (document[this.formname][error].tagName == 'INPUT' || document[this.formname][error].tagName == 'TEXTAREA' || document[this.formname][error].tagName == 'SELECT')
      {
        YAHOO.util.Dom.addClass(document[this.formname][error].id,'sw_error_validator');
      }
    }
  }
  if (YAHOO.shipwire.appmenu) {
      if (showme && !highlightOnly) {
          YAHOO.shipwire.appmenu.showErrors(errorarray);
      } else {
          YAHOO.shipwire.appmenu.hideErrors();
      }
  }
}

ErrorClass.prototype.defaultcheck = function(fieldname, userfriendly)
{  
  if (!userfriendly) var userfriendly = fieldname;
  userfriendly = userfriendly.toLowerCase();
  userfriendly = userfriendly.charAt(0).toUpperCase() + userfriendly.substring(1, userfriendly.length); 
  if (document[this.formname][fieldname].value == '')
    this.adderror(fieldname, 1, 'Missing ' + userfriendly);
}

ErrorClass.prototype.numericcheck = function(fieldname, userfriendly)
{
  if (!userfriendly) 
  {
    var userfriendly = fieldname;
    userfriendly = userfriendly.toLowerCase();
    userfriendly = userfriendly.charAt(0).toUpperCase() + userfriendly.substring(1, userfriendly.length); 
  }
  var numbercheck = /^[0-9]*\.?[0-9]+$/;
  if (numbercheck.test(document[this.formname][fieldname].value) == false)
    this.adderror(fieldname, 1, userfriendly + ' Field Must Be Numeric');
}

ErrorClass.prototype.positivecheck = function(fieldname, userfriendly)
{
  if (!userfriendly) 
  {
    var userfriendly = fieldname;
    userfriendly = userfriendly.toLowerCase();
    userfriendly = userfriendly.charAt(0).toUpperCase() + userfriendly.substring(1, userfriendly.length); 
  }
  if (document[this.formname][fieldname].value <= 0)
    this.adderror(fieldname, 1, userfriendly + ' Field Must Be A Positive Number');
}

ErrorClass.prototype.stripintcheck = function(fieldname, userfriendly)
{
  if (!userfriendly) 
  {
    var userfriendly = fieldname;
    userfriendly = userfriendly.toLowerCase();
    userfriendly = userfriendly.charAt(0).toUpperCase() + userfriendly.substring(1, userfriendly.length); 
  }
  var allowed = '0123456789 -';
  var input = document[this.formname][fieldname].value;
  for (var i = 0; i < input.length; i++) {
    if (allowed.indexOf(input.charAt(i)) == -1) 
    {
      this.adderror(fieldname, 1, userfriendly + ' Field Must Contain Only Numbers, Dashes and/or Spaces');
      return false;
    }
  } 
}

ErrorClass.prototype.emailcheck = function(fieldname, userfriendly)
{
  if (!userfriendly) 
  {
    var userfriendly = fieldname;
    userfriendly = userfriendly.toLowerCase();
    userfriendly = userfriendly.charAt(0).toUpperCase() + userfriendly.substring(1, userfriendly.length); 
  }
  var emailRegEx = /(?:\w|\.)+@(?:\w|\.)+/;
  if (!emailRegEx.test(document[this.formname][fieldname].value))
    this.adderror(fieldname, 1, userfriendly + ' Field Not a Valid Address');
}
	
