var objValidator;
var bMoveInDate_FixDate = false;

function PopulateBudgetRates(){
	for(i=0; i<aBudgetLists.length; i++){
		var objList = document.forms.frmQuote[aBudgetLists[i]];
		while(objList.options.length > 0){
			objList.options[objList.options.length - 1] = null;
		}
		objList.options[objList.options.length] = new Option("(Select)", "", true);
		for(var j=0; j<aBudget[aBudgetLists[i]].length; j++){
			var sRange = FormatCurrency(aBudget[aBudgetLists[i]][j][0], true) + " - " + FormatCurrency(aBudget[aBudgetLists[i]][j][1], true);
			objList.options[objList.options.length] = (new Option(sRange, sRange));
		}
	}
}

function ToggleDisplay(sLayerID){
	var Layer = document.getElementById(sLayerID);
	if(Layer.style.display == "none"){
		Layer.style.display = "block";
	}
	else{
		Layer.style.display = "none";
	}
}

function IndividualType_onChange(objList){
	var sItem = objList.options[objList.options.selectedIndex].value;
	if(sItem == "Personal"){
		objValidator.Fields["FirstName"].Required = true;
		objValidator.Fields["LastName"].Required = true;
		objValidator.Fields["LeaseFirstName"].Required = false;
		objValidator.Fields["LeaseLastName"].Required = false;
		document.getElementById("divPersonal").style.display = "inline";
		document.getElementById("divCompany").style.display = "none";
	}
	else if(sItem == "Company"){
		objValidator.Fields["FirstName"].Required = false;
		objValidator.Fields["LastName"].Required = false;
		objValidator.Fields["LeaseFirstName"].Required = true;
		objValidator.Fields["LeaseLastName"].Required = true;
		document.getElementById("divPersonal").style.display = "none";
		document.getElementById("divCompany").style.display = "inline";
	}
}

function ShowBudgetElements(iBedrooms, bVisible){
	objValidator.Fields["BR" + iBedrooms + "LeaseType"].Required = bVisible;
	objValidator.Fields["BR" + iBedrooms + "MTMBudget"].Required = bVisible;
	objValidator.Fields["BR" + iBedrooms + "Budget"].Required = bVisible;
	document.getElementById("divBR" + iBedrooms + "LeaseType").style.display = bVisible ? "inline" : "none";
	document.getElementById("divBR" + iBedrooms + "MTMBudget").style.display = "none";
	document.getElementById("divBR" + iBedrooms + "Budget").style.display = "none";
	if(!bVisible){
		document.forms.frmQuote.elements["BR" + iBedrooms + "LeaseType"].selectedIndex = 0;
		document.forms.frmQuote.elements["BR" + iBedrooms + "MTMBudget"].selectedIndex = 0;
		document.forms.frmQuote.elements["BR" + iBedrooms + "Budget"].selectedIndex = 0;
	}
}

function Bedrooms_onChange(objList){
	var iBedrooms = parseInt(objList.value);
	if(iBedrooms == 0){
		ShowBudgetElements(0, true);
		ShowBudgetElements(1, false);
		ShowBudgetElements(2, false);
		ShowBudgetElements(3, false);
	}
	else if(iBedrooms == 1){
		ShowBudgetElements(0, false);
		ShowBudgetElements(1, true);
		ShowBudgetElements(2, false);
		ShowBudgetElements(3, false);
	}
	else if(iBedrooms == 2){
		ShowBudgetElements(0, false);
		ShowBudgetElements(1, false);
		ShowBudgetElements(2, true);
		ShowBudgetElements(3, false);
	}
	else if(iBedrooms >= 3){
		ShowBudgetElements(0, false);
		ShowBudgetElements(1, false);
		ShowBudgetElements(2, false);
		ShowBudgetElements(3, true);
	}
	else{
		ShowBudgetElements(0, false);
		ShowBudgetElements(1, false);
		ShowBudgetElements(2, false);
		ShowBudgetElements(3, false);
	}
}

function BR0LeaseType_onChange(objList){
	document.getElementById("divBR0MTMBudget").style.display = objList.value == "MTM" ? "inline" : "none";
	document.getElementById("divBR0Budget").style.display = objList.value == "noMTM" ? "inline" : "none";
	if(objList.value != "MTM"){
		document.forms.frmQuote.BR0MTMBudget.selectedIndex = 0;
		objValidator.Fields["BR0MTMBudget"].Required = false;
		objValidator.Fields["BR0Budget"].Required = true;
	}
	if(objList.value != "noMTM"){
		document.forms.frmQuote.BR0Budget.selectedIndex = 0;
		objValidator.Fields["BR0MTMBudget"].Required = true;
		objValidator.Fields["BR0Budget"].Required = false;
	}
}

