// ******************************
//	GENERIC: 
//		TEST EMAIL VALIDITY
//		TEST DATE FORMAT
// ******************************

function test_email(email_str){
	var testresult;
	var emailReg = "^[\\w-_\.]*[\\w-_\.]\@[\\w]\.+[\\w]+[\\w]$";
	var regex = new RegExp(emailReg);
	testresult = regex.test(email_str);	
	return testresult;
}

function test_date(date_str){
	var testresult;
	var dateformat = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/;
	testresult = dateformat.test(date_str);
	return testresult;
}

// ******************************
// VERIFY REGISTRATION 
// ******************************

function register_verify(){

//	initialize
	document.getElementById('form1').middlename.optional=true;
	document.getElementById('form1').honorific.optional=true;
	valid = true;
	es = '';
	

//	check for required fields

	for(j=0; j<document.getElementById("form1").length; j++){
		if	(
				(
				(document.getElementById("form1").elements[j].value == '')
				|| (document.getElementById("form1").elements[j] == null)
				)
			&&
				(document.getElementById("form1").elements[j].type != 'submit')
			&&
				(document.getElementById("form1").elements[j].type != 'radio')				
			&&
				(!document.getElementById("form1").elements[j].optional)
			){
			valid = false;
			}
			//alert('test1:'+document.getElementById("form1").elements[j].name+':'+valid);
	}
	
	if (!valid){
		es = es+"\nPlease fill in all required fields.\n";
	}
// now check for email validity	
	email_valid = test_email(document.getElementById("form1").email1.value);	
	if (!email_valid){
		valid=false;
		es = es+"\nInvalid email address.\n";
	}	
// 	check for matching password	

	if (document.getElementById("form1").password.value != document.getElementById("form1").verify_password.value){
		valid=false;
		es = es+"\nPassword does not match in both fields.\n";
	}
// check for valid password
	var re = new RegExp("^[a-zA-Z0-9]{6,12}$");
	if (!document.getElementById("form1").password.value.match(re)) {
		valid=false;
		es = es+"\nPassword invalid.\n";	
	}

//	show error and exit	

	if(!valid){
		alert(es);
	}	
	return valid;

}	

// ******************************
// DISABLE INPUT FIELDS FOR PRESELECTED MENTOR OR REFERENCE
// ******************************

function mproc(t){
thisid = document.getElementById(t).id;
prefix = thisid.substring(0,2);
	if (document.getElementById(t).value == '')
		doDisable = false;
	else
		doDisable = true;
	for(i=0; i<document.getElementById("uf").length; i++){
		if (
			(document.getElementById("uf").elements[i].name.substring(0,2) == prefix) 
			&&
			(document.getElementById("uf").elements[i].name != thisid)			
			)
		{
			if (doDisable)
				document.getElementById("uf").elements[i].disabled = true;
			else
				document.getElementById("uf").elements[i].disabled = false;
		}
	}
}

// **************************
// DATASHEET: SAME ADDRESS CHECKBOX THINGY
// *************************
function proc_same_add(){
	if(document.getElementById("form1").same_address.checked){
		document.getElementById("form1").address2_line1.value=document.getElementById("form1").address1_line1.value;
		document.getElementById("form1").address2_line2.value=document.getElementById("form1").address1_line2.value;
		document.getElementById("form1").address2_city.value=document.getElementById("form1").address1_city.value;
		document.getElementById("form1").address2_state_id.value=document.getElementById("form1").address1_state_id.value;
		document.getElementById("form1").address2_zip.value=document.getElementById("form1").address1_zip.value;	
	
		document.getElementById("form1").address2_line1.disabled=true;
		document.getElementById("form1").address2_line2.disabled=true;
		document.getElementById("form1").address2_city.disabled=true;
		document.getElementById("form1").address2_state_id.disabled=true;
		document.getElementById("form1").address2_zip.disabled=true;
	}
	else {
		document.getElementById("form1").address2_line1.value='';
		document.getElementById("form1").address2_line2.value='';
		document.getElementById("form1").address2_city.value='';
		document.getElementById("form1").address2_state_id.value='';
		document.getElementById("form1").address2_zip.value='';		
	
		document.getElementById("form1").address2_line1.disabled=false;
		document.getElementById("form1").address2_line2.disabled=false;
		document.getElementById("form1").address2_city.disabled=false;
		document.getElementById("form1").address2_state_id.disabled=false;
		document.getElementById("form1").address2_zip.disabled=false;	
	}
}

