
//Validates for numeric value and displays message
function validateNumber(field, msg) {
	
	if (parseInt(field.value) != field.value) {
		alert(msg);
		field.focus();
		field.select();
		return false;
	}
	return true;
}

// Rounds number to X decimal places, defaults to 2
function round(number,X) {
    X = (!X ? 0 : X);
    return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}



//******************************************************************************************
//If the funding agency is NIH, then the project title can not be greater than 56 characters
//******************************************************************************************
function checkMaxLength (textarea, evt, maxLength) {  
	var_form = document.forms['form_general_info'];
	
	if (var_form.sponsor_id_direct.value == '000136') {	 
		
		if (textarea.value.length == 56) {
			alert('NIH requires a project title of 56 characters or less');
		}
		
		 var allowKey = false;
		  var keyCode = document.layers ? evt.which : evt.keyCode;
			if (keyCode < 32 && keyCode != 13)			  
			  allowKey = true;
			else  			  
			  allowKey = textarea.value.length < maxLength;  
		  textarea.selected = false;
		  return allowKey;
	}
}

//******************************************************************************************





//***********************************************************************
//Validation for General Info Form
//***********************************************************************
function form_general_info_submit() {
//***********************************************************************
	var_form = document.forms['form_general_info'];
	if (var_form.owner_fname.value == '') {
		alert("Please Enter Your First & Last Name");		
		return;
		}
	if (var_form.owner_lname.value == '') {
		alert("Please Enter Your First & Last Name");		
		return;
		}
	if (var_form.contact_fname.value == '') {
		alert("Please Enter the Contact Person's First & Last Name");		
		return;
		}
	if (var_form.contact_lname.value == '') {
		alert("Please Enter the Contact Person's First & Last Name");		
		return;
		}
	if (var_form.contact_phone.value == '') {
		alert("Please Enter the Contact Person's Phone Number");		
		return;
		}
	if (var_form.contact_email.value == '') {
		alert("Please Enter the Contact Person's Email Address");		
		return;
		}
	if (var_form.direct_sponsor_name.value == '') {
		alert("Please Enter a Funding Agency");		
		return;
		}
	if (var_form.ipf_type_id.value == '') {
		alert("Please Specify the IPF Type");		
		return;
		}
	if (var_form.esnap[0].checked & var_form.ipf_type_id.value != 6) {  
		alert('eSNAP proposals must be Non-Competing Continuations.  Please select Non-Competing Continuation as the IPF Type');
		return;
	}
	if (var_form.esnap[0].checked & var_form.clinical_trials[0].checked) {  
		alert('eSNAP proposals cannot be clinical trials');
		return;
	}
	if (var_form.prev_unc_acct_num.value != ''){
		if (!validateNumber(var_form.prev_unc_acct_num, 'Please enter valid 6 digit previous UNC account number, without the hyphen')) {
		return;
		}
		if (Math.round(var_form.prev_unc_acct_num.value) < 100000 || Math.round(var_form.prev_unc_acct_num.value) > 999999) {
			alert('Please enter valid 6 digit previous UNC account number, without the hyphen');
			return;
		}
	}
	
	var_form.submit();
	return;
}
//***********************************************************************











//***********************************************************************
//Validation for Funding Agency Form
//***********************************************************************
function form_funding_agency_submit() {
//***********************************************************************
	var_form = document.forms['form_funding_agency'];
	if (var_form.sponsor_name.value == '') {
		alert("Please enter a sponsor");		
		return;
		}
	if (var_form.fund_role_id.value == '') {
		alert("Please select the funding role");		
		return;
		}
	var_form.submit();
}
//***********************************************************************










