function isDefined(variable)
{
	return (!(!( variable||false )))
}


function showAndHideDivs( showDivName, hideDivName ) {
    showDiv = document.getElementById( showDivName );
    hideDiv = document.getElementById( hideDivName );
	showDiv.style.display = "block";
	hideDiv.style.display = "none";
	
	return false;
}
function toggleShow( divName, linkObj, showLabel, hideLabel ) {
    div = document.getElementById( divName );
	if( div.style.display == "block" || div.style.display == "" ) {
		div.style.display = "none";
		linkObj.innerHTML = showLabel;
	} else {
		div.style.display = "block";
		linkObj.innerHTML = hideLabel;
	}
	return false;
}
function showContent( divName, inputId ) {
	// groupingContentShow vs. groupingContent

    div = document.getElementById( divName );
    inputField = document.getElementById( inputId );
	if( div.style.display == "block" || div.style.display == "" ) {
		div.style.display = "none";
		inputField.value = "none";

//		// for printing
//		div.setAttribute( "class", "" ); // firefox
//		div.setAttribute( "className", "" ); // ie
	} else {
		div.style.display = "block";
		inputField.value = "block";
	}
	return false;
}

function dynamicAddSelect( selectName ) {
	selectObj = document.getElementById( selectName );
	divIcon = document.getElementById( selectName + "Icon" );
	
	val = prompt( "Enter a new value: ", "" );
	if( !val ) {
		return false;
	}
	var anOption = new Option;
	selectObj.options.add( anOption );
	anOption.text = val;
	anOption.value = val;
	anOption.selected = true;
	
	// we fire the onchange() method in case there is any special processing for this select box...
	selectObj.onchange();
	//divIcon.innerHTML = "<img src='/web/images/green-checkmark.gif'/>";
}
function dynamicAddChoice( checkboxName, checkboxDivName ) {
	cboxes = document.getElementById( checkboxDivName );

	val = prompt( "Enter a new value: ", "" );
	if( !val ) {
		return false;
	}
	
	newBox = '<label><input type="checkbox" name="' + checkboxName + '[' + val + ']" '
		   + 'onKeyDown="return blockEnter(this, event);"> ' + val + '</label>';
	cboxes.innerHTML += newBox;
}
function updateLength( textareaObj, len ) {
	content = document.getElementById( textareaObj.name + "Length" );
	contentLen = 0;
	if( isDefined( textareaObj.value ) ) {
		contentLen = textareaObj.value.length;
	}
	content.innerHTML = contentLen + " chars ";
	if( !isNaN( len ) && len > 0 ) {
		content.innerHTML += " (max of "+len+")";
	} else {
		content.innerHTML += " (no maximum)";
	}
}
/*
	Function to stop ENTER key from submitting form.
	Also forwards focus to the next field in the tab index.
*/
function blockEnter(field, evt) {
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode :
        ((evt.which) ? evt.which : evt.keyCode);
    if (charCode == 13) {
		// change focus to next text field
		nextField = field;
		nextIndex = 9999999999;
		for (var i=0; i < field.form.elements.length; i++) {
			otherField = field.form.elements[i];
			if( otherField.tabIndex > field.tabIndex && otherField.tabIndex < nextIndex ) {
				nextField = otherField;
				nextIndex = nextField.tabIndex;
			}
		}
		nextField.focus();
        return false;
    } else {
        return true;
    }
}
/*
	Function to change an input field's style to be errorField
*/
function synchDateMYFields( monthFieldName, yearFieldName, toFieldName ) {
	var monthField = document.getElementById( monthFieldName );
	var yearField = document.getElementById( yearFieldName );
	var toField = document.getElementById( toFieldName );

	if( yearField.value.length > 0 ) {
		var year = parseInt( yearField.value);
		if( year < 100 ) {
			yearField.value = year + 1900;
		}
	}

	if( monthField.value.length > 0 ) {
		toField.value = monthField.value + "/" + yearField.value;
	} else {
		toField.value = yearField.value;
	}
}
function synchDateFields( fromField, toFieldName ) {
	var toField = document.getElementById( toFieldName );

	if( fromField.value.length == 0 ) {
		// setthe helper to blank and skip if completely blank
		toField.value = "";
		return;
	}
	// from format: m/d/yy
	// to format:   YYYY-MM-DD
	if( fromField.value.length == 0 ) {
		toField.value = "";
	}
	var splitList = fromField.value.split( '/' );
	var ndate = new Date();
	var month = "" + ( ndate.getMonth() + 1 ); // month counts from zero
	var day =  "" + ndate.getDate(); // day of month doesn't need adjusting
	if( ndate.getYear() < 2000 ) {
		var year =  "" + ( ndate.getYear() + 1900 ); // year counts from 0 = 1900
	} else {
		var year = ndate.getYear();
	}
	if( splitList.length == 3 ) {
		month = splitList[0];
		day = splitList[1];
		year = splitList[2];
	} 
	if( splitList.length == 2 ) {
		// assume we got a month/day
		month = splitList[0];
		day = splitList[1];
	}
	if( splitList.length == 1 && splitList[0].length > 0 ) {
		// assume we got the day of the month
		day = splitList[0];
	}
	if( year.length == 0 ) { 
		if( ndate.getYear() < 2000 ) {
			year = ndate.getYear() + 1900; 
		} else {
			year = ndate.getYear();
		}
	}
	if( month.length == 0 ) { month = ndate.getMonth() + 1; }
	if( day.length == 0 ) { day = ndate.getDate(); }
	if( year.length == 2 && year < 50 ) { year = "20"+year; }
	if( year.length == 2 && year >= 50 ) { year = "19"+year; }
	if( month.length == 1 ) { month = "0" + month; }
	if( day.length == 1 ) { day = "0" + day; }
	
	fromField.value = month + "/" + day + "/" + year;
	toField.value = year + "-" + month + "-" + day;
}
function markError( inputField ) {
	//inputField = document.getElementById( "int_field" );
	//inputField.style.backgroundColor = "#ccc";
	inputField.setAttribute( "class", "errorField" );
	inputField.setAttribute( "className", "errorField" );
}
function clearError( inputField ) {
	inputField.setAttribute( "class", "" );
	inputField.setAttribute( "className", "" );
}
function niceName( fieldName ) {
	var name = fieldName.replace( /_/g, " " );
	name = name.replace( /helper/, "" );
	name = name.replace( /\d+/, "" );
	
	return name;
}
function validateNumber( inputField ) {
	if( isNaN( inputField.value ) ) {
		markError( inputField );
		return "   - " + niceName( inputField.name ) + " needs to be a number.\n";
	} else {
		clearError( inputField );
		return "";
	}
}
function validateString( inputField, maxLength ) {
//	debug = document.getElementById("showing_feedback");
//	debug.innerHTML += "\n"+inputField+" ("+maxLength+")";
	
	if( inputField.value.length > maxLength ) {
		markError( inputField );
		return "   - " + niceName( inputField.name ) + " cannot be longer than "+maxLength+" characters.\n";
	} else {
		clearError( inputField );
		return "";
	}
}
function validateDate( inputField ) {
	if( inputField.value.length == 0 ) {
		// skip validation if blank/empty
		clearError( inputField );
		return "";
	}
	splitList = inputField.value.split( '/' );
	if( splitList.length != 3 || isNaN(splitList[0]) || isNaN(splitList[1]) || isNaN(splitList[2]) ) {
		markError( inputField );
		return "   - " + niceName( inputField.name ) + " is an invalid date.";
	} else {
		clearError( inputField );
		return "";
	}
}
function clearRadios( radioname )
{
	for( i=0; i< document.forms.length; i++ ) {
		//alert( "Working on "+document.forms[i]);
		for( j=0; j< document.forms[i].elements.length; j++ ) {
			//alert( "Working on field "+document.forms[i].elements[j]);
			if( document.forms[i].elements[j].name == radioname ) {
				document.forms[i].elements[j].checked = false;
			}
		}
	}
	return false;
}

