var strModuleName = "";
var strFieldName = "";
var strFieldValue = "";
var noShowDialog=false;
// will be called from prompt dialogs
            function RefreshMainWindow()
            {
				window.location.href = 'Query.aspx';
            }
 //12-03-2007 67905 - 6.1.0 English - Advanced SelfService KM: typing a keyword on "Look For" box on KM Search and hitting Enter key on the keyboard will insert a second line instead of executing the search
			function KnowledgeSearchEditKeyDown(obj, evt)
            {
                var insText = "\n"    
                if (!evt.ctrlKey && evt.keyCode == 13)
                {
                    evt.returnValue=false;
                    evt.cancel = true;
                    document.getElementById("KnowledgeSearchButton").click();
                    return false;
                }
                else if (evt.ctrlKey && evt.keyCode == 13)
                {
                    if (document.selection)
                    {
                        var sel = document.selection.createRange();
                        var sclone = sel.duplicate();
                        var eclone = sel.duplicate();
                        sel.collapse(true);
                        sclone.moveToElementText(obj);
                        sclone.setEndPoint('EndToEnd', sel);
                        eclone.moveToElementText(obj);
                        eclone.setEndPoint('StartToStart', sel);
                        var startText = sclone.text
                        var endText = eclone.text
                        var str = startText + insText;
                        
                        obj.value = str + endText;;

                        var values = str.split(insText);
                        var lng = startText.length-values.length+3;
                                    
                        var rng=obj.createTextRange();
                        rng.collapse();
                        rng.moveStart("character",lng);
                        rng.select();
                    }
                    else if(document.getSelection)
                    {
                        obj.focus();
                        if( obj.createTextRange )
                        {
                            document.selection.createRange().text += insText;
                        }
                        else if( obj.setSelectionRange )
                        {
                            var len = obj.selectionEnd;
                            obj.value = obj.value.substr( 0, len )+ insText + obj.value.substr( len );
                            obj.setSelectionRange(len+insText.length,len+insText.length);
                        } 
                        else
                        { 
                            obj.value += insText; 
                        }  
                    }
                }
                return true;
            }
            
            
//Sundar: performance fix Ask the server to set businessobject context for gotolink from navigator search
function SetGoToLinkVar()
{
     document.getElementById("CurrentAction").value="SetContextObject";
}

//Sundar:12/17/2207: Performance Improvement-GridDoubleclick handling
function DoubleClickHandler(tableName, itemName)
{
    var currentGrid = igtbl_getGridById(tableName);
    var DataKeyField=currentGrid.Bands[0].DataKeyField;
    //Kulsum 06/17/2008 Show business object only if data row double clicked 
    if (igtbl_getRowById(itemName) != null)
    {
        //row data clicked
        document.getElementById("CurrentObjectID").value = igtbl_getRowById(itemName).getCellFromKey(DataKeyField).getValue();
        document.getElementById("CurrentObject").value = currentGrid.Bands[0].Key;
        
        //tell the action to perform. Basically one of 2 actions - GOTOPARENT or SHOWSINGLEBUSOB
        tableName = tableName.replace(/x/g, "_");
        var action = document.getElementById(tableName+"_GridAction");
        if (action && action.value!="")
        {
            document.getElementById("CurrentAction").value= action.value;
        }
        else
        {
            document.getElementById("CurrentAction").value= "SHOWSINGLEBUSOB";
        }
        return false;
    }
    else
    {
       //header double clicked
       return true; 
    }
}
function DashboardSelected()
{
//do this when you are in dashboard page
  if(document.getElementById("OverrideCallback").value!="false") 
    document.getElementById("CurrentAction").value= "SHOWDASHBOARD";
}
function NovellAuthenticate()
{
		document.getElementById("LoginButton").disabled=true;
		document.getElementById("NovellIndicator").style.visibility="visible";
		document.getElementById("NovellIndicator").style.display="";
		document.getElementById("IsNovellAuthentication").value = "true";
		try
		{
					
			var NovellObj = document.getElementById("FRSNovellAX");
			if(NovellObj && NovellObj.LoggedInUserName)
			{
				document.getElementById("NovellUserName").value = NovellObj.LoggedInUserName;
				
			}
			else
			{
			
				if(NovellObj.ErrorMessage == undefined)
				{
				
					alert(document.getElementById("NovellError").value);
					
				}
				else if(NovellObj.ErrorMessage!="")
				{
					alert(document.getElementById("ErrorFromNovell").value+' '+NovellObj.ErrorMessage);
				
				}
				document.getElementById("NovellUserName").value="";
		        document.getElementById("IsNovellAuthenticated").value="false";
			}
				
		}
		catch(err)
		{
			document.getElementById("NovellUserName").value="";
			document.getElementById("IsNovellAuthenticated").value="false";
		}
		if(document.getElementById("NovellUserName").value!="")
		{
			document.getElementById("IsNovellAuthenticated").value="true";
		}
		else
		{
			document.getElementById("IsNovellAuthenticated").value="false";
		}
				
		document.forms[0].submit();
	
}
var advancedFocus=false;

function setAdvancedFocus()
{
	advancedFocus=true;
	
}

function MakeEnter(evt)
{

  if(evt.altKey  && evt.shiftKey)
  {
 
    if ((document.getElementById("ErrorMessage") !=null)&&(document.getElementById("AuthError").value!="") && (document.getElementById("ErrorMessage").innerText !=""))
    {
        document.getElementById("ErrorMessage").innerText=document.getElementById("ErrorMessage").innerText+ "   Error is :"+document.getElementById("AuthError").value;
    }
    
  }
  
	if(!advancedFocus)
	{
		if(evt.which || evt.keyCode)
		{
			if ((evt.which == 13) || (evt.keyCode == 13))
			{
			    //05/08/2008 maxim egorov issue 74678 - 6.1.1 English - Enter key postaback page twice
				//document.getElementById('LoginButton').focus();
				//document.getElementById('LoginButton').click();
				return false;
			}
		} 
			
		else {return true};
	} 
}            
function OpenLDAPWindow(AppType)
{

	var LDAPProvider,Connection,LDAPUserName="";
	LDAPProvider= document.getElementById("LDAPProvider").value;
	LDAPUserName=document.getElementById("UserName").value;
	advancedFocus=false;
	Connection=document.getElementById("ConnectTo").innerText;
	window.open("LDAPDetails.aspx?AppType="+AppType+"&Connection="+Connection+"&LDAPProvider="+LDAPProvider+"&LDAPUserName="+LDAPUserName, "ContextSearch", "height=250,width=400,status=no,toolbar=no,menubar=no,location=no");
	return false;
}

