// form validation function //
function validate(form) {
  var lastname = form.lastname.value;
  var firstname = form.firstname.value;
  var date = form.date.value;
  var address = form.address.value;
  var apartment = form.apartment.value;
  var city = form.city.value;
  var state = form.state.value;
  var zip = form.zip.value;
  var phone = form.phone.value;
  var email = form.email.value;
  var desisal = form.desisal.value;
  var position = form.position.value;
  
  var highschool = form.highschool.value;
  var highschooladd = form.highschooladd.value;
  var highschfrm = form.highschfrm.value;
  var highschto = form.highschto.value;
  var college = form.college.value;
  var coladd = form.coladd.value;
  var colgfrm = form.colgfrm.value;
  var colgto = form.colgto.value;
  
  var refname = form.refname.value;
  var relationship = form.relationship.value;
  var refcompany = form.refcompany.value;
  var refphone = form.refphone.value;
  var refadd = form.refadd.value;
  var refname1 = form.refname1.value;
  var relationship1 = form.relationship1.value;
  var refcompany1 = form.refcompany1.value;
  var refphone1 = form.refphone1.value;
  var refadd1 = form.refadd1.value;
  var refname2 = form.refname2.value;
  var relationship2 = form.relationship2.value;
  var refcompany2 = form.refcompany2.value;
  var refphone2 = form.refphone2.value;
  var refadd2 = form.refadd2.value;
  
  var prevcompany = form.prevcompany.value;
  var prevphone = form.prevphone.value;
  var prevadd = form.prevadd.value;
  var presupervisor = form.presupervisor.value;
  var jobtitle = form.jobtitle.value;
  var startsal = form.startsal.value;
  var endsal = form.endsal.value;
  var prevresponsibility = form.prevresponsibility.value;
  var prevfrm = form.prevfrm.value;
  var prevto = form.prevto.value;
  var prevreason = form.prevreason.value;
  
  
  var lastnameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var firstnameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var dateRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  var addressRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var apartmentRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var cityRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var stateRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var zipRegex =/^\d{5}-\d{4}|\d{5}|[A-Z]\d[A-Z] \d[A-Z]\d$/;
  var phoneRegex =/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
  var emailRegex = /^[\w-\.]+@([\w-]+\.)+[\w-]{2,4}$/;
  var desisalRegex =/^(0|[1-9][0-9]*)$/;
  var positionRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  
  var highschoolRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var highschooladdRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var highschfrmRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  var highschtoRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  var collegeRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var coladdRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var colgfrmRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  var colgtoRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  
  var refnameRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var relationshipRegex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var refcompanyRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var refphoneRegex =/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
  var refaddRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var refname1Regex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var relationship1Regex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var refcompany1Regex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var refphone1Regex =/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
  var refadd1Regex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var refname2Regex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var relationship2Regex = /^[a-zA-Z]+(([\'\,\.\- ][a-zA-Z ])?[a-zA-Z]*)*$/;
  var refcompany2Regex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var refphone2Regex =/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
  var refadd2Regex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  
  var prevcompanyRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var prevphoneRegex =/^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
  var prevaddRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var presupervisorRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var jobtitleRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var startsalRegex =/^\+?[\d\s]{3,}$/;
  var endsalRegex =/^\+?[\d\s]{3,}$/;
  var prevresponsibilityRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  var prevfrmRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  var prevtoRegex =/^(|(0[1-9])|(1[0-2]))\/((0[1-9])|(1\d)|(2\d)|(3[0-1]))\/((\d{4}))$/;
  var prevreasonRegex = new RegExp(/<\/?\w+((\s+\w+(\s*=\s*(?:".*?"|'.*?'|[^'">\s]+))?)+\s*|\s*)\/?>/gim);
  
  
  if(lastname == "") {
    inlineMsg('lastname','You must enter your Last Name.',2);
    return false;
  }
  if(!lastname.match(lastnameRegex)) {
    inlineMsg('lastname','You have entered an invalid Last Name.',2);
    return false;
  }
  if(firstname == "") {
    inlineMsg('firstname','You must enter your First Name.',2);
    return false;
  }
  if(!firstname.match(firstnameRegex)) {
    inlineMsg('firstname','You have entered an invalid First Name.',2);
    return false;
  }
  if(date == "") {
    inlineMsg('date','You must enter a Date.',2);
    return false;
  }
  if(!date.match(dateRegex)) {
    inlineMsg('date','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(address == "") {
    inlineMsg('address','You must enter a Address.');
    return false;
  }
  if(address.match(addressRegex)) {
    inlineMsg('address','You have entered an invalid Address.');
    return false;
  }
  if(apartment == "") {
    inlineMsg('apartment','You must enter a Apartment/Unit.');
    return false;
  }
  if(apartment.match(apartmentRegex)) {
    inlineMsg('apartment','You have entered an invalid Apartment/Unit.');
    return false;
  }
  if(city == "") {
    inlineMsg('city','You must enter your City.',2);
    return false;
  }
  if(!city.match(cityRegex)) {
    inlineMsg('city','You have entered an invalid City.',2);
    return false;
  }
  if(state == "") {
    inlineMsg('state','You must enter your State.',2);
    return false;
  }
  if(!state.match(stateRegex)) {
    inlineMsg('state','You have entered an invalid State.',2);
    return false;
  }
  if(zip == "") {
    inlineMsg('zip','You must enter a Zip.',2);
    return false;
  }
  if(!zip.match(zipRegex)) {
    inlineMsg('zip','You have entered an invalid Zip.',2);
    return false;
  }
  if(phone == "") {
    inlineMsg('phone','You must enter a Phone.',2);
    return false;
  }
  if(!phone.match(phoneRegex)) {
    inlineMsg('phone','Please enter Phone in the format 111-111-1111.',2);
    return false;
  }
  if(email == "") {
    inlineMsg('email','You must enter your Email.',2);
    return false;
  }
  if(!email.match(emailRegex)) {
    inlineMsg('email','You have entered an invalid Email.',2);
    return false;
  }
  if(desisal == "") {
    inlineMsg('desisal','You must enter a Desired Salary.',2);
    return false;
  }
  if(!desisal.match(desisalRegex)) {
    inlineMsg('desisal','You have entered an invalid Desired Salary.',2);
    return false;
  }
  if(position == "") {
    inlineMsg('position','You must enter a Position.');
    return false;
  }
  if(position.match(positionRegex)) {
    inlineMsg('position','You have entered an invalid Position.');
    return false;
  }
  if(highschool == "") {
    inlineMsg('highschool','You must enter a High School.',2);
    return false;
  }
  if(!highschool.match(highschoolRegex)) {
    inlineMsg('highschool','You have entered an invalid High School.',2);
    return false;
  }
  if(highschooladd == "") {
    inlineMsg('highschooladd','You must enter a High School Address.');
    return false;
  }
  if(highschooladd.match(highschooladdRegex)) {
    inlineMsg('highschooladd','You have entered an invalid High School Address.');
    return false;
  }
  if(highschfrm == "") {
    inlineMsg('highschfrm','You must enter a Highschool From.',2);
    return false;
  }
  if(!highschfrm.match(highschfrmRegex)) {
    inlineMsg('highschfrm','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(highschto == "") {
    inlineMsg('highschto','You must enter a Highschool To.');
    return false;
  }
  if(!highschto.match(highschtoRegex)) {
    inlineMsg('highschto','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(college == "") {
    inlineMsg('college','You must enter a College.',2);
    return false;
  }
  if(!college.match(collegeRegex)) {
    inlineMsg('college','You have entered an invalid College.',2);
    return false;
  }
  if(coladd == "") {
    inlineMsg('coladd','You must enter a college Address.');
    return false;
  }
  if(coladd.match(coladdRegex)) {
    inlineMsg('coladd','You have entered an invalid college Address.');
    return false;
  }
  if(colgfrm == "") {
    inlineMsg('colgfrm','You must enter a College From.',2);
    return false;
  }
  if(!colgfrm.match(colgfrmRegex)) {
    inlineMsg('colgfrm','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(colgto == "") {
    inlineMsg('colgto','You must enter a College To.',2);
    return false;
  }
  if(!colgto.match(colgtoRegex)) {
    inlineMsg('colgto','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(refname == "") {
    inlineMsg('refname','You must enter a Full Name.',2);
    return false;
  }
  if(!refname.match(refnameRegex)) {
    inlineMsg('refname','You have entered an invalid Full Name.',2);
    return false;
  }
  if(relationship == "") {
    inlineMsg('relationship','You must enter a Relationship.',2);
    return false;
  }
  if(!relationship.match(relationshipRegex)) {
    inlineMsg('relationship','You have entered an invalid Relationship.',2);
    return false;
  }
  if(refcompany == "") {
    inlineMsg('refcompany','You must enter a Company.');
    return false;
  }
  if(refcompany.match(refcompanyRegex)) {
    inlineMsg('refcompany','You have entered an invalid Company.');
    return false;
  }
  if(refphone == "") {
    inlineMsg('refphone','You must enter a Phone.',2);
    return false;
  }
  if(!refphone.match(refphoneRegex)) {
    inlineMsg('refphone','Please enter Phone in the format 111-111-1111.',2);
    return false;
  }
  if(refadd == "") {
    inlineMsg('refadd','You must enter a Address.');
    return false;
  }
  if(refadd.match(refaddRegex)) {
    inlineMsg('refadd','You have entered an invalid Address.');
    return false;
  }
  if(refname1 == "") {
    inlineMsg('refname1','You must enter a Full Name.',2);
    return false;
  }
  if(!refname1.match(refname1Regex)) {
    inlineMsg('refname1','You have entered an invalid Full Name.',2);
    return false;
  }
  if(relationship1 == "") {
    inlineMsg('relationship1','You must enter a Relationship.',2);
    return false;
  }
  if(!relationship1.match(relationship1Regex)) {
    inlineMsg('relationship1','You have entered an invalid Relationship.',2);
    return false;
  }
  if(refcompany1 == "") {
    inlineMsg('refcompany1','You must enter a Company.');
    return false;
  }
  if(refcompany1.match(refcompany1Regex)) {
    inlineMsg('refcompany1','You have entered an invalid Company.');
    return false;
  }
  if(refphone1 == "") {
    inlineMsg('refphone1','You must enter a Phone.',2);
    return false;
  }
  if(!refphone1.match(refphone1Regex)) {
    inlineMsg('refphone1','Please enter Phone in the format 111-111-1111.',2);
    return false;
  }
  if(refadd1 == "") {
    inlineMsg('refadd1','You must enter a Address.');
    return false;
  }
  if(refadd1.match(refadd1Regex)) {
    inlineMsg('refadd1','You have entered an invalid Address.');
    return false;
  }
  if(refname2 == "") {
    inlineMsg('refname2','You must enter a Full Name.',2);
    return false;
  }
  if(!refname2.match(refname2Regex)) {
    inlineMsg('refname2','You have entered an invalid Full Name.',2);
    return false;
  }
  if(relationship2 == "") {
    inlineMsg('relationship2','You must enter a Relationship.',2);
    return false;
  }
  if(!relationship2.match(relationship2Regex)) {
    inlineMsg('relationship2','You have entered an invalid Relationship.',2);
    return false;
  }
  if(refcompany2 == "") {
    inlineMsg('refcompany2','You must enter a Company.');
    return false;
  }
  if(refcompany2.match(refcompany2Regex)) {
    inlineMsg('refcompany2','You have entered an invalid Company.');
    return false;
  }
  if(refphone2 == "") {
    inlineMsg('refphone2','You must enter a Phone.',2);
    return false;
  }
  if(!refphone2.match(refphone2Regex)) {
    inlineMsg('refphone2','You have entered an invalid Phone.',2);
    return false;
  }
  if(refadd2 == "") {
    inlineMsg('refadd2','You must enter a Address.');
    return false;
  }
  if(refadd2.match(refadd2Regex)) {
    inlineMsg('refadd2','You have entered an invalid Address.');
    return false;
  }
  if(prevcompany == "") {
    inlineMsg('prevcompany','You must enter a Company.');
    return false;
  }
  if(prevcompany.match(prevcompanyRegex)) {
    inlineMsg('prevcompany','You have entered an invalid Company.');
    return false;
  }
  if(prevphone == "") {
    inlineMsg('prevphone','You must enter a Phone.',2);
    return false;
  }
  if(!prevphone.match(prevphoneRegex)) {
    inlineMsg('prevphone','Please enter Phone in the format 111-111-1111.',2);
    return false;
  }
  if(prevadd == "") {
    inlineMsg('prevadd','You must enter a Address.');
    return false;
  }
  if(prevadd.match(prevaddRegex)) {
    inlineMsg('prevadd','You have entered an invalid Address.');
    return false;
  }
  if(presupervisor == "") {
    inlineMsg('presupervisor','You must enter a Supervisor.');
    return false;
  }
  if(presupervisor.match(presupervisorRegex)) {
    inlineMsg('presupervisor','You have entered an invalid Supervisor.');
    return false;
  }
  if(jobtitle == "") {
    inlineMsg('jobtitle','You must enter a Job Title.');
    return false;
  }
  if(jobtitle.match(jobtitleRegex)) {
    inlineMsg('jobtitle','You have entered an invalid Job Title.');
    return false;
  }
  if(startsal == "") {
    inlineMsg('startsal','You must enter a Starting Salary.',2);
    return false;
  }
  if(!startsal.match(startsalRegex)) {
    inlineMsg('startsal','You have entered an invalid Starting Salary.',2);
    return false;
  }
  if(endsal == "") {
    inlineMsg('endsal','You must enter a Ending Salary.',2);
    return false;
  }
  if(!endsal.match(endsalRegex)) {
    inlineMsg('endsal','You have entered an invalid Ending Salary.',2);
    return false;
  }
  if(prevresponsibility == "") {
    inlineMsg('prevresponsibility','You must enter a Responsibilities.');
    return false;
  }
  if(prevresponsibility.match(prevresponsibilityRegex)) {
    inlineMsg('prevresponsibility','You have entered an invalid Responsibilities.');
    return false;
  }
  if(prevfrm == "") {
    inlineMsg('prevfrm','You must enter a From.',2);
    return false;
  }
  if(!prevfrm.match(prevfrmRegex)) {
    inlineMsg('prevfrm','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(prevto == "") {
    inlineMsg('prevto','You must enter a To.',2);
    return false;
  }
  if(!prevto.match(prevtoRegex)) {
    inlineMsg('prevto','Please enter date in mm/dd/yyyy format.',2);
    return false;
  }
  if(prevreason == "") {
    inlineMsg('prevreason','You must enter a Reason for Leaving.');
    return false;
  }
  if(prevreason.match(prevreasonRegex)) {
    inlineMsg('prevreason','You have entered an invalid Reason for Leaving.');
    return false;
  }
  return true;
}

// START OF MESSAGE SCRIPT //

var MSGTIMER = 20;
var MSGSPEED = 5;
var MSGOFFSET = 3;
var MSGHIDE = 3;

// build out the divs, set attributes and call the fade function //
function inlineMsg(target,string,autohide) {
  var msg;
  var msgcontent;
  if(!document.getElementById('msg')) {
    msg = document.createElement('div');
    msg.id = 'msg';
    msgcontent = document.createElement('div');
    msgcontent.id = 'msgcontent';
    document.body.appendChild(msg);
    msg.appendChild(msgcontent);
    msg.style.filter = 'alpha(opacity=0)';
    msg.style.opacity = 0;
    msg.alpha = 0;
  } else {
    msg = document.getElementById('msg');
    msgcontent = document.getElementById('msgcontent');
  }
  msgcontent.innerHTML = string;
  msg.style.display = 'block';
  var msgheight = msg.offsetHeight;
  var targetdiv = document.getElementById(target);
  targetdiv.focus();
  var targetheight = targetdiv.offsetHeight;
  var targetwidth = targetdiv.offsetWidth;
  var topposition = topPosition(targetdiv) - ((msgheight - targetheight) / 2);
  var leftposition = leftPosition(targetdiv) + targetwidth + MSGOFFSET;
  msg.style.top = topposition + 'px';
  msg.style.left = leftposition + 'px';
  clearInterval(msg.timer);
  msg.timer = setInterval("fadeMsg(1)", MSGTIMER);
  if(!autohide) {
    autohide = MSGHIDE;  
  }
  window.setTimeout("hideMsg()", (autohide * 1000));
}

// hide the form alert //
function hideMsg(msg) {
  var msg = document.getElementById('msg');
  if(!msg.timer) {
    msg.timer = setInterval("fadeMsg(0)", MSGTIMER);
  }
}

// face the message box //
function fadeMsg(flag) {
  if(flag == null) {
    flag = 1;
  }
  var msg = document.getElementById('msg');
  var value;
  if(flag == 1) {
    value = msg.alpha + MSGSPEED;
  } else {
    value = msg.alpha - MSGSPEED;
  }
  msg.alpha = value;
  msg.style.opacity = (value / 100);
  msg.style.filter = 'alpha(opacity=' + value + ')';
  if(value >= 99) {
    clearInterval(msg.timer);
    msg.timer = null;
  } else if(value <= 1) {
    msg.style.display = "none";
    clearInterval(msg.timer);
  }
}

// calculate the position of the element in relation to the left of the browser //
function leftPosition(target) {
  var left = 0;
  if(target.offsetParent) {
    while(1) {
      left += target.offsetLeft;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.x) {
    left += target.x;
  }
  return left;
}

// calculate the position of the element in relation to the top of the browser window //
function topPosition(target) {
  var top = 0;
  if(target.offsetParent) {
    while(1) {
      top += target.offsetTop;
      if(!target.offsetParent) {
        break;
      }
      target = target.offsetParent;
    }
  } else if(target.y) {
    top += target.y;
  }
  return top;
}

// preload the arrow //
if(document.images) {
  arrow = new Image(7,80); 
  arrow.src = "images/msg_arrow.gif"; 
}