/***** HANDLE CONDITIONAL ENABLE / DISABLE FIELDS *****/
function enableField( fieldName ) {
	if( isDefined( document.getElementById( fieldName ) ) ) {
		field = document.getElementById( fieldName );
		field.disabled = false;
		field.setAttribute( "class", "enabled" ); // firefox
		field.setAttribute( "className", "enabled" ); // ie
	} else {
		if( isDefined( document.getElementById( fieldName + "1" ) ) ) {
			for( i=1; isDefined( document.getElementById( fieldName + i ) ); i++ ) {
				enableField( fieldName + i );
			}
		} else {
			alert( fieldName + " not defined for enable.");
		}
	}
}
function disableField( fieldName ) {
	if( isDefined( document.getElementById( fieldName ) ) ) {
		field = document.getElementById( fieldName );
		field.disabled = true;
		field.setAttribute( "class", "disabled" ); // firefox
		field.setAttribute( "className", "disabled" ); // ie
	} else {
		if( isDefined( document.getElementById( fieldName + "1" ) ) ) {
			for( i=1; isDefined( document.getElementById( fieldName + i ) ); i++ ) {
				disableField( fieldName + i );
			}
		} else {
			alert( fieldName + " not defined for disable.");
		}
	}
}
function getRadioValue( fieldName ) {
	for( i=1; i<5; i++ ) {
		if( isDefined( document.getElementById( fieldName + i ) ) ) {
			if( document.getElementById( fieldName + i ).checked == true ) {
				return document.getElementById( fieldName + i ).value;
			}
		}
	}
}
function getSelectValue( fieldName ) {
	div = document.getElementById( fieldName );
//	if( !isDefined( div ) ) {
//		alert( fieldName + "not defined for getSelectValue" );
//	}
	return div.options[div.selectedIndex].text;
}
function getFieldValue( fieldName ) {
	div = document.getElementById( fieldName );
	return div.value;
}
function handleConditionalPropertyFields() {
	// propane options
	if( getRadioValue( "mcbpropane" ) == "Y" ) {
		enableField("propane_company");
		enableField("propane_comments");
		enableField("mcbpropane_addendum_recd");
	} else {
		disableField("propane_company");
		disableField("propane_comments");
		disableField("mcbpropane_addendum_recd");
	}
	// agreement type
	if( getSelectValue( "agreement_type" ) == "" ) {
		disableField("mcbmarketing_fee_recd");
		disableField("marketing_fee_amount");
	} else {
		enableField("mcbmarketing_fee_recd");
		enableField("marketing_fee_amount");
	}
	// mail keys
	if( getRadioValue( "mcbmail_keys_reqd" ) == "Y" ) {
		enableField("mcbmail_keys_recd");
		enableField("mail_keys_num");
		enableField("mail_keys_comments");
	} else {
		disableField("mcbmail_keys_recd");
		disableField("mail_keys_num");
		disableField("mail_keys_comments");
	}
	// garage door opener
	if( getRadioValue( "mcbgarage_opener_reqd" ) == "Y" ) {
		enableField("garage_opener_num");
		enableField("garage_opener_comments");
		enableField("mcbgarage_opener_recd");
	} else {
		disableField("garage_opener_num");
		disableField("garage_opener_comments");
		disableField("mcbgarage_opener_recd");
	}
	// security codes
	if( getRadioValue("mcbsecurity_code_reqd") == "Y" ) {
		enableField("security_code_building");
		enableField("security_code_unit");
		enableField("security_instr");
	} else {
		disableField("security_code_building");
		disableField("security_code_unit");
		disableField("security_instr");
	}
	// covenants required
	if( getRadioValue("mcbcovenants_reqd_w_lease") == "Y" ) {
		enableField( "mcbcovenants_received" );
	} else {
		disableField( "mcbcovenants_received" );
	}
	// fireplaces
	if( getSelectValue("num_fireplaces") == "0" 
		|| getSelectValue("num_fireplaces") == "None"
		|| getSelectValue("num_fireplaces") == "Unknown" ) {
		disableField("mcbfireplace_type");
		disableField("mcbfireplace_location");
		disableField("fireplace_cleaning_comments");
	} else {
		enableField("mcbfireplace_type");
		enableField("mcbfireplace_location");
		enableField("fireplace_cleaning_comments");
	}
	// parking passes
	if( getRadioValue("mcbparking_passes_reqd") == "Y" ) {
		enableField("parking_passes_num");
		enableField("parking_passes_comments");
	} else {
		disableField("parking_passes_num");
		disableField("parking_passes_comments");
	}
	// lead paint addendum
	if( getRadioValue("mcblead_paint_addendum_reqd") == "N"
		|| getRadioValue("mcblead_paint_addendum_reqd") == "NA" ) {
		disableField("mcblead_paint_addendum_recd");
	} else {
		enableField("mcblead_paint_addendum_recd");
	}
	// security code
	if( getFieldValue("security_code_reqd") == "None" ) {
		disableField("security_code_building");
		disableField("security_code_unit");
		disableField("security_instr");
		disableField("security_sytem_co_name");
	} else {
		enableField("security_code_building");
		enableField("security_code_unit");
		enableField("security_instr");
		enableField("security_sytem_co_name");
	}
	// carbon monoxide detector
	if( getRadioValue("mcbcarbon_monox_detector") == "Y" ) {
		enableField("carbon_monox_detector_location");
	} else {
		disableField("carbon_monox_detector_location");
	}
	// For Sale
	if( getSelectValue("for_sale") == "No" ) {
		disableField("mls_number_for_sale");
	} else {
		enableField("mls_number_for_sale");
	}
	// Sign Location
	if( getSelectValue("sign_location") == "None" || getSelectValue("sign_location") == "Not Allowed" ) {
		disableField("sign_number");
	} else {
		enableField("sign_number");
	}
	// HOA or COA
	if( getSelectValue("hoa_or_coa") == "None") {
		disableField("mcbhoa_or_coa_lbp_pays");
		disableField("mcbcovenants_reqd_w_lease");
		disableField("mcbcovenants_received");
		disableField("hoa_or_coa_name");
		disableField("hoa_comments");
		disableField("hoa_or_coa_address");
	} else {
		enableField("mcbhoa_or_coa_lbp_pays");
		enableField("mcbcovenants_reqd_w_lease");
		enableField("mcbcovenants_received");
		enableField("hoa_or_coa_name");
		enableField("hoa_comments");
		enableField("hoa_or_coa_address");
	}
	// Home Warranty
	if( getRadioValue("mcbhome_warranty") == "N" 
		|| getRadioValue("mcbhome_warranty") == "NA" ) {
		disableField("home_warranty_company");
		disableField("home_warranty_num");
		disableField("home_warranty_expiration_date");
	} else {
		enableField("home_warranty_company");
		enableField("home_warranty_num");
		enableField("home_warranty_expiration_date");
	}
	// Lock box
	if( getRadioValue("mcblock_box_lbp") == "LBP" ) {
		disableField("lock_box_owner");
	} else {
		enableField("lock_box_owner");
	}
	// Gutters
	if( getRadioValue("mcbgutters") == "N" ) {
		disableField("gutter_comments");
	} else {
		enableField("gutter_comments");
	}
	// AC Type
//	if( getRadioValue( "mcbac_type" ) == "Wall"
//		|| getRadioValue( "mcbac_type" ) == "Window" ) {
//		enableField( "ac_num_wall_units" );
//		enableField( "ac_wall_unit_location" );
//	} else {
//		disableField( "ac_num_wall_units" );
//		disableField( "ac_wall_unit_location" );
//	}
	// water paid by
//	alert(getRadioValue( "mcbwater_source_incl_w_rent" ) );
	if( getRadioValue( "mcbwater_source_incl_w_rent" ) != "Y" ) {
		disableField( "water_paid_by" );
	} else {
		enableField( "water_paid_by" );
	}
	if( getRadioValue( "mcbsewer_source_incl_w_rent" ) != "Y" ) {
		disableField( "sewer_paid_by" );
	} else {
		enableField( "sewer_paid_by" );
	}
	if( getRadioValue( "mcbgas_incl_w_rent" ) != "Y" ) {
		disableField( "gas_paid_by" );
	} else {
		enableField( "gas_paid_by" );
	}
	if( getRadioValue( "mcbelectric_incl_w_rent" ) != "Y" ) {
		disableField( "electric_paid_by" );
	} else {
		enableField( "electric_paid_by" );
	}
}