
//var objFilterData = [{"ID":48,"Name":"IMAGE_NAME","DisplayName":"IMAGE_NAME","DataType":1,"Operators":["1","2","3"]},{"ID":51,"Name":"CASE_REFERENCE","DisplayName":"CASE_REFERENCE","DataType":1,"Operators":["1"]},{"ID":52,"Name":"Employee","DisplayName":"Employee","DataType":1,"Operators":["1","2"]}];
//var objFilterOperatorsData = {"1":[{"OperatorID":1,"OperatorName":"equal to"},{"OperatorID":2,"OperatorName":"not equal to"},{"OperatorID":3,"OperatorName":"contains"},{"OperatorID":4,"OperatorName":"begins with"},{"OperatorID":5,"OperatorName":"greater than"},{"OperatorID":6,"OperatorName":"less than"}]};
var strSortExpression = "";
var ArrSortExpressionImages = [];
var ArrSortExpressionImagesIndex = [];
var strBlankImageSrc ;
var __PanelForFilters = null;
var __PanelForSorting = null;
var __PanelForViewList = null;

var arrCurrentRowData = new Array();
var arrCurrentRowCols =null;
var OColums2 = null;
var HT_changeColumnIndex;
var HT_ColumnnNodeIndex;


var arrMultiValueRowIds = new Array();

var __CallBackExpandQueue = null;
var __CurrentViewName = "";
var arrExpandableFields = new Array();
var __arrExpandedNodes = null;
var __SampleDataRow = null;
var bAutoExpandFirstNode = false;
function GetDisplay(bDisplay)
{
    if(bDisplay)
    {
        if(document.all)
        {
            return "inline";
        }
        else
        {
            return "";
        }
    }
    else
    {
        return "none";
    }
}

function GridCell_OnContextMenu(sender, e, arg)
{
    e.clientX; e.clientY; e.screenX; e.screenY;
    alert("to be implemented");
    return false;
}

//HeaderMenuClick(this,event, "egGrid_MenuHeader_0", "WTIABR", 0, "DefaultFilters1_ctl05", "DefaultFilters1_imgShowHideMenu1", {"DataField":null,"Command":"Filter","Index":0,"Text":"Filter","Description":"Apply Equality Filter","MenuImage":"transparent.gif","ToggleMenuImage":null,"ActionButtonText":"Go"});
function HeaderMenuClick(sender, e, mnuId, dataField, iHeaderIndex, headerLeftImgId, headerRightImgId, mnuItem)
{
    if(mnuItem.HasChildMenu)
    {
        var strPnlSubMenuId = "pnlSubMenu_"+ mnuId +"_Item_" + mnuItem.Index;
        var objPnlSubMenuId = document.getElementById(strPnlSubMenuId);
        if(objPnlSubMenuId && objPnlSubMenuId.style)
        {
            ShowHeaderSubMenu(objPnlSubMenuId, mnuItem.Command);
            HideHeaderSubMenu(objPnlSubMenuId, mnuItem.Command);
        }
        return;
    }
    
    var strHeaderDisplayText = dataField + "";
    //var objOldFormat = {"Type":"A","Format":["Sample.aspx?param={0}", "({0})"]};
    var objOldFormat = objAllNodesFormat[iHeaderIndex];  //{"Type":"","Format":null};
    if(htHeaderCodeLabel[dataField])
    {
        strHeaderDisplayText = htHeaderCodeLabel[dataField] + "";
    }
    
    var strSampleValue = strHeaderDisplayText; 
    if(__SampleDataRow[dataField])
    {
        strSampleValue = __SampleDataRow[dataField];
    }
    
    
    switch(mnuItem.Command.toUpperCase())
    {
        case "SORT":
            var sImgId = "img"+ mnuId +"_MenuItem_" + mnuItem.Index;
            var objImg = document.getElementById(sImgId);
            var objHeaderLeftImg = document.getElementById(headerLeftImgId);
            SortColumn(dataField, headerLeftImgId, mnuItem.MenuImage, mnuItem.ToggleMenuImage, iHeaderIndex);
            if(objImg)
            {
                if(objImg.src.indexOf(mnuItem.MenuImage) != -1)
                {
                    objImg.src = objImg.src.replace(mnuItem.MenuImage, mnuItem.ToggleMenuImage);
                }
                else
                {
                    objImg.src = objImg.src.replace(mnuItem.ToggleMenuImage, mnuItem.MenuImage);
                }
            }
            break;
        case "FORMAT_NONE":
            if(objOldFormat && objOldFormat.Format && objOldFormat.Format.length > 1)
            {
                var bIfProceed = confirm("This will remove the formatting.\nDo you want to continue?");
                if(bIfProceed)
                {
                    ReformatGridColumn({"Type":"None","Format":[]}, iHeaderIndex);
                }
            }
            else
            {
                alert("No formatting present.");
            }
            break;
        case "FORMAT_TEXT":
        case "FORMAT_A":
        case "FORMAT_IMG":
        case "FORMAT_AIMG":
        case "FORMAT_F":
        case "INSERT_TEXT":
        case "INSERT_A":
        case "INSERT_IMG":
        case "INSERT_AIMG":
        case "INSERT_F":
            var sFormatType = mnuItem.Command.split('_')[1];
            var sHtml = GetHtmlForFormatOrInsertColumnDialog(mnuItem.Command, sFormatType, iHeaderIndex, dataField+"", strHeaderDisplayText, objOldFormat);
            ShowHtmlModalDialog(sHtml);
            PrepareFormatOrInsertColumnPreview(sFormatType);
            break;
        //AggregationType = {"None":0, "Count":10, "Max":11, "Min":12, "Sum":20, "Avg":21};
        case "AGGREGATE_NONE":
            objExpendableImageData.AllNodes[iHeaderIndex].Aggregation = AggregationType.None;
            CreateEspandableImageWithParams(null, null, GetUserFilterData());
            break;
        case "AGGREGATE_COUNT":
            objExpendableImageData.AllNodes[iHeaderIndex].Aggregation = AggregationType.Count;
            CreateEspandableImageWithParams(null, null, GetUserFilterData());
            break;
        case "AGGREGATE_MAX":
            objExpendableImageData.AllNodes[iHeaderIndex].Aggregation = AggregationType.Max;
            CreateEspandableImageWithParams(null, null, GetUserFilterData());
            break;
        case "AGGREGATE_MIN":
            objExpendableImageData.AllNodes[iHeaderIndex].Aggregation = AggregationType.Min;
            CreateEspandableImageWithParams(null, null, GetUserFilterData());
            break;
        case "AGGREGATE_SUM":
            objExpendableImageData.AllNodes[iHeaderIndex].Aggregation = AggregationType.Sum;
            CreateEspandableImageWithParams(null, null, GetUserFilterData());
            break;
        case "AGGREGATE_AVG":
            objExpendableImageData.AllNodes[iHeaderIndex].Aggregation = AggregationType.Avg;
            CreateEspandableImageWithParams(null, null, GetUserFilterData());
            break;
        case "Filter":
            //break;
        default:
            alert("To be implemented");
    }
}

function ShowHeaderSubMenu(objPnlForMouseOverMenu, comand)
{
    
    if(__MenuHideTimer[comand])
        window.clearTimeout(__MenuHideTimer[comand]);

    objPnlForMouseOverMenu.onmouseout = function() { HideHeaderSubMenu(objPnlForMouseOverMenu, comand); };
    objPnlForMouseOverMenu.onmouseover = function() { ShowHeaderSubMenu(objPnlForMouseOverMenu, comand); };
    objPnlForMouseOverMenu.style.display = GetDisplay(true);
}

function HideHeaderSubMenu(objPnlForMouseOverMenu, comand)
{
    if(__MenuHideTimer[comand])
        window.clearTimeout(__MenuHideTimer[comand]);
    var __Fn = function(){ objPnlForMouseOverMenu.style.display = GetDisplay(false); }
    __MenuHideTimer[comand] = window.setTimeout(__Fn, 1000);
}

function ReformatGridColumn(objFormatInfo, iHeaderIndex)
{
    if(objFormatInfo)
    {
        var strTextFormatString = "";
        switch(objFormatInfo.Type.toUpperCase())
        {
            case "TEXT":
                strTextFormatString = objFormatInfo.Format[0] + "";
                break;
            case "A":
                strTextFormatString = "<a href=\"" + objFormatInfo.Format[0] + "\" >" + objFormatInfo.Format[1] + "</a>";
                break;
            case "IMG":
                strTextFormatString = "<img src=\"" + objFormatInfo.Format[0] + "\" alt=\"" + objFormatInfo.Format[1] + "\"/>";
                break;
            case "AIMG":
                strTextFormatString = "<a href=\"" + objFormatInfo.Format[0]  + "\" ><img src=\"" + objFormatInfo.Format[1] + "\" alt=\"" + objFormatInfo.Format[0] + "\"/></a>";
                break;
            case "F":
                if(objFormatInfo.Format[0])
                {
                    switch(objFormatInfo.Format[0].toUpperCase())
                    {
                        case "IF":
                            strTextFormatString = GetConditionIffString(objFormatInfo.Format[1]) ;
                        break;
                        case "REPLACE":
                            strTextFormatString = GetConditionReplaceString(objFormatInfo.Format[1]) ;
                        break;
                    }
                }
                break;
            case "NONE":
                break;
            default:
                alert("To be implemented");
        }
        
        objAllNodesFormat[iHeaderIndex] = objFormatInfo;
        objExpendableImageData.AllNodes[iHeaderIndex].TextFormatString = strTextFormatString;
        CreateEspandableImageWithParams(null, null, GetUserFilterData());
    }
}

function InsertVirtualGridcolumn(objFormatInfo, iHeaderIndex)
{
    if(objFormatInfo)
    {
        var strTextFormatString = "";
        switch(objFormatInfo.Type.toUpperCase())
        {
            case "TEXT":
                strTextFormatString = objFormatInfo.Format[0] + "";
                break;
            case "A":
                strTextFormatString = "<a href=\"" + objFormatInfo.Format[0] + "\" >" + objFormatInfo.Format[1] + "</a>";
                break;
            case "IMG":
                strTextFormatString = "<img src=\"" + objFormatInfo.Format[0] + "\" alt=\"" + objFormatInfo.Format[1] + "\"/>";
                break;
            case "AIMG":
                strTextFormatString = "<a href=\"" + objFormatInfo.Format[0]  + "\" ><img src=\"" + objFormatInfo.Format[1] + "\" alt=\"" + objFormatInfo.Format[0] + "\"/></a>";
                break;
            case "F":
                if(objFormatInfo.Format[0])
                {
                    switch(objFormatInfo.Format[0].toUpperCase())
                    {
                        case "IF":
                            strTextFormatString = GetConditionIffString(objFormatInfo.Format[1]) ;
                        break;
                        case "REPLACE":
                            strTextFormatString = GetConditionReplaceString(objFormatInfo.Format[1]) ;
                        break;
                    }
                }
        }

        AddAVirtualColumn(objFormatInfo.Format[2], strTextFormatString, iHeaderIndex);
        CreateEspandableImageWithParams(null, null, GetUserFilterData());
    }
}

function GetHtmlForFormatOrInsertColumnDialog(sCommand, sFormatType, iHeaderIndex, sColName, strHeaderDisplayText, objOldFormat)
{
    var bIfFormat = (sCommand.toUpperCase().indexOf("FORMAT") != -1);
    var bIfFormula = false;
    var bIfTextFormatting = false;
    var bRegHelpRequired = false;
    var strLblFormat1 = "";
    var strLblFormat2 = "";
    
    var strTxtFormat1 = "";
    var strTxtFormat2 = "";
    
    ////var objOldFormat = {"Type":"A","Format":["Sample.aspx?param={0}", "({0})"]};
    
    switch(sCommand.toUpperCase())
    {
        case "FORMAT_NONE":
        case "INSERT_NONE":
            strLblFormat1 = "";
            strLblFormat2 = "";
            break;
        case "FORMAT_TEXT":
        case "INSERT_TEXT":
            strLblFormat1 = "Format";
            strLblFormat2 = "";
            if(objOldFormat && objOldFormat.Type && objOldFormat.Type.toUpperCase() == "TEXT" && objOldFormat.Format && objOldFormat.Format.length > 0)
            {
                strTxtFormat1 = objOldFormat.Format[0];
            }
            else
            {
                strTxtFormat1 = "[$$" + sColName + "$$]";
            }
            bIfTextFormatting = true;
            break;
        case "FORMAT_A":
        case "INSERT_A":
            strLblFormat1 = "Url";
            strLblFormat2 = "Display Text";
            if(objOldFormat && objOldFormat.Type && objOldFormat.Type.toUpperCase() == "A" && objOldFormat.Format && objOldFormat.Format.length > 1)
            {
                strTxtFormat1 = objOldFormat.Format[0];
                strTxtFormat2 = objOldFormat.Format[1];
            }
            else
            {
                strTxtFormat1 = "Example.aspx?Param=$$" + sColName + "$$";
                strTxtFormat2 = "$$" + sColName + "$$";
            }
            break;
        case "FORMAT_IMG":
        case "INSERT_IMG":
            strLblFormat1 = "Image Url";
            strLblFormat2 = "Alternative Text";
            if(objOldFormat && objOldFormat.Type && objOldFormat.Type.toUpperCase() == "IMG" && objOldFormat.Format && objOldFormat.Format.length > 1)
            {
                strTxtFormat1 = objOldFormat.Format[0];
                strTxtFormat2 = objOldFormat.Format[1];
            }
            else
            {
                strTxtFormat1 = "Download.aspx?ImgId=$$" + sColName + "$$";
                strTxtFormat2 =  "$$" + sColName + "$$";           
            }
            break;
        case "FORMAT_AIMG":
        case "INSERT_AIMG":
            strLblFormat1 = "Url";
            strLblFormat2 = "Image Url";
            if(objOldFormat && objOldFormat.Type && objOldFormat.Type.toUpperCase() == "AIMG" && objOldFormat.Format && objOldFormat.Format.length > 1)
            {
                strTxtFormat1 = objOldFormat.Format[0];
                strTxtFormat2 = objOldFormat.Format[1];
            }
            else
            {
                strTxtFormat1 = "Example.aspx?Param=$$" + sColName + "$$";
                strTxtFormat2 = "Download.aspx?ImgId=$$" + sColName + "$$";        
            }
            break;
        case "FORMAT_F":
        case "INSERT_F":
            bIfFormula = true;
            strLblFormat1 = "Operator/Function";
            strLblFormat2 = "Expression";
            if(objOldFormat && objOldFormat.Type && objOldFormat.Type.toUpperCase() == "F" && objOldFormat.Format && objOldFormat.Format.length > 1)
            {
                strTxtFormat1 = objOldFormat.Format[0];
                strTxtFormat2 = objOldFormat.Format[1];
            }
            else
            {
                strTxtFormat1 = "IF";
                strTxtFormat2 = "$$" + sColName + "$$>0, $$" + sColName + "$$, \"N/A\"";
            }  
            if(strTxtFormat1 == "REPLACE")
                bRegHelpRequired = true;  
            break;
    }
    

    var sHTML="<table cellspacing='0' width='95%' cellpadding='2' rules='all' border='1' style='border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    sHTML += "       <tr>";
    sHTML += "           <td style='width:20%'><b>" + (bIfFormat? "Current&nbsp;Column" : "Column&nbsp;Name")  + "</b></td>";
    sHTML += "           <td style='width:80%'>";
    sHTML += "               <input type='text' id='txtColumnName' style='width:95%;"+ (bIfFormat? "border-style:none;" : "") +"' "+ (bIfFormat? "READONLY" : "") +" value='"+ strHeaderDisplayText +" 1' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";
    sHTML += "       <tr id='trFormatting'>";
    sHTML += "           <td colspan='2'>";
    sHTML += "               <table cellspacing='0' width='100%' cellpadding='2' border='1' style='border:white 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    sHTML += "                   <tr>";
    sHTML += "                       <td colspan='2'>";
    sHTML += "                           Please drag the column names (from column list below) to text boxes to insert place holders for given column. The place holders will be replaced by column value in the grid ";
    sHTML += "                       </td>";
    sHTML += "                   </tr>";
    sHTML += "                   <tr style='height:100px;'>";
    sHTML += "                       <td style='width:20%'><b>All Columns</b></td>";
    sHTML += "                       <td style='width:80%;'>" + GetColumnListAsHyperlinkForPlaceholders() + "</td>";
    sHTML += "                   </tr>";
    sHTML += "                   <tr>";
    sHTML += "                       <td style='height:10px' colspan='2'></td>";
    sHTML += "                   </tr>";
    sHTML += "                   <tr>";
    sHTML += "                       <td style='width:20%'><b>Util Pages</b></td>";
    sHTML += "                       <td style='width:80%;'>";
    sHTML += "                          <a href='#' title='Drag to the textbox to insert place holder to use this utility page' ";
    sHTML += "                            ondragstart='ColNameDragStart(this,event,\"Download.aspx?folderurl=IPDocs%2f$$IP_AT_COL$$%2fDivers%2f$$DocNameCol$$\")'>Download.aspx</a>";
    sHTML += "                          <a href='#' title='Drag to the textbox to insert place holder to use this utility page' ";
    sHTML += "                            ondragstart='ColNameDragStart(this,event,\"Detail.aspx?caseNumber=$$CaseCol$$&language=fr\")'>Detail.aspx</a>";
    sHTML += "                       </td>";
    sHTML += "                   </tr>";
    sHTML += "                   <tr>";
    sHTML += "                       <td style='height:10px' colspan='2'></td>";
    sHTML += "                   </tr>";
    sHTML += "                   <tr>";
    sHTML += "                       <td style='width:20%' id='lblFormat1'><b>"+ strLblFormat1 +"</b></td>";
    sHTML += "                       <td style='width:80%'>";
    if(!bIfFormula)
    {
        sHTML += "                     <input type='text' onchange='PrepareFormatOrInsertColumnPreview(\""+ sFormatType +"\")' value='" + strTxtFormat1 + "' style='width:95%;' id='txtFormat1'/>";
    }
    else
    {
        sHTML += "                      <select id='lstFormat1' onchange='lstFormula_OnChange(this,\""+ sFormatType +"\",\""+ sColName +"\")'>";
        sHTML += "                          <option "+ ((strTxtFormat1 == "IF") ? "SELECTED" : "" )  +" value='IF'>IF(Logical test, Value if true, Value if false)</option>";
        sHTML += "                          <option "+ ((strTxtFormat1 == "REPLACE") ? "SELECTED" : "" )  +" value='REPLACE'>REPLACE(Find In, To Find, Replace With)</option>";
        sHTML += "                      </select>";
    }
    sHTML += "                       </td>";
    sHTML += "                   </tr>";
    
    if(bIfFormula)
    {
        sHTML += "              <tr id='trRegExHelp' "+ (bRegHelpRequired ? "" : " style='display:none' ") +">";
        sHTML += "                  <td colspan='2'>";
        sHTML += "                      You can use regular expressions for <b><i>To Find</i></b> parameter.<br><a href='http://msdn2.microsoft.com/en-us/library/1400241x.aspx' target='_blank'>Click to know more about regular expressions</a>";
        sHTML += "                  </td>";
        sHTML += "              </tr>";
    }
    
    if(!bIfTextFormatting)
    {
        sHTML += "              <tr>";
        sHTML += "                  <td style='width:20%' id='lblFormat2'><b>"+ strLblFormat2 +"</b></td>";
        sHTML += "                  <td style='width:80%'>";
        sHTML += "                      <input type='text' onchange='PrepareFormatOrInsertColumnPreview(\""+ sFormatType +"\")' value='" + strTxtFormat2 + "'  style='width:95%;' id='txtFormat2'/>";
        sHTML += "                  </td>";
        sHTML += "              </tr>";
    }
    sHTML += "               </table>";
    sHTML += "           </td>";
    sHTML += "       </tr>";
    sHTML += "       <tr>";
    sHTML += "           <td><b>Preview</b></td>";
    sHTML += "           <td id='tdFormatOrInsertColumnPreview'></td>";
    sHTML += "       </tr>";
    sHTML += "       <tr>";
    sHTML += "           <td colspan='2' align='center'>";
    sHTML += "               <input type='button' value='Apply' id='btnFormatOrInsertColumnApply' onclick='btnFormatOrInsertColumnApply_Click(this,"+ iHeaderIndex +",\""+ sFormatType +"\","+ (bIfFormat ? "false" : "true") +","+ (bIfFormula ? "true" : "false")+","+ (bIfTextFormatting ? "true" : "false") +")' />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    sHTML += "               <input type='button' value='Cancel' id='btnCancel' onclick='HideHtmlModalDialog()' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";
    sHTML += "   </table>";
    return sHTML;
}

function lstFormula_OnChange(sender, sFormatType, sColName)
{
    var sFormula = sender.value + "";
    var objTxtFormat2 = document.getElementById("txtFormat2");
    var objTrRegExHelp = document.getElementById("trRegExHelp");
    
    switch(sFormula)
    {
        case "IF":
            objTxtFormat2.value = "$$" + sColName + "$$>0, $$" + sColName + "$$, \"N/A\"";
            objTrRegExHelp.style.display = GetDisplay(false);
            break;
        case "REPLACE":
            objTxtFormat2.value = "\"$$" + sColName + "$$\", \"Find\", \"Replace With\"";
            objTrRegExHelp.style.display = GetDisplay(true);
            break;
            
    }
    PrepareFormatOrInsertColumnPreview(sFormatType);
}

function btnFormatOrInsertColumnApply_Click(sender, iHeaderIndex, sFormatType, bVirtualColumn, bIfFormula, bIfTextFormatting)
{
    var objLstFormat1 = document.getElementById("lstFormat1");
    var objTxtFormat1 = document.getElementById("txtFormat1");
    var objTxtFormat2 = document.getElementById("txtFormat2");
    
    var strParam1 = "";
    var strParam2 = ""; 
            
    if(bIfFormula)
    {
        strParam1 = objLstFormat1.value + "";
    }
    else
    {
        strParam1 = objTxtFormat1.value + "";
    }
    
    if(!bIfTextFormatting)
    {
        strParam2 = objTxtFormat2.value + "";
    }
    
    var objNewFormat = 
    {
        "Type": sFormatType + "",
        "Format": [ strParam1, strParam2]
    };
    
    if(bVirtualColumn)
    {
        var objTxtColumnName = document.getElementById("txtColumnName");
        objNewFormat.Format.push(objTxtColumnName.value +"");
    }
    
    HideHtmlModalDialog();
    
    if(bVirtualColumn)
    {
        InsertVirtualGridcolumn(objNewFormat, iHeaderIndex);
    }
    else
    {
        ReformatGridColumn(objNewFormat, iHeaderIndex);
    }
}

function PrepareFormatOrInsertColumnPreview(sFormatType)
{
    var objTdFormatOrInsertColumnPreview = document.getElementById("tdFormatOrInsertColumnPreview");
 
    var objLstFormat1 = document.getElementById("lstFormat1");
    var objTxtFormat1 = document.getElementById("txtFormat1");
    var objTxtFormat2 = document.getElementById("txtFormat2");
    
    var sHTML = "";
    
    switch(sFormatType.toUpperCase())
    {
        case "TEXT":
            var sVal = objTxtFormat1.value + "";
            sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            break;
        case "A":
            sHTML = "<a href=\"";
            if(objTxtFormat1.value)
            {
                var sVal = objTxtFormat1.value + "";
                sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            }
            else
            {
                sHTML += "#";
            }
            sHTML += "\" >";
            
            if(objTxtFormat2.value)
            {
                var sVal = objTxtFormat2.value + "";
                sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            }
            else
            {
                sHTML += "NA";
            }
            sHTML += "</a>";
            break;
        case "IMG":
            sHTML = "<img src=\"";
            if(objTxtFormat1.value)
            {
                var sVal = objTxtFormat1.value + "";
                sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            }
            else
            {
                sHTML += "#";
            }
            sHTML += "\" alt=\"";
            
            if(objTxtFormat2.value)
            {
                var sVal = objTxtFormat2.value + "";
                sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            }
            else
            {
                sHTML += "NA";
            }
            sHTML += "\" />";
            break;
        case "AIMG":
            sHTML = "<a href=\"";
            if(objTxtFormat1.value)
            {
                var sVal = objTxtFormat1.value + "";
                sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            }
            else
            {
                sHTML += "#";
            }
            sHTML += "\" >";
        
            sHTML += "<img src=\"";
            if(objTxtFormat2.value)
            {
                var sVal = objTxtFormat2.value + "";
                sHTML += ReplaceValuesInFormat(sVal, __SampleDataRow);
            }
            else
            {
                sHTML += "#";
            }
            sHTML += "\" border='0' alt=\"";
            
            sHTML += GetDisplayName(sColName);
            sHTML += "\" /></a>";
            break;
        case "F":
            bIfFormula = true;
            var sFunction = objLstFormat1.value + "";
            var sVal = objTxtFormat2.value + "";
            sVal = ReplaceValuesInFormat(sVal, __SampleDataRow);
            switch(sFunction)
            {
                case "IF":
                    sHTML += CONDITION_IFF(sVal);
                    break;
                case "REPLACE":
                    sHTML += STRING_REPLACE(sVal);
                    break;
                
            }
            break;
        default:
            var sVal = objTxtFormat2.value + "";
            sVal = ReplaceValuesInFormat(sVal, __SampleDataRow);
            sHTML = sVal; //GetDisplayName(sColName);
            break;
    }
    
    objTdFormatOrInsertColumnPreview.innerHTML = sHTML;
}

