var _CWFilterValue = '';
var strFilterText = '';
var strFilterContains = '';
var strFilterImage = '';

function CWAddFilter(webGridId, columnName)
{
    if(columnName != "")
    {
        var grid = ISGetObject(webGridId);
        var rootTable = grid.RootTable;
        var column = CWGetColumnByCaption(rootTable.Columns, columnName);
        var addFilter = false;
        
        if(column!=null)
        {
            try
            {
                columnName = column.Name;

                var filter = rootTable.FilteredColumns.GetNamedItem(columnName);

                if (filter == null)
                {			
                    filter = new WebGridFilter();
                    addFilter = true;
                }
                
                filter.ColumnMember = columnName; 
                
                if(column.DataType == "System.DateTime")
                {
                    filter.FilterType = "Like"; 
                    var d = new Date();
                    d.setTime(Date.parse(_CWFilterValue));
                    filter.FilterText = d.toDateString();
                }
                else if(column.DataType == "System.Number" || column.DataType == "System.Decimal")
                {
                    filter.FilterType = "Like"; 
                    filter.FilterText = parseFloat(_CWFilterValue);
                }
                else
                {
                    filter.FilterType = "Contain"; 
                    filter.FilterText = _CWFilterValue;
                }
                
                if(_CWFilterValue == '')
                {
                    filter.FilterType = "IsEmpty"; 
                }

                if(addFilter)
                {
                    grid.RootTable.FilteredColumns.Add(filter); 
                }

                grid.RootTable.UpdateUI(); 
                grid.Refresh();
            }
            catch(e){}
        }
    }
    return true;
}

function CWFilterColumn(controlId, menuObject, rowElement, encode)
{
    var grid = ISGetObject(controlId);
    var cellIndex = document.activeElement.cellIndex;
    var cells = grid.GetRowByElement(rowElement).GetCells();
        
    cellIndex = cellIndex - grid.RootTable.GroupedColumns.length;
    
    if(cells[cellIndex]!=null)
    {
        var CWSSelectedCellValue = cells[cellIndex].Text;
        var CWSSelectedCellColumn = cells[cellIndex].Column.Caption;
        var column = CWGetColumnByCaption(grid.RootTable.Columns, CWSSelectedCellColumn);
        var validColumn = true;
        
        if(CWSSelectedCellColumn == '' || (CWSSelectedCellColumn.indexOf("<input type='checkbox'") == 0) || (CWSSelectedCellColumn.indexOf("&lt;input type='checkbox'") == 0))
            validColumn = false;
        
        if(column != null && (column.DataType != "System.Number" && column.DataType != "System.Decimal") && validColumn)
        {
            if(encode)
                _CWFilterValue = escapeHTMLEncode(CWSSelectedCellValue);            
            else
                _CWFilterValue = CWSSelectedCellValue;            
            
            var newFilter = new WebMenuItem('cwFilter', strFilterText + " '" + CWSSelectedCellColumn + "' " + strFilterContains + " '" + CWSSelectedCellValue + "'", strFilterImage, function() {CWAddFilter(controlId, CWSSelectedCellColumn)});
            menuObject.Items.InsertAt(newFilter, 0);
        }
    }
    return true;
}

function escapeHTMLEncode(str) 
{
    var div = document.createElement('div');
    var text = document.createTextNode(str);
    div.appendChild(text);
    var encodedStr = div.innerHTML;
    encodedStr = encodedStr.replace(new RegExp('\'', 'gi'),'&#39;');
    encodedStr = encodedStr.replace(new RegExp('\"', 'gi'),'&quot;');
    return encodedStr;
}


function CWGetColumnByCaption(columns, colName)
{
    for (var i = 0; i<columns.length; i++)
    {
        if(columns[i].Caption == colName)
        {
            return columns[i];
        }
    }
    
    return null;
}

function CWCopyCell(controlId, menuObject, rowElement)
{
    var grid = ISGetObject(controlId);
    var cellIndex = document.activeElement.cellIndex;
    var cells = grid.GetRowByElement(rowElement).GetCells();
        
    cellIndex = cellIndex - grid.RootTable.GroupedColumns.length;
    
    if(cells[cellIndex]!=null)
    {
        //debugger;
        var CWSSelectedCellValue = cells[cellIndex].Text;
    }
    return true;
}


function CWGridError()
{
    setTimeout('window.location.reload()',500);
    return false;    
}

function CWChartError()
{
    //setTimeout('window.location.reload()',500);
    return false;    
}