function BR1LeaseType_onChange(objList){
	document.getElementById("divBR1MTMBudget").style.display = objList.value == "MTM" ? "inline" : "none";
	document.getElementById("divBR1Budget").style.display = objList.value == "noMTM" ? "inline" : "none";
	if(objList.value != "MTM"){
		document.forms.frmQuote.BR1MTMBudget.selectedIndex = 0;
		objValidator.Fields["BR1MTMBudget"].Required = false;
		objValidator.Fields["BR1Budget"].Required = true;
	}
	if(objList.value != "noMTM"){
		document.forms.frmQuote.BR1Budget.selectedIndex = 0;
		objValidator.Fields["BR1MTMBudget"].Required = true;
		objValidator.Fields["BR1Budget"].Required = false;
	}
}

function BR2LeaseType_onChange(objList){
	document.getElementById("divBR2MTMBudget").style.display = objList.value == "MTM" ? "inline" : "none";
	document.getElementById("divBR2Budget").style.display = objList.value == "noMTM" ? "inline" : "none";
	if(objList.value != "MTM"){
		document.forms.frmQuote.BR2MTMBudget.selectedIndex = 0;
		objValidator.Fields["BR2MTMBudget"].Required = false;
		objValidator.Fields["BR2Budget"].Required = true;
	}
	if(objList.value != "noMTM"){
		document.forms.frmQuote.BR2Budget.selectedIndex = 0;
		objValidator.Fields["BR2MTMBudget"].Required = true;
		objValidator.Fields["BR2Budget"].Required = false;
	}
}

function BR3LeaseType_onChange(objList){
	document.getElementById("divBR3MTMBudget").style.display = objList.value == "MTM" ? "inline" : "none";
	document.getElementById("divBR3Budget").style.display = objList.value == "noMTM" ? "inline" : "none";
	if(objList.value != "MTM"){
		document.forms.frmQuote.BR3MTMBudget.selectedIndex = 0;
		objValidator.Fields["BR3MTMBudget"].Required = false;
		objValidator.Fields["BR3Budget"].Required = true;
	}
	if(objList.value != "noMTM"){
		document.forms.frmQuote.BR3Budget.selectedIndex = 0;
		objValidator.Fields["BR3MTMBudget"].Required = true;
		objValidator.Fields["BR3Budget"].Required = false;
	}
}

function BR0MTMBudget_onChange(objList){
}

function BR0Budget_onChange(objList){
}

function BR1MTMBudget_onChange(objList){
}

function BR1Budget_onChange(objList){
}

function BR2MTMBudget_onChange(objList){
}

function BR2Budget_onChange(objList){
}

function BR3MTMBudget_onChange(objList){
}

function BR3Budget_onChange(objList){
}

function Pets_onChange(objList){
	var sItem = objList.options[objList.options.selectedIndex].value;
	if(sItem == "yes"){
		document.getElementById("divPets").style.display = "inline";
		objValidator.Fields["Pets_Number"].Required = true;
		objValidator.Fields["Pets_Breed"].Required = true;
		objValidator.Fields["Pets_Weight"].Required = true;
	}
	else{
		document.getElementById("divPets").style.display = "none";
		objValidator.Fields["Pets_Number"].Required = false;
		objValidator.Fields["Pets_Breed"].Required = false;
		objValidator.Fields["Pets_Weight"].Required = false;
	}
}

function FormatCurrency(fNumber, bRound) {
	fNumber = fNumber.toString().replace(/\$|\,/g,'');
	if(isNaN(fNumber))
	fNumber = "0";
	sSign = (fNumber == (fNumber = Math.abs(fNumber)));
	fNumber = Math.floor(fNumber*100+0.50000000001);
	sCents = fNumber%100;
	fNumber = Math.floor(fNumber/100).toString();
	if(sCents<10) sCents = "0" + sCents;
	for (var i = 0; i < Math.floor((fNumber.length-(1+i))/3); i++)
	fNumber = fNumber.substring(0,fNumber.length-(4*i+3))+','+
	fNumber.substring(fNumber.length-(4*i+3));
	return (((sSign)?'':'-') + '$' + fNumber + (bRound ? "" : "." + sCents));
}

function PremiumHousing(objCheckbox, aLists){
	var fCharge = objCheckbox.checked ? fPremiumCharge : 0;
	for(var i=0; i<aLists.length; i++){
		var objList = document.forms.frmQuote[aLists[i]];
		while(objList.options.length > 0){
			objList.options[objList.options.length - 1] = null;
		}
		objList.options[objList.options.length] = new Option("(Select)", "", true);
		for(var j=0; j<aBudget[aLists[i]].length; j++){
			var sRange = FormatCurrency((aBudget[aLists[i]][j][0] + fCharge), true) + " - " + FormatCurrency((aBudget[aLists[i]][j][1] + fCharge), true);
			objList.options[objList.options.length] = (new Option(sRange, sRange));
		}
	}
}