function ReplaceValuesInFormat(strFormat, dtData)
{
    var strFormatedString = "";
    var iCurPos = 0;
    while(true)
    {
        var iDollerIndex = strFormat.indexOf("$$", iCurPos);
        if(iDollerIndex < 0)
            break;
        var iDollerIndex2 = strFormat.indexOf("$$", iDollerIndex+2);
        if(iDollerIndex2 < 0)
            break;
        var strLeftPart = strFormat.substring(iCurPos,  iDollerIndex);
        var strPlaceHolder = strFormat.substring(iDollerIndex+2,  iDollerIndex2);
        if(dtData[strPlaceHolder.toUpperCase()])
        {
            strFormatedString += strLeftPart + dtData[strPlaceHolder.toUpperCase()];
        }
        else
        {
            strFormatedString += strLeftPart + strPlaceHolder + " 1";
        }
        iCurPos = iDollerIndex2+2;
    }
    
    if(iCurPos < strFormat.length)
    {
        //arrParts.push({"LeftPart":strFormat.substr(iCurPos)+"", "PlaceHolder": null});
        strFormatedString += strFormat.substr(iCurPos);
    }
    return strFormatedString;
}

function GetColumnListAsHyperlinkForPlaceholders()
{
    var sHTML = "<div style='width:100%;height:100px;overflow:auto;border:white 1px solid;padding:0px;margin:0;'>";
    sHTML += "<table cellspacing='0' width='95%' cellpadding='2' border='1' style='height:100px;border:white 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    for(var i=0;i<objAllNodesData.length;i++)
    {
        var strColName = objAllNodesData[i].TextField + "";
        sHTML += "<tr><td><a href='#' title='Drag to the textbox to insert place holder for this column' ondragstart='ColNameDragStart(this,event,\"$$"+ strColName +"$$\")'>" + strColName + " (" + GetDisplayName(strColName) + ")</a></td></tr>";
    }            
    sHTML += "</table>";
    return sHTML;
}

//IF(Logical test, Value if true, Value if false)
function CONDITION_IFF(strCondition)
{
    var arrCondition = strCondition.split(',');
    strCondition = "( " + arrCondition[0] + " ) ? ( " + arrCondition[1] + " ) : ( " + arrCondition[2] + " ) ";
    var sVal = null;
    try
    {
        sVal = eval(strCondition);
    }catch(e){}
    
    return sVal;
}

//REPLACE(Find In, To Find, Replace With)
function STRING_REPLACE(strParameters)
{
    var arrParameters = strParameters.split(',');
    var sVal = null;
    try
    {
        var r = new RegExp(arrParameters[1].split('"').join(''));
        r.global = true;
        r.ignoreCase = true;
        sVal = arrParameters[0].split('"').join('').replace(r, arrParameters[2].split('"').join(''));
    }
    catch(e)
    {
        return "Error in finding";
    }
    return sVal;
}

function ColNameDragStart(sender, e, strColDispName)
{
    e.dataTransfer.setData("Text", strColDispName + ""); 
    e.dataTransfer.effectAllowed = "copy";                 
}

function GetDisplayName(sColID)
{
    if(htHeaderCodeLabel && htHeaderCodeLabel[sColID])
    {
        return htHeaderCodeLabel[sColID] + "";
    }
    else
    {
        return sColID+""; 
    }
}

function GetSampleValue(sColID)
{
    
    if(objAllNodesData && objAllNodesData[sColID])
    {
        return objAllNodesData[sColID] + "";
    }
    else
    {
        return sColID+"";
    }
}

function ShowHtmlModalDialog(sHTML, iWidth, iHeight)
{
    if(!iWidth)
        iWidth = 500;
    if(!iHeight)
        iHeight = 500;
    var objPnlModalDialog = document.getElementById("pnlModalDialog");
    var objPnlModalDialog_Inner = document.getElementById("pnlModalDialog_Inner");
    
    objPnlModalDialog_Inner.style.width = iWidth + "px";
    objPnlModalDialog_Inner.style.height = iHeight + "px";
    
    var iLeft = 100;
    if(document.all)
    {
        iLeft = (window.screen.availWidth / 2) - (iWidth/2);
        if(iLeft < 0) iLeft = 10;
    }
    
    iLeft += document.body.scrollLeft;
    
    var iTop = 100;
    
    iTop += document.body.scrollTop;
    
    objPnlModalDialog_Inner.style.left = iLeft + "px";
    objPnlModalDialog_Inner.style.top = iTop + "px";
    objPnlModalDialog_Inner.innerHTML = sHTML;
    objPnlModalDialog.style.display = GetDisplay(true);
}

function HideHtmlModalDialog()
{
    var objPnlModalDialog = document.getElementById("pnlModalDialog");
    objPnlModalDialog.style.display = GetDisplay(false);
}

function GetConditionIffString(strCondition)
{
    var arrCondition = strCondition.split(',');
    strCondition = "~~EXP__TO__EVAL~~( " + arrCondition[0] + " ) ? ( " + arrCondition[1] + " ) : ( " + arrCondition[2] + " ) ";
    return strCondition;
}

function GetConditionReplaceString(strCondition)
{
    var arrCondition = strCondition.split(',');
    strCondition = "~~EXP__TO__EVAL~~__RegExpReplace(" + arrCondition[0] + ", " + arrCondition[1] + ", " + arrCondition[2] + ")";
    return strCondition;
}

//egGrid_OnSortClick(sender, strField, strImgID, strAscImgSrc, strDescImgSrc, iNodeIndex)
function SortColumn(strField, strImgID, strAscImgSrc, strDescImgSrc, iNodeIndex)
{
    var iIndex = -1;
    if(ArrSortExpressionImagesIndex[strField])
    {
        iIndex = ArrSortExpressionImagesIndex[strField];
    }
    else
    {
        iIndex = ArrSortExpressionImages.length;
        ArrSortExpressionImagesIndex[strField] = iIndex;
    }
    
    ArrSortExpressionImages[iIndex] = strImgID + "";

    if(strSortExpression.indexOf(strField) != -1)
    {
        strSortExpression = strSortExpression.split(strField).join('');
        strSortExpression = ',' + strSortExpression + ',';
        strSortExpression = strSortExpression.split(', ').join(',');
        strSortExpression = strSortExpression.split(' ,').join(',');
        strSortExpression = strSortExpression.split(',DESC,').join(',');
        strSortExpression = ReplaceAll(strSortExpression, ',,', ',');
        strSortExpression = TrimChar(strSortExpression, ' ');
        strSortExpression = TrimChar(strSortExpression, ',');
    }   

    var objIMG = $get(strImgID);
    var strCurImgSrc = objIMG.src + "";
    strCurImgSrc = strCurImgSrc.substr(strCurImgSrc.length - strAscImgSrc.length);
    var sortExpression = strField + "";
    if(strCurImgSrc == strAscImgSrc)
    {
        objIMG.src = strDescImgSrc;
        sortExpression += " DESC";
    }
    else
    {
        objIMG.src = strAscImgSrc;
    }
    if(strSortExpression.length > 0)
        strSortExpression += ",";
    strSortExpression += sortExpression;
    
    try
    {
        objIMG.title = strSortExpression + "";
    }
    catch(ex){}
    
    oDummyEspandableImage.SetSortExpressionAndSortTheGrid(strSortExpression, iNodeIndex);
    //ShowSortExpression();
    UpdateReportTitleAndFilterSummery();
}

function ShowHideHeaderAndFilters(bDisplay)
{
    window.location.href = "#grid";
    //window.scrollTo(0,99999);
}

function BorderImage(objImg, sColor)
{
    objImg.style.borderWidth = "2px";
    objImg.style.borderColor = sColor;
    objImg.style.borderStyle = "solid";
}

function UpdateReportTitleAndFilterSummery()
{
    var objPnlReportTitleAndFilterSummery = document.getElementById("pnlReportTitleAndFilterSummery");
    var strSummery = "&nbsp;<img id='imgDownImage' style='border-width:2px;' onmouseover=\"BorderImage(this, 'red');\" onmouseout=\"BorderImage(this, 'white');\" alt='Down' title='Click to show header pane' onclick='ShowHideHeaderAndFilters(true);' src='DownArrow.gif' />";
    strSummery += "&nbsp;&nbsp;<b>View:&nbsp;" + __CurrentViewName + "</b>&nbsp;&nbsp;Filter:&nbsp;" +  GetUserFilterData() + "&nbsp;&nbsp;Sort:" + strSortExpression;
    objPnlReportTitleAndFilterSummery.innerHTML = strSummery;
}

function CreateDefaultFilters()
{
    var strHTML = "<table width='95%' cellspacing='0' cellpadding='2' align='Left' rules='all' border='1' style='height:295;border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    strHTML += "<tr><td colspan='3' style='border-bottom: silver 1px solid;height:15px;background-color:#f0f0f0;'><b>Filters</b></td></tr>";
    strHTML += "<tr><td colspan='3' valign='top'><div style='width:100%;height:200px;overflow:auto;text-align:left;'>";
    strHTML += "<table width='95%' cellspacing='0' cellpadding='2' align='Left' rules='all' border='1' style='border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    for(var i=0;i<objFilterData.length;i++)
    {
        if(objFilterData[i].Operators && objFilterData[i].Operators.length > 0)
        {
            if(objFilterData[i].Operators.length > 1)
            {
                for(var j=0;j<objFilterData[i].Operators.length;j++)
                {
                    var sVal1 = "";
                    var sVal2 = "";
                    var oldObject = $get("__OperandForFID_" + objFilterData[i].ID + "_"+ j );
                    if(oldObject && oldObject.value)
                        sVal1 = oldObject.value;
                        
                    var oldObject2 = $get("__OperandForFID_BW_" + objFilterData[i].ID + "_"+ j);
                    if(oldObject2 && oldObject2.value)
                        sVal2 = oldObject2.value;
                
                    var sDisplay = "style='display:none'";
                    var oldObject3 = $get("__OperatorContainer_BW_" + objFilterData[i].ID +"_" + j );
                    if(oldObject3 && oldObject3.style)
                    {
                        if(oldObject3.style.display != "none")
                            sDisplay = "";
                    }
                        
                    strHTML += "<tr>";
                    if(j==0)
                        strHTML += "<td rowspan='"+ objFilterData[i].Operators.length +"'>" + objFilterData[i].DisplayName + "</td>";
                    strHTML += "<td>" + GetFilterSelect(objFilterData[i].Name, objFilterData[i].DataType, objFilterData[i].Operators[j], objFilterData[i].ID,j) + "</td>";
                    strHTML += "<td id='__OperatorContainer_"+ objFilterData[i].ID +"_"+ j +"'><input class='txt' value='"+ sVal1 +"' onblur='ShowFilterPreview()' onfocus=\"OperandForFID_onFocus(this,'"+ objFilterData[i].Name +"',"+ objFilterData[i].ID +"," + j + "," + objFilterData[i].DataType +" );\" id = '__OperandForFID_" + objFilterData[i].ID + "_"+ j +"'>";
                    strHTML += "<br><nobr "+ sDisplay +" id='__OperatorContainer_BW_" + objFilterData[i].ID +"_" + j +"' ><input class='txt' value='"+ sVal2 +"' onblur='ShowFilterPreview()' onfocus=\"OperandForFID_onFocus(this,'"+ objFilterData[i].Name +"',"+ objFilterData[i].ID +"," + j + "," + objFilterData[i].DataType +" );\" id = '__OperandForFID_BW_" + objFilterData[i].ID + "_" + j + "'></nobr>";
                    strHTML += "</td>"
                    strHTML += "</tr>";
                }
            }
            else
            {
                var sVal1 = "";
                var sVal2 = "";
                var oldObject = $get("__OperandForFID_" + objFilterData[i].ID + "_0");
                if(oldObject && oldObject.value)
                    sVal1 = oldObject.value;
                    
                var oldObject2 = $get("__OperandForFID_BW_" + objFilterData[i].ID + "_0");
                if(oldObject2 && oldObject2.value)
                    sVal2 = oldObject2.value;
                
                var sDisplay = "style='display:none'";
                var oldObject3 = $get("__OperatorContainer_BW_" + objFilterData[i].ID +"_0");
                if(oldObject3 && oldObject3.style)
                {
                    if(oldObject3.style.display != "none")
                        sDisplay = "";
                }
                
                strHTML += "<tr>";
                strHTML += "<td >" + objFilterData[i].DisplayName + "</td>";
                strHTML += "<td>" + GetFilterSelect(objFilterData[i].Name, objFilterData[i].DataType, objFilterData[i].Operators[0], objFilterData[i].ID,0) + "</td>";
                strHTML += "<td id='__OperatorContainer_"+ objFilterData[i].ID +"_0'><input class='txt' value='"+ sVal1 +"' onblur='ShowFilterPreview()' onfocus=\"OperandForFID_onFocus(this,'"+ objFilterData[i].Name +"',"+ objFilterData[i].ID +",0," + objFilterData[i].DataType +" );\" id = '__OperandForFID_" + objFilterData[i].ID + "_0'>"
                strHTML += "<br><nobr style='display:none' id='__OperatorContainer_BW_" + objFilterData[i].ID +"_0'><input class='txt' value='"+ sVal2 +"' onblur='ShowFilterPreview()' onfocus=\"OperandForFID_onFocus(this,'"+ objFilterData[i].Name +"',"+ objFilterData[i].ID +",0," + objFilterData[i].DataType +" );\" id = '__OperandForFID_BW_" + objFilterData[i].ID + "_0'></nobr>";
                strHTML += "</td>"
                strHTML += "</tr>";
            }
        }
    }
    strHTML += "</td></tr><tr><td ><b>Filter<br>Expression<b></td><td colspan='2'><span id='lblFilterExpressionPreview'></span></td></tr></table></div>";
    strHTML += "<tr><td colspan='3' align='right'><input class='btn' type='button' onclick='CreateEspandableImageWithParams(null, null, GetUserFilterData())' value = 'Filter'/>";
    strHTML += "&nbsp;&nbsp;&nbsp;&nbsp;";
    strHTML += "<input class='btn' type='button' onclick='ClearUserFilterData();CreateEspandableImageWithParams(null, null, GetUserFilterData())' value = 'Reset Filter'/>";
    strHTML += "&nbsp;&nbsp;&nbsp;&nbsp;</td>";
    //strHTML += "<td><input class='btn' type='button' onclick='ClearUserFilterData();ClearSortExpression();CreateEspandableImageWithParams(null, null, GetUserFilterData())' value = 'Reset All'></td>";
    strHTML += "</tr>";
    strHTML += "<tr><td colspan='3' style='height:10px' ></td></tr>";
    strHTML += "<tr>";
    strHTML += "<td style='border-right: white 1px solid;' colspan='2'><b>Add New Filter</b></td>";
    strHTML += "<td align='right'>" + GetFieldList() + "&nbsp;&nbsp;&nbsp;&nbsp;";
    strHTML += "<input class='btn' type='button' onclick='AddNewFilter()' value = 'Add'>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
    strHTML += "</tr>";
    
    strHTML += "</table>";
    
    __PanelForFilters.innerHTML = strHTML;
    
    /*strHTML = "<table width='95%' cellspacing='0' cellpadding='2' align='Left' rules='all' border='1' style='height:295;border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    strHTML += "<tr><td colspan='3' style='background-color:#f0f0f0;'><b>Sort Order</b></td></tr>";
    strHTML += "<tr><td ><div id='pnlSortExpressionPreview'></span></td></tr>";
    strHTML += "<td align='right'><input class='btn' type='button' onclick='ClearSortExpression();CreateEspandableImageWithParams(null, null, GetUserFilterData())' value = 'Reset Sorting'>&nbsp;&nbsp;&nbsp;&nbsp;</td>";
    strHTML += "</table>";
    
    __PanelForSorting.innerHTML = strHTML;
    //ShowSortExpression();
    */
    ShowFilterPreview();
}

function CreateViewList()
{
    var strBaseUrl = window.location.search;
    if(strBaseUrl.length == 0)
    {
        strBaseUrl = "?ViewId=";
    }
    else
    {
        if(strBaseUrl.indexOf("?") == 0)
        {
            strBaseUrl = strBaseUrl.substr(1);
        }
        var iIndex = strBaseUrl.toLowerCase().indexOf("viewid=");
        if(iIndex != -1)
        {
            var iQIndex = strBaseUrl.indexOf("&", iIndex);
            if(iIndex == 0)
            {
                if(iQIndex == -1)
                {
                    strBaseUrl = "";
                }
                else
                {
                    strBaseUrl = strBaseUrl.substr(iQIndex+1) + "&";
                }
            }
            else
            {
                if(iQIndex == -1)
                {
                    iQIndex = strBaseUrl.length;
                }
                strBaseUrl = strBaseUrl.substr(0,iIndex) + strBaseUrl.substr(iQIndex);
            }
            strBaseUrl += "ViewId=";
        }
        else
        {
            strBaseUrl += "&ViewId="; 
        }
        strBaseUrl = "?" + strBaseUrl;
    }
    
    var strHTML = "<div style='width:95%;height:20px;text-align:left;background-color:#f0f0f0;border-color:silver;border-width:1px;border-style:Solid;'><div style='margin-top:3px'><b>Stacks&nbsp;&nbsp;</b></div></div>";
    strHTML += "<div class='reorderList' style='width:95%;height:275px;overflow:auto;text-align:left;border-color:silver;border-width:1px;border-style:solid;border-top-style:none;'>";
    //strHTML += "<table width='98%' cellspacing='0' cellpadding='0' align='Left' border='0' >";
    strHTML += "<UL class='boxy' style='width:100%' id='UL_Main_Stacks_0'>";
    __CurrentViewName = null;
    
    var arrReorderListData = new Array();
    
    arrReorderListData.push('UL_Main_Stacks_0');
    
    var arrPnlDrag = new Array();
    
    for(var i=0;i<dtViewList.length;i++)
    {
        var bCurrentViewInChilds = false;
        var strHTML2 = "";
        for(var j=0;j<dtViewList[i].CHILDS.length;j++)
        {
            strHTML2 += "<LI>";
            
            if(iSelectedViewID == dtViewList[i].CHILDS[j].ID)
            {
                strHTML2 += "<table border='0' cellpadding='0' cellspacing='0' width='95%'>";
                strHTML2 += "<tr><td style='cursor:pointer' oncontextmenu='return ShowStackContextMenu(this,event,\"" + dtViewList[i].CHILDS[j].ID + "\");' onclick='HideStackContextMenu()' ";
                strHTML2 += "title ='right click to see options'>";

                strHTML2 += "<div id='pnlContextMenu_Stack_0' style='z-index:100;margin-top: 15px; margin-left: 20px; display: none; position: absolute; background-color: #f0f0f0;cursor:default'>";
                strHTML2 += "    <table class='HeaderMenu' border='0' cellspacing='0'>";
                strHTML2 += "        <tr style='cursor:pointer'  onmousedown='event.cancelBubble = true;' onmouseover=\"this.cells[0].className='MenuItemHover';this.cells[1].className='MenuItemHover';\" onmouseout=\"this.cells[0].className='MenuItem';this.cells[1].className='MenuItem';\"  title='Click to sort' ";
                strHTML2 += "        onclick='AddNewExtractor(this,event,"+ dtViewList[i].CHILDS[j].ID +");' >";
                strHTML2 += "        <td class='MenuItem'><img width='15' height='15' src='transparent.gif' alt='Filter' /></td>";
                strHTML2 += "        <td onselectionstart='return false;' class='MenuItem'>Add&nbsp;new&nbsp;Extractor</td>";
                strHTML2 += "        </tr>";
                strHTML2 += "        <tr style='cursor:pointer'  onmousedown='event.cancelBubble = true;' onmouseover=\"this.cells[0].className='MenuItemHover';this.cells[1].className='MenuItemHover';\" onmouseout=\"this.cells[0].className='MenuItem';this.cells[1].className='MenuItem';\"  title='Click to sort' ";
                strHTML2 += "        onclick='AddNewOverlay(this,event,"+ dtViewList[i].CHILDS[j].ID +");' >";
                strHTML2 += "        <td class='MenuItem'><img width='15' height='15' src='transparent.gif' alt='Filter' /></td>";
                strHTML2 += "        <td onselectionstart='return false;' class='MenuItem'>Add&nbsp;new&nbsp;Overlay</td>";
                strHTML2 += "        </tr>";
                strHTML2 += "    </table>"; 
                strHTML2 += "</div>";

                strHTML2 += "<a style ='text-decoration:none;color :black' href='#'>Stack " + dtViewList[i].NAME + "_" + j + "</a></td><td align='right'>";
                strHTML2 +="<a class='PagerLink'  onmousedown='event.cancelBubble = true;' onclick=\"ShowViewStats(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" >Perf.</a>";
                if(bIsCachedView)
                {
                    strHTML2 +="&nbsp;&nbsp;&nbsp;&nbsp;<input id='btnUnCacheCurrentView'  onmousedown='event.cancelBubble = true;' style='width:70px;display:none' class='btn' type='button' onclick=\"UnCacheCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Uncache'>&nbsp;&nbsp;&nbsp;&nbsp;";
                }
                else
                {
                    strHTML2 +="&nbsp;&nbsp;&nbsp;&nbsp;<input id='btnCacheCurrentView'  onmousedown='event.cancelBubble = true;' style='width:70px;display:none' class='btn' type='button' onclick=\"CacheCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Cache'>&nbsp;&nbsp;&nbsp;&nbsp;";
                }                
                                
                strHTML2 +="&nbsp;&nbsp;&nbsp;&nbsp;<input style='width:70px;' onmousedown='event.cancelBubble = true;' class='btn' type='button' onclick=\"SaveCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Save'>";
                strHTML2 +="&nbsp;&nbsp;&nbsp;&nbsp;";
                strHTML2 +="<input class='btn' onmousedown='event.cancelBubble = true;' style='width:70px;' type='button' onclick=\"SaveAsCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Save As'>&nbsp;&nbsp;&nbsp;";
                strHTML2 += "</td></tr>";
                strHTML2 += "<tr><td colspan='2' align='left'>";
                
                strHTML2 += "<table  style='z-index:99; border: #F0F0F0 1px solid;padding-top:5px;border-color:#F0F0F0;border-collapse:collapse' border='1' cellpadding='0' cellspacing='0' width='98%'>";
                strHTML2 += "<tr><td>";
                
                arrReorderListData.push("ulEntity_" + i + "_" + j);
                strHTML2 += "<ul id='ulEntity_" + i + "_" + j + "' >";
                strHTML2 += "<li>";
                
                strHTML2 += "<a style ='text-decoration:none;color :black' href='#'><b>Overlay:&nbsp;</b>"
                strHTML2 += dtViewList[i].CHILDS[j].NAME;
                
                __CurrentViewName = dtViewList[i].CHILDS[j].NAME;
                bCurrentViewInChilds = true;
                strHTML2 +="</a>";
                strHTML2 +="</li>";
                
                strHTML2 += "<li>";
                strHTML2 += "<a style ='text-decoration:none;color :black' href='#'><b>Extractor:&nbsp;</b>"
                strHTML2 += dtViewList[i].NAME ;
                strHTML2 +="</a>";
                strHTML2 +="</li></ul>";
                
                //strHTML2 += "</td><td style='width:20px;'><div id='tdDropContainerForJoin' onmouseover='event.cancelBubble = true; return false' ondragleave = 'tdDropContainerForJoin_ondragleave(this, event);' ondragenter ='return tdDropContainerForJoin_ondragenter(this, event);' ondragover='return tdDropContainerForJoin_ondragenter(this, event)' ondrop ='tdDropContainerForJoin_ondrop(this, event)' style='width:100%;height:100%;overflow:hide'>Drop<br>here<br>to<br>join</div></td></tr></table>";
                strHTML2 += "</td><td style='width:20px;'><div id='pnlDropContainerForJoin' style='width:100%;height:100%;overflow:hide'>Drop<br>here<br>to<br>join</div></td></tr></table>";
                
                strHTML2 +="</td></tr></table>";
            }
            else if(iSelectedViewID != dtViewList[i].CHILDS[j].ID)
            {
                strHTML2 += "<table border='0' cellpadding='0' cellspacing='0' width='95%' style='width:350px'>";
                strHTML2 += "<tr><td>"
                strHTML2 += "<a class='PagerLink' onmousedown='event.cancelBubble = true;' href='" + strBaseUrl + dtViewList[i].CHILDS[j].ID +"'>";
                strHTML2 += "Stack " + dtViewList[i].NAME + "_" + j ;
                strHTML2 += "</a>";
                strHTML2 += "&nbsp;&nbsp;<img style='cursor:pointer' onclick=\"ToggleDisplayStackDetails(this, event,'trStackDetails_"+ i +"_"+ j +"', 'plnStackDetails_" + i + "_" + j + "');\" src='collapse.gif' ></td></tr>";
                strHTML2 += "<tr style='display: none' id='trStackDetails_" + i + "_" + j + "'><td>";
                
                arrPnlDrag.push("lbkOverlay_"+ i +"_"+ j);
                strHTML2 += "<a id='lbkOverlay_" + i +"_"+ j +"' onmousedown='event.cancelBubble = true;' style ='text-decoration:none;color :black' href='#'><b>Overlay:&nbsp;</b>"
                strHTML2 += dtViewList[i].CHILDS[j].NAME;
                strHTML2 +="</a><br>";
                
                arrPnlDrag.push("lbkExtractor_"+ i +"_"+ j);
                strHTML2 += "<a id='lbkExtractor_" + i +"_"+ j +"' onmousedown='event.cancelBubble = true;' style ='text-decoration:none;color :black' href='#'><b>Extractor:&nbsp;</b>"
                strHTML2 += dtViewList[i].NAME ;               
                strHTML2 +="</a>";
                
                strHTML2 += "</td></tr></table>";
            }
            strHTML2 += "</LI>";
        } //End for(var j=0;j<dtViewList[i].CHILDS.length;j++)
        strHTML += strHTML2;
    } //for(var i=0;i<dtViewList.length;i++)
    
    strHTML += "</UL></div>";
                
    __PanelForViewList.innerHTML = strHTML;
   
   //ToolMan.drag().createSimpleGroup
   
   for(var i=0;i<arrReorderListData.length;i++)
   {
        ToolMan.dragsort().makeListSortable(document.getElementById(arrReorderListData[i]));
   }
    
    MakeDroppable("pnlDropContainerForJoin", pnlDropContainerForJoin_ondrop, "##__EXTR_OVERLY_DATA__##");
    
    for(var i=0; i<arrPnlDrag.length;i++)
    {
        var sObjID = arrPnlDrag[i] + "";
        var sData = getExtractorOverlayData(sObjID);
        MakeDraggable(sObjID, "pnlDropContainerForJoin", pnlDropContainerForJoin_ondrop, "##__EXTR_OVERLY_DATA__##", sData);
    } 
}


