function doInitSaveFields(){
	var rval = true;

	rval = fnCheckDOB();
	if (rval){
	  rval = checkForm();
		
		if (!validateOnlineApplicationForm(getForm())) {
	  	rval = false;
	  }
	}
  return rval;
}  


function checkForm() {

  var formOk = false;
  var manualCheckOk = true;
  var frmObj = getForm();

  manualCheckOk = manualCheckOmissions();  
	
	frmObj.obj_pref1.value = '';
	frmObj.obj_pref2.value = '';
	frmObj.obj_pref3.value = '';
	frmObj.obj_pref4.value = '';
	frmObj.obj_pref5.value = '';
	
	var selected = 0;
	var prefArray = new Array(0,0,0,0,0);
	var numProg = frmObj.obj_prefInpCount.value;
	var prefValue = 0;
	for (i=0;i < numProg;++i){
	  prefValue = eval('frmObj.obj_prefInp' + i + '.value');
	  if (prefValue >= 1 && prefValue <=5){
	  	eval('frmObj.obj_pref' + prefValue).value = eval('frmObj.obj_prefInpId' + i + '.value');
	  	++selected;
	  	prefArray[parseInt(prefValue)-1] += 1;
	  }
	}
	
	var dontFind = false; 
	var notConsecutive = false;
	for (x in prefArray){
	  if (prefArray[x] == 0){
	    dontFind = true;
	  } else if ((prefArray[x] == 1) && (dontFind == true)){
	  	notConsecutive = true;
	  	break;
	  }
	}

	var haveDuplicates = false;
	for (x in prefArray){
	  if (prefArray[x] > 1){
	    haveDuplicates= true;
	  	break;
	  }
	}
	
	if (selected == 0){
	  alert("You have to select at least one preference numbered 1 to 5.");
	} else if (notConsecutive) {
	  alert("You must order your preferences from 1 to 5.");
	} else if (haveDuplicates) {
	  alert("You have set more than one Program with the same preference. This is not allowed.");
	} else {
	  formOk = manualCheckOk;
	}
  return formOk;
}

function setROPrefInp() {

  var frmObj = getForm();
	
	var numProg = frmObj.obj_prefInpCount.value;
	for (i=0;i < numProg;++i){
	  eval('frmObj.obj_prefInp' + i).readOnly = true;
	}
	
}

function manualCheckOmissions() {

  var manualCheckOk = true;
  var frmObj = getForm();
  var omissions = "";
  
  if (hasControlBeenSelected(frmObj.obj_studentCurrentYear) == false){
    manualCheckOk = false;
    omissions += "Current School Year is required.\n";
  }
  
  omissions += manualCheckAddressEmail();

	var carer2Title = frmObj.obj_carer2Title.options[frmObj.obj_carer2Title.selectedIndex].value;
	if ( (frmObj.obj_carer2Surname.value != "") ||
			 (frmObj.obj_carer2FirstName.value != "") || (carer2Title != "") ){
			 
    if(carer2Title == ""){ 
       omissions += "Carer 2 Title is required.\n";
    }
    if(frmObj.obj_carer2FirstName.value == ""){ 
       omissions += "Carer 2 First Name is required.\n";
    }
    if(frmObj.obj_carer2Surname.value == ""){ 
       omissions += "Carer 2 Surname is required.\n";
    }
	}
	
	if (omissions != ""){
    manualCheckOk = false;
		alert(omissions);		
	}
	
	return manualCheckOk;
}

function manualCheckAddressEmail(){

  var omissions = "";
  var adminLogon = isAdmin() || isDistrictAdmin() || isSchoolAdmin();
  var emailRequired = false;
  var postalRequired = true;
  var overseas = (get_radio_value(frmObj.obj_studentPresentLocation) == "OVERSEAS");

  if (overseas){
  	omissions += checkEmailAddr(true);
  } else if (adminLogon) {
  
    var emailOmmissions = "";
    emailOmmissions = checkEmailAddr(true);
    
    if(emailOmmissions != ""){
    	postalRequired = true;
    } else {
    	postalRequired = false;
    }
    
    omissions += checkPostal(postalRequired);
    
    if (omissions != ""){
      var tmptxt = "";
    	tmptxt = "Either the Carer's Email Address must be entered or the";
    	tmptxt += " full details for the Carer's Postal Address must be entered.\n";
    	omissions = tmptxt + omissions;
	  	omissions += emailOmmissions;
    }
    
    
  } else {
  	omissions += checkEmailAddr(true);
    omissions += checkPostal(postalRequired);
  }
  
	return omissions;
}

function checkEmailAddr(mandatory){
  var omissions = "";
  var missingFieldCnt = 0;
  
  if(frmObj.obj_carerEmailAddr.value == ""){
		++missingFieldCnt;
  	omissions += "Carer Email Address is required.\n";
	}
	if ((missingFieldCnt == 1) && (mandatory == false)){
		omissions = "";
	}
	
  return omissions;
}

function checkPostal(mandatory){

  var omissions = "";
  var missingFieldCnt = 0;

	if(frmObj.obj_carerHomeAddrLine1.value == ""){ 
		++missingFieldCnt;
	   omissions += "Carer Postal Address is required.\n";
	}
	if(frmObj.obj_carerHomeAddrLine2.value == ""){ 
		++missingFieldCnt;
	   omissions += "Carer Suburb/Town is required.\n";
	}
	if(frmObj.obj_carerHomeAddrState.value == ""){ 
		++missingFieldCnt;
	   omissions += "Carer State is required.\n";
	}
	if(frmObj.obj_carerHomeAddrPCode.value == ""){ 
		++missingFieldCnt;
	   omissions += "Carer PostCode is required.\n";
	}

	if ((missingFieldCnt == 4) && (mandatory == false)){
		omissions = "";
	}
	
	return omissions;
}
  