﻿
var cal1 = new CalendarPopup("Calendar1");
cal1.showNavigationDropdowns();


function switchTab(oTab, n) {
    if (this.className == "TabOn") return;
    var coll = getElementsByClass("TabOn", $("TabStrip"), "div");
    if (coll.length != 0) coll[0].className = "TabOff";
    var coll = getElementsByClass("TabContentOn", $("TabContentPanel"), "div");
    if (coll.length != 0) coll[0].className = "TabContentOff";
    $("tabcontent" + n).className = "TabContentOn";
    oTab.className = "TabOn";
}

function handleError(s) {
    alert("The system has encountered an error. Please refresh the page.");
    $("Wait").style.display = "none";
    $("Start").style.display = "block";
}

function handleFSI(s) {
    if (s == "EXPIRE") {
        alert("Your session has expired.");
        window.location = "Default.aspx";
    }

    if (s == "HITS0") {
        alert("You have no transactions left.");
        window.location = "Store.aspx";
    }

    $("Wait").style.display = "none";
    var o = eval("(" + s + ")");
    var ft;

    if (o.IsSuccess) {
        var now = new Date();
        var fd = (o.FuelDate.getMonth() + 1) + "/" + o.FuelDate.getDate() + "/" + o.FuelDate.getFullYear();
        $("RGrandTotal").innerHTML = "$" + unTruncate(o.TotalFSCRevenue, 2);
        $("RCPG").innerHTML = "$" + unTruncate(o.CostPerGallon, 3);
        $("ROrigin").innerHTML = o.TripOrigin;
        $("RDestination").innerHTML = o.TripDestination;
        $("Top_Origin").innerHTML = o.TripOrigin;
        $("Top_Destination").innerHTML = o.TripDestination;
        $("RFuelDate").innerHTML = fd;
        $("Top_FuelDate").innerHTML = fd;
        $("RReportDate").innerHTML = (now.getMonth() + 1) + "/" + now.getDate() + "/" + now.getFullYear() + " " + now.getHours() + ":" + now.getMinutes();
        if ($("RouteMethod").options == null) {
            $("RRouteMethod").innerHTML = "Truck Practical";
            $("Top_RouteMethod").innerHTML = "Truck Practical";
        }
        else {
            $("RRouteMethod").innerHTML = $("RouteMethod").options[$("RouteMethod").selectedIndex].text;
            $("Top_RouteMethod").innerHTML = $("RouteMethod").options[$("RouteMethod").selectedIndex].text;
        }
        ft = o.FuelType.replace('_', ' ').fixUpperCase();
        ft = ft.replace('Promiles', 'ProMiles');
        //Opis Cost to Wholesale change
        if (ft == "Opis Cost") ft = "Opis Wholesale";
        $("RPriceType").innerHTML = ft;
        $("Top_FuelType").innerHTML = ft;
        $("RMPG").innerHTML = unTruncate(o.MPG, 2);
        $("Top_MPG").innerHTML = unTruncate(o.MPG, 2);
        $("RMPG2").innerHTML = unTruncate(o.MPG, 2);
        $("RTotalMiles").innerHTML = unTruncate(o.TripMiles, 1);
        $("Top_Distance").innerHTML = unTruncate(o.TripMiles, 1);
        $("RTotalGallonsConsumed").innerHTML = unTruncate(o.TotalGallonsConsumed, 1);
        $("RTotalGallonsConsumed2").innerHTML = unTruncate(o.TotalGallonsConsumed, 1);
        $("RFuelCost").innerHTML = "$" + unTruncate(o.CostPerGallon, 3);
        $("Top_CPG").innerHTML = "$" + unTruncate(o.CostPerGallon, 3);
        $("RFSCTrigger").innerHTML = "$" + unTruncate(o.FuelSurchargeTrigger, 3);
        $("TriggerPoint").innerHTML = "$" + unTruncate(o.FuelSurchargeTrigger, 3);
        $("Top_Trigger").innerHTML = "$" + unTruncate(o.FuelSurchargeTrigger, 3);
        $("RFSCExcess").innerHTML = "$" + unTruncate(o.CostInExcessOfTrigger, 3);
        $("RFSCGrandTotal").innerHTML = "$" + unTruncate(o.TotalFSCRevenue, 2);
        $("Top_FSC").innerHTML = "$" + unTruncate(o.TotalFSCRevenue, 2);
        var CPM = o.TotalFSCRevenue / o.TripMiles;
        CPM = unTruncate(bankerRound(CPM, 3), 3);
        $("Top_CPM").innerHTML = CPM;
        $("Top_CPGAdj").innerHTML = unTruncate(o.Adder, 4); ;
        //Clear
        // var stateTable = $("MilesByStateTable");
        //var fuelCostTable = $("FuelCostTable");
        var stateTaxTable = $("StateFuelTaxTable");
        var stateBreakdown = $("StateBreakdownTable");
        var truckStopTable = $("TruckStopBreakdownTable");
        //var cpgTable = $("CPGBreakdownTable");

        //removeChildren(stateTable);
        //removeChildren(fuelCostTable);
        removeChildren(stateTaxTable);
        removeChildren(stateBreakdown);
        removeChildren(truckStopTable);
        //removeChildren(cpgTable);

        var a = o.StateDataCollection;
        var tr;


        //STATE TAX TABLE
        for (i = 0; i < a.length; i++) {
            tr = createRow("DataRow", new Array(a[i].StateAbbreviation, "$" + unTruncate(a[i].TotalTax, 3), "$" + unTruncate(a[i].MileTaxTotal, 3), "$" + unTruncate(a[i].IFTASurchargeTotal, 3)));
            stateTaxTable.appendChild(tr);
        }
        //Totals Row
        tr = createRow("TotalsRow", new Array("Tot.", "$" + unTruncate(o.TotalFuelTax, 3), "$" + unTruncate(o.TotalMileTax, 3), "$" + unTruncate(o.TotalIFTASurcharge, 3)));
        stateTaxTable.appendChild(tr);

        //Gallons Consumed
        tr = createRow("DataRow", new Array("Gal.", unTruncate(o.TotalGallonsConsumed, 1), unTruncate(o.TotalGallonsConsumed, 1), unTruncate(o.TotalGallonsConsumed, 1)));
        stateTaxTable.appendChild(tr);

        //Per Gallon
        tr = createRow("TotalsRow", new Array("Tx. Pg.", "$" + unTruncate(o.StateTaxPerGallon, 3), "$" + unTruncate(o.MileTaxPerGallon, 3), "$" + unTruncate(o.IFTATaxPerGallon, 3)));
        stateTaxTable.appendChild(tr);

        //STATE BREAKDOWN
        for (i = 0; i < a.length; i++) {
            tr = createRow("ListRow", new Array(a[i].StateName, unTruncate(a[i].MilesInState, 1), unTruncate(a[i].PercentOfTotalTrip, 1) + "%", "$" + unTruncate(a[i].FuelCostExTax, 3), "$" + unTruncate(a[i].WeightedFuelCostExTax, 3)));
            stateBreakdown.appendChild(tr);
        }

        tr = createRow("ListTableTotalsRow", new Array("Total", unTruncate(o.TripMiles, 1), "100%", "", "$" + unTruncate(o.CostPerGallonExTax, 3)));
        stateBreakdown.appendChild(tr);

        //Kludge for Saved Lanes;
        var tmptax;
        if (o.ErrorDescription != null && o.ErrorDescription != "") {
            tmptax = o.ErrorDescription;
        }
        else {
            tmptax = "000";
        }
        var showState = false;
        var showMile = false;
        var showIFTA = false;
        
        //Plug in any tax modifiers
        if ($("AddStateTax").checked || tmptax.substring(0,1) == "1") {
            tr = createRow("ListRow", new Array("", "", "", "IFTA Tax Per Gal.", "$" + unTruncate(o.StateTaxPerGallon, 3)));
            stateBreakdown.appendChild(tr);
            showState = true;
        }

        if ($("AddIFTASurcharge").checked || tmptax.substring(2, 3) == "1") {
            tr = createRow("ListRow", new Array("", "", "", "IFTA Surcharge Per Gal.", "$" + unTruncate(o.IFTATaxPerGallon, 3)));
            stateBreakdown.appendChild(tr);
            showMile = true;
        }

        if ($("AddMileTax").checked || tmptax.substring(1, 2) == "1") {
            tr = createRow("ListRow", new Array("", "", "", "Mile Tax Per Gal.", "$" + unTruncate(o.MileTaxPerGallon, 3)));
            stateBreakdown.appendChild(tr);
            showIFTA = true;
        }


        //Totals Row
        //Only do if one of the tax rows was requested
        if (showState || showMile || showIFTA) {
            tr = createRow("ListTableTotalsRow", new Array("", "", "", "Total with Tax", "$" + unTruncate(o.CostPerGallon, 3)));
            stateBreakdown.appendChild(tr);
        }

        $("Top_StopCount").innerHTML = o.TruckStopDataCollection.length;
        //TRUCK STOP BREAKDOWN
        if (o.TruckStopDataCollection) {
            a = o.TruckStopDataCollection;
            var link;
            var highrow = new Array();
            var lowrow = new Array();
            var highprice = 0;
            var lowprice = 100;
            var currprice = 0;

            for (i = 0; i < a.length; i++) {
                link = document.createElement("a");
                link.href = "http://www.truckstopguide.com/StopEnhanced.aspx?tsid=" + a[i].OPISID;
                link.target = "_blank";
                link.appendChild(document.createTextNode(a[i].TruckStopName));
                currprice = a[i].Price + a[i].Adder;
                tr = createRow("ListRow", new Array(link, a[i].Location + " " + a[i].City, a[i].StateAbbreviation, unTruncate(a[i].Price, 3), unTruncate(o.Adder, 3), "$" + unTruncate(bankerRound(currprice, 3), 3)), "row" + i);
                truckStopTable.appendChild(tr);
                if (currprice == lowprice) { lowrow.push(i); }
                if (currprice == highprice) { highrow.push(i); }
                if (currprice < lowprice) { lowrow = new Array(); lowprice = currprice; lowrow.push(i); }
                if (currprice > highprice) { highrow = new Array(); highprice = currprice; highrow.push(i) };
            }

            for (i = 0; i < lowrow.length; i++) {
                $("row" + lowrow[i]).className = "LowRow";
            }

            for (i = 0; i < highrow.length; i++) {
                $("row" + highrow[i]).className = "HighRow";
            }
        }
        $("Start").style.display = "none";
        $("Results_Success").style.display = "block";
        $('Results_Success_Full').style.display = ($("ShowFullResults").checked) ? '' : 'none';
    }
    else {
        $("ErrorText").innerHTML = o.ErrorDescription;
        $("ErrorMessage").style.display = "block";
    }

    if ($("HitsLeft") != null) {
        var hits = parseInt(trim($("HitsLeft").innerHTML));
        hits--;
        if (hits < 0) hits = 0;
        $("HitsLeft").innerHTML = "" + hits;
    }
}

function createRow(cname, valArray, rowid) {
    var tr;
    var td;
    var txt;
    tr = document.createElement("tr");
    tr.id = rowid;
    for (n = 0; n < valArray.length; n++) {
        td = document.createElement("td");
        td.className = cname;
        if (typeof valArray[n] != 'object') {
            txt = document.createTextNode(valArray[n]);
            td.appendChild(txt)
        }
        else {
            td.appendChild(valArray[n]);
        }
        tr.appendChild(td);
    }

    return tr;
}