function getExtractorOverlayData(senderId)
{
    var sender = document.getElementById(senderId);
    var arrLinks = new Array();
    arrLinks.push(sender.innerHTML + "");
    try
    {
        var objTemp = sender.nextSibling;
        while(objTemp)
        {
            if(objTemp.tagName == "A")
            {
                arrLinks.push(objTemp.innerHTML + "");
            }
            objTemp = objTemp.nextSibling
        }
    }catch(ex){}
    var strArrHtml = Sys.Serialization.JavaScriptSerializer.serialize(arrLinks); 
    return strArrHtml;
}

function StackItemDragStart(sender, e, sViewName)
{
    var arrLinks = new Array();
    arrLinks.push(sender.innerHTML + "");
    try
    {
        var objTemp = sender.nextSibling;
        while(objTemp)
        {
            if(objTemp.tagName == "A")
            {
                arrLinks.push(objTemp.innerHTML + "");
            }
            objTemp = objTemp.nextSibling
        }
    }catch(ex){}
    var strArrHtml = Sys.Serialization.JavaScriptSerializer.serialize(arrLinks);    
    e.cancelBubble = true;
    e.dataTransfer.setData("Text", "##__EXTR_OVERLY_DATA__##" + strArrHtml); 
    e.dataTransfer.effectAllowed = "copy";     
}


function pnlDropContainerForJoin_ondrop(sender, e, sData)
{
    var strULstID = GetUniqueListID();
    var arrLinks1 = null;
    eval("arrLinks1 =" + sData);
    var strHTML = "";
    if(arrLinks1)
    {
        strHTML += "<ul id='"+ strULstID +"'>";
        for(var i=0;i<arrLinks1.length;i++)
        {
            strHTML += "<li>";
            strHTML += "<a style ='text-decoration:none;color :black' href='#'>"
            strHTML += arrLinks1[i];
            strHTML +="</a>";
            strHTML +="</li>";
        }
        strHTML += "</ul>";
    }

    var objFirstCell = sender.parentNode.parentNode.cells[0].cloneNode(0);
    objFirstCell.innerHTML = strHTML;
    sender.parentNode.parentNode.insertBefore(objFirstCell, sender.parentNode);
    
    ToolMan.dragsort().makeListSortable(document.getElementById(strULstID));
}


function ToggleDisplayStackDetails(sender, e, strTrId, strPnlId)
{
    var objTr = document.getElementById(strTrId);
    var objPnl = document.getElementById(strPnlId);
    if(objTr && objTr.style.display == 'none')
    {
        objTr.style.display = GetDisplay(true);
        //objPnl.style.height = '30px';
        sender.src = sender.src.replace("collapse.gif", "expand.gif");
    }
    else
    {
        objTr.style.display = GetDisplay(false);
        //objPnl.style.height = '3px';
        sender.src = sender.src.replace("expand.gif","collapse.gif");
    }
}
/*
function tdDropContainerForJoin_ondragleave(sender, e)
{
    try
    {
        sender.style.backgroundColor = 'white';
        event.cancelBubble = true; 
        return false;
    }catch(e){}
}

function tdDropContainerForJoin_ondragenter(sender, e)
{
    try
    {
        var sData = e.dataTransfer.getData("Text");
        if(sData)
        {
            sData = sData.substr(0, 24);
            if(sData == "##__EXTR_OVERLY_DATA__##")
            {
                sender.style.backgroundColor = 'red';
                event.cancelBubble = true; 
                return false;
            }
        }
    }catch(e){}
    return true;
}

function tdDropContainerForJoin_ondrop(sender, e)
{
    try
    {
        var sData = e.dataTransfer.getData("Text");
        var sKey = sData.substr(0, 24);
        sData = sData.substr(24);
        var strULstID = GetUniqueListID();
        var arrLinks1 = null;
        eval("arrLinks1 =" + sData);
        var strHTML = "";
        if(arrLinks1)
        {
            strHTML += "<ul id='"+ strULstID +"'>";
            for(var i=0;i<arrLinks1.length;i++)
            {
                strHTML += "<li>";
                strHTML += "<a style ='text-decoration:none;color :black' href='#'>"
                strHTML += arrLinks1[i];
                strHTML +="</a>";
                strHTML +="</li>";
            }
            strHTML += "</ul>";
        }
        
        
        var objFirstCell = sender.parentElement.cells[0].cloneNode(0);
        objFirstCell.innerHTML = strHTML;
        sender.parentElement.insertBefore(objFirstCell, sender);
        
        ToolMan.dragsort().makeListSortable(document.getElementById(strULstID));
        
        tdDropContainerForJoin_ondragleave(sender, e);
    }
    catch(ex){}
}*/


var __IListId = 0;
function GetUniqueListID()
{
    return "__UL_UID_" + __IListId++;
}

function callListEvents(objListArr,objWatcherArr)
{
    for(var i=0;i<objListArr.length;i++)
    {
        var arrHandleList = objListArr[i];
        AttachListBehavior(arrHandleList[0],arrHandleList[1],arrHandleList[2]);
    }    
    
    
    for(var i=0;i<objWatcherArr.length;i++)
    {
        var arrWatcher = objWatcherArr[i];
        AttachDropWatcherBehavior(arrWatcher[0],arrWatcher[1],arrWatcher[2],true);
    }
        
    //ATTACH WHOLE STACK'S R'ORDER LIST BEHAVIOR
    try
    {
        var k=0;
        for(var i=0;i<dtViewList.length;i++)
        {        
            for(var j=0;j<dtViewList[i].CHILDS.length;j++)
            {    
                 var objHandleList = "Div_Stack_Links_" + i + "_" + j;
                 var objListId = "LI_Stack_" + i + "_" + j;
                 AttachListBehavior(objHandleList,objListId,500 +k);
                 k++;
            }
        }    
        
        if(dtViewList.length > 0)
        {        
            //LI_Stack_dat_Template1
            AttachDropWatcherBehavior("UL_Main_Stacks_0","ip_Stack_ClientState_1",500,false);
        }
    }
    catch(ex){}
}

function AttachListBehavior(objHandleId,objListId,behId)
{
     var objHandle = $get(objHandleId);
     var objList = $get(objListId);
        
     if(objHandle && objList)
        { 
             var dragList = $create(AjaxControlToolkit.DraggableListItem,
                    {"handle":objHandle,
                    "id":"Entity_rOrdLst__rli_"+behId},
                    null,
                    null,
                    objList
                    );
        }            
}


function AttachDropWatcherBehavior(objULId,objClientIPId,behId,sFlagTempl)
{
     var objUL = $get(objULId);    
     
     var objdropCueTemplate;
     
        if(sFlagTempl)
            objdropCueTemplate = $get("rOrdLst__dat");
        else     
            objdropCueTemplate = $get("LI_Stack_dat_Template1");
            
                        
     if(objUL && objClientIPId)
        { 
            var DropWatch =  $create(AjaxControlToolkit.DragDropWatcher, {"ClientStateFieldID":objClientIPId,
            "acceptedDataTypes":"HTML_divFirst_"+behId,
            "argContextString":"_~Context~_",
            "argErrorString":"_~Error~_",
            "argReplaceString":"_~Arg~_",
            "argSuccessString":"_~Success~_",
            "callbackCssStyle":"",
            "dragDataType":"HTML_divFirst_"+behId,
            "dragMode":1,
            "dropCueTemplate":objdropCueTemplate,
            "id":"rOrdLst_dItemEx_" + behId,
            "postbackCode":"WebForm_DoCallback(\u0027rOrdLst\u0027,\u0027_~Arg~_\u0027,_~Success~_,\u0027_~Context~_\u0027,_~Error~_,true)"}, 
            null, null, objUL); 
        }            
}



function HideStackContextMenu()
{
    var objPnlContextMenu_Stack_0 = document.getElementById('pnlContextMenu_Stack_0');
    objPnlContextMenu_Stack_0.style.display = GetDisplay(false);
}

function ShowStackContextMenu(sender,e, viewId)
{
    var objPnlContextMenu_Stack_0 = document.getElementById('pnlContextMenu_Stack_0');
    objPnlContextMenu_Stack_0.style.display = GetDisplay((objPnlContextMenu_Stack_0.style.display == "none"));
    return false;
}

function AddNewExtractor(sender, e, iViewId)
{
    ShowDialogForCreateExtractor(iViewId, "SHPT");
    HideStackContextMenu();
}

function AddNewOverlay(sender, e, viewId)
{
    HideStackContextMenu();
    alert('To be implemented');
}

function ShowDialogForCreateExtractor(iViewId, strType)
{
    strType = strType + "";
    strType = strType.toUpperCase();
    var sHTML="<table cellspacing='0' width='95%' cellpadding='2' rules='all' border='0' style='border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    sHTML += "  <tr>";
    sHTML += "      <th colspan='2'>Create an Extractor</th>";
    sHTML += "  <tr>";
    sHTML += "  <tr>";
    sHTML += "      <td>Type of Extractor</td>";
    sHTML += "      <td>";
    sHTML += "          <select onchange='ShowDialogForCreateExtractor(" + iViewId + ", this.value )'>";
    sHTML += "              <option value='SHPT' "+ ((strType == "SHPT") ? "SELECTED" : "") +">Sharepoint Extractor</option>";
    sHTML += "              <option value='SQL' "+ ((strType == "SQL") ? "SELECTED" : "") +">Sql Extractor</option>";
    sHTML += "          </select>";
    sHTML += "      </td>";
    sHTML += "  </tr>";
    if(strType == "SHPT")
    {
        sHTML += "  <tr>";
        sHTML += "      <td>URL of Sharepoint List</td>";
        sHTML += "      <td>";
        sHTML += "          <input style='width:95%'>";
        sHTML += "      </td>";
        sHTML += "  </tr>";
    }
    else
    {
        sHTML += "  <tr>";
        sHTML += "      <td>SQL DB</td>";
        sHTML += "      <td>";
        sHTML += "          <select>";
        sHTML += "              <option>Gridnew</option>";
        sHTML += "          </select>";
        sHTML += "      </td>";
        sHTML += "  </tr>";
        sHTML += "  <tr>";
        sHTML += "      <td>SQL DB</td>";
        sHTML += "      <td>";
        sHTML += "          <select>";
        sHTML += "              <option>View 1</option>";
        sHTML += "              <option>View 2</option>";
        sHTML += "              <option>View .</option>";
        sHTML += "              <option>View n</option>";
        sHTML += "          </select>";
        sHTML += "      </td>";
        sHTML += "  </tr>";
    }
    sHTML += "  <tr>";
    sHTML += "      <td colspan='2'>";
    sHTML += "          <input onclick='HideHtmlModalDialog();' value='Cancel' type='button'>&nbsp;&nbsp;&nbsp;&nbsp;<input onclick='HideHtmlModalDialog();alert(&quot;to be implemented&quot;);' value='Create' type='button'>";
    sHTML += "      </td>";
    sHTML += "  </tr>";
    sHTML += "</table>";
    ShowHtmlModalDialog(sHTML, 400, 300); 
}

/*

function CreateViewList()
{
    var strBaseUrl = window.location.search;
    if(strBaseUrl.length == 0)
    {
        strBaseUrl = "?ViewId=";
    }
    else
    {
        if(strBaseUrl.indexOf("?") == 0)
        {
            strBaseUrl = strBaseUrl.substr(1);
        }
        var iIndex = strBaseUrl.toLowerCase().indexOf("viewid=");
        if(iIndex != -1)
        {
            var iQIndex = strBaseUrl.indexOf("&", iIndex);
            if(iIndex == 0)
            {
                if(iQIndex == -1)
                {
                    strBaseUrl = "";
                }
                else
                {
                    strBaseUrl = strBaseUrl.substr(iQIndex+1) + "&";
                }
            }
            else
            {
                if(iQIndex == -1)
                {
                    iQIndex = strBaseUrl.length;
                }
                strBaseUrl = strBaseUrl.substr(0,iIndex) + strBaseUrl.substr(iQIndex);
            }
            strBaseUrl += "ViewId=";
        }
        else
        {
            strBaseUrl += "&ViewId="; 
        }
        strBaseUrl = "?" + strBaseUrl;
    }
    
    var strHTML = "<div style='width:95%;height:20px;text-align:left;background-color:#f0f0f0;border-color:silver;border-width:1px;border-style:Solid;'><div style='margin-top:3px'><b>Overlays&nbsp;&nbsp;</b></div></div>";
    strHTML += "<div style='width:95%;height:275px;overflow:auto;text-align:left;border-color:silver;border-width:1px;border-style:solid;border-top-style:none;'>";
    strHTML += "<table width='95%' cellspacing='0' cellpadding='0' align='Left' border='0' >";
    __CurrentViewName = null;
    for(var i=0;i<dtViewList.length;i++)
    {
        var bCurrentViewInChilds = false;
        var strHTML2 = "";
        for(var j=0;j<dtViewList[i].CHILDS.length;j++)
        {
            strHTML2 += "<tr><td align='left'>";
            if(iSelectedViewID != dtViewList[i].CHILDS[j].ID)
                strHTML2 += "<a href='" + strBaseUrl + dtViewList[i].CHILDS[j].ID +"'>";
            else
                strHTML2 += "<div style ='border-right: gray 1px dotted; border-top: gray 1px dotted; border-left: gray 1px dotted;'><b>";
            strHTML2 += dtViewList[i].CHILDS[j].NAME;
            if(iSelectedViewID != dtViewList[i].CHILDS[j].ID)
            {
                strHTML2 +="</a>";
            }
            else
            {
                __CurrentViewName = dtViewList[i].CHILDS[j].NAME;
                bCurrentViewInChilds = true;
                strHTML2 +="</b>&nbsp;&nbsp;<a class='PagerLink' onclick=\"ShowViewStats(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" >Perf.</a>";
                strHTML2 +="</div></td></tr><tr><td align='right'>"
                strHTML2 +="<div style ='border-right: gray 1px dotted; border-bottom: gray 1px dotted; border-left: gray 1px dotted;'>";
                if(bIsCachedView)
                {
                    strHTML2 +="<input id='btnUnCacheCurrentView' style='width:70px;display:none' class='btn' type='button' onclick=\"UnCacheCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Uncache'>&nbsp;&nbsp;&nbsp;&nbsp;";
                }
                else
                {
                    strHTML2 +="<input id='btnCacheCurrentView' style='width:70px;display:none' class='btn' type='button' onclick=\"CacheCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Cache'>&nbsp;&nbsp;&nbsp;&nbsp;";
                }
                
                strHTML2 +="<input style='width:70px;' class='btn' type='button' onclick=\"SaveCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Save'>";
                strHTML2 +="&nbsp;&nbsp;&nbsp;&nbsp;";
                strHTML2 +="<input class='btn' style='width:70px;' type='button' onclick=\"SaveAsCurrentView(this,'" + dtViewList[i].CHILDS[j].ID + "','"+ dtViewList[i].CHILDS[j].NAME +"')\" value='Save As'>&nbsp;&nbsp;&nbsp;<br><div style='height:5px'></div>";
                strHTML2 +="</div>"
            }
            strHTML2 +="&nbsp;&nbsp;&nbsp;</td></tr>";
        }
        strHTML += "<tr><td style='width:1%'><img src='" + ( (bCurrentViewInChilds) ? "minus.gif" : "plus.gif" ) + "' onclick='ShowHideViewGroup(this,event," + i + ")'></td><td align='left' style='color:gray'>" + dtViewList[i].NAME + "</td></tr>";
        strHTML += "<tr id='trViewGroup_" + i + "' style='display:"+ GetDisplay(bCurrentViewInChilds) +"'><td align='left' style='width:1%'></td><td align='left'>";
        strHTML += "<table width='100%' cellspacing='0' cellpadding='0' align='Left' border='0' >";
        strHTML += strHTML2;
        strHTML += "</table></td></tr><tr><td colspan='2' style='height:2px;'></td></tr>";
    }
    
    strHTML += "</table></div>";
    __PanelForViewList.innerHTML = strHTML;
}

*/

function UnCacheCurrentView(Sender, sViewId, sViewName)
{
    var objRes = window.showModalDialog("CacheUncacheView.aspx?ViewID=" + sViewId + "&UnCache=true",null);
    if(objRes)
        window.location.reload(true);
    //alert("To be implemented");
}

function CacheCurrentView(Sender, sViewId, sViewName)
{
    var strFilterCondition = GetUserFilterData(); 
    var objRes = window.showModalDialog("CacheUncacheView.aspx?ViewID=" + sViewId + "&tbl="+ sViewName +"&filter=" + strFilterCondition, null);
    if(objRes)
        window.location.reload(true);
    //alert("To be implemented");
}

function SaveCurrentView(Sender, sViewId, sViewName)
{
    alert("To be implemented");
}

function SaveAsCurrentView(Sender, sViewId, sViewName)
{
    var strFilterCondition = GetUserFilterData(); 
    var objRes = window.showModalDialog("SaveAsDialog.htm", {"Filter":strFilterCondition, "ViewName":__CurrentViewName+""});
    if(objRes)
        alert("To be implemented");
}

function ShowViewStats(Sender, sViewId, sViewName)
{
    var objTD = Sender.parentNode;
    
    Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'GetViewStatistics', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
             {strViewID:sViewId}, OnFetchViewStatsSucceeded,OnFetchViewStatsFailed, {"Cell":objTD, "ViewName":sViewName} );
    var sHtml = "<b>"+ sViewName +"</b><small><br><b>Loading statistics...</b></small>";
    objTD.innerHTML = sHtml; 
}

function OnFetchViewStatsSucceeded(result, userContext, methodName)
{
    var objTD = userContext.Cell;
    var sHtml = "<b>"+ userContext.ViewName +"</b>";
    sHtml +=  "&nbsp;&nbsp;<a class='PagerLink' onclick=\"ShowHideViewStats(this)\" >Perf.</a>";
    sHtml +=  "<br><div id='pnlViewStats'><small><b># of Rows:</b>&nbsp;" + result.RowCount ;
    sHtml +=  "<br><b>Time for count:</b>&nbsp;" + result.RowCountTime + "&nbsp;Sec.";
    sHtml +=  "<br><span title='"+ result.ElementoryViewUsed.join('\n') +"' ><b># of joins:</b>&nbsp;" + result.ElementoryViewUsed.length + "&nbsp;</span>";
    sHtml += "</small></div>";
    objTD.innerHTML = sHtml;
    if(bIsCachedView)
    {
        var objBtnUnCacheCurrentView = document.getElementById("btnUnCacheCurrentView");
        if(objBtnUnCacheCurrentView)
            objBtnUnCacheCurrentView.style.display = GetDisplay(true);
    }
    else
    {
        var objBtnCacheCurrentView = document.getElementById("btnCacheCurrentView");
        if(objBtnCacheCurrentView)
            objBtnCacheCurrentView.style.display = GetDisplay(true);
    }
}

function ShowHideViewStats(sender)
{
    var objPnlViewStats = document.getElementById("pnlViewStats");
    if(objPnlViewStats)
    {
        var bIsPanelHidden = true;
        if(objPnlViewStats.style.display != "none")
            bIsPanelHidden = false;
        objPnlViewStats.style.display = GetDisplay(bIsPanelHidden);
        if(bIsCachedView)
        {
            var objBtnUnCacheCurrentView = document.getElementById("btnUnCacheCurrentView");
            if(objBtnUnCacheCurrentView)
                objBtnUnCacheCurrentView.style.display = GetDisplay(bIsPanelHidden);
        }
        else
        {
            var objBtnCacheCurrentView = document.getElementById("btnCacheCurrentView");
            if(objBtnCacheCurrentView)
                objBtnCacheCurrentView.style.display = GetDisplay(bIsPanelHidden);
        }
    }
}

function ShowHideViewGroup(sender, e, index)
{
    var objTrViewGroup = document.getElementById("trViewGroup_" + index);
    if(objTrViewGroup)
    {
        if(objTrViewGroup.style.display == "none")
        {
            sender.src = sender.src.replace("plus","minus");
            objTrViewGroup.style.display = GetDisplay(true);
        }
        else
        {
            sender.src = sender.src.replace("minus","plus");
            objTrViewGroup.style.display = GetDisplay(false);
        }
    }
}

function OnFetchViewStatsFailed(webServiceError, userContext, methodName)
{
    var objTD = userContext.Cell;
    var strMessage = "";
    if (webServiceError.get_timedOut()) 
    {
        strMessage = "Web Service call timed out.";
    } 
    else 
    {
        strMessage = "Web Service call failed: " + (webServiceError.get_statusCode());
    }
    var sHtml = "<b>"+ userContext.ViewName +"</b><small><br><b>Error:&nbsp;" + strMessage + "</small>";
    objTD.innerHTML = sHtml;
}

function OperandForFID_onFocus(sender, sName, iFieldId, iIndex, iDataType)
{
    var strOperatorId = "__Operator_" + iFieldId + "_" + iIndex ;
    var objOperatorId = $get(strOperatorId);
    var iOperator = 0;
    if(objOperatorId)
    {
        Operator_Chnge(objOperatorId, sName, iFieldId, iIndex, iDataType);
    }
}

function ShowFilterPreview()
{
    var objLblFilterPreview = document.getElementById("lblFilterExpressionPreview");
    if(objLblFilterPreview)
        objLblFilterPreview.innerHTML = GetUserFilterData();
}

function Operator_Chnge(sender, sName, iFieldId, iIndex, iDataType)
{
    var iOperator = sender.value * 1;
    var strOperandId = "__OperandForFID_" + iFieldId + "_" + iIndex ;
    var strOperand2Id = "__OperandForFID_BW_" + iFieldId + "_" + iIndex ;
    var strOperatorContainerId = "__OperatorContainer_BW_" + iFieldId + "_" + iIndex ;
     var objOperatorContainerId = $get(strOperatorContainerId);
    if(objOperatorContainerId != null)
    {
        if(iOperator %10 == 7)
        {
            objOperatorContainerId.style.display = GetDisplay(true);
        }
        else
        {
            objOperatorContainerId.style.display = GetDisplay(false);
        }
    }
    
    if(iDataType == 1 || iDataType == 2)
    {
        if(iOperator == 11 || iOperator == 12 || iOperator == 21 || iOperator == 22) 
        {
            AttachACF(sName, strOperandId);
        }
        else
        {
            DettachACF(strOperandId);
            DettachCAL(strOperandId);
            DettachCAL(strOperand2Id);
        }
    }
    
    /*if(iDataType == 2)
    {
        DettachACF(strOperandId);
        DettachCAL(strOperandId);
        DettachCAL(strOperand2Id);
    }*/
    
    if(iDataType == 4)
    {
        AttachCAL(strOperandId);
        AttachCAL(strOperand2Id);
    }
}

function GetFilterSelect(sName, iDataType, iOperator, iFieldId, iIndex)
{
    var objArrOperatorData = objFilterOperatorsData[iDataType + ""];
    
    var oldObject = $get("__Operator_" + iFieldId + "_" + iIndex);
    if(oldObject && oldObject.value)
        iOperator = oldObject.value * 1;

    var strHTML = "<select id='__Operator_" + iFieldId + "_" + iIndex + "' onchange=\"Operator_Chnge(this,'"+ sName +"',"+ iFieldId +"," + iIndex + "," + iDataType +")\">";
    
    
    if(objArrOperatorData != null)
    {
        for(var i=0;i<objArrOperatorData.length;i++)
        {
            var strSelected = "";
            if(objArrOperatorData[i].OperatorID*1 == iOperator*1)
                {
                    strSelected = "selected";
                }
            strHTML += "<OPTION value='" + objArrOperatorData[i].OperatorID + "' "+ strSelected +" >"+ objArrOperatorData[i].OperatorName +"</OPTION>";
        }
    }    
    
    strHTML += "</select>";
    return strHTML;
}
    
function GetFieldList()
{
    var strHTML = "<select id='lstFieldList' >";
    for(var i=0;i<dtFilterableColumns.length;i++)
    {
        strHTML += "<option value='"+ dtFilterableColumns[i].COLUMN_ID +"," + dtFilterableColumns[i].DATATYPE_ID + "," + dtFilterableColumns[i].COLUMN_NAME + "'>"+ dtFilterableColumns[i].COLUMN_DISPLAY_NAME +"</option>";    
    }
    strHTML += "</select>";
    return strHTML;
}

function AddNewFilter()
{
   var objSelect = $get("lstFieldList");
   var strValue = objSelect.value + "";
   var iDataTypeId = strValue.split(',')[1]*1;
   var iColumnId = strValue.split(',')[0]*1;
   var strText = strValue.split(',')[2]+"";
   var strDispText = objSelect.options[objSelect.selectedIndex].text + "";
   var objColumn = GetFilterData(iColumnId);
   
   var objArrOperatorData = objFilterOperatorsData[iDataTypeId + ""];
   
   if(objColumn.ID)
   {
        var iOpIndex=0;
        for(var i=0;i<objArrOperatorData.length;i++)
        {
            var bFound = false;
            for(var j=0;j<objColumn.Operators.length;j++)
            {
                if(objArrOperatorData[i].OperatorID*1 == objColumn.Operators[j]*1)
                {
                    bFound = true;
                    break;
                }
            }
            if(bFound)
                continue;
            iOpIndex = i;
            break;
        }
        objColumn.Operators[objColumn.Operators.length] = objArrOperatorData[iOpIndex].OperatorID *1;
   }
   else
   {
        objColumn.ID = iColumnId*1;
        objColumn.Name = strText;
        objColumn.DisplayName = strDispText;
        objColumn.DataType = iDataTypeId;
        objColumn.Operators = [objArrOperatorData[0].OperatorID *1];
   }
   CreateDefaultFilters();
}

