﻿// JScript File
function RowOn(row)
{
    row.style.cursor='pointer'; 
    
    if(row.className == "GridRowSelected")
    {
        row.className="GridRowSelectedHover";
    }
    else
    {
        row.className="GridRowHover";  
    }
}
function RowOff(row, index)
{
    if(row.className == "GridRowSelectedHover")
    {
        row.className = "GridRowSelected";
    }
    else if(row.rowIndex % 2 == 0) 
    {
        row.className="GridAltRow";
    } 
    else 
    {
        row.className="GridRow";
    }
}
function RowNormal(row, index)
{
    if(row.rowIndex % 2 == 0) 
    {
        row.className="GridAltRow";
    } 
    else 
    {
        row.className="GridRow";
    }
}
function ClearRows(grid)
{
    var len = grid.rows.length;
    
    if(grid.rows[grid.rows.length - 1].className == "GridPager")
    {
        len = grid.rows.length - 1;
    }
    
    for(var i = 1; i < len; i++)
    {
        RowNormal(grid.rows[i], i);
    }
}
function RowClick(row, grid)
{
    var grid = document.getElementById(grid);
    
    if(row != grid.rows[0])
    {
        ClearRows(grid);
        
        row.className = "GridRowSelectedHover";
    }
}
function ShowRow(checkBox, gridName, index)
{
    var grid = document.getElementById(gridName);

    for(var i = 2; i < grid.rows[index].cells.length; i++)
    {
        var hideCol = GetHide(grid.rows[0].cells[i]);
        
        if(grid.rows[index].cells[i].className == "GridRowHideShaded" && !hideCol)
        {
            grid.rows[index].cells[i].className = "GridRowShaded";
        }
        else if(grid.rows[index].cells[i].className == "GridRowShaded" || grid.rows[index].cells[i].className == "GridRowHideShaded" && hideCol)
        {
            grid.rows[index].cells[i].className = "GridRowHideShaded";
        }
        else
        {
            if(index % 2 == 0) 
            {
                grid.rows[index].cells[i].className = (checkBox.checked && !hideCol) ? "GridAltRow" : "GridAltRowHide";
            } 
            else 
            {
                grid.rows[index].cells[i].className = (checkBox.checked && !hideCol) ? "GridRow" : "GridRowHide";
            }
        }
    }
    
    var rowInput = document.getElementById('ctl00_ContentPlaceHolder2__row');
    
    if(checkBox.checked)
    {
        // Add row id to list
        rowInput.value += index - 1 + ",";
    }
    else
    {
        // Remove row id from list
        var rowId = "" + (index - 1) + ",";
        
        var str = new String(rowInput.value);
        
        rowInput.value = str.replace(rowId, "");
    }
    
    redrawY(index - 1);

    var recalc = document.getElementById('ctl00_ContentPlaceHolder2__recalcAvg').value;
            
    if(document.title == "5 Year Potential")
    {
        RecalculateAverageAll('ctl00_ContentPlaceHolder2_annualGrid_webGrid', false);
    }
    else
    {
        if(recalc)
        {
            RecalculateAverage('ctl00_ContentPlaceHolder2_annualGrid_webGrid', false);
        }
    }
}
function GetHide(cell)
{
    if(cell.className.indexOf("Hide") > -1)
    {
        return true;
    }
    else
    {
        return false;
    }
}
function HideGridRow(row)
{
    row += 1;
    
    var grid = document.getElementById('ctl00_ContentPlaceHolder2_annualGrid_webGrid');
    
    if(grid != "" && grid != null)
    {
        if(row < grid.rows.length)
        {
            var checkBox = grid.rows[row].cells[0].getElementsByTagName("INPUT");
            
            if(checkBox[0].checked)
            {
                checkBox[0].checked = false;
            }
            else
            {
                checkBox[0].checked = true;
            }
        
            ShowRow(checkBox[0], grid.id, row);
        }
        else
        {
            redrawY(row - 1);
        }
    }
    else
    {
        redrawY(row - 1);
    }
}
function HideGridRowOnly(row)
{
    row += 1;
    
    var grid = document.getElementById('ctl00_ContentPlaceHolder2_annualGrid_webGrid');
    
    if(grid != "" && grid != null)
    {
        if(row < grid.rows.length)
        {
            var checkBox = grid.rows[row].cells[0].getElementsByTagName("INPUT");
            
            checkBox[0].checked = true;
            
            ShowRowOnly(checkBox[0], grid.id, row);
        }
    }
}
function ShowRowOnly(checkBox, gridName, index)
{
    var grid = document.getElementById(gridName);

    for(var i = 2; i < grid.rows[index].cells.length; i++)
    {
        var hideCol = GetHide(grid.rows[0].cells[i]);
        
        if(grid.rows[index].cells[i].className == "GridRowHideShaded" && !hideCol)
        {
            grid.rows[index].cells[i].className = "GridRowShaded";
        }
        else if(grid.rows[index].cells[i].className == "GridRowShaded" || grid.rows[index].cells[i].className == "GridRowHideShaded" && hideCol)
        {
            grid.rows[index].cells[i].className = "GridRowHideShaded";
        }
        else
        {
            if(index % 2 == 0) 
            {
                grid.rows[index].cells[i].className = (checkBox.checked && !hideCol) ? "GridAltRow" : "GridAltRowHide";
            } 
            else 
            {
                grid.rows[index].cells[i].className = (checkBox.checked && !hideCol) ? "GridRow" : "GridRowHide";
            }
        }
    }
}
function HideGridColumn(col)
{
    var gridName = document.getElementById('ctl00_ContentPlaceHolder2_annualGrid_webGrid');
    
    if(gridName != "" && gridName != null)
    {           
        if(document.getElementById('ctl00_ContentPlaceHolder2__columnPostback').value == "true")
        {
            var hideCol = document.getElementById('ctl00_ContentPlaceHolder2__column');
        
            hideCol.value = col + 3;
        
            theForm.submit();
        }
        else
        {
            var recalc = document.getElementById('ctl00_ContentPlaceHolder2__recalcAvg').value;
            
            if(document.title == "5 Year Potential")
            {
                HideColumn(gridName.id, col + 2);
                
                RecalculateAverageAll('ctl00_ContentPlaceHolder2_annualGrid_webGrid', true);
            }
            else
            {
                HideColumn(gridName.id, col + 3);
                
                if(recalc)
                {
                    RecalculateAverage('ctl00_ContentPlaceHolder2_annualGrid_webGrid', true);
                }
            }
        }
    }
}
function HideColumn(gridName, col)
{
   var grid = document.getElementById(gridName);

    for(var i = 1; i < grid.rows.length; i++)
    {   
        var oldClass = grid.rows[i].cells[col].className;
        
        var newClass = oldClass;

        var checkBox = grid.rows[i].cells[0].getElementsByTagName("INPUT");
        
        if(checkBox.length == 1)
        {
            if(checkBox[0].checked)
            {
                if (oldClass == "GridRowShaded")
                {
                    newClass = "GridRowHideShaded";
                }
                else if (oldClass == "GridRow")
                {
                    newClass = "GridRowHide";
                }
                else if (oldClass == "GridAltRow")
                {
                    newClass = "GridAltRowHide";
                }
                else if (oldClass == "GridRowHideShaded")
                {
                    newClass = "GridRowShaded";
                }
                else if (oldClass == "GridRowHide")
                {
                    newClass = "GridRow";
                }
                else if (oldClass == "GridAltRowHide")
                {
                    newClass = "GridAltRow";
                }

                grid.rows[i].cells[col].className = newClass;
            }
        }
    }
    if(grid.rows[0].cells[col].className == "GridHeaderHide")
    {
        grid.rows[0].cells[col].className = "GridHeader";
        RemoveHiddenColumns(col);
    }
    else if(grid.rows[0].cells[col].className == "GridHeader")
    {
        grid.rows[0].cells[col].className = "GridHeaderHide";
        AddHiddenColumns(col);
    }
    else
    {
        grid.rows[0].cells[col].className = "GridHeaderHide";
        AddHiddenColumns(col);
    }
    
    if(document.title == "5 Year Potential")
    {
        redrawX(col - 2);
    }
    else
    {
        redrawX(col - 3);
    }
}

