<!--

/*
 * JSGrid - JavaScript Grid Component for Internet Explorer
 *
 * JSGRID Version 1.0 (c) Copyright 2002, 2006 All Rights Reserved by Georgikawa Wang.
 *
 */

/**
 *   JSGrid Prototype
 */
function JSGrid()
{
    this.oTable                 = null;
    this.startRow               = 1;
    this.endRow                 = 0;
    this.ifgColor               = "#ffffff";
    this.ibgColor               = "#808080";
    this.gapColor               = "#efefef";

    this.sArray                 = null;
    this.iArray                 = null;
    this.kArray                 = null;
    this.tArray                 = null;
    this.cfArray                = null;
    this.defaultOrder           = 0;
    this.sortOrder              = null;
    this.sortIndex              = -1;
    this.defaultType            = false;
    this.sortType               = null;
    this.inproc                 = 0;
    this.resizeEnabled          = true;
    this.sortEnabled            = true;    
    this.toggleEnabled          = false;    

    this.rFlag                  = parseInt(0);
    this.inResize               = parseInt(0);
    this.oldWidth               = parseInt(0);
    this.oldpWidth              = parseInt(0);
    this.oldEventX              = parseInt(0);
    this.oldIndex               = parseInt(-1);

    this.fieldID                = "";
    this.tableID                = "";
    this.hdrdivID               = ""
    this.tablehID               = "";

    this.startSort              = jsgStartSort;
    this.quickSort              = jsgQuickSort;
    this.swapSortData           = jsgSwapSortData;
    this.setCmpMethod           = jsgSetCmpMethod;
    this.cmpByDate              = jsgCmpByDate;
    this.cmpSortData            = null;

    this.startResize            = jsgStartResize;
    this.stopResize             = jsgStopResize;
    this.resizeCell             = jsgResizeCell;
    this.clearResize            = jsgClearResize;
    this.toggleCell             = jsgToggleCell;

    this.setSortType            = jsgSetSortType;
    this.getSortType            = jsgGetSortType;
    this.setDefaultSortOrder    = jsgSetDefaultSortOrder;
    this.getDefaultSortOrder    = jsgGetDefaultSortOrder;
    this.setSortOrder           = jsgSetSortOrder;
    this.getSortOrder           = jsgGetSortOrder;
    this.setSortIndex           = jsgSetSortIndex;
    this.getSortIndex           = jsgGetSortIndex;
    this.setStartRow            = jsgSetStartRow;
    this.getStartRow            = jsgGetStartRow;
    this.setEndRow              = jsgSetEndRow;
    this.getEndRow              = jsgGetEndRow;

    this.clearGapColor          = jsgClearGapColor;
    this.setGapColor            = jsgSetGapColor;
    this.selectRow              = jsgSelectRow;
    this.getRowData             = jsgGetRowData;
    this.getRowData2            = jsgGetRowData2;
    this.getRowDataByRowNumber  = jsgGetRowDataByRowNumber;
    this.getRowDataByRowNumber2 = jsgGetRowDataByRowNumber2;
    this.setRowDataByRowNumber  = jsgSetRowDataByRowNumber;
    this.getInvertRowData       = jsgGetInvertRowData;
    this.getInvertRowData2      = jsgGetInvertRowData2;
    this.getInvertRowNumber     = jsgGetInvertRowNumber;
    this.setInvertRowData       = jsgSetInvertRowData;
    this.invertRow              = jsgInvertRow;
    this.invertDataRow          = jsgInvertDataRow;
    this.clearInvertRow         = jsgClearInvertRow;
    this.setLineNumber          = jsgSetLineNumber;

    this.getCellWidth           = jsgGetCellWidth;
    this.setCellWidth           = jsgSetCellWidth;
    this.getCellWidths          = jsgGetCellWidths;
    this.setCellWidths          = jsgSetCellWidths;

    this.getCheckBox            = jsgGetCheckBox;
    this.setCheckBox            = jsgSetCheckBox;
    this.getCheckBoxes          = jsgGetCheckBoxes;
    this.setCheckBoxes          = jsgSetCheckBoxes;

    this.insertRow              = jsgInsertRow;
    this.deleteRow              = jsgDeleteRow;

    this.enableHeader           = jsgEnableHeader;
    this.disableHeader          = jsgDisableHeader;

    this.hideColumn             = jsgHideColumn;
    this.showColumn             = jsgShowColumn;

    this.lTrim                  = jsgLTrim;
    this.rTrim                  = jsgRTrim;
    this.Trim                   = jsgTrim;
    this.splitToken             = jsgSplitToken;

    this.scrollFloatingHeader   = jsgScrollFloatingHeader;
    this.createFloatingHeader   = jsgCreateFloatingHeader;
    this.adjustFloatingHeader   = jsgAdjustFloatingHeader;
}

/** Column Sort Methods
 */

function jsgStartSort(otable, cellIndex)
{
    if(this.sortEnabled == false){
    	return;
    }
    
    if(this.inproc == 1){
        return;
    }
    else{
        this.inproc = 1;
    }

    if(this.oTable == null || this.oTable != otable){
        this.oTable = otable;
    }

    if(this.oTable.rows.length < 2){
        this.inproc = 0;
        return;
    }

    if(this.oTable.id != otable.id || this.oTable.rows[0].cells.length != otable.rows[0].cells.length){
        this.cfArray = new Array();
    }

    this.sArray = new Array(this.oTable.rows.length);
    this.iArray = new Array(this.oTable.rows.length);

    this.sortType = this.defaultType;

    if(cellIndex < 0 || cellIndex >= this.oTable.rows[0].cells.length){
        this.inproc = 0;
        return;
    }
    
    this.clearGapColor(this.oTable);

    this.sortIndex = cellIndex;

    if(!this.cfArray){
        this.cfArray = new Array();
    }
    if(!this.cfArray[cellIndex]){
        this.setCmpMethod(cellIndex, jsgCmpSortData);
    }
    this.cmpSortData = this.cfArray[cellIndex];

    for(var i = 0; i < this.sArray.length; i++){
        this.iArray[i] = i;
        if(isNaN(this.sArray[i] = this.Trim(this.oTable.rows[i].cells[cellIndex].innerText)) && (this.sArray[i].length > 0) && i > this.startRow - 1){
            this.sortType = true;
        }
    }

    if(this.kArray == null || this.kArray.length != this.oTable.rows[0].cells.length){
        this.kArray = new Array(this.oTable.rows[0].cells.length)
        for(var i = 0; i < this.kArray.length; i++){
            this.kArray[i] = 0;
        }
    }

    if(this.defaultOrder == 'DESC'){
        this.sortOrder = true;
        this.defaultOrder = 0;
    }
    else if(this.defaultOrder == 'ASC'){
        this.sortOrder = false;
        this.defaultOrder = 0;
    }
    else{
        this.sortOrder = this.kArray[cellIndex]++ % 2 == 0;
    }

    this.quickSort((this.startRow < 0 || this.startRow > this.oTable.rows.length - 1) ? 0 : this.startRow, (this.endRow < this.startRow || this.endRow > this.oTable.rows.length - 1) ? this.oTable.rows.length - 1 : this.endRow);

    var outerHTML = this.oTable.outerHTML.substring(0, this.oTable.outerHTML.indexOf('<TR>'));

    for(var i = 0; i < this.iArray.length; i++){
        outerHTML += this.oTable.rows[this.iArray[i]].outerHTML;
    }

    if(this.oTable.caption){
        outerHTML += this.oTable.caption.outerHTML;
    }

    outerHTML += '</TBODY></TABLE>';

    this.oTable.outerHTML = outerHTML;
    
    this.sArray = null;
    this.iArray = null;
    this.inproc = 0;
}

function jsgQuickSort(left, right)
{
    var L = left, R = right, index = 0;

    if(left >= right){
        return;
    }

    index = Math.floor((left + right) / 2);

    while(left < right){
        while(left < index){
            if(this.sortOrder){
                if(this.cmpSortData(this.sArray[this.iArray[index]], this.sArray[this.iArray[left]])){
                    break;
                }
            }
            else{
                if(this.cmpSortData(this.sArray[this.iArray[left]], this.sArray[this.iArray[index]])){
                    break;
                }
            }
            left++;
        }

        while(right > index){
            if(this.sortOrder){
                if(this.cmpSortData(this.sArray[this.iArray[right]], this.sArray[this.iArray[index]])){
                    break;
                }
            }
            else{
                if(this.cmpSortData(this.sArray[this.iArray[index]], this.sArray[this.iArray[right]])){
                    break;
                }
            }
            right--;
        }

        if(left < right){
            this.swapSortData(left, right);

            if(left == index){
                index = right;
                left++;
            }
            else if(right == index){
                index = left;
                right--;
            }
            else{
                left++;
                right--;
            }
        }
    }

    this.quickSort(L, index - 1);
    this.quickSort(index + 1, R);
}

function jsgSwapSortData(left, right)
{
    var temp           = this.iArray[left];
    this.iArray[left]  = this.iArray[right];
    this.iArray[right] = temp;
}

function jsgSetCmpMethod(cellIndex, functionReference)
{
    if(!this.cfArray){
        this.cfArray = new Array();
    }

    if(this.cfArray){
        this.cfArray[cellIndex] = functionReference;
        return(true);
    }

    return false;
}

function jsgCmpSortData(a, b)
{
    if(this.sortType){
        return(a > b);
    }
    else{
        if(a.length <= 0){
            return(false);
        }
        else if(b.length <= 0){
            return(true);
        }
        else{
            return(parseFloat(a) > parseFloat(b));
        }
    }
}

function jsgCmpByDate(da, db) // mm-dd-yyyy || mm/dd/yyyy
{
    da = da.replace(/\//g, '-');
    db = db.replace(/\//g, '-');

    var yeara = parseInt(da.substring(da.lastIndexOf('-') + 1, da.length), 10);
    var yearb = parseInt(db.substring(db.lastIndexOf('-') + 1, db.length), 10);

    if(yeara != yearb){
        return(yeara > yearb);
    }

    var montha = parseInt(da.substring(0, da.indexOf('-')), 10);
    var monthb = parseInt(db.substring(0, db.indexOf('-')), 10);

    if(montha != monthb){
        return(montha > monthb);
    }

    var datea = parseInt(da.substring(da.indexOf('-') + 1, da.lastIndexOf('-')), 10);
    var dateb = parseInt(db.substring(db.indexOf('-') + 1, db.lastIndexOf('-')), 10);

    return(datea > dateb);
}

/** Column Resize Methods
 */

function jsgStartResize(obj)
{
    if(this.resizeEnabled == false){
    	return;
    }
    	
    this.rFlag     = parseInt(1);
    this.inResize  = parseInt(0);
    this.oldWidth  = parseInt(obj.width);
    this.oldpWidth = parseInt(obj.parentNode.parentNode.parentNode.width);
    this.oldEventX = parseInt(window.event.x);
    this.oldIndex  = parseInt(obj.cellIndex);
}

function jsgStopResize(obj)
{
    if(this.resizeEnabled == false){
    	return;
    }
    	
    this.resizeCell(obj)

    this.rFlag     = parseInt(0);
    this.inResize  = parseInt(0);
    this.oldWidth  = parseInt(0);
    this.oldpWidth = parseInt(0);
    this.oldEventX = parseInt(0);
    this.oldIndex  = parseInt(-1);
}

function jsgResizeCell(obj)
{
    if(this.resizeEnabled == false){
    	return;
    }
    	
    if(this.rFlag == 0){
        return;
    }

    if(this.inResize == 1){
        return;
    }

    if(obj.cellIndex != this.oldIndex){
        obj = obj.parentNode.parentNode.parentNode.cells[this.oldIndex];
    }

    this.inResize = 1;

    var dx = parseInt(window.event.x - this.oldEventX);

    if(this.oldWidth > 0 && this.oldWidth + dx > 0){
        obj.width = dx + parseInt(this.oldWidth);
        obj.parentNode.parentNode.parentNode.width = dx + parseInt(this.oldpWidth);
    }

    this.inResize = 0;
}

function jsgClearResize()
{
    if(this.resizeEnabled == false){
    	return;
    }
    	
    if(this.rFlag != 0){
        this.rFlag = 0;
    }
}

function jsgToggleCell(obj)
{
    if(this.toggleEnabled == false){
    	return;
    }
    
    if(this.tArray == null){
        this.tArray = new Array(obj.parentNode.parentNode.parentNode.rows[0].cells.length);
        for(var i = 0; i < this.tArray.length; i++){
            this.tArray[i] = 0;
        }
    }

    var cellIndex = obj.cellIndex;

    obj = obj.parentNode.parentNode.parentNode.cells[obj.cellIndex];

    var dx = parseInt(obj.width);

    if(dx == 2 && this.tArray[cellIndex] > 2){
        obj.width = this.tArray[cellIndex];
    }
    else{
        this.tArray[cellIndex] = dx;
        obj.width = 2;
    }

    for(var i = 0, newWidth = 0; i < obj.parentNode.parentNode.parentNode.rows[0].cells.length; i++){
        newWidth += parseInt(obj.parentNode.parentNode.parentNode.rows[0].cells[i].width);
    }

    obj.parentNode.parentNode.parentNode.width = newWidth;
}

/** Misc Row Methods
 */

function jsgSetDefaultSortOrder(sortOrder)
{
    this.defaultOrder = sortOrder;
}

function jsgGetDefaultSortOrder(sortOrder)
{
    return(this.defaultOrder);
}

function jsgSetSortOrder(sortOrder)
{
    this.sortOrder = sortOrder;
}

function jsgGetSortOrder(sortOrder)
{
    return(this.sortOrder);
}

function jsgSetSortIndex(sortIndex)
{
    this.sortIndex = sortIndex;
}

function jsgGetSortIndex(sortIndex)
{
    return(this.sortIndex);
}

function jsgSetSortType(sortType)
{
    this.defaultType = sortType;
}

function jsgGetSortType(sortType)
{
    return(this.defaultType);
}

function jsgSetStartRow(startRow)
{
    this.startRow = startRow;
}

function jsgGetStartRow(startRow)
{
    return(this.startRow);
}

function jsgSetEndRow(endRow)
{
    this.endRow = endRow;
}

function jsgGetEndRow(endRow)
{
    return(this.endRow);
}

function jsgClearGapColor(tbl)
{
    if(tbl.gapColor && tbl.gapColor != this.gapColor){
    	this.gapColor = tbl.gapColor;
    }    	

    for(var i = 1; i < tbl.rows.length; i++){
        if(tbl.rows[i].style.backgroundColor == this.gapColor){
            tbl.rows[i].style.backgroundColor = '';
        }
    }
}

function jsgSetGapColor(tbl)
{
    if(tbl.gapColor && tbl.gapColor != this.gapColor){
    	this.gapColor = tbl.gapColor;
    }
    
    for(var i = 1; i < tbl.rows.length; i++){
        if(i % 2 == 0 && tbl.rows[i].style.backgroundColor != this.ibgColor){
            tbl.rows[i].style.backgroundColor = this.gapColor;
        }
    }
}

function jsgInvertRow(tbl, rowNum)
{
    if(isNaN(rowNum)){
        return;
    }

    rowNum = parseInt(rowNum);

    if(rowNum < 0 || rowNum >= tbl.rows.length){
        return;
    }
    
    if(tbl.ifgColor && tbl.ifgColor != this.ifgColor){
    	this.ifgColor = tbl.ifgColor;
    }
    if(tbl.ibgColor && tbl.ibgColor != this.ibgColor){
    	this.ibgColor = tbl.ibgColor;
    }
        
    tbl.rows[rowNum].style.color = this.ifgColor;
    tbl.rows[rowNum].style.backgroundColor = this.ibgColor;

    for(var i = 0; i < tbl.rows.length; i++){
        if(i != rowNum){
            tbl.rows[i].style.color = '';
            tbl.rows[i].style.backgroundColor = '';
        }
    }
}

function jsgInvertDataRow(tbl, data, cellIndex)
{
    if(isNaN(cellIndex)){
        return;
    }

    cellIndex = parseInt(cellIndex);

    if(cellIndex < 0 || cellIndex >= tbl.rows[0].cells.length){
        return;
    }

    for(var i = 0; i < tbl.rows.length; i++){
        if(jsgTrim(tbl.rows[i].cells[cellIndex].innerText) == jsgTrim(data)){
            this.invertRow(tbl, i);
        }
    }
}

function jsgClearInvertRow(tbl, rowNum)
{
    if(arguments.length > 1){
        if(isNaN(rowNum)){
            return;
        }

        rowNum = parseInt(rowNum);

        if(rowNum < 0 || rowNum >= tbl.rows.length){
            return;
        }

        tbl.rows[rowNum].style.color = '';
        tbl.rows[rowNum].style.backgroundColor = '';
    }
    else{
        for(var i = 0; i < tbl.rows.length; i++){
            tbl.rows[i].style.color = '';
            tbl.rows[i].style.backgroundColor = '';
        }
    }
}

function jsgSelectRow(obj)
{
    var tbl = obj.parentNode.parentNode;
    
    if(tbl.ifgColor && tbl.ifgColor != this.ifgColor){
    	this.ifgColor = tbl.ifgColor;
    }
    if(tbl.ibgColor && tbl.ibgColor != this.ibgColor){
    	this.ibgColor = tbl.ibgColor;
    }  

    for(var i = 0; i < tbl.rows.length; i++){
        if(tbl.rows[i] != obj){
            tbl.rows[i].style.color = '';
            tbl.rows[i].style.backgroundColor = '';
        }
    }    
    
    this.setGapColor(tbl);
    	
    obj.style.color = this.ifgColor;
    obj.style.backgroundColor = this.ibgColor;
}

function jsgGetRowData(obj)
{
    var a = new Array();

    for(var i = 0; i < obj.cells.length; i++){
        if(i == 0 && obj.cells[0].children.length > 0 && obj.cells[0].children[0].type == 'checkbox'){
            a[0] = obj.cells[0].children[0].checked;
            continue;
        }
        a[i] = this.Trim(obj.cells[i].innerText);
    }

    return(a);
}

function jsgGetRowData2(obj)
{
    var a = new Array();

    for(var i = 0, j = 0; i < obj.cells.length; i++, j++){
        if(i == 0 && obj.cells[0].children.length > 0 && obj.cells[0].children[0].type == 'checkbox'){
            a[0] = obj.cells[0].children[0].checked;
            a[1] = this.Trim(obj.cells[i].innerText);
            j++;
            continue;
        }
        a[j] = this.Trim(obj.cells[i].innerText);
    }

    return(a);
}

function jsgGetRowDataByRowNumber(tbl, rowNum)
{
    if(isNaN(rowNum)){
        return;
    }

    rowNum = parseInt(rowNum);

    if(rowNum < 0 || rowNum >= tbl.rows.length){
        return;
    }

    var a = new Array();

    var i = parseInt(rowNum);

    for(var j = 0; j < tbl.rows[i].cells.length; j++){
        if(j == 0 && tbl.rows[i].cells[0].children.length > 0 && tbl.rows[i].cells[0].children[0].type == 'checkbox'){
            a[0] = tbl.rows[i].cells[0].children[0].checked;
            continue;
        }
        a[j] = this.Trim(tbl.rows[i].cells[j].innerText);
    }

    return(a);
}

function jsgGetRowDataByRowNumber2(tbl, rowNum)
{
    if(isNaN(rowNum)){
        return;
    }

    rowNum = parseInt(rowNum);

    if(rowNum < 0 || rowNum >= tbl.rows.length){
        return;
    }

    var a = new Array();

    var i = parseInt(rowNum);

    for(var j = 0, k = 0; j < tbl.rows[i].cells.length; j++, k++){
        if(j == 0 && tbl.rows[i].cells[0].children.length > 0 && tbl.rows[i].cells[0].children[0].type == 'checkbox'){
            a[0] = tbl.rows[i].cells[0].children[0].checked;
            a[1] = this.Trim(tbl.rows[i].cells[j].innerText);
            k++;
            continue;
        }
        a[k] = this.Trim(tbl.rows[i].cells[j].innerText);
    }

    return(a);
}

function jsgSetRowDataByRowNumber(tbl, rowNum, dataArray)
{
    if(isNaN(rowNum)){
        return;
    }

    rowNum = parseInt(rowNum);

    if(rowNum < 0 || rowNum >= tbl.rows.length){
        return;
    }

    var i = parseInt(rowNum);

    for(var j = 0; j < tbl.rows[i].cells.length; j++){
        if(j == 0 && tbl.rows[i].cells[0].children.length > 0 && tbl.rows[i].cells[0].children[0].type == 'checkbox'){
            tbl.rows[i].cells[0].children[0].checked = dataArray[0];
            continue;
        }
        tbl.rows[i].cells[j].innerText = dataArray[j];
    }
}

function jsgGetInvertRowNumber(tbl)
{
    for(var i = 0; i < tbl.rows.length; i++){
        if(tbl.rows[i].style.backgroundColor == this.ibgColor){
            return(i);
        }
    }

    return(-1);
}

function jsgGetInvertRowData(tbl)
{
    var a = new Array();
    
    for(var i = 0; i < tbl.rows.length; i++){
        if(tbl.rows[i].style.backgroundColor == this.ibgColor){
            for(var j = 0; j < tbl.rows[i].cells.length; j++){
                if(j == 0 && tbl.rows[i].cells[0].children.length > 0 && tbl.rows[i].cells[0].children[0].type == 'checkbox'){
                    a[0] = tbl.rows[i].cells[0].children[0].checked;
                    continue;
                }
                a[j] = this.Trim(tbl.rows[i].cells[j].innerText);
            }
            break;
        }
    }

    return(a);
}

function jsgGetInvertRowData2(tbl)
{
    var a = new Array();

    for(var i = 0; i < tbl.rows.length; i++){
        if(tbl.rows[i].style.backgroundColor == this.ibgColor){
            for(var j = 0, k = 0; j < tbl.rows[i].cells.length; j++, k++){
                if(j == 0 && tbl.rows[i].cells[0].children.length > 0 && tbl.rows[i].cells[0].children[0].type == 'checkbox'){
                    a[0] = tbl.rows[i].cells[0].children[0].checked;
                    a[1] = this.Trim(tbl.rows[i].cells[j].innerText);
                    k++;
                    continue;
                }
                a[k] = this.Trim(tbl.rows[i].cells[j].innerText);
            }
            break;
        }
    }

    return(a);
}

function jsgSetInvertRowData(tbl, dataArray)
{
    for(var i = 0; i < tbl.rows.length; i++){
        if(tbl.rows[i].style.backgroundColor == this.ibgColor){
            for(var j = 0; j < tbl.rows[i].cells.length; j++){
                if(j == 0 && tbl.rows[i].cells[0].children.length > 0 && tbl.rows[i].cells[0].children[0].type == 'checkbox'){
                    tbl.rows[i].cells[0].children[0].checked = dataArray[0];
                    continue;
                }
                tbl.rows[i].cells[j].innerText = dataArray[j];
            }
            break;
        }
    }
}

function jsgGetColumnData(tbl, columnIndex, startRowIndex, endRowIndex, dataArray)
{
}

function jsgGetCellWidth(tbl, cellIndex)
{
    return(tbl.rows[0].cells[cellIndex].width);
}

function jsgSetCellWidth(tbl, cellIndex, newWidth)
{
    if(isNaN(cellIndex) || isNaN(newWidth)){
        return;
    }

    cellIndex = parseInt(cellIndex);
    newWidth  = parseInt(newWidth);

    if(cellIndex < 0 || cellIndex >= tbl.rows[0].cells.length || newWidth <= 0){
        return;
    }

    var b = new Number(0);

    tbl.rows[0].cells[cellIndex].width = parseInt(newWidth);

    for(var i = 0; i < tbl.rows[0].cells.length; i++){
        b += parseInt(tbl.rows[0].cells[i].width);
    }

    tbl.width = parseInt(b);
}

function jsgGetCellWidths(tbl)
{
    var s = "";

    for(var i = 0; i < tbl.rows[0].cells.length; i++){
        s += tbl.rows[0].cells[i].width + (i == tbl.rows[0].cells.length - 1 ? "" : ",");
    }

    return(s);
}

function jsgSetCellWidths(tbl, csa)
{
    var a = this.splitToken(csa, ",");
    var b = new Number(0);

    for(var i = 0; i < tbl.rows[0].cells.length; i++){
        if(!a[i]){
            a[i] = 2;
        }
        tbl.rows[0].cells[i].width = parseInt(a[i]);
        b += parseInt(a[i]);
    }

    tbl.width = parseInt(b);
}

function jsgGetCheckBox(formName, checkboxName, absoluteIndex)
{
    if(eval('document.' + formName + '.' + checkboxName + absoluteIndex)){
        return(eval('document.' + formName + '.' + checkboxName + absoluteIndex + '.checked'));
    }
    else{
        return(false);
    }
}

function jsgSetCheckBox(formName, checkboxName, absoluteIndex, value)
{
    if(eval('document.' + formName + '.' + checkboxName + absoluteIndex)){
        return(eval('document.' + formName + '.' + checkboxName + absoluteIndex + '.checked = ' + value));
    }
    else{
        return(false);
    }
}

function jsgGetCheckBoxes(formName, checkboxName, startIndex, endIndex)
{
    var returnValue = '';

    for(var i = startIndex; i <= endIndex; i++){
        returnValue += eval('document.' + formName + '.' + checkboxName + i + '.checked') + (i == endIndex ? '' : ',');
    }

    return(returnValue);
}

function jsgSetCheckBoxes(formName, checkboxName, startIndex, endIndex, setValue)
{
    var setValueArray = this.splitToken(setValue, ',');

    for(var i = startIndex; i <= endIndex; i++){
        eval('document.' + formName + '.' + checkboxName + i + '.checked = ' + setValueArray[i - startIndex])
    }
}

function jsgInsertRow(tbl, rowNum, dataArray)
{
    var oRow;
    var oCell;
    var rn = parseInt(rowNum);

    if(rn >= tbl.rows.length || rn <= 0){
        oRow = tbl.insertRow();
        oRow.bgColor = "#FFFFFF";
        rn = tbl.rows.length - 1;
    }
    else{
        oRow = tbl.insertRow(rn);
    }

    for(var i = 0; i < tbl.rows[0].cells.length; i++){
        oCell = oRow.insertCell();
        oCell.innerText = dataArray[i];
    }

    if(rn == tbl.rows.length - 1){
        tbl.rows[rn].onclick = tbl.rows[rn - 1].onclick;
    }
    else{
        tbl.rows[rn].onclick = tbl.rows[rn + 1].onclick;
    }

    return(oRow);
}

function jsgDeleteRow(tbl, rowNum)
{
    tbl.deleteRow(rowNum);
}

function jsgDisableHeader(otable)
{
    for(i = 0; i < otable.rows[0].all.length; i++){
        otable.rows[0].all[i].disabled = true;
    }
}

function jsgEnableHeader(otable)
{
    for(i = 0; i < otable.rows[0].all.length; i++){
        otable.rows[0].all[i].disabled = false;
    }
}

function jsgHideColumn()
{
    if(arguments.length < 2){
        return;
    }

    var otable = arguments[0];
    var width = 0;
    var s = "";

    otable.style.tableLayout = 'fixed';

    for(i = 0; i < otable.rows[0].cells.length; i++){
        otable.rows[0].cells[i].width = parseInt(otable.rows[0].cells[i].clientWidth) + 1;
    }

    for(i = 1; i < arguments.length; i++){
        otable.rows[0].cells[arguments[i]].width = 1;
    }

    for(i = 0; i < otable.rows[0].cells.length; i++){
        width += parseInt(otable.rows[0].cells[i].width) + 2;
    }

    otable.width = width;
}

function jsgShowColumn()
{
}

function jsgSetLineNumber(tbl, colNum)
{
    for(var i = 1; i < tbl.rows.length; i++){
    	tbl.rows[i].cells[colNum].innerText = i;
    }
}

/** Misc Utility Methods
 */

function jsgRTrim(s)
{
    var i;

    if(s.length <= 0){
        return("");
    }

    for(i = s.length - 1; i >= 0; i--){
        if(s.charAt(i) != ' '){
            break;
        }
    }

    return(s.substring(0, i + 1));
}

function jsgLTrim(s)
{
    var i;

    if(s.length <= 0){
        return("");
    }

    for(i = 0; i < s.length; i++){
        if(s.charAt(i) != ' '){
            break;
        }
    }

    return(s.substring(i, s.length));
}

function jsgTrim(s)
{
    return(jsgLTrim(jsgRTrim(s)));
}


function jsgSplitToken(s, t)
{
    var i = 0;
    var j = 0;
    var k = 0;

    var a = new Array();

    var ss = "";

    while((j = s.indexOf(t)) != -1){
        a[k] = s.substring(0, j);
        i = j + t.length;
        s = s.substring(i, s.length);
        k++;
    }

    a[k] = s;

    return(a);
}

/** Header Floating Methods
 */

function jsgScrollFloatingHeader()
{
    if(this.hdrdivID == null || this.hdrdivID.length <= 0 || this.fieldID == null || this.fieldID.length <= 0){
        return;
    }

    eval("document.all." + this.hdrdivID + ".style.display=''");
    
    if(this.fieldID != "NOFIELDSET"){
        if(eval("document.all." + this.hdrdivID) && eval("document.all." + this.fieldID)){
            eval("document.all." + this.hdrdivID + ".style.top = (parseInt(document.all." + this.fieldID + ".scrollTop))");
        }
    }
    else{
        if(eval("document.all." + this.hdrdivID)){
            eval("document.all." + this.hdrdivID + ".style.top = (parseInt(document.body.scrollTop) >= parseInt(document.all." + this.tableID + ".offsetTop) ? parseInt(document.body.scrollTop) : parseInt(document.all." + this.tableID + ".offsetTop))");
            eval("if(parseInt(document.all." + this.hdrdivID + ".style.top) > parseInt(document.all." + this.tableID + ".offsetHeight) + parseInt(document.all." + this.tableID + ".scrollTop) + 50){ document.all." + this.hdrdivID + ".style.top = parseInt(0); }");
        }        
    }
}

function jsgAdjustFloatingHeader()
{
    if(this.tableID == null || this.tableID.length <= 0 || this.tablehID == null || this.tablehID.length <= 0){
        return;
    }

    if(parseInt(eval("document.all." + this.tableID + ".clientWidth")) <= 0){
        return;
    }

    eval("document.all." + this.tablehID + ".width = document.all." + this.tableID + ".clientWidth");

    for(var i = 0; i < eval("document.all." + this.tableID + ".rows[0].cells.length"); i++){
        eval("document.all." + this.tablehID + ".rows[0].cells[" + i + "].width = document.all." + this.tableID + ".rows[0].cells[" + i + "].clientWidth;");
    }

    eval("document.all." + this.tableID + ".width = document.all." + this.tablehID + ".width;");

    for(var i = 0; i < eval("document.all." + this.tableID + ".rows[0].cells.length"); i++){
        eval("document.all." + this.tableID + ".rows[0].cells[" + i + "].width = document.all." + this.tablehID + ".rows[0].cells[" + i + "].width;");
    }

    eval("document.all." + this.tableID + ".cols = document.all." + this.tableID + ".rows[0].cells.length;");
    eval("document.all." + this.tablehID + ".cols = document.all." + this.tablehID + ".rows[0].cells.length;");
}

function jsgCreateFloatingHeader(fieldID, tableID, hdrdivID, tablehID, jsgVarName)
{
    if(!eval(jsgVarName) && eval("jsg")){
        jsgVarName = "jsg";
    }

    this.fieldID  = fieldID;
    this.tableID  = tableID;
    this.hdrdivID = hdrdivID;
    this.tablehID = tablehID;

    var _tbl = eval("document.all." + tableID);

    tbContent = _tbl.outerHTML.substring(0, _tbl.outerHTML.indexOf('<TR>')).replace(new RegExp(tableID, "gi"), tablehID) + eval(tableID + ".rows[0].outerHTML") + "</TBODY></TABLE>";

    if(fieldID != "NOFIELDSET"){
        document.write("<div id='" + hdrdivID + "' style='position:absolute; top:0px; left:0px; z-Index:5; background-Color:white;'>" + tbContent + "</div>");    	
        eval("document.all." + fieldID + ".onscroll=new Function('" + jsgVarName + ".scrollFloatingHeader();')");
    }
    else{
        document.write("<div id='" + hdrdivID + "' style='display:none; position:absolute; top:0px; left:0px; z-Index:5; background-Color:white;'>" + tbContent + "</div>");
        eval("document.body.onscroll=new Function('" + jsgVarName + ".scrollFloatingHeader();')");
    }

    this.adjustFloatingHeader();

    /* */
    var _tbh = eval("document.all." + tablehID);

    for(var i = 0; i < _tbl.rows[0].cells.length; i++){
        if(_tbh.rows[0].cells[i].ondblclick){
            _tbh.rows[0].cells[i].ondblclick = new Function(jsgVarName + ".toggleCell(this);" + jsgVarName + ".toggleCell(" + tableID + ".rows[0].cells[" + i + "]);");
        }
        if(_tbh.rows[0].cells[i].onmousedown){
            _tbh.rows[0].cells[i].onmousedown = new Function(jsgVarName + ".startResize(this);" + jsgVarName + ".startResize(" + tableID + ".rows[0].cells[" + i + "]);");
        }
        if(_tbh.rows[0].cells[i].onmouseup){
            _tbh.rows[0].cells[i].onmouseup = new Function(jsgVarName + ".stopResize(this);" + jsgVarName + ".stopResize(" + tableID + ".rows[0].cells[" + i + "]);");
        }
        if(_tbh.rows[0].cells[i].onmousemove){
            _tbh.rows[0].cells[i].onmousemove = new Function(jsgVarName + ".resizeCell(this);" + jsgVarName + ".resizeCell(" + tableID + ".rows[0].cells[" + i + "]);");
        }
    }
    /* */
}

-->
