function ckform(t){
var fform = new Object();
fform[0] = new Object();
fform[0].name="FirstName";
fform[0].req=1;
fform[1] = new Object();
fform[1].name="LastName";
fform[1].req=1;
fform[2] = new Object();
fform[2].name="Address";
fform[2].req=1;
fform[3] = new Object();
fform[3].name="City";
fform[3].req=1;
fform[4] = new Object();
fform[4].name="State";
fform[4].req=1;
fform[5] = new Object();
fform[5].name="EmergencyContact";
fform[5].req=1;
fform[6] = new Object();
fform[6].name="HomePhone";
fform[6].req=3;
fform[7] = new Object();
fform[7].name="CellPhone";
fform[7].req=3;
fform[8] = new Object();
fform[8].name="ReferencePhone_1";
fform[8].req=2;
fform[9] = new Object();
fform[9].name="ReferencePhone_2";
fform[9].req=2;
fform[10] = new Object();
fform[10].name="ReferencePhone_3";
fform[10].req=2;
fform[11] = new Object();
fform[11].name="EmergencyPhone";
fform[11].req=2;
fform[12] = new Object();
fform[12].name="ReferDetail";
fform[12].req=1;
fform[14] = new Object();
fform[14].name="BirthDate";
fform[14].req=5;
fform[18] = new Object();
fform[18].name="Preferences";
fform[18].req=8;
fform[19] = new Object();
fform[19].name="Population";
fform[19].req=9;
fform[20] = new Object();
fform[20].name="Times";
fform[20].req=10;
fform[21] = new Object();
fform[21].name="Transportation";
fform[21].req=11;
fform[22] = new Object();
fform[22].name="VolPrefs";
fform[22].req=12;
fform[23] = new Object();
fform[23].name="VolPop";
fform[23].req=13;
fform[24] = new Object();
fform[24].name="VolTimes";
fform[24].req=14;
fform[25] = new Object();
fform[25].name="VolTrans";
fform[25].req=15;
fform[26] = new Object();
fform[26].name="Email";
fform[26].req=16;
fform[27] = new Object();
fform[27].name="Zip";
fform[27].req=17;
fform[28] = new Object();
fform[28].name="SSN";
fform[28].req=18;
fform[29] = new Object();
fform[29].name = "Signature";
fform[29].req = 1;
var reWord = /^\S+/;
var reSSN = /^\d{3}\-\d{2}\-\d{4}$/;
var rePhn = /^\d{3}\-\d{3}\-\d{4}$/;
var reZip1 = /^\d{5}$/;
var reZip2 = /^\d{5}\-\d{4}$/;
var reEmail = /^[A-Za-z0-9_\.\-]+@[A-Za-z0-9_\-\.]+\.\w{2,}$/;
var ck=0;
var arrStat;
var arrPref=new Array();
var arrPop=new Array();
var arrTimes=new Array();
var arrTrans=new Array();
for(var i=0;i<t.elements.length;i++){
  for(var j in fform){
    if(t.elements[i].name==fform[j].name){
      switch(fform[j].req){
        case 1:
          if(!t.elements[i].value.match(reWord)){
            alert(fform[j].name+" field is required!\nPlease correct and resubmit.");
            t.elements[i].focus();
	        return false;
          }
          break;
		case 2:
          if(!t.elements[i].value.match(rePhn)){
            alert(fform[j].name+" field must be in 123-456-7890 phone format!\n(numbers only)\nPlease correct and resubmit.");
            t.elements[i].focus();
            return false;
          }
          break;
        case 3:
          if(t.elements[i].value.length>0){
            if(!t.elements[i].value.match(rePhn)){
              alert(fform[j].name+" field must be in 123-456-7890 phone format!\n(numbers only)\nPlease correct and resubmit.");
              t.elements[i].focus();
              return false;
            }
          }
          break;
        case 5:
          var cdt=ckDate(t.elements[i],fform[j].name);
          if(cdt!=1) return false;
          break;
        case 8:
          if(t.elements[i].checked==true) arrPref.push(t.elements[i].value);
          break;
        case 9:
          if(t.elements[i].checked==true) arrPop.push(t.elements[i].value);
          break;
        case 10:
          if(t.elements[i].checked==true) arrTimes.push(t.elements[i].value);
          break;
        case 11:
          if(t.elements[i].checked==true) arrTrans.push(t.elements[i].value);
          break;
        case 12:
          if(arrPref.length==0){
            alert(fform[j].name+" field must have selections!\nPlease correct and resubmit.");
            t.Preferences[0].focus();
            return false;
          }
          t.elements[i].value=arrPref.join("");
          break;
        case 13:
          if(arrPop.length==0){
            alert(fform[j].name+" field must have selections!\nPlease correct and resubmit.");
            t.Population[0].focus();
            return false;
          }
          t.elements[i].value=arrPop.join("");
          break;
        case 14:
           if(arrTimes.length==0){
              alert(fform[j].name+" field must have selections!\nPlease correct and resubmit.");
              t.Times[0].focus();
              return false;
            }
            t.elements[i].value=arrTimes.join("");
            break;
          case 15:
            if(arrTrans.length==0){
              alert(fform[j].name+" field must have selections!\nPlease correct and resubmit.");
              t.Transportation[0].focus();
              return false;
            }
            t.elements[i].value=arrTrans.join("");
            break;
          case 16:
             if(t.elements[i].value.length>0){
               if(!t.elements[i].value.match(reEmail)){
                 alert(fform[j].name+" field is not in proper email format!\nPlease correct and resubmit.");
                 t.elements[i].focus();
                 return false;
               }
             }
             break;
           case 17:
             if(t.elements[i].value.length>0){
               if(t.elements[i].value.length>5){
                 if(!t.elements[i].value.match(reZip2)) ck=1;
               }
               else if(!t.elements[i].value.match(reZip1)) ck=1;
             }
             else ck=1;
             if(ck){
               alert("Invalid ZipCode format!\n\nShort format is 00000\nLong format is 00000-0000\n\nPlease correct and resubmit.");
               t.elements[i].focus();
               return false;
             }
             break;
           case 18:
             if(t.elements[i].value.length>0){
               if(!t.elements[i].value.match(reSSN)){
                 alert(fform[j].name+" field must be in 000-00-0000 format\nor must read \"ASSIGN\" if none provided!\nPlease correct and resubmit.");
                 t.elements[i].focus();
                 return false;
               }
             }
             break;
           default: break;
         }
       }
     }
   }
   if(confirm("Are you SURE you are NOT volunteering\nunder one of the following conditions:\n\nCourt-ordered community service\nMandated through Welfare Transition offices\nReferred by Senior Citizen organizations?")){
     t.action = "index.cfm?fuseaction=page.SubmitVol";
     return true;
  } else return false;
}

