var allvalid = true;
function isDate(str) {
if (str.length != 10) { return false }

for (j=0; j<str.length; j++) {
	if ((j == 2) || (j == 5)) {
  		if (str.charAt(j) != "/") { return false }
	} 
	else {
  			if ((str.charAt(j) < "0") || (str.charAt(j) > "9")) { return false }
	}
}

var month = str.charAt(0) == "0" ? parseInt(str.substring(1,2)) : parseInt(str.substring(0,2));
var day = str.charAt(3) == "0" ? parseInt(str.substring(4,5)) : parseInt(str.substring(3,5));
var begin = str.charAt(6) == "0" ? (str.charAt(7) == "0" ? (str.charAt(8) == "0" ? 9 : 8) : 7) : 6;
var year = parseInt(str.substring(begin, 10));

if (day == 0) { return false }
if (month == 0 || month > 12) { return false }
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) {
    if (day > 31) { return false }
} 
else{
	 if (month == 4 || month == 6 || month == 9 || month == 11) {
	    if (day > 30) {return false}
	 } 
	 else {
  			if (year%4 != 0) {
		        if (day > 28) {return false}
  			} 
			else {
		        	if (day > 29) {return false}
 			 }
	}
}
return true;
}

function isTime(str) {
if (str.length != 8) { return false }

if (str.charAt(2) != ":") { return false }
if (str.charAt(5) != " ") { return false }
if ((str.charAt(0) < "0") || (str.charAt(0) > "9")) { return false }
if ((str.charAt(1) < "0") || (str.charAt(1) > "9")) { return false }
if ((str.charAt(3) < "0") || (str.charAt(3) > "9")) { return false }
if ((str.charAt(4) < "0") || (str.charAt(4) > "9")) { return false }

var hour = parseInt(str.substring(0,2));
var minute = parseInt(str.substring(3,5));
var ampm = parseInt(str.substring(6,8));

if (hour < 0) { return false }
if (hour < 0 || hour > 12) { return false }
if (minute < 0 || minute > 59) { return false }
//if ((ampm.toUpper != 'AM') && (ampm.toUpper != 'PM')) { return false }
return true;
}
	
function ck_valid(obj,fld_type,err_txt){
var server_date = build_server_date();
if (fld_type!='submit' && fld_type!='submitNgo'){ allvalid = true;}
switch(fld_type){
	case 'time':
		if(obj.value !=''){
			var str_test = '';
			var tst_ampm = '';
			var tst_time = '';
			str_test = obj.value;
			if(str_test.indexOf(' ')!=-1){
				while (str_test.indexOf(' ')>-1) {
						pos= str_test.indexOf(' ');
						str_test = "" + (str_test.substring(0, pos) + 
						str_test.substring((pos + 1), str_test.length));
				}
			}
			for (j=0; j<str_test.length; j++) {
				if (str_test.charAt(j) == ":") {tst_time+=str_test.charAt(j);}
				if ((str_test.charAt(j) >= "0") && (str_test.charAt(j) <= "9")) {tst_time+=str_test.charAt(j);}
				if ((str_test.charAt(j) == "a") || (str_test.charAt(j) == "A")) {tst_ampm = ' AM';}
				if ((str_test.charAt(j) == "p") || (str_test.charAt(j) == "P")) {tst_ampm = ' PM';}
			}
			if ((tst_time.length<=4)&&(tst_time.length>2)&&(tst_time.indexOf(':')== -1)){
				tst_time = '0000'+tst_time
				tst_time = tst_time.substring(tst_time.length-4,tst_time.length-2)+':'+tst_time.substring(tst_time.length-2,tst_time.length);
			}
			if (tst_time.indexOf(':')== -1){tst_time+=':00';}
			if (tst_time.charAt(0) == ":"){tst_time='00'+tst_time;} 
			if (tst_time.charAt(1) == ":"){tst_time='0'+tst_time;} 
			if (tst_ampm==''){
				var hour = parseInt(tst_time.substring(0,tst_time.indexOf(':')));
				if (hour == 12){tst_ampm = ' PM';}
				else if (hour >= 24){tst_time='';tst_ampm = '';hour=0;}
				else if (hour > 12){
					hour = hour - 12;
					tst_ampm = ' PM';
					var newHour = '00'+hour;
					tst_time = newHour.substring(newHour.length-2,newHour.length) + tst_time.substring(2,10)
				}else tst_ampm = ' AM';
			}
			tst_time = tst_time + tst_ampm;
			if(isTime(tst_time)==false){
				obj.setAttribute('stopsubmit',true);
				alert(err_txt);
				allvalid = false;
				focus_control(obj);
			}
			else{
				obj.setAttribute('stopsubmit',false);
				obj.value = tst_time;
			}
		}
		break;
	case 'date':
		if(obj.value !=''){
			//see if a valid date has been entered
				var str_test;
				var tst_date = '';

				str_test = obj.value;
				//'replace - with / if any in string
				if(str_test.indexOf('-')!=-1){
					while (str_test.indexOf('-')>-1) {
							pos= str_test.indexOf('-');
							str_test = "" + (str_test.substring(0, pos) + '/' + 
							str_test.substring((pos + 1), str_test.length));
					}
				}
				
				if(str_test.length==4){
					//'possible formats: mmdd
					//'					mm/d idx:2
					//'					m/dd idx:1
					
					if(str_test.indexOf('/')!=-1){
						if(str_test.indexOf('/')==1){tst_date = '0'+str_test+server_date.substring(server_date.length-5,server_date.length);}
						if(str_test.indexOf('/')==2){tst_date = str_test.substring(0,3)+'0'+str_test.substring(3,str_test.length)+server_date.substring(server_date.length-5,server_date.length);}
					}
					else{tst_date = str_test.substring(0,2) + '/' + str_test.substring(2,4) + '/' + server_date.substring(server_date.length-4,server_date.length);}
				}
				
				if(str_test.length==5){
					//'possible formats: mm/dd
					tst_date = str_test+server_date.substring(server_date.length-5,server_date.length);
				}
				
				
				if(str_test.length==6){
					//'possible formats: mmddyy
					//'					m/d/yy idx:1
					//'					mm/dd/ idx:2
					
					if(str_test.indexOf('/')!=-1){
						if(str_test.indexOf('/')==1){tst_date = '0'+str_test.substring(0,1)+'/0'+str_test.substring(2,3) + '/20' +str_test.substring(4,6);}
						if(str_test.indexOf('/')==2){tst_date = str_test.substring(0,3)+str_test.substring(3,str_test.length)+server_date.substring(server_date.length-4,server_date.length);}
					}
					else{tst_date = str_test.substring(0,2) + '/' + str_test.substring(2,4) + '/' + '20' + str_test.substring(4,6);}	
				}
				
				if(str_test.length==7){
					//'possible formats: mm/d/yy idx:2
					//'					m/dd/yy idx:1
					
					if(str_test.indexOf('/')!=-1){
						if(str_test.indexOf('/')==1){tst_date = '0'+str_test.substring(0,1)+str_test.substring(1,4) + '/20' +str_test.substring(5,7);}
						if(str_test.indexOf('/')==2){tst_date = str_test.substring(0,2)+'/0'+str_test.substring(3,4)+'/20'+str_test.substring(5,7);}
					}
					else{tst_date = str_test.substring(0,2) + '/' + str_test.substring(2,4) + '/' + '20' + str_test.substring(4,6);}	
				}

				
				if(str_test.length==8){
					//'possible formats: mm/dd/yy idx:2
					//'					m/d/yyyy idx:1
					
					if(str_test.indexOf('/')!=-1){
						if(str_test.indexOf('/')==1){tst_date = '0'+str_test.substring(0,1)+'/0'+str_test.substring(2,str_test.length);}
						if(str_test.indexOf('/')==2){tst_date = str_test.substring(0,5)+'/20'+str_test.substring(6,8);}
					}
					else{tst_date = str_test.substring(0,2) + '/' + str_test.substring(2,4) + '/' + str_test.substring(4,8);}	
				}
				
				if(str_test.length==9){
					//'possible formats: mm/d/yyyy idx:2
					//'					m/dd/yyyy idx:1
					
					if(str_test.indexOf('/')!=-1){
						if(str_test.indexOf('/')==1){tst_date = '0'+str_test;}
						if(str_test.indexOf('/')==2){tst_date = str_test.substring(0,3)+'0'+str_test.substring(3,9);}
					}
					else{tst_date = str_test.substring(0,2) + '/' + str_test.substring(2,4) + '/' + '20' + str_test.substring(4,6);}	
				}
				if(str_test.length==10){tst_date = str_test;}
						
				if(isDate(tst_date)==false){
					obj.setAttribute('stopsubmit',true);
					alert(err_txt);
					allvalid = false;
					focus_control(obj);
				}
				else{
					obj.setAttribute('stopsubmit',false);
					obj.value = tst_date;
				}
		}		
		break;
	
	case 'zip_code' :
		if(obj.value!=''){
				var str_test;
				var tst_num = '';
				var inpt_good = false;
				str_test = obj.value;
				
				if(str_test.length==10){
					//'format aaaaa-aaaa
					if(str_test.indexOf('-')==-1){
						inpt_good = true;
						tst_num = str_test.substring(0,5) + '-' + str_test.substring(5,str_test.length);
					}
				}
				if(str_test.length==9){
					//'format aaaaaaaaa
					
					if(str_test.indexOf('-')==-1){
						inpt_good = true;
						tst_num = str_test.substring(0,5) + '-' + str_test.substring(5,str_test.length);
					}
				}
				if(str_test.length==5){
					//'aaaaa
					tst_num = str_test;
					inpt_good = true;	
				}
				
				if(str_test.length==10){
					//'format aaaaa-aaaa
					tst_num = str_test;
					if(str_test.charAt(5)=='-'){inpt_good = true;}	
				}
				
				if(inpt_good == false){
					obj.setAttribute('stopsubmit',true);
					alert(err_txt);
					allvalid = false;
					focus_control(obj);
				}else{
					obj.value = tst_num;
					obj.setAttribute('stopsubmit',false);
				}
		}
		break;
		
		
	case 'ph_num':
		if(obj.value!=''){
				var str_test;
				var tst_num = '';
				var inpt_good = false;
				tmpStr = obj.value;
				pattern = /\D/g;
				str_test = tmpStr.replace(pattern,'');
				
				if(str_test.indexOf('(')!=-1){
					//'trim out (
					while (str_test.indexOf('(')>-1) {
							pos= str_test.indexOf('(');
							str_test = "" + (str_test.substring(0, pos) +
							str_test.substring((pos + 1), str_test.length));
					}
				}
				
				if(str_test.indexOf(')')!=-1){
					//'replace )
					while (str_test.indexOf(')')>-1) {
							pos= str_test.indexOf(')');
							str_test = "" + (str_test.substring(0, pos) + '.' +
							str_test.substring((pos + 1), str_test.length));
					}
				}

				if(str_test.indexOf('-')!=-1){
					//'replace -
					while (str_test.indexOf('-')>-1) {
							pos= str_test.indexOf('-');
							str_test = "" + (str_test.substring(0, pos) + '.' +
							str_test.substring((pos + 1), str_test.length));
					}
				}
				
				if(str_test.length==10){
					//'format aaaaaaaaaa
					if(str_test.indexOf('.')==-1){
						inpt_good = true;
						tst_num = str_test.substring(0,3) + '.' + str_test.substring(3,6) + '.' + str_test.substring(6,10);
					}
				}
				if(str_test.length==7){
					//'format aaaaaaa
					
					if(str_test.indexOf('.')==-1){
						inpt_good = true;
						tst_num = str_test.substring(0,3) + '.' + str_test.substring(3,str_test.length);
					}
				}
				
				if(str_test.length==8){
					//'aaa.aaaa
					tst_num = str_test;
					if(str_test.charAt(3)=='.'){inpt_good = true;}	
				}
				
				if(str_test.length==12){
					//'format aaa.aaa.aaaa
					tst_num = str_test;
					if(str_test.charAt(3)=='.'){inpt_good = true;}	
					if(str_test.charAt(7)=='.'){inpt_good = true;}
				}
				
				if(inpt_good == false){
					obj.setAttribute('stopsubmit',true);
					alert(err_txt);
					allvalid = false;
					focus_control(obj);
				}else{
					obj.value = tst_num;
					obj.setAttribute('stopsubmit',false);
				}
		}
		break;
		
	case 'ach_transit_number':
		var tst_str = obj.value;
		var i;
		var mtot;
			
		if(tst_str.length!=0){
			if(tst_str.length!=9){
				obj.setAttribute('stopsubmit',true);
				alert(err_txt);
				allvalid = false;
				focus_control(obj);
			}
			else{
				mtot=0;
				mtot=(3 * (parseInt(tst_str.charAt(0)) + parseInt(tst_str.charAt(3)) + parseInt(tst_str.charAt(6))))
				+ (7 * (parseInt(tst_str.charAt(1)) + parseInt(tst_str.charAt(4)) + parseInt(tst_str.charAt(7))))
				+ (1 * (parseInt(tst_str.charAt(2)) + parseInt(tst_str.charAt(5)) + parseInt(tst_str.charAt(8))));
				if(Math.round(mtot - (Math.floor(mtot/10)*10))!=0){
					obj.setAttribute('stopsubmit',true);
					alert(err_txt);
					allvalid = false;
					focus_control(obj);
				}else {obj.setAttribute('stopsubmit',false);}
			}
	    }
		break;
	case 'numeric':
		var tst_str = ""+obj.value;
		tst_str=trim(tst_str);
		obj.value = trim(tst_str);
		var i;
		var mtot;
		if(obj.value!=''){
			if (!isnumeric(tst_str)){
				obj.setAttribute('stopsubmit',true)
				alert(err_txt);
				allvalid = false;
				focus_control(obj);
			}else {
				obj.setAttribute('stopsubmit',false);
			}
		}else {
			obj.setAttribute('stopsubmit',false);
		}
		break;
	case 'account_number':
		var tstStr = obj.value;
		tstStr = tstStr.substring(1,tstStr.length);
		if (!isnumeric(tstStr)&&trim(obj.value)!=''){
			obj.setAttribute('stopsubmit',true)
			alert(err_txt);
			allvalid = false;
			focus_control(obj);
		}else{
			obj.setAttribute('stopsubmit',false);
		}
		break;
	case 'submit':
		setTimeout("ck_valid("+obj.name+",'submitNgo','')",1);
		return false;
		break;

	case 'submitNgo':
		if (allvalid) obj.submit();
		break;
}
}

