﻿function getColorOnGradient(start, end, position) {
    var r1, g1, b1, r2, g2, b2;
    if (start.length == 7) {
        r1 = parseInt(start.substring(1, 3), 16);
        g1 = parseInt(start.substring(3, 5), 16);
        b1 = parseInt(start.substring(5), 16);
    }
    if (start.length == 6) {
        r1 = parseInt(start.substring(0, 2), 16);
        g1 = parseInt(start.substring(2, 4), 16);
        b1 = parseInt(start.substring(4), 16);
    }
    if (start.length == 4) {
        r1 = parseInt(start.substring(1, 2), 16);
        g1 = parseInt(start.substring(2, 3), 16);
        b1 = parseInt(start.substring(3), 16);
    }
    if (start.length == 3) {
        r1 = parseInt(start.substring(0, 1), 16);
        g1 = parseInt(start.substring(1, 2), 16);
        b1 = parseInt(start.substring(2), 16);
    }
    if (end.length == 7) {
        r2 = parseInt(end.substring(1, 3), 16);
        g2 = parseInt(end.substring(3, 5), 16);
        b2 = parseInt(end.substring(5), 16);
    }
    if (end.length == 6) {
        r2 = parseInt(end.substring(0, 2), 16);
        g2 = parseInt(end.substring(2, 4), 16);
        b2 = parseInt(end.substring(4), 16);
    }
    if (end.length == 4) {
        r2 = parseInt(end.substring(1, 2), 16);
        g2 = parseInt(end.substring(2, 3), 16);
        b2 = parseInt(end.substring(3), 16);
    }
    if (end.length == 3) {
        r2 = parseInt(end.substring(0, 1), 16);
        g2 = parseInt(end.substring(1, 2), 16);
        b2 = parseInt(end.substring(2), 16);
    }

    var r = Math.round(r1 + (r2 - r1) * position).toString(16);
    var g = Math.round(g1 + (g2 - g1) * position).toString(16);
    var b = Math.round(b1 + (b2 - b1) * position).toString(16);

    return '#' + r + g + b;
}

function setTableColors(start, end, tables) {
    $(tables).each(function(index, table) {
        var cols = $('.reportCol', table);
        var steps = cols.length;
        for (var i = 0; i < steps; i++) {
            $(cols[i]).css('background-color', getColorOnGradient(start, end, i / steps));
        } 
    });
}