//***********************************************************************
//Validation for Budget Form
//***********************************************************************
function form_budget_submit() {
//***********************************************************************
	budget_init_calc_tot();
	budget_tot_calc_tot();
	
	var_form = document.forms['form_budget'];
	if (var_form.tot_tot_amt.value == '') {
		alert("Please enter a total request amount");		
		return;
		}		
	if (var_form.init_begin_date.value == '') {
		alert("Please enter a begin date for the initial period");		
		return;
		}
	if (var_form.tot_begin_date.value == '') {
		alert("Please enter a begin date for the total period");		
		return;
		}		
	//Convert begin and end date values to numeric value to compare
	var var_init_begin_date = new Date(var_form.init_begin_date.value.substring(6,10),
    	var_form.init_begin_date.value.substring(0,2)-1,
        var_form.init_begin_date.value.substring(3,5));
	
	var var_init_end_date = new Date(var_form.init_end_date.value.substring(6,10),
    	var_form.init_end_date.value.substring(0,2)-1,
        var_form.init_end_date.value.substring(3,5));
	var init_difference = var_init_end_date.getTime() - var_init_begin_date.getTime();
	
	var var_tot_begin_date = new Date(var_form.tot_begin_date.value.substring(6,10),
    	var_form.tot_begin_date.value.substring(0,2)-1,
        var_form.tot_begin_date.value.substring(3,5));
	
	var var_tot_end_date = new Date(var_form.tot_end_date.value.substring(6,10),
    	var_form.tot_end_date.value.substring(0,2)-1,
        var_form.tot_end_date.value.substring(3,5));
	var tot_difference = var_tot_end_date.getTime() - var_tot_begin_date.getTime();
	
	if (Math.round(init_difference) < Math.round(1)) {
		alert('The initial end date must occur after the initial begin date');
		return;
		}
	if (Math.round(tot_difference) < Math.round(1)) {
		alert('The total period end date must occur after the total period begin date');
		return;
		}

	if (Math.round(var_form.init_base_amt.value) > Math.round(var_form.init_direct_amt.value)) {
		alert('The initial direct costs must be greater than or equal to the F&A base');
		return;
		}
	if (Math.round(var_form.tot_base_amt.value) > Math.round(var_form.tot_direct_amt.value)) {
		alert('The total direct costs must be greater than or equal to the F&A base');
		return;
		}
	if (Math.round(var_form.init_tot_amt.value) > Math.round(var_form.tot_tot_amt.value)) {
		alert('The total funds requested must be greater than or equal to the initial funds requested');
		return;
		}
		
	if (var_form.mandatory.checked) {
		if (var_form.mand_fa.checked || var_form.mand_inkind.checked || var_form.mand_matching.checked || var_form.mand_salary_cap.checked || var_form.mand_other.value != '') {
			//nothing
		} else {
			alert('Please check all that apply for mandatory cost sharing');
			return;
		}
	}
	
	if (var_form.voluntary.checked) {
		if (var_form.vol_fa.checked || var_form.vol_inkind.checked || var_form.vol_matching.checked || var_form.vol_salary_cap.checked || var_form.vol_other.value != '') {
			//nothing
		} else {
			alert('Please check all that apply for voluntary cost sharing');
			return;
		}
	}
	var_form.submit();
}
//***********************************************************************









//***********************************************************************
//Validation for PI Form
//***********************************************************************
function form_pi_submit() {
//***********************************************************************
	var_form = document.forms['form_pi'];
	if (var_form.pi_fname.value == '') {
		alert("Please Enter The Investigator's First and Last Name");		
		return;
		}
	if (var_form.pi_lname.value == '') {
		alert("Please Enter The Investigator's First and Last Name");		
		return;
		}
	if (var_form.pi_phone.value == '') {
		alert("Please Enter The Investigator's Phone Number");		
		return;
		}
	if (var_form.pi_email.value == '') {
		alert("Please Enter The Investigator's Email Address");		
		return;
		}
	if (var_form.pi_dept_name.value == '') {
		alert("Please Enter The Investigator's Department");		
		return;
		}
	if (var_form.pi_role_id.value == '') {
		alert("Please select the investigator's role");		
		return;
		}
	if (var_form.pi_fname.value == 'Dept/School Signature' & var_form.pi_role_id.value != '7') {
		alert('You must select Dept/School Signature for Role when the investigators department or school is the only signature required');
		return;
	}
	
	var_form.submit();
}
//***********************************************************************