function CWDocumentStatus(fileUrl, currentUserLogin, menuObject, controlId)
{
    //debugger;
    var checkOutUser = null;
    Anthem_InvokeControlMethod(controlId, "CheckFileStatus", [fileUrl], function(result) { checkOutUser = result.value; });
    var functionCall = "";
    
    if(checkOutUser == "")
    {
        var newCheckOut = new WebMenuItem('cwCheckOut', "Check Out", "/_layouts/images/checkout.gif", function() {Anthem_InvokeControlMethod(controlId, "CheckOutFile", [fileUrl], function(result) { })});
        menuObject.Items.InsertAt(newCheckOut, 0);
    }
    else if(checkOutUser == currentUserLogin)
    {
        var newUndoCheckOut = new WebMenuItem('cwUndoCheckOut', "Discard Check Out", "/_layouts/images/unchkout.gif", function() {Anthem_InvokeControlMethod(controlId, "UndoCheckOut", [fileUrl], function(result) { })});
        menuObject.Items.InsertAt(newUndoCheckOut, 0);
        var newCheckIn = new WebMenuItem('cwCheckIn', "Check In", "/_layouts/images/checkin.gif", function() {Anthem_InvokeControlMethod(controlId, "CheckInFile", [fileUrl], function(result) { })});
        menuObject.Items.InsertAt(newCheckIn, 0);
    }
    else if(checkOutUser != null)
    {
        var newCheckOutUser = new WebMenuItem('cwCheckOutUser', "The file is checked out by " + checkOutUser, "/_layouts/images/checkin.gif", "");
        menuObject.Items.InsertAt(newCheckOutUser, 0);
    }
    
    return true;
}

function ExpandAllGroups(controlId)
{
    var WebGrid1 = ISGetObject(controlId);
    var groupedRows = WebGrid1.RootTable.GetGroupRows();
    var totalGroupedRows = groupedRows.length;
    groupIndex = 0;
    
    for (var i = 0; i < totalGroupedRows; i++)
    {
        WebGrid1.RootTable.GetRowByGroup(0,i).ExpandGroupRow();
        groupedRows = WebGrid1.RootTable.GetGroupRows()[i].GetGroupChildRows();
        
        if(groupedRows)
        {
            ExpandChildGroups(groupedRows);
        }
    }
        
    return true;
}

function ExpandChildGroups(groupedRows)
{
    var totalGroupedRows = groupedRows.length;
    var childGroups;

    for (var i = 0; i < totalGroupedRows; i++)
    {
        groupedRows[i].ExpandGroupRow();
        childGroups = groupedRows[i].GetGroupChildRows();
        
        if(childGroups)
        {
            ExpandChildGroups(childGroups);
        }
    }
    return true;
}

function CollapseAllGroups(controlId)
{
    var WebGrid1 = ISGetObject(controlId);
    var totalGroupedRows = WebGrid1.RootTable.GetGroupRows().length;
    
    for (var i = 0; i < totalGroupedRows; i++)
    {
        WebGrid1.RootTable.GetRowByGroup(0,i).CollapseGroupRow();
        childGroups = WebGrid1.RootTable.GetGroupRows()[i].GetGroupChildRows();
        
        if(childGroups)
        {
            CollapseChildGroups(childGroups);
        }        
    }
    
    return true;
}

function CollapseChildGroups(groupedRows)
{
    var totalGroupedRows = groupedRows.length;
    var childGroups;

    for (var i = 0; i < totalGroupedRows; i++)
    {
        groupedRows[i].CollapseGroupRow();
        childGroups = groupedRows[i].GetGroupChildRows();
        
        if(childGroups)
        {
            CollapseChildGroups(childGroups);
        }
    }
    
    return true;
}

function WebGrid_OnColumnSort(controlId, columnObject)
{
    var WebGrid = ISGetObject(controlId);

    for(var i = 0; i< WebGrid.RootTable.Columns.length; i++)
    {
        if(!WebGrid.RootTable.Columns[i].Visible)
        {
            var colName = WebGrid.RootTable.Columns[i].Name;
            
            if (WebGrid.RootTable.SortedColumns.GetNamedItem(colName) != null)
                WebGrid.RootTable.SortedColumns.Remove(WebGrid.RootTable.SortedColumns.GetNamedItem(colName));
        }
    }

    return true;
}

function escapeString(s) 
{
    var eChars = ["\\", "'", '"'];
    var lasti = eChars.length;
    for (var i = 0; i < lasti; i++)
    {
        var sArray = s.split(eChars[i]);
        var lastj = sArray.length;
        s = '';
        for (var j = 0; j < lastj; j++)
        {
            s += sArray[j] + '\\' + eChars[i];
        }
    }
    var last = s.length - 2*eChars.length;
    return s.substring(0, last);
}

function WebGrid_OnRowSelect(controlId, tblName, rowIndex, rowEl)
{
	var WebGrid1 = ISGetObject(controlId);
	
	if (rowEl.attributes.type.value == "GroupHeader")
	{
	    return false;
	}
	
	return true;
}

function WebGrid_ClearSelection(controlId, one, two, three, four, five, six)
{
	var WebGrid1 = ISGetObject(controlId);
    WebGrid1.ClearSelection();
}

function WebGrid_HideMozTxtBox() {
    var txtBoxes = document.getElementsByTagName("input");
    var txtId = "";
    var idEnd = "";
    
    for (var i = 0; i < txtBoxes.length; i++) {
        
        if (txtBoxes[i].type == "text" && txtBoxes[i].id.length >= 11) {
            idFull = txtBoxes[i].id;
            idEnd = idFull.substring(idFull.length - 11);
            
            try {
                if (idEnd == '_ISGrid_Moz') {
                    txtBoxes[i].style.display = 'none';
                }
            } catch (err1) { }
        
        }
    }
}