function GetFilterData(iColumnID)
{
    for(var i=0;i<objFilterData.length;i++)
    {
        if(objFilterData[i].ID *1 == iColumnID*1)
        {
            return objFilterData[i];
        }
    }
    var objToRet = {"ID":null,"Name":"","DisplayName":"","DataType":-1,"Operators":[]};
    objFilterData[objFilterData.length] = objToRet;
    return objToRet;
}

function GetUserFilterData()
{
    var objUserFilterData = "";
    var iActualFilterCount = 0;
    for(var i=0;i<objFilterData.length;i++)
    {
        var iActualInnerFilterCount = 0;
        for(var j=0;j<objFilterData[i].Operators.length;j++)
        {
            var objUserField = $get("__OperandForFID_" + objFilterData[i].ID + "_" + j);
            var objOperater = $get("__Operator_" + objFilterData[i].ID + "_" + j);
            
            if(objUserField && objOperater && objUserField.value)
            {
                var valueUserField2 = null;
                if(objOperater.value*1 %10 == 7)
                {
                    var objUserField2 = $get("__OperandForFID_BW_" + objFilterData[i].ID + "_" + j) ;
                    if(objUserField2)
                        valueUserField2 = objUserField2.value;
                }
                
                if(iActualInnerFilterCount ==0)
                {
                    if(iActualFilterCount > 0)
                        objUserFilterData += " AND ";
                    objUserFilterData += "(";
                }
                if(iActualInnerFilterCount>0)
                    objUserFilterData += " OR ";
                    
                objUserFilterData += OperatorResolver(objOperater.value*1, objFilterData[i].Name, objUserField.value, valueUserField2);
                iActualInnerFilterCount++;
            }
        }
        if(iActualInnerFilterCount >0)
        {
            objUserFilterData += ")";
            iActualFilterCount++;
        }
    }
    document.getElementById(strFilterConditionValueID).value = objUserFilterData;
    
    return objUserFilterData;
}


function ClearUserFilterData()
{
    for(var i=0;i<objFilterData.length;i++)
    {
        for(var j=0;j<objFilterData[i].Operators.length;j++)
        {
            var objUserField = $get("__OperandForFID_" + objFilterData[i].ID + "_" + j);
            if(objUserField && objUserField.value)
            {
                var objOperater = $get("__Operator_" + objFilterData[i].ID + "_" + j);
                
                if(objOperater && objOperater.value*1 %10 == 7)
                {
                    var objUserField2 = $get("__OperandForFID_BW_" + objFilterData[i].ID + "_" + j) ;
                    if(objUserField2)
                        objUserField2.value = "";
                }
                
                objUserField.value = "";;
            }
        }
    }
    ShowFilterPreview();
}

/*
1		equal to
2		not equal to
3		contains
4		begins with
5		greater than
6		less than*/

function OperatorResolver(iOperatorId, sFieldName, sUserValue, sUserValue2)
{
    var iTiOperatorId = iOperatorId*1%10;
    var iTiTypeId = (iOperatorId*1 - iTiOperatorId)/10;
    var sPreFix = (iTiTypeId == 2) ? "" : "'";
    switch(iTiOperatorId)
    {
        case 1:
            return sFieldName + " = " + sPreFix + sUserValue + sPreFix;
        case 2:
            return sFieldName + " <> " + sPreFix + sUserValue + sPreFix;
        case 3:
            return sFieldName + " like '%" + sUserValue + "%'";
        case 4:
            return sFieldName + " like '" + sUserValue + "%'";
        case 5:
            return sFieldName + " > " + sPreFix + sUserValue + sPreFix;
        case 6:
            return sFieldName + " < " + sPreFix + sUserValue + sPreFix;
        case 7:
            return sFieldName + " between " + sPreFix + sUserValue + sPreFix + " and " + sPreFix + sUserValue2 + sPreFix;
        default:
            return "";
    }
}
//var objExpendableImageData = {"TableCssClass":"ChildTable","MiddleCellCssClass":"MiddleCellCssClass","HighlightCssClass":"HighLight","NoHighlightCssClass":"LowLight","ServiceURL":"DataSource.asmx","PreFilter":" CASE_ID = \u0027\u0027 ","SourceTable":"SAMPLE_TABLE_FOR_MDD","ServiceMethod":"GetData2","ExpandedNodes":[{"ID":"","ValueField":"CASE_ID","TextField":"CASE_ID","TextFormatString":"","IsExpandableField":"CASE_ID_NodeState","Expanded":true,"PreferredWidth":"200px"}],"AllNodes":[{"ID":"","ValueField":"CASE_ID","TextField":"CASE_ID","TextFormatString":"","IsExpandableField":"CASE_ID_NodeState","Expanded":true,"PreferredWidth":"200px"},{"ID":"","ValueField":"EmpID","TextField":"EmpID","TextFormatString":"","IsExpandableField":"EmpID_NodeState","Expanded":false,"PreferredWidth":"200px"},{"ID":"","ValueField":"IMAGE_NAME","TextField":"IMAGE_NAME","TextFormatString":"","IsExpandableField":"IMAGE_NAME_NodeState","Expanded":false,"PreferredWidth":"200px"},{"ID":"","ValueField":"LocationID","TextField":"LocationID","TextFormatString":"","IsExpandableField":"LocationID_NodeState","Expanded":false,"PreferredWidth":"200px"},{"ID":"","ValueField":"Plateform","TextField":"Plateform","TextFormatString":"","IsExpandableField":"Plateform_NodeState","Expanded":false,"PreferredWidth":"200px"}],"CurrentNode":{"ID":"","ValueField":"CASE_ID","TextField":"CASE_ID","TextFormatString":"","IsExpandableField":"CASE_ID_NodeState","Expanded":true,"PreferredWidth":"200px"},"ParentRowID":"TR_DUMMY","ExpandImgURL":"expand.gif","CollapseImgURL":"collapse.gif","BlankImgURL":"transparent.gif","NodeIndex":0,"AlternateText":"","DescriptionUrl":"","Font":{"Bold":false,"Italic":false,"Name":"","Names":[],"Overline":false,"Size":{"IsEmpty":true,"Type":0,"Unit":{"IsEmpty":true,"Type":1,"Value":0}},"Strikeout":false,"Underline":false},"Enabled":true,"GenerateEmptyAlternateText":false,"ImageAlign":0,"ImageUrl":"collapse.gif","AccessKey":"","Attributes":{"Keys":[],"Count":0,"CssStyle":{"Keys":[],"Count":0,"Value":null}},"BackColor":{"R":0,"G":0,"B":0,"A":0,"IsKnownColor":false,"IsEmpty":true,"IsNamedColor":false,"IsSystemColor":false,"Name":"0"},"BorderColor":{"R":0,"G":0,"B":0,"A":0,"IsKnownColor":false,"IsEmpty":true,"IsNamedColor":false,"IsSystemColor":false,"Name":"0"},"BorderWidth":{"IsEmpty":true,"Type":1,"Value":0},"BorderStyle":0,"ControlStyle":{"BackColor":{"R":0,"G":0,"B":0,"A":0,"IsKnownColor":false,"IsEmpty":true,"IsNamedColor":false,"IsSystemColor":false,"Name":"0"},"BorderColor":{"R":0,"G":0,"B":0,"A":0,"IsKnownColor":false,"IsEmpty":true,"IsNamedColor":false,"IsSystemColor":false,"Name":"0"},"BorderWidth":{"IsEmpty":true,"Type":1,"Value":0},"BorderStyle":0,"CssClass":"","Font":{"Bold":false,"Italic":false,"Name":"","Names":[],"Overline":false,"Size":{"IsEmpty":true,"Type":0,"Unit":{"IsEmpty":true,"Type":1,"Value":0}},"Strikeout":false,"Underline":false},"ForeColor":{"R":0,"G":0,"B":0,"A":0,"IsKnownColor":false,"IsEmpty":true,"IsNamedColor":false,"IsSystemColor":false,"Name":"0"},"Height":{"IsEmpty":true,"Type":1,"Value":0},"IsEmpty":true,"RegisteredCssClass":"","Width":{"IsEmpty":true,"Type":1,"Value":0},"Site":null,"Container":null},"ControlStyleCreated":true,"CssClass":"","Style":{"Keys":[],"Count":0,"Value":null},"EnableTheming":true,"ForeColor":{"R":0,"G":0,"B":0,"A":0,"IsKnownColor":false,"IsEmpty":true,"IsNamedColor":false,"IsSystemColor":false,"Name":"0"},"HasAttributes":false,"Height":{"IsEmpty":true,"Type":1,"Value":0},"SkinID":"","TabIndex":0,"ToolTip":"","Width":{"IsEmpty":true,"Type":1,"Value":0},"ClientID":null,"ID":null,"EnableViewState":true,"NamingContainer":null,"BindingContainer":null,"Page":null,"TemplateControl":null,"Parent":null,"TemplateSourceDirectory":"/","AppRelativeTemplateSourceDirectory":"~/","Site":null,"Visible":true,"UniqueID":null,"Controls":[]};
var oDummyEspandableImage = null;
var oDummyEspandableImage2 = null;
var oOldFilter = "";

function InitFilters(strPnlForFiltersID, strPnlForViewList, strPnlForSorting)
{
    __PanelForFilters = $get(strPnlForFiltersID);
    __PanelForViewList = $get(strPnlForViewList);
    __PanelForSorting = $get(strPnlForSorting);
    CreateEspandableImage();
    //CreateDefaultFilters();
    //CreateViewList();
}

function CreateEspandableImage()
{
    try
        {
          if(objExpendableImageData != null)
               CreateEspandableImageWithParams();       
        }
    catch(ex)
        {           
        }    
    
        
    //ClearSortExpression();
    //CreateDraggable();
}

function CreateEspandableImageWithParams(iDataPageNumber, iDataPageSize, sPreFilter)
{
    var strInitialPreFilter = objExpendableImageData.PreFilter + "";
    var iDataPageNumber1 = objExpendableImageData.DataPageNumber*1;
    var iDataPageSize1 = objExpendableImageData.DataPageSize*1;
    var sPreFilter1 = "";
    if(iDataPageNumber)
        iDataPageNumber1 = iDataPageNumber;
    if(iDataPageSize)
        iDataPageSize1 = iDataPageSize;
    if(sPreFilter)
    {
        sPreFilter1 = sPreFilter;
        oOldFilter = sPreFilter1 +"";
    }
    
    if(strInitialPreFilter.length > 0)
    {
        if(sPreFilter1.length > 0)
            sPreFilter1 = strInitialPreFilter + " AND " + sPreFilter1
        else
            sPreFilter1 = strInitialPreFilter;
    }
    
    strBlankImageSrc = objExpendableImageData.BlankImgURL + "";
    
    if(oDummyEspandableImage)
        oDummyEspandableImage._ClearAllRows();
    var tMainTr = $get(strMainTrID);
    tMainTr.style.display = "";
    var iNodesCount = objExpendableImageData.AllNodes.length ;
    var iRequiredCells = iNodesCount + 0;
    var objHeaderRow = tMainTr.parentNode.parentNode.rows[0];
    var iHeaderCellsCount = objHeaderRow.cells.length -1;
    
    if(iHeaderCellsCount > iNodesCount)
    {
        for(var i=0;i<iHeaderCellsCount - iNodesCount ;i++)
        {
            objHeaderRow.removeChild(objHeaderRow.lastChild);
        }
    }
    
    if(objExpendableImageData.VirtualColumns && objExpendableImageData.VirtualColumns.length && objExpendableImageData.VirtualColumns.length > 0)
    {
        iRequiredCells = iNodesCount + objExpendableImageData.VirtualColumns.length;
        if(iHeaderCellsCount < iRequiredCells)
        {
            for(var i=0;i<objExpendableImageData.VirtualColumns.length;i++)
            {
                var objNewTd = objHeaderRow.cells[objExpendableImageData.VirtualColumns[i].ColumnIndex+1].cloneNode(0); 
                objNewTd.id = objNewTd.id + "_V_" + i;
                objNewTd.innerHTML = objExpendableImageData.VirtualColumns[i].TextField;
                objHeaderRow.insertBefore(objNewTd, objHeaderRow.cells[objExpendableImageData.VirtualColumns[i].ColumnIndex+1] );
            }
        }
    }
    
    oDummyEspandableImage = $create
                (
                    AjaxScriptControls.ExpandingImage, 
                    {
                        "AllNodes":objExpendableImageData.AllNodes,
                        "CollapseImgURL":objExpendableImageData.CollapseImgURL,
                        "CurrentNode": objExpendableImageData.AllNodes[0],
                        "ExpandImgURL":objExpendableImageData.ExpandImgURL,
                        "BlankImgURL":objExpendableImageData.BlankImgURL,
                        "ExpandedNodes":[],
                        //"ParentRowID":strMainTrID,
                        "ParentRowID":objExpendableImageData.ParentRowID,
                        "ServiceMethod":objExpendableImageData.ServiceMethod,
                        "DataPageSize":iDataPageSize1,
                        "DataPageNumber":iDataPageNumber1,
                        "SourceTable":objExpendableImageData.SourceTable,
                        "PreFilter":sPreFilter1,
                        "SortExpression":strSortExpression,
                        "ServiceURL":objExpendableImageData.ServiceURL,
                        "TableCssClass":objExpendableImageData.TableCssClass,
                        "MiddleCellCssClass":objExpendableImageData.MiddleCellCssClass,
                        "highlightCssClass":objExpendableImageData.highlightCssClass,
                        "nohighlightCssClass":objExpendableImageData.nohighlightCssClass,
                        "NodeIndex":0,
                        "VirtualColumns" : objExpendableImageData.VirtualColumns
                    },
                    null, null, document.createElement("IMG") /*$get("imgDummy")*/
                 );
                 //oDummyEspandableImage._onClick();
    oDummyEspandableImage.OnVirtualClick(strMainTrID, null, null, true , OnGridLoaded);
}

function AddAVirtualColumn(sNewColName, sFormaterString, iHeaderIndex)
{
    if(objExpendableImageData.VirtualColumns)
    {
        var arrVirtualColumns = new Array();
        
        for(var i=0;i<objExpendableImageData.VirtualColumns.length;i++)
        {
            if(objExpendableImageData.VirtualColumns[i].TextField == sNewColName)
            {
                if(sFormaterString)
                {
                    var oTempVNode = {"TextField":sNewColName, "TextFormatString": sFormaterString, "ColumnIndex":iHeaderIndex};
                    arrVirtualColumns.push(oTempVNode);
                }
            }
            else
            {
                if(objExpendableImageData.VirtualColumns[i].TextFormatString)
                {
                    var oTempVNode = {"TextField":objExpendableImageData.VirtualColumns[i].TextField+"", 
                                      "TextFormatString": objExpendableImageData.VirtualColumns[i].TextFormatString+"",
                                      "ColumnIndex":objExpendableImageData.VirtualColumns[i].ColumnIndex * 0};
                    arrVirtualColumns.push(oTempVNode);
                }
            }
        }
        objExpendableImageData.VirtualColumns = arrVirtualColumns;
    }
    else
    {
        if(sFormaterString)
        {
            objExpendableImageData.VirtualColumns = new Array();
            var oTempVNode = {"TextField":sNewColName, "TextFormatString": sFormaterString, "ColumnIndex":iHeaderIndex};
            objExpendableImageData.VirtualColumns.push(oTempVNode);
        }
    }
}

function OnGridLoaded(sender, oNewNode, objSampleDataRow)
{
    
    /*
    var objGridTable = $get(strMainTrID);
    if(document.all)
        objGridTable.parentNode.parentNode.rows[0].cells[1].childNodes[2].fireEvent("onmouseup");
    else
        objGridTable.parentNode.parentNode.rows[0].cells[1].childNodes[2].onmouseup();
    
    //ArrSortExpressionImages
    var objIMG = $get(ArrSortExpressionImages[0]+"");
    objIMG.fireEvent("onclick");*/
    if(objSampleDataRow)
        __SampleDataRow = objSampleDataRow;
    if(bAutoExpandFirstNode)
        oNewNode._onClick(null, ShowHideHeaderAndFilters); 
}

function egGrid_OnExpandCollapseAllClick(sender, sField, sExpandImageSrc, sCollepseImageSrc, iColumnIndex)
{
    if(sender.src.indexOf(sExpandImageSrc) != -1)
    {
        sender.src = sender.src.replace(sExpandImageSrc, sCollepseImageSrc);
    }
    else
    {
        sender.src = sender.src.replace(sCollepseImageSrc, sExpandImageSrc);
    }
    alert("To be implemented");
}

var __MenuHideTimer = {};

function egGrid_OnHeaderMouseOver(sender, e, thID, mnuID, dataTextField, index)
{
    
    if(__MenuHideTimer[index])
        window.clearTimeout(__MenuHideTimer[index]);

    var objPnlForMouseOverMenu = document.getElementById("pnlForMouseOverMenu_" + mnuID);
    
    var objThID = document.getElementById(thID);
    objThID.firstChild.nextSibling.onmouseout = function() { egGrid_OnHeaderMouseOut(objPnlForMouseOverMenu, index); };
    objPnlForMouseOverMenu.onmouseout = function() { egGrid_OnHeaderMouseOut(objPnlForMouseOverMenu, index); };
    objPnlForMouseOverMenu.onmouseover = function() { egGrid_OnHeaderMouseOver(sender, e, thID, mnuID, dataTextField, index); };
    objPnlForMouseOverMenu.style.display = GetDisplay(true);
}

function egGrid_OnHeaderMouseOut(objPnlForMouseOverMenu, index)
{
    if(__MenuHideTimer[index])
        window.clearTimeout(__MenuHideTimer[index]);

    var __Fn = function(){ objPnlForMouseOverMenu.style.display = GetDisplay(false); }
    __MenuHideTimer[index] = window.setTimeout(__Fn, 1000);
}

function alert1(obj)
{
    var val = Sys.Serialization.JavaScriptSerializer.serialize(obj);
    alert(val);
}

var oACF_Array = [];
function AttachACF(sName, strTxtId)
{
    if(!oACF_Array[strTxtId])
    {
        oACF_Array[strTxtId] = $create(AjaxScriptControls.AutoCompleteForFiltersBehavior, 
                    {"columnName":sName,"completionSetCount":10, "minimumPrefixLength":0,
                    "preFilter":"","serviceMethod":"GetCompletionList",
                    "servicePath":objExpendableImageData.ServiceURL,
                    "tableName":objExpendableImageData.SourceTable}, null, null, 
                    $get(strTxtId));
    }
}

function DettachACF(strTxtId)
{
    if(oACF_Array[strTxtId])
        oACF_Array[strTxtId].dispose();
    oACF_Array[strTxtId] = null;
}

var oCAL_Array = [];

function AttachCAL(strTxtId)
{
    if(!oCAL_Array[strTxtId])
    {
        oCAL_Array[strTxtId] = $create(AjaxControlToolkit.CalendarBehavior, {"format":"dd/MMM/yyyy"}, null, null, $get(strTxtId));
    }
}

function DettachCAL(strTxtId)
{
    if(oCAL_Array[strTxtId])
        oCAL_Array[strTxtId].dispose();
    oCAL_Array[strTxtId] = null;
}

function ClearSortExpression()
{
    strSortExpression = "";
    for(var i=0;i<ArrSortExpressionImages.length;i++)
    {
        if(ArrSortExpressionImages[i])
        {
            var objIMG = $get(ArrSortExpressionImages[i]+"");
            objIMG.src = strBlankImageSrc;
        }
    }
    //ShowSortExpression();
}

function ShowSortExpression()
{
    var sHTML = "<div style='height:240px;width:100%;overflow:auto;border-style:silver 1px solid'>";
    var arrSortExp = strSortExpression.split(",");
    for(var i=0;i<arrSortExp.length;i++)
    {
        if(arrSortExp[i].indexOf(" DESC") != -1)
        {
            sHTML += "<span>" + arrSortExp[i].replace(" DESC"," ") + "<small>[DESC]</small></span><br>";
        }
        else
        {
            sHTML += "<span>" + arrSortExp[i] + "</span><br>";
        }
    }
    sHTML += "</div>";
    var objPnlSortExpressionPreview = document.getElementById("pnlSortExpressionPreview");
    if(objPnlSortExpressionPreview)
        objPnlSortExpressionPreview.innerHTML = sHTML;
}

function egGrid_OnSortClick(sender, strField, strImgID, strAscImgSrc, strDescImgSrc, iNodeIndex)
{
    var iIndex = -1;
    if(ArrSortExpressionImagesIndex[strField])
    {
        iIndex = ArrSortExpressionImagesIndex[strField];
    }
    else
    {
        iIndex = ArrSortExpressionImages.length;
        ArrSortExpressionImagesIndex[strField] = iIndex;
    }
    
    ArrSortExpressionImages[iIndex] = strImgID + "";

    if(strSortExpression.indexOf(strField) != -1)
    {
        strSortExpression = strSortExpression.split(strField).join('');
        strSortExpression = ',' + strSortExpression + ',';
        strSortExpression = strSortExpression.split(', ').join(',');
        strSortExpression = strSortExpression.split(' ,').join(',');
        strSortExpression = strSortExpression.split(',DESC,').join(',');
        strSortExpression = ReplaceAll(strSortExpression, ',,', ',');
        strSortExpression = TrimChar(strSortExpression, ' ');
        strSortExpression = TrimChar(strSortExpression, ',');
    }   

    var objIMG = $get(strImgID);
    var strCurImgSrc = objIMG.src + "";
    strCurImgSrc = strCurImgSrc.substr(strCurImgSrc.length - strAscImgSrc.length);
    var sortExpression = strField + "";
    if(strCurImgSrc == strAscImgSrc)
    {
        objIMG.src = strDescImgSrc;
        sortExpression += " DESC";
    }
    else
    {
        objIMG.src = strAscImgSrc;
    }
    if(strSortExpression.length > 0)
        strSortExpression += ",";
    strSortExpression += sortExpression;
    //alert(strSortExpression);
    try
    {
        objIMG.title = strSortExpression + "";
    }
    catch(ex){}
    
    oDummyEspandableImage.SetSortExpressionAndSortTheGrid(strSortExpression, iNodeIndex);
    //ShowSortExpression();
    UpdateReportTitleAndFilterSummery();
}

function TrimChar(str, c)
{
    if(str.length == 0)
        return str;
    var bFound = false;
    if(str.indexOf(c) == 0)
    {
        str = str.substr(1);
        bFound = true;
    }
    
    if(str.lastIndexOf(c) == str.length-1)
    {
        str = str.substr(0,str.length-1);
        bFound = true;
    }
    
    if(bFound)
    {
        if(c != ' ')
            str = TrimChar(str + "", ' ');
        str = TrimChar(str + "", c);
    }
     
     return str +"";
}

function ReplaceAll(strSource, strOld, strNew)
{
    if(strSource.indexOf(strOld) == -1)
    {
        return strSource;
    }
    else
    {
        strSource = strSource.split(strOld).join(strNew);
        return ReplaceAll(strSource, strOld, strNew);
    }
}


// ON 31 ST AUG -----------------------------------------

function ExchangeCols(strStart,strEnd)
{    
   //alert1(oDummyEspandableImage._AllNodes);
      
   var Tab1 =  document.getElementById('DefaultFilters1_egGrid');
   moveColumn(Tab1,strStart,strEnd);
   ManageExpendableData(strStart-1,strEnd-1);
   //document.getElementById('IPTESTDATA').innerText = DefaultFilters1_egGrid.innerHTML;
}

var rowIdArr = [];
function assodoc()
{
//window.self.close();
//window.open("MDD.aspx");
/*Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'GetData2', 
false,{ExpandedNodes:objExpendableImageData.ExpandedNodes,AllNodes:oDummyEspandableImage._AllNodes,
Sender:oDummyEspandableImage._CurrentNode,TableName:"TbGridDatarow",Filter:oOldFilter,
SortExpression:strSortExpression,CurentPage:"1",PageSize:"10"},OnSucceeded1,OnFailed, null,50000);*/
}

function viewrept()
{
   var Tabgrid =  document.getElementById('DefaultFilters1_egGrid');
//  alert(Tabgrid.rows.length);
   var i = Tabgrid.rows.length-2;  
   var j;
   var z =0;
   var rowIds = new Array ();
   for(j=1;j<=i;j++)
   {
       var row = Tabgrid.rows[j];
      if(row.cells[1]!= null)
      {  
        var chk1 =row.cells[0].lastChild.firstChild;                
        if(chk1 != null)
        {
         if (chk1.checked)
          {
            rowIds[z] = j-2;
            z ++;
           }
        }
      }
       
   }
   
   if(rowIds.length > 0 )
   {
   //arrCurrentRowData = null;
 arrCurrentRowCols = null;
 
    Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'viewrept1', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
                  {x:rowIds}, OnSucceededReport,OnFailed, null,50000);
   }
   else
     {
      alert("No row is selected !! ");
     }
 //  window.open("default6.aspx?rowIdArr="+ rowIds);
                   
}
function OnSucceededReport(result)
{
 window.open("showreport.aspx?rpt='" + $get('DefaultFilters1_ddlSelRpts').value + "'");//?rowIdArr=" + rowIds); 
}

function findchkrow()  //smt
{
    
   var docobj = document.getElementById('DefaultFilters1_docval').value; //name of documnet from hidden field
   if(docobj=="")
   {
   
     alert('No Document Selected For Characterization');
     
   }
   else
  {
   
   var Tabgrid =  document.getElementById('DefaultFilters1_egGrid');
   //alert(Tabgrid.rows.length);
   var i = Tabgrid.rows.length-2;  
   var j;
   var flag;
   var z =0;
   var rowIds = new Array ();
   for(j=1;j<=i;j++)
   {
       var row = Tabgrid.rows[j];
      if(row.cells[1]!= null)
      {
        var chk1 =row.cells[0].lastChild.firstChild; 
        if(chk1 != null)
        {
         if (chk1.checked)
          {
            rowIds[z] = j-2;
            z ++;
             flag =1;
          }
        }
      }
       
   }
   
   if(flag!=1)
   {
   alert('Please Select Rows first & then Click characterized');
   }
   else
   {
   

   //webservice invoke method
   Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'insertrowids', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
             {x:rowIds,doc:docobj}, OnSucceeded,OnFailed, null,50000);
     
    }            
}
}

function OnSucceeded()
{
//alert('successfully characherized');
 window.location.reload();
}


function OnSucceeded1()
{
//alert('successfully Associate');
}

function OnFailed(objF)
{
//alert('service failed');
}


//Swap HTML Table n Child Elements.
function moveColumn(table, sIdx, fIdx) 
{   
    var row, cA; 
    var i=0;  
    var TabRowCount =table.rows.length;
    var TabColumsCount = table.rows[0].cells.length;    
    var imgBoxExch = 'DefaultFilters1_imgXchange';
    var anchColExch = 'DefaultFilters1_AxchangeCol';
    if(TabColumsCount!=null)
     {
       TabColumsCount = TabColumsCount - 1;
     }
    try
    {   
    //if (sIdx==4 && fIdx == 5)
      //return; 
    //alert("1st:"+sIdx + ", 2nd:" + fIdx);
     while (i < TabRowCount-1)          //while (i--)
       {       
          row = table.rows[i];
                    
          if( i==0 )
          {
            //var TempText = row.cells[sIdx].firstChild.parentNode.innerHTML;
//            row.cells[sIdx].firstChild.parentNode.innerHTML = row.cells[fIdx].firstChild.parentNode.innerHTML;
//            row.cells[fIdx].firstChild.parentNode.innerHTML = TempText;
//            //continue;
               HT_changeColumnIndex = [];
               HT_ColumnnNodeIndex = [];
               var ind_HT_column = 1;
               var ArrRowHead = new Array();
               ArrRowHead.push(""); 
               for(j=1;j<row.cells.length;j++)
                  {
                    ArrRowHead.push(row.cells[j].firstChild.parentNode.innerHTML); 
                    HT_changeColumnIndex[j-1]=j-1;
                    HT_ColumnnNodeIndex[j-1]=j-1;
                  }                  
                  
               if(sIdx > fIdx)
                 {
                   ind_HT_column = fIdx - 1;
                   HT_changeColumnIndex[ind_HT_column] = sIdx-1;
                   HT_ColumnnNodeIndex[sIdx-1] = ind_HT_column;
                   
                   row.cells[fIdx].firstChild.parentNode.innerHTML =  row.cells[sIdx].firstChild.parentNode.innerHTML;
                   for(var k1=fIdx+1;k1<=sIdx;k1++)
                       {
                         row.cells[k1].firstChild.parentNode.innerHTML = ArrRowHead[k1-1];
                         ind_HT_column++;
                         HT_changeColumnIndex[ind_HT_column] = k1-2;    
                         HT_ColumnnNodeIndex[k1-2] =  ind_HT_column;                    
                       } 
                        
                 }   
               
               if(sIdx < fIdx)
                 {
                   ind_HT_column = sIdx-1;
                   HT_changeColumnIndex[ind_HT_column] = sIdx-1;
                   HT_ColumnnNodeIndex[sIdx-1] = ind_HT_column;
                   row.cells[fIdx-1].firstChild.parentNode.innerHTML =  row.cells[sIdx].firstChild.parentNode.innerHTML;
                   for(var k1=sIdx;k1<fIdx-1;k1++)
                       {
                         row.cells[k1].firstChild.parentNode.innerHTML = ArrRowHead[k1+1];
                         HT_changeColumnIndex[ind_HT_column] = k1;
                         HT_ColumnnNodeIndex[k1] = ind_HT_column;
                         ind_HT_column++; 
                       } 
                       HT_changeColumnIndex[ind_HT_column] = sIdx -1;
                       HT_ColumnnNodeIndex[sIdx -1] = ind_HT_column;
                   //changeColumnIndexArr.push(k1);    
                 }
          }
          
          else if (row.cells[sIdx] != null)
          {                
           var tempX = row.removeChild(row.cells[sIdx]);           
           
           if(sIdx > fIdx) 
                row.insertBefore(tempX,row.cells[fIdx]); 
           else
                row.insertBefore(tempX,row.cells[fIdx-1]);      
           
//               var sIndex1 = sIdx;
//               var fIndex1 = fIdx;
//               var deltaIndex;
//               if(sIndex1 < fIndex1)
//                 {
//                  deltaIndex = fIndex1 - sIndex1;
//                  fIndex1 = fIndex1 -1;
//                 }
//                else
//                 {
//                   deltaIndex = sIndex1 - fIndex1 ;
//                 } 
//               
//               var srcNextSib = row.cells[sIdx].nextSibling;
//               var trgtNextSib = row.cells[fIdx].nextSibling;
//                
//               if(deltaIndex == 1 && fIndex1 != fIdx)
//                  {
//                    srcNextSib = trgtNextSib;
//                  }
//                else if(deltaIndex == 1 && fIndex1 == fIdx)
//                  {
//                    trgtNextSib = srcNextSib;
//                  }                
//               
//               var tempX = row.removeChild(row.cells[sIndex1]);
//               var tempY = row.removeChild(row.cells[fIndex1]); 
//               
//                if(fIndex1 != fIdx)
//                  {                              
//                    if(srcNextSib != null)                
//                        row.insertBefore(tempY,srcNextSib); 
//                    else
//                        row.appendChild(tempY);
//                    
//                    if(trgtNextSib != null)                
//                         row.insertBefore(tempX,trgtNextSib); 
//                     else
//                         row.appendChild(tempX);
//                   }      
//                else 
//                   {
//                      if(trgtNextSib != null)                
//                         row.insertBefore(tempX,trgtNextSib); 
//                     else
//                         row.appendChild(tempX);
//                         
//                       if(srcNextSib != null)                
//                          row.insertBefore(tempY,srcNextSib); 
//                       else
//                         row.appendChild(tempY);
//                   }
                
               
          }
          i++;
       }
        return true;
       //Swap Arrow Images
       if (sIdx==1)
       {
         document.getElementById(imgBoxExch + '-'+fIdx).src = './images/blank.gif';
         document.getElementById(imgBoxExch + '-'+sIdx).src = './images/ARRLeft.gif';
       }
       else if(fIdx==1)
       {
         document.getElementById(imgBoxExch + '-'+sIdx).src = './images/blank.gif';
         document.getElementById(imgBoxExch + '-'+fIdx).src = './images/ARRLeft.gif';
       }
       
       if(sIdx==TabColumsCount)
       {
         document.getElementById(imgBoxExch + fIdx).src = './images/blank.gif';
         document.getElementById(imgBoxExch + sIdx).src = './images/ARRRIGHT.gif';
       }
       else if(fIdx==TabColumsCount)
       {
         document.getElementById(imgBoxExch + sIdx).src = './images/blank.gif';
         document.getElementById(imgBoxExch + fIdx).src = './images/ARRRIGHT.gif';         
       }
       
       
       //document.getElementById('DefaultFilters1_AxchangeCol'+sIdx).onclick = "ExchangeCols(" + sIdx-1 + "," + sIdx + ")";
       //document.getElementById('DefaultFilters1_AxchangeCol-'+sIdx).attributes["onclick"].value='';
       
       //Change calling function       
       if (sIdx < fIdx)  // Right Direction ->
       {           
            var SourceNewIndex = fIdx + 1;
            //Source's For Left Arrow Image
            document.getElementById(anchColExch + '-' + sIdx).href = "javascript:ExchangeCols(" + fIdx + "," + sIdx + ");";       
            //Source's For Right Arrow Image
            if (TabColumsCount == fIdx)
               document.getElementById(anchColExch + sIdx).href = "javascript:;";                   
            else
               document.getElementById(anchColExch + sIdx).href = "javascript:ExchangeCols(" + fIdx + "," + SourceNewIndex + ");";                   
            var DestNewIndex = sIdx - 1;            
               
            //Dest's For Left Arrow Image
            if(DestNewIndex < 1)
              document.getElementById(anchColExch + '-'+fIdx).href = "javascript:;";       
            else
               document.getElementById(anchColExch + '-'+fIdx).href = "javascript:ExchangeCols(" + sIdx + "," + DestNewIndex + ");";       
            //Dest's For Right Arrow Image
            var TNextIndex = sIdx + 1;
            document.getElementById(anchColExch + fIdx).href = "javascript:ExchangeCols(" + sIdx + "," + TNextIndex + ");";
       }
       else  // Left Direction <-
       {
            var SourceNewIndex1 = fIdx - 1;
            //Source's For Left Arrow Image
            if (SourceNewIndex1 < 1)
                document.getElementById(anchColExch + '-'+sIdx).href = "javascript:;";
            else
                document.getElementById(anchColExch + '-'+sIdx).href = "javascript:ExchangeCols(" + fIdx + "," + SourceNewIndex1 + ");";        
            //Source's For Right Arrow Image
            document.getElementById(anchColExch + sIdx).href = "javascript:ExchangeCols(" + fIdx + "," + sIdx + ");";       
            //Dest's For Left Arrow Image
            var DestNewIndex1 = sIdx + 1;      
            document.getElementById(anchColExch + '-'+fIdx).href = "javascript:ExchangeCols(" + sIdx + "," + fIdx + ");";       
            //Dest's For Right Arrow Image
            if (TabColumsCount == sIdx)
              document.getElementById(anchColExch + fIdx).href = "javascript:;";                          
            else
            document.getElementById(anchColExch + fIdx).href = "javascript:ExchangeCols(" + sIdx + "," + DestNewIndex1 + ");";                          
       }
       
        //InterCahnge Swap Column Indexes
        //Store as Temp id
        document.getElementById(anchColExch + sIdx).id = "DefaultFilters1_AxchangeColTMP1";       
        document.getElementById(anchColExch + '-'+sIdx).id = "DefaultFilters1_AxchangeColTMP2";       
        //Swap-1
        document.getElementById(anchColExch +fIdx).id = anchColExch + sIdx;
        document.getElementById(anchColExch +'-'+fIdx).id = anchColExch + "-"+sIdx;       
        //swap-2
        document.getElementById(anchColExch + 'TMP1').id = anchColExch + fIdx;
        document.getElementById(anchColExch + 'TMP2').id = anchColExch + "-"+fIdx;
        
        //Interchange Images as well
        document.getElementById(imgBoxExch + '-'+sIdx).id = 'imgXchangeTmp1';
        document.getElementById(imgBoxExch + sIdx).id = 'imgXchangeTmp2';
        
        //Swap-1
        document.getElementById(imgBoxExch + '-'+fIdx).id = 'DefaultFilters1_imgXchange-'+sIdx;
        document.getElementById(imgBoxExch + fIdx).id = 'DefaultFilters1_imgXchange'+sIdx;
        
        //swap-2
        document.getElementById('imgXchangeTmp1').id = 'DefaultFilters1_imgXchange-'+fIdx;
        document.getElementById('imgXchangeTmp2').id = 'DefaultFilters1_imgXchange'+fIdx;        
        
     }
     
     catch(ex)
     {
     }   
} 

 
function ManageExpendableData(col1,col2)
{               
       //InterchangeData(objExpendableImageData.ExpandedNodes,col1,col2);
       InterchangeData(objAllNodesData,col1,col2);
       InterchangeData(oDummyEspandableImage._AllNodes,col1,col2);
       InterchangeNode(oDummyEspandableImage,col1,col2);
              
       //oDummyEspandableImage._SelfClone._Childs[0]._NodeIndex = 0;
       //  oDummyEspandableImage._SelfClone._Childs[0]._ParentRowID = "__R_CTRL_28";
       //oDummyEspandableImage._Childs[0]._ParentRowID = "__R_CTRL_2";       
       //InterchangeData(oDummyEspandableImage._SelfClone._AllNodes,col1,col2);      
           
}
 
function InterchangeData(objectId,iPos,jPos)
{
 var dummyObjectofNodes =new Array();
 
 for (var j=0;j<objectId.length;j++)
 {
     dummyObjectofNodes.push(objectId[j]);
 }
 
 for(var i=0;i<objectId.length;i++)
    {    
     // if (i == iPos)
      {
        //alert('succeed');
//        var tmpData = objectId[i];
//        objectId[i] = objectId[jPos];
//        objectId[jPos] = tmpData; 
         objectId[i] = dummyObjectofNodes[HT_changeColumnIndex[i]];
      } 
    }  
}

function InterchangeNode(imgObject,col1,col2)
{
  if (imgObject != null ) 
          {
               //oDummyEspandableImage._SelfClone._Childs.Length
               var dummyimgObject2 = new Array();
               if(imgObject._Childs != null)
                 {
                  for(var k=0;k<imgObject._Childs.length;k++)
                     {
                       //if(imgObject._Childs[k]._NodeIndex != null)
                            dummyimgObject2.push(imgObject._Childs[k])
                     }
                 }
                                  
                                  
               for(var j=0;j<50;j++)
                {
                 try 
                  { 
                    if(imgObject._Childs!= null)
                      {
                        if(imgObject._Childs[j] != null)
                              {
                                 imgObject._Childs[j]._NodeIndex = HT_ColumnnNodeIndex[dummyimgObject2[j]._NodeIndex];
                             
                                InterchangeNode(imgObject._Childs[j],col1,col2); 
                                InterChangeExpendableNodeIndex(imgObject._Childs[j],col1,col2);
                              }
                      }         
                   } 
                   catch(ex)
                    {                     
                    }
                }
                if (imgObject._SelfClone != null)
                  {                  
                   InterchangeNode(imgObject._SelfClone,col1,col2);
                  }
          }
}

function InterChangeExpendableNodeIndex(objChildExp,ColInd1,ColInd2)
{
     var Arr1 = new Array(); 
    var isIndexFound = 0;    
    //HT_changeColumnIndex
    objChildExp = objChildExp._ArrExpendableNodeIndexes;
    if(objChildExp != null)
    {
        for(i=0;i<objChildExp.length;i++)
         {
            if(objChildExp[i] != null)
               {
                    objChildExp[HT_changeColumnIndex[i]] = objChildExp[i];
               }
         }
         
     } 
}

function OnRefresshEvent()
{
 var obj1 = (Object)(oDummyEspandableImage);
  Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'OnRefreshPage', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
             {obj1:"obj1._AllNodes"}, OnRefreshSucceeded,OnRefreshOnFailed, null,50000);
}

function OnRefreshSucceeded(obj)
{

}

function OnRefreshOnFailed(ex)
{
 alert("hi");
}

function AfterRefresshEvent()
{
   Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'OnRefreshPage', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
             {obj1:null}, AfterRefreshSucceeded,OnRefreshOnFailed, null,50000);
}

function AfterRefreshSucceeded(obj)
{
   if(obj)
     oDummyEspandableImage = obj;
}


function VisibleReportControls(oSender,OColums,OExpandedVal)
{
    var objTblForReports = document.getElementById('tblForReports');
    var objTblForCharacterization =  document.getElementById('tblForCharacterization');
    arrCurrentRowCols = null;

    if(oSender!=null && oSender.firstChild != null)
    {
        if (oSender.firstChild.checked == true)
        {
            OColums = eval(OColums);
            arrCurrentRowData.push(ExtractRowDATA(oSender,oSender.___AllNODES));
            arrCurrentRowCols = ExtractRowCOLUMNS(OColums);
            objTblForReports.style.display = GetDisplay(true); 
            var oCheckExpNodes = eval(OExpandedVal);           
            __arrExpandedNodes = new Array();
            __arrExpandedNodes.push(oCheckExpNodes);             
        }
        else if(objTblForReports)
            objTblForReports.style.display = GetDisplay(CheckIfSelected());
          
        objTblForCharacterization.style.display = objTblForReports.style.display;
    }
}

//BY AMW 30
function ExtractRowDATA(objSenderTD,OColums)
{


// if(objSenderTD != null)
//     {
//       var arrCurrentRowDataTemp = new Array();
//      objRow1 = objSenderTD.parentNode;
//      arrMultiValueRowIds = null;
//      arrMultiValueRowIds = new Array(); 
//      arrMultiValueRowIds.push($get(objRow1.id));
//          for(var i=1;i<objRow1.children.length-1;i++)
//          {
//           if(objRow1.children[i].children.length > 0)
//                arrCurrentRowDataTemp.push(objRow1.children[i].children[1].innerHTML);
//            else
//                arrCurrentRowDataTemp.push("");
//           //arrCurrentRowData.push(objRow1.children[i].innerHTML); 
//          } 
//      return arrCurrentRowDataTemp;
//     }      



     if(OColums != null)
     {
       var arrCurrentRowDataTemp = new Array();
      objRow1 = objSenderTD.parentNode;
      arrMultiValueRowIds = null;
      arrMultiValueRowIds = new Array(); 
      arrMultiValueRowIds.push($get(objRow1.id));
      
      arrExpandableFields= null;
      arrExpandableFields = new Array();  
      var k=1;
      
      
          for(var i=0;i<OColums.length-1;i=i+2)
          {
                var strDataR1=null; 
                if(OColums[i] != null)
                   {
                      strDataR1=OColums[i].toString();
                      if(typeof(OColums[i]) == "object") 
                          strDataR1 = FormatDate(strDataR1);
//                      if(strDataR1.toUpperCase().indexOf("<IMG") >=0)
//                        {
//                         strDataR1 = strDataR1.replace("height='32'","");
//                         strDataR1 = strDataR1.replace("width = '32'","width = '100%'");
//                        }
                   }   
           var strSRC = "";
           
           if(arrMultiValueRowIds[0].childNodes[k].childNodes.length > 0)
             {
               strSRC = arrMultiValueRowIds[0].childNodes[k].childNodes[0].src;
             }
           
           if(strSRC.indexOf("collapse.gif") >= 0 )              
                arrExpandableFields.push(true);               
           else              
               arrExpandableFields.push(false);                  
                   
//                if(OColums[i].ID != null)
//                  {
//                   strDataR1=OColums[i].ID.toString(); 
//                   if(OColums[i].ID.getTicks  != null)
//                       strDataR1 = FormatDate(strDataR1);
//                  }                               
                    
                arrCurrentRowDataTemp.push(strDataR1);           
                k++;
          } 
      
      return arrCurrentRowDataTemp;
     } 
}

function ExtractRowCOLUMNS(OColums)
{
 if(OColums != null)
 {
    var arrCurrentRowCols = new Array();  
    for(var i=0;i<OColums.length;i++)
    {
        arrCurrentRowCols.push(OColums[i].ValueField);
    }    
    return arrCurrentRowCols;
  } 
}



function ShowReportGenerated()
{  
 if(arrCurrentRowCols!=null)
 {
    var objArrDataRow =  new Array();
    if($get('DefaultFilters1_ddlSelRpts').selectedIndex == 0)
       return;
     
    if($get('DefaultFilters1_ddlSelRpts').selectedIndex == 1)
      {
       OnSucceededReportGen(null);
       return;
      }    
          
    if(arrCurrentRowData.length > 0 )
           objArrDataRow.push(arrCurrentRowData[arrCurrentRowData.length-1]);
           
     if($get('DefaultFilters1_ddlSelRpts').selectedIndex == 2)
      {       
       Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'ReportGeneration', false,  
                  {lstColumns:arrCurrentRowCols,lstData:objArrDataRow,lstViewList:__CurrentViewName,expandedIds:arrExpandableFields}, 
                    OnSucceededMULTIReport,OnFailed, null,500000);
       return;
      }
       
            
    Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'ReportGeneration', false,  
                  {lstColumns:arrCurrentRowCols,lstData:objArrDataRow,lstViewList:__CurrentViewName,expandedIds:arrExpandableFields}, 
                    OnSucceededReportGen,OnFailed, null,500000);
  }    
}

function OnSucceededMULTIReport(result)
{
  var ParentW1 = window.open("MultiReports.aspx");//?rowIdArr=" + rowIds);  
}


function OnSucceededReportGen(result)
{
 //arrCurrentRowData = null;
 //arrCurrentRowCols = null;
 if(result == null)
 {
    var ParentW1 = window.open("showreport.aspx?rpt='" + $get('DefaultFilters1_ddlSelRpts').value + "'");//?rowIdArr=" + rowIds); 
 }
 else
 {
   alert(result);
 }
}

function CheckIfSelected()
{
   var Tabgrid =  document.getElementById('DefaultFilters1_egGrid');
   //alert(Tabgrid.rows.length);
   var i = Tabgrid.rows.length-2;  
   var j;
   var flag;
   var z =0;
   var rowIds = new Array();
   for(j=1;j<=i;j++)
   {
      var row = Tabgrid.rows[j];
      if(row.cells[1]!= null)
      {
        var chk1 =row.cells[0].lastChild; //.firstChild; 
        if(chk1 != null)
        {
         if (chk1.checked)
          {
            return true;
          }
        }
      }
   }
    return false;
}



function CreateDraggable()
{     
     for(var i=0;i<=objAllNodesData.length;i++)
     {     
         var THtHElem = $get('DefaultFilters1_thViewHeader'+i);
         var tHElem = $get('DefaultFilters1_thViewHeader'+i);         
         
         if(tHElem != null)
         {
             var thisObj = [];
             thisObj[0] = tHElem.id;
             thisObj[1] = i;
             thisObj[2] = THtHElem.innerText;
             thisObj[3] = THtHElem.id;
             
                          
//                          

                
             $create(DragHeaderNamespace.DraggableProductBehavior, 
                            {"objMove": thisObj}, 
                            null,  
                            null, 
                            tHElem
                        );
             
                $create(DragHeaderNamespace.DropContBehavior, 
                                            {"objDROP": thisObj},
                                            null, 
                                            null, 
                                            THtHElem
                                            );                                 
        }
    }  
}


function raiseOnScroll()
{
  for(var i=0;i<=objAllNodesData.length;i++)
     {     
         var THtHElem = $get('DefaultFilters1_thViewHeader'+i);
         var tHElem = $get('DefaultFilters1_thViewHeader'+i);         
         
         if(tHElem != null)
         {
            var objBeh = Sys.UI.Behavior.getBehaviors(tHElem)
             if(objBeh != null)
                {
                    if(objBeh.length > 0 )
                        {
//                            for(var k=objBeh.length-1;k>=0;k--)
//                                {
//                                    if(objBeh[k] != null)
//                                    {     
//                                                                   
//                                        //Sys.UI.Behavior.getBehaviors(tHElem)[0].dispose();
//                                    }
//                                }
                            Sys.UI.Behavior.getBehaviors(tHElem)[1].raisePropertyChanged("location");    
                        }
                }
         }
    }             
}
function onSelectReportChange(sender)
{
 if(sender != null)
   {
    var objbtnShowReports = document.getElementById('btnShowReports');
    if(sender.selectedIndex > 0)
      {
        if(objbtnShowReports != null)
           {
              objbtnShowReports.value = "View Report";
           }
      }
    else
      {
         if(objbtnShowReports != null)
           {
              objbtnShowReports.value = "Create Report";
           }
      }
   }
}

function CharacterizeDocs()
{ 
   var docobj ="C:\qqq";// document.getElementById('DefaultFilters1_docval').value; 
   
   if(docobj=="")
   {   
     alert('No Document Selected For Characterization');     
   }

   else
   {   
       var rowIds = new Array();
	   var Tabgrid =  document.getElementById('DefaultFilters1_egGrid');	   
	   var TabLength = Tabgrid.rows.length-2;  
	   var j;
	   var flag;
	   var z =0;	   
	   for(j=1;j<=TabLength;j++)
	   {
	      var row = Tabgrid.rows[j];
	      if(row.cells[0]!= null)
	      {
	        var chk1 =row.cells[0].childNodes[0]; 
	        if(chk1 != null)
	        {
	         if(chk1.checked)
	          {
	             //rowIds.push(j); //(j-2);
	             rowIds.push(ExtractRowDATA(row.cells[0].childNodes[0].parentNode));
	          }
	        }
	      }       
      }
      if(rowIds.length > 0)
        {
          Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'InsertDocuments', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
             {x:rowIds,Cols:arrCurrentRowCols,doc:docobj}, OnSucceeded,OnFailed, null,50000);
        }
    }   
}


var fDummyExpendableImageData = null;

function click_dummy_img(objFDummy)
{
   if(objFDummy !=null && typeof(objFDummy) == "function")
      {
         fDummyExpendableImageData(click_dummy_img);
      }
}

var ParentW1;
function setExpendableData(obj1)
{
    //fDummyExpendableImageData = click_dummy_img(objExpendableImageData22);
    //ParentW1.objExpendableImageData22 = obj1;
    //alert(Sys.Serialization.JavaScriptSerializer.serialize(ParentW1.objExpendableImageData.AllNodes));    
}


function CallExpandableGRID()
      {
        //arrCurrentRowCols
        var HT_arrCurrentRow_Cols = [];
        
        
        for(var i=0;i<this.opener.arrCurrentRowCols.length;i++)
           {
              HT_arrCurrentRow_Cols[this.opener.arrCurrentRowCols[i]] = i;
           }           
           
        var strMainTrID = 'DefaultFilters1_ctl26';
        
        var tMainTr = $get(strMainTrID);
        //tMainTr.style.display = "";        
        var ArrAllNodes = new Array();                
        
        var objtblMddGrid1 = $get('tblMddGrid1');
        objtblMddGrid1 = objtblMddGrid1.children[0];
      
        var trMddRow1 = this.opener.arrMultiValueRowIds[0];  
        //var tr4 = this.opener.document.arrMultiValueRowOBJECT; //getElementById(this.opener.arrMultiValueRowIds[0].id);
        var tr3 = document.createElement("TR");
        tr3.id = "tr3_1_1"; 
        tr3.className = "MainTableBG";
        
        for(var j=0;j<this.opener.objExpendableImageData.AllNodes.length;j++)
           {
             try
             {
               if(this.opener.objExpendableImageData.AllNodes[j].ID.getTicks != null)
                {
                  var arrToinsert = this.opener.objExpendableImageData.AllNodes[j];
                  arrToinsert.ID =FormatDate(this.opener.objExpendableImageData.AllNodes[j].ID);
                  ArrAllNodes.push(arrToinsert);
                }
               else
               {                
               ArrAllNodes.push(this.opener.objExpendableImageData.AllNodes[j]);               
               }
             }             
             catch(ex)
             {               
             }  
           }
           
        //this.opener.objExpendableImageData.AllNodes[10].ID = (Date)(this.opener.objExpendableImageData.AllNodes[10].ID);
        for(var j=1;j<trMddRow1.childNodes.length;j++)
           {
             var tdNode1 = document.createElement("TD");
             tdNode1.innerHTML = trMddRow1.childNodes[j].innerHTML;   
             tdNode1.style.backgroundColor = trMddRow1.childNodes[j].style.backgroundColor;
             tr3.appendChild(tdNode1);
             if(tdNode1.childNodes.length > 0)
               {
                 if(tdNode1.childNodes[0].tagName == "IMG")
                   {
                             var oDummyNode = $create
                               (
                                AjaxScriptControls.ExpandingImage, 
                                {
                                    "AllNodes":ArrAllNodes,
                                    "CollapseImgURL":this.opener.objExpendableImageData.CollapseImgURL,
                                    "CurrentNode": ArrAllNodes[j-1],
                                    "ExpandImgURL":this.opener.objExpendableImageData.ExpandImgURL,
                                    "BlankImgURL":this.opener.objExpendableImageData.BlankImgURL,
                                    "ExpandedNodes":[],
                                    //"ParentRowID":strMainTrID,
                                    "ParentRowID": tr3.id,
                                    "ServiceMethod":this.opener.objExpendableImageData.ServiceMethod,
                                    "DataPageSize":10,
                                    "DataPageNumber":1,
                                    "SourceTable":this.opener.objExpendableImageData.SourceTable,
                                    "PreFilter":" ",
                                    "SortExpression":strSortExpression,
                                    "ServiceURL":this.opener.objExpendableImageData.ServiceURL,
                                    "TableCssClass":this.opener.objExpendableImageData.TableCssClass,
                                    "MiddleCellCssClass":this.opener.objExpendableImageData.MiddleCellCssClass,
                                    "highlightCssClass":this.opener.objExpendableImageData.highlightCssClass,
                                    "nohighlightCssClass":this.opener.objExpendableImageData.nohighlightCssClass,
                                    "NodeIndex":j-1
                                },
                                null, null, tdNode1.childNodes[0]
                               );
                     //oDummyNode._ParentRowID = tr3.id;
                     
                     oDummyNode.SubReport = true;
                   }
               }
           }        
        objtblMddGrid1.appendChild(tr3);
               
//        for(var j=0;j<10;j++)
//           {
//             try
//             {
//               ArrAllNodes.push(this.opener.objExpendableImageData.AllNodes[j]);
//               var tdCell2 = document.createElement("TD");
//               tMainTr.appendChild(tdCell2);
//             }
//              
//             catch(ex)
//             {               
//             }  
//           }
//        //ArrAllNodes.push(this.opener.objExpendableImageData.AllNodes[0]);
//        //ArrAllNodes.push(this.opener.objExpendableImageData.AllNodes[1]);
//        //ArrAllNodes.push(this.opener.objExpendableImageData.AllNodes[2]);
//        //ArrAllNodes.push(this.opener.objExpendableImageData.AllNodes[3]);
//        
//        oDummyEspandableImage2 = $create
//                (
//                    AjaxScriptControls.ExpandingImage, 
//                    {
//                        "AllNodes":ArrAllNodes,
//                        "CollapseImgURL":this.opener.objExpendableImageData.CollapseImgURL,
//                        "CurrentNode": this.opener.objExpendableImageData.AllNodes[0],
//                        "ExpandImgURL":this.opener.objExpendableImageData.ExpandImgURL,
//                        "BlankImgURL":this.opener.objExpendableImageData.BlankImgURL,
//                        "ExpandedNodes":[],
//                        //"ParentRowID":strMainTrID,
//                        "ParentRowID":this.opener.objExpendableImageData.ParentRowID,
//                        "ServiceMethod":this.opener.objExpendableImageData.ServiceMethod,
//                        "DataPageSize":10,
//                        "DataPageNumber":1,
//                        "SourceTable":this.opener.objExpendableImageData.SourceTable,
//                        "PreFilter":" ",
//                        "SortExpression":strSortExpression,
//                        "ServiceURL":this.opener.objExpendableImageData.ServiceURL,
//                        "TableCssClass":this.opener.objExpendableImageData.TableCssClass,
//                        "MiddleCellCssClass":this.opener.objExpendableImageData.MiddleCellCssClass,
//                        "highlightCssClass":this.opener.objExpendableImageData.highlightCssClass,
//                        "nohighlightCssClass":this.opener.objExpendableImageData.nohighlightCssClass,
//                        "NodeIndex":0
//                    },
//                    null, null, document.createElement("IMG") 
//                 );
//                 //oDummyEspandableImage._onClick();
//            oDummyEspandableImage2._ParentRowID = strMainTrID;
//            oDummyEspandableImage2.OnVirtualClick(strMainTrID, null, null, true , OnGridLoaded);
            
            //Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'viewrept1', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
                  //{x:rowIds}, OnSucceededReport,OnFailed, null,50000);
      }       

function onReportLayoutClick()
{
   var queryVal =0; 
   if($get('DefaultFilters1_ddlSelRpts').selectedIndex == 0)
        return;

    queryVal = $get('DefaultFilters1_ddlSelRpts').value;   
   
    var objArrDataRow =  new Array();
          
    if(arrCurrentRowData.length > 0 )
           objArrDataRow.push(arrCurrentRowData[arrCurrentRowData.length-1]);         
       
            
    Sys.Net.WebServiceProxy.invoke('Datasource.asmx', 'ReportGeneration', false,  
                  {lstColumns:arrCurrentRowCols,lstData:objArrDataRow,lstViewList:__CurrentViewName,expandedIds:arrExpandableFields}, 
                    OnSucceededRptLayOutGen,OnFailed, null,500000);
   
}

function OnSucceededRptLayOutGen(result1)
{
  if($get('DefaultFilters1_ddlSelRpts').selectedIndex == 0)
        return;
         
  this.isAddLayoutPart = null; // NEED TO SPECIFY THT OPENER DOES'NT CONTAIN LAST PERSISTED INFO.
  this.__arrReportsData = null; //  -- "" --
        
 var  queryVal = $get('DefaultFilters1_ddlSelRpts').value; 
 var ParentW1 = window.open("MultiReports.aspx?LayoutId=" + queryVal);
}


//FOLL FUN UPDATE DROPDOWN FROM CHILD WINDOW.[AFTER ADDING / UPDATING LAYOUT LIST].
this.AddInDropDown = function(sender,obText,obVal)
{
   var myEle = document.createElement("option") ;
   myEle.value = obVal;
   myEle.text = obText;          
   myEle.selected = true;
   sender.options.add(myEle);
}


function Source_OnClick()
{
  var srcUrl = document.getElementById('ipURL').value;  
 // alert(srcUrl);
  if(srcUrl.trim() == '') return;
  
  //window.location.href = "Home.aspx?srcUrl=" + srcUrl;
  var sQueryString = window.location.search;  
  
  
  if(sQueryString.trim()=="")
       {
        window.location.href = "home.aspx?" + "srcUrl=" + srcUrl;  
       } 
  else  
       {      
        sQueryString = sQueryString.replace("srcUrl=","Oldsrc=");
        window.location.href = "home.aspx" + sQueryString + "&srcUrl=" + srcUrl;  
       } 
  
}


function exportToExcel()   
{  
  var Tabgrid =  document.getElementById('divMDDPanel');
  var NewDiv = document.createElement('DIV');
  NewDiv.innerHTML = Tabgrid.outerHTML;
  //var w  = window.open("about:blank","Excel","widht=0,height=0");   
  var arrTH = NewDiv.getElementsByTagName('TH');
  for(var i=0;i<arrTH.length;i++)
    {
        if(arrTH[i] != null)
            {
               var arrDIV = arrTH[i].getElementsByTagName('DIV');
               
               if(arrDIV.length > 0)
                    arrTH[i].removeChild(arrDIV[0]);      
            }
    }     
    
           
  var arrIMGs = NewDiv.getElementsByTagName('IMG');
  
  for(var i=arrIMGs.length;i>=0;i--)
    {
        if(arrIMGs[i] != null)
            {
              arrIMGs[i].parentNode.removeChild(arrIMGs[i]);      
            }
    }     
    
  
  var arrChks = NewDiv.getElementsByTagName('INPUT');  
  for(var i=arrChks.length;i>=0;i--)
    {
        if(arrChks[i] != null)
            {
                if(arrChks[i].type == "checkbox")
                    arrChks[i].parentNode.removeChild(arrChks[i]);      
            }
    }     
    
    
    
//var SaveFrame = document.getElementById('SaveFrame');    
//SaveFrame.document.open("application/Excel","replace");
//SaveFrame.document.write(NewDiv.innerHTML);
//SaveFrame.document.close();
//SaveFrame.focus();
//SaveFrame.document.execCommand('SaveAs',true,'myFile.txt');

    
  //var w  = window.open("about:blank","Excel","widht=0,height=0");  
  var w  = window.open('application/Excel', 'replace');
  //w.document.open('text/html', 'replace');
  w.document.write(NewDiv.innerHTML);
  w.document.close();  
  w.document.execCommand('SaveAs',1); //,'','Demolog.xls'); //,true,'C:\\Demolog.xls');
      
}



/*
To Build & create menu hierarchy
*/

var __Editable = false;
var __MENUID = null;
var __ParentMenuID = null;
var __UniqueID = 0;
var __TextDataID = null;
var __isSaved = null;
var __EditTableID = 0;
var __ContentTypeArr;

function getUniqueID() {
    return ++__UniqueID;
}

function resetUniqueID() {
    return __UniqueID = 0;
}

function getCurrentUniqueID() {
    return __UniqueID;
}

function getPrevEditTableID() {
    return __EditTableID - 1;
}


function FlushAll() {
    __Editable = false;
    __MENUID = null;
    __ParentMenuID = null;
    __UniqueID = 0;
    __TextDataID = null;
    __isSaved = null;
}

function createMenu(mParentId, isEdit) {
    __Editable = isEdit;
    resetUniqueID();
    partPosition = new Array();
    if (isEdit) {
        __MENUID = mParentId;
        __ParentMenuID = null;
    }
    else {
        __ParentMenuID = mParentId;
        __MENUID = null;
    }

    var sHTML = "<table cellspacing='0' width='100%' cellpadding='2' rules='all' border='1' style='border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";

    if (isEdit) {
        sHTML += "<tr>";
        sHTML += "           <td style='width:100%' colspan='2'><center><b>EDIT MENU [" + __MENUID + "]</b></center></td>";
        sHTML += "       </tr>";
    }
    else {
        sHTML += "       <tr>";
        sHTML += "           <td style='width:100%' colspan='2'><center><b>ADD MENU [For : " + __ParentMenuID + "]</b></center></td>";
        sHTML += "       </tr>";
    }

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Menu Title(English) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtMenuTitleEN' style='width:100%; border-style:none; value='1' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Menu Title(French) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtMenuTitleFR' style='width:100%; border-style:none; value='1' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    if (isEdit) {
        sHTML += "       <tr>";
        sHTML += "           <td style='width:30%'><b>Menu Parent ID : </b></td>";
        sHTML += "           <td style='width:70%'>";
        sHTML += "             <select id='selParentMnu' >"
        sHTML += "             </select>";
        sHTML += "           </td>";
        sHTML += "       </tr>";
    }
    else {
        sHTML += "       <tr>";
        sHTML += "           <td style='width:30%'><b>Menu Parent ID : </b></td>";
        sHTML += "           <td style='width:70%'>";
        sHTML += "             <input type='text' id='txtMenuParent' style='width:100%; border-style:none; value='" + mParentId + "' />";
        sHTML += "           </td>";
        sHTML += "       </tr>";
    }

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Page Title (English) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtPageTitleEN' style='width:100%; border-style:none; value='" + mParentId + "' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Page Title (French) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtPageTitleFR' style='width:100%; border-style:none; value='" + mParentId + "' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Page Keyword (English) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtPageKeywordEN' style='width:100%; border-style:none; value='" + mParentId + "' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Page Keyword (French): </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtPageKeywordFR' style='width:100%; border-style:none; value='" + mParentId + "' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Page Description (English) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtPageDescriptionEN' style='width:100%; border-style:none; value='" + mParentId + "' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td style='width:30%'><b>Page Description (French) : </b></td>";
    sHTML += "           <td style='width:70%'>";
    sHTML += "               <input type='text' id='txtPageDescriptionFR' style='width:100%; border-style:none; value='" + mParentId + "' />";
    sHTML += "           </td>";
    sHTML += "       </tr>";

    sHTML += "       <tr>";
    sHTML += "           <td colspan='3' align='center'>";
    sHTML += "               <input type='button' value='Refresh Output Cache' onclick='RefreshOutputCache()' id='btnRefreshOutputCache'  />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    //sHTML += "               <input type='button' value='Refresh Cache' onclick='RefreshCache()' id='btnRefreshCache'  />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    sHTML += "               <input type='button' value='Save' onclick='SaveMenu(0)' id='btnFormatOrInsertColumnApply'  />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";

    if (isEdit) {
        sHTML += "               <input type='button' value='Remove' onclick='onRemove();'; id='btnRemoveMenu'  />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
    }

    sHTML += "               <input type='button' value='Close' id='btnCancel' onclick='HideHtmlModalDialog()' />";
    sHTML += "               <br/><span id='spnmnuAnimation'></span>";
    sHTML += "           </td>";
    sHTML += "       </tr>";
    sHTML += "   </table>";

    sHTML += "<table cellspacing='0' width='100%' cellpadding='2' rules='all' border='1' style='margin-top:4px;border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    sHTML += "<tr><td>";
    sHTML += "Select Layout&nbsp;:&nbsp;&nbsp; <select id='selParentMnu' onchange='onLayoutClick(this)'><option value='1'>1</option>";
    sHTML += "<option value='2'>2</option>";
    sHTML += "<option value='3'>3</option>";
    sHTML += "</select>";
    sHTML += "</td></tr>";
    sHTML += "</table>";

    sHTML += "<div id='divEditPartsCont' style='width:100%'>";
    sHTML += GetEditPartsTable(1);
    sHTML += "</div>";

    //    sHTML += "<table cellspacing='0' id='tblEditParts' width='100%' cellpadding='2' rules='all' border='1' style='margin-top:4px;border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";   
    //    sHTML += "       <tr>";
    //    sHTML += "           <th>&nbsp;</th>";                             
    //    sHTML += "           <th>Part Header</th>";                             
    //    sHTML += "           <th width='20px'>Visible</th>"; 
    //    sHTML += "           <th width='20px'>Horizontal Position</th>"; 
    //    sHTML += "           <th width='20px'>Vertical Position</th>"; 
    //    sHTML += "           <th>Type Of Content</th>"; 
    //    sHTML += "           <th>Reference To Content</th>";     
    //    sHTML += "       </tr>";
    //    
    // //    sHTML += creatNewPartRow(); 
    //    
    //    sHTML += "</table>";    
    //    sHTML += "<span><a href='javascript:creatNewPartRow();'  >Add Part</a></span><br/><br/>";    
    sHTML += "<span align='center'><input type='button' value ='Save' onclick='SaveAsPart();'/></span>";
    sHTML += "<br/><span id='spnPartAnimation'  align='center'></span>";

    ShowHtmlModalDialogMnu(sHTML, mParentId);

    if (isEdit)
        GetMenuIds(mParentId);
    refreshMenuId = mParentId;
    FillContentType();
}
var refreshMenuId = "";
function FillContentType() {
    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetConfigEntries', false,
                     {}, OnFillContentTypeSucceeded,
                     null, null);
}

function OnFillContentTypeSucceeded(result) {
    if (result != null) {
        if (result.length > 0) {
            __ContentTypeArr = result;
        }
    }
}


function InsertEditPartsTable(ColNumber) {
    var stblHTML = GetEditPartsTable(ColNumber);
    var objdivEditPartsCont = document.getElementById('divEditPartsCont');
    if (objdivEditPartsCont) {
        objdivEditPartsCont.innerHTML += stblHTML;
    }

}
function GetEditPartsTable(tblNo) {
    var tblEditID = "tblEditParts_" + __EditTableID;
    var sHTML = "";
    sHTML += "<table cellspacing='0' id='" + tblEditID + "' width='100%' cellpadding='2' rules='all' border='1' style='margin-top:4px;border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    sHTML += "       <tr>";
    sHTML += "           <th>&nbsp;</th>";
    sHTML += "           <th>Part Header</th>";
//    sHTML += "           <th width='20px'>Visible</th>";
//    sHTML += "           <th width='20px'>Width</th>";
//    sHTML += "           <th width='20px'>Type Of Content</th>";
    //    sHTML += "           <th width='30px'>Parameters</th>";

    sHTML += "           <th>Width</th>";
    sHTML += "           <th>Type Of Content</th>";
    sHTML += "           <th>Parameters</th>";
    sHTML += "       </tr>";
    sHTML += "</table>";

    sHTML += "<span><a href=" + "\"" + "javascript:creatNewPartRow('" + tblEditID + "'," + tblNo + ");" + "\"" + ">Add Part</a></span><br/><br/>";
    __EditTableID++;
    return sHTML;
}

function onLayoutClick(sender) {
    resetUniqueID();
    partPosition = new Array();
    var objdivEditPartsCont = document.getElementById('divEditPartsCont');

    objdivEditPartsCont.innerHTML = "";
    __UniqueID = 0;
    __EditTableID = 0;

    if (objdivEditPartsCont) {
        var divCount = sender.value;
        for (var i = 0; i < divCount; i++) {
            document.getElementById('divEditPartsCont').innerHTML += GetEditPartsTable(i + 1);
        }
    }
}

function SaveAsPart() {
    var ind1 = getCurrentUniqueID();
    var __objPartsInfo = new Array();
    for (var i = 0; i <= ind1; i++) {
        var spanElem = document.getElementById('span_part_identifier_' + i);
        if (spanElem != null) {
            var sHeader = document.getElementById('iPartHead' + i).value;
//            var sVisible = document.getElementById('selVisible' + i).value;
            var iHorizon = document.getElementById('selHorizontal' + i).value;
            var iVertical = document.getElementById('selVertical' + i).value;
            var sContent = document.getElementById('selContentType' + i).value;
            var iWidth = document.getElementById('iPartWidth' + i).value;

            ////SERIALIZED PARAM STRING            
            var res = null;
            var InputHiddenSerializedParam = document.getElementById('selContentType' + i + "HiddenSerializedParam");
            if (InputHiddenSerializedParam) {
                res = Sys.Serialization.JavaScriptSerializer.deserialize(InputHiddenSerializedParam.value);
            }


            //var sReference = document.getElementById('iReferenceTOContent'+ i).value 
            var sXMLTemplate = null;
            //alert(iVertical);
//            if (sVisible == "Yes")
//                sVisible = true;
//            else
//                sVisible = false;

            /////////////////////////////
            if (res && res.Params) {
                for (var k = 0; k < res.Params.length; k++) {
                    var choice = res.Params[k].ParamType;
                    switch (choice) {
                        case 0:
                            break;
                        case 1:
                            break;
                        case 2:
                            break;
                        case 3:
                            var txtBox = document.getElementById('selContentType' + i + "_par_ctrl_" + k);
                            if (txtBox) res.Params[k].ParamValue = txtBox.value;
                            break;
                        case 4:
                            var txtBox = document.getElementById('selContentType' + i + "_par_ctrl_" + k);
                            if (txtBox) res.Params[k].ParamValue = txtBox.value;
                            break;

                        case 5:
                            var txtBox = document.getElementById('selContentType' + i + "_par_ctrl_" + k);
                            if (txtBox) res.Params[k].ParamValue = txtBox.value;
                            break;
                        case 6:
                            var txtBox = document.getElementById('selContentType' + i + "_par_ctrl_" + k);
                            if (txtBox) res.Params[k].ParamValue = txtBox.value;
                            break;
                        case 7:
                            var tblCtrl = document.getElementById('selContentType' + i + "_par_ctrl_" + k + "_Table");
                            if (tblCtrl && tblCtrl.childNodes.length > 0) {
                                var tBody = tblCtrl.childNodes[0];
                                var sColumnNames = "";
                                for (var l = 1; l < tBody.childNodes.length; l++) {
                                    var tRElem = tBody.childNodes[l];
                                    if (tRElem) {
                                        var tdElem = tRElem.childNodes[0];
                                        var tdValue = tdElem.innerHTML;

                                        if (tdValue != "")
                                            sColumnNames += tdValue + "#$#";
                                    }
                                }
                                res.Params[k].ParamValue = sColumnNames;
                            }
                            break;
                    }
                }
            }
            /////////////////////////

            //var strDataPart = {"HorizontalPos":iHorizon,"PartHeader":sHeader,"PartId":null,"ReferenceToContent":sReference,"TypeOfContent":sContent,"VerticalPos":iVertical,"Visible":sVisible,"XMLTemplate":null};      
            var strDataPart = { "HorizontalPos": iHorizon, "PartHeader": sHeader, "PartId": null, "TypeOfContent": sContent, "VerticalPos": iVertical, "Width": iWidth, "XMLTemplate": null, "Parameter": res, "ParameterSerialized": " " };
            __objPartsInfo.push(strDataPart);
        }
    }
    var omenu = new MenuStruct();
    omenu.Parts = __objPartsInfo;

    if (omenu.MenuID != null) {
        createLoadingAnimation("Saving Parts...", "spnPartAnimation");
        Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'SaveParts', false,
                     { IPMenuStruct: omenu }, OnSavePartSucceeded,
                     OnSaveMenuFailed, null);
    }
    else {
        alert('Save Menu First !');
    }
}


function OnSavePartSucceeded(res) {
    DisplayMsgText("spnPartAnimation", "Parts saved successfully.");
}

function OnGetParameterFailed(ex) {
    DisplayMsgText("spnPartAnimation", "Parts not saved successfully.");
}

var roindex = -1;
function ContentTypeChange(id, rowNum) {
    roindex = id.toString().substring(id.toString().length - 1, id.toString().length);

    //alert(id);
    //var ind1 = getUniqueID();
    var ParentCtrlId = document.getElementById(id + "Param");
    if (ParentCtrlId) {
        ParentCtrlId.innerHTML = "";
    }
    var ctrl = document.getElementById(id).options[document.getElementById(id).selectedIndex].text;

    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetParameterForContentType', false,
                     { contentType: ctrl }, OnGetParameterSucceeded,
                     OnGetParameterFailed, id);

    //alert( ctrl);
}

function OnGetParameterSucceeded(res, CtrlId) {

    var tblEditPart = document.getElementById("tblEditParts_" + getPrevEditTableID());   //find table by id

    if (res) {

        var InputHiddenSerializedParam = document.getElementById(CtrlId + "HiddenSerializedParam");
        if (InputHiddenSerializedParam) {
            InputHiddenSerializedParam.value = Sys.Serialization.JavaScriptSerializer.serialize(res);
        }
        var ParentCtrlId = document.getElementById(CtrlId + "Param");
        var ListNameCtrlID = "";
        var UserNameID = "";
        var PasswrdID = "";
        var SelectBoxID = "";

        var ListNameCtrlID1 = "";
        var UserNameID1 = "";
        var PasswrdID1 = "";
        var SelectBoxID1 = "";

        var tablemain = document.createElement("table");
        var tableParam = document.createElement("tbody");
        tablemain.appendChild(tableParam);

        ParentCtrlId.appendChild(tablemain);
        for (var k = 0; k < res.Params.length; k++) {
            var choice = res.Params[k].ParamType;
            var trParam = document.createElement("tr");
            var msgTD = document.createElement("td");
            var lblText = document.createElement("span");
            lblText.innerHTML = res.Params[k].ParamTitle;
            msgTD.appendChild(lblText);
            trParam.appendChild(msgTD);

            tableParam.appendChild(trParam);

            switch (choice) {
                case 0:
                    break;
                case 1:
                    break;
                case 2:
                    break;
                case 3:
                    var ctrlTD = document.createElement("td");
                    var txtBox = document.createElement("input");
                    txtBox.id = CtrlId + "_par_ctrl_" + k;
                    txtBox.style.width = "250";
                    ctrlTD.appendChild(txtBox);
                    trParam.appendChild(ctrlTD);
                    ListNameCtrlID = txtBox.id;

                    var trParam2 = document.createElement("tr");
                    var ctrlTD2 = document.createElement("td");

                    var ipBtnOpen = document.createElement("input");
                    ipBtnOpen.type = "button";
                    ipBtnOpen.value = "Open";
                    ipBtnOpen.style.width = "100";
                    ipBtnOpen.style.height = "20";

                    ipBtnOpen.onclick = function() {
                        DispFileTree(this, txtBox.id, CtrlId);
                    }

                    ctrlTD2.appendChild(ipBtnOpen);
                    trParam2.appendChild(ctrlTD2);
                    tableParam.appendChild(trParam2);
                    //<input type='button' value ='Open' width='5' height='5' onclick=" + "\"" + "javascript:DispFileTree(this,'"+ "iReferenceTOContent" + ind1 +"',"+ind1+");" + "\"" +"/>
                    break;
                case 4:
                    //user name
                    if (UserNameID != "") {
                        var ctrlTD1 = document.createElement("td");
                        var txtBox1 = document.createElement("input");
                        txtBox1.id = CtrlId + "_par_ctrl_" + k;
                        ctrlTD1.appendChild(txtBox1);
                        trParam.appendChild(ctrlTD1);
                        UserNameID1 = txtBox1.id;
                        break;
                    }
                    else {
                        var ctrlTD = document.createElement("td");
                        var txtBox = document.createElement("input");
                        txtBox.id = CtrlId + "_par_ctrl_" + k;
                        ctrlTD.appendChild(txtBox);
                        trParam.appendChild(ctrlTD);
                        UserNameID = txtBox.id;
                        break;
                    }
                case 5:
                    //Password
                    if (PasswrdID == "") {
                        var ctrlTD = document.createElement("td");
                        var txtBox = document.createElement("input");
                        txtBox.id = CtrlId + "_par_ctrl_" + k;
                        txtBox.type = "password";
                        ctrlTD.appendChild(txtBox);
                        trParam.appendChild(ctrlTD);
                        PasswrdID = txtBox.id;
                        break;
                    }
                    else {
                        var ctrlTD1 = document.createElement("td");
                        var txtBox1 = document.createElement("input");
                        txtBox1.id = CtrlId + "_par_ctrl_" + k;
                        txtBox1.type = "password";
                        ctrlTD1.appendChild(txtBox1);
                        trParam.appendChild(ctrlTD1);
                        PasswrdID1 = txtBox1.id;
                        break;
                    }
                case 6:
                    //URL
                    if (ListNameCtrlID == "") {
                        var ctrlTD = document.createElement("td");
                        var txtBox = document.createElement("input");
                        txtBox.id = CtrlId + "_par_ctrl_" + k;
                        ctrlTD.appendChild(txtBox);
                        trParam.appendChild(ctrlTD);
                        ListNameCtrlID = txtBox.id;
                        break;
                    }
                    else {
                        var ctrlTD1 = document.createElement("td");
                        var txtBox1 = document.createElement("input");
                        txtBox1.id = CtrlId + "_par_ctrl_" + k;
                        ctrlTD1.appendChild(txtBox1);
                        trParam.appendChild(ctrlTD1);
                        ListNameCtrlID1 = txtBox1.id;
                        break;
                    }
                case 7:
                    //DropDown
                    if (SelectBoxID == "") {
                        var ctrlTD = document.createElement("td");
                        var selectBox = document.createElement("select");
                        selectBox.id = CtrlId + "_par_ctrl_" + k;
                        selectBox.name = CtrlId + "_par_ctrl_" + k;
                        selectBox.style.width = "350px";
                        SelectBoxID = selectBox.id;
                        ctrlTD.appendChild(selectBox);

                        var ipBtnLoad = document.createElement("input");
                        ipBtnLoad.type = "button";
                        ipBtnLoad.value = "Load Columns";

                        var anchorCtrl = document.createElement("A");
                        anchorCtrl.href = "#";
                        anchorCtrl.innerHTML = "Add Column";

                        var brCtrl1 = document.createElement("BR");
                        ctrlTD.appendChild(brCtrl1);
                        ctrlTD.appendChild(ipBtnLoad);
                        ctrlTD.appendChild(anchorCtrl);


                        var brCtrl2 = document.createElement("BR");
                        ctrlTD.appendChild(brCtrl2);

                        trParam.appendChild(ctrlTD);

                        var trParam2 = document.createElement("tr");
                        var ctrlTD2 = document.createElement("td");
                        var oTable = GetTableParamColumns(SelectBoxID + "_Table");
                        ctrlTD2.appendChild(oTable);
                        ctrlTD2.colSpan = "5";
                        trParam2.appendChild(ctrlTD2);
                        tableParam.appendChild(trParam2);

                        ipBtnLoad.onclick = function() {
                            PopulateColumnsFromList(ListNameCtrlID, UserNameID, PasswrdID, SelectBoxID);
                        }

                        anchorCtrl.onclick = function() {
                            FillColumnList(SelectBoxID, SelectBoxID + "_Table");
                        }

                        break;
                    }
                    else {
                        var ctrlTD1 = document.createElement("td");
                        var selectBox1 = document.createElement("select");
                        selectBox1.id = CtrlId + "_par_ctrl_" + k;
                        selectBox1.name = CtrlId + "_par_ctrl_" + k;
                        selectBox1.style.width = "350px";
                        SelectBoxID1 = selectBox1.id;
                        ctrlTD1.appendChild(selectBox1);

                        var ipBtnLoad1 = document.createElement("input");
                        ipBtnLoad1.type = "button";
                        ipBtnLoad1.value = "Load Columns";

                        var anchorCtrl1 = document.createElement("A");
                        anchorCtrl1.href = "#";
                        anchorCtrl1.innerHTML = "Add Column";

                        var brCtrl3 = document.createElement("BR");
                        ctrlTD1.appendChild(brCtrl3);
                        ctrlTD1.appendChild(ipBtnLoad1);
                        ctrlTD1.appendChild(anchorCtrl1);


                        var brCtrl4 = document.createElement("BR");
                        ctrlTD1.appendChild(brCtrl4);

                        trParam.appendChild(ctrlTD1);

                        var trParam3 = document.createElement("tr");
                        var ctrlTD3 = document.createElement("td");
                        var oTable1 = GetTableParamColumns(SelectBoxID1 + "_Table");
                        ctrlTD3.appendChild(oTable1);
                        ctrlTD3.colSpan = "5";
                        trParam3.appendChild(ctrlTD3);
                        tableParam.appendChild(trParam3);

                        ipBtnLoad1.onclick = function() {
                            PopulateColumnsFromList(ListNameCtrlID1, UserNameID1, PasswrdID1, SelectBoxID1);
                        }

                        anchorCtrl1.onclick = function() {
                            FillColumnList(SelectBoxID1, SelectBoxID1 + "_Table");
                        }

                        break;
                    }
                case 8:
                    //CSS
                    break;
                case 9:
                    //Filter
                    var ctrlTD = document.createElement("td");
                    var selectBox = document.createElement("select");
                    selectBox.id = CtrlId + "_par_ctrl_" + k;
                    selectBox.name = CtrlId + "_par_ctrl_" + k;
                    selectBox.style.width = "350px";
                    ctrlTD.appendChild(selectBox);

                    var brCtrl1 = document.createElement("BR");
                    ctrlTD.appendChild(brCtrl1);

                    var selectBox2 = document.createElement("select");
                    selectBox2.id = CtrlId + "_par_ctrl_" + k + "_Value";
                    selectBox2.name = CtrlId + "_par_ctrl_" + k + "_Value";
                    selectBox2.style.width = "350px";
                    ctrlTD.appendChild(selectBox2);
                    break;
            }
        }
    }
}

//spanAnimCount = 0;
function PopulateColumnsFromList(ListNameCtrlID, UserNameID, PasswrdID, selectBoxId) {

    //WEB METHOD
    var valListNameCtrlID = document.getElementById(ListNameCtrlID).value;
    var valUserNameID = document.getElementById(UserNameID).value;
    var valPasswrdID = document.getElementById(PasswrdID).value;

    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'PopulateColumns', false,
                     { ListNameCtrlID: valListNameCtrlID, UserNameID: valUserNameID, PasswrdID: valPasswrdID }, OnPopulateColumnsFromList,
                     OnSPopulateColumnsFromListFailed, selectBoxId);

    var objselectBoxId = document.getElementById(selectBoxId);
    var spanAnim = document.createElement("span");
    spanAnim.id = "spnParamLoadAnimation";
    objselectBoxId.parentNode.appendChild(spanAnim);
    createLoadingAnimation("Loading Columns...", spanAnim.id);
}

function FillColumnList(ctrlselectBoxid, ctrlooTableid) {
    var objCTRLDropDown = document.getElementById(ctrlselectBoxid);
    var objctrlooTableid = document.getElementById(ctrlooTableid);

    if (objctrlooTableid) {
        var tbody1 = objctrlooTableid.childNodes[0];
        var tr1 = document.createElement("tr");
        var tdNew = document.createElement("td");
        tdNew.innerHTML = objCTRLDropDown[objCTRLDropDown.selectedIndex].innerHTML;
        tr1.appendChild(tdNew);
        tbody1.appendChild(tr1);
    }

}

function OnPopulateColumnsFromList(result, userContext) {

    var objCTRLDropDown = document.getElementById(userContext);
    objCTRLDropDown.innerHTML = "";

    var spanAnim = document.getElementById('spnParamLoadAnimation');
    if (spanAnim) {
        spanAnim.innerHTML = "";
    }


    for (var i = 0; i < result.length; i++) {
        var ctrlOption = document.createElement("option");
        if (result[i]) {
            // optionHTML += "<option value='" + result[i].Name + "'>" + result[i].DisplayName + "</option>"; 
            ctrlOption.value = result[i].Name;
            ctrlOption.innerHTML = result[i].DisplayName;
            objCTRLDropDown.appendChild(ctrlOption);
        }
    }

    //objCTRLDropDown.innerHTML = optionHTML;


}

function GetTableParamColumns(tblID) {
    var oTable = document.createElement("span");
    var sHTML = "";
    sHTML += "<table cellspacing='0' id='" + tblID + "' width='100%' cellpadding='2' rules='all' border='1' style='border:silver 1px solid;border-width:1px;border-style:Solid;border-collapse:collapse;'>";
    sHTML += "       <tr>";
    sHTML += "           <th>Selected Column</th>";
    sHTML += "       </tr>";
    sHTML += "       <tr>";
    sHTML += "           <td></td>";
    sHTML += "       </tr>";
    sHTML += "</table>";

    oTable.innerHTML = sHTML;
    return oTable;
}



function OnSPopulateColumnsFromListFailed(ex) {
    var spanAnim = document.getElementById('spnParamLoadAnimation');
    if (spanAnim) {
        spanAnim.innerHTML = "";
    }

    alert(ex);
}

var partPosition = new Array();

function creatNewPartRow(sender, PartNumber) {

    var newTR = document.createElement("TR");
    var ind1 = getUniqueID();

    if (partPosition[PartNumber]) {
        partPosition[PartNumber] += 1;
    }
    else
        partPosition[PartNumber] = 1;

    var sOptions = PartNumber;

    //for(var j=1;j<21;j++)   
    //sOptions += "<option value='"+PartNumber+"'>"+PartNumber+"</option>";


    //Get these values from the part Hanlder
    var sContentTYpe = new Array();  //("", "HTML", "Non-HTML", "RSS", "DocLib", "List", "WebService", "Astoria", "PDF", "Stacks", "MDDList", "CVLIST");

    sContentTYpe.push("");
    for (var i = 0; i < __ContentTypeArr.length; i++) {
        sContentTYpe.push(__ContentTypeArr[i]);
    }
    var sContentTYpeOption = "";

    for (var j = 0; j < sContentTYpe.length; j++) {
        sContentTYpeOption += "<option value='" + sContentTYpe[j] + "'>" + sContentTYpe[j] + "</option>";
    }

    var sTDElemnt = new Array();
    sTDElemnt.push("<img src='remove.gif' onclick='javascript:deletePartRow(this);' /><span id='span_part_identifier_" + ind1 + "'></span>");
    sTDElemnt.push("<input id='iPartHead" + ind1 + "' valign='top'/>");
//    sTDElemnt.push("<select id='selVisible" + ind1 + "'><option value='Yes'>Yes</option><option value='No'>No</option></select>");
    sTDElemnt.push("<input id='iPartWidth" + ind1 + "' style='width:35px'/>");
    sTDElemnt.push("<select id='selContentType" + ind1 + "' onchange='ContentTypeChange(this.id," + PartNumber + ")'>" + sContentTYpeOption + "</select>");
    sTDElemnt.push("<span id='selContentType" + ind1 + "Param' ></span><input style='display:none;' id='selContentType" + ind1 + "HiddenSerializedParam'/>");
    sTDElemnt.push("<input style='display:none;' id='selHorizontal" + ind1 + "' value='" + partPosition[PartNumber] + "'/>");
    sTDElemnt.push("<input style='display:none;' id='selVertical" + ind1 + "'  value='" + sOptions + "'/>");

    for (var i = 0; i < sTDElemnt.length; i++) {
        var newTd = document.createElement("TD");
        newTd.innerHTML = sTDElemnt[i];
        newTR.appendChild(newTd);
    }


    var tblEditPart = document.getElementById(sender);

    if (tblEditPart != null) {
        for (var i = 0; i < tblEditPart.childNodes.length; i++) {
            if (tblEditPart.childNodes[i].tagName != null) {
                if (tblEditPart.childNodes[i].tagName.toLowerCase() == "tbody") {
                    tblEditPart.childNodes[i].appendChild(newTR);
                }
            }
        }
    }
    else {
        return newTR.outerHTML;
    }
}

function deletePartRow(sender) {
    var delTR = sender.parentNode.parentNode;
    var mainTBLbdy = delTR.parentNode;
    mainTBLbdy.removeChild(delTR);
}

function onRemove() {
    alert('To be implemented!');
}

function ShowHtmlModalDialogMnu(sHTML, mParentId, iWidth, iHeight) {
    if (!iWidth)
        iWidth = 900;
    if (!iHeight)
        iHeight = 400;
    var objPnlModalDialog = document.getElementById("pnlModalDialog");
    var objPnlModalDialog_Inner = document.getElementById("pnlModalDialog_Inner");

    objPnlModalDialog_Inner.style.width = iWidth + "px";
    objPnlModalDialog_Inner.style.height = iHeight + "px";

    var iLeft = 100;
    if (document.all) {
        iLeft = (window.screen.availWidth / 2) - (iWidth / 2);
        if (iLeft < 0) iLeft = 10;
    }

    iLeft += document.body.scrollLeft;

    var iTop = 170;

    iTop += document.body.scrollTop;
    iLeft = 1;

    objPnlModalDialog_Inner.style.left = iLeft + "px";
    objPnlModalDialog_Inner.style.top = iTop + "px";
    objPnlModalDialog_Inner.innerHTML = sHTML;

    //    if(__Editable)
    //            objPnlModalDialog.style.display = "none"; //GetDisplay(false);  
    //    else        

    objPnlModalDialog.style.display = "block";

    var objMenuP = document.getElementById('txtMenuParent');

    if (objMenuP != null)
        objMenuP.value = mParentId;


}


function HideHtmlModalDialog() {
    var objPnlModalDialog = document.getElementById("pnlModalDialog");
    objPnlModalDialog.style.display = "none";

    if (__isSaved != null) {
        if (__isSaved == true)
            document.forms[0].submit();
    }

    FlushAll();
}

function RefreshOutputCache() {
    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'RefreshOutputCache', false,
                     { menuId:refreshMenuId }, OnRefreshCacheSucceeded,
                     OnRefreshCacheFailed, null);
}

function RefreshCache() {
    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'RefreshCache', false,
                     { MenuId: refreshMenuId }, OnRefreshCacheSucceeded,
                     OnRefreshCacheFailed, null);
}

function OnRefreshCacheSucceeded() {
    alert('The cache has been refreshed succesfully!');
}

function OnRefreshCacheFailed() {
    alert('Cache refresh failed!');
}

function SaveMenu(mParentId) {
    var oMenu = new MenuStruct();

    if (oMenu.MenuTitle_EN.trim() != "" && oMenu.MenuTitle_FR.trim() != "") {
        createLoadingAnimation("Saving...", "spnmnuAnimation");

        Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'SaveMenus', false,
                     { IPMenuStruct: oMenu }, OnSaveMenuSucceeded,
                     OnSaveMenuFailed, null);
    }
    else {
        alert('Enter Menu Title in GB / FR ');
    }
}

function OnSaveMenuSucceeded(result) {
    //FlushAll();
    __isSaved = true;
    DisplayMsgText("spnmnuAnimation", "Menu saved successfully.");

    if (result != null)
        __MENUID = result;

}

function OnSaveMenuFailed(result) {
    alert(result.get_message());
}

function MenuStruct() {
    if (__ParentMenuID != null)
        this.MenuParentId = __ParentMenuID; //document.getElementById('selParentMnu').options[document.getElementById('selParentMnu').selectedIndex].text;
    else
        this.MenuParentId = document.getElementById('selParentMnu').options[document.getElementById('selParentMnu').selectedIndex].value;

    this.MenuTitle_EN = document.getElementById('txtMenuTitleEN').value;
    this.MenuTitle_FR = document.getElementById('txtMenuTitleFR').value;
    this.PageTitle_EN = document.getElementById('txtPageTitleEN').value;
    this.PageTitle_FR = document.getElementById('txtPageTitleFR').value;
    this.PageKeywords_EN = document.getElementById('txtPageKeywordEN').value;
    this.PageKeywords_FR = document.getElementById('txtPageKeywordFR').value;
    this.PageDescription_EN = document.getElementById('txtPageDescriptionEN').value;
    this.PageDescription_FR = document.getElementById('txtPageDescriptionFR').value;
    this.MenuID = __MENUID;
    this.Parts = [];
}


function FillData(oMenuStruct) {
    document.getElementById('txtMenuTitleEN').value = oMenuStruct.MenuTitle_EN;
    document.getElementById('txtMenuTitleFR').value = oMenuStruct.MenuTitle_FR;
    document.getElementById('txtPageTitleEN').value = oMenuStruct.PageTitle_EN;
    document.getElementById('txtPageTitleFR').value = oMenuStruct.PageTitle_FR;
    document.getElementById('txtPageKeywordEN').value = oMenuStruct.PageKeywords_EN;
    document.getElementById('txtPageKeywordFR').value = oMenuStruct.PageKeywords_FR;
    document.getElementById('txtPageDescriptionEN').value = oMenuStruct.PageDescription_EN;
    document.getElementById('txtPageDescriptionFR').value = oMenuStruct.PageDescription_FR;
    document.getElementById('selParentMnu').value = oMenuStruct.MenuParentId;
}



function GetMenuIds(mParentId) {
    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetMenusData', false,
                     { sMenuID: mParentId }, OnGetMenuSucceeded,
                     OnSaveMenuFailed, null);
}
function OnGetMenuSucceeded(result) {
    if (result != null) {
        if (result.length > 0) {
            var mnuDropDown = document.getElementById('selParentMnu');
            for (var i = 0; i < result[0].length; i++) {
                AddInDropDown(mnuDropDown, result[0][i], result[0][i]);
            }

            if (result[1] != null) {
                FillData(result[1]);
            }

            if (result[2] != null) {
                BuildPart(result[2]);
            }
        }
    }
}

function SortParts(objParts) {
    for (var i = 0; i < objParts.length; i++) {
        for (var j = 0; j < objParts.length; j++)
            if (objParts[j].VerticalPos > objParts[i].VerticalPos) {
            var tempObj = objParts[i].VerticalPos;
            objParts[i].VerticalPos = objParts[j].VerticalPos;
            objParts[j].VerticalPos = objParts[i].VerticalPos;
        }
    }
    return objParts;
}

function BuildPart(objParts) {
    objParts = objParts.Parts;

    var PrevVerticalPosition = 1;
    if (objParts != null) {
        objParts = SortParts(objParts);
        for (var i = 0; i < objParts.length; i++) {
            if (i != 0 && objParts[i].VerticalPos != PrevVerticalPosition)
                InsertEditPartsTable(objParts[i].VerticalPos);

            creatNewPartRow("tblEditParts_" + getPrevEditTableID(), objParts[i].VerticalPos);
            var ind1 = getCurrentUniqueID();

//            if (objParts[i].Visible == true)
//                objParts[i].Visible = "Yes"
//            else
//                objParts[i].Visible = "No"

            document.getElementById('iPartHead' + ind1).value = objParts[i].PartHeader;
            document.getElementById('iPartWidth' + ind1).value = objParts[i].Width;
//            document.getElementById('selVisible' + ind1).value = objParts[i].Visible;
            document.getElementById('selHorizontal' + ind1).value = objParts[i].HorizontalPos;
            document.getElementById('selVertical' + ind1).value = objParts[i].VerticalPos;
            document.getElementById('selContentType' + ind1).value = objParts[i].TypeOfContent;
            //document.getElementById('iReferenceTOContent'+ ind1).value = objParts[i].ReferenceToContent;

            PrevVerticalPosition = objParts[i].VerticalPos;
        }
    }
}

//this.AddInDropDown = function(sender,obText,obVal)
function AddInDropDown(sender, obText, obVal) {
    var myEle = document.createElement("option");
    myEle.value = obVal;
    myEle.text = obText;
    myEle.selected = true;
    sender.options.add(myEle);
}



function DispFileTree(sender, sDispCtrl, ctrlID) {
    __TextDataID = sDispCtrl;

    var ctrlContent = document.getElementById(ctrlID);

    if (ctrlContent.value.toLowerCase().trim() == "html" || ctrlContent.value.toLowerCase().trim() == "htmlfullbox") {
        Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetDocFilesTree', false,
                     { sFileExt: '.htm' }, OnFileTreeShowBox,
                     OnSaveMenuFailed, null);
    }
}

function createHeadPane(iTop, iLeft, iWidth) {
    var divHeaderPane = document.createElement("DIV");
    divHeaderPane.style.top = iTop + "px";
    divHeaderPane.style.left = iLeft + "px";
    divHeaderPane.style.height = "5px";
    divHeaderPane.style.width = iWidth + "px";
    divHeaderPane.style.backgroundColor = "gray";
    divHeaderPane.style.overflowX = "";
    divHeaderPane.style.overflowY = "";

    var divHeaderImg = document.createElement("img");
    divHeaderImg.src = "close.gif";
    divHeaderImg.style.width = "5px";
    divHeaderImg.style.height = "5px";
    divHeaderImg.style.align = "right";

    divHeaderImg.onclick = function() {
        HideContentChoseModalDialog();
    }
    divHeaderPane.appendChild(divHeaderImg);
    return divHeaderPane;
}

function OnFileTreeShowBox(result) {
    //alert("succeeddd " + result);
    var iWidth = 800;
    var iHeight = 350;
    var iTop = 180;

    var objRootDialog = document.getElementById("pnlModalDialog");

    var objPnlModalDialog = document.getElementById("pnlContentChoseDialog");
    objPnlModalDialog.innerHTML = "";

    var objPnlModalDialog_Inner = document.createElement("DIV");
    objPnlModalDialog_Inner.id = "pnlContentChoseDialog_Inner";

    var divHeaderPane = createHeadPane(iTop, 1, iWidth)
    objPnlModalDialog.appendChild(divHeaderPane);

    objPnlModalDialog.appendChild(objPnlModalDialog_Inner);

    var objPnlModalDialog_Inner = document.getElementById("pnlContentChoseDialog_Inner");



    objPnlModalDialog_Inner.style.width = iWidth + "px";
    objPnlModalDialog_Inner.style.height = iHeight + "px";

    //objPnlModalDialog_Inner.innerHTML = "<span align='right' style='width:100%;height:5px;background-color:gray'><input align='right' type='button' value='Close' id='btnCancel' onclick='HideContentChoseModalDialog()' /></span>";

    var sHTML = "";

    sHTML += "<div style='width:800px;left:0px'><table border='2'  style='border:2px'><tr><td style='width:20%'>";

    for (var i = 0; i < result.length; i++) {
        sHTML += result[i];
    }
    sHTML += "</td><td style='width:80%'>My Info</td></tr></table>";
    sHTML += "</div>";




    var iLeft = 100;
    if (document.all) {
        iLeft = (window.screen.availWidth / 2) - (iWidth / 2);
        if (iLeft < 0) iLeft = 10;
    }

    iLeft += document.body.scrollLeft;



    iTop += document.body.scrollTop;
    iLeft = 1;

    //objPnlModalDialog_Inner.style.left = iLeft + "px";
    objPnlModalDialog_Inner.style.top = iTop + "px";
    objPnlModalDialog_Inner.innerHTML = sHTML;

    objPnlModalDialog.style.display = "block";


}


function HideContentChoseModalDialog() {
    var objPnlModalDialog = document.getElementById("pnlContentChoseDialog");
    objPnlModalDialog.style.display = "none";
}


function onResourceSelect(sLink) {
    if (__TextDataID != null) {
        document.getElementById(__TextDataID).value = sLink;
        __TextDataID = null;
    }
    HideContentChoseModalDialog();
}


function createLoadingAnimation(strLoadingString, spnID) {
    var strLoadingText = "<font color='navy' size='2'>&nbsp;" + strLoadingString + "...&nbsp;&nbsp;";
    if (Sys.Browser.agent == Sys.Browser.InternetExplorer)
        strLoadingText += "<MARQUEE style='WIDTH: 20px; HEIGHT: 12px' scrollDelay=200 width=20 direction=down>&dagger;<br>&dagger;</MARQUEE>";
    else
        strLoadingText += "...";

    var objLoadSpan = document.createElement("div");
    objLoadSpan.innerHTML = strLoadingText;
    objLoadSpan.align = "center";
    objLoadSpan.style.marginBottom = "100px";

    var ospanID = document.getElementById(spnID);
    if (ospanID != null) {
        ospanID.innerHTML = "";
        ospanID.appendChild(objLoadSpan);
    }

    //return objLoadSpan;
}

function removeLoadingAnimation(spnID) {
    var ospanID = document.getElementById(spnID);
    if (ospanID != null)
        ospanID.innerHTML = "";
}

function DisplayMsgText(sPnlId, sMsgText) {
    var opnl = document.getElementById(sPnlId);
    if (opnl != null) {
        opnl.innerHTML = "<input type='text' value='" + sMsgText + "' style='border-style:none;color:Blue;width:140px'/>";
    }
}


function ClearSearchText(sender) {
    if (sender) {
        sender.value = "";
    }
}



var __MenuHideTimer = {};
var __CollapseURL = "./images/collapse.gif";
var __ExpandURL = "./images/expand.gif";
var __IsNavigate = false;