//***********************************************************************
//Notifies user the Conflict of Interest Forms should be filed
//***********************************************************************
function form_conf_interest_no() {
//***********************************************************************
	var_form = document.forms['form_conf_interest'];
	var_form.filed_forms[1].checked =  true
	alert("The processing of this proposal could be delayed if all EPA employees do not file Conflict of Interest forms");		
	return;
}
//***********************************************************************












//***********************************************************************
//Validation for Conflict of Interest Form
//***********************************************************************
function form_conf_interest_submit() {
//***********************************************************************
	var_form = document.forms['form_conf_interest'];
	if (var_form.filed_forms[0].checked || var_form.filed_forms[1].checked) {
		//nothing
	} else {
		alert("Please specify whether or not Conflict of Interest forms have been filed");	
		return;
	}
	if (var_form.pot_conflict[0].checked || var_form.pot_conflict[1].checked) {
		//nothing
	} else {
		alert("Please specify whether or not you pontential conflicts of interest");	
		return;
	}	
	
	var_form.submit();	
	return;
}
//***********************************************************************













//***********************************************************************
//Validation for Research Subject Form
//***********************************************************************
function form_research_sub_submit() {
//***********************************************************************
	
	if (!check_research_subject_date()) {
		return;
	}
	
	var_form = document.forms['form_research_sub'];
	if (var_form.human_status.value == ''){
		var_form.human_subjects.value = '0';
	} else {
		var_form.human_subjects.value = '1';
	}
	if (var_form.animal_status.value == ''){
		var_form.animal_subjects.value = '0';
	} else {
		var_form.animal_subjects.value = '1';
	}
	var_form.submit();	
	return;
}
//***********************************************************************

//***********************************************************************
function human_subject_no() {
//***********************************************************************
	
	var_form = document.forms['form_research_sub'];
	var_form.human_subjects[1].checked;
	var_form.human_protocol_number.value = '';
	var_form.human_status.value = '';
	var_form.human_date.value = '';
	return;
}
//***********************************************************************

//***********************************************************************
function animal_subject_no() {
//***********************************************************************
	
	var_form = document.forms['form_research_sub'];
	var_form.animal_subjects[1].checked;
	var_form.animal_protocol_number.value = '';
	var_form.animal_status.value = '';
	var_form.animal_date.value = '';
	return;
}
//***********************************************************************




//***********************************************************************
//Validation for Budget Form
//***********************************************************************
function form_subcon_submit() {
//***********************************************************************
	var_form = document.forms['form_subcon'];
	if (var_form.sub_name.value == '') {
		alert("Please enter the name of the subcontractor");		
		return;
		}	
	var_form.submit();
}
//***********************************************************************









//***********************************************************************
//Validation for Budget Form
//***********************************************************************
function form_personnel_submit() {
//***********************************************************************
	var_form = document.getElementById('form_personnel');
	if (var_form.add_personnel.checked || var_form.add_space.checked || var_form.add_equip.checked) { 
		if (var_form.prov_by_funds[0].checked || var_form.prov_by_funds[1].checked) {
			//nothing	
		} else {
			alert("Please answer all questions within the Personnel/Space section");		
			return;
		}	
	}
	
	
	if (var_form.add_equip.checked) { 
		if (var_form.equip_not_avail[0].checked || var_form.equip_not_avail[1].checked) {
			//nothing	
		} else {
			alert("Please answer all questions within the Personnel/Space section");		
			return;
		}	
	}		
		
	
	if (var_form.classified[0].checked || var_form.classified[1].checked) {
		//nothing
	} else {
		alert("Please answer all questions within the Classified section");		
		return;
	}	

	var_form.submit();
	return;

}
//***********************************************************************




