		function refreshForm(itemChanged) {

			frm = document.ffForm;

			rc_cc_yn = getSelectVal(frm.rc_cc_yn);
			rc_cc_seeding_id = getSelectVal(frm.rc_cc_seeding_id);
			rc_ccrop_id = getSelectVal(frm.rc_ccrop_id);
			rc_pcrop_id = getSelectVal(frm.rc_pcrop_id);
			rc_ctill_id = getSelectVal(frm.rc_ctill_id);
			rc_seeding_id = getSelectVal(frm.rc_seeding_id);
			rc_till_time = getSelectVal(frm.rc_till_time);

			// Change cc_yn
			if (itemChanged == 'rc_cc_yn') {

				if (rc_cc_yn.length == 0 || rc_cc_yn == '0') {

					inactiveNotReq(frm.rc_cc_seeding_id,'rc_cc_seeding_id');
					arVFrm = remArEl(arVFrm,'rc_cc_seeding_id');
					arTemp = arCC0;
					
				} else {

					activeReq(frm.rc_cc_seeding_id,'rc_cc_seeding_id');
					arVFrm = addArEl(arVFrm,'rc_cc_seeding_id');
					arTemp = arCC1;
				
				}

				frmEl = frm.rc_ccrop_id;
				frmEl.options.length=0;

				frmEl[0] = new Option('Select one','');
				
				for (var i = 0; i < arTemp.length; i=i+1) {
					add_select_val(frmEl,arC[arTemp[i]],arTemp[i]);
				}

			// CURRENT CROP
			} else if (itemChanged == 'rc_ccrop_id') {

				if (rc_ccrop_id == '8') {
					activeReq(frm.rc_seeding_id,'rc_seeding_id');
					inactiveNotReq(frm.rc_cres_yn,'rc_cres_yn');

				} else if (rc_ccrop_id == '4' || rc_ccrop_id == '5') {
					activeReq(frm.rc_cres_yn,'rc_cres_yn');
					inactiveNotReq(frm.rc_seeding_id,'rc_seeding_id');
				} else {
					inactiveNotReq(frm.rc_seeding_id,'rc_seeding_id');
					inactiveNotReq(frm.rc_cres_yn,'rc_cres_yn');
				}

				// TILL TIME
				arPasture = new Array(10,11,12,13);
				arDc = new Array(15,16,17,18,19,20);
				if ( rc_ccrop_id.length > 0 && isInArray(arPasture,rc_ccrop_id)) {  // PASTURE
					inactiveNotReq(frm.rc_ctill_id,'rc_ctill_id');
					inactiveNotReq(frm.rc_manure_yn,'rc_manure_yn');
					arTemp = new Array('Spring','spring');
					popBoxAr(arTemp,frm.rc_till_time,'Select one',rc_till_time);
				// If this is a double crop, reset the till timing
				} else if ( rc_ccrop_id.length > 0 && isInArray(arDc,rc_ccrop_id) ) {  // DOUBLE CROP
					activeReq(frm.rc_ctill_id,'rc_ctill_id');
					activeReq(frm.rc_manure_yn,'rc_manure_yn');
					arTemp = new Array('Spring','spring');
					popBoxAr(arTemp,frm.rc_till_time,'Select one',rc_till_time);
				} else {
					activeReq(frm.rc_ctill_id,'rc_ctill_id');
					activeReq(frm.rc_manure_yn,'rc_manure_yn');
					activeReq(frm.rc_till_time,'rc_till_time');
					arTemp = new Array('Spring','spring','Fall','fall');
					popBoxAr(arTemp,frm.rc_till_time,'Select one',rc_till_time);
				}

				if (rc_ccrop_id == 9) {  // TOBACCO
					arTemp = new Array('Moldboard',1);
					popBoxAr(arTemp,frm.rc_ctill_id,'Select one',rc_ctill_id);
				} else {
					arTemp = new Array('Moldboard',1,'Reduced Till',2,'No-Till',3);
					popBoxAr(arTemp,frm.rc_ctill_id,'Select one',rc_ctill_id);
				}

				// Dynamically populate the previous crop based on the current crop input
				if (isArray('arPC' + rc_cc_yn + 'c' + rc_ccrop_id)) {
					enable(frm.rc_pcrop_id);
					
					frmEl = frm.rc_pcrop_id;
					frmEl.options.length=0;

					frmEl[0] = new Option('Select one','');
					
					arTemp = eval('arPC' + rc_cc_yn + 'c' + rc_ccrop_id);

					for (var i = 0; i < arTemp.length; i=i+1) {
						add_select_val(frmEl,arP[arTemp[i]],arTemp[i]);
					}
					showDiv('rc_pcrop_id_req');
					arVFrm = addArEl(arVFrm,'rc_pcrop_id');
				} else {
					inactiveNotReq(frm.rc_pcrop_id,'rc_pcrop_id');
				}



				// If cover crop has been selected
				if (rc_cc_yn == 1) {
					var pop_alert = 0;
					if (rc_ccrop_id == 1) {
						if (rc_cc_seeding_id.length > 0 && rc_cc_seeding_id != 1 && rc_cc_seeding_id != 4) { pop_alert = 1; }
						arTemp = new Array('No-Till',1,'Interseeded by 8/31',4);
					} else if (rc_ccrop_id == 2) {
						if (rc_cc_seeding_id.length > 0 && rc_cc_seeding_id != 1 && rc_cc_seeding_id != 3 && rc_cc_seeding_id != 4) { pop_alert = 1; }
						arTemp = new Array('No-Till',1,'Interseeded by 8/31',4,'Disking',3);
					} else if (rc_ccrop_id == 3) {
						if (rc_cc_seeding_id.length > 0 && rc_cc_seeding_id != 1 && rc_cc_seeding_id != 6 && rc_cc_seeding_id != 4) { pop_alert = 1; }
						arTemp = new Array('No-Till',1,'Reduced Till',6,'Interseeded by 8/31',4);
					} else if (rc_ccrop_id == 9) {
						if (rc_cc_seeding_id.length > 0 && rc_cc_seeding_id != 1 && rc_cc_seeding_id != 4 && rc_cc_seeding_id != 3) { pop_alert = 1; }
						arTemp = new Array('No-Till',1,'Interseeded by 8/31',4,'Disking',3);
					} else {
						arTemp = new Array('No-Till',1,'Reduced Till',6,'Interseeded by 8/31',4,'Interseeded',2,'Disking',3)
					}

					popBoxAr(arTemp,frm.rc_cc_seeding_id,'Select one',rc_cc_seeding_id);
					if (pop_alert == 1) { alert('Cover crop seeding options have changed.  Please select a new seeding type.'); }

					// If these are soybeans, enable the residue box
					if (rc_ccrop_id == 3) {
						activeReq(frm.rc_cres_yn,'rc_cres_yn');
					} else {
						inactiveNotReq(frm.rc_cres_yn,'rc_cres_yn');
					}
						
				}



			// Change previous crop
			} else if (itemChanged == 'rc_pcrop_id') {



				// Check for residue
				if (rc_pcrop_id == 9 || rc_pcrop_id == 10 || rc_pcrop_id == 24 || rc_pcrop_id == 23) {
					activeReq(frm.rc_pres_yn,'rc_pres_yn');
				} else {
					inactiveNotReq(frm.rc_pres_yn,'rc_pres_yn');
				}

				// Check for kill time
				if (rc_pcrop_id == 5 && rc_ctill_id == 3) {
					activeReq(frm.rc_pkill_id,'rc_pkill_id');
				} else {
					inactiveNotReq(frm.rc_pkill_id,'rc_pkill_id');
				}

				// Check to see if this is a no till selection
				arTemp = new Array(34,20,21,22,23,24,25,33,36);
				if (isInArray(arTemp,rc_pcrop_id)) {
					if (rc_ctill_id == 1 || rc_ctill_id == 2) {
						alert('If previous crop is no-till, the current crop tillage method must also be no-till.');
					}
					arTemp = new Array('No-Till',3);
					popBoxAr(arTemp,frm.rc_ctill_id,'Select one',3);
					
				} else {
					arTemp = new Array('Moldboard',1,'Reduced Till',2,'No-Till',3);
					popBoxAr(arTemp,frm.rc_ctill_id,'Select one',rc_ctill_id);
				}

			} else if (itemChanged == 'rc_seeding_id') {

				if (rc_ccrop_id == 8) {  // Alfalfa

					if (rc_seeding_id == 1 || rc_seeding_id == 2) {  // Spring seeding
						arTemp = new Array('Soybeans for Grain','6','Corn for Grain','17','Corn for Silage','18');
						popBoxAr(arTemp,frm.rc_pcrop_id,'Select one',rc_pcrop_id);
					} else if (rc_seeding_id == 3 || rc_seeding_id == 4) {  // Fall seeding
						arTemp = new Array('Soybeans for Grain','6','Corn for Grain','17','Oats for Grain','9','Barley, Rye or Winter Wheat for Grain','10');
						popBoxAr(arTemp,frm.rc_pcrop_id,'Select one',rc_pcrop_id);
					} else {  // Default 
						refreshForm('rc_ccrop_id');
					}

				} else { // Show standard options

					refreshForm('rc_ccrop_id');

				}



			}

			if (frm.det_nmp_yn.value == 1) document.getElementById('det_sd_ff_nmp_type_id_req').className = ''; else document.getElementById('det_sd_ff_nmp_type_id_req').className = 'h_status';
			if (frm.det_adj_stream_yn.value == 1) {
				document.getElementById('det_rbs_yn_req').className = '';
				document.getElementById('det_manstr_100_yn_req').className = '';
			} else {
				document.getElementById('det_rbs_yn_req').className = 'h_status';
				document.getElementById('det_manstr_100_yn_req').className = 'h_status';
			}

		}

		function validateForm(frm) {

			if (isInArray(arVFrm,'area')) {
				if (!frm.area.value.length) { alert('Enter the area of this field.'); frm.area.focus(); return false; }
			}
			if (isInArray(arVFrm,'slope_length')) {
				if (!(checkSel(frm.slope_length))) { alert('Select a slope length.'); frm.slope_length.focus(); return false; }
			}

			if (isInArray(arVFrm,'slope_angle')) {
				if (!checkSel(frm.slope_angle)) { alert('Select a slope steepness.'); frm.slope_angle.focus(); return false; }
			}

			if (isInArray(arVFrm,'rls_land_id')) {
				if (!checkSel(frm.rls_land_id)) { alert('Select a land type.'); frm.rs_land_id.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_cc_yn')) {
				if (!checkSel(frm.rc_cc_yn)) { alert('Select whether or not a cover crop will be used.'); frm.rc_cc_yn.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_cc_seeding_id')) { 
				if (!checkSel(frm.rc_cc_seeding_id)) { alert('Select a cover crop seeding type.'); frm.rc_cc_seeding_id.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_ccrop_id')) {
				if (!checkSel(frm.rc_ccrop_id)) { alert('Select a current crop type and use.'); frm.rc_ccrop_id.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_cres_yn')) {
				if (!checkSel(frm.rc_cres_yn)) { alert('Select whether or not residue left on field.'); frm.rc_cres_yn.focus(); return false; }
			}
			
			if (isInArray(arVFrm,'rc_ctill_id')) {
				if (!checkSel(frm.rc_ctill_id)) { alert('Select a current tillage type.'); frm.rc_ctill_id.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_till_time')) {
				if (!checkSel(frm.rc_till_time)) { alert('Select a tillage time.'); frm.rc_till_time.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_manure_yn')) {
				if (!checkSel(frm.rc_manure_yn)) { alert('Select whether or not manure will be applied.'); frm.rc_manure_yn.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_pcrop_id')) {
				if (!checkSel(frm.rc_pcrop_id)) { alert('Select a previous crop type and use.'); frm.rc_pcrop_id.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_pres_yn')) {
				if (!checkSel(frm.rc_pres_yn)) { alert('Select whether or not the previous crop residue was left on field.'); frm.rc_pres_yn.focus(); return false; }
			}

			if (isInArray(arVFrm,'rc_pkill_id')) {
				if (!checkSel(frm.rc_pkill_id)) { alert('Select a kill time.'); frm.rc_pkill_id.focus(); return false; }
			}

			for (i=0; i < frm.elements.length; i++) {
				reqDivName = frm.elements[i].name + '_req';
				if (document.getElementById(reqDivName)) 
					if (document.getElementById(reqDivName).className != "h_status") {
						if (frm.elements[i].value.length == 0) { alert('Complete all required fields'); frm.elements[i].focus(); return false; }
					}
			}

			return true;
			

		}

		function checkSel(frmEl) {
		
			if (!frmEl.options[frmEl.selectedIndex].value.length) {
				return false;
			} else {
				return true;
			}

		}

		function addArEl(arTemp, strTemp) {

			var arTemp2 = new Array;
			var j = 0;
			for (i=0; i < arTemp.length; i++) {
				if (arTemp[i] != strTemp) {
					arTemp2[j] = arTemp[i];
					j++;
				}
			}

			arTemp2[j] = strTemp;

			return arTemp2;
		}

		function remArEl(arTemp, strTemp) {

			var arTemp2 = new Array;
			var j = 0;
			for (i=0; i < arTemp.length; i++) {

				if (arTemp[i] != strTemp) {
					arTemp2[j] = arTemp[i];
					j++;
				}
			}

			return arTemp2;

		}

		function activeReq(frmEl,divName) {

			enable(frmEl);
			showDiv(divName+'_req');
			frmEl.options[0].text = 'Select one';
			frmEl.selectedIndex = 0;
			arVFrm = addArEl(arVFrm,divName);

		}

		function inactiveNotReq(frmEl,divName) {

			disable(frmEl);
			hideDiv(divName+'_req');
			frmEl.options[0].text = 'N/a';
			frmEl.selectedIndex = 0;
			arVFrm = remArEl(arVFrm,divName);

		}

		function getSelectVal(frmEl) {

			return frmEl.options[frmEl.selectedIndex].value;

		}
				
		function add_select_val(frmEl,name,value) {

			curOp = frmEl.options.length;
			frmEl[curOp] = new Option(name,value);

		}

		function showDiv(divName) {

			document.getElementById(divName).style.display = "block";
			document.getElementById(divName).style.visibility = "visible";

		}

		function showIt() {
			
			showDiv('it');

		}

		function hideDiv(divName) {

			document.getElementById(divName).style.display = "none";
			document.getElementById(divName).style.visibility = "hidden";

		}

		function isArray(x) {

			if (window[x]&&window[x] instanceof Array) {
				return true
			} else {
				return false
			}
		}

		function isInArray(arTemp,strTemp) {

			var inArray = false;

			for (i = 0; i < arTemp.length; i=i+1) {
				if (arTemp[i] == strTemp) {
					inArray = true;
				}

			}

			return inArray;

		}

		function enable(frmEl) {
			
			frmEl.disabled = false;

		}

		function disable(frmEl) {
			
			frmEl.disabled = true;

		}

		function popBoxAr(arTemp,frmEl,nullOption,defaultval) {

			frmEl.options.length=0;

			frmEl[0] = new Option(nullOption,'');
	
			var j = 1;
			for (var i = 0; i < arTemp.length - 1; i=i+2) {
				add_select_val(frmEl,arTemp[i],arTemp[i+1]);
				if (defaultval == arTemp[i+1]) {
					frmEl.options[j].selected = true;
				}
				j++;
			}

		}
