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

YAHOO.Edmunds.FinanceRateTable = function(target_id, template, partner, author, uncached) {
  this.target_id = target_id;
  this.template_html = template;
  this.author = author;
  this.partner = partner;
  this.uncached = uncached;
  
  YAHOO.util.Event.addListener(window, 'load', this.handleOnContentReady, this);
};

YAHOO.Edmunds.FinanceRateTable.prototype = { 

    handleSuccess: function(o) {
        try {
            var data = YAHOO.lang.JSON.parse(o.responseText);
            var template_id = o.argument[0];
            var template_html = o.argument[1];
            var template = new YAHOO.ext.DomHelper.Template(template_html);

            for(var i = 0; i < data.length; i++) {
                if(data[i].rates.length == 4) {
                    var rate0 = data[i].rates[0].rate;
                    var rate1 = data[i].rates[1].rate;
                    var rate2 = data[i].rates[2].rate;
                    var rate3 = data[i].rates[3].rate;
                    var loanType;
                    
                    if(data[i].loanType == 'New_Vehicle') {
                        loanType = 'New Vehicle';
                    } else if(data[i].loanType == 'Private_Party') { 
                        loanType = 'Private Party'; 
                    } else if(data[i].loanType == 'Used_Vehicle') {
                        loanType = 'Used Vehicle';
                    } else if(data[i].loanType == 'Refinance') {
                        loanType = data[i].loanType; 
                    }

                    var num0 = "N/A";
                    var num1 = "N/A";
                    var num2 = "N/A";
                    var num3 = "N/A";
                    if (rate0 != undefined && rate0 != "" ) { 
                        try { 
                            num0 = new Number(rate0 * 100).toFixed(2) + "%"; 
                        } catch(e) { 
                            num0 = "N/A"; 
                        } 
                    } 
                    
                    if (rate1 != undefined && rate1 != "" ) { 
                        try {
                            num1 = new Number(rate1 * 100).toFixed(2) + "%"; 
                        } catch(e) {
                            num1 = "N/A";
                        }
                    }
                    
                    if (rate2 != undefined && rate2 != "") { 
                        try {
                            num2 = new Number(rate2 * 100).toFixed(2) + "%"; 
                        } catch(e) {
                            num2 = "N/A";
                        }
                    }

                    if (rate3 != undefined && rate3 != "") { 
                        try {
                            num3 = new Number(rate3 * 100).toFixed(2) + "%"; 
                        } catch(e) {
                            num3 = "N/A";
                        }
                    }

                    template.append(template_id, {loanType: loanType, rate0: num0, rate1: num1, rate2: num2, rate3: num3});
                }
          
          }
        } catch(e) { 
          var container = document.getElementById(template_id); 
          if (container != null) { 
            container.style.display='none';
          }
        }
    },
        
    handleFailure: function(o) {
        var template_id = o.argument[0];
        var container = document.getElementById(template_id);
        if (container != null) {
            container.style.display='none';
        }
    }, 
    
    handleOnContentReady: function(event, me) {
        var callback = {
            success: YAHOO.Edmunds.FinanceRateTable.prototype.handleSuccess,
            failure: YAHOO.Edmunds.FinanceRateTable.prototype.handleFailure,
            scope: this,
            argument: [me.target_id, me.template_html]
        };
    
        // 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);
        }
    }
}