//***********************************************************************
//Validation for Export Control Form
//***********************************************************************
function form_export_submit() {
//***********************************************************************
	var_form = document.forms['form_export_control'];
	
	if (var_form.restrictions[0].checked || var_form.restrictions[1].checked) {
		//nothing		
	} else {
		alert("Please answer all export control questions before proceeding");		
		return;
	}
	
	
	if (var_form.foreign_nationals[0].checked || var_form.foreign_nationals[1].checked) {
		//nothing		
	} else {
		alert("Please answer all export control questions before proceeding");		
		return;
	}		
	
	if (var_form.travel_outside_us[0].checked || var_form.travel_outside_us[1].checked) {
		//nothing		
	} else {
		alert("Please answer all export control questions before proceeding");		
		return;
	}
	
	if (var_form.travel_outside_us[0].checked && var_form.outside_countries.value == '') {
			alert('Please list all countries that will be to as part of this proposal');
			return;
	}
	
	if (var_form.export_tech[0].checked || var_form.export_tech[1].checked) {
		//nothing		
	} else {
		alert("Please answer all export control questions before proceeding");		
		return;
	}
	
	var_form.submit();
	return;
}
//***********************************************************************









//***********************************************************************
//Validation for Abstract Form
//***********************************************************************
function form_abstract_submit() {
//***********************************************************************
	var var_form = document.forms['form_abstract'];

	/*if (var_form.abstract.value == '') {
		alert("Please enter an abstract for this proposal");	
		return;
		}
	*/
	
	if (var_form.include_in_rad[0].checked || var_form.include_in_rad[1].checked) {
		var_form.submit();	
		return;
		}
	
	alert("Please specify whether or not you give permission to include this abstract in RAD");		
	return;
}
//***********************************************************************











//***********************************************************************
//Validation for Intellectual Property Form
//***********************************************************************
function form_intel_property_submit() {
//***********************************************************************
	var_form = document.forms['form_intel_property'];
	if (var_form.filed_patents[0].checked || var_form.filed_patents[1].checked) {
		//nothing
	} else{
		alert("Please answer all questions before proceeding");		
		return;
	}
	
	if (var_form.issued_patents[0].checked || var_form.issued_patents[1].checked) {
		//nothing
	} else{
		alert("Please answer all questions before proceeding");		
		return;
	}
	
	if (var_form.disclosed[0].checked || var_form.disclosed[1].checked) {
		//nothing
	} else{
		alert("Please answer all questions before proceeding");		
		return;
	}
	var_form.submit();	
}
//***********************************************************************












//***********************************************************************
//Calculates Indirect Cost Amount for Intitial Budget
//***********************************************************************
function budget_init_calc_base() {
//***********************************************************************
	var var_form = document.forms['form_budget'];
	var var_equip = document.getElementById('init_equip_amt');
	var var_subcon = document.getElementById('init_subcon_amt');
	var var_tuition = document.getElementById('init_tuition_amt');
	if (!validateNumber(var_equip, 'Please enter valid equipment amount. Do not use commas')) {
		return;
	}
	if (!validateNumber(var_subcon, 'Please enter valid subcontractor amount. Do not use commas')) {
		return;
	}
	if (!validateNumber(var_tuition, 'Please enter valid tuition amount. Do not use commas')) {
		return;
	}
	
	var_form.init_indirect_amt.value = round(var_equip.value) + round(var_subcon.value) + round(var_tuition.value);
	return;	
}
//***********************************************************************











//***********************************************************************
//Calculates F&A Amount for Intitial Budget when the rate is changed
//***********************************************************************
function budget_init_calc_fa() {
//***********************************************************************
	var_form = document.forms['form_budget']
	var_base = document.getElementById('init_base_amt')
	var_fa_rate = document.getElementById('init_fa_rate')
	if (!validateNumber(var_base, 'Please enter valid base amount. Do not use commas')) {
		return
	}
	
	if (var_base.value != '') {		
		var_form.init_fa_amt.value = round(var_base.value * var_fa_rate.value / 100) ;
		return;	
		}
}
//***********************************************************************










