﻿/// <reference path="jQuery.js" />
/// <reference path="hmc-widget-base.js" />
/// <reference path="JScript1.js" />
/// <reference path="JSON.js" />

//sayAllert

function Widget2(customParameters) {

    // private variables
    //#region

    var IE = /*@cc_on!@*/false;    
    var majorPrecisionLink = "http://www.helpmycash.com/";
    var helpMyCashLink = "http://www.helpmycash.com/";
    var comprateloLink = " http://www.helpmycash.com/hipoteca/calculo-hipotecas/"

    var rootUrl = "http://www.helpmycash.com/widgets/";
    var wgtsStylesUrl = rootUrl + "Content/CSS/styles.css";
    var wgt2stylesUrl = rootUrl + "Content/CSS/widget2styles.css";
    var jQueryUrl = rootUrl + "Content/Scripts/jQuery.js";
    var jQueryTooltipUrl = rootUrl + "Content/Scripts/jQuery.tooltip.js";
    var jQueryCornersUrl = rootUrl + "Content/Scripts/jQuery.corners.js";
    var widgetBaseScrUrl = rootUrl + "Content/Scripts/hmc-widget-base.js";
    var logoHeaderImageUrl = rootUrl + "Content/Images/help-my-cash.gif";
    var logoImageUrl = rootUrl + "Content/Images/Logo.gif";
    var helpIconUrl = rootUrl + "Content/Images/HelpIcon.gif";

    var parameters = {
        //labels
        widgetHeader: "Calculadora Hipotecaria",
        calcHeader: "Calculadora de importe y cuota",
        homeValueLabel: "Valor del inmueble",
        grossDownPaymentLabel: "Tus ahorros",
        interestRateLabel: "Tipo de interés",
        feesInPercentageLabel: "Gastos de firma",
        termLabel: "Plazo en años",
        calcBtnText: "Calcular",
        loanAmountLabel: "Importe del préstamo*",
        monthlyPaymentLabel: "Cuota mensual*",
        downPaymentLabel: "Aportación",
        resultGrossDownPaymentLabel: "&nbsp;&nbsp;&nbsp;Importe sin gastos",
        feesAmountLabel: "+ Gastos",
        majorPrecisionLabel: "*Varía por hipoteca:",
        majorPrecisionLinkText: "Más información",
        calcFooter: "<a href='http://www.helpmycash.com/calcula-tu-mejor-hipoteca/' title='encuentra y negocia la mejor hipoteca' target='_blank'>Encuentra y negocia la mejor hipoteca</a>",
        widgetFooterPreLink: "¿Te gusta este widget?",
        widgetFooterLinkText: "Compártelo",

        backgroundColor: "#137E74",

        //URLs
        serviceURL: "http://service.helpmycash.com/App/Services/WidgetService.asmx/MortgagePayment"
    };

    var rootId = "hmc-wgt-divRootWgt2";

    var containerId;
    var txtBoxHomeValueId = "hmc-wgt-txtBoxHomeValue";
    var txtBoxGrossDownPaymentId = "hmc-wgt-txtBoxGrossDownPayment";
    var txtBoxInterestRateId = "hmc-wgt-txtBoxInterestRate";
    var txtBoxFeesInPercentageId = "hmc-wgt-txtBoxFeesInPercentage";
    var txtBoxTermId = "hmc-wgt-txtBoxTerm";

    var lblLoanAmountId = "hmc-wgt-lblLoanAmount";
    var lblMonthlyPaymentId = "hmc-wgt-lblMonthlyPayment";
    var lblDownPaymentId = "hmc-wgt-lblDownPayment";

    var lblGrossDownPaymentId = "hmc-wgt-lblGrossDownPayment";
    var lblFeesAmountId = "hmc-wgt-lblFeesAmount";

    //controls
    var txtBoxHomeValue;
    var txtBoxGrossDownPayment;
    var txtBoxInterestRate;
    var txtBoxFeesInPercentage;
    var txtBoxTerm;

    var lblLoanAmount;
    var lblMonthlyPayment;
    var lblDownPayment;
    var lblGrossLoanAmount;
    var lblGrossDownPayment;
    var lblFeesAmount;

    //validators
    var valHomeValue;
    var valGrossDownPayment;
    var valInterestRate;
    var valFeesInPercentage;
    var valTerm;
    //#endregion

    // public methods
    //#region

    //#endregion

    // private methods
    //#region

    function btnCalculate_click() {
        if (!valHomeValue.isValid() || !valGrossDownPayment.isValid() || !valInterestRate.isValid()
			|| !valFeesInPercentage.isValid() || !valTerm.isValid()) {
            //alert("Entered data not valid!");
            return;
        }
        if (parseInt(valGrossDownPayment.getValue()) >= parseInt(valHomeValue.getValue())) {
            txtBoxGrossDownPayment.css("background-color", valHomeValue.errorBackColor);
            txtBoxGrossDownPayment.parent().css("background-color", valHomeValue.errorBackColor);
            //debugger;
            //alert("")

            return;
        }
        jQuery.ajax({ url: parameters.serviceURL,
            data:
			{
			    homeValue: valHomeValue.getValue(),
			    grossDownPayment: valGrossDownPayment.getValue(),
			    interestRate: valInterestRate.getValue(),
			    feesInPercentage: valFeesInPercentage.getValue(),
			    loanTerm: valTerm.getValue()
			},
            dataType: "jsonp",
            success: function(json) {
                var result = eval("(" + json.d + ")");

                lblLoanAmount.html(result.loanAmount + "&euro;");
                lblMonthlyPayment.html(result.monthPayment + "&euro;");
                //lblDownPayment.html(result.grossLoanAmount + "&euro;");
                lblGrossDownPayment.html(result.grossLoanAmount + "&euro;");
                lblFeesAmount.html(result.feesAmount + "&euro;");
            },
            error: function() {
                alert("Server error occured!");
            }
        });
    }

    function createRoot() {
        if (document.lastWidget2Id) { document.lastWidget2Id++; }
        else { document.lastWidget2Id = 1; }

        containerId = "hmc-wgt-wgt2container" + document.lastWidget2Id;

        document.write("<div id=\"" + rootId + "\"><div class=\"hmc-wgt-container\" id=\"" + containerId + "\"></div></div>")
    }

    function createTree() {
        jQuery("#" + containerId).html("<div class=\"calculadora-hipotecas\">" +
			"<img src=\"" + logoHeaderImageUrl + "\" alt=\"helpmycash\" title=\"Helpmycash - cálculo de hipotecas\" />" +
			"<span>" + parameters.widgetHeader + "</span> </div><div style=\"clear: both;\"></div><div class=\"hmc-wgt-calcBody\">" +
			"<span class=\"hmc-wgt-calcHeader\">" +
			 parameters.calcHeader + "</span><div class=\"hmc-wgt-calcParams\"><div class=\"hmc-wgt-column1\">" +
			 parameters.homeValueLabel + "</div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxHomeValueId + "\" type=\"text\" class=\"hmc-wgt-txtBox\" /></div><div class=\"hmc-wgt-column3\"><span class=\"quntType\">&euro;</span></div><div class=\"hmc-wgt-column1\">" +
			parameters.grossDownPaymentLabel + "</div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxGrossDownPaymentId + "\" type=\"text\" class=\"hmc-wgt-txtBox\" /></div><div class=\"hmc-wgt-column3\"><span class=\"quntType\">&euro;</span></div><div class=\"hmc-wgt-column1\">" +
			parameters.interestRateLabel + "</div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxInterestRateId + "\" type=\"text\" class=\"hmc-wgt-txtBox\"  /></div><div class=\"hmc-wgt-column3\"><span class=\"quntType\">%</span></div>" +
			"<div class=\"hmc-wgt-column1\">" + parameters.feesInPercentageLabel + " <img id=\"imgHelpIcon\" src=\"" + helpIconUrl + "\" alt=\"En general, los gastos de firma son un10% del valor del inmueble\" /> </div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxFeesInPercentageId + "\" type=\"text\" class=\"hmc-wgt-txtBox\" /></div><div class=\"hmc-wgt-column3\"><span class=\"quntType\">%</span></div><div class=\"hmc-wgt-column1\">" +
			parameters.termLabel + "</div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxTermId + "\" type=\"text\" class=\"hmc-wgt-txtBox\" /></div><div class=\"hmc-wgt-column3\">&nbsp;</div><div style=\"clear: both;\"></div></div><div class=\"calculo-hipotecas\">&nbsp;</div><input type=\"button\" id=\"btnCalculate\" value=\"" +
			parameters.calcBtnText + "\" />" +
        //results
			"<div class=\"calculo-hipotecas\">&nbsp;</div>" +
			"<div class=\"hmc-wgt-calcResults\">" +
			    "<div class=\"hmc-wgt-column1\">" + parameters.loanAmountLabel + "</div>" +
			    "<div class=\"hmc-wgt-column2\"><span id=\"" + lblLoanAmountId + "\">&nbsp;</span></div>" +
			    "<div class=\"hmc-wgt-paramsSubSet\">" +
			        "<div class=\"hmc-wgt-column1\">" + parameters.resultGrossDownPaymentLabel + "</div>" +
			        "<div class=\"hmc-wgt-column2\"><span id=\"" + lblGrossDownPaymentId + "\">&nbsp;</span></div>" +
			        "<div class=\"hmc-wgt-column1\">" + parameters.feesAmountLabel + "</div>" +
			        "<div class=\"hmc-wgt-column2\"><span id=\"" + lblFeesAmountId + "\">&nbsp;</span></div>" +
                "</div>" +
                "<div class=\"hmc-wgt-calcResults\">" +
                    "<div class=\"hmc-wgt-column1\">" + parameters.monthlyPaymentLabel + "</div>" +
                    "<div class=\"hmc-wgt-column2\"><span id=\"" + lblMonthlyPaymentId + "\">&nbsp;</span></div>" +
                    "<div style=\"clear: both;\"></div>" +
			    "</div>" +
            "</div>" +
			"<div class=\"hmc-wgt-majorPrecision\">" +
			parameters.majorPrecisionLabel + "&nbsp;" +
			"<a target=\"_blank\" href=\"" + majorPrecisionLink + "\">" + parameters.majorPrecisionLinkText + "</a></div><div class=\"hmc-wgt-helpMyCash\">" +
			"<a target=\"_blank\" href=\"" + helpMyCashLink + "\" class=\"calculadora-hipotecas\">" +
			"<img src=\"" + logoImageUrl + "\" alt=\"Helpmycash\" title=\"Helpmycash - cálculo de hipotecas\" /><span>Help<span>My</span>Cash</span><br /></a></div>" +
			"<center><span class=\"hmc-wgt-calcFooter\">" + parameters.calcFooter + "</span></center>" +
			"<div style=\"clear: both;\"></div>" +
			"</div><center><span class=\"hmc-wgt-widgetFooter\">" +
			parameters.widgetFooterPreLink + "&nbsp;<a href=\"" + comprateloLink + "\" target=\"_blank\">" +
			parameters.widgetFooterLinkText + "</a></span></center>");
    }

    function addLinks() {
        if (!document.lnkBaseWidgetStylesAdded) {
            addLink(wgtsStylesUrl);
            document.lnkBaseWidgetStylesAdded = true;
        }

        if (!document.lnkWidget2stylesAdded) {
            addLink(wgt2stylesUrl);
            document.lnkWidget2stylesAdded = true;
        }

        if (!window.jQuery && !document.scrJQueryAdded) {
            addScriptReference(jQueryUrl);
            document.scrJQueryAdded = true;
        }

        addJQueryDependentScript();
    }

    function addJQueryDependentScript() {
        if (window.jQuery) {
            if (!document.scrJQueryTooltipAdded) {
                writeScriptReference(jQueryTooltipUrl);
                document.scrJQueryTooltipAdded = true;
            }

            if (!document.scrJQueryCornersAdded) {
                writeScriptReference(jQueryCornersUrl);
                document.scrJQueryCornersAdded = true;
            }

            if (!document.scrWidgetBaseAdded) {
                writeScriptReference(widgetBaseScrUrl);
                document.scrWidgetBaseAdded = true;
            }
        }
        else {
            setTimeout(addJQueryDependentScript, 20);
        }
    }

    function addLink(linkUrl) {
        var link = document.createElement("link");
        link.rel = "stylesheet";
        link.type = "text/css";
        link.href = linkUrl;
        link.media = "all";
        document.getElementsByTagName('head')[0].appendChild(link);
    }

    function addScriptReference(scriptUrl) {
        var script = document.createElement("script");
        script.src = scriptUrl;
        document.getElementsByTagName('head')[0].appendChild(script);
    }

    function writeScriptReference(scriptUrl) {
        jQuery("head").append("<script type=\"text/javascript\" src=\"" + scriptUrl + "\"></script>");
    }

    function tryReady() {
        if (typeof (window.jQuery) == "undefined" || typeof (jQuery().corner) == "undefined"
			|| typeof (ToolTip) == "undefined" || typeof (jQuery.tooltip) == "undefined") {
            setTimeout(tryReady, 20);
        }
        else {
            if (!IE) { initialize(); return; }

            jQuery(document).ready(function() {
                initialize();
            });
        }
    }

    function initialize() {
        jQuery.noConflict();
        parameters = jQuery.extend(parameters, customParameters);
        createTree();

        var preStr = "#" + rootId + " #" + containerId + " ";

        jQuery(preStr + ".hmc-wgt-calcBody").corner("5px");
        var container = jQuery(preStr).corner("5px");

        container.css("background-color", parameters.backgroundColor);

        var wgtTxtBox = jQuery(preStr + " .hmc-wgt-txtBox");
        wgtTxtBox.each(function() {
            if (!jQuery(this).parent().hasClass("hmc-wgt-txtBoxWrapper")) {
                jQuery(this).wrap("<div class=\"hmc-wgt-txtBoxWrapper\" />");
            }
        });

        jQuery(preStr + " div.hmc-wgt-txtBoxWrapper").corner("5px");

        jQuery(preStr + " div.calculo-hipotecas").each(function() {
            if (!jQuery(this).parent().hasClass("calculo-hipotecasWrapper")) {
                jQuery(this).wrap("<div class=\"calculo-hipotecasWrapper\" />");
            }
        });


        var helpIcon = jQuery(preStr + " #imgHelpIcon");
        var t = new ToolTip(helpIcon, "En general, los gastos de firma son un 10% del valor del inmueble");
        helpIcon.css("margin-bottom", "-2px");

        var btnCalculate = jQuery(preStr + " input[id=btnCalculate]");
        if (!IE) {
            btnCalculate.corner("5px");
        }
        btnCalculate.click(function() { btnCalculate_click(); });

        var wgtTxtBoxColl = jQuery(preStr + " .hmc-wgt-txtBox");
        txtBoxHomeValue = wgtTxtBoxColl.filter("#" + txtBoxHomeValueId); //jQuery(preStr + "#" + txtBoxHomeValueId);
        txtBoxGrossDownPayment = wgtTxtBoxColl.filter("#" + txtBoxGrossDownPaymentId);
        txtBoxInterestRate = wgtTxtBoxColl.filter("#" + txtBoxInterestRateId);
        txtBoxFeesInPercentage = wgtTxtBoxColl.filter("#" + txtBoxFeesInPercentageId);
        txtBoxTerm = wgtTxtBoxColl.filter("#" + txtBoxTermId);

        lblLoanAmount = jQuery(preStr + "#" + lblLoanAmountId);
        lblMonthlyPayment = jQuery(preStr + "#" + lblMonthlyPaymentId);
        lblDownPayment = jQuery(preStr + "#" + lblDownPaymentId);
        lblGrossDownPayment = jQuery(preStr + "#" + lblGrossDownPaymentId);
        lblFeesAmount = jQuery(preStr + "#" + lblFeesAmountId);

        valHomeValue = new NumericValidator(txtBoxHomeValue);
        valHomeValue.minValue = 10000;
        valHomeValue.maxValue = 9999999;
        valHomeValue.decimalsCount = 0;

        valGrossDownPayment = new NumericValidator(txtBoxGrossDownPayment);
        valGrossDownPayment.minValue = 1000;
        valGrossDownPayment.maxValue = 9999999;
        valGrossDownPayment.decimalsCount = 0;

        valInterestRate = new NumericValidator(txtBoxInterestRate);
        valInterestRate.minValue = 0.01;
        valInterestRate.maxValue = 9.99;
        valInterestRate.decimalsCount = 2;
        valInterestRate.defaultValue = 2.50;

        valFeesInPercentage = new NumericValidator(txtBoxFeesInPercentage);
        valFeesInPercentage.minValue = 0;
        valFeesInPercentage.maxValue = 15;
        valFeesInPercentage.decimalsCount = 2;
        valFeesInPercentage.defaultValue = 10;

        valTerm = new NumericValidator(txtBoxTerm);
        valTerm.minValue = 1;
        valTerm.maxValue = 50;
        valTerm.decimalsCount = 0;
        valTerm.defaultValue = 30;
    }

    //#endregion

    // constructor logic
    //#region

    addLinks();

    createRoot();

    tryReady();

    //#endregion
}