﻿ScheduleBuilder = {};

ScheduleBuilder.BuildHardshipTestResultsSchedule = function(hardshipTestResults){
    var hardshipTestResultsSchedule = document.createElement('table');;
    var testResults = hardshipTestResults;
    var tblHead = document.createElement('thead');
    var tblBody = document.createElement('tbody');
    var tblFoot = document.createElement('tfoot');
    var tblRow = document.createElement('tr');
    var questions1 =[   "20% of my monthly income is:",
                        "Estimated monthly payment:",
                        "Is monthly payment more than 20% of my income?:"
                    ];
    var questions2 =[   "My monthly payment:",
                        "Monthly income minus monthly payment:",
                        "330% of state poverty:",
                        "220% of minimum wage:",
                        "Larger of Line 3 and 4:",
                        "Is Line 2 less than Line 5?"
                    ];
    ceateNewTable(questions1, 0, 1);
    ceateNewTable(questions2, 3, 2);
    
    function ceateNewTable(questionsArray, start, testNumber){
        var tblHead = document.createElement('thead');
        var tblBody = document.createElement('tbody');
        var tblFoot = document.createElement('tfoot');
        var tblRow = document.createElement('tr');
        var questions = questionsArray;
        
        hardshipTestResultsSchedule.appendChild(tblHead);
        hardshipTestResultsSchedule.appendChild(tblBody);
        hardshipTestResultsSchedule.appendChild(tblFoot);
        
        tblBody.appendChild(tblRow);
        tblHead.appendChild(createHead(testNumber));
        
        for(var i=0; i < questionsArray.length; i++){
            var cellContent1 = questions[i];
            var cellContent2 = testResults[i+start];
            tblBody.appendChild(createRow(cellContent1,cellContent2,i+1));
        }
    }
    
    function createHead(testNumber){
        var tblHeadRow = document.createElement('tr');
        var tblCell = document.createElement('th');
        tblCell.appendChild(document.createTextNode("Test "+testNumber));
        tblCell.colSpan = 2;
        tblHeadRow.appendChild(tblCell);
        return tblHeadRow;
    }

    function createRow(cell2,cell3,lineNumber){
        var tbleRow = document.createElement('tr');
        var tblCell1 = document.createElement('td');
        var tblCell2 = document.createElement('td');
        var tblCell3 = document.createElement('td');
        tblCell2.className = "calc-economicHardshipDeferment-lineDescription";
        tblCell3.className = "calc-economicHardshipDeferment-lineValue";
        var cellContent1 = createCellContent("Line&nbsp;"+lineNumber);
        var cellContent2 = createCellContent(cell2);
        var cellContent3 = createCellContent(cell3);
        tblCell1.appendChild(cellContent1);
        tblCell2.appendChild(cellContent2);
        tblCell3.appendChild(cellContent3);
        tbleRow.appendChild(tblCell1);
        tbleRow.appendChild(tblCell2);
        tbleRow.appendChild(tblCell3);
        return tbleRow;
    }
    
    function createCellContent(funcArg){
        var val = document.createElement('span');
        val.innerHTML = funcArg;
        return val;
    }
    
    return hardshipTestResultsSchedule;
}    


ScheduleBuilder.BuildPaymentOptionsSchedule = function(paymentOption){

    var paymentOptionsSchedule = document.createElement('table');
    var tblHead = document.createElement('thead');
    var tblBody = document.createElement('tbody');
    var tblFoot = document.createElement('tfoot');
    var tblRow = document.createElement('tr');

    ceateNewTable();
    
    function ceateNewTable(){
        paymentOptionsSchedule.appendChild(tblHead);
        paymentOptionsSchedule.appendChild(tblBody);
        paymentOptionsSchedule.appendChild(tblFoot);
        
        tblBody.appendChild(tblRow);
        createHead();
        for(var n in paymentOption){
            if( n != "Title" && n != "TotalBonus" && n != "TotalNumberOfPayments" &&
                n != "InterestRate" && n != "Term" && n != "PrincipalBalance"){
                var cellContent1 = n;
                var cellContent2 = paymentOption[n];
                if(n == "Payments"){
                    for(var i=0; i<paymentOption[n].length; i++){
                        cellContent1 = (i == 0) ? "Est. Monthly Payments" :" ";
                        cellContent2 = paymentOption[n][i]["NumberOfPayments"] +" payments of "+ 
                                            "<span name=\"monthlyPayment\">"+njs.Converter.NumberToMoney(paymentOption[n][i]["Amount"])+"</span>";
                        tblBody.appendChild(createRow(cellContent1,cellContent2));
                    }
                }
                else{
                    switch(n){
                        case "TotalLoanCost" :
                            cellContent1 = "Est. Total Cost";
                            cellContent2 = "<span name=\"totalLoanCost\">"+njs.Converter.NumberToMoney(paymentOption[n])+"</span>";
                            tblFoot.appendChild(createRow(cellContent1,cellContent2));
                            break;
                        
                        default:
                            tblBody.appendChild(createRow(cellContent1,cellContent2));
                            break;
                    }
                }
            }
        }
    }
    
    function createHead(){
        var tblHeadRow = document.createElement('tr');
        var tblCell = document.createElement('th');
        tblCell.appendChild(document.createTextNode(paymentOption["Title"]));
        tblCell.colSpan = 2;
        tblHeadRow.appendChild(tblCell);
        tblHead.appendChild(tblHeadRow);
    }

    function createRow(cell1,cell2){
        var tbleRow = document.createElement('tr');
        var tblCell1 = document.createElement('td');
        var tblCell2 = document.createElement('td');
        var cellContent1 = createCellContent(cell1);
        var cellContent2 = createCellContent(cell2);
        tblCell1.appendChild(cellContent1);
        tblCell2.appendChild(cellContent2);
        tbleRow.appendChild(tblCell1);
        tbleRow.appendChild(tblCell2);
        return tbleRow;
    }
    
    function createCellContent(funcArg){
        var val = document.createElement('span');
        val.innerHTML = funcArg;
        return val;
    }
    
    return paymentOptionsSchedule;
}