// === Form Validation ===
var formName;
formName = "caseAssignment";

var requiredFields = new Array();
requiredFields[0] = "contact_person";
requiredFields[1] = "contact_email";
requiredFields[2] = "contact_phone";
requiredFields[3] = "contact_address";
requiredFields[4] = "contact_city";
requiredFields[5] = "contact_state";
requiredFields[6] = "subject_name";
requiredFields[7] = "subject_phone";
requiredFields[8] = "subject_address";
requiredFields[9] = "subject_city";
requiredFields[10] = "subject_state";
requiredFields[11] = "case_type";
requiredFields[12] = "time_authorized_amount";
requiredFields[13] = "time_authorized_type";


var header = "______________________________\n";
var footer = "______________________________";

function validateForm() {
  doAlert = false;
  passFlag = 0
  msg = "\n";
  for (i=0; i<requiredFields.length; i++) {
    field = requiredFields[i];
	value = eval("document."+formName+"."+field+".value");
	  if (value == "") {
        msg += "      " + formatName(field) + "\n";
        doAlert = true;
	  } else if (field.indexOf("email")>0) {
	  	if (value.indexOf("@") == -1 || value.indexOf(".") == -1) {
		  msg += "      Please enter a valid email address\n";
          doAlert = true;
		}
	  }
  }
  if (doAlert) {
    alert("The following fields were left blank:\n" + header + msg + footer);
    return false;
  }
  return true;
}


function formatName(str) {
  x = 0; field = "";
  done = false;
  while (!done) {
    endIndex = requiredFields[i].indexOf("_",x);
    if (endIndex == -1) {
      endIndex = requiredFields[i].length;
      done = true;
    }
    field += requiredFields[i].substring(x,endIndex) + " ";
    x = endIndex + 1;
  }
  return field.toLowerCase();
}

var dtCh= "/";
var minYear=1900;
var maxYear=2020;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strMonth=dtStr.substring(0,pos1)
	var strDay=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		alert("Please enter a valid date")
		return false
	}
return true

}

function validateDate(date){
	if (date.value!="") {
		if (isDate(date.value)==false){
			date.focus()
			return false
		}
		return true
	}
 }

function isPhone(phStr){
	var msg="Please enter a valid phone number plus Area code."
	if (phStr.indexOf(".")>0){
		splitNum = phStr.split(".");
	} else if (phStr.indexOf("-")>0){
		splitNum = phStr.split("-");
	} else {
		alert(msg);
		return false;
	}
	area = splitNum[0];
	prefix = splitNum[1];
	digits = splitNum[2];
	if (((area.length==3)&&(prefix.length==3)&&(digits.length==4))&&(parseInt(area+prefix+digits)>1)){
		return true;
	} else {
		alert(msg);
		return false;
	}
}

function validatePhone(phone){
	if (phone.value!="") {
		if (isPhone(phone.value)==false){
			phone.focus();
			return false;
		}
		return true;
	}
}

function isSSN(ssnStr){
	var msg="Please enter a valid Social Security Number."
	if (ssnStr.indexOf("-")>0){
		splitSSN = ssnStr.split("-");
		first = splitSSN[0];
		second = splitSSN[1];
		third = splitSSN[2];
		if ((first.length==3&&second.length==2&&third.length==4)&&(parseInt(first+second+third)>0)){	
			return true;
		} else {
			alert(msg);
			return false;
		}
	} else if (parseInt(ssnStr)>0&&ssnStr.length==9)
		return true;
	else {
		alert(msg);
		return false;
	}
}

function validateSSN(ssn){
	if (ssn.value!="") {
		if (isSSN(ssn.value)==false){
			ssn.focus();
			return false;
		}
		return true;
	}
}