// TKBLaw December 2009
// Scott Borys
// scott@deezine.ca

$(document).ready(function() {
    desolidify("#referralCode");     
    desolidify("#looking");    
    desolidify("#mortgageFinancing");
    desolidify("#mortgagePurchase");
    desolidify("#mortgageProceeds");
    desolidify("#mortgagePurchaseRef");
    desolidify("#purchasePrice"); 
    desolidify("#selling"); 
});
var state = "1";
var isValid = false;
var code = "";
var count = 0; 

function next() {
    var temp = "";
    //console.log("state="+state);
    switch(state) {
        case "1":
             $("#row-2").slideDown("fast");
            state = "2";
            break; 
        case "2":
            temp = code;
            code = $("#referralCode").val();
            if ( code != "" ) {
                checkCode(code);      
            }
            if ( ( true == isValid ) || ( "" == code ) ) {
                $("#row-3").slideDown("fast");
                solidify("#referralCode");
                state = "3"; 
                break;          
            }
            if ( (count > 0) && (temp == code) && (false == isValid) ) {
                $("#row-3").slideDown("fast");
                solidify("#referralCode");
                state = "3";
                break;                 
            } 
            count++;
            break;  
        case "3":
            switch( $("#looking").val() ) {
                case "sell":
                    $("#row-4c").slideDown("fast");
                    state = "4c";
                    break;
                case "buy":
                    $("#row-4a").slideDown("fast");
                    state = "4a";
                    break;
                case "refinance":
                    $("#row-4b").slideDown("fast");
                    state = "4b";
                    break;
                default:
                    return false;
                    break;
            }
            solidify("#looking");  
            break;  
        case "4a":
        	var purchasePrice  = $("#purchasePrice").val();
        	if( cleanDollarValue(purchasePrice) < 1 ){
        		document.getElementById("purchasePriceRequiredDiv").style.display='block';
        		return;
        	} else {
        		document.getElementById("purchasePriceRequiredDiv").style.display="none";
        	}
        	//alert(cleanDollarValue(purchasePrice));
        	//return;
            switch( $("#mortgageFinancing").val() ) {
            	
                case "yes":
                    switch( $("#mortgagePurchase").val() ) {
                        case "house":
                            if (isValid == true) { 
                                makeEstimate($("#buy-yes-yes-house"),1045.0,257.5);
                            } else {
                                makeEstimate($("#buy-no-yes-house"),1100.0,257.5); 
                            }
                            break;
                        case "condo":
                            if (isValid == true) {
                                makeEstimate($("#buy-yes-yes-condo"),1045.0,207.5);  
                            } else {
                                makeEstimate($("#buy-no-yes-condo"),1100.0,207.5);  
                            } 
                            break;
                        case "bareland":
                            if (isValid == true) {
                                makeEstimate($("#buy-yes-yes-bareland"),1045.0,207.5);  
                            } else { 
                                makeEstimate($("#buy-no-yes-bareland"),1100.0,207.5); 
                            } 
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                makeEstimate($("#buy-yes-yes-mobile"),731.5,50.2); 
                            } else {
                                makeEstimate($("#buy-no-yes-mobile"),770.0,50.2);  
                            } 
                            break;
                        default:
                            return false;
                            break;
                    }
                    break;
                case "no":
                    switch( $("#mortgagePurchase").val() ) {
                        case "house":
                            if (isValid == true) { 
                                makeEstimate($("#buy-yes-no-house"),627.0,84.5);
                            } else {
                                makeEstimate($("#buy-no-no-house"),660.0,84.5); 
                            }
                            break;
                        case "condo":
                            if (isValid == true) {
                                makeEstimate($("#buy-yes-no-condo"),627.0,84.5);  
                            } else {
                                makeEstimate($("#buy-no-no-condo"),660.0,84.5);  
                            } 
                            break;
                        case "bareland":
                            if (isValid == true) {
                                makeEstimate($("#buy-yes-no-bareland"),627.0,84.5);  
                            } else { 
                                makeEstimate($("#buy-no-no-bareland"),660,84.5);
                            } 
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                makeEstimate($("#buy-yes-no-mobile"),522.5,50.2);  
                            } else {
                                makeEstimate($("#buy-no-no-mobile"),550.0,50.2);  
                            } 
                            break;
                        default:
                            return false;
                            break;
                    }
                    break;
                default:
                    return false;
                    break;
            }
            $("#row-5").slideDown("fast");
            $("#row-6b").slideDown("fast"); 
            $("#nextText").text('Submit Estimate');
            state = "6";    
            solidify("#mortgageFinancing");
            solidify("#mortgagePurchase");
            solidify("#purchasePrice");   
            break;
        case "4b":
            switch( $("#mortgageProceeds").val() ) {
                case "no":
                    switch( $("#mortgagePurchaseRef").val() ) {
                        case "house":
                            if (isValid == true) {
                                addEstimate("#ref-yes-no-house",605.0,257.5); 
                            } else {
                                addEstimate("#ref-no-no-house",649.0,257.5); 
                            } 
                            break;
                        case "condo":
                            if (isValid == true) {
                                addEstimate("#ref-yes-no-condo",605.0,207.5); 
                            } else {
                                addEstimate("#ref-no-no-condo",649.0,207.5); 
                            }
                            break;
                        case "bareland":
                            if (isValid == true) {
                                addEstimate("#ref-yes-no-bareland",605.0,207.5); 
                            } else { 
                                addEstimate("#ref-no-no-bareland",649.0,207.5);
                            }
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                addEstimate("#ref-yes-no-mobile",605.0,257.5);
                            } else { 
                                addEstimate("#ref-no-no-mobile",649.0,257.5);
                            }
                            break;            
                    }
                    break;
                case "payout":
                  switch( $("#mortgagePurchaseRef").val() ) {
                        case "house":
                            if (isValid == true) {
                                addEstimate("#ref-yes-payout-house",671.0,257.5); 
                            } else {
                                addEstimate("#ref-no-payout-house",759.0,257.5); 
                            } 
                            break;
                        case "condo":
                            if (isValid == true) {
                                addEstimate("#ref-yes-payout-condo",671.0,207.5); 
                            } else {
                                addEstimate("#ref-no-payout-condo",759.0,207.5); 
                            }
                            break;
                        case "bareland":
                            if (isValid == true) {
                                addEstimate("#ref-yes-payout-bareland",671.0,207.5); 
                            } else { 
                                addEstimate("#ref-no-payout-bareland",759.0,207.5);
                            }
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                addEstimate("#ref-yes-payout-mobile",671.0,257.5);
                            } else { 
                                addEstimate("#ref-no-payout-mobile",759.0,257.5);
                            }
                            break;            
                    }
                    break;
                case "multiple payouts":
                  switch( $("#mortgagePurchaseRef").val() ) {
                        case "house":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple-house",781.0,257.5); 
                            } else {
                                addEstimate("#ref-no-multiple-house",935.0,257.5); 
                            } 
                            break;
                        case "condo":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple-condo",781.0,207.5); 
                            } else {
                                addEstimate("#ref-no-multiple-condo",935.0,207.5); 
                            }
                            break;
                        case "bareland":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple-bareland",781.0,207.5); 
                            } else { 
                                addEstimate("#ref-no-multiple-bareland",935.0,207.5);
                            }
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple-mobile",781.0,257.5);
                            } else { 
                                addEstimate("#ref-no-multiple-mobile",935.0,257.5);
                            }
                            break;            
                    }
                    break;
                case "multiple payouts1":
                  switch( $("#mortgagePurchaseRef").val() ) {
                        case "house":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple1-house",814.0,257.5); 
                            } else {
                                addEstimate("#ref-no-multiple1-house",968.0,257.5); 
                            } 
                            break;
                        case "condo":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple1-condo",814.0,207.5); 
                            } else {
                                addEstimate("#ref-no-multiple1-condo",968.0,207.5); 
                            }
                            break;
                        case "bareland":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple1-bareland",814.0,207.5); 
                            } else { 
                                addEstimate("#ref-no-multiple1-bareland",968.0,207.5);
                            }
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple1-mobile",814.0,257.5);
                            } else { 
                                addEstimate("#ref-no-multiple1-mobile",968.0,257.5);
                            }
                            break;            
                    }
                    break;
                case "multiple payouts2":
                  switch( $("#mortgagePurchaseRef").val() ) {
                        case "house":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple2-house",902.0,257.5); 
                            } else {
                                addEstimate("#ref-no-multiple2-house",979.0,257.5); 
                            } 
                            break;
                        case "condo":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple2-condo",902.0,207.5); 
                            } else {
                                addEstimate("#ref-no-multiple2-condo",979.0,207.5); 
                            }
                            break;
                        case "bareland":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple2-bareland",902.0,207.5); 
                            } else { 
                                addEstimate("#ref-no-multiple2-bareland",979.0,207.5);
                            }
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                addEstimate("#ref-yes-multiple2-mobile",902.0,257.5);
                            } else { 
                                addEstimate("#ref-no-multiple2-mobile",979.0,257.5);
                            }
                            break;            
                    }
                    break;
                default:
                    return false;
                    break;
            }
            solidify("#mortgageProceeds");
            solidify("#mortgagePurchaseRef");  
            $("#row-5").slideDown("fast");
            $("#row-6c").slideDown("fast");
            $("#nextText").text('Submit Estimate');
            state = "6";  
            break;
	case "4c":
            switch( $("#looking").val() ) {
                case "sell":
            	    switch( $("#selling").val() ) {
                        case "house":
                            if (isValid == true) {
                                addEstimate("#sell-yes-house",627.0,25.0); 
                            } else {
                                addEstimate("#sell-no-house",660.0,25.0); 
                            } 
                            break;
                        case "condo":
                            if (isValid == true) {
                                addEstimate("#sell-yes-condo",627.0,25.0); 
                            } else {
                                addEstimate("#sell-no-condo",660.0,25.0); 
                            }
                            break;
                        case "bareland":
                            if (isValid == true) {
                                addEstimate("#sell-yes-bareland",627.0,25.0); 
                            } else { 
                                addEstimate("#sell-no-bareland",660.0,25.0);
                            }
                            break;
                        case "leased lands":
                            if (isValid == true) {
                                addEstimate("#sell-yes-mobile",522.5,25.0);
                            } else { 
                                addEstimate("#sell-no-mobile",550.0,25.0);
                            }
                            break;            
                    }
                    break;
                default:
                    return false;
                    break;
            }
            solidify("#selling"); 
            $("#row-5").slideDown("fast");
            $("#row-6a").slideDown("fast");
            $("#nextText").text('Submit Estimate');
            state = "6";  
            break;
        case "5":
            break;
        case "6":
            sendForm();
            state = "7";
            break;
        default:
            return false;
            break; 
    }
}
function checkCode(code) {
    var requestString = "code="+code+"&mode=check";
    $.ajax({  
        type: "POST",  
        url: "functions.php",  
        data: requestString, 
        success: function(text) {
            if ( "~~~~~false~~~~~" != text )  {
                $("#referralCodeMessage").html("<p class='text1'>Your referral code is valid.<input type='hidden' name='referredBy' value='"+text+"' /></p>"); 
                $("#row-3").slideDown("fast");
                solidify("#referralCode");
                state = "3";
                isValid = true; 
                return true;   
            } else {
                if ( "Your referral code is invalid." == $("#referralCodeMessage").html() ) {
                    $("#referralCodeMessage").html("<p class='text1'>Your referral code is invalid.  The below estimate will be calculated without a referral code.</p>");      
                } else{
                    $("#referralCodeMessage").html("<p class='text1'>Your referral code is invalid.</p>");
                }
                isValid = false;
                return false;      
            }

        } 
    });
}
function sendForm() {
    desolidify("#referralCode");     
    desolidify("#looking");    
    desolidify("#mortgageFinancing");
    desolidify("#mortgagePurchase");
    desolidify("#mortgageProceeds");
    desolidify("#mortgagePurchaseRef");
    desolidify("#purchasePrice"); 
    desolidify("#selling");   
    var requestString = $("#realEstateEstimate").serialize()+"&mode=send";     
    solidify("#referralCode");     
    solidify("#looking");    
    solidify("#mortgageFinancing");
    solidify("#mortgagePurchase");
    solidify("#mortgageProceeds");
    solidify("#mortgagePurchaseRef");
    solidify("#purchasePrice");
    solidify("#selling");  
    $("#forward").html("<p class='text1'><strong>Sending estimate to TKB LAW...</strong></p>");
    $.ajax({  
        type: "POST",  
        url: "functions.php",  
        data: requestString, 
        success: function() {
            $("#forward").html("<p class='text1'><strong>Your estimate has been sent to TKB LAW and someone will contact you within two business days.</strong></p>");
            return true;
        },
        error: function() {
            $("#forward").html("<p class='text1'><strong>Your estimate was unable to be sent. Please email it to <a href='mailto:karen.tkblaw@sasktel.net'>TKB LAW</a>.</strong></p>");
            return false;
        }  
    });      
}
function makeEstimate(div, legalFees, disburse) {
    var rate     = 0.003;
    //var baseRate = (+$(div).text() );
    var varRate  = cleanDollarValue($("#purchasePrice").val()); 
    //console.log("varRate="+varRate);
    var transferCost = (parseFloat(rate) * parseFloat(varRate)).toFixed(2); 
    var totalCost = (parseFloat(legalFees) + parseFloat(disburse) + ( parseFloat(rate) * parseFloat(varRate) )).toFixed(2); 
    legalFees = legalFees.toFixed(2);
    disburse  = disburse.toFixed(2);   
    $("#legalFees").append("$"+legalFees+"<input type='hidden' name='legalFees' value='"+legalFees+"' />");
    $("#disbursements").append("$"+disburse+"<input type='hidden' name='disbursements' value='"+disburse+"' />");
    $("#transferCost").append("$"+transferCost+"<input type='hidden' name='transferCost' value='"+transferCost+"' />");
    $("#totalCost").append("$"+totalCost+"<input type='hidden' name='totalCost' value='"+totalCost+"' />");
    $("#row-6-breakdown1").show();
    $("#row-6-breakdown2").show();   
    $("#row-6-breakdown3").show();   
    $("#row-6-breakdown4").show();   

}
function cleanDollarValue(x){
	try
	{
		if(x == null)
		{
			if(x.length > 0)
			{
				x = x.trim();
			}
		}
		x = x.replace('$','');
		var patt1 = /,/g;
		x = x.replace(patt1,'');
		var patt2=/\'/g;
		x = x.replace(patt2,'');
		var patt3 = / /g;
		x = x.replace(patt3,'');
			
		var floatValue = parseFloat(x); 
		if(isNaN(floatValue))
		{
			floatValue=0;
		}
	}
	catch(err)
	{
		floatValue = 0;
	}
	return floatValue;
}
function addEstimate(div, legalFees, disburse) {
    //var original = (+$(div).text() );
    var totalCost = (legalFees + disburse).toFixed(2);
    legalFees = legalFees.toFixed(2);
    disburse  = disburse.toFixed(2);
    $("#legalFees").append("$"+legalFees+"<input type='hidden' name='legalFees' value='"+legalFees+"' />");  
    $("#disbursements").append("$"+disburse+"<input type='hidden' name='disbursements' value='"+disburse+"' />");  
    $("#totalCost").append("$"+totalCost+"<input type='hidden' name='totalCost' value='"+totalCost+"' />");
    $("#row-6-breakdown1").show();   
    $("#row-6-breakdown2").show();   
    $("#row-6-breakdown4").show();   
}
function solidify(div) {
    $(div).attr("disabled", true);
}
function desolidify(div) {
    $(div).attr("disabled", false);
}