Event.observe(window, "load", function(){
	PopulateBudgetRates();
	
	objValidator = new AJAXValidator({Form : document.forms.frmQuote});
	objValidator.AddField({ID : "IndividualType", Name : "Individual Type", Required : true});
	
	objValidator.AddField({ID : "FirstName", Name : "First Name", Format : F_TEXTONLY, Required : false});
	objValidator.AddField({ID : "LastName", Name : "Last Name", Format : F_TEXTONLY, Required : false});
	
	objValidator.AddField({ID : "CompanyName", Name : "Company Name", Required : false});
	objValidator.AddField({ID : "LeaseFirstName", Name : "First Name on Lease", Required : false});
	objValidator.AddField({ID : "LeaseLastName", Name : "Last Name on Lease", Required : false});
	
	objValidator.AddField({ID : "Email", Name : "E-mail", Format : F_EMAIL, Required : true});
	objValidator.AddField({ID : "Phone", Name : "Phone", Format : F_PHONE, Required : true});
	
	objValidator.AddField({ID : "Adults", Name : "Adults", Format : F_NUMBER, Required : true});
	objValidator.AddField({ID : "Children", Name : "Children", Format : F_NUMBER, Required : true});
	objValidator.AddField({
		ID : "MoveInDate",
		Name : "Move in Date",
		Format : objValidator.AddFormat({
			Validator : function(txt){
				var exp=new RegExp("^[0-9]{1,2}[\-\/]{1}[0-9]{1,2}[\-\/]{1}[0-9]{4}$");
				return exp.test(txt);
			},
			ErrorMessage : "must be a valid date"
		}),
		Required : true
	});
	objValidator.AddField({ID : "StayLength_Number", Name : "Length of Stay", Format : F_NUMBER, Required : true});
	objValidator.AddField({ID : "StayLength_Type", Name : "Months / Years", Required : true});
	objValidator.AddField({ID : "Bedrooms", Name : "Bedrooms", Required : true});
	objValidator.AddField({ID : "Bathrooms", Name : "Bathrooms", Format : F_NUMBER, Required : true});
	
	objValidator.AddField({ID : "BR0LeaseType", Name : "Lease Type - Studio", Required : true});
	objValidator.AddField({ID : "BR0MTMBudget", Name : "Budget (Studio - MTM)", Required : true});
	objValidator.AddField({ID : "BR0Budget", Name : "Budget (Studio - 3+ Months)", Required : false});
	objValidator.AddField({ID : "BR1LeaseType", Name : "Lease Type - 1 BR", Required : true});
	objValidator.AddField({ID : "BR1MTMBudget", Name : "Budget (1 BR - MTM)", Required : true});
	objValidator.AddField({ID : "BR1Budget", Name : "Budget (1 BR - 3+ Months)", Required : false});
	objValidator.AddField({ID : "BR2LeaseType", Name : "Lease Type - 2 BR", Required : false});
	objValidator.AddField({ID : "BR2MTMBudget", Name : "Budget (2 BR - MTM)", Required : false});
	objValidator.AddField({ID : "BR2Budget", Name : "Budget (2 BR - 3+ Months)", Required : false});
	objValidator.AddField({ID : "BR3LeaseType", Name : "Lease Type - 3+ BR", Required : false});
	objValidator.AddField({ID : "BR3MTMBudget", Name : "Budget (3+ BR - MTM)", Required : false});
	objValidator.AddField({ID : "BR3Budget", Name : "Budget (3+ BR - 3+ Months)", Required : false});
	
	objValidator.AddField({ID : "SpecificAddress", Name : "Close to specific address", Required : true});
	objValidator.AddField({ID : "City", Name : "City", Format : F_TEXTONLY, Required : true});
	objValidator.AddField({ID : "State", Name : "State", Format : F_TEXTONLY, Required : true});
	objValidator.AddField({ID : "ZipCode", Name : "Zip Code", Required : false});
	objValidator.AddField({ID : "NumberOfUnits", Name : "Number of units needed", Format : F_NUMBER, Required : true});
	
	objValidator.AddField({ID : "Pets", Name : "Pets", Required : true});
	objValidator.AddField({ID : "Pets_Number", Name : "How Many?", Format : F_NUMBER, Required : false});
	objValidator.AddField({ID : "Pets_Breed", Name : "Breed", Required : false});
	objValidator.AddField({ID : "Pets_Weight", Name : "Weight", Format : F_NUMBER, Required : false});
	
	objValidator.AddField({ID : "CaptchaCode", Name : "Code shown on image", Required : true});
	
	objField = document.createElement("input");
	objField.setAttribute("type", "hidden");
	objField.name = "JSEnabled";
	objField.id = "JSEnabled";
	objField.value = "Yes";
	$("frmQuote").appendChild(objField);
	
	Calendar.setup({
		inputField     :    "MoveInDate",
		ifFormat       :    "%m/%d/%Y",
		button         :    "MoveInDate_Select"
	});
	
	Event.observe("frmQuote", "submit", function(event){
		objValidator.Run();
		if(!objValidator.Valid){
			var aErrors = [];
			var aRequired = [];
			for(sField in objValidator.Fields){
				if(objValidator.Fields[sField].Valid == false) aErrors.push("- " + objValidator.Fields[sField].Error);
				if(objValidator.Fields[sField].Required) aRequired.push(sField);
			}
			alert("Sorry, we encountered the following problems when trying to process the form:\n\n" + aErrors.join("\n") + "\n\nPlease see if you can fix them and try again.");
			Event.stop(event);
		}
	});
});