﻿/* Sets.js
 *
 */
 
function Sets(set_name, sets_array, set_names)
{
    this.name = set_name;
    this.sets = new Array();
    this.set_name = new Array();
    //if (typeof sets == [])
    {
        for (var i = 0; i < sets_array.length; i++) {
            this.sets[i] = sets_array[i];
            this.set_name[i] = set_names[i];
        }
    }
    this.interval = new Array();
}

Sets.prototype.toString = function(type)
{
    var show = false;
    for (i = 0; i < this.sets.length; i++)
        if (this.sets[i] != "")
            show = true;
    
    if (!show)
        return "<tr><td colspan='4'><hr></td></tr><tr><td colspan='4'><b>No " + this.name.substring(0,this.name.length) + " Required</b></td></tr>";
        
    var str = "";
    // only print the name for Government. i.e if there is more than one set type
    // otherwise set setname[0] == name for the sets[] printing
    str += "<tr><td colspan='4'><hr></td></tr>"
    if (this.sets.length > 1) {
        str += "<tr><td colspan='4'><b>" + this.name + ":</b></td></tr>";
    } else {
        this.set_name[0] = this.name;
        // if printed or blank is passed in add it now.
        if (type)
            this.set_name[0] += " " + type;
    }
    var i;
    
    for (i = 0; i < this.sets.length; i++) 
        if (this.sets[i] != "")
            str += "<tr><td colspan='3'><b>" + this.set_name[i] + ":</b> #Sets: " + this.sets[i] + "</td><td></td></tr>";
    
    if (this.interval.length > 0) {
       str += "<tr><td colspan = '4'>";
        str += "<table width='500px' cellpadding='2' bgcolor='#f7f7f7'font-family:'arial' align='left'>";
        //str += "<tr><td></td><td colspan='3'><hr></td></tr>";
       // str += "<tr><td></td><td>From</td><td>To</td><td>Interval</td></tr>";
       for (i = 0; i < this.interval.length; i++)
           str += "<tr><td></td><td><b>From:</b> " + this.interval[i].from + "</td> <td><b>To:</b> " + 
              this.interval[i].to + "</td> <td><b>Inc:</b> " + 
              this.interval[i].inc + "</td></tr>";
			   str += "<tr><td col span='4'></td></tr></table>";
        //str += "</table>";//</td></tr>";
    }
    return str;
}

Sets.prototype.delete_interval = function ()
{
    if (this.interval.length > 0)
        this.interval.length = this.interval.length - 1;
    else    
        alert("Error removing " + this.name + " interval length: " + this.interval.length);
}

Sets.prototype.delete_all_intervals = function ()
{
    this.interval.length = 0;
}

Sets.prototype.add_interval = function(from, to, inc)
{
    var error;
    // TODO warning about missing data?
    if (from == undefined || from == null) 
        error += ",from";
    
    if (to == undefined || to == null) 
        error += ",to";
     
    if (inc == undefined || inc == null) 
        error += ",increment";
    
    if (error && error.length > 0)
        alert("Warning increment " + this.interval.length + " of " + this.name + 
              " " + error + " is/are undefined.");
              
    this.interval[this.interval.length] = new interval(from, to, inc);
}

/* interval object */
function interval(from, to, inc)
{
    this.from = from;
    this.to = to;
    this.inc = inc;
}