// ******************************
// VERIFY DATASHEET
// ******************************
function datasheet_verify(apptype){

//	initialize
	var us_citizen_optional=false;
	var officially_accepted_optional=false;
	var research_program_identified_optional=false;
	document.getElementById('form1').address1_line2.optional=true;
	document.getElementById('form1').same_address.optional=true;
	document.getElementById('form1').address2_line2.optional=true;
	document.getElementById('form1').work_phone.optional=true;
	document.getElementById('form1').mobile_phone.optional=true;
	document.getElementById('form1').gender.optional=true;
	document.getElementById('form1').birthday.optional=true;
	document.getElementById('form1').ethnicity_list.optional=true;
	document.getElementById('form1').ethnicity_other.optional=true;
	document.getElementById('form1').residency_id.optional=true;
	document.getElementById('form1').license2_state_id.optional=true;
	document.getElementById('form1').license3_state_id.optional=true;
	document.getElementById('form1').license4_state_id.optional=true;
	document.getElementById('form1').current_position.optional=true;
	document.getElementById('form1').anticipated_acceptance_date.optional=true;
	document.getElementById('form1').research_title.optional=true;
	document.getElementById('form1').prev_scholar.optional=true;
	document.getElementById('form1').first_scholar_year.optional=true;
	if (apptype == 'Fellow') {
		officially_accepted_optional=true;
		document.getElementById('form1').officially_accepted.optional=true;
	}
	if (!officially_accepted_optional){
		for (i=0;i<document.getElementById('form1').officially_accepted.length;i++){
			if (
				(document.getElementById('form1').officially_accepted[i].checked)
				&&
				(document.getElementById('form1').officially_accepted[i].value == 'N')	
				){
					document.getElementById('form1').anticipated_acceptance_date.optional=false;
			}
		}
	}
	
	//research_program_identified_optional=true;
	if ((apptype == 'MBA') || (apptype == 'Fellow')) {
		research_program_identified_optional=true;
		document.getElementById('form1').research_program_identified.optional=true;
	}
	if (!research_program_identified_optional){
		for (i=0;i<document.getElementById('form1').research_program_identified.length;i++){
			if (
				(document.getElementById('form1').research_program_identified[i].checked)
				&&
				(document.getElementById('form1').research_program_identified[i].value == 'Y')	
				){
					document.getElementById('form1').research_title.optional=false;
			}
		}
	}	
	valid = true;
	es = '';
	var etest;
	

//	check for required fields

	for(j=0; j<document.getElementById("form1").length; j++){
		if	(
				(
				(document.getElementById("form1").elements[j].value == '')
				|| (document.getElementById("form1").elements[j] == null)
				)
			&&
				(document.getElementById("form1").elements[j].type != 'submit')
			&&
				(document.getElementById("form1").elements[j].type != 'radio')				
			&&
				(!document.getElementById("form1").elements[j].optional)
			)
			
			valid = false;
			//alert('test1:'+document.getElementById("form1").elements[j].name+':'+valid);
	}
	
	if (
		(!us_citizen_optional)
		&&
		(!document.getElementById('form1').us_citizen[0].checked)
		&&
		(!document.getElementById('form1').us_citizen[1].checked)
		){
			valid = false;
	}	
	
	if (
		(!officially_accepted_optional)
		&&
		(!document.getElementById('form1').officially_accepted[0].checked)
		&&
		(!document.getElementById('form1').officially_accepted[1].checked)
		){
			valid = false;
	}
	
	
	if (
		(!research_program_identified_optional)
		&&
		(!document.getElementById('form1').research_program_identified[0].checked)
		&&
		(!document.getElementById('form1').research_program_identified[1].checked)
		){
			valid = false;
	}	
	
	if (
		(!document.getElementById('form1').us_citizen[0].checked)
		&&
		(!document.getElementById('form1').us_citizen[1].checked)
		){
			valid = false;
	}	
	
	if (!valid){
		es = es+"\nPlease fill in all required fields.\n";
	}
	
	// make sure start date is entered, if previous scholar is checked
	
	for(k=0; k<document.getElementById("form1").prev_scholar.length; k++){
		if((document.getElementById("form1").prev_scholar[k].value == "Y")
		&& (document.getElementById("form1").prev_scholar[k].checked)){
			if (document.getElementById("form1").first_scholar_year.value == ""){
				valid=false;
				es = es+"\nPlease enter your first year as a BAGNC Scholar.\n";
			}
		}
	}
	
	// validate date if entered
	
	if (document.getElementById('form1').birthday.value != ''){
		testdate = test_date(document.getElementById('form1').birthday.value);
		if (!testdate) {
			valid=false;
			es = es+"\nBirthday is not a valid date format.\n";	
		}
	}
	
	if (document.getElementById('form1').anticipated_acceptance_date.value != ''){
		testdate = test_date(document.getElementById('form1').anticipated_acceptance_date.value);
		if (!testdate) {
			valid=false;
			es = es+"\nAcceptance date is not a valid date format.\n";	
		}
	}	
	
	
	etest = test_email(document.getElementById('form1').login_email.value);	
	if (!etest){
		es = es+"\nInvalid login email address\n";
		valid = false;
	}		
	
	if (document.getElementById('form1').second_email.value != '') {
		etest = test_email(document.getElementById('form1').second_email.value);	
		if (!etest){
			es = es+"\nInvalid secondary email address\n";
			valid = false;
		}			
	}

	
//	show error and exit	
	if(!valid){
		alert(es);
	}	
	return valid;

}	