//maxim egorov Supporting URL in Web client 
var constModif = "_shape";
function isUrl(s) {
     var regexp = /^(ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?$/
 	return regexp.test(s);
 }
 
function ShapeArea_BlurHandler(boxElement, evt)
{
 	var shapeAreaElement = document.getElementById(boxElement.id + constModif);
 	shapeAreaElement.innerHTML = "";
 	var innerHTML = boxElement.value.replace(/\r\n/ig, "<BR />");
 	var textarr = innerHTML.split(' ');
 	var html = "";
 	for (var i = 0; i < textarr.length; i++)
 	{
 		if (isUrl(textarr[i]))
 		{
 			html = html + ' ' + "<a target='_blank' href='"+textarr[i]+"'>"+textarr[i]+"</a>";
 		}
 		else if (textarr[i].length == 0)
 		{
 			html = html + ' ';
 		}
 		else
 		{
 		    html = html + ' ' + textarr[i];		
 		}
 	}
 	shapeAreaElement.innerHTML = html.substring(1);
 	boxElement.style.display = "none";
 	shapeAreaElement.style.display = "";
}
 
 
function ShowBoxArea(shapeAreaElement,evt, sid)
{
	var srcElement = evt.target? evt.target: evt.srcElement;
 	if (srcElement.tagName.toLowerCase() == "div") {
 	    var boxId = shapeAreaElement.id.substring(0,shapeAreaElement.id.length - constModif.length);
 		var boxElement = document.getElementById(boxId);
 		if (boxElement) {
 		    boxElement.style.display = "";
 		    shapeAreaElement.style.display = "none";
 		    boxElement.focus();
 		}
 	}
}

// Sergei Samkov 07/06/2007: common variables to determine which browser we are running
var isIE = navigator.userAgent.indexOf("MSIE")>-1;
var isFF = navigator.userAgent.indexOf("FireFox")>-1;

function AdjustFFInputs()
{
    if (isIE) {
        return;
    }
    var inputsEls = document.getElementsByTagName("INPUT");
    for(var index = 0; index < inputsEls.length; index++)
    {
        if(inputsEls[index].type == "text")
        {
            inputsEls[index].style.minWidth = (inputsEls[index].offsetWidth + 2) + "px";
        }
    }
    inputsEls = document.getElementsByTagName("TEXTAREA");
    for(var index1 = 0; index1 < inputsEls.length; index1++)
    {
        inputsEls[index1].style.minWidth = (inputsEls[index1].offsetWidth + 2) + "px";
    }
    inputsEls = document.getElementsByTagName("SELECT");
    for(var index2 = 0; index2 < inputsEls.length; index2++)
    {
        inputsEls[index2].style.minWidth = (inputsEls[index2].offsetWidth + 2) + "px";
    }
}

function AdjustFFLabelMenu()
{
    if (isIE) {
        return;
    }
    var inputsEls = document.getElementsByTagName("SPAN");
    for(var index = 0; index < inputsEls.length; index++)
    {
        if(inputsEls[index].className == "LabelMenuControlClass")
        {
            inputsEls[index].style.maxWidth = (inputsEls[index].offsetWidth - 12) + "px";
        }
    }
}

//06/18/2008 maxim egorov 76428 - 6.1.1 English -  Web Client: Search Center does not open when logged in as Configuration Manager
function SaveSelectedRow(objectDefName, selRowId)
{
    var defNameStorage = document.getElementById("CurrentObject");
    var rowIdStorage = document.getElementById("CurrentObjectID");
    if ( defNameStorage && objectDefName )
    {
        defNameStorage.value = objectDefName;
    }
    
    if ( rowIdStorage )
    {
        rowIdStorage.value = selRowId;
    }
}

function SaveActiveRow(gr, ar)
{
    if (!ar || !gr) return;
    var cellCount = ar.cells.length;
    if (cellCount > 0) 
    {
        //Kulsum 06/19/2008 Fixing Dashboard row selection problems - get the id by keyfield as opposed to cell position
        //var boId = ar.getCell(cellCount - 1).getValue();
        var keyField = gr.Bands[0].DataKeyField;
        var boId = ar.getCellFromKey(keyField).getValue();
                   
       if ( gr.ClientID.indexOf(oWebTabID) != -1 ||  oWebTabID == null )
       {
            SaveSelectedRow(gr.Bands[0].Key, boId);
       }
    }
}

//02/05/2008 maxim egorov Navigator items in dashboard view
function AfterRowActivateHandler (gridID,rowID, evt)
{
    SaveActiveRow(igtbl_getGridById(gridID), igtbl_getGridById(gridID).Rows.getRowById(rowID));
}

function AfterRowActivateHandlerClick(gridID,rowID)
{
    var gs=igtbl_getGridById(gridID);
     
    if (!gs.NeedPostBack)
    {
        SaveActiveRow(gs, gs.Rows.getRowById(rowID)); 
    }
 }

function AfterSortColumnHandlerClick (gridID,columnID)
{
   var g = igtbl_getGridById(gridID);
   g.DPCurrentPageNumber = 1;   
}

//Ajaxefy:Sundar:07/07/2006 custom paging
function OnPagerNumberChange(gridID, pageNumber, evt) 
{

    var g=igtbl_getGridById(gridID);
	if(g) {
    	g.DPCurrentPageNumber = pageNumber;
 	    g.DPRefDataID = evt.target? evt.target.id:evt.srcElement.id;
		g.invokeXmlHttpRequest(g.eReqType.Page, g, pageNumber); 
	}
    return false;
}

function InitPager(gridID, dpRefDataId)
{
    var functionCall = "SetPagerId('"+gridID+"', '"+dpRefDataId+"');"
    setTimeout(functionCall, 2500); //need a lapse to allow Infragistics to be able to set the pager's grid
}

function SetPagerId(gridID, dpRefDataId)
{
    var g=igtbl_getGridById(gridID);
    if(g) 
    {
        g.DPRefDataID = dpRefDataId; //sets the pager id as a property of the grid
    }
}

//maxim egorov Paging control 
function AfterXmlHttpResponseHandler(gridID) {
    var g=igtbl_getGridById(gridID);
	if(g)
	{
	    UpdateGridPager(g,g.DPCurrentPageNumber, g.DPRefDataID); 
	    SelectGridRow(g); 
	}
}
	
function UpdateGridPager(g, pageNumber, refId)
{
    //maxim egorov Paging control 
    if (!refId)
    {
       var pcTable = document.getElementById("page_container");
       if (pcTable && pcTable.getElementsByTagName("table").length > 0)
       {
            var pagerLayoutTable = pcTable.getElementsByTagName("table")[0];
            refId = pagerLayoutTable.id;
       }
       else
       {
            return false;
       } 
    }
    
    var dataId = refId.substring(0, refId.lastIndexOf('_'));
    var pageList = document.getElementById(dataId + "_PageList");
    var pager = document.getElementById(dataId + "_PageNumber");
    if (pager) 
    {   
        var lstNumber = parseInt(pager.innerHTML);
        if (pageNumber == -1 ) {
            if (lstNumber > 1)
            {
                pageNumber = lstNumber - 1;
            }    
            else 
            {
                pageNumber = lstNumber;
            }    

            if (pageList != null && pageNumber <= pageList.options.length)
            {
                 pageList.selectedIndex = parseInt(pageNumber) - 1;
            }
        }
        else if (pageNumber == 0 ) 
        {
            var nexLinkLabel = lstNumber;
            nexLinkLabel += 1;

            if (pageList != null && nexLinkLabel <= pageList.options.length)
            {
                pageNumber = nexLinkLabel;
                pageList.selectedIndex = parseInt(pageNumber) - 1;
            }    
            else
            {
                pageNumber = lstNumber;
            }
        }        
        else
        {   //fire when goto ddlist change 
            if (pageList != null && pageNumber <= pageList.options.length)
            {
                 pageList.selectedIndex = parseInt(pageNumber) - 1;
            }            
        }

        var curPage = pageNumber;
        pager.innerHTML = curPage;
	 }
	 else if ( pageList && pageNumber <= pageList.options.length )
 	 {
 	    pageList.selectedIndex = parseInt(pageNumber) - 1;	           
	 }
}

var prevRow;


function handleClick(id,args)
{
	 ShowWorkingDialog();
	 var str="FireEvent('"+ id +"','"+args+"');"
     window.setTimeout(str);
}

function FireEvent(id, args)
{
    //eventTarget, eventArgument, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack
    AjaxLibrary_FireEvent(id,args,null,null,true,true);
}

function applyCSSClass(element, cssClass)
{
        if(!element)
                return;
        
        element.className=cssClass;

}


function ajaxEval(evalString)
{
        eval(evalString);
}

                
//Ajaxefy - Client side event handler for tab change
function AfterSelectedTabChange(oWebTab, oTab, oEvent)
{
    	ShowWorkingDialog();
        var str="FireEvent('"+oWebTab.uniqueId+"','"+oTab.index+"');"
        window.setTimeout(str);
}

//10/29/2007 maxim issue 65306 - Web Client - Incident window bottom frame tabs do  not have horizontal or vertical scroll bars
function getChildNodeByCSSName(node, cssName) {
    if (!node) return null;
    for (var i=0; i < node.childNodes.length; i++) {
        if (node.childNodes[i].className == cssName)
            return node.childNodes[i];
    }
    return null;
}

function SetOmegaPanelHeight() {
    var bobPanel = document.getElementById("BusObPanel");
    if (!bobPanel) return;
    var layoutRegion = getChildNodeByCSSName(bobPanel, "LayoutRegion"); //layout
    if (!layoutRegion) return;
    var splitRegion = getChildNodeByCSSName(layoutRegion, "SplitRegion"); //split region
    var alphaPanel =  getChildNodeByCSSName(splitRegion, "AlphaPanel"); //omega panel
    var omegaPanel =  getChildNodeByCSSName(splitRegion, "OmegaPanel"); //omega panel
    if (omegaPanel && document.getElementById("toolBox") && alphaPanel)
    {
        var size = document.body.clientHeight -(document.getElementById("toolBox").offsetHeight + alphaPanel.offsetHeight + 5);
        omegaPanel.style.height = size + "px";
        //ivan.balyko 06/05/08 issues 75258,75353
        var aTables = omegaPanel.getElementsByTagName("table");
        for (j =0; j < aTables.length; j++){
        var oTable = aTables[j];
            if(oTable.className =="FusionGridListView"){
               setOmegaEBOGridSize(oTable.previousSibling.name);
            }
        }
    }
}

function setPaneSize() {
    //var height = parseInt(document.getElementById("MainDIV").offsetHeight);
    var toolBoxH = document.getElementById("toolBox").offsetHeight;
    var height = parseInt(document.body.offsetHeight - toolBoxH - 5);
    var busChild = document.getElementById("BusObPanel");
	var clHeight = document.body.clientHeight;
    try {
            var divObjects = busChild.getElementsByTagName("div");
            if (divObjects.length > 1 && divObjects[0].className == "LayoutRegion" && divObjects[1].className == "SplitRegion") {
                var splitRegion = divObjects[1];
                if (splitRegion.getElementsByTagName("div").length > 2
                    && splitRegion.getElementsByTagName("div")[0].className == "AlphaPanel" 
                    && splitRegion.getElementsByTagName("div")[2].className == "OmegaPanel")
                {
                    divObjects[0].style.height =  height + "px";//layout
                    splitRegion.style.height =  height + "px";//splitregion
                }   
            }
            var sTab = document.getElementById("NCM_UWNM_cp");
            if (sTab)
            {
                var aDivs = sTab.getElementsByTagName("div");
                var kmPanel = document.getElementById("KnowledgePanel");
                for(j =0; j < aDivs.length; j++) 
                {
                    var oDiv = aDivs[j];
                    if (oDiv.className == "GroupItemViewerPanelClass")
                    {
                        if (kmPanel) 
                        {
                            if (height > 363) oDiv.style.height = height - 150;
                            else oDiv.style.height = 214;
                        }
                        else 
                        {
                            if (height > 363) oDiv.style.height = height - 24;
                            else oDiv.style.height = 340;
                        }
                        break;
                    }
                }
                //12/10/2007 maxim issue 68518 Firefox: Navigator width, height, scrollbars are not correct.
                sTab.style.padding = "0px 0px 0px 0px";
                sTab.setAttribute("valign","top");
                //12/13/2007 maxim Issues 68794, 68795 Navigator overlapping the "KM Search" area
                var size = null;
                if (kmPanel)
                {
                     size = document.body.clientHeight - (document.getElementById("toolBox").offsetHeight + kmPanel.offsetHeight) + "px";
                     kmPanel.style.position = "absolute";
                     kmPanel.style.left = "0";
                     kmPanel.style.top = parseInt(size) + document.getElementById("toolBox").offsetHeight + "px";
                }
                else
                    size = clHeight - (toolBoxH + 5) + "px";
                //    size = document.body.clientHeight - (document.getElementById("toolBox").offsetHeight + 5) + "px";
                sTab.style.height = size;
                
                for (var i =0; i < 3; i++)
                {
                    var divTabObj = document.getElementById("NCM_UWNM_div" + i);
                    if (divTabObj)
                    {
                        divTabObj.style.height = size;
                        divTabObj.style.width = "225px";
                       ///// divTabObj.style.overflowX  = "hidden";
                        divTabObj.style.overflowY  = "auto";
                        //10/14/2008 maxim egorov issue 83440 - 6.2.0 There is no vertical scroll for the navigator when the height of the navigator panel is larger than the height of the window
                        if (!document.all)
                            divTabObj.style.position = "absolute";
                        
                        /* set style for navigator scroll*/
                        if (document.all) {
                            divTabObj.style.scrollbarFaceColor = "#B7CDEC";
                            divTabObj.style.scrollbarHighlightColor = "#FFFFFF";
                        }
                    }
                }
            }
			/*var mainDiv = document.getElementById("MainDIV")
			if (mainDiv)
			     mainDiv.style.height = height + "px";*/
			if (busChild)
			     busChild.style.height = height + "px";
            var dBoard = document.getElementById("WLM_DashboardControl")
            if (dBoard) {
                   dBoard.style.height = height + "px";
                   /*for (var i = 0; i < 10; i++) {
                      var id = "WLM_DashboardPart_" + i;
                      var obj = document.getElementById(id);
                       if (obj) {
                          var aDivs = obj.getElementsByTagName("div");
                          for (j =0; j < aDivs.length; j++){
                              var oDiv = aDivs[j];
                              if (oDiv.className == "DashboardPartControl" ) {
                                  oDiv.style.height = parseInt(height/2) + "px";
                                  if (oDiv.parentNode && oDiv.parentNode.tagName.toLowerCase() == "div") 
                                          oDiv.parentNode.style.height = parseInt(height/2) + "px";
                              }
                           }
                      }
                  }
                  var aTables = dBoard.getElementsByTagName("table");
                  for (j =0; j < aTables.length; j++){
                      var oTable = aTables[j];
                      if (oTable.className == "UltraWebGrid" ) {
                            window.setDashboardGridSize(oTable.previousSibling.name);
                      }
                  } 
                  */
                    
             }
    } 
    catch(e) {};
    }
    
    
    
    
    
//05/16/2008 maxim egorov 75145 - 6.1.1 English - Nothing happens when run 'New Change From Failure' QA in the Navigator and no incident is selected
function SelectGridRow(gr) {
 try
 {   
    if (gr.Rows.length > 0 && !gr.getActiveRow())
    {
        //grid has no active row
        var ar = gr.Rows.getRow(0);
        if (!ar)
            return;
        gr.setActiveRow(ar);
        //SaveActiveRow(gr,ar); //dont need this as the above statement will trigger 'AfterRowActivateHandler' event
    }
    else if ( gr.Rows.length == 0 && 
            ( gr.ClientID.indexOf(oWebTabID)!= -1 || oWebTabID == null) 
        )
    {
        //no rows present
        SaveSelectedRow(gr.Bands[0].Key, "0");
    }
    else if (gr.getActiveRow())
    {
        //grid has active row
        SaveActiveRow(gr,gr.getActiveRow());
    }
  }
  catch (e)
  {};
}    

//06/11/2008 maxim egorov 75151 - 6.1.1 English - When we use Incident Workspace we can not run QA from another BO
var oWebTabID = null; //this global variable is used to indicate which tab is selected currently on page
function onDashboardTabChangeHandler(oWebTab, oTab, oEvent)
{

    //inspite of trying to set only one default row for a page, we need to check for the selected tab id
    //this is because, on the server the page is first loaded with a old tab selected index & then the tab-click event is fired. We have no control over which RowSelection will trigger first on the client-side, hence we need to check against this tab id
    oWebTabID = oTab.Key;
}

//ivan.balyko 06/05/08 issues 75258,75353
function initEBOGrid(grName)
{
    setOmegaEBOGridSize(grName);
}
//ivan.balyko 06/05/08 issues 75258,75353
function setOmegaEBOGridSize(grName)
{
    var gr = igtbl_getGridById(grName);
    if(gr && gr.MainGrid && gr.MainGrid.offsetParent)
    {
        var pcell = document.getElementById("PresentationCell");
        if ((!document.all) || (pcell && pcell.offsetWidth != gr.MainGrid.offsetWidth))
        {
            //gr.MainGrid.style.tableLayout  = "fixed";
            var mg = gr.MainGrid;
            var height = 0;
            var width = 0;

            var oElement = mg;
            while (oElement != null && oElement.className != "OmegaPanel") {
                height += oElement.offsetTop;
                width += oElement.offsetLeft;
                oElement = oElement.offsetParent;
            }
            
            if(oElement.className == "OmegaPanel") {
                height = oElement.offsetHeight - height;
                width = oElement.offsetWidth - width;
            }
            
            height = (height<60)?60:height;
            width = (width<60)?60:width-3;
            
	        if(ig_csom.IsFireFox || ((ig_csom.IsIE6 || ig_csom.IsIE7) && igtbl_isXHTML)) 
	        {
		        var marginHeight = mg.offsetHeight - mg.clientHeight;
		        for(var i = 0, len =  mg.rows.length; i < len; i++) 
		        {
		            var r = mg.rows[i];
			        if(r.id != gr.Id + "_mr") 
			        {
				        marginHeight += r.offsetHeight;
			        }
		        }
		        if(height < marginHeight) {
			        height = marginHeight; 
		        }
		        
		        document.getElementById(gr.Id + "_div").style.height = (height - marginHeight) + "px";
		        document.getElementById(gr.Id + "_mc").style.height = "0px";
		        document.getElementById(gr.Id + "_mr").style.height = (height - marginHeight) + "px";
		        document.getElementById(gr.Id + "_mtb").style.height = height + "px";		        
	        } 
	        
	        document.getElementById(gr.Id + "_div").style.width  = width + "px";
	        document.getElementById(gr.Id + "_hdiv").style.width = width + "px";

	        mg.style.width = width + "px";
	        mg.style.height = height + "px";
        }
        
        if (gr.Rows.length > 0 && gr.getActiveRow())
        {
            var ar = gr.getActiveRow();
            ar.scrollToView();
            //08/28/2008 maxim egorov fix scroll top after change grid/form view
            var gs = gr.getDivElement();
            if (gs && window._grId == gr.Id)
            {
                gs.scrollTop = window._gsScrollTop;
            }
        }
    }
}

//10/07/08 shavlyuk Fixing SimpleSearchResults row selection problems
function setActiveRowSelection(grName)
{
    var gr = igtbl_getGridById(grName);
    if(gr && gr.MainGrid && gr.MainGrid.offsetParent)
    {
        for(var row in gr.SelectedRows)
        {
            igtbl_clearSelectionAll(grName);
            igtbl_setActiveRow(grName,igtbl_getElementById(row));
            var ar = gr.Rows.getRowById(row);
            if(ar)
                ar.setSelected(true);
            return;
        }
    }
}

//Kulsum 06/19/2008 Fixing Dashboard row selection problems - Set only one row selection in a page
function setDashboardGridSizeAndRow(grName)
{
    var gr = igtbl_getGridById(grName);
    if(gr && gr.MainGrid && gr.MainGrid.offsetParent)
    {
        SelectGridRow(gr);
        setDashboardGridSize(grName);
    }
}

//Kulsum 06/19/2008 Fixing SearchGrid row selection problems
function SetSearchGridRow(grName)
{

    var gr = igtbl_getGridById(grName);
    oWebTabID = null; //clear out the tab selection id - since this could be an AJAX call it becomes important
    SelectGridRow(gr);
}


function setDashboardGridSize(grName)
{
    var gr = igtbl_getGridById(grName);
    if(gr && gr.MainGrid && gr.MainGrid.offsetParent)
    {
	    var height = gr.MainGrid.offsetParent.clientHeight - gr.MainGrid.offsetTop - 10;
        height = (height<60)?60:height;
	    if(ig_csom.IsFireFox || ((ig_csom.IsIE6 || ig_csom.IsIE7) && igtbl_isXHTML)) 
	    {
		    var marginHeight = gr.MainGrid.offsetHeight - gr.MainGrid.clientHeight;
		    for(var x=0, len=gr.MainGrid.rows.length; x<len; x++) 
		    {
			    if(gr.MainGrid.rows[x].id != gr.Id + "_mr") 
			    {
				    marginHeight += gr.MainGrid.rows[x].offsetHeight;
			    }
		    }
		    if(height < marginHeight) {
			    height = marginHeight; 
		    }
		    gr.MainGrid.style.height = height + "px";
            document.getElementById(gr.Id + "_mtb").style.height = height + "px";
            document.getElementById(gr.Id + "_mr").style.height = (height - marginHeight) + "px";
            document.getElementById(gr.Id + "_mc").style.height = "0px";
            document.getElementById(gr.Id + "_div").style.height = (height - marginHeight) + "px";
	    } else {
		    gr.MainGrid.style.height = height + "px";
	    }
    }
}  
function setGridPaneSize() {
     var cellContainer = document.getElementById("presentCellContainer");
     if (cellContainer != null) {
         var oTables =  cellContainer.getElementsByTagName("table");
         if (oTables.length > 0 && oTables[0].parentNode != null) {
            var toolBoxH = document.getElementById("toolBox").offsetHeight;
            var height = parseInt(document.body.offsetHeight - toolBoxH - 5);
            //var height = parseInt(document.getElementById("MainDIV").offsetHeight);
             var offsetGeidHeight = 60; // toolbar cell (26px in css) + tabs height(25px) + borders
             var div1 = oTables[0].parentNode;
             var div2 = oTables[0].getElementsByTagName("div")[0];
             div1.style.height = parseInt(height/2) - offsetGeidHeight + "px";
             div2.style.height = parseInt(height/2) - offsetGeidHeight + "px";
         }
     }
}

function FireEvent(id, args)
{
    //eventTarget, eventArgument, clientCallBack, clientCallBackArg, includeControlValuesWithCallBack, updatePageAfterCallBack
    AjaxLibrary_FireEvent(id,args,null,null,true,true);
}

//Ajaxefy:RAM
function ImageButtonMouseIn(imageButton)
{       
        imageButton.className = "AjaxToolbarImageButtonHoverClass";     
}
function ImageButtonMouseOut(imageButton)
{
        imageButton.className = " ";
}       
function TextButtonMouseIn(textButton)
{
        textButton.className = "AjaxToolbarButtonHoverClass";
}
function TextButtonMouseOut(textButton)
{
        textButton.className = " ";
}

function tb_click(ModuleName, FieldName, evt)
{
 
        if(fromHeat)
            return;
        strModuleName = ModuleName;
        strFieldName = FieldName;
        var sourceElement = GetEventElement(evt);
        if(sourceElement)
        {
			strFieldValue = sourceElement.value;
		}
        
        //Pass in x and y position of click to show context menu at postion mouse was clicked
        var x, y;
        if(evt.pageX)
        {
			x = evt.pageX;
        }
        else
        {
			x = evt.clientX;
        }
        if(evt.pageY)
        {
			y = evt.pageY;
        }
        else
        {
			y = evt.clientY;
        }
        y -= 5;
       
        //Sundar:09/12/2008 Replacing popupmenu
        var	obj;
	if(evt.srcElement)
	{
	    obj=evt.srcElement.parentElement
	    	
	}
	else
	{
	    obj= obj= evt.target.parentNode;;
	}	
        menuSelObj = obj ;
        document.getElementById('popupmenudiv').style.left = x+"px";
		document.getElementById('popupmenudiv').style.top = y+"px";
		document.getElementById('popupmenudiv').style.display = "";
		isMenu = true;
        //igmenu_showMenu('PopupMenu', evt, x, y);
        evt.cancelBubble = true;
        evt.returnValue = false;
}

function ItemClick() 
{
	document.getElementById('popupmenudiv').className="PopupMenuItemClass";
	document.getElementById('popupmenudiv').style.display = "none" ;
    //maxim egorov 01/15/2008 Issue 48937 ITSM 54, QS. Fails to appear a search result.
    //Kulsum 02/07/2008 Issue:71146 Simple Search should not appear in search form as raised by above issue 48937. It should be shown in teh parent window.
    window.open("SimpleSearch.aspx?Type=SimpleSearch&DefaultObjectType="+strModuleName+"&FieldName="+strFieldName+"&FieldValue="+strFieldValue, "ContextSearch", "height=340,width=750,status=no,toolbar=no,menubar=no,location=no");
}

function DoCallback(url, strRuleType, srcID, srcVal, tgtID)
{
        // P. Pruidze 17-08-05 bug 24917 convert srcVal to Unicode
        var pageUrl = url + "?CallBackType=" + strRuleType +"&CallBackSourceID=" + srcID + "&CallBackSourceVal=" + encodeURIComponent(srcVal) + "&CallBackTragetID=" + tgtID;                       
        var xmlRequest = new ActiveXObject("Microsoft.XMLHTTP");
        xmlRequest.open("POST", pageUrl, false);
    xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlRequest.send('');
    return xmlRequest;
}

function MoreInfo(evt, strRuleType, strRuleID, srcInfo, tgtUniqueID, tgtID)
{
    var RuleType = strRuleType;
    var strVal = "";
	var sourceElement = GetEventElement(evt);
	var sourceVal;
    if(sourceElement)
    {
		sourceVal = sourceElement.value;
	}

    if (RuleType == "List")
    {
                var sourceID = srcInfo;
                var targetID = tgtID;
            
                var xmlRequest = DoCallback("CallBack.aspx", strRuleType , sourceID, sourceVal, targetID);

                var strResult = xmlRequest.responseText;

                if (strResult.length > 0){
                        var oDropDownList = document.all(tgtUniqueID); 
                        if (oDropDownList != null)
                        {
                                oDropDownList.length=0;
                                var retArr = strResult.split("||")
                                for(i=0; i < retArr.length; i++)
                                {
                                        oDropDownList.add(new Option(retArr[i],retArr[i]));
                                }
                        }
                }
        }
        else if(RuleType == "SimpleCalculation")
        {
                var arrSrcInfo = srcInfo.split(",");
        
                for(i=0; i<arrSrcInfo.length; i++)
                {
                        arrFieldInfo = arrSrcInfo[i].split("||");
                        if (strVal != "") strVal = strVal + ",";
                        var fieldId = document.all(arrFieldInfo[0]);
                        if ( fieldId != null )
                        {
                                strVal = strVal + arrFieldInfo[1] + "=" + fieldId.value
                        }
                } 

                var targetID = tgtID;

                var xmlRequest = DoCallback("CallBack.aspx", strRuleType , strRuleID, strVal);

                var strResult = xmlRequest.responseText;

                if (strResult != null && strResult != "" && eval(document.all(tgtUniqueID)) != null && document.all(tgtUniqueID).children[0] != null)
                        document.all(tgtUniqueID).children[0].innerText = strResult;
        }
      
      //maxim 07/30/2007 check ddList controls for dirty on client side
      //if (onChangeEventHandler && sourceElement)
//        onChangeEventHandler(sourceElement,evt);
}

// just cleans up some session variables
function CleanSearchResultSession(evt)
{
        if (IsWindowClosing(evt))      // is window closing?
        {
                var fromPage = document.getElementById("m_strFromPage").value;
                var xmlRequest = DoCallback("CallBack.aspx", "CleanSearchResultSession" , fromPage);
        }
}

// just cleans up some session variables
function CleanEditAssociatedBusinessObjectSession(fromPage, evt)
{
        if (IsWindowClosing(evt))      // is window closing?
        {
                var xmlRequest = DoCallback("CallBack.aspx", "CleanEditAssociatedBusinessObjectSession" , fromPage);
        }
}


// just cleans up some session variables
function CleanTableValidationDlgSession(fromPage, evt)
{
        if (IsWindowClosing(evt))      // is window closing?
        {
                var xmlRequest = DoCallback("CallBack.aspx", "CleanTableValidationDlgSession" , fromPage);
        }
}
function CleanQueryPageSession(evt)
{
        if (IsWindowClosing(evt))      // is window closing?
        {
                var xmlRequest = DoCallback("CallBack.aspx", "CleanQueryPageSession");
        }
}
//////
function clearlistbox(lb){ 
try 
{ 
lb.options.length = 0; 
} 
catch(e) 
{ 
clearlistbox(lb); 
} 
} 
function clearlistbox(lb){
  for (var i=lb.options.length-1; i>=0; i--){
    lb.options[i] = null;
  }
  lb.selectedIndex = -1;
}
function SearchValueSelected(DrpVal)
{
   var selectedField=DrpVal.options[DrpVal.selectedIndex].value;
   if(selectedField!='')
   {
    document.getElementById("HdnSearchFieldName").value=selectedField;
   }
   else
   {
    document.getElementById("HdnSearchFieldName").value="";
   }
   
}

function SearchObjectSelected(DrpBO)
{

   var selectedBO=DrpBO.options[DrpBO.selectedIndex].value;
   clearlistbox(document.getElementById("NCM_UWNM_Navigator_NC_MainNav_TG0_DrpField"));
   if(selectedBO=="")
   {
       document.getElementById("HdnSearchBOName").value="";
       document.getElementById("HdnSearchFieldName").value="";
       return;
   }
   document.getElementById("HdnSearchBOName").value=selectedBO;
   if (selectedBO.indexOf('#MRUList#') != '-1')
   {
        return;
   }
  
   AjaxHandler_FireEvent("SearchBO","selectedBO="+selectedBO,"SearchBO",true);
  
}
function AjaxHandler_FireEvent(key, text, idDef,bShowDialog)
{
    if(bShowDialog)
    {
        ShowWorkingDialog();
    }
    var x = new AjaxLibrary_GetXMLHttpRequest();
    //05/22/2008 maxim  egorov 75150 - 6.1.1 English - Change is created from wrong Incident when run 'New Change From Request' QA    
    var selRowObj = document.getElementById("CurrentObjectID");
    var selrow = "";
    if (selRowObj)
    {
        selrow = "&CurrentObjectID=" + selRowObj.value + "&CurrentObject=" + document.getElementById("CurrentObject").value+"&CurrentAction="+ document.getElementById("CurrentAction").value;
    }
    
    if (idDef == "menu") {
        x.open("POST", "Handler.aspx?CommandDefKey=" + encodeURIComponent(key) + "&CommandDefText="+ encodeURIComponent(text) + "&CommandDefID=" + idDef + selrow, true);
    }
    else if (key == "Extensions.ExecuteCode") {
        x.open("POST", "Handler.aspx?CommandDefKey=" + encodeURIComponent(key) + "&CommandDefText="+ encodeURIComponent(text) + idDef + selrow , true);
    }
    else {
        if ( key == "Search.OpenSearch" || key == "BusinessObjectServices.New1") {
            //Kulsum 04/06/2008 Issue: 99974 Send the search name as opposed to text (name could be different than alias and this is particularly visible in localized FADs)     
            defParams = idDef.split("=");
            x.open("POST", "Query.aspx?operation=" + encodeURIComponent(key) + "&ObjectId="+ encodeURIComponent(defParams[1]), true);
        }
        else if ( key == "Search.NavigatorFieldSearch") {
            //Kulsum 12/1/8/2007 Supporting AJAX for Search by Field in Navigator (previous ajax did a post back - fixing this)            
            defParams = idDef.split("&"); //definition contains both BO and Field separated by '&'
            x.open("POST", "Query.aspx?operation=" + encodeURIComponent(key) + "&SearchValue="+ encodeURIComponent(text)+"&SearchBoName="+ encodeURIComponent(defParams[0]) + "&SearchField="+ encodeURIComponent(defParams[1]) ,true);
        }
        else if ( key == "Search.OpenPromptSearch") {
            x.open("POST", "Handler.aspx?CommandDefKey=" + encodeURIComponent("Search.OpenSearch") + "&QueryGroupDef=" + encodeURIComponent(text) + idDef + selrow, true);
        }
        else if ( key == "Search.NavigatorFieldSearch" || key == "Search.SearchUtilityFillGrid"
                    || key == "Search.SearchUtilityRunSearch") {
            x.open("POST", "Handler.aspx?CommandDefKey=" + encodeURIComponent(key) + selrow , true);
        }
        else if ( key =="SearchBO")
        {
          x.open("POST", "Handler.aspx?CommandDefKey=" + encodeURIComponent(key)+ "&"+text + selrow , true);
        }
        else {
            x.open("POST", "Handler.aspx?CommandDefKey=" + encodeURIComponent(key) + selrow, true);
        }
    }
    x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
    x.setRequestHeader("Accept-Encoding", "gzip, deflate");
    x.onreadystatechange = function() {
    
        if (x.readyState != 4) {
            return;
        }
        if (x.status == 200 && x.responseText != "")
            if (key == "Search.OpenSearch" || key == "BusinessObjectServices.New1" || key == "Search.NavigatorFieldSearch") {
                 parseServerResponse(x.responseText);
            }
            else if(key == "SearchBO")
            {
            ////alert(x.responseText );
            
                populateBoFields(x.responseText);
            }
            else {
                var text = x.responseText.replace("<script language=javascript>","").replace("<!--START:jsscript-->","").replace("<!--END:jsscript-->","").replace("</script>","");
                if(text.indexOf("PromptTimeout.aspx") >0)
                {
					//Ajaxefy: Hide working dialog as we are done with the callback
					HideWorkingDialog();
					//Ajaxefy: If there is an error/session timeout, we postback to show relevant error/relogin page
					document.forms[0].submit();
                }
                else
                {
					eval(text);
                }
            }
            if(bShowDialog)
            {
                HideWorkingDialog();
            }
    }
    x.send('');
}
function addOption(text,value,CSS )
{

selectbox=document.getElementById("NCM_UWNM_Navigator_NC_MainNav_TG0_DrpField");
var optn = document.createElement("OPTION");
optn.text = text;
optn.value = value;
//optn.className ="SearchCommonlField;
optn.className =CSS;
selectbox.options.add(optn);
}

function populateBoFields(Values)
{
    var splitOptionNameValueCSS=Values.split('#FieldListEnd#');
    var FieldOptionValueCSS=splitOptionNameValueCSS[1].split('#FieldValueEnd#');
    var optionText = splitOptionNameValueCSS[0].split('<listItem>');
    var optionValue= FieldOptionValueCSS[0].split('<listValue>');
    var optionCSS=FieldOptionValueCSS[1].split('<listCSS>');
    
    for(i = 0; i < optionText.length; i++)
    {
        if(optionText[i]!="")    
        addOption(optionText[i],optionValue[i],optionCSS[i]);

	}

}
function parseServerResponse(text)
{
     //Kulsum 12/1/8/2007 Supporting AJAX for Search by Field in Navigator (previous ajax did a post back - fixing this)            
     //first get any special scripts to execute indicated by tags <!--START:jsscript--> & <!--END:jsscript-->
     var startTag = "/*<!--START:jsscript-->*/";
     var endTag = "/*<!--END:jsscript-->*/";
     var allScripts = text;
     var script = "";
     var startIndex = allScripts.indexOf(startTag);
     var endIndex = -1;
     var continueParsing = true;
     while (startIndex > -1)
     {
        endIndex = allScripts.indexOf(endTag);
        script =  allScripts.substring(startIndex+startTag.length, endIndex);
        if(script.indexOf("PromptTimeout.aspx") >0)
        {
            continueParsing = false;
	        //Ajaxefy: Hide working dialog as we are done with the callback
	        HideWorkingDialog();
	        //Ajaxefy: If there is an error/session timeout, we postback to show relevant error/relogin page
	        document.forms[0].submit();
        }
        else if (script.indexOf("*ERROR*") >0)
        {
            continueParsing = false;
	        eval(script);
        }
        else
        {
           eval(script); 
        }
        allScripts = allScripts.substr(endIndex+endTag.length-1, allScripts.length);
        startIndex = allScripts.indexOf(startTag);
     }
     if (continueParsing)
     {
        //continue parsing
         var newFormHTML = text;
         var oldFormHTML = document.forms[0];
         document.getElementById("MainDIV").innerHTML = "";
         document.getElementById("MainDIV").innerHTML = newFormHTML.substring(newFormHTML.indexOf("<!--start:ajax-->"), newFormHTML.indexOf("<!--end:ajax-->"));
         var expr1 = /<script(.|\n)*?javascript(.|\n)*?>(.|\n|\r\n)*?<\/script>/ig;
         var expr2 = /<script(.|\n)*?javascript(.|\n)*?>((.|\n|\r\n)*)?<\/script>/im;
         var inLineScript = null;
         var inLineScriptCombined = "";
         var allInfragisticScripts = newFormHTML.substring(newFormHTML.indexOf("<!-- infragistic:scripts-->"), newFormHTML.indexOf("</form>")).match(expr1);
         if (allInfragisticScripts)
         {
            for (var i = 0; i < allInfragisticScripts.length; i++)
            {
                inLineScript = allInfragisticScripts[i].match(expr2);
                if(inLineScript[3])
                {
                    try
	                {
                    eval(inLineScript[3].substring(inLineScript[3].indexOf("<!--")+4, inLineScript[3].indexOf("-->")));
                         
                    }
                    catch(e)
                    {
                    }
                }
            }
         }
     }
     
}
 
function AjaxPostBack ()
{
        var retVal=true;
    	var target = arguments[0];
		var arg = arguments[1];
		if (arg.split(":").length == 2 && target == "MBMain")
			{
			    var menuItemID = target + "_" + arg.split("_")[1];
			    var mItemObject = document.getElementById(menuItemID);
			    var mItemTitle = (mItemObject.getAttribute("title") != null) ? mItemObject.getAttribute("title").toLowerCase() : "";
			    switch(mItemTitle)
			    {
			        case "file":
			            var text = igmenu_getItemById(arg.split(":")[0]).getText().replace(/ /g,"").toLowerCase();
			            if ( text.indexOf("gotorecord") != -1 || text == "save" )
			                AjaxLibrary_FireEvent(target,arg, clientCallBackFunction = function (result, clientCallBackArg) {return true;} ,null,true,true);			            
			            else
			                retVal=window._igtbl_doPostBackOld(target,arg);
			            break;
			        case "edit":
			        case "view":
			            retVal=window._igtbl_doPostBackOld(target,arg);
			            break;
     			    case "tools":
			        case "quickactions":
			        case "searching":
			        case "help":
			            AjaxLibrary_FireEvent(target,arg, clientCallBackFunction = function (result, clientCallBackArg) {return true;} ,null,true,true);
			            break;
			        default:
			    }
			} //navigator
			else if (arg.split(":").length == 2 && target == "NCM:UWNM:Navigator:NC:MainNav" )
			{
			    var ctrlId = arg.split(":")[0];
			    var ctrl = document.getElementById(ctrlId);
			    if (ctrl && ctrl.getAttribute("title") && ctrl.getAttribute("title")!= "")
			    {
			        if (ctrl.getAttribute("title").toLowerCase().indexOf("new") != -1) {
			            retVal=window._igtbl_doPostBackOld(target,arg);
			        }
			        else {
			            AjaxLibrary_FireEvent(target,arg, clientCallBackFunction = function (result, clientCallBackArg) {return true;} ,null,true,true);
			        }
			    }
			    else
			        retVal=window._igtbl_doPostBackOld(target,arg);
			    
			}
			else if (target == "NCM:UWNM")
		        AjaxLibrary_FireEvent(target,arg, clientCallBackFunction = function (result, clientCallBackArg) {return true;} ,null,true,true);
		    else
            	retVal=window._igtbl_doPostBackOld(target,arg);
}
// To handle Client Side Required field Validations
function ToolBarBtnClick(oToolbar, oItem, oEvent)
{
        if (oItem.Tag == "Save" || oItem.Tag == SaveText)
        {
                var form = document.forms["Form1"]
                var strMessage = PleaseEnter;
                var intErrCnt = 0;
                for(var intCtr = 0; intCtr <= (form.elements.length - 5); ++intCtr)
                {
                        var temp = form.elements[intCtr];
                        if(temp.RequiredFld == "yes" || temp.RequiredFld == YesText)
                        {
                                ErrMsgID = temp.id + "ErrLbl";

                                if (temp.value == "")
                                {
                                        strMessage = strMessage + "\n- " + temp.FieldName;
                                        if (eval(document.getElementById(ErrMsgID)) != null)
                                                document.getElementById(ErrMsgID).style.visibility = "";
                                        intErrCnt++;
                                }
                                else
                                {
                                        if (eval(document.getElementById(ErrMsgID)) != null)
                                                document.getElementById(ErrMsgID).style.visibility = "hidden";
                                }
                        }
                        if(temp.DateFld == "yes" || temp.DateFld == YesText)
                        {
                                ErrMsgID = temp.id + "ErrLbl";
                                
                                var date = new Date(temp.value);
                                var year = date.getFullYear();
                                if (year < 1753)
                                {
                                        strMessage = strMessage + "\n- " + temp.FieldName +"-- year should be later than 1753";
                                        if (eval(document.getElementById(ErrMsgID)) != null)
                                                document.getElementById(ErrMsgID).style.visibility = "";
                                        intErrCnt++;
                                }
                                else
                                {
                                        if (eval(document.getElementById(ErrMsgID)) != null)
                                                document.getElementById(ErrMsgID).style.visibility = "hidden";
                                }
                        }
                }
                if (intErrCnt > 0)
                {
                        alert(strMessage);
                        oEvent.cancelPostBack=true;
                }
        }
        
        if (oItem.Tag == "Delete" || oItem.Tag == DeleteText)
        {
                //Kulsum 10/31/2007 Modal not working in firefox
                //show confirm delete dialog
                
                /*var sFeatures = "dialogHeight:140px; dialogWidth:330px; status=no";
                var url = encodeURI("ConfirmDeleteDialog.aspx");
                retval = window.showModalDialog(url, "", sFeatures);
                //Kulsum 10/24/200 Only if user selected 'Yes' set post back
                if ( retval == "Yes" )
                {
                    oEvent.cancelPostBack = false;
                }
                else
                {
                    oEvent.cancelPostBack = true;
                }*/

                if (confirmAction())
                {
                    oEvent.cancelPostBack = false;
                }
                else
                {
                   
                    oEvent.cancelPostBack = true;
                }
        }       
       return true;
}


// To handle Client Side Required field Validations on Secondary windows
function Save()
{
        var form = document.forms["Form1"]
        var strMessage = PleaseEnter;
        var intErrCnt = 0;
        for(var intCtr = 0; intCtr <= (form.elements.length - 5); ++intCtr)
        {
                var temp = form.elements[intCtr];
                if(temp.RequiredFld == "yes" || temp.RequiredFld == YesText)
                {
                        ErrMsgID = temp.id + "ErrLbl";

                        if (temp.value == "")
                        {
                                strMessage = strMessage + "\n- " + temp.FieldName;
                                if (eval(document.getElementById(ErrMsgID)) != null)
                                        document.getElementById(ErrMsgID).style.visibility = "";
                                intErrCnt++;
                        }
                        else
                        {
                                if (eval(document.getElementById(ErrMsgID)) != null)
                                        document.getElementById(ErrMsgID).style.visibility = "hidden";
                        }
                }
                if(temp.DateFld == "yes" || temp.DateFld == YesText)
                {
                                ErrMsgID = temp.id + "ErrLbl";
                                
                                var date = new Date(temp.value);
                                var year = date.getFullYear();
                                if (year < 1753)
                                {
                                        strMessage = strMessage + "\n- " + temp.FieldName +"-- year should be later than 1753";
                                        if (eval(document.getElementById(ErrMsgID)) != null)
                                                document.getElementById(ErrMsgID).style.visibility = "";
                                        intErrCnt++;
                                }
                                else
                                {
                                        if (eval(document.getElementById(ErrMsgID)) != null)
                                                document.getElementById(ErrMsgID).style.visibility = "hidden";
                                }
                }
        }
        if (intErrCnt > 0)
        {
                alert(strMessage);
                return false
        }
        else
        {
               bClose=false;     
               return true;
        }
}
//Ajaxefy:Sundar:06/07/2006 to get the javascript calender.
function ShowNewCalendar(format, evt)
{
		var btnId;
		var sourceElement = GetEventElement(evt);
        if(sourceElement)
        {
			btnId = sourceElement.id;
		}

        var pos = btnId.lastIndexOf("btn_");
        var suffix = btnId.substr(pos + 4);
        var prefix = btnId.substr(0, btnId.length - suffix.length - 4);
        var tbId = prefix + suffix + "_t";
        var tb = document.getElementById(tbId); 
        //Ajaxefy:Sundar.07/18/2006 To fix the editable business object page
        if(tb==null)
        {
				var tempId=tbId
                tbId="igtxt"+tbId.replace('_t',"");
                tb=document.getElementById(tbId); 
                if(tb==null)
                {
                 //Ajaxefy2:Sundar For dashboard search issue
					tbId="igtxt"+tempId.substring(0,tempId.length-2);
					tb=document.getElementById(tbId);
                }
        
        }
        showCalendar(tbId,format);
        
        //These lines are commented out because these trigger post back in firefox
        //tb.fireEvent("onfocus", evt);
        //tb.fireEvent("onblur", evt);
        
        evt.cancelBubble = true;
        evt.returnValue = false;
}
function ShowCalendar()
{
        var btnId;
        var evt = null;
        var sourceElement = GetEventElement(evt);
        if(sourceElement)
        {
			btnId = sourceElement.id;
		}

        var pos = btnId.lastIndexOf("btn_");
        var suffix = btnId.substr(pos + 4);
        var prefix = btnId.substr(0, btnId.length - suffix.length - 4);
        var tbId = prefix + suffix + "_t";
        var tb = document.getElementById(tbId);
        var url = encodeURI("WebCalendar.aspx?SelectedDateTime=" + tb.value);
        var sFeatures = "dialogWidth:280px; dialogHeight:360px; help:no; status:no" 
        
        // show modal dialog box and collect its return value
        var retVal = window.showModalDialog(url, "", sFeatures);

        // check if user closed the dialog without selecting any value
        if (tb != null && retVal != null && retVal != "")
        {
        
                tb.fireEvent("onfocus", evt);
                tb.value = retVal;
                tb.fireEvent("onblur", evt);
        }
}

function CloseCalendar()
{
        var btnId;
        var evt = null;
        var sourceElement = GetEventElement(evt);
        if(sourceElement)
        {
			btnId = sourceElement.id;
		}

        if (btnId == "m_btnOK")
        {
        
                top.returnValue = document.getElementById("m_lblCalendar").innerText;
        }
        else
        {
                top.returnValue = "";
        }
        
        // close the dialog window
        window.close();
}

function SimpleSearchGridRowActivated(grName)
{

        var pnlResultLayout = document.getElementById("pnlRL");
        var pnlResultDisplayGrid = document.getElementById("pnlRDG");
        var pnlResultDisplayForm = document.getElementById("pnlRDF");
        var ifrmDetails = document.getElementById("frmDetails");
        
        
        if (pnlResultLayout != null)
        {
          if (ifrmDetails.offsetHeight == 0){
                // 12/06/2007 maxim Issue 68386 Web. Firefox Browser  displays doubled scroll bars  for “Search results” page
                pnlResultDisplayGrid.style.height = "440px";
                pnlResultDisplayForm.style.height = "0px";
                ifrmDetails.style.height = "0px";
                //Sundar: After sorting, first object selection is not working properly
				 var gridName = "grdDisplayxWebGrid";
                //var grid = igtbl_getGridById(gridName);
                var activeRow = igtbl_getActiveRow(gridName);
                try
                {
                    if(activeRow!=undefined)
                     {
                         activeRow.setSelected(true);
                     }
                }
                catch(err)
                {
                }
          }
          else
              ShowDetails();
        }
}

// This function will be called when clicking on the "Details" button in the SimpleSearchResult.aspx
function ShowDetails()
{
        var gridName = "grdDisplayxWebGrid";
        var grid = igtbl_getGridById(gridName);
        var activeRow = igtbl_getActiveRow(gridName);

        if (activeRow == null)
        {
                if ((grid != null) && (grid.Rows.length > 0))
                {
                        activeRow = grid.Rows.getRow(0);
                        activeRow.activate();
                        activeRow.setSelected(true);
                }
        }

        if (activeRow != null)
        {
                var pnlResultLayout = document.getElementById("pnlRL");
                var pnlResultDisplayGrid = document.getElementById("pnlRDG");
                var pnlResultDisplayForm = document.getElementById("pnlRDF");
                var ifrmDetails = document.getElementById("frmDetails");
                
                //maxim egorov 10/04/2007 Issue 71869: Custom form name support
                var SearchResultFormName = document.getElementById("m_strResultFormName");
                if(SearchResultFormName)
                     m_strResultFormName = SearchResultFormName.value;
                
                if (pnlResultLayout != null)
                {
                        // 12/06/2007 maxim Issue 68386 Web. Firefox Browser  displays doubled scroll bars  for “Search results” page
                        pnlResultDisplayGrid.style.height = "200px";
                        if (document.getElementById("grdDisplayxWebGrid_div"))
                            document.getElementById("grdDisplayxWebGrid_div").style.height = "200px";
                        pnlResultDisplayForm.style.height = ifrmDetails.style.height = pnlResultLayout.offsetHeight - pnlResultDisplayGrid.offsetHeight + "px";
                }
        
                var colCount = activeRow.cells.length;
                var objectType = activeRow.getCell(colCount - 1).getValue();
                if (objectType == null)
                        objectType = activeRow.getCell(colCount - 2).getValue();
                var recId = activeRow.getCell(colCount - 3).getValue();

                if (objectType.length == 0 || recId.length == 0)
                        return;
                //maxim egorov 10/04/2007 Issue 71869: Custom form name support
                var pageUrl = "SearchResultDetails.aspx?DefaultObjectType=" + objectType + "&BusObjRecId=" + recId + "" + (m_strResultFormName!=null?"&SearchResultFormName="+m_strResultFormName:"");
                document.all.frmDetails.src = encodeURI(pageUrl);
        }
}


// This function will be called when clicking on the "Select" button in the SimpleSearchResult.aspx
function SelectTablevalidationResults()
{ 
        var gridName = "SearchListGrid";
        var grid = igtbl_getGridById(gridName);
        var activeRow = igtbl_getActiveRow(gridName);
        //var searchType = document.getElementById("m_strType").value;
        //43351-bug fix-sessiontimeout
        var fromPage = document.getElementById("FromPage").value;
       // var linkField = document.getElementById("m_strLinkField").value;

        if (activeRow == null)
        {
                if ((grid != null) && (grid.Rows.length > 0))
                {
                        activeRow = grid.Rows.getRow(0);
                        activeRow.activate();
                        activeRow.setSelected(true);
                }
        }
        if (activeRow != null)
        {
                var objectTypes = new Array();
                var recIds = new Array();
                var selectedTotal = -1;
                var i = 0;
                var ObjectType=document.forms[0].action.substring(document.forms[0].action.indexOf("ObjectType")+11);
                for (i = 0; i < grid.Rows.length; i++)
                {
                        var row = grid.Rows.getRow(i);
                        if (row.getSelected() == true)
                        {
                         var selectedTotal =i;
								
                               /* var colCount = row.cells.length;
                                
                                var recId = row.getCell(colCount - 3).getValue();

                                var objectType = row.getCell(colCount - 1).getValue();
                                if (objectType == null)
                                        objectType = row.getCell(colCount - 2).getValue();
                                        
                                if (objectType.length == 0 || recId.length == 0)
                                        continue;
                                
                                selectedTotal++;
                                objectTypes[selectedTotal] = objectType;
                                recIds[selectedTotal] = recId;*/
                        }
                }
               
                if (selectedTotal!= -1)
                {
                
                       // var strObjectTypes = objectTypes.join("|");
                       // var strRecIds = recIds.join("|");
						var mtxtSearch=document.getElementById("m_txtSearch").value;
                        var pageUrl = "TableValidationDlg.aspx?FromPage=" + fromPage +"&mtxtSearch="+mtxtSearch+"&ObjectType="+ObjectType+"&type=select&SelectedIndex="+selectedTotal ;
                        document.location.href = encodeURI(pageUrl);
                }
        }
} 


// This function will be called when clicking on the "Select" button in the SimpleSearchResult.aspx
function SelectResults()
{ 
        var gridName = "grdDisplayxWebGrid";
        var grid = igtbl_getGridById(gridName);
        var activeRow = igtbl_getActiveRow(gridName);
        var searchType = document.getElementById("m_strType").value;
        var fromPage = document.getElementById("m_strFromPage").value;
        var linkField = document.getElementById("m_strLinkField").value;
        /*08/26/2008 maxim egorov 77815 -  6.1.1 English - For Ravinder.  Associated Item Selectors do not work in Self Service. Nothing happens with them.  (Associated embedded relationships)*/
        var m_RelationshipName = "";
        var oRelationshipName = document.getElementById("m_AssociatedRelationshipName");
        if(oRelationshipName)
            m_RelationshipName = oRelationshipName.value;
        if (activeRow == null)
        {
                if ((grid != null) && (grid.Rows.length > 0))
                {
                        activeRow = grid.Rows.getRow(0);
                        activeRow.activate();
                        activeRow.setSelected(true);
                }
        }

        if (activeRow != null)
        {
                var objectTypes = new Array();
                var recIds = new Array();
                var selectedTotal = -1;
                var i = 0;
                
                for (i = 0; i < grid.Rows.length; i++)
                {
                        var row = grid.Rows.getRow(i);
                        if (row.getSelected() == true)
                        {
                                var colCount = row.cells.length;
                                
                                var recId = row.getCell(colCount - 3).getValue();

                                var objectType = row.getCell(colCount - 1).getValue();
                                if (objectType == null)
                                        objectType = row.getCell(colCount - 2).getValue();
                                        
                                if (objectType.length == 0 || recId.length == 0)
                                        continue;
                                
                                selectedTotal++;
                                objectTypes[selectedTotal] = objectType;
                                recIds[selectedTotal] = recId;
                        }
                }
                
                if (selectedTotal >= 0)
                {
                        var strObjectTypes = objectTypes.join("|");
                        var strRecIds = recIds.join("|");
                        /*08/26/2008 maxim egorov 77815 -  6.1.1 English - For Ravinder.  Associated Item Selectors do not work in Self Service. Nothing happens with them.  (Associated embedded relationships)*/
                        var pageUrl = "SearchResultSelect.aspx?DefaultObjectType=" + strObjectTypes + "&BusObjRecId=" + strRecIds + "&Type=" + searchType + "&FromPage=" + fromPage + "&LinkField=" + linkField + "&AssociatedRelationshipName=" + m_RelationshipName;
                        //var pageUrl = "SearchResultSelect.aspx?DefaultObjectType=" + strObjectTypes + "&BusObjRecId=" + strRecIds + "&Type=" + searchType + "&FromPage=" + fromPage + "&LinkField=" + linkField;
                        //Sundar:06/12/2007:68572: Double cllcking of link causes error in HEAT Integration 
                        document.getElementById("btnSelect").disabled=true;
                        document.location.href = encodeURI(pageUrl);
                        
                }
        }
} 
//Ivan Balyko 08.03.07
// This function will be called when clicking on the "Select" button in the ValidatedSearchPromptForm.aspx
function SelectVSPResults()
{
        var gridName = "grdDisplayxSearchListGrid";
        var grid = igtbl_getGridById(gridName);
        var activeRow = igtbl_getActiveRow(gridName);

        if (activeRow == null)
        {
                if ((grid != null) && (grid.Rows.length > 0))
                {
                        activeRow = grid.Rows.getRow(0);
                        activeRow.activate();
                        activeRow.setSelected(true);
                }
        }

        if (activeRow != null)
        {

                var param;
                var selectedTotal = -1;
                var i = 0;

                for (i = 0; i < grid.Rows.length; i++)
                {
                        var row = grid.Rows.getRow(i);
                        if (row.getSelected() == true)
                        {
                                var colCount = row.cells.length;
                                //Kulsum 11/26/2007 Issue 67863 The recId + object info (Tag) is present in this position. The row has a tag attribute as well but we are not able to get its value in javascript - hence the need for this additional column
                                var tag = row.getCell(colCount - 3).getValue();
                                if (tag == 0)
                                        continue;
                                
                                selectedTotal++;
                                param = tag;
                        }
                }
                
                if (selectedTotal >= 0)
                {
                        var pageUrl = "SearchParameterPromptForm.aspx?isback=false&param="+param;
                        window.close();
                        parent.opener.location.href = encodeURI(pageUrl);
                        
                }
        }
}


function SimpleSearchGridDoubleClicked(gridName, cellId)
{
        var row = igtbl_getRowById(cellId);
        var searchType = document.getElementById("m_strType").value;
        var fromPage = document.getElementById("m_strFromPage").value;
        var linkField = document.getElementById("m_strLinkField").value;

        if (row != null)
        {
                var colCount = row.cells.length;
                var objectType = row.getCell(colCount - 1).getValue();
                if (objectType == null)
                        objectType = row.getCell(colCount - 2).getValue();
                var recId = row.getCell(colCount - 3).getValue();

                if (objectType.length == 0 || recId.length == 0)
                        return;

                var pageUrl = "SearchResultSelect.aspx?DefaultObjectType=" + objectType + "&BusObjRecId=" + recId + "&Type=" + searchType + "&FromPage=" + fromPage + "&LinkField=" + linkField;
                document.getElementById("frmDetails").src = encodeURI(pageUrl);
                window.setTimeout(100);    
        }
}

function doHourglass()
{
        document.body.style.cursor = 'wait';
        SaveContentPanelSize();
        SaveBrowserTimeOffset();
}

function undoHourglass()
{
        document.body.style.cursor = 'default';
        SaveContentPanelSize();
        SaveBrowserTimeOffset();
}

function SaveContentPanelSize()
{
        var sizeInput = document.getElementById("CONTENT_PANEL_SIZE");
        if( sizeInput == null ) return;
        
        var busObPanel = document.getElementById("BusObPanel");
        if( busObPanel != null )
        {
                //Post back from Query.aspx
                sizeInput.value = busObPanel.clientHeight + ";" + busObPanel.clientWidth;
                //Ivan.Balyko 11/15/07 65026 - Dashboards are not proportionally decrease after resized Browser page
                //Sundar:Performance fix. This makes FF window to flickr
               setPaneSize();
        }
        else
        {
        //Sundar:01/22/2008 #70315-document.body.clientheight is not working properly in IE7
        //Some problem in autologin/IE6/IE7
                //First navigation from SelectRole.aspx
                if (navigator.appName == "Netscape")
                {
                
                   sizeInput.value = (document.body.clientHeight-128) + ";" + (document.body.clientWidth - 242);
                }
                else if (navigator.appName == "Microsoft Internet Explorer")
                {
                
                    var docClientHeight=document.body.clientHeight;
                    if (document.documentElement.clientHeight>document.body.clientHeight)
                    docClientHeight=document.documentElement.clientHeight;
                                        
                    sizeInput.value = (docClientHeight) + ";" + (document.body.clientWidth - 225);
                }
                else
                {
                    sizeInput.value = (document.body.clientHeight-110) + ";" + (document.body.clientWidth - 230);
                }
        }
}

//bihari:11/03/2006 version : 1.36.6.2
function SaveAttachmentOnSelect(ctrl)
{
	var btnCtrl = ctrl.previousSibling;
	//sundar02/16/2007:OTC wants message div while uploading file
	ShowUploadingDialog()
	if (btnCtrl) btnCtrl.click();
}

//Timedisplay:bihari:11/03/2006
function SaveBrowserTimeOffset()
{
    var timeOffsetInput = document.getElementById("BROWSER_TIME_OFFSET");
	if( timeOffsetInput == null ) return;
	
	d = new Date();
	timeOffsetInput.value = d.getTimezoneOffset();
}
function cancelSupportWindow()
{
    bClose=false;
}
//bihari:11/06/2005 disabled the enter key event
function DisableEnterKey(obj, evt)
{   
	var sourceElement = GetEventElement(evt);
    if (evt.keyCode == 13 && sourceElement.type != 'textarea')
    {
        evt.returnValue = false; 
        evt.cancel = true;
    }
}

//Kulsum:11/20/2007 Issue:67484 Disable the backspace button
function DisableBackspaceKey()
{
     if (typeof window.event == 'undefined')
     {
       // in firefox, onkeypress is triggered before onkeydown (if we dont capture backspace in onkeypress & wait for onkeydown then it is too late & the backspace event is already triggered)
       document.onkeypress = DisableBackspace; 
     
     }
     else
     {
       // in non firefox browsers, the backspace event is triggered onkeydown
       document.onkeydown = DisableBackspace;
     }
}

//Disable backspace key event, if the source that triggered it is not a text input control
function DisableBackspace(e)
{
    var key = window.event ? event.keyCode : e.keyCode; //get the keycode depending on browser
    if (key == 8) //backspace key
    {
        var sourceElement = GetEventElement(e);
        if (sourceElement.type == 'text' || sourceElement.type == 'textarea' || sourceElement.type == 'file')
        {
           //backspace is allowed for text, textarea & file elements
           return key;
        }
        else 
        {
            //depending on browser take action so as to not trigger the backspace event
            if (window.event)
                event.returnValue = false; 
            else
                e.preventDefault();
        }
    }//end of check for backspace key
}

//sundar02/16/2007:OTC wants message div while uploading file
function ShowUploadingDialog()
{
	try
	{
		document.getElementById("UpLoadingIndicator").style.visibility="visible";
		document.getElementById("UpLoadingIndicator").style.display="";
		
	}
	catch (e)
	{
	}
}

//Get Event element for different browsers
function GetEventElement(evt)
{
	var sourceElement;
	if(!evt && window.event)
	{
		evt = window.event;
	}
	if(evt.srcElement)
	{
		sourceElement = evt.srcElement;
	}
	else
	{
		sourceElement = evt.target;
	}
	
	return sourceElement;
}

//Check if window is closing
function IsWindowClosing(evt)
{
    var returnValue = false;
	if(!evt && window.event)
	{
		evt = window.event;
	}

    if(evt.clientX < 0 && evt.clientY < 0 )
    {
		returnValue = true;
	}
	
	return returnValue;
}


//maxim 07/26/2007 check textbox for dirty
function checkIsObjectDirty(objectArray, type) 
{
    for(var i = 0; i < objectArray.length; i++)
        if (objectArray[i].type == type && objectArray[i].getAttribute("dirtyFlag") == "true") 
            return true;
    return false;
}
//var oldPostBack = window.__doPostBack;
var __doOldPostBack = null;
function CanUseNewAJAX(command,OverrideCallback)
{
    if ((command =="Search.OpenSearch" && OverrideCallback == "false")
        || (command =="Search.NavigatorFieldSearch" && OverrideCallback == "false")
        )
    {
        return false;
    }
    else if(command == "Search.List" || command =="Search.OpenSearch"||command == "AutoTask.List" || command == "Application.GoTo"  || command =="Dashboard.List"  ||command == "Extensions.ExecuteCode" || command == "Search.OpenPromptSearch" || command == "Search.NavigatorFieldSearch" || command == "Application.ClickToTalk" || command == "Application.UpdatePassword")
    {
        return true;
    }
    else
    {
        return false;
    }
     
} 
function NavigatorItemSelected(oListBar, oItem , oEvent)
{
    var OverrideCallback=document.getElementById("OverrideCallback").value;
    var useNewAJAX=document.getElementById("UseNewAJAX").value;
    var CommandDefKey = oItem.Key;
    var idDef = oItem.TargetFrame;
    //Sundar: This is to instruct presentation layer to set currently selected object context for quickaction
	if((useNewAJAX=="true") && (OverrideCallback=="true")  )
    {
        document.getElementById("CurrentAction").value="SetContextObject";
    }
    var bShowDialog=true;
    if(useNewAJAX=="true" && oListBar.Id == "MainNav" )
    {
        if(CanUseNewAJAX(CommandDefKey,OverrideCallback))
        {
            if(OverrideCallback=="false")
            {
                AjaxLibrary_FireEvent("","",clientCallBackFunction = function (result, clientCallBackArg) {return true;} ,null,true,true);
                bShowDialog=false;
            }
            AjaxHandler_FireEvent(CommandDefKey, oItem.txt, idDef,bShowDialog);
            oEvent.cancel=true;;
	        
        }
    }
}
function DoSimpleSearch(event)
{
   if(event.keyCode == 13)
   {
        NavigatorSearchButtonClick();
   }
}

var selectBOMessage;
var selectFieldMessage;
function SearchFieldFilled(BOName,Field)
{
    if(BOName=="")
    {
        alert(selectBOMessage);
        return false;
    }
    else if(BOName.indexOf('#MRUList#') != '-1')
    {
        return true;
    }
    else if(Field=="")
    {
        alert(selectFieldMessage);
        return false;
    }
    else
    {
        return true;
    }
}
//Kulsum 12/18/2007 Supporting AJAX for Search by Field in Navigator (previous ajax did a post back - fixing this) 
//Modified by sundar 02/14/2008 to change controls to dropdown list           
function NavigatorSearchButtonClick(commandDefKey, searchValue, searchBO, searchField)
{

    var DrpBO=document.getElementById("NCM_UWNM_Navigator_NC_MainNav_TG0_DrpSearchObject");
    var DrpField=document.getElementById("NCM_UWNM_Navigator_NC_MainNav_TG0_DrpField");
    commandDefKey="Search.NavigatorFieldSearch";
    var searchBO=DrpBO.options[DrpBO.selectedIndex].value;
    var searchField="";
    if(DrpField.selectedIndex!=-1)
    {
        searchField=DrpField.options[DrpField.selectedIndex].value;
    }
    document.getElementById("HdnSearchBOName").value=searchBO;
    document.getElementById("HdnSearchFieldName").value=searchField;
    if(!SearchFieldFilled(searchBO,searchField))
        return;
    var searchValue=document.getElementById("NCM_UWNM_Navigator_NC_MainNav_TG0_SearchValue").value;
    var overrideCallback = document.getElementById("OverrideCallback").value;
    var useNewAJAX = document.getElementById("UseNewAJAX").value;
    var bShowDialog=true;
    
    if(useNewAJAX=="true" && CanUseNewAJAX(commandDefKey,overrideCallback) )
    {
        var idDef = searchBO+'&'+searchField;
        AjaxHandler_FireEvent(commandDefKey, searchValue, idDef, bShowDialog);
        return false;
    }
    else
    {
        __doPostBack('NCM$UWNM$Navigator$NC$MainNav$TG0$GoSearchControl','');
        return true;
        
    }
}


function NavigatorAfterItemSelected(oListBar, oItem , oEvent) 
{
    oItem.setSelected(false);
    if (oListBar.elemState)
        oListBar.elemState.value = "";
}

function MenuItemClick(mn, id)
{

	var OverrideCallback=document.getElementById("OverrideCallback").value;
    var useNewAJAX=document.getElementById("UseNewAJAX").value;
    var item = igmenu_getItemById(id);
    var tag = item.getTag();
  //Sundar:102659 Performance fix Avoid reloading of dashboard during file-->new object creation.
  //This needs to be implemented for navigator quickaction also
  if((item.getTargetUrl()!=null)&&(item.getTargetUrl().indexOf("BusinessObjectServices.New")!='-1') && (useNewAJAX=="true") && (OverrideCallback=="true"))
  {
      document.getElementById("CurrentAction").value="BusinessObjectServices.New";
      document.getElementById("CurrentObject").value=item.getTargetUrl().replace('BusinessObjectServices.New,','');
      document.getElementById("CurrentObjectID").value=0;
      item.setTargetUrl(null);
  }
	
    if (item.getTargetFrame() != null)
    {
        var id = item.getTargetFrame().split(",")[0];
        var command = item.getTargetFrame().split(",")[1];
        //Sundar: This is to instruct presentation layer to set currently selected object context for quickaction
	    if(useNewAJAX=="true" && OverrideCallback=="true" && command=="AutoTask.List" )
        {
            document.getElementById("CurrentAction").value="SetContextObject";
        }
        var bShowDialog=true;
        item.setTargetUrl("");
        var RemoveTargetURL=true;
        if(useNewAJAX=="true"  )
        {
            if(CanUseNewAJAX(command,OverrideCallback))
            {
                RemoveTargetURL=false;
                if(OverrideCallback=="false")
                {
                
                    AjaxLibrary_FireEvent("","",clientCallBackFunction = function (result, clientCallBackArg) {return true;} ,null,true,true);
                    bShowDialog=false;
                }
                
                //08/15/2008 maxim egorov 78134 -  6.1.1 English - Web.Expected "Search Problem" page doesn’t appear if "Link Incident to a Problem" was selected from the Incident menu
                //AjaxHandler_FireEvent(command, id, "menu",bShowDialog);
                AjaxHandler_FireEvent(command, tag, "menu", bShowDialog);
                /*06/24/2008 maxim egorov 76644 - 6.1.1 English -  Web Client – Duplicated Search Center Windows*/
	        	item.WebMenu.NeedPostBack = false;
	        	item.WebMenu.CancelPostBack = true;
            }
        }
        if(RemoveTargetURL)
        {
            item.setTargetUrl(null);
            item.setTargetFrame("");
            // 10/05/2007 maxim  File Close in Firefox does nothing
            if (item && item.Element)
                item.Element.removeAttribute("igUrl");
        }
        
     }
     if (tag == "Save" || tag == SaveText)   
     {
            var form = document.forms["Form1"]
            var strMessage = PleaseEnter;
            var intErrCnt = 0;
            for(var intCtr = 0; intCtr <= (form.elements.length - 5); ++intCtr)
            {
                    var temp = form.elements[intCtr];
                    if(temp.RequiredFld == "yes" || temp.RequiredFld == YesText)
                    {
                            ErrMsgID = temp.id + "ErrLbl";

                            if (temp.value == "")
                            {
                                    strMessage = strMessage + "\n- " + temp.FieldName;
                                    if (eval(document.getElementById(ErrMsgID)) != null)
                                            document.getElementById(ErrMsgID).style.visibility = "";
                                    intErrCnt++;
                            }
                            else
                            {
                                    if (eval(document.getElementById(ErrMsgID)) != null)
                                            document.getElementById(ErrMsgID).style.visibility = "hidden";
                            }
                    }
                    if(temp.DateFld == "yes" || temp.DateFld == YesText)
                    {
                            ErrMsgID = temp.id + "ErrLbl";
                            
                            var date = new Date(temp.value);
                            var year = date.getFullYear();
                            if (year < 1753)
                            {
                                    strMessage = strMessage + "\n- " + temp.FieldName +"-- year should be later than 1753";
                                    if (eval(document.getElementById(ErrMsgID)) != null)
                                            document.getElementById(ErrMsgID).style.visibility = "";
                                    intErrCnt++;
                            }
                            else
                            {
                                    if (eval(document.getElementById(ErrMsgID)) != null)
                                            document.getElementById(ErrMsgID).style.visibility = "hidden";
                            }
                    }
            }
            if (intErrCnt > 0)
            {
                    alert(strMessage);
                    return true;
            }
         }
         else
         {
            return false;
         }
     }




//maxim egorov 01/24/2008 set height for panels EditAssociatedBusinessObject.aspx
function frs_EditWindow(wnd) {
   var _alphaPanel,_omegaPanel,_pnlBtn, _isInit, _isIE, _splitRegion;;
   var _correct = 5, _window,_contentDiv;
   this._init=function(w) {
        this._window = w;
       _pnlBtn = this.getElement("pnlBtn");
       var basePanel = this.getElement("PNL");
       var layoutRegion = getChildNodeByCSSName(basePanel, "LayoutRegion"); //layout
       if (!layoutRegion) return;
        _splitRegion = getChildNodeByCSSName(layoutRegion, "SplitRegion"); //split region
       _alphaPanel =  getChildNodeByCSSName(_splitRegion, "AlphaPanel"); //alpha panel
       _omegaPanel =  getChildNodeByCSSName(_splitRegion, "OmegaPanel"); //omega panel
       if (_omegaPanel && _pnlBtn && _alphaPanel) {
            _pnlBtn.style.width = "100%";
            basePanel.style.width = "100%";
            _alphaPanel.style.width = "100%";
            _splitRegion.style.width = "100%";
            _omegaPanel.style.width = "100%";
			//10/09/2008 maxim egorov issue 83383: When resize edit business object on popup scrolls on omega panel are not stretching.
            var pnlTop = document.getElementById("PNLTOP");
            if (pnlTop)
            {
                pnlTop.style.height = "100%";
            }
            _isInit = true;
            if (document.all)
                this._isIE = true;
            else
                this._isIE = false;
            this.setSize();
            this.AfterResponse();
            window.addEventListener? addEventListener('resize',this.windowResize  ,false): attachEvent('onresize',this.windowResize);
            window.frsEditWindow = this;
        }
   }
   
   this.AfterResponse = function (oWebTab, oTab, oEvent) {
        if (window.location.href.indexOf("EditAssociatedBusinessObject.aspx") == -1)
            return;
        var prCell = this.getElement("PresentationCell");
        if (!prCell) return;
        var tables = prCell.getElementsByTagName("table");
        if (tables && tables.length >= 2) {
            var gridTable = tables[1];
            var div = gridTable.parentNode;
            if (div.tagName.toLowerCase() == "div" && (div.id.lastIndexOf("_div") != -1)) {
                this._contentDiv = div;
                this.setContentSize();
            }
        }
   }
   this.getElement=function(id) {
      return document.getElementById(id);
   }   
   this.getOmegaPanel=function() {
      return _omegaPanel;
   }
   this.getAlphaPanel=function() {
    return _alphaPanel;
   }
   this.getButtonPanel=function() {
        return _pnlBtn;
   }
   this.getTabsPanel = function() {
        var tables = this.getOmegaPanel().getElementsByTagName("table");
        if (tables.length > 0 && tables[0].className == "UltrawebTab")
            return tables[0].rows[0];
   }
   this.getToolbarPanel = function(){
        var prCell = this.getElement("PresentationCell");
        return prCell.parentNode.previousSibling;
   }
   this.setSize=function() {
        if (_isInit) {
            var size = document.body.clientHeight - (this.getButtonPanel().offsetHeight + this.getAlphaPanel().offsetHeight + _correct);
            if (size && size > 0){
                this.getOmegaPanel().style.height = size + "px"; 
                //ivan.balyko 06/05/08 issues 75258,75353
                var aTables = this.getOmegaPanel().getElementsByTagName("table");
                for (j =0; j < aTables.length; j++){
                var oTable = aTables[j];
                    if(oTable.className =="FusionGridListView"){
                       window.setOmegaEBOGridSize(oTable.previousSibling.name);
                    }
                }
            }
        }
   }
   this.setContentSize=function(){
        if (_isInit) {
            if (this.getTabsPanel() &&  this.getToolbarPanel()) {
                var size = parseInt(this.getOmegaPanel().style.height) - (this.getTabsPanel().offsetHeight + this.getToolbarPanel().offsetHeight +5);
                if (size && size > 0)
                    this._contentDiv.style.height = size + "px"; 
            }
        }
   }
   this.windowResize=function(evt) {
        if (this._contentDiv) {
            if (_isInit) {
                    this.setSize();
                    this.setContentSize();
               }
        }
		 //10/09/2008 maxim egorov issue 83383: When resize edit business object on popup scrolls on omega panel are not stretching.
        if ( _splitRegion && _pnlBtn )
        {
            _splitRegion.style.height = parseInt(document.body.offsetHeight - _pnlBtn.offsetHeight) + "px";
        }
    }
    
    this._init(wnd);
}

function AfterAsyncResponse(oWebTab, oTab, oEvent)
{
    //window.status="";  
    if (window.location.href.indexOf("EditAssociatedBusinessObject.aspx") == -1)
        return;
    if (window.frsEditWindow) 
        window.frsEditWindow.AfterResponse();
    
}


function BeforeSelectedTabChange(oWebTab, oTab, oEvent) 
{
    //07/09/2007 maxim desc: when close popup window without creating record tabs suddenly stop showing the its content.
    var activeTab = oWebTab.getSelectedTab();
    if (activeTab)
    {
        var oSels = activeTab.elemDiv.getElementsByTagName("SELECT");
        for (var i = 0; i < oSels.length; i++)
            if (oSels[i].getAttribute("ddListBanEvent"))
                oSels[i].selectedIndex = 0;
    }

    var form = document.getElementById(AjaxLibrary_FormID);
    //07/13/2007 maxim - WebStablizationIssues  after simple searching tab change is not working
     //if (form.action == "Query.aspx?Search=Search")
    if ((form.action.split("Query.aspx?Search=Search").length == 2) && (form.action.split("Query.aspx?Search=Search")[1] == ""))
        form.action = "Query.aspx";
    AjaxLibrary_SetHiddenInputValue(form, "__EVENTTARGET", oWebTab.uniqueId);
    AjaxLibrary_SetHiddenInputValue(form, "__EVENTARGUMENT", oTab.index); 
}

//maxim 07/26/2007 check textbox for dirty
function onChangeEventHandler(ctrl, evt)
{
    /*var dirtyFlag = "false";
    var defaultValue = ctrl.defaultValue;//ctrl.getAttribute("oldValue");
    if (ctrl.value != defaultValue)
        dirtyFlag = "true";
    else 
        dirtyFlag = "false";
    ctrl.setAttribute("dirtyFlag", dirtyFlag);*/
    return true;
}

//maxim 07/30/2007 check DateTime controls for dirty on client side
function onChangeEventHandlerForDate(obj, val, evt)
{
    //onChangeEventHandler(obj.elemValue, evt);
}

function clickHandler(obj, val, evt)
{
}

if (typeof(FRS) == "undefined")
{
    var FRS = {};
}
if (FRS.Common == null)
{
    FRS.Common = {};
    
    FRS.Common.browserWindowSize = function()
    {
        var screenX, screenY;
        if (self.innerHeight)
        {
            screenX = self.innerWidth;
            screenY = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight)
        {
            screenX = document.documentElement.clientWidth;
            screenY = document.documentElement.clientHeight;
        }
        else if (document.body)
        {
            screenX = document.body.clientWidth;
            screenY = document.body.clientHeight;
        }
        return {x: screenX, y: screenY};
    }
        
    FRS.Common.elementContainsElement = function(container, element)
    {
        while (element)
        {
            if (element == container)
                return true;
            element = element.parentNode;
        }
    }
    
    FRS.Common.bindAsEventHandler = function(object, method)
    {
        var moreStaticArgs=Array.prototype.slice.call(arguments, 2);
        return function(e) 
        {
            var moreHandlerArgs=Array.prototype.slice.call(arguments, 1);
            return method.apply(object, [e || window.event].concat(moreHandlerArgs).concat(moreStaticArgs));
        }
    }
        
    FRS.Common.attachHandler = function(obj, ev, handler)
    {
        if (obj.attachEvent)
        {
            obj.attachEvent("on"+ev, handler);
        }
        else if (obj.addEventListener)
        {
            obj.addEventListener(ev, handler, false);
        }
    }
    
    FRS.Common.detachHandler = function(obj, ev, handler)
    {
        if (obj.detachEvent)
        {
            obj.detachEvent("on"+ev, handler);
        }
        else if (obj.removeEventListener)
        {
            obj.removeEventListener(ev, handler, false);
        }    
    }
    FRS.Common.stopEvent = function(e)
    {
        if (e && e.preventDefault)
        {
            e.preventDefault();
            e.stopPropagation();
        }
        else
        {
            if (!e)
            {
                e = window.event;
            }
            e.cancelBubble = true;
            e.returnValue = false;
        }
    }
              
}


//This function confirms that the delete operation can proceed
function confirmAction(args)
{
	var result;
	
	//Arguments are not paseed from the main object toolbar only from child object toolbar
	if (args)
	{
		var operation = getQueryVariable(args, "Operation");
		var message  = '';
		if (operation == "Delete"){
			var objectName = '';

			//try to get the object which is going to be deleted
			if (args!= null && args.length > 0)
				objectName = getQueryVariable(args, "ObjectName");
	        
			if (objectName != null && objectName.length > 0)
			{
				//we got a valid object name; now get the global delete message for an object & replace the object name
				message = new String(ObjectDeleteConfirmation);
				message = message.replace('$$(ObjectType)$$', objectName);
	            
			}
			else
			{
				//we dont have an object; get the generic global delete message 
				message = GeneralDeleteConfirmation;
			}
		}
		else if (operation == "Unlink"){
			var objectName = '';
			var parentObjectName = '';

			//try to get the object which is going to be deleted and its parent object name
			if (args!= null && args.length > 0){
				objectName = getQueryVariable(args, "ObjectName");
				parentObjectName = getQueryVariable(args, "ParentObjectName");
			}
	        
			if (objectName.length > 0 && parentObjectName.length > 0)
			{
				//get the global unlink message for an object & replace the object name
				message = new String(ObjectUnlinkConfirmation);
				message = message.replace('$$(ObjectType)$$', objectName);           
				message = message.replace('$$(ParentObjectType)$$', parentObjectName);           
			}
		}
		//show the confirm dialog to the user
		result = confirm(message)
    }
    else
    {
		result = true;
    }
    return result;
  
}

//function returns the value of the key from the input query
// example query --> 'operation=delete&object=incident' key--> 'object'. Returns incident
function getQueryVariable(query, key) 
{ 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) 
    { 
        var pair = vars[i].split("="); 
        if (pair[0] == key) 
        { 
            return pair[1];  
        } 
    } 
    return '';
} 

