/*
    
    /////////////////////////////
    Javascript Gradient Generator
    Version 1.0 by Aaron Moodie
    Adapted from http://www.codingforums.com/showthread.php?t=79463
    /////////////////////////////
    
*/

// array containing pairs of colours
var colour_pair = new Array();

colour_pair[0] = ["0033FF","534741"];
colour_pair[1] = ["00e4cc","ed5300"];
colour_pair[2] = ["6fa6b2","ffc600"];
colour_pair[3] = ["e6a17c","02c587"];
colour_pair[4] = ["81cf90","8d075f"];
colour_pair[5] = ["a3cafa","f0830e"];
colour_pair[6] = ["1ecef4","824ac1"];
colour_pair[7] = ["00e165","ee7eb3"];
colour_pair[8] = ["e79b69","5d7fef"];
colour_pair[9] = ["b0ca03","9a38ed"];



function hexdec (hex_string) {
    // Returns the decimal equivalent of the hexadecimal number  
    // Original by Philippe Baumann
    hex_string = (hex_string+'').replace(/[^a-f0-9]/gi, '');
    return parseInt(hex_string, 16);
}



function convert_to_hex(num) {
    // Converstes numeric value (such as 170) to a hexadecimal string (such as 'AA')
    // Original by Jim Bumgardner
    var nybHexString = "0123456789ABCDEF";
    return String(nybHexString.substr((num >> 4) & 0x0F,1)) + nybHexString.substr(num & 0x0F,1);
}



function gradient(hex_from, hex_to, color_steps) {
    // Returns array with length 'color_steps' of colours as a gradient from 'hex_from' to 'hex_to'
    
    var from_rgb = new Array();
    var to_rgb = new Array();
    var step_rgb = new Array();
    var gradient_colors = new Array();
    var rgb = new Array();
    var hex_rgb = new Array(); 
     
    from_rgb['r'] = hexdec(hex_from.substr(0, 2)); 
    from_rgb['g'] = hexdec(hex_from.substr(2, 2));
    from_rgb['b'] = hexdec(hex_from.substr(4, 2)); 
     
    to_rgb['r'] = hexdec(hex_to.substr(0, 2));
    to_rgb['g'] = hexdec(hex_to.substr(2, 2)); 
    to_rgb['b'] = hexdec(hex_to.substr(4, 2)); 
     
    step_rgb['r'] = (from_rgb['r'] - to_rgb['r']) / (color_steps); 
    step_rgb['g'] = (from_rgb['g'] - to_rgb['g']) / (color_steps); 
    step_rgb['b'] = (from_rgb['b'] - to_rgb['b']) / (color_steps); 
    

    for(var i = 0; i <= color_steps; i++) { 
        rgb['r'] = Math.floor(from_rgb['r'] - (step_rgb['r'] * i)); 
        rgb['g'] = Math.floor(from_rgb['g'] - (step_rgb['g'] * i)); 
        rgb['b'] = Math.floor(from_rgb['b'] - (step_rgb['b'] * i)); 
        
        hex_rgb['r'] = convert_to_hex(rgb['r']); 
        hex_rgb['g'] = convert_to_hex(rgb['g']); 
        hex_rgb['b'] = convert_to_hex(rgb['b']);
        
        var hex_string = "";
        
        for (hex in hex_rgb) {
            hex_string += hex_rgb[hex];
        }
                
        gradient_colors.push(hex_string); 
    } 
     
    return gradient_colors; 
}