//***********************************************************************
//Calculates F&A Amount for Intitial Budget when the rate is changed
//***********************************************************************
function budget_init_calc_tot() {
//***********************************************************************
	//budget_init_calc_indirect();
	budget_init_calc_fa();
	
	var_form = document.forms['form_budget']
	var_direct = document.getElementById('init_direct_amt')
	//var_indirect = document.getElementById('init_indirect_amt')
	var_fa_amt = document.getElementById('init_fa_amt')
	if (!validateNumber(var_direct, 'Please enter valid direct amount. Do not use commas')) {
		return;
	}
	if (!validateNumber(var_fa_amt, 'Please enter valid F&A Amount. Do not use commas')) {
		return;
	}
	//if (!validateNumber(var_indirect, 'Please enter valid indirect amount. Do not use commas')) {
		//return;
	//}
	
	if (var_direct.value != '') {
		var_form.init_tot_amt.value = round(var_direct.value) + round(var_fa_amt.value);
		return;	
		}
}
//***********************************************************************













//***********************************************************************
//Calculates Indirect Cost Amount for Total Budget
//***********************************************************************
function budget_tot_calc_base() {
//***********************************************************************
	var var_form = document.forms['form_budget'];
	var var_equip = document.getElementById('tot_equip_amt');
	var var_subcon = document.getElementById('tot_subcon_amt');
	var var_tuition = document.getElementById('tot_tuition_amt');
	if (!validateNumber(var_equip, 'Please enter valid equipment amount. Do not use commas')) {
		return;
	}
	if (!validateNumber(var_subcon, 'Please enter valid subcontractor amount. Do not use commas')) {
		return;
	}
	if (!validateNumber(var_tuition, 'Please enter valid tuition amount. Do not use commas')) {
		return;
	}
	
	var_form.tot_indirect_amt.value = round(var_equip.value) + round(var_subcon.value) + round(var_tuition.value);
	return;	
}
//***********************************************************************











//***********************************************************************
//Calculates F&A Amount for Total Budget when the rate is changed
//***********************************************************************
function budget_tot_calc_fa() {
//***********************************************************************
	var_form = document.forms['form_budget']
	var_base = document.getElementById('tot_base_amt')
	var_fa_rate = document.getElementById('tot_fa_rate')
	if (!validateNumber(var_base, 'Please enter valid base amount. Do not use commas')) {
		return;
	}
	
	if (var_base.value != '') {		
		var_form.tot_fa_amt.value = round(var_base.value * var_fa_rate.value / 100);
		return;
		} 
}
//***********************************************************************













//***********************************************************************
//Calculates F&A Amount for Intitial Budget when the rate is changed
//***********************************************************************
function budget_tot_calc_tot() {
//***********************************************************************
	//budget_tot_calc_indirect();
	budget_tot_calc_fa();
	
	var_form = document.forms['form_budget']
	var_direct = document.getElementById('tot_direct_amt')
	//var_indirect = document.getElementById('tot_indirect_amt')
	var_fa_amt = document.getElementById('tot_fa_amt')
	if (!validateNumber(var_direct, 'Please enter valid direct amount. Do not use commas')) {
		return;
	}
	if (!validateNumber(var_fa_amt, 'Please enter valid F&A Amount. Do not use commas')) {
		return;
	}
	//if (!validateNumber(var_indirect, 'Please enter valid indirect amount. Do not use commas')) {
		//return;
	//}
	
	if (var_direct.value != '') {
		var_form.tot_tot_amt.value = round(var_direct.value) + round(var_fa_amt.value);
		return;	
		}
}
//***********************************************************************************














//***********************************************************************************
//Sets Cost sharing boxes to unchecked when the share_match radio is selecteds as No
//***********************************************************************************
function budget_set_matching_boxes() {
//***********************************************************************************
	var_form = document.forms['form_budget']	
	if (var_form.share_match[1].checked = true) {
		var_form.mandatory.checked = false;
		var_form.mand_fa.checked = false;
		var_form.mand_inkind.checked = false;
		var_form.mand_matching.checked = false;
		var_form.mand_salary_cap.checked = false;
		var_form.mand_other.value = '';
		
		var_form.voluntary.checked = false;
		var_form.vol_fa.checked = false;
		var_form.vol_inkind.checked = false;
		var_form.vol_matching.checked = false;
		var_form.vol_salary_cap.checked = false;
		var_form.vol_other.value = '';
		return;
		}
}
//***********************************************************************





//***********************************************************************
//Sets share_match radio to Yes when a type is chosen
//***********************************************************************
function budget_set_share_mandatory() {
//***********************************************************************
	var_form = document.forms['form_budget']	
	var_form.mandatory.checked = true;
	return;

}
//***********************************************************************


//***********************************************************************
//Sets share_match radio to Yes when a type is chosen
//***********************************************************************
function budget_set_share_voluntary() {
//***********************************************************************
	var_form = document.forms['form_budget']	
	var_form.voluntary.checked = true;
	return;

}
//***********************************************************************




//***********************************************************************
//Sets share_match radio to Yes when a type is chosen
//***********************************************************************
function budget_set_share_match() {
//***********************************************************************
	var_form = document.forms['form_budget']	
	var_form.share_match[0].checked = true;
	return;

}
//***********************************************************************













//*******************************************************************************************
//Sets the visibility to visible for date input if Human research subjects have been approved
//*******************************************************************************************
function human_approved_check() {
//*******************************************************************************************
	var_form = document.forms['form_research_sub']	
	if (var_form.human_status.value == 'A') {
		document.getElementById('human_approved').style.visibility='visible';
	} else{
		document.getElementById('human_approved').style.visibility='hidden';
	}
	return;
}
//********************************************************************************************












//********************************************************************************************
//Sets the visibility to visible for date input if Animal research subjects have been approved
//********************************************************************************************
function animal_approved_check() {
//********************************************************************************************
	var_form = document.forms['form_research_sub']	
	if (var_form.animal_status.value == 'A') {
		document.getElementById('animal_approved').style.visibility='visible';
	} else{
		document.getElementById('animal_approved').style.visibility='hidden';
	}
	return;
}
//********************************************************************************************











//***************************************************************************************************************************
//Checks to see if date approved for research subjects is within a year of the date the project begins (Budget -> Begin Date)
//***************************************************************************************************************************
function check_research_subject_date() {
//***************************************************************************************************************************
	var var_form = document.forms['form_research_sub']		
	var var_year = var_form.init_end_year.value;
	var var_month = var_form.init_end_month.value;
	var var_day = var_form.init_end_day.value;
	var var_end_date = new Date(var_year, var_month, var_day);	
	
	//Human Subject Approval Date Check
	if (var_form.human_status.value == 'A') {
		var var_human_date = new Date(var_form.human_date.value.substring(6,10),
                            var_form.human_date.value.substring(0,2)-1,
                            var_form.human_date.value.substring(3,5));
		var human_difference = var_end_date.getTime() - var_human_date.getTime();
    	var human_difference_days = human_difference/1000/60/60/24 - 31;
		if (var_human_date > var_end_date){
			alert("The approved date for human research subjects cannot be greater than the initial period end date entered in budget section");
			return false;
			}
		if (human_difference_days > 365) {
			alert("Human research subject approval cannot exceed one year from the end of the initial project period. Please obtain a new approval date or change the initial period end date in the budget section");
			return false;
			}		
		}
	
	//Animal Subject Approval Date Check
	if (var_form.animal_status.value == 'A') {
		var var_animal_date = new Date(var_form.animal_date.value.substring(6,10),
                            var_form.animal_date.value.substring(0,2)-1,
                            var_form.animal_date.value.substring(3,5));
		var animal_difference = var_end_date.getTime() - var_animal_date.getTime();
    	var animal_difference_days = animal_difference/1000/60/60/24 - 31;
		if (var_animal_date > var_end_date){
			alert("The approved date for animal research subjects cannot be greater than the initial period end date entered in budget section");
			return false;
			}
		if (animal_difference_days > 365) {
			alert("Animal research subject approval cannot exceed one year from the end of the initial project period. Please obtain a new approval date or change the initial period end date in the budget section");
			return false;
			}		
		}
	return true;
}
//***************************************************************************************************************************