// ******************************
// VERIFY MENTORS LISTING: 
// 	NO DUPLICATE MENTORS
//		VALID EMAIL
// ******************************

function mentors_verify(){
	es = '';
	etest = true;
	valid = true;
	
	// check for duplicate mentors
	var m1_id = '';
	var m2_id = '';
	var m3_id = '';
	for(k=0;k<document.getElementById("uf").m1_a_mentor_id.length;k++){
		if (document.getElementById("uf").m1_a_mentor_id.options[k].selected){
			m1_id = document.getElementById("uf").m1_a_mentor_id.options[k].value;
		}
	}
	if (m1_id == '')
		m1_id = document.getElementById("uf").m1_mentor_id.value;
	
	for(k=0;k<document.getElementById("uf").m2_a_mentor_id.length;k++){
		if (document.getElementById("uf").m2_a_mentor_id.options[k].selected){
			m2_id = document.getElementById("uf").m2_a_mentor_id.options[k].value;
		}
	}
	if (m2_id == '')
		m2_id = document.getElementById("uf").m2_mentor_id.value;
			
	for(k=0;k<document.getElementById("uf").m3_a_mentor_id.length;k++){
		if (document.getElementById("uf").m3_a_mentor_id.options[k].selected){
			m3_id = document.getElementById("uf").m3_a_mentor_id.options[k].value;
		}
	}
	if (m3_id == '')
		m3_id = document.getElementById("uf").m3_mentor_id.value;
	
	var ra = new Array(m1_id,m2_id,m3_id);

	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
		//alert(i+':'+ra[i]+' '+j+':'+ra[j]+'..');
			if ( (i != j) && (ra[i] == ra[j]) && (ra[i] != 0)  && (i != j) ){
				valid = false;
			}
		}
	}
	if (!valid){
		es = es+'\nError: Cannot list the same mentor twice\n'
	}	
	
	// check for required fields
	if (
			(
			(document.getElementById("uf").m1_login_email.value == '')
			||
			(document.getElementById("uf").m1_first_name.value == '')
			||
			(document.getElementById("uf").m1_last_name.value == '')	
			)
		&&
		(document.getElementById("uf").m1_a_mentor_id.value == '')
		){
		valid = false;
		es = es + '\nError: Mentor first name, last name and email address are required\n';
	}	
	
	// check for valid email
	if (document.getElementById("uf").m1_login_email.value != ''){
		etest = test_email(document.getElementById("uf").m1_login_email.value);	
		if (!etest){
			es = es+"\nInvalid email address for Mentor 1\n";
			valid = false;
		}		
	}
	
	if (document.getElementById("uf").m2_login_email != null){
		if (document.getElementById("uf").m2_login_email.value != ''){
			etest = test_email(document.getElementById("uf").m2_login_email.value);	
			if (!etest){
				es = es+"\nInvalid email address for Mentor 2\n";
				valid = false;
			}		
		}	
	}
	
	if (document.getElementById("uf").m3_login_email != null){
		if (document.getElementById("uf").m3_login_email.value != ''){
			etest = test_email(document.getElementById("uf").m3_login_email.value);	
			if (!etest){
				es = es+"\nInvalid email address for Mentor 3\n";
				valid = false;
			}		
		}	
	}	
		
	
	if (!valid){
		alert(es);
	}
	return valid;
}