// Leonid Efimov 11-14-2007. Issue 67199: Unexpected Problem Board behavior
// Functions for UltraWebListBar
function onNavBoardItemLoaded(obj){
    var item = obj.Element;
    var unnecessaryNodes = new Array();
    var index = 0;
    var nodeImage = null;
    var nodeDiv = null;
    for (var i = 0; i < item.childNodes.length; i++){
        if (item.childNodes[i].nodeType != null &&
            item.childNodes[i].nodeType == '3'){
            unnecessaryNodes[index++] = item.childNodes[i];
        }
        else if (nodeImage == null &&
            item.childNodes[i].nodeType != null &&
            item.childNodes[i].nodeType == '1'&&
            item.childNodes[i].nodeName.toUpperCase() == 'IMG'){
            nodeImage = item.childNodes[i];
        }
        else if (nodeDiv == null &&
            item.childNodes[i].nodeType != null &&
            item.childNodes[i].nodeType == '1'&&
            item.childNodes[i].nodeName.toUpperCase() == 'DIV'){
            nodeDiv = item.childNodes[i];
        }
    }
    for (var i = 0; i < unnecessaryNodes.length; i++){
        item.removeChild(unnecessaryNodes[i]);
    }
    if (nodeImage != null && nodeDiv != null){
        nodeDiv.innerHTML = "&nbsp;" + nodeDiv.innerHTML;
        nodeDiv.insertBefore(nodeImage, nodeDiv.childNodes[0]);
    }
}
function onNavBoardListInitialized(listbar){
    for (var i = 0; i < listbar.Groups.length; i++){
        var group = listbar.Groups[i];
        for (var j = 0; j < group.Items.length; j++){
            onNavBoardItemLoaded(group.Items[j]);
        }        
    }
}
function onNavBoardItemActivated(obj, evt){
    var item = obj;
    while(item.o == null){
        if (item.parentNode != null){
            item = item.parentNode;
        }
        else{
            break;
        }
    }
    if (item.o != null){
        item.o.Group.Control.doPost(item.o.Id + ":ItemActivated");
    }
    evt = evt || window.event;
    evt.cancelBubble = true;
}
function onNavBoardItemSelected(listbar, obj, evt){
    var item = obj.Element;
    var nodeDiv = null;
    if (item.childNodes.length == 1)
    {
        nodeDiv = item.childNodes[0];
        for (var i = 0; i < nodeDiv.childNodes.length; i++){
            if (nodeDiv.childNodes[i].type != null &&
                nodeDiv.childNodes[i].type == 'hidden'){
                var toolbarStatus = nodeDiv.childNodes[i].value;
                if (navigatorToolbar != null){
                    updateNavBoardToolbars(toolbarStatus);
                }
            }
        }
    }
}
function updateNavBoardToolbars(statusinfo){
    var btnInfo = statusinfo.split(';');
    for (var i = 0; i < btnInfo.length; i++){
        var btnInfoProps = btnInfo[i].split('&');
        var btnName = null;
        var btnEnabled = null;
        var btnImage = null;
        for (var j = 0; j < btnInfoProps.length; j++){
            var btnInfoProp = btnInfoProps[j].split('=');            
            if (btnInfoProp.length == 2){
                if (btnInfoProp[0] == 'name'){
                    btnName = btnInfoProp[1];
                }
                else if (btnInfoProp[0] == 'enabled'){
                    btnEnabled = btnInfoProp[1];
                }
                else if (btnInfoProp[0] == 'image'){
                    btnImage = btnInfoProp[1];
                }
            }
        }
        updateNavBoardToolbar(navigatorToolbar, btnName, btnEnabled, btnImage);
        updateNavBoardToolbar(navigatorToolbar2, btnName, btnEnabled, btnImage);
    }
}
function updateNavBoardToolbar(toolbar, itemkey, enabled, image){
    if (toolbar != null){
        var item = toolbar.Items.fromKey(itemkey);
        if (item != null){
            if (enabled == 'true' || enabled == 'false'){
                item.setEnabled(enabled == 'true' ? true : false);
            }
            if (image != ''){
                item.DefaultImage = item.DefaultImage.substr(0, item.DefaultImage.lastIndexOf('/')+1) + image;
                item.HoverImage = item.HoverImage.substr(0, item.HoverImage.lastIndexOf('/')+1) + image;
                item.SelectedImage = item.SelectedImage.substr(0, item.SelectedImage.lastIndexOf('/')+1) + image;
                item.DisabledImage = item.DisabledImage.substr(0, item.DisabledImage.lastIndexOf('/')+1) + image;
                for (var i = 0; i < item.Element.childNodes.length; i++){
                    if (item.Element.childNodes[i].tagName != null &&
                        item.Element.childNodes[i].tagName.toUpperCase() == 'IMG'){
                        if (!item.getEnabled()){
                            item.Element.childNodes[i].src = item.DisabledImage;
                        }
                        else if (item.getSelected()){
                            item.Element.childNodes[i].src = item.SelectedImage;
                        }
                        else{
                            item.Element.childNodes[i].src = item.DefaultImage;
                        }
                    }
                }
            }
        }
    }
}

