// LoansBestBuy.js
// NOTE: this file uses functions defined on LoansCommon.js

// Best Buy
var Tabstate = {selected: ""};

// Wiring
$(document).ready(function() {
    InitialisePage();
});

function InitialisePage() {

$('ul#bestbuytabs li a[href=#]').each(function(i) {
        $(this).click(HandleTabClick);
    }
  );  
  
  // Show first tab
  if (TabData.length > 0)
  {
		Tabstate = ReadCookie(Tabstate, "tabstate");
    
    if (Tabstate.selected == "")
    {
      Tabstate.selected = TabData[0].TabName;
    }
    
    DrawTable(Tabstate.selected);
    
    var elementObj = $('#'+Tabstate.selected);
    if(elementObj != null)
    {
        elementObj = elementObj.parent().parent();
			if(elementObj != null)
			{
			    elementObj.addClass('active');
			}
    }    
  }  
  
  elementObj = $('#LoadingMessage');
  elementObj.hide();
  removeSearchState();
}

function HandleTabClick(event) {
    event.preventDefault();
    
    var el = $(event.target);
    if (el != null) {
        $('ul#bestbuytabs li').each(
      function(i) {
          $(this).removeClass('active');
      }
    );

      el.parent().parent().addClass('active');
        DrawTable(el.attr("id"));

        Tabstate.selected = el.attr("id");
        SaveCookie(Tabstate, "tabstate");
    }
}

function DrawTable(TabId) {
    var applyLink = '';
    var tbody = $('#table_results');
    var onclick = '';
    var idx;


    if (tbody != null) {
        tbody.html("");
        idx = FindTab(TabId);

        // Process each loan result
        for (var i = 0; i < TabData[idx].Loans.length; i++) {
            var linkTarget = 'target=\"_blank\"';
            if ((TabData[idx].Loans[i].ApplyLink.indexOf('AreYouSure') != -1)) {
                linkTarget = '';
            }

            var applyButton = null;
            var protocol = 'http:';
            if (TabData[idx].Loans[i].LoanType == 1) {
                // secured loans need to be secured
                protocol = 'https:';
            }
            applyButton = '<a class="ApplyButton" ' + linkTarget + ' href="' +
			    protocol + '//' + location.host + TabData[idx].Loans[i].ApplyLink +
			    '" ' + onclick + '><span>Details &amp; Apply</span></a>';

            var loanName = '<h3><a href="' + TabData[idx].Loans[i].ApplyLink + '" ' +
				linkTarget + '" ' + onclick + '><span class="Provider">' + TabData[idx].Loans[i].Company +
				'</span><br/><span class="LoanName">' + TabData[idx].Loans[i].LoanName + '</span></a></h3>';

            if (TabData[idx].Loans[i].ButtonURL != '') {
                loanName = loanName + '<div class="PartnerCreative';
                if (TabData[idx].Loans[i].Popularity > 0) {
                    loanName = loanName + ' BestSeller';
                }
                loanName = loanName + '"><a href="' + TabData[idx].Loans[i].ApplyLink + '" ' + linkTarget + '" ' + onclick + '><img src="' + TabData[idx].Loans[i].ButtonURL + '" class="PartnerCreative" alt="" /></a></div>';
            }

            var rowHtml = '';

            if (i % 2 != 0) {
                rowHtml = '<tr class="Odd">';
            } else {
                rowHtml = '<tr>';
            }

            rowHtml += '<td class="Product" style="padding-bottom: 0px;">' + loanName + '</td>';
            rowHtml += '<td class="Apr" style="padding-bottom: 0px;">' + GetTypicalAPRText(TabData[idx].Loans[i]) + '</td>';
            rowHtml += '<td class="" style="padding-bottom: 0px;">' + GetAmountAndTerm(TabData[idx].Loans[i]) + '</td>';
            rowHtml += '<td class="" style="padding-bottom: 0px;">' + GetTAR_MonthlyRepayment(TabData[idx].Loans[i]) + '</td>';
            rowHtml += '<td class="" style="padding-bottom: 0px;">' + applyButton + '</td>';
            rowHtml += '</tr>';

            // CCD representative example message for UNSECURED only
            if (TabData[idx].Loans[i].LoanType == 0) {
                var alternateColor = "";
                if (i % 2 != 0) {
                    rowHtml += '<tr class="Odd">';
                    //alternateColor = " color: #006778;";
                } else {
                    rowHtml += '<tr>';
                }
                rowHtml += "<td colspan='5' class='BorderBottom' style='text-align: left; padding-left: 10px; padding-top: 0px; padding-bottom: 15px;" + alternateColor + "'><b>" + TabData[idx].Loans[i].RepresentativeExampleMessage + "</b></td>";
                rowHtml += "</tr>";
            }

            $(rowHtml).appendTo('#table_results');
        }
    }
}

function GetTypicalAPRText(loan) {

    var aprStr = '';
    if ((loan.Fool_TypicalAPR != null) && (loan.Fool_TypicalAPR != "")) {
        aprStr = loan.Fool_TypicalAPR;
    }
    else {
        // round to maximum of 2 decimals 
        var apr = Math.round(loan.TypicalAPR * 100) / 100;
        aprStr += "<span>";
        if (loan.LoanType == 0) {
            aprStr += "Representative <span class='aprValue'>" + apr + "%</span> APR";
        }
        else {
            aprStr += "Typical <span class='aprValue'>" + apr + "%</span> APR";
        }
        aprStr += "</span>";      
    }
    var existingCustomerHTML = '';
    if (loan.CustomerType.toLowerCase() == 'existing customer') {
        existingCustomerHTML = '<br /><span class="existing-customer">(For existing customers only)</span>';
    }

    aprStr = aprStr + existingCustomerHTML;

    return aprStr;
}

function GetTAR_MonthlyRepayment(loan)
{
	if((loan.Fool_TAR_MonthlyRepayment != null) && (loan.Fool_TAR_MonthlyRepayment != ""))
	{
		return loan.Fool_TAR_MonthlyRepayment;
	}	
	else
	{
		return FormatCurrency(loan.TotalAmountRepayable) + " /<br />" + FormatCurrency(loan.MonthlyRepayment);
	}
}

function GetAmountAndTerm(loan)
{
	if((loan.Fool_AmountAndTerm != null) && (loan.Fool_AmountAndTerm != ""))
	{
		return loan.Fool_AmountAndTerm;
	}	
	else
	{
		return FormatCurrency(loan.AmountRequested) + '<br/>' + loan.TermInMonths + ' months';
	}
}

function FormatCurrency(num)
{
	// this will format a number to currency
	
	num = num.toString().replace(/\$|\,/g,'');
	
	if(isNaN(num))
	{
		num = "0";
	}
	
	var sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	
	var cents = num%100;
	num = Math.floor(num/100).toString();
	
	if(cents<10)
	{
		cents = "0" + cents;
	}
	
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	{
		num = num.substring(0,num.length-(4*i+3))+','+
			num.substring(num.length-(4*i+3));
	}
	return (((sign)?'':'-') + '&pound;' + num + '.' + cents);
}

function FindTab(id)
{
  var idx = 0;  
  for (var i = 0; i < TabData.length; i++)
  {
    if (TabData[i].TabName == id)
    {
      idx = i;
      break;
    }
  }  
  return idx;
}