function GetDisplay(bDisplay) {
    if (bDisplay) {
        if (document.all) {
            return "block";
        }
        else {
            return "";
        }
    }
    else {
        return "none";
    }
}

/* 
MENU HANDLERS     
*/
function printContent(id) {
    str = document.getElementById(id).innerHTML
    newwin = window.open('', 'printwin', 'left=100,top=100,toolbar=no,resizable=yes,width=1000,height=600,scrollbars=yes')
    newwin.document.write('<HTML>\n<HEAD>\n')
    newwin.document.write('<TITLE>Print Page</TITLE>\n')
    newwin.document.write('<link rel="stylesheet" type="text/css" href="StyleSheet/StyleSheet.css" />\n')
    newwin.document.write('<link rel="stylesheet" type="text/css" href="StyleSheet/RegStyleSheet.css" />\n')
    newwin.document.write('<link rel="stylesheet" type="text/css" href="StyleSheet/menuh.css" />\n')
    newwin.document.write('<link rel="stylesheet" type="text/css" href="StyleSheet/tree.css" />\n')
    newwin.document.write('<link rel="stylesheet" type="text/css" href="StyleSheet/Parts_css.css" />\n')
    newwin.document.write('<script>\n')
    newwin.document.write('function chkstate(){\n')
    newwin.document.write('if(document.readyState=="complete"){\n')
    newwin.document.write('\n')
    newwin.document.write('}\n')
    newwin.document.write('else{\n')
    newwin.document.write('setTimeout("chkstate()",2000)\n')
    newwin.document.write('}\n')
    newwin.document.write('}\n')
    newwin.document.write('function print_win(){\n')
    newwin.document.write('window.print();\n')
    newwin.document.write('chkstate();\n')
    newwin.document.write('}\n')
    newwin.document.write('<\/script>\n')
    newwin.document.write('</HEAD>\n')
    newwin.document.write('<BODY onload="print_win()">\n')
    newwin.document.write('<a href="#" onclick="print_win()">Print this page</a><br>\n')
    newwin.document.write('<p><table><tr><td></td><td width="50px"></td><td><img src="images/CR_LOGO.gif" border="0px"></td></tr></table></p><br><hr><p></p>\n')
    newwin.document.write(str.replace(/onclick=/, ""))
    newwin.document.write('</BODY>\n')
    newwin.document.write('</HTML>\n')
    newwin.document.close()
}

function onmouseOverMenu(sender, e, mnuId, dataField, iHeaderIndex, headerLeftImgId, headerRightImgId, mnuItem) {
    if (mnuItem.HasChildMenu) {
        var strPnlSubMenuId = "pnlSubMenu_" + mnuId + "_Item_" + mnuItem.Index;
        var objPnlSubMenuId = document.getElementById(strPnlSubMenuId);

        if (objPnlSubMenuId && objPnlSubMenuId.style) {
            ShowHeaderSubMenu(objPnlSubMenuId, mnuItem.Command, mnuItem.isTopLevelMenu);
            HideHeaderSubMenu(objPnlSubMenuId, mnuItem.Command);
        }
        return;
    }
}

var getSuggestionCallCount = 0;
function getSuggestionsList(listURL, userName, password, language) {
    if (getSuggestionCallCount == 0) {
        Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetSuggestionsList', false,
                         { strSHPTUrl: listURL, strUserName: userName, strPassword: password, pageLanguage: language },
                         onGetSuggestionsSucceeded, onGetSuggestionsFailed, null);
    }

}

function onGetSuggestionsSucceeded(results) {
    getSuggestionCallCount++;
    actb(document.getElementById('searchFieldId'), results);
}

function onGetSuggestionsFailed() { }

function checkRadio(url1, url2, url3,lang) {
      
    for (var i = 0; i < document.form1.department.length; i++) {
        if (document.form1.department[i].checked)
            selectedDepartment = document.form1.department[i].value;
    }
    var selectedLocations = "";
   
    for (var i = 0; i < document.form1.location.length; i++) {
        if (document.form1.location[i].checked) {
            selectedLocations += document.form1.location[i].value + ",";
        }
    }
    getValidatedSearchResults(selectedDepartment, selectedLocations, url1, url2, url3, lang,"FF");
}
function getValidatedSearchResults(objRadio, objCheckBox, baseURL, listURL, listURL1, language,browser) {
    var selectedDepartment = objRadio;
    if (browser == "IE") {
            for (var i = 0; i < objRadio.length; i++) {
                if (objRadio[i].checked)
                    selectedDepartment = objRadio[i].value;
            }
    }
    var selectedLocations = objCheckBox;
    if (browser == "IE") {
        selectedLocations = "";
        for (var i = 0; i < objCheckBox.length; i++) {
            if (objCheckBox[i].checked) {
                selectedLocations += objCheckBox[i].value + ",";
            }
        }
    }
    if (selectedDepartment != "" && selectedLocations != "") {

        //For adding animation while loading the results
        var objTable = document.getElementById('SPR');
        objTable.innerHTML = "<br><br><br><br><div id=\"SPAnim\" align=\"center\" style=\"width:340px;height:100%;\"></div>";
        if (language == "English")
            createLoadingAnimation("Loading...", "SPAnim");
        else
            createLoadingAnimation("Chargement...", "SPAnim");

        Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetSearchResults', false,
         { location: selectedLocations, department: selectedDepartment, baseSiteURL: baseURL, strSHPTUrl: listURL, strSHPTUrl1: listURL1, pageLanguage: language },
         onGetResultsSucceeded, onGetResultsFailed, null);
    }
    else {
        if (selectedDepartment == "" && selectedLocations == "") {
            if (language == "French")
                alert("S'il vous plaît choisir un emplacement ou d'un département");
            else
                alert("Please select a location or a department");
        }
        else {
            if (selectedDepartment == "") {
                if (language == "French")
                    alert("S'il vous plaît choisir un département");
                else
                    alert("Please select a department");
            }
            else {
                if (language == "French")
                    alert("Merci de sélectionner une agence");
                else
                    alert("Please select one agency");
            }
        }
    }
}

function onGetResultsSucceeded(result) {
    var objTable = document.getElementById('SPR');
    objTable.innerHTML = result;
}

function onGetResultsFailed(result) {
    alert("fail");
}

function onLoginclick1(URL) {
    var strHTML = new String;
    URL = URL.toString().replace("&amp;", "&");
    strHTML = "<div  id=\"Layer3\" style=\"position:relative; left:0px; top:3px; height:61px; width:187px; z-index:55;vertical-align:top;padding-right:15px;\">";
    strHTML += "<table  cellspacing=\"0px\" cellpadding=\"0px\" bprder=\"0px\" width=\"187px\" height=\"61px\" style=\"background-image:url(./images/Personalizeplane.gif);background-repeat:no-repeat;\">";
    strHTML += "<tr><td height=\"6px\"></td></tr>";
    strHTML += "<tr><td width=\"15px\"></td><td><img src=\"images/Personalize.gif\"></td><td><img src=\"images/Reset.gif\"></td><td><img src=\"images/Logout.gif\"></td></tr>";
    strHTML += "</table>";
    strHTML += "</div>";
    var objID = document.getElementById('Logn');
    objID.innerHTML = strHTML;
}

function onLoginclick(lang, URL) {
    var strHTML = new String;
    URL = URL.toString().replace("&amp;", "&");
    strHTML = "<div  id=\"Layer3\" style=\"position:relative; left:0px; top:3px; height:61px; width:187px; z-index:55;vertical-align:top;padding-right:15px;\">";
    strHTML += "<table  cellspacing=\"0px\" cellpadding=\"0px\" bprder=\"0px\" width=\"187px\" height=\"95px\" style=\"background-image:url(./images/Loginplane.gif);background-repeat:no-repeat;\">";
    strHTML += "<tr><td height=\"6px\"></td></tr>";

    strHTML += "<tr>";
    strHTML += "<td width=\"187px\" align=\"left\" >";
    strHTML += "<div style=\"padding-left:10px;\">";

    if (lang == "FR")
        strHTML += "<input  id=\"CCode1\"  type=\"text\" size=\"19\" value=\"Code entreprise\" style=\"height:12px;font-size: 12px;font-family: Trebuchet MS;\" onclick=\"getblank('CCode1','" + lang + "');\" />";
    else
        strHTML += "<input  id=\"CCode1\"  type=\"text\" size=\"19\" value=\"Company code\" style=\"height:12px;font-size: 12px;font-family: Trebuchet MS;\" onclick=\"getblank('CCode1','" + lang + "');\"/>";

    strHTML += "</div>";
    strHTML += " </td>";
    strHTML += "</tr>";

    strHTML += "<tr>";
    strHTML += "<td width=\"187px\" align=\"left\" >";
    strHTML += "<div style=\"padding-left:10px;\">";

    if (lang == "FR")
        strHTML += "<input  id=\"Login\"  type=\"text\" size=\"19\" value=\"Nom d'utilisateur\" style=\"height:12px;font-size: 12px;font-family: Trebuchet MS;\" onclick=\"getblank('Login','" + lang + "');\"/>";
    else
        strHTML += "<input  id=\"Login\"  type=\"text\" size=\"19\" value=\"Login\" style=\"height:12px;font-size: 12px;font-family: Trebuchet MS;\" onclick=\"getblank('Login','" + lang + "');\"/>";
    strHTML += "</div>";
    strHTML += " </td>";
    strHTML += "</tr>";

    strHTML += "<tr>";
    strHTML += "<td valign=\"top\" align=\"left\">";
    strHTML += "<div style=\"padding-left:10px;\">";
    strHTML += "<table cellspacing=\"0px\" cellpadding=\"0px\" width=\"100%\"><tr><td>";

    if (lang == "FR")
        strHTML += "<input  id=\"Password\"  type=\"Password\" size=\"19\" value=\"Password\" style=\"height:12px;font-size: 12px;font-family: Trebuchet MS;\" onclick=\"getblank('Password','" + lang + "');\" /></td>";
    else
        strHTML += "<input  id=\"Password\"  type=\"Password\" size=\"19\" value=\"Password\" style=\"height:12px;font-size: 12px;font-family: Trebuchet MS;\" onclick=\"getblank('Password','" + lang + "');\" /></td>";

    strHTML += "<td align=\"left\"><a href=\"#\" ><img border=\"0\" style=\"padding-right:3px\" alt=\"Press ON to Login\" src=\"Images/ON.gif\" onclick=\"VLogin('FR');\" /></a></td></tr></table>";
    strHTML += "</div>";

    strHTML += "<tr><td><a href=\"" + URL + "\" style=\"color:white;text-decoration:none;font-size: 12px;font-family: Trebuchet MS;\"><img border=\"0\" src=\"Images/whitepoint-red.gif\">Services en Ligne </a></td></tr>";

    strHTML += "</td>";
    strHTML += " </tr>";
    strHTML += "</table>";
    strHTML += "</div>";
    var objID = document.getElementById('Logn');
    objID.innerHTML = strHTML;
}

function VLogin(C) {
    var cc1 = document.getElementById("CCode1");
    var login = document.getElementById("Login");
    var pass = document.getElementById("Password");
    validateLogin(cc1.value, login.value, pass.value);

}
function validateLogin(cc, login, pass) {
    Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'ValidateLogin', false,
                         { "cc": cc, "login": login, "pass": pass }, onvalidateLoginSucceeded,
                         onvalidateLoginFailed, null, 500000);
}

function onvalidateLoginSucceeded(result, eventArgs) {
    if (result == true)
        window.location.reload();
    else
        alert("Wrong username or password is entered", "Wrong informatiion entered");
}

function onvalidateLoginFailed(error) {
    alert(error.toString());
}

function getblank(obj, lang) {
    var cc1 = document.getElementById("CCode1")
    if (cc1.value == "") {
        if (lang == "FR")
            cc1.value = "Code entreprise";
        else
            cc1.value = "Company code";
    }
    var login = document.getElementById("Login");
    if (login.value == "") {
        if (lang == "FR")
            login.value = "Nom d'utilisateur";
        else
            login.value = "Login";
    }
    var pass = document.getElementById("Password")
    if (pass.value == "")
        pass.value = "password";

    var objID = document.getElementById(obj);
    if (objID.value == "Code entreprise" || objID.value == "Company code")
        objID.value = "";

    if (objID.value == "Nom d'utilisateur" || objID.value == "Login")
        objID.value = "";

    if (objID.value == "password" || objID.value == "Password")
        objID.value = "";
}
function ShowHeaderSubMenu(objPnlForMouseOverMenu, comand, isTopLevel) {
    if (__MenuHideTimer[comand])
        window.clearTimeout(__MenuHideTimer[comand]);

    objPnlForMouseOverMenu.onmouseout = function() { HideHeaderSubMenu(objPnlForMouseOverMenu, comand); };
    objPnlForMouseOverMenu.onmouseover = function() {
        ShowHeaderSubMenu(objPnlForMouseOverMenu, comand, isTopLevel);
    };
    objPnlForMouseOverMenu.style.display = GetDisplay(true);

    if (!isTopLevel)
        objPnlForMouseOverMenu.style.marginLeft = "190px";
}

function HideHeaderSubMenu(objPnlForMouseOverMenu, comand) {
    if (__MenuHideTimer[comand])
        window.clearTimeout(__MenuHideTimer[comand]);

    var __Fn = function() { objPnlForMouseOverMenu.style.display = GetDisplay(false); }

    __MenuHideTimer[comand] = window.setTimeout(__Fn, 1200);
}

function onMenuClick(sender, e, mnuId, dataField, iHeaderIndex, headerLeftImgId, headerRightImgId, mnuItem, sURL) {
    if (sURL != null && (!__IsNavigate)) {
        __IsNavigate = true;
        window.navigate(sURL);
        return;
    }
}
/*  END OF MENU HANDLES*/

var hasSearchPart = false;
function onStartGetPartsServ(objAllParts, ArrDropIDS, ArrDragIDS) {
    //    if(objAllParts.length>0)
    //        setControlBehaviors(ArrDropIDS, ArrDragIDS);
    //    var j = 1;
    //    for(var i=0;i<objAllParts.length;i++)
    //    {    
    //        if(objAllParts[i].TypeOfContent == "search")
    //            hasSearchPart = true;
    //            
    //        createLoadingAnimation("Loading...", "partLoadingArea");
    //            
    //        Sys.Net.WebServiceProxy.invoke('DataSource.asmx', 'GetCentralPartsOnPage', false,                                                                                                                                                                                                                                                                                                                                                                                                                  
    //                         {objPartList:objAllParts[i], clientURL:window.location.href}, onStartGetPartsServSucceeded,                      
    //                         onStartGetPartsServFailed,[ArrDropIDS,ArrDragIDS,j,objAllParts.length] ,500000);
    //        j++;                    
    //    }                             
}

var partResults = new Array();
var userContextResults = new Array();

function onStartGetPartsServSucceeded(resultContent, userContext) {
    renewCache = false;
    var PartCount = userContext[3];
    partResults.push(resultContent);
    userContextResults.push(userContext);

    if (PartCount == partResults.length)
        PopulatePartsOnPage();
}

function PopulatePartsOnPage() {
    removeLoadingAnimation("partContainerArea");
    var PartCount = userContextResults[0][3];
    for (var i = 0; i < PartCount; i++) {
        for (var j = 0; j < PartCount; j++) {
            var currPartIndex = userContextResults[j][2];
            if (currPartIndex == i + 1) {
                var objTD = document.getElementById(partResults[j].PartID);
                if (objTD) {
                    objTD.innerHTML = partResults[j].sPageHTML;
                }

                if (currPartIndex == PartCount) {
                    setControlBehaviors(userContextResults[j][0], userContextResults[j][1]);
                    if (hasSearchPart) {
                        if (document.getElementById('validate') != null)
                            document.getElementById('validate').focus();
                    }
                }
            }
        }
    }
}


function onStartGetPartsServFailed(error) {
    alert(error);
}

function setControlBehaviors(objDrops, objDrags) {
    if (objDrops != null) {
        for (var i = 0; i < objDrops.length; i++) {
            var objDragElem = $get(objDrags[i]);
            var objDropElem = $get(objDrops[i]);

            if (objDropElem && objDropElem.style) {
                objDropElem.style.width = objDropElem.offsetWidth;
                objDropElem.style.height = objDropElem.offsetHeight;
            }
            registerDragDropEvents(objDropElem, objDragElem);
        }
    }

    for (var i = 0; i < objDrops.length; i++) {
        var objBlank = $get("divBlank" + i);
        if (objBlank) {
            objBlank.style.width = objBlank.offsetWidth;
        }
    }

    if ($get('divMDDPanel') != null) {
        try {
            var objPnlGrid = $get('UCContianerCtrl_pnlMainContainer').removeChild($get('UCContianerCtrl_pnlForGrid'));
            $get('divMDDPanel').innerHTML = objPnlGrid.innerHTML;
            //$get('divMDDPanel').style.width = "600px";
            //$get('UCContianerCtrl_pnlForGrid').innerHTML
        }
        catch (ex) {
        }
    }

}

function registerDragDropEvents(objDropElem, objMoveElem) {
    //debugger;       
    if (objMoveElem != null) {
        var thisObj = [];
        thisObj[0] = objMoveElem.id;
        thisObj[1] = ParseIntNumber(objMoveElem.id);


        $create(DragPanelsNamespace.DraggableProductBehavior,
                                { "objMove": thisObj },
                                null,
                                null,
                                objMoveElem
                            );

    }



    if (objDropElem != null) {
        /*
        STYLE FOR ROUNDED BORDERS
        */

        if (objMoveElem && objDropElem.childNodes.length > 0) {
            //objDropElem.style.backgroundColor = "silver";    
            objDropElem.childNodes[1].style.backgroundColor = "white";

            $create(AjaxControlToolkit.RoundedCornersBehavior,
                       { "Radius": 8, "id": "RoundedCornersBehavior_For_" + objDropElem.id },
                       null, null, objDropElem);
        }

        var thisObj1 = [];
        thisObj1[0] = objDropElem.id;
        thisObj1[1] = ParseIntNumber(objDropElem.id);

        $create(DragPanelsNamespace.DropContBehavior,
                                            { "objDROP": thisObj1 },
                                            null,
                                            null,
                                            objDropElem
                                            );





    }
}

function ParseIntNumber(strId) {
    strId = 'td' + strId;
    var temp = new Array();
    temp = strId.split('');
    var tdNumber = '';
    for (var tdi = 0; tdi < temp.length; tdi++) {
        if (String(Number(temp[tdi])) != 'NaN') {
            tdNumber = tdNumber + temp[tdi];
        }
    }
    return tdNumber;
}


/*   DRAGGABLE PARTS    */
function callMouseOver(sender) {
    if (sender && sender.childNodes && sender.childNodes.length > 0) {
        sender.childNodes[0].style.display = "block"; // GetDisplay(true); 
    }
}

function callMouseOut(sender)
{ }

function showMinimize(sender, SendParent) {
    if (sender && sender.style) {
        sender.style.display = GetDisplay(true);
        if (SendParent.currState != "Min")
            sender.src = __ExpandURL;
        else
            sender.src = __CollapseURL;
    }
}

function hideMinimize(sender, SendParent) {
    if (sender && sender.style && SendParent) {
        if (SendParent.currState != "Min") {
            sender.style.display = GetDisplay(false);
        }
    }
}

function CallMaxMin(sender, sendParent, dataContainer) {
    if (sender && sendParent) {
        if (sendParent.currState == "Max") {
            //HideRoundedCorners(sendParent,false);                            
            sendParent.currState = "Min";
            dataContainer.style.display = GetDisplay(false);
            sender.src = __CollapseURL;
            sendParent.style.height = "";



        }
        else {
            //HideRoundedCorners(sendParent,true);
            sendParent.currState = "Max";
            dataContainer.style.display = GetDisplay(true);
            sender.src = __ExpandURL;
            sendParent.style.height = sendParent.offsetHeight;
        }
    }
}

function HideRoundedCorners(DivsendParent, iHidden) {
    var arrIsRounded = DivsendParent.parentNode.getElementsByTagName('div')
    if (arrIsRounded != null && arrIsRounded.length > 0) {
        for (var i = 0; i < arrIsRounded.length; i++) {
            if (arrIsRounded[i].style && arrIsRounded[i].__roundedDiv)
                arrIsRounded[i].style.display = GetDisplay(iHidden);
        }
    }
}

/*
 * Content-seperated javascript tree widget
 * Copyright (C) 2005 SilverStripe Limited
 * Feel free to use this on your websites, but please leave this message in the fies
 * http://www.silverstripe.com/blog
*/

/*
 * Initialise all trees identified by <ul class="tree">
 */
function autoInit_trees() {
	var candidates = document.getElementsByTagName('ul');
	for(var i=0;i<candidates.length;i++) {
		if(candidates[i].className && candidates[i].className.indexOf('tree') != -1) {
			initTree(candidates[i]);
			candidates[i].className = candidates[i].className.replace(/ ?unformatted ?/, ' ');
		}
	}
}
 
/*
 * Initialise a tree node, converting all its LIs appropriately
 */
function initTree(el) {
	var i,j;
	var spanA, spanB, spanC;
	var startingPoint, stoppingPoint, childUL;
	
	// Find all LIs to process
	for(i=0;i<el.childNodes.length;i++) {
		if(el.childNodes[i].tagName && el.childNodes[i].tagName.toLowerCase() == 'li') {
			var li = el.childNodes[i];

			// Create our extra spans
			spanA = document.createElement('span');
			spanB = document.createElement('span');
			spanC = document.createElement('span');
			spanA.appendChild(spanB);
			spanB.appendChild(spanC);
			spanA.className = 'a ' + li.className.replace('closed','spanClosed');
			spanA.onMouseOver = function() {}
			spanB.className = 'b';
			spanB.onclick = treeToggle;
			spanC.className = 'c';
			
			
			// Find the UL within the LI, if it exists
			stoppingPoint = li.childNodes.length;
			startingPoint = 0;
			childUL = null;
			for(j=0;j<li.childNodes.length;j++) {
				if(li.childNodes[j].tagName && li.childNodes[j].tagName.toLowerCase() == 'div') {
					startingPoint = j + 1;
					continue;
				}

				if(li.childNodes[j].tagName && li.childNodes[j].tagName.toLowerCase() == 'ul') {
					childUL = li.childNodes[j];
					stoppingPoint = j;
					break;					
				}
			}
				
			// Move all the nodes up until that point into spanC
			for(j=startingPoint;j<stoppingPoint;j++) {
				spanC.appendChild(li.childNodes[startingPoint]);
			}
			
			// Insert the outermost extra span into the tree
			if(li.childNodes.length > startingPoint) li.insertBefore(spanA, li.childNodes[startingPoint]);
			else li.appendChild(spanA);
			
			// Process the children
			if(childUL != null) {
				if(initTree(childUL)) {
					addClass(li, 'children', 'closed');
					addClass(spanA, 'children', 'spanClosed');
				}
			}
		}
	}
	
	if(li) {
		// li and spanA will still be set to the last item

		addClass(li, 'last', 'closed');
		addClass(spanA, 'last', 'spanClosed');
		return true;
	} else {
		return false;
	}
		
}
 

/*
 * +/- toggle the tree, where el is the <span class="b"> node
 * force, will force it to "open" or "close"
 */
function treeToggle(el, force) {
	el = this;
	
	while(el != null && (!el.tagName || el.tagName.toLowerCase() != "li")) el = el.parentNode;
	
	// Get UL within the LI
	var childSet = findChildWithTag(el, 'ul');
	var topSpan = findChildWithTag(el, 'span');

	if( force != null ){
		
		if( force == "open"){
			treeOpen( topSpan, el )
		}
		else if( force == "close" ){
			treeClose( topSpan, el )
		}
		
	}
	
	else if( childSet != null) {
		// Is open, close it
		if(!el.className.match(/(^| )closed($| )/)) {		
			treeClose( topSpan, el )
		// Is closed, open it
		} else {			
			treeOpen( topSpan, el )
		}
	}
}


function treeOpen( a, b ){
	removeClass(a,'spanClosed');
	removeClass(b,'closed');
}
	
	
function treeClose( a, b ){
	addClass(a,'spanClosed');
	addClass(b,'closed');
}

/*
 * Find the a child of el of type tag
 */
function findChildWithTag(el, tag) {
	for(var i=0;i<el.childNodes.length;i++) {
		if(el.childNodes[i].tagName != null && el.childNodes[i].tagName.toLowerCase() == tag) return el.childNodes[i];
	}
	return null;
}

/*
 * Functions to add and remove class names
 * Mac IE hates unnecessary spaces
 */
function addClass(el, cls, forceBefore) {
	if(forceBefore != null && el.className.match(new RegExp('(^| )' + forceBefore))) {
		el.className = el.className.replace(new RegExp("( |^)" + forceBefore), '$1' + cls + ' ' + forceBefore);

	} else if(!el.className.match(new RegExp('(^| )' + cls + '($| )'))) {
		el.className += ' ' + cls;
		el.className = el.className.replace(/(^ +)|( +$)/g, '');
	}
}
function removeClass(el, cls) {
	var old = el.className;
	var newCls = ' ' + el.className + ' ';
	newCls = newCls.replace(new RegExp(' (' + cls + ' +)+','g'), ' ');
	el.className = newCls.replace(/(^ +)|( +$)/g, '');
} 

/*
 * Handlers for automated loading
 */ 
 _LOADERS = Array();

function callAllLoaders() {
	var i, loaderFunc;
	for(i=0;i<_LOADERS.length;i++) {
		loaderFunc = _LOADERS[i];
		if(loaderFunc != callAllLoaders) loaderFunc();
	}
}

function appendLoader(loaderFunc) {
	if(window.onload && window.onload != callAllLoaders)
		_LOADERS[_LOADERS.length] = window.onload;

	window.onload = callAllLoaders;

	_LOADERS[_LOADERS.length] = loaderFunc;
}

appendLoader(autoInit_trees);