var navigatorToolbar = null;
var navigatorToolbar2 = null;
function onNavBoardToolbarInitialized(toolbar){
    if (navigatorToolbar != null && navigatorToolbar2 != null){ // i.e. it is a regular form refresh and app should clear toolbars 
        navigatorToolbar = null;
        navigatorToolbar2 = null;
    }
    if (navigatorToolbar == null){
        navigatorToolbar = toolbar;
    }
    else if (navigatorToolbar != null && navigatorToolbar2 == null){
        navigatorToolbar2 = toolbar;
    }
}

// Leonid Efimov 01-23-2008. Issue 61697: User session was not closed after closing of browser
function CheckWindowClosed(evt)
{
    var do_new_close_check = true; // Set to false in order to switch off close check
    if (do_new_close_check)
    {
		var params = self.location.pathname;
		params = params.substr(params.lastIndexOf("/") + 1).toUpperCase(); // send current page name
		if (params == 'SIMPLESEARCHRESULT.ASPX')
		{
			params = params + '&' + document.getElementById("m_strFromPage").value; // send fromPage param too
		}
		else if (params == 'EDITASSOCIATEDBUSINESSOBJECT.ASPX' || params == 'TASKFORM.ASPX' ||
				 params == 'TABLEVALIDATIONDLG.ASPX' || params == 'VALIDATEDSEARCHPROMPTFORM.ASPX')
		{
			params = params + '&' + pageID; // send fromPage param too
		}
		else if (params == 'CHECKCLOSEDCONTAINER.HTM')
		{
		    //Kulsum 09/10/2008 Rearchitecturing CheckClosed mechanism so that the check closed window is not opened for every unload
		    //for now if the current location is CHECKCLOSEDCONTAINER.HTM then the page to clean up is Query.aspx
			params = "QUERY.ASPX";
		}
		//It is vital that window is opened using top.window.open. This is because if the window is opened by CHECKCLOSEDCONTAINER.HTM, window.opener in CheckClosed.htm will be null always in firefox. Hence the session will always be cleaned up.
		var spyWin = top.window.open('CheckClosed.htm?' + params,'CheckClosed','width=10,height=10,left=2000,top=0,dialog=yes');
		if(spyWin)
		{
			spyWin.blur();
		}
    }
}

//Sundar:09/12/2008 To replace search popup menu
var isMenu 	= false ;
var menuSelObj = null ;
var overpopupmenu = false;
function mouseSelect(e)
{
	

	if( isMenu )
	{
		if( overpopupmenu == false )
		{
			isMenu = false ;
			overpopupmenu = false;
			document.getElementById('popupmenudiv').className="PopupMenuItemClass";
			document.getElementById('popupmenudiv').style.display = "none" ;
			
			return true ;
		}
		return true ;
	}
		
	//10/06/2008 maxim egorov issue: FireFox all input text area doesn't getting focus.
	if (!document.all)	
	{
	    return true;
	}
	
	return false;
	
}
function setStyle(id,style)
{

    document.getElementById(id).className= style;

}

document.onmousedown 	= mouseSelect;
