// JavaScript Document

// JS Trim function
function trim(str){return str = str.replace(/^\s*|\s*$/g,'');}



/*  CHECK FOR STRINGS  */
//--------------------------------------
function isString(str){
document.validString=false;
if(str.length>0){document.validString=true;}
return document.validString;
}

/*  CHECK FOR ONLY NUMERIC  */
//--------------------------------------
function isNumeric(strString){

var strValidChars = '0123456789';
var strChar;

document.validNumber=true;

if(strString.length==0){
document.validNumber=false;
}else{
for (i = 0; i < strString.length && document.validNumber==true; i++){
strChar = strString.charAt(i);
if(strValidChars.indexOf(strChar)==-1){
document.validNumber=false;}
}}
return document.validNumber;
}



/*  CHECK FOR VALID DATE  */
//------------------------------
function isBirthDate(mm,dd,yyyy){

document.validBirthDate=true;

var thisDate=new Date();
var maxYear=thisDate.getFullYear();

//Check numeric
isNumeric(mm);
if(document.validNumber){isNumeric(dd);}
if(document.validNumber){isNumeric(yyyy);}

//Check valid date values
if(document.validNumber){
if(mm>12){document.validBirthDate=false;}
if(dd>31){document.validBirthDate=false;}
if(yyyy>maxYear||yyyy<1900){document.validBirthDate=false;}
}else{document.validBirthDate=false;}

}

function isDate(mm,dd,yyyy){

document.validDate=true;

var thisDate=new Date();
var maxYear=thisDate.getFullYear();

//Check numeric
isNumeric(mm);
if(document.validNumber){isNumeric(dd);}
if(document.validNumber){isNumeric(yyyy);}

//Check valid date values
if(document.validNumber){
if(mm>12){document.validDate=false;}
if(dd>31){document.validDate=false;}
if(yyyy<1900){document.validDate=false;}
}else{document.validDate=false;}

}
/*  CHECK FOR VALID DATE STRING */
//------------------------------
function isDateStr(dateStr) {

document.validDateStr=true;

// month day year with either slashes or dashes or .
var sep1 = dateStr.indexOf("/");
if (sep1 == -1) { sep1 = dateStr.indexOf("-"); }
if (sep1 == -1) { sep1 = dateStr.indexOf("."); }

// if no slashes or dashes, invalid date
if (sep1 == -1) { document.validDateStr=false; }
				
var dateMonth = dateStr.substring(0, sep1)
var dateMonthAndYear = dateStr.substring(sep1+1, dateStr.length);
				
var sep2 = dateMonthAndYear.indexOf("/");
if (sep2 == -1) { sep2 = dateMonthAndYear.indexOf("-"); }
if (sep2 == -1) { sep2 = dateMonthAndYear.indexOf("."); }

// if no slashes or dashes, invalid date
if (sep2 == -1) { document.validDateStr=false; }
				
var dateDay = dateMonthAndYear.substring(0, sep2);
var dateYear = dateMonthAndYear.substring(sep2+1, dateMonthAndYear.length);
if ( (dateMonth == '') || (dateDay == '') || (dateYear == '') ) { document.validDateStr=false; }
				
// if any non-digits in the month, invalid date
for (var x=0; x < dateMonth.length; x++) {
var digit = dateMonth.substring(x, x+1);
if ((digit < '0') || (digit > '9')) { document.validDateStr=false; }
}
				
// convert the text month to a number
var numMonth = 0;
for (var x=0; x < dateMonth.length; x++) {
digit = dateMonth.substring(x, x+1);
numMonth *= 10;
numMonth += parseInt(digit);
}
				
if ((numMonth <= 0) || (numMonth > 12)) { document.validDateStr=false; }
    
// if any non-digits in the day, invalid date
for (var x=0; x < dateDay.length; x++) {
digit = dateDay.substring(x, x+1);
if ((digit < '0') || (digit > '9')) { document.validDateStr=false; }
}
    
// convert the text day to a number
var numDay = 0;
for (var x=0; x < dateDay.length; x++) {
digit = dateDay.substring(x, x+1);
numDay *= 10;
numDay += parseInt(digit);
}
if ((numDay <= 0) || (numDay > 31)) { document.validDateStr=false; }
// February can't be greater than 29 (leap year calculation comes later)
if ((numMonth == 2) && (numDay > 29)) { document.validDateStr=false; }
// check for months with only 30 days
if ((numMonth == 4) || (numMonth == 6) || (numMonth == 9) || (numMonth == 11)) {
if (numDay > 30) { document.validDateStr=false; }
}
				
// if any non-digits in the year, invalid date
for (var x=0; x < dateYear.length; x++) {
digit = dateYear.substring(x, x+1);
if ((digit < '0') || (digit > '9')) { document.validDateStr=false; }
}
				
// convert the text year to a number
var numYear = 0;
for (var x=0; x < dateYear.length; x++) {
digit = dateYear.substring(x, x+1);
numYear *= 10;
numYear += parseInt(digit);
}

// Year must be a 4-digit year, modified valid year to 2079 for Work permit value.
if (dateYear.length != 4) { document.validDateStr=false; }
if ((numYear <= 0) || (numYear > 2079)) { document.validDateStr=false; }

// check for leap year if the month and day is Feb 29
if ((numMonth == 2) && (numDay == 29)) {
var div4 = numYear % 4;
var div100 = numYear % 100;
var div400 = numYear % 400;
// if not divisible by 4, then not a leap year so Feb 29 is invalid
if (div4 != 0) { document.validDateStr=false; }
// at this point, year is divisible by 4. So if year is divisible by
// 100 and not 400, then it's not a leap year so Feb 29 is invalid
if ((div100 == 0) && (div400 != 0)) { document.validDateStr=false; }
}

return document.validDateStr;
}



/*  CHECK FOR OVER 18  */
//-----------------------------------
function checkAge(mm,dd,yyyy){

document.overAge=true;
var min_age=18;

var month=parseInt(mm)-1;
var day=parseInt(dd);
var year=parseInt(yyyy);

var theirDate=new Date((year+min_age),month,day);
var thisDate=new Date;

if((thisDate.getTime()-theirDate.getTime())<0){
document.overAge=false;
}
return document.overAge;
}


/*  CHECK FOR SELECTION   */
//-----------------------------------
function isSelected(field){
document.validSelection=false;
if(field>0){document.validSelection=true;}
return document.validSelection
}


/*  CHECK PHONE NUMBERS   */
//-----------------------------------

function isPhone(area,prefix,line){
	
document.validPhone=false;

//Check numeric
isNumeric(area);
if(document.validNumber){isNumeric(prefix);}
if(document.validNumber){isNumeric(line);}
if(document.validNumber){

if(area.length==3&&prefix.length==3&&line.length==4){
document.validPhone=true;}}

return document.validPhone;
}

// strip non-numeric chars
function filternumber(strval){
var str = strval;
filterValues = '1234567890';     // Characters not stripped out
var i;
var returnStr = '';
for (i = 0; i < str.length; i++) {
var c = str.charAt(i);
if (filterValues.indexOf(c) != -1) returnStr += c;
}
return returnStr;
}


function checkPhone(userinput){ 
var num=filternumber(userinput);
var area = num.substring(0,3);
var prefix = num.substring(3,6);
var line = num.substring(6,10);
isPhone(area,prefix,line); 
} 