function ck_submit(obj){ return ck_valid(obj,'submit',''); }

function build_server_date(){

theDate= new Date(); 
var months = new Array('01','02','03','04','05','06','07','08','09','10','11','12'); 
var day = theDate.getDate(); 
var textdate = 0; 
if (theDate.getYear() < 2000) 
 textdate = 1900; 
 if(day<=9){
 	day = '' + '0' + day;
 }
 textdate = months[theDate.getMonth()] + '/' + day + '/' + (theDate.getYear() + textdate); 
return textdate;
}

function IsValidTime(timeStr) {
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.
var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
var matchArray = timeStr.match(timePat);
if (matchArray == null) { alert("Time is not in a valid format."); return false; }
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];
ampm = matchArray[6];

if (second=="") { second = null; }
if (ampm=="") { ampm = null }

if (hour < 0  || hour > 23) { alert("Hour must be between 1 and 12. (or 0 and 23 for military time)"); return false; }
if (hour <= 12 && ampm == null) {
    if (confirm("Please indicate which time format you are using.  OK = Standard Time, CANCEL = Military Time")) {
        alert("You must specify AM or PM.");
        return false;
    }
}

if (hour > 12 && ampm != null) { alert("You can't specify AM or PM for military time."); return false; }
if (minute<0 || minute > 59) { alert ("Minute must be between 0 and 59."); return false; }
if (second != null && (second < 0 || second > 59)) { alert ("Second must be between 0 and 59."); return false; }
return true;
}
