if (typeof YAHOO.Edmunds == 'undefined') {
  YAHOO.Edmunds = {};
}

YAHOO.Edmunds.FinanceRatePromo = function(id, partner, loan_type, template, author, uncached) {
    this.id = id;
    this.partner = partner;
    this.loantype = loan_type;
    this.template = template;
    this.author = author;
    this.uncached = uncached;

    YAHOO.util.Event.addListener(window, 'load', this.handleOnContentReady, this);
} 

YAHOO.Edmunds.FinanceRatePromo.prototype = { 

    handleSuccess: function(o) {
        try {
            var id = o.argument[0];
            var partner = o.argument[1];
            var loantype = o.argument[2];
            var template_html = o.argument[3];
            
            var data = YAHOO.lang.JSON.parse(o.responseText);
            var template = new YAHOO.ext.DomHelper.Template(template_html);
            if(data.length > 0) {
                for(var i = 0; i < data.length; i++) {
                
                    if(data[i].loanType == loantype) {
                        // rate for 12 - 36 months
                        var raw_rate0 = data[i].rates[0].rate;
                        // rate for 37 - 48
                        var raw_rate1 = data[i].rates[1].rate;
                        // rate for 49 - 60
                        var raw_rate2 = data[i].rates[2].rate;
                        // rate for 61 - 72
                        var raw_rate3 = data[i].rates[3].rate;
                        
                        var rate0 = "N/A";
                        var rate1 = "N/A";
                        var rate2 = "N/A";
                        var rate3 = "N/A";

                        if (raw_rate0 != undefined && raw_rate0 != "" ) {
                            rate0 = new Number(raw_rate0 * 100).toFixed(2) + "%";
                        } 
                        if (raw_rate1 != undefined && raw_rate1 != "" ) {
                            rate1 = new Number(raw_rate1 * 100).toFixed(2) + "%";
                        } 
                        if (raw_rate2 != undefined && raw_rate2 != "" ) {
                            rate2 = new Number(raw_rate2 * 100).toFixed(2) + "%";
                        } 
                        if (raw_rate3 != undefined && raw_rate3 != "" ) {
                            rate3 = new Number(raw_rate3 * 100).toFixed(2) + "%";
                        } 
                    
                        template.append(id, { rate0: rate0, rate1 : rate1, rate2 : rate2, rate3: rate3 });
                        break;
                    } 
              }
              
              var container = document.getElementById(id);
              
              if (container != null) {
                  container.style.display='';
              }
            }
        } catch(e) {
            var container = document.getElementById(id);
            
            if (container != null) {
              container.style.display='none';
            }
        }
    },

    handleFailure: function(o) {
        var id = o.argument[0];
        var container = document.getElementById(id);
        if (container != null) {
          container.style.display='none';
        }
    },

    handleOnContentReady: function(event, me) {
        var callback = {
          success: YAHOO.Edmunds.FinanceRatePromo.prototype.handleSuccess,
          failure: YAHOO.Edmunds.FinanceRatePromo.prototype.handleFailure,
          argument: [ me.id, me.partner, me.loantype, me.template]
        };

        // Start the transaction. 
        var post_data = 'partner=' + me.partner;
        if(me.uncached) {
            callback.cache = false;
            var data_service = '/autofinance/Finance_Loan_Rates_Service.html?timestamp='+new Date().getTime();

            if(me.author && me.author != undefined && me.author != null) {
              data_service = '/author/edmunds2/autofinance/Finance_Loan_Rates_Service.html?timestamp='+new Date().getTime();
            } 

            YAHOO.util.Connect.setDefaultPostHeader(true);
            YAHOO.util.Connect.asyncRequest('POST', data_service, callback, post_data);
        } else {
            callback.cache = true;
            var data_service = '/autofinance/Finance_Loan_Rates_Service.html?'+post_data;

            if(me.author && me.author != undefined && me.author != null) {
              data_service = '/author/edmunds2/autofinance/Finance_Loan_Rates_Service.html?'+post_data;
            }
            
            YAHOO.util.Connect.asyncRequest('GET', data_service, callback);
        }
    }
};
