////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
// checkForm(form)                Validate Form Data                      //
//                                                                        //
////////////////////////////////////////////////////////////////////////////
function checkForm(form) {

        //////////////////////////////////////////////////
        // Validate fields common to all applications   //
        //////////////////////////////////////////////////
         form.FirstName.required               = true;
         form.FirstName.requiredError          = 'First name must be filled in.';

         form.LastName.required                = true;
         form.LastName.requiredError           = 'Last name must be filled in.';

         form.Address.required                 = true;
         form.Address.requiredError            = 'Address must be filled in.';

         form.City.required                    = true;
         form.City.requiredError               = 'City must be filled in.';

         form.Zip.required                     = true;
         form.Zip.requiredError                = 'Zipcode field must be filled in.';
         form.Zip.pattern                      = 'zipcode';
         form.Zip.patternError                 = 'Zipcode entered is not valid.';

         form.DayPhone.required                = true;
         form.DayPhone.requiredError           = 'Day time phone number must be filled in.';
         form.DayPhone.pattern                 = 'us phone number';
         form.DayPhone.patternError            = 'Day time phone number is invalid.';

         form.NightPhone.required              = true;
         form.NightPhone.requiredError         = 'Night time phone number must be filled in.';
         form.NightPhone.pattern               = 'us phone number';
         form.NightPhone.patternError          = 'Night time phone number is invalid.';

         form.Email.required                   = true;
         form.Email.requiredError              = 'Email field must be filled in.';      
         form.Email.pattern                    = 'email';
         form.Email.patternError               = 'Email address entered is not valid.';
            
         form.Employer.required                = true;
         form.Employer.requiredError           = 'Employer must be filled in.';
      
        // Report errors on fields common to all applications      
            var errors = getFormErrors(form);
      if (errors.length > 0) {
         var errorMessage = 'The form was not submitted due to the following problem' + ((errors.length > 1) ? 's' : '') + ':\n\n';
         for (var errorIndex = 0; errorIndex < errors.length; errorIndex++) {
            errorMessage += '* ' + errors[errorIndex] + '\n';
         }
          errorMessage += '\nPlease fix ' + ((errors.length > 1) ? 'these' : 'this') + ' problem' + ((errors.length > 1) ? 's' : '') + ' and resubmit the form.';
          alert(errorMessage);
          return false;
         }
      
        //////////////////////////////////////////////////
        // Check drop down selections for validity      //
        //////////////////////////////////////////////////
      
        if (form.State.selectedIndex == 0)
        {
                alert("Please select your state.");
                form.State.focus();
                return false;
        }

        if (form.TimeToContact.selectedIndex == 0)
        {
                alert("Please select the best time to contact you.");
                form.TimeToContact.focus();
                return false;
        }

        if (form.Credit.selectedIndex == 0)
        {
                alert("Please select a credit rating.");
                form.Credit.focus();
                return false;
        }

        if (form.YearsAtJob.selectedIndex == 0)
        {
                alert("Please select years at your job.");
                form.YearsAtJob.focus();
                return false;
        }

         if (form.Income.value == "$")
        {
                alert("Please enter your income.");
                form.Income.focus();
                return false;
        }

        /////////////////////////////////////////////////////////////
        // Check numerical fields for specific application types   //
        /////////////////////////////////////////////////////////////
        if (form.LoanType.value == "Purchase Mortgage") {
                if (form.DesiredLoanAmount.value == "$") {
                        alert("Please enter a Desired Loan Amount.");
                        form.DesiredLoanAmount.focus();
                        return false;
                }
		if (form.TimeToMove.selectedIndex == 0) {
			alert("Please select your estimated time of move.");
			form.TimeToMove.focus();
			return false;
		}
		if (form.CashDownpayment.selectedIndex == 0) {
			alert("Please enter your available cash for a downpayment.");
			form.CashDownpayment.focus();
			return false;
		}                
        }

        if (form.LoanType.value == "Refinance") {
                if (form.MortgageAmount.value == "$") {
                        alert("Please enter your Original Purchase Price.");
                        form.MortgageAmount.focus();
                        return false;
                }
                if (form.InterestRate.value == "") {
                        alert("Please enter your Interest Rate.");
                        form.InterestRate.focus();
                        return false;
                }
                if (form.MonthlyPayment.value == "$") {
                        alert("Please enter your Monthly Payment.");
                        form.MonthlyPayment.focus();
                        return false;                        
                }
		if (form.EstimatedPropertyValue.value == "$") {
			alert("Please enter your Estimated Property Value.");
			form.EstimatedPropertyValue.focus();
			return false;
		} 

        }

        if (form.LoanType.value == "Home Equity Loan") {
                if (form.DesiredLoanAmount.value == "$") {
                        alert("Please enter a Desired Loan Amount.");
                        form.DesiredLoanAmount.focus();
                        return false;
                }
                if (form.MortgageAmount.value == "$") {
                        alert("Please enter your Original Purchase Price.");
                        form.MortgageAmount.focus();
                        return false;
                }
                if (form.MortgageBalance.value == "$") {
                        alert("Please enter your Mortgage Balance.");
                        form.MortgageBalance.focus();
                        return false;
                }
                if (form.MonthlyPayment.value == "$") {
                        alert("Please enter your Monthly Payment.");
                        form.MonthlyPayment.focus();
                        return false;                        
                }
                if (form.InterestRate.value == "") {
                        alert("Please enter your Interest Rate.");
                        form.InterestRate.focus();
                        return false;
                }
		if (form.EstimatedPropertyValue.value == "$") {
			alert("Please enter your Estimated Property Value.");
			form.EstimatedPropertyValue.focus();
			return false;
		}        
        }

        if (form.LoanType.value == "Second Mortgage") {
                if (form.MortgageAmount.value == "$") {
                        alert("Please enter your Original Purchase Price.");
                        form.MortgageAmount.focus();
                        return false;
                }
                if (form.MortgageBalance.value == "$") {
                        alert("Please enter your Mortgage Balance.");
                        form.MortgageBalance.focus();
                        return false;
                }
                if (form.InterestRate.value == "") {
                        alert("Please enter your Interest Rate.");
                        form.InterestRate.focus();
                        return false;
                }
                if (form.DesiredLoanAmount.value == "$") {
                        alert("Please enter a Desired Loan Amount.");
                        form.DesiredLoanAmount.focus();
                        return false;
                }
		if (form.EstimatedPropertyValue.value == "$") {
			alert("Please enter your Esimated Property Value.");
			form.EstimatedPropertyValue.focus();
			return false;
		}
                if (form.MonthlyPayment.value == "$") {
                        alert("Please enter your Monthly Payment.");
                        form.MonthlyPayment.focus();
                        return false;                        
                }
        }

	/*        
        var rad_val = 0;
        for (var i=0; i < form.NeedRealtor.length; i++) {
                if (form.NeedRealtor[i].checked) {
                        rad_val = form.NeedRealtor[i].value;
                }
         }

        if (rad_val != 0) {

                if (form.RealtorTime.selectedIndex == 0) {
                        alert("Please select your Realtor Time Frame.");
                        form.RealtorTime.focus();
                        return false;
                }
                
                if (form.PropertyValue.value == "$") {
                        alert("Please enter a Property Value.");
                        form.PropertyValue.focus();
                        return false;                        
                }
        }
	*/

         // Grey out submit button
        submitonce(form);

         // Eliminate dollar signs and commas from numeric values before submitting form
        form.Income.value                 = stripCharsNotInBag(form.Income.value,"0123456789");
        form.MortgageAmount.value         = stripCharsNotInBag(form.MortgageAmount.value,"0123456789");
        form.MortgageBalance.value        = stripCharsNotInBag(form.MortgageBalance.value,"0123456789");
        form.DebtToConsolidate.value      = stripCharsNotInBag(form.DebtToConsolidate.value,"0123456789");
        form.DesiredLoanAmount.value      = stripCharsNotInBag(form.DesiredLoanAmount.value,"0123456789");
        form.MonthlyPayment.value         = stripCharsNotInBag(form.MonthlyPayment.value,"0123456789");
	form.EstimatedPropertyValue.value = stripCharsNotInBag(form.EstimatedPropertyValue.value,"0123456789");
	form.CashOut.value 		  = stripCharsNotInBag(form.CashOut.value,"0123456789");
	form.CashDownpayment.value	  = stripCharsNotInBag(form.CashDownpayment.value,"0123456789");
     return true; // subit occurs now
}

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Hide and Unhide application fields depending on application type       //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

function setAction(form){
if (form.LoanType.value=="Home Equity Loan"){
	estimatedpropertyvalue.style.display	= "";
        desiredloanamount.style.display         = "";
        mortgageamount.style.display            = "";
        mortgagebalance.style.display           = "";
        currentinterestrate.style.display       = "";
        debttoconsolidate.style.display         = "none";
        currentmonthlypayment.style.display     = "";
	cashout.style.display			= "none";
	timetomove.style.display		= "none";
	cashdownpayment.style.display		= "none";
}
if (form.LoanType.value=="Refinance") {
 	estimatedpropertyvalue.style.display	= "";
        desiredloanamount.style.display         = "none";
        mortgageamount.style.display            = "";
        mortgagebalance.style.display           = "none";
        currentinterestrate.style.display       = "";
        debttoconsolidate.style.display         = "none";
        currentmonthlypayment.style.display     = "";
	cashout.style.display			= "";
	timetomove.style.display		= "none";
	cashdownpayment.style.display		= "none";
}
if (form.LoanType.value=="Purchase Mortgage") {
	estimatedpropertyvalue.style.display	= "none";
        desiredloanamount.style.display         = "";
        mortgageamount.style.display            = "none";
        mortgagebalance.style.display           = "none";
        currentinterestrate.style.display       = "none";
        debttoconsolidate.style.display         = "none";
        currentmonthlypayment.style.display     = "none";
	cashout.style.display			= "none";
	timetomove.style.display		= "";
	cashdownpayment.style.display		= "";
}
if (form.LoanType.value=="Second Mortgage") {
	estimatedpropertyvalue.style.display	= "";
        desiredloanamount.style.display         = "";
        mortgageamount.style.display            = "";
        mortgagebalance.style.display           = "";
        currentinterestrate.style.display       = "";
        debttoconsolidate.style.display         = "none";
        currentmonthlypayment.style.display     = "";
	cashout.style.display			= "none";
	timetomove.style.display		= "none";
	cashdownpayment.style.display		= "none";
}
}

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Hide and Unhide Debt Consolidation Options                             //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

function setDebtConsolidationAction(form){
        if (form.DebtConsolidation.checked) {
                debtconsolidation.style.display = "none";
        }
        else {
                debtconsolidation.style.display = "";
        }
}

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Hide and Unhide Realtor Options                                        //
//                                                                        //
////////////////////////////////////////////////////////////////////////////
/*
function setRealtorAction(form){
        var rad_val = 0;
        for (var i=0; i < form.NeedRealtor.length; i++) {
                if (form.NeedRealtor[i].checked) { 
                        rad_val = form.NeedRealtor[i].value;
                }
         } 

        if (rad_val != 0) {
                   realtor.style.display = "";
        }
}
*/

////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Trigger Field Highlighting and Commifying for numbers                  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

function formActions(event,form) {
        // Highlight the selected field
        highlight(event);

        // Commify number field values
        form.DesiredLoanAmount.value  	  = commify(form.DesiredLoanAmount.value);
        form.MortgageAmount.value         = commify(form.MortgageAmount.value);
        form.MortgageBalance.value        = commify(form.MortgageBalance.value);
        form.DebtToConsolidate.value      = commify(form.DebtToConsolidate.value);
        form.Income.value                 = commify(form.Income.value);
        form.MonthlyPayment.value         = commify(form.MonthlyPayment.value);
	form.EstimatedPropertyValue.value = commify(form.EstimatedPropertyValue.value);
	form.CashOut.value		  = commify(form.CashOut.value);
	form.CashDownpayment.value        = commify(form.CashDownpayment.value);
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Hide Show Questions                                                    //
//                                                                        //
////////////////////////////////////////////////////////////////////////////
function expandIt(elOne) {
if (elOne.style.display == "none")
        elOne.style.display = "";
else
        elOne.style.display = "none";
}
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// Tool Tip resize repositioning                                          //
//                                                                        //
////////////////////////////////////////////////////////////////////////////

// fixPosition() attaches the element named eltname
// to an image named eltname+'Pos'
//
function fixPosition(divname) {
 divstyle = getDivStyle(divname);
 positionerImgName = divname + 'Pos';
 // hint: try setting isPlacedUnder to false
 isPlacedUnder = true;
 if (isPlacedUnder) {
  setPosition(divstyle,positionerImgName,true);
 } else {
  setPosition(divstyle,positionerImgName)
 }
}

// fixPositions() puts everything back in the right place after a resize.
function fixPositions()
{
 // add a fixPosition call here for every element
 // you think might get stranded in a resize/reflow.
 fixPosition('desired_loan_amount_help');
 fixPosition('mortgage_amount_help');
 fixPosition('mortgage_balance_help');
 fixPosition('debt_to_consolidate_help');
 fixPosition('interest_rate_help');
 fixPosition('income_help');
 fixPosition('day_phone_help');
 fixPosition('current_monthly_payment_help');
 fixPosition('estimated_property_value_help');
 fixPosition('cash_out_help');
 fixPosition('time_to_move');
 fixposition('cash_downpayment');
}

