// JavaScript Document
// For a more flexible event registration routine, see
// http://simon.incutio.com/archive/2004/05/26/addLoadEvent
//window.onload = attachFormHandlers;

function attachFormHandlers()
{
	
  // Ensure we're working with a 'relatively' standards 
  // compliant browser
  if (document.getElementsByTagName)
  {
    var objForm = document.getElementsByTagName('form');

    for (var iCounter=0; iCounter<objForm.length; iCounter++) {
		alert(objForm[iCounter].id);	
      objForm[iCounter].onsubmit = function(){return checkForm(this);}
	}
  }
}

function checkForm(objForm)
{
  var arClass, bValid;
  var objField = objForm.getElementsByTagName('*');
  var rtnValue = true
  for (var iFieldCounter=0; iFieldCounter<objField.length; iFieldCounter++)
  {
    // Allow for multiple values being assigned to the class attribute
    arClass = objField[iFieldCounter].className.split(' ');
    for (var iClassCounter=0; iClassCounter<arClass.length; iClassCounter++)
    {
      switch (arClass[iClassCounter])
      {
        case 'string':
           bValid = isString(objField[iFieldCounter].value.replace(/^\s*|\s*$/g, ''));
           break;
	   case 'zipcode':
           bValid = isZip(objField[iFieldCounter].value);
           break;
        case 'number' :
           bValid = isNumber(objField[iFieldCounter].value);
           break;
        case 'select' :
           bValid = isSelect(objField[iFieldCounter].selectedIndex);
           break;		   
        case 'date' :
           bValid = isDate(objField[iFieldCounter].value);
           break;		   
        case 'email' :
           bValid = isEmail(objField[iFieldCounter].value);
             break;
        case 'checked' :
           bValid = objField[iFieldCounter].checked;
             break;	
		case 'grthen' :
           bValid = grthen(objField[iFieldCounter].value);
            break;	 
			 
        default:
           bValid = true;
      }

      if (bValid == false)
      {
        // If this field is invalid, leave the testing early,
        // and alert the visitor to this error
        alert(error01 + names[objField[iFieldCounter].name] );
        objField[iFieldCounter].type != 'select-one' ? objField[iFieldCounter].select() : '';
        objField[iFieldCounter].type != 'hidden' ? objField[iFieldCounter].focus() : '';
        rtnValue = false;
      }
    }
  }
  return rtnValue;
}

function grthen(strValue) {
	var values = strValue.split(":");
	elm = document.getElementsByName(values[0])[0];
	return (parseInt(elm.value) >= parseInt(values[1]) ? false : true);
}

function isSelect(strValue) 
{
	return (strValue == 0 ? false : true);
}

function isString(strValue)
{
  return (typeof strValue == 'string' && strValue != '' && isNaN(strValue));
}

function isZip(strValue)
{
  var objRE = /^[\d\w\s\-]{0,9}$/;
  return (typeof strValue == 'string' && objRE.test(strValue));
}

function isNumber(strValue)
{
  return (!isNaN(strValue) && strValue != '');
}

function isDate(strValue)
{
  var objRE = /^[\d]{1,}\/[\d]{1,}\/[\d]{4}$|^[\d]{1,}\-[\d]{1,}\-[\d]{4}$/;
  return (strValue != '' && objRE.test(strValue));
}

function isEmail(strValue)
{
  var objRE = /^[\w-\.\']{1,}\@([\da-zA-Z-]{1,}\.){1,}[\da-zA-Z-]{2,}$/;

  return (strValue != '' && objRE.test(strValue));
}