// ******************************
// VERIFY REFERENCES LISTING:
//		NO DUPLICATE REFERENCES
//		VALID EMAIL
// ******************************

function references_verify(){
	es = '';
	valid = true;
	
	// check for duplicate references
	var r1_id = '';
	var r2_id = '';
	var r3_id = '';
	for(k=0;k<document.getElementById("uf").r1_a_reference_id.length;k++){
		if (document.getElementById("uf").r1_a_reference_id.options[k].selected){
			r1_id = document.getElementById("uf").r1_a_reference_id.options[k].value;
		}
	}
	if (r1_id == '')
		r1_id = document.getElementById("uf").r1_reference_id.value;
	
	for(k=0;k<document.getElementById("uf").r2_a_reference_id.length;k++){
		if (document.getElementById("uf").r2_a_reference_id.options[k].selected){
			r2_id = document.getElementById("uf").r2_a_reference_id.options[k].value;
		}
	}	
	if (r2_id == '')
		r2_id = document.getElementById("uf").r2_reference_id.value;
			
	for(k=0;k<document.getElementById("uf").r3_a_reference_id.length;k++){
		if (document.getElementById("uf").r3_a_reference_id.options[k].selected){
			r3_id = document.getElementById("uf").r3_a_reference_id.options[k].value;
		}
	}		
	if (r3_id == '')
		r3_id = document.getElementById("uf").r3_reference_id.value;	
	
	var ra = new Array(r1_id,r2_id,r3_id);

	for(i=0;i<3;i++){
		for(j=0;j<3;j++){
		//alert(i+':'+ra[i]+' '+j+':'+ra[j]+'..');
			if ( (i != j) && (ra[i] == ra[j]) && (ra[i] != '') && (i != j) ){
				valid = false;
			}
		}
	}
	if (!valid){
		es = es+'\nError: Cannot list the same reference twice\n'
	}	
	
	// check for valid email
	
	if (document.getElementById("uf").r1_login_email.value != ''){
		etest = test_email(document.getElementById("uf").r1_login_email.value);	
		if (!etest){
			es = es+"\nInvalid email address for Reference 1\n";
			valid = false;
		}		
	}
	
	if (document.getElementById("uf").r2_login_email.value != ''){
		etest = test_email(document.getElementById("uf").r2_login_email.value);	
		if (!etest){
			es = es+"\nInvalid email address for Reference 2\n";
			valid = false;
		}		
	}	

	if (document.getElementById("uf").r3_login_email.value != ''){
		etest = test_email(document.getElementById("uf").r3_login_email.value);	
		if (!etest){
			es = es+"\nInvalid email address for Reference 3\n";
			valid = false;
		}		
	}	
		
	
	if (!valid){
		alert(es);
	}
	return valid;	
}

//************************
// VERIFY CHECKLIST 
//***********************
function checklist_verify(){
	valid = true;
	es = '';
	if(!document.getElementById("f").reference_waiver.checked){
		es = es+"\nYou must agree to waive your right to access the reference materials\n";
		valid = false;		
	}
	if(!document.getElementById("f").verification.checked){
		es = es+"\nYou must digitally sign this form by affirming that all the information is complete and accurate\n";
		valid = false;		
	}	
	if (!valid){
		alert(es);
	}
	return valid;		
}


//************************
// MISC
//***********************
function docwin(docid,docown){
	window.open('viewdoc.asp?docid='+docid+'&docown='+docown,'View Document','height=200,width=400,menu=yes,scrollbars=yes,resizable');
}