function buildDate(mo,dt,yr,s){
  switch(s){
    case 4:
     document.forms[0].BirthDate.value=mo+"/"+dt+"/"+yr;
     break;
    default: break;
  }
}

function setCityState(c,s,t){
  var f = document.forms[0];
  switch(t){
    case 1:
      if(c!="") f.City.value=c;
      s = s.toUpperCase();
      if(s!="") f.State.value=s;
      break;
    default: break;
  }
}

function showField(t,s){
  var f = document.forms[0];
  switch(s){
    case 1:
      if(t.checked==true){
        document.all.prefs.style.visibility="visible";
      }
      else{
        document.all.prefs.style.visibility="hidden";
        f.OtherPref.value="";
      }
      break;
    case 2:
      if(t.checked==true){
        document.all.people.style.visibility="visible";
      }
      else{
        document.all.people.style.visibility="hidden";
        f.OtherPopulation.value="";
      }
      break;
    case 3:
      if(t.checked==true){
        document.all.exmpt.style.visibility="hidden";
        f.ExemptSpecifics.value="";
      }
      break;
    case 4:
      if(t.checked==true){
        document.all.exmpt.style.visibility="visible";
      }
      break;
    case 5:
      if(t.checked==true){
        document.all.vtimes.style.visibility="visible";
      }
      else{
        document.all.vtimes.style.visibility="hidden";
        f.OtherTimes.value = "";
      }
      break;
    default: break;
  }
}

