﻿/// <reference path="jQuery.js" />
/// <reference path="hmc-widget-base.js" />
/// <reference path="JScript1.js" />
/// <reference path="JSON.js" />

//sayAllert

function Widget3(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 wgt3stylesUrl = rootUrl + "Content/CSS/Widget3styles.css";
    var jQueryUrl = rootUrl + "Content/Scripts/jQuery.js";
    var jQueryCornersUrl = rootUrl + "Content/Scripts/jQuery.corners.js";
    var widgetBaseScrUrl = rootUrl + "Content/Scripts/hmc-widget-base.js";
    var sliderUrl = rootUrl + "Content/Scripts/Slider.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: "Calcula el valor máximo de tu casa",

        monthlyPaymentLabel: "Cuota mensual máx.",
        DownPaymentLabel: "Tus ahorros",
        interestRateLabel: "Tipo de interés",

        sliderText: "Plazo en años",
        calcBtnText: "Calcular",
        homeValueLabel: "Valor máx. de la casa*",

        //necesitarasLabel: "Necesitaras*",

        realDownPaymentLabel: "Aportación",

        realMonthlyPaymentLabel: "Necesitarás pagar una cuota mensual de",
        limitedByLabel: "Para aumentar el valor \r " + "de la casa, deberas \r " + "aumentar \r",

        majorPrecisionLabel: "*Varía por hipoteca:",
        majorPrecisionLinkText: "Clic para mayor precisió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/CalculateHomeValue"
    };

    var rootId = "hmc-wgt-divRootWgt3";

    var containerId;
    var txtBoxMonthlyPaymentId = "hmc-wgt-txtBoxMonthlyPayment";
    var txtBoxDownPaymentId = "hmc-wgt-txtBoxDownPayment";
    var txtBoxInterestRateId = "hmc-wgt-txtBoxInterestRate";

    var lblHomeValueId = "hmc-wgt-lblHomeValue";
    var lblMonthlyPaymentId = "hmc-wgt-lblMonthlyPayment";
    var lblRealDownPaymentId = "hmc-wgt-lblRealDownPayment";
    var lblRealMonthlyPaymentId = "hmc-wgt-lblRealMonthlyPayment";
    var lblLimitedById = "hmc-wgt-lblLimitedBy";


    //controls
    var txtBoxMonthlyPayment;
    var txtBoxDownPayment;
    var txtBoxInterestRate;

    var lblHomeValue;

    var lblMonthlyPayment;
    var lblRealDownPayment;
    var lblRealMonthlyPayment;
    var lblLimitedBy;

    //sliders
    var sliderObj;
    var divSlidersId;
    //validators
    var valMonthlyPayment;
    var valDownPayment;
    var valInterestRate;
    //#endregion

    // public methods
    //#region

    //#endregion

    // private methods
    //#region

    function btnCalculate_click() {
        if (!valMonthlyPayment.isValid() || !valDownPayment.isValid()
             || !valInterestRate.isValid()) {
            //alert("Entered data not valid!");
            return;
        }
        //alert(valMonthlyPayment.getValue() + " " + valDownPayment.getValue() + " " + valInterestRate.getValue() + " " + sliderObj.getValue())
        jQuery.ajax({ url: parameters.serviceURL,
            data:
			{
			    monthPayment: valMonthlyPayment.getValue(),
			    downPayment: valDownPayment.getValue(),
			    interestRate: valInterestRate.getValue(),
			    loanTerm: sliderObj.getValue()
			},
            dataType: "jsonp",
            success: function(json) {
                var result = eval("(" + json.d + ")");

                lblHomeValue.html(result.homeValue + "&euro;");
                lblRealDownPayment.html(result.realDownPayment + "&euro;");
                lblRealMonthlyPayment.html(result.realMonthPayment + "&euro;");
                lblLimitedBy.html(result.limitedBy);
            },
            error: function() {
                alert("Server error occured!");
            }
        });
    }

    function createRoot() {
        if (document.lastWidget3Id) { document.lastWidget3Id++; }
        else { document.lastWidget3Id = 1; }

        containerId = "hmc-wgt-wgt3container" + document.lastWidget3Id;
        divSlidersId = "hmc-wgt-slider-3" + +document.lastWidget3Id;
        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.monthlyPaymentLabel + "</div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxMonthlyPaymentId + "\" type=\"text\" class=\"hmc-wgt-txtBox\" /></div><div class=\"hmc-wgt-column3\"><span class=\"quntType\">&euro;</span></div><div class=\"hmc-wgt-column1\">" +
			parameters.DownPaymentLabel + "</div><div class=\"hmc-wgt-column2\">" +
			"<input id=\"" + txtBoxDownPaymentId + "\" 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><div style=\"clear: both;\"></div><div class=\"calculo-hipotecas\">&nbsp;</div>" +
	        "<input type=\"button\" id=\"btnCalculate\" value=\"" + parameters.calcBtnText + "\" />" +
        //results
			"<div class=\"calculo-hipotecas\">&nbsp;</div>" +
        //sliders
            "<div id=\"hmc-wgt-sliderWrapper\"><span>" + parameters.sliderText + "</span>" +
            "<div class=\"hmc-wgt-sliderDiv\"><div id=\"" + divSlidersId + "\" ondragstart=\"return false\" onselectstart=\"return false\"></div>" +
            "<div class=\"hmc-wgt-scaleSlider\"><div>25</div><div>30</div><div>35</div><div>40</div><div>45</div>" +
            "<div id=\"hmc-wgt-lastScaleDiv\">50</div></div></div></div>" +
        //endslider   
			"<div class=\"hmc-wgt-calcResults\">" +
			"<div class=\"hmc-wgt-column1\">" + parameters.homeValueLabel + "</div>" +
			"<div class=\"hmc-wgt-column2\"><span id=\"" + lblHomeValueId + "\">&nbsp;</span></div>" +
        //			"<div class=\"hmc-wgt-column1\">" + parameters.necesitarasLabel + "</div>" +
        //			"<div class=\"hmc-wgt-column2\"></div>" +
			"<div class=\"hmc-wgt-paramsSubSet\">" +
        //			"<div class=\"hmc-wgt-column1\">" + parameters.realDownPaymentLabel + "</div>" +
        //			"<div class=\"hmc-wgt-column2\"><span id=\"" + lblRealDownPaymentId + "\">&nbsp;</span></div>" +
			"<div class=\"hmc-wgt-column1\">" + parameters.realMonthlyPaymentLabel + "</div>" +
			"<div class=\"hmc-wgt-column2\"><span id=\"" + lblRealMonthlyPaymentId + "\">&nbsp;</span></div>" +
			"<div class=\"hmc-wgt-column1\" id =\"hmc-wgt-limitedBy\">" + parameters.limitedByLabel + "</div>" +
			"<div class=\"hmc-wgt-column2\" id =\"hmc-wgt-limitedByText\"><span id=\"" + lblLimitedById + "\">&nbsp;</span></div></div>" +
			"<div style=\"clear: both;\"></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.lnkWidget3stylesAdded) {
            addLink(wgt3stylesUrl);
            document.lnkWidget3stylesAdded = true;
        }

        if (!window.jQuery && !document.scrJQueryAdded) {
            addScriptReference(jQueryUrl);
            document.scrJQueryAdded = true;
        }

        addJQueryDependentScript();
    }

    function addJQueryDependentScript() {
        if (window.jQuery) {
            if (!document.scrJQueryCornersAdded) {
                writeScriptReference(jQueryCornersUrl);
                document.scrJQueryCornersAdded = true;
            }

            if (!document.scrWidgetBaseAdded) {
                writeScriptReference(widgetBaseScrUrl);
                document.scrWidgetBaseAdded = true;
            }

            if (!document.scrSlider3Added) {
                writeScriptReference(sliderUrl);
                document.scrSlider3Added = 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 (slider) == "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 + " ";
        sliderObj = new slider(divSlidersId, 126, 25, 50, 5);
        jQuery(preStr + "#" + divSlidersId + "_knob").mouseup(function() { btnCalculate_click(); });
        jQuery(preStr + "#" + divSlidersId + "_slider").click(function() { btnCalculate_click(); });

        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 btnCalculate = jQuery(preStr + " input[id=btnCalculate]");
        if (!IE) {
            btnCalculate.corner("5px");
        }
        btnCalculate.click(function() { btnCalculate_click(); });

        var wgtTxtBoxColl = jQuery(preStr + " .hmc-wgt-txtBox");

        txtMonthlyPayment = wgtTxtBoxColl.filter("#" + txtBoxMonthlyPaymentId); //HomeValue
        txtBoxDownPayment = wgtTxtBoxColl.filter("#" + txtBoxDownPaymentId);
        txtBoxInterestRate = wgtTxtBoxColl.filter("#" + txtBoxInterestRateId);

        lblHomeValue = jQuery(preStr + "#" + lblHomeValueId);

        lblMonthlyPayment = jQuery(preStr + "#" + lblMonthlyPaymentId);

        lblRealDownPayment = jQuery(preStr + "#" + lblRealDownPaymentId);
        lblRealMonthlyPayment = jQuery(preStr + "#" + lblRealMonthlyPaymentId);
        lblLimitedBy = jQuery(preStr + "#" + lblLimitedById);

        valMonthlyPayment = new NumericValidator(txtMonthlyPayment);
        valMonthlyPayment.minValue = 0;
        valMonthlyPayment.maxValue = 50000;
        valMonthlyPayment.decimalsCount = 0;

        valDownPayment = new NumericValidator(txtBoxDownPayment);
        valDownPayment.minValue = 1000;
        valDownPayment.maxValue = 9999999;
        valDownPayment.decimalsCount = 0;

        valInterestRate = new NumericValidator(txtBoxInterestRate);
        valInterestRate.minValue = 0.01;
        valInterestRate.maxValue = 9.99;
        valInterestRate.decimalsCount = 2;
        valInterestRate.defaultValue = 2.50;
    }

    //#endregion

    // constructor logic
    //#region

    addLinks();

    createRoot();

    tryReady();

    //#endregion
}