function HidePriceColumn(gridName, col)
{
    var grid = document.getElementById(gridName);

    for(var i = 1; i < grid.rows.length; i++)
    {   
        var oldClass = grid.rows[i].cells[col].className;
        
        var newClass = oldClass;

        var checkBox = grid.rows[i].cells[0].children[0];
            
        if(checkBox.checked)
            {
            if (oldClass == "GridRowShaded")
            {
                newClass = "GridRowHideShaded";
            }
            else if (oldClass == "GridRow")
            {
                newClass = "GridRowHide";
            }
            else if (oldClass == "GridAltRow")
            {
                newClass = "GridAltRowHide";
            }
            else if (oldClass == "GridRowHideShaded")
            {
                newClass = "GridRowShaded";
            }
            else if (oldClass == "GridRowHide")
            {
                newClass = "GridRow";
            }
            else if (oldClass == "GridAltRowHide")
            {
                newClass = "GridAltRow";
            }

            grid.rows[i].cells[col].className = newClass;
        }
    }
    
    if(grid.rows[0].cells[col].className == "GridHeaderHide")
    {
        grid.rows[0].cells[col].className = "GridHeader";
    }
    else if(grid.rows[0].cells[col].className == "GridHeader")
    {
        grid.rows[0].cells[col].className = "GridHeaderHide";
    }
    else
    {
        grid.rows[0].cells[col].className = "GridHeaderHide";
    }
    
    redrawX(col - 2);
}

function RecalculateAverage(gridName)
{   
    var grid = document.getElementById(gridName);
    
    for(var i = 1; i < grid.rows.length; i++)
    {   
        var avg = 0;
        var cnt = 0;
        var dp = grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML.length - grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML.indexOf('.') - 1;
                
        for (var j = 0; j < grid.rows[i].cells.length; j++)
        {
            var cname = grid.rows[i].cells[j].className;
            var txt = "";

            if ((cname == "GridRowShaded") && grid.rows[i].cells[j].innerHTML != "--" && grid.rows[i].cells[j].innerHTML != "NMF")
            {
                txt = grid.rows[i].cells[j].innerHTML.replace(",", "" );
                avg += parseFloat(txt);
                cnt++;
            }
        }
        
        if (cnt == 0)
        {
            grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = "--";
        }
        else
        {
            if (grid.rows[1].cells[grid.rows[1].cells.length - 1].innerHTML.indexOf('%') > 0)
            {
                grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = FormatNumber(Math.round(avg / cnt * 100) / 100) + "%";
            }
            else
            {
                grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = FormatNumber(Math.round(avg / cnt * 100) / 100);
                
                if (dp == 1)
                {
                    grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = Math.round(UnformatNumber(grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML) * 10) / 10;
                }
            }
        }
    }
}

function RecalculateAverageAll(gridName, outlierClick) // Used for Potential 5 Year Payout grid only.
{
    var grid = document.getElementById(gridName);
//  for(var i = 1; i < grid.rows.length; i++)
    for(var i = 1; i < 2; i++)  // Payout row only
    {   
        var avg = 0;
        var cnt = 0;
        var dp = 2; //grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML.length - grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML.indexOf('.') - 1;
                
        for (var j = grid.rows[i].cells.length - 6; j < grid.rows[i].cells.length - 1; j++)
        {
            var cname = grid.rows[i].cells[j].className;
            var txt = "";

            if (( (cname != "GridRowHide") && (cname != "GridAltRowHide") )&& grid.rows[i].cells[j].innerHTML != "--" && grid.rows[i].cells[j].innerHTML != "NMF" && grid.rows[i].cells[j].innerHTML != "0.00")
            {
                txt = grid.rows[i].cells[j].innerHTML.replace(",", "" );
                avg += parseFloat(txt);
                cnt++;
            }
        }
        
        if (cnt == 0)
        {
            grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = "--";
            if (outlierClick == true)
            {
                document.getElementById("ctl00_ContentPlaceHolder2_ctl00_txtPayoutForecast").value = "";
            }        
        }
        else
        {
            if (grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML.indexOf('%') > 0)
            {
                grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = FormatNumber(Math.round(avg / cnt * 100) / 100) + "%";
                
                if (outlierClick == true)
                {
                    document.getElementById("ctl00_ContentPlaceHolder2_ctl00_txtPayoutForecast").value = FormatNumber(Math.round(avg / cnt * 100) / 100);
                }        
            }
            else
            {
                grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = FormatNumber(Math.round(avg / cnt * 100) / 100);
                if (outlierClick == true)
                {
                    document.getElementById("ctl00_ContentPlaceHolder2_ctl00_txtPayoutForecast").value = FormatNumber(Math.round(avg / cnt * 100) / 100);        
                }
                if (dp == 1)
                {
                    grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML = Math.round(UnformatNumber(grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML) * 10) / 10;
                    if (outlierClick == true)
                    {
                        document.getElementById("ctl00_ContentPlaceHolder2_ctl00_txtPayoutForecast").value = Math.round(UnformatNumber(grid.rows[i].cells[grid.rows[i].cells.length - 1].innerHTML) * 10) / 10;
                    }     
                }
            }
        }
    }
}
function FormatNumber(num)
{
    var splitnum = new String(num).split('.');
    
    if (splitnum[1] == null)
    {
        num += ".00"
        
        splitnum = new String(num).split('.');
    }
    
    if (splitnum[0].length < 4)
    {
        return num;
    }
    
    for (i = splitnum[0].length - 3; i > 0; i -= 3)
    {
        splitnum[0] = splitnum[0].substring(0, i) + "," + splitnum[0].substring(i, splitnum[0].length);
    }
    
    var ret = splitnum[0];
    
    if (splitnum[1] != null)
    {
        ret += "." + splitnum[1];
    }
    
    return ret; //splitnum[0] + "." + splitnum[1];
}

function UnformatNumber(num)
{
    var splitcomma = new String(num).split(',');
    
    num = "";
    
    for (i = 0; i < splitcomma.length; i++)
    {
        num += splitcomma[i];
    }
    
    return num;
}
function SetPE5Year(peControl, grid)
{
    if(grid != null)
    {
        peControl.innerHTML = grid.rows[1].cells[grid.rows[1].cells.length - 1].innerHTML;
    }
}

function AddHiddenColumns(column) 
{
    var studyID = document.getElementById('ctl00_ContentPlaceHolder2__studyID');
    SSGHiddenColsService.AddColumn(parseInt(studyID.value), document.title, column, SucceededCallback, FailedCallback);
}
function RemoveHiddenColumns(column) 
{
    var studyID = document.getElementById('ctl00_ContentPlaceHolder2__studyID');
    SSGHiddenColsService.RemoveColumn(parseInt(studyID.value), document.title, column, SucceededCallback, FailedCallback);
}
function SucceededCallback(result, eventArgs)
{

}
function FailedCallback(error)
{

}

