var closetimer=0;
var xGPos;
var yGPos;
var sActFld;
var bTextSelected = "false";
var sActFldName;
var sSelText;
var nCurRow = 0;
var nSelStart = 0;
var nSelEnd = 0;
var bDisableField = "false";
var bDisbledFieldLst="";
var sGlyphImgSrc="";
var sTblScrlLst ="";
var PrevScrollTop = new Array();;
var PrevScrollLeft = new Array();;

NavigateRows = function(evt) {
    var objFrame =  top.frames['TargetContent'];
    var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
    var objSrc;
    if (ns6)
        objSrc= evt.target    
    else
        objSrc = event.srcElement;
    var EvCode = getKeyCode(evt);
    var bUpKey = false;
    var bDownKey = false;
    var bEnterKey = false;
    if (EvCode == "38")
        bUpKey = true;
    else if (EvCode == "40")
        bDownKey = true;
    else if (EvCode == "13")
        bEnterKey = true;
    else if (EvCode == "27")
        {
        HideContextMenu("FldCtxMenu");
        stopCTXEvent(evt);
        return;
        }
    else
        return;
    var sRowClass = objSrc.className;
    var objDiv= objFrame.document.getElementById("FldCtxMenu").firstChild;
    var tBody;
    if (ns6)
        tBody =   objDiv.childNodes[1];  
    else
        tBody = objDiv.childNodes[0];

    var nMenuCnt = tBody.childNodes.length;
    var objActRow;
    if (nCurRow != 0)
        {
        var objSrc =tBody.childNodes[nCurRow].childNodes[1].childNodes[0];
        var sCurRowCls = objSrc.className;

        if (bEnterKey)
            {
            if (objSrc.tagName == "A")
                {
                eval(objSrc.href);
                HideContextMenu("FldCtxMenu");
                }
            return; 
            }

        if (sRowClass.indexOf("HighLt")!= -1)
            {
            sRowClass = sRowClass.substr(0,sRowClass.indexOf("HighLt")-1);
            }
        objSrc.style.backgroundColor ="white";
        objSrc.className = sRowClass;

        if (nCurRow == nMenuCnt && bDownKey)
            {
            nActRow = 1;
            objActRow =tBody.childNodes[nActRow].childNodes[1].childNodes[0];
            }
        else if (nCurRow == 1 && bUpKey)
            {
            nActRow = nMenuCnt-1;
            objActRow =tBody.childNodes[nActRow].childNodes[1].childNodes[0];
            }
        else
            {
            var nTmpRow,nIncr;
            if (bUpKey)
            nIncr = - 1;
            else if (bDownKey)
            nIncr = 1;
            var nTmpRow = nCurRow + nIncr;
            if (nTmpRow == nMenuCnt)
            nTmpRow = 1;

            while  (true)
                {
                if (ns6)
                    {
                    var nLen = tBody.childNodes[nTmpRow].childNodes[1].childNodes.length;
                    objActRow = tBody.childNodes[nTmpRow].childNodes[1].childNodes[nLen-1];
                    }
                else
                    objActRow = tBody.childNodes[nTmpRow].childNodes[1].childNodes[0];
                var sActRowCls = objActRow.className;
                if ((sActRowCls == "PTCTXLnk") ||(sActRowCls == "PTCTXBRWLnk")||(sActRowCls == "PTCTXBRWLnkDis"))
                    {
                    nActRow = nTmpRow;
                    break;
                    }
                nTmpRow = nTmpRow + nIncr;  
                }
            }
        }
    else
        {
        if (bUpKey)
        nActRow = nMenuCnt-1;
        else if (bDownKey)
        nActRow = 1;
        objActRow =tBody.childNodes[nActRow].childNodes[1].childNodes[0];
        }

    objActRow.focus();
    objActRow.className += " HighLt";
    objActRow.style.backgroundColor = "#f9fea8";
    nCurRow = nActRow;
    stopCTXEvent(evt);
    }
    
doGetCaretPosition = function(InputField) {
var objFrame =  top.frames['TargetContent'];
	var oField = objFrame.document.getElementById(InputField);
     var iCaretPos = 0;

     if (document.selection) {  //IE support
       oField.focus ();
       var oSel = document.selection.createRange ();
       oSel.moveStart ('character', -oField.value.length);
       iCaretPos = oSel.text.length;
     }

     
     else if (oField.selectionStart || oField.selectionStart == '0')// Firefox support
       iCaretPos = oField.selectionStart;

     return (iCaretPos);
   }
   
IsReadOnlyTextSelected = function() {

var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;

    var txt = '';
    if (document.selection)
    {
    if (document.selection.type == "None")
        return false;
    else
        return true;
    }
    else if (window.getSelection)
    {
        txt = window.getSelection();
    }
    else if (document.getSelection)
    {
        txt = document.getSelection();
    }

if (txt == '')
    return false;
else
    return true;
}

SelectText = function(InputField)
{
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
if (!ns6)
{
    var cp = InputField.createTextRange();
    cp.findText(sSelText);
    cp.select();
}
else
{
if (InputField.tagName.toUpperCase() == "SPAN")
{
var selection, range, doc, win;
if ((doc = InputField.ownerDocument) && (win = doc.defaultView) && typeof
win.getSelection != 'undefined' && typeof doc.createRange != 'undefined'
&& (selection = window.getSelection()) && typeof
selection.removeAllRanges != 'undefined') {
    range = doc.createRange();
    range.selectNode(InputField);
    selection.removeAllRanges();
    selection.addRange(range);
}
else

    InputField.setSelectionRange(nSelStart, nSelEnd);
}
}
}

isInputTextSelected = function(field)
{
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
if (!ns6)
{
if (IsReadOnlyTextSelected())
    {
    sSelText = document.selection.createRange().text;
    return true;
    }
else
    return false;
}
else
{
    if(field.setSelectionRange ){
    var nStart = field.selectionStartselectionEnd;
    var nEnd = field.selectionEnd;
    if (nStart != nEnd)
        {
        nSelStart = nStart;
        nSelEnd = nEnd;
        return true;
        }
    else
        return false;
    }
}
}
addEvent = function(el, evname, func) {
	if (el.attachEvent) { // IE
		el.attachEvent("on" + evname, func);
	} else if (el.addEventListener) { // Gecko / W3C
		el.addEventListener(evname, func, true);
	}
}	 
getAbsolutePos = function(el) {
	var x = 0, y = 0;	
	var e = el;	
	while(e) {
		x += e.offsetLeft || 0;
		y += e.offsetTop || 0;
		e = e.offsetParent;
	}
	return {x:x, y:y};
}

showGlyph = function (el, obj,p) {

	var s = obj.style;
	obj.className ="GlyphImg";
	p.x += el.offsetWidth;
    if ((el.type == "text" ||el.type == "password"|| el.tagName == "TD") && p.x>11)
	    p.x -= 10;
	else if (el.type == "select-one" && p.x>27)
	    p.x -= 28;
	s.left = p.x + "px";
	s.top = p.y + "px";

}

ShowCtxMenu = function(xPos,yPos,glyphMenuID)
{

var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
glyphmenuitem = objFrame.document.getElementById(glyphMenuID);
if (glyphmenuitem == null) return;
	var viewportHeight = ptCommonObj.getViewportHeight();            // viewable height
	var viewportWidth = ptCommonObj.getViewportWidth();              // viewable width

var glyphStyle = glyphmenuitem.style;

if (objFrame.document.getElementById(glyphMenuID).offsetHeight + yPos - objFrame.document.body.scrollTop > viewportHeight)
	yPos = yPos - objFrame.document.getElementById(glyphMenuID).offsetHeight;

var diff = AddScrollBar(yPos,objFrame,glyphMenuID);

glyphStyle.left = xPos + "px";
if(diff > 0) {    
    glyphStyle.top = yPos + diff + "px";
    var orgHeight = objFrame.document.getElementById(glyphMenuID).offsetHeight;    
    glyphStyle.height = orgHeight - diff + "px";
    glyphStyle.overflow="scroll";
    }
else 
    glyphStyle.top = yPos + "px";
glyphStyle.visibility = 'visible';
}

AddScrollBar = function(yPos,objFrame,glyphMenuID) {
var glyphmenuitem = objFrame.document.getElementById(glyphMenuID);
var viewporttop = parseInt(document.getElementsByTagName("body")[0].scrollTop,10);
var diff= viewporttop - yPos;
if(diff > 0)   
  return diff;
else 
  return 0;
}

CreateContextMenu = function(SrcEvt) {
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
var nGPos = SrcEvt.indexOf("Glyph_");
if (nGPos != -1)
    {
    var sGlyphSrc = SrcEvt.substring(nGPos+6,SrcEvt.length);
    SrcEvt = sGlyphSrc;
    }

var nPos = SrcEvt.lastIndexOf("$");
var szBase = SrcEvt;
if (nPos != -1)
{

if (nPos == SrcEvt.length-1)
{
szBase = SrcEvt;
szBase += "$ctxmenu";
}
else
{
szBase = SrcEvt.substring(0,nPos);
szBase += "$ctxmenu";
szBase += SrcEvt.substring(nPos,SrcEvt.length);
}
}
else
    szBase = SrcEvt+"$ctxmenu";
var el = objFrame.document.getElementById(SrcEvt);
if (el.tagName.toUpperCase() == "SPAN")
    {
    if (IsReadOnlyTextSelected())
        bTextSelected = "true";
    else
        bTextSelected = "false";
    }
else if (el.tagName.toUpperCase() == "INPUT")
    {
        if (isInputTextSelected(el))
        bTextSelected = "true";
    else
        bTextSelected = "false";
    }
submitAction_win0(document.win0,szBase);
if (MOpopupObj_win0)
	MOpopupObj_win0.StopPopup("true");
}

onDocumentMouseDown = function(evt) {
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
var SrcEvt="";
var xCoOrd,yCoOrd;

if (ns6)
    {
	if (evt.which == 1) return;
    xCoOrd = evt.clientX+objFrame.document.body.scrollLeft;
    yCoOrd = evt.clientY+objFrame.document.body.scrollTop;
    } 
else
    {
	if (event.button == 1) return;
    if (objFrame.event.x != 0 && objFrame.event.y != 0)
        {
        xCoOrd = objFrame.event.clientX+objFrame.document.body.scrollLeft;
        yCoOrd = objFrame.event.clientY+objFrame.document.body.scrollTop;
        }
    else
        {
        xCoOrd = objFrame.event.screenX;
        yCoOrd = objFrame.event.screenY - objFrame.screenTop;
        }
    }
    var elem = objFrame.document.elementFromPoint(xCoOrd, yCoOrd);
    if (bDisbledFieldLst != "" && elem!= null)
        {
        var CurElem = "^"+elem.id+"^";
        var nPos = bDisbledFieldLst.indexOf(CurElem);
        if (nPos != "-1")
            {
            objFrame.document.oncontextmenu =new Function ("return false");
            xGPos = xCoOrd;
            yGPos = yCoOrd;
            CreateContextMenu(elem.id);
            }
        }
}

onBuildContextMenu = function(evt) {
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;

var xPos,yPos;

var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
var SrcEvt="";

if (ns6)
    {
	if (evt.which == 1) return;
    SrcEvt = evt.target.id;
    xPos = evt.clientX+objFrame.document.body.scrollLeft;
    yPos = evt.clientY+objFrame.document.body.scrollTop;
    } 
else
    {
	if (event.button == 1) return;
    SrcEvt = objFrame.event.srcElement.id;
    xPos = objFrame.event.clientX+objFrame.document.body.scrollLeft;
    yPos = objFrame.event.clientY+objFrame.document.body.scrollTop;
    }
objFrame.document.oncontextmenu =new Function ("return false");
xGPos = xPos;
yGPos = yPos;
CreateContextMenu(SrcEvt);

}

CloseContextMenuHandler  = function(evt) {
if (closetimer) 
{
	clearTimeout(closetimer);
	closetimer = 0;
}

CloseContextMenu("FldCtxMenu");
}

onFlipCursor = function(evt)
{
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
var srcEvtElement;
var SrcEvtID="";

if (ns6)
    srcEvtElement = evt.target;
else
    srcEvtElement = objFrame.event.srcElement;
if (srcEvtElement.nodeName == "SPAN")
{
SrcEvtID = srcEvtElement.id;
objFrame.document.getElementById(SrcEvtID).style.cursor = "pointer";
}
}

HideContextMenu = function(menuID)
{
nCurRow = 0;
if ((typeof(menuID) == 'undefined') || (menuID == 'undefined')) return;
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
glyphmenuitem = objFrame.document.getElementById(menuID);
if (glyphmenuitem == null) return;
ptEvent.remove(glyphmenuitem, "mouseover", ClearContextMenuTimer);
ptEvent.remove(glyphmenuitem, "mouseout", CloseContextMenuHandler);
ptEvent.remove(document, "keydown", NavigateRows);

if (glyphmenuitem != null)
    {
	var parent = objFrame.document.getElementsByTagName("body")[0];
	parent.removeChild(glyphmenuitem);	
    }

if (closetimer)
    {
    clearTimeout(closetimer); 
    closetimer = null;
    }
objFrame.document.oncontextmenu="return true";
sActFldName = "";
}

KeyDownHandler = function(evt)
{
if (isAltKey(evt) && getKeyCode(evt) == 186)
    {
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
objFrame.document.oncontextmenu =new Function ("return false");
    var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
    var SrcEvt="";

    if (ns6)
        SrcEvt = evt.target.id;
    else
        SrcEvt = objFrame.event.srcElement.id;
	var objEvt = objFrame.document.getElementById(SrcEvt);
    EvtPos = getAbsolutePos(objEvt);
    var nCaretPos=0;
    if (objEvt.tagName.toUpperCase() == "INPUT")
        nCaretPos = doGetCaretPosition(SrcEvt);
    xGPos = EvtPos.x+nCaretPos;
    yGPos = EvtPos.y;

    CreateContextMenu(SrcEvt);
    }
}

CloseContextMenu = function(glyphMenuID)
{

var MenuId;
MenuId = "HideContextMenu('";
MenuId += glyphMenuID;
MenuId += "')";
closetimer = setTimeout(MenuId, 300);
}

ClearContextMenuTimer= function()
{
if (closetimer)
    {
    clearTimeout(closetimer); 
    closetimer = null;
    }
}

refreshGlyph = function (strLst,nScrlLeft,nScrlTop,nPrevScrollLeft,nPrevScrollTop) {
HideGlyph(strLst);
var nScrlTopVal = 0;
if (nPrevScrollTop < nScrlTop)
    nScrlTopVal =  -nScrlTop;
else
    {
    if (nScrlTop == 0)
        nScrlTopVal = nScrlTop;
    else
	nScrlTopVal =  - nScrlTop ;
    }
var nScrlLeftVal = 0;
if (nPrevScrollTop < nScrlLeft)
    nScrlLeftVal =  -nScrlLeft;
else
    {
    if (nScrlLeft == 0)
        nScrlLeftVal = nScrlLeft;
    else
		nScrlLeftVal =  - nScrlLeft ;
    }
    
GenerateGlyph (sGlyphImgSrc,strLst,nScrlLeftVal,nScrlTopVal);
}

onGridScroll = function (evt) {

var objFrame =  top.frames['TargetContent'];
var e_out;
var ie_var = "srcElement";
var moz_var = "target";
var prop_var = "onScroll";
// "target" for Mozilla, Netscape, Firefox et al. ; "srcElement" for IE
evt[moz_var] ? e_out = evt[moz_var][prop_var] : e_out = evt[ie_var][prop_var];
var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
var nScrlTop = 0;
var nScrlLeft = 0;
var srcElem;
if (!ns6) 
{
    srcElem = evt.srcElement.id;
    nScrlTop = evt.srcElement.scrollTop;
    nScrlLeft = evt.srcElement.scrollLeft;
}
else
{
    srcElem = evt.target.id;
    nScrlTop = evt.target.scrollTop;
    nScrlLeft = evt.target.scrollLeft;
}

var nPrevScrollTop = PrevScrollTop[srcElem];
var nPrevScrollLeft = PrevScrollLeft[srcElem];

PrevScrollTop[srcElem] = nScrlTop;
PrevScrollLeft[srcElem] = nScrlLeft;
refreshGlyph(e_out,nScrlLeft,nScrlTop,nPrevScrollLeft,nPrevScrollTop);

}

GenerateGlyphImage = function(elID, nTabIndex,strImgSrc,strGlyph,nScrlLeftVal,nScrlTopVal) {
var nPos = elID.indexOf("~");
var sGridFld="";
var grHeight = 0;
var grWidth = 0;
if (nPos != -1)
	{
	sGridFld = elID.substring(nPos+1,elID.length-1)
	elID = elID.substring(0,nPos);
	}
var objFrame =  top.frames['TargetContent'];
var el = objFrame.document.getElementById(elID);
if (el == null) return false;
if (el.tagName.toUpperCase() == "SPAN")
    {
    var sHTML = el.innerHTML;
    sHTML = sHTML.replace(/&nbsp;/gi,"");
    if (sHTML.length == 0) return;
    }
if (!((el.tagName.toUpperCase() == "SPAN")||((el.tagName.toUpperCase() == "INPUT") && (el.type == "text" ||el.type == "password")) ||(el.tagName.toUpperCase() == "SELECT")))
    return;
if (sGridFld != "" && (el.tagName.toUpperCase() == "SPAN"))
    el = el.offsetParent;
    
if (sGridFld != "" && sGridFld.indexOf("$scroll")!= -1)
	{
	var sParentGdFld = sGridFld;
	var elG = objFrame.document.getElementById(sParentGdFld);
	if (elG == null)
	    {
	    sParentGdFld = sParentGdFld.replace("$scroll","$scrollm");
	    elG = objFrame.document.getElementById(sParentGdFld);
	    }
	if (elG == null)
	    {
	    sParentGdFld = sParentGdFld.replace("$scrollm","$scrolli");
	    elG = objFrame.document.getElementById(sParentGdFld);
	    }
	if (elG == null) return false;

	var pParentGridPos = getAbsolutePos(elG);
	grHeight = pParentGridPos.y + elG.offsetHeight;
	grWidth = pParentGridPos.x + elG.offsetWidth;
	}

var parent = objFrame.document.getElementsByTagName("body")[0];

var glyphImgId = "Glyph_"+elID;
if (objFrame == null) return false;
var elImg = objFrame.document.getElementById(glyphImgId);
if (elImg!=null) 
parent.removeChild(elImg);

if ((typeof(nScrlTopVal) == 'undefined') || (nScrlTopVal == 'undefined'))
    nScrlTopVal = 0;
else if (nScrlTopVal == 0)
    nScrlTopVal = PrevScrollTop["divgbr"+sGridFld];
if ((typeof(nScrlTopVal) == 'undefined') || (nScrlTopVal == 'undefined'))
    nScrlTopVal = 0;    
if ((typeof(nScrlLeftVal) == 'undefined') || (nScrlLeftVal == 'undefined'))
    nScrlLeftVal = 0;
else if (nScrlLeftVal == 0)
    nScrlLeftVal = PrevScrollLeft["divgbr"+sGridFld];
if ((typeof(nScrlLeftVal) == 'undefined') || (nScrlLeftVal == 'undefined'))
    nScrlLeftVal = 0;
    
var pElementPos = getAbsolutePos(el);
if ((pElementPos.x<=0 ) || (pElementPos.y <= 0)) return false; 
pElementPos.y += nScrlTopVal;
pElementPos.x += nScrlLeftVal;
var sTmpGrdFld = "divgbr"+sGridFld;
if ((el.offsetParent != null) && (el.offsetParent.offsetParent != null))
    sTmpGrdFld = el.offsetParent.offsetParent.id;
sTmpGrdFld = sTmpGrdFld.replace("$scroll","");
if (sTblScrlLst.indexOf("^"+sGridFld) == -1)
    {
    sTblScrlLst += "^";
    sTblScrlLst += sGridFld;
	elG = objFrame.document.getElementById(sTmpGrdFld);
	if (elG == null)
	    {
	    sTmpGrdFld = "divgbl"+sGridFld;
	    elG = objFrame.document.getElementById(sTmpGrdFld);
	    }
    var flist = strGlyph.split("^");
    var sGrdFldLst="";
    for (j = 1; j < flist.length; j++) { // start from array index 1 (as index 0 is blank)
        if (flist[j].indexOf("~"+sGridFld+"~") != -1)
		    {
		    sGrdFldLst += "^";
            sGrdFldLst += flist[j];
		    }
        }
	if (elG != null){
    ptEvent.add(elG, "scroll", onGridScroll);
    elG.onScroll = sGrdFldLst;}
	}
	
if ((grHeight > 0 &&(pElementPos.y >= grHeight || pElementPos.y+el.offsetHeight >= grHeight)) ||
    (grWidth > 0 &&(pElementPos.x >= grWidth || pElementPos.x+el.offsetWidth >= grWidth)))

     return false;

elG = objFrame.document.getElementById(sTmpGrdFld);
var pGridPos = getAbsolutePos(elG);
if ((pElementPos.y < pGridPos.y) || (pElementPos.x+el.offsetWidth < pGridPos.x))return false;

var GlImgObj = objFrame.document.createElement("img");
GlImgObj.src = strImgSrc;
GlImgObj.tabIndex=nTabIndex;
GlImgObj.id=glyphImgId;

parent.appendChild(GlImgObj);

if (el.getAttribute("disabled"))
    {
    bDisableField = "true";
    bDisbledFieldLst+="^";
    bDisbledFieldLst+=elID;
    bDisbledFieldLst+="^";
    ptEvent.add(document, "mousedown", onDocumentMouseDown);
        
    }
ptEvent.add(GlImgObj, "mousedown", onBuildContextMenu);
ptEvent.add(el, "mousedown", onBuildContextMenu);
ptEvent.add(el, "mouseout", CloseContextMenuHandler);
ptEvent.add(el, "keyup", KeyDownHandler);
ptEvent.add(GlImgObj, "keyup", KeyDownHandler);
ptEvent.add(GlImgObj, "mouseover", onFlipCursor);
ptEvent.add(el, "mouseover", onFlipCursor);
ptEvent.add(parent, "unload", onUnload);

showGlyph(el,GlImgObj,pElementPos);
}

HideGlyph = function(strGlyph)
    {
    var objFrame =  top.frames['TargetContent'];
	if (objFrame == null) return;
	var parent = objFrame.document.getElementsByTagName("body")[0];
    var el = strGlyph.split("^");
    for(i = 1;i<el.length;i++)
        {
        var sFld = el[i];
        var nPos = sFld.indexOf("$$");
        var nTabIndex;
        var sFldName = sFld;
        if (nPos != -1)
            sFldName = sFld.substring(0,nPos);
        nPos = sFldName.indexOf("~");
        if (nPos != -1)
            sFldName = sFld.substring(0,nPos);
        var glyphImgId = "Glyph_"+sFldName;
        var elID = objFrame.document.getElementById(sFldName);
        var glElm = objFrame.document.getElementById(glyphImgId);
        if (glElm != null)
            parent.removeChild(glElm);	
        }
    }

GenerateGlyph = function(strImgSrc,strGlyph,nScrlLeftVal,nScrlTopVal)
    {

    sGlyphImgSrc = strImgSrc;
    sTblScrlLst =""
    var el = strGlyph.split("^");
    for(i = 1;i<el.length;i++)
        {
        var sFld = el[i];
        var nPos = sFld.lastIndexOf("$$");
        var nTabIndex;
        var sFldName = sFld;
        if (nPos != -1)
            {
            sFldName = sFld.substring(0,nPos);
            nTabIndex = parseInt(sFld.substring(nPos+2,sFld.length),10);
            }
        GenerateGlyphImage(sFldName,nTabIndex,strImgSrc,strGlyph,nScrlLeftVal,nScrlTopVal);
        }
    }


ExecuteBrwMnuOpt = function(sFldName,nOpt) {
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
var doc = objFrame.document.getElementById(sFldName);
var cp = doc.createTextRange();
if (sSelText != "")
cp.findText(sSelText);
if (nOpt == "1")
    cp.execCommand("Cut");
else if (nOpt == "2")
    cp.execCommand("Copy");
else if (nOpt == "3")
    cp.execCommand("Paste");
else if (nOpt == "4")
    cp.execCommand("Delete");
}

PTCTXCreateElement = function(type, parent) {
	var el = null;
	if (document.createElementNS) {
		el = document.createElementNS("http://www.w3.org/1999/xhtml", type);
	} else {
		el = document.createElement(type);
	}
	if (typeof parent != "undefined") {
		parent.appendChild(el);
	}

	el.style.zIndex = 999;

	return el;
}

ConstructContextMenu = function(sFldName,sMenu) {
if (sActFldName == sFldName) return;
sActFldName = sFldName;
nCurRow = 0;
var objFrame =  top.frames['TargetContent'];
if (objFrame == null) return;
glyphmenuitem = objFrame.document.getElementById("FldCtxMenu");
if (glyphmenuitem != null)
{
var parent = objFrame.document.getElementsByTagName("body")[0];
parent.removeChild(glyphmenuitem);
}
var objEl = objFrame.document.getElementById(sFldName);
var bSelected = "false";
if (bTextSelected == "true")
{
SelectText(objEl);

bTextSelected = "false";
bSelected = "true";
}
var bHR = "1";
if (sMenu == "")
{
sMenu = "<TABLE cellSpacing='0' cols='2' border='0' cellpadding='0' width = '150'> <TBODY>";
bHR = "0";
}

var divElem = PTCTXCreateElement("div");
	divElem.className = "PTCTXDiv";

    ptEvent.add(divElem, "mouseover", ClearContextMenuTimer);
	ptEvent.add(divElem, "mouseout", CloseContextMenuHandler);
	ptEvent.add(divElem, "keydown", NavigateRows);

ptEvent.add(document, "keydown", NavigateRows);
	divElem.id = "FldCtxMenu";
var objEl = objFrame.document.getElementById(sFldName);
var sMenuRow = "<TR><TD class='PTCTXLeftNav' style='WIDTH: 25px'>&nbsp;</TD><TD>";
var sCut = "Cut";
var sCopy = "Copy";
var sPaste = "Paste";
var sDel = "Delete";

if (objEl !=null)
    {
    if (objEl.tagName.toUpperCase() == "SPAN")
        {
        sMenu += sMenuRow;
        if (bHR == "1")
        {
        sMenu += "<HR class='PTCTXHR' style ='width:100%' /></TD></TR>";
        sMenu += sMenuRow;
        }
        sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sCut+"</SPAN></TD></TR>";
        if (bSelected == "true")
            {
            sMenu += sMenuRow;
            sMenu +=" <A class='PTCTXBRWLnk' href=javascript:ExecuteBrwMnuOpt('"+sFldName+"','2')>"+sCopy+"</A></TD></TR>";
            }
        else
            {
            sMenu += sMenuRow;
            sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sCopy+"</SPAN></TD></TR>";
            }
        sMenu += sMenuRow;
        sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sPaste+"</SPAN></TD></TR>";
        sMenu += sMenuRow;
        sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sDel+"</SPAN></TD></TR>";
        }
    else if (objEl.type.toUpperCase() == "TEXT")
        {
          if (bHR == "1")
            {
            sMenu += sMenuRow;
            sMenu += "<HR class='PTCTXHR' style ='width:100%' /></TD></TR>";
            }
            if (bSelected == "false")
            {
                sMenu += sMenuRow;
                sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sCut+"</SPAN></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sCopy+"</SPAN></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sPaste+"</SPAN></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sDel+"</SPAN></TD></TR>";
              }
            else
            {
                sMenu += sMenuRow;
                sMenu +=" <A class='PTCTXBRWLnk' href=javascript:ExecuteBrwMnuOpt('"+sFldName+"','1')>"+sCut+"</A></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <A class='PTCTXBRWLnk' href=javascript:ExecuteBrwMnuOpt('"+sFldName+"','2')>"+sCopy+"</A></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <A class='PTCTXBRWLnk' href='javascript:ExecuteBrwMnuOpt('"+sFldName+"','3')>"+sPaste+"</A></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <A class='PTCTXBRWLnk' href=javascript:ExecuteBrwMnuOpt('"+sFldName+"','4');>"+sDel+"</A></TD></TR>";
            }
        }
    else if (objEl.type.toUpperCase() == "PASSWORD")
        {
        if (bSelected == "true")
            {
                sMenu += sMenuRow;
                sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sPaste+"</SPAN></TD></TR>";
                sMenu += sMenuRow;
                sMenu +=" <SPAN class='PTCTXBRWLnkDis'>"+sDel+"</SPAN></TD></TR>";
            }
            else
            {
                sMenu += sMenuRow;
                sMenu +=" <A class='PTCTXBRWLnk' href=javascript:ExecuteBrwMnuOpt('"+sFldName+"','3')>"+sPaste+"</A></TD></TR>";
                sMenu += sMenuRow;

                sMenu +=" <A class='PTCTXBRWLnk' href=javascript:ExecuteBrwMnuOpt('"+sFldName+"','4');>"+sDel+"</A></TD></TR>";
            }
        
        }
    
    
    }
sMenu += "</TBODY></TABLE>";
divElem.innerHTML =sMenu; 

var parent = document.getElementsByTagName("body")[0];
parent.appendChild(divElem);
ShowCtxMenu(xGPos,yGPos,'FldCtxMenu');
  
}

InvokeAppCls = function(sFldName,nRow)
{
var nPos = sFldName.lastIndexOf("$");
var szBase = sFldName;
if (nPos != -1)
    {
    if (nPos == sFldName.length-1)
        {
        szBase = sFldName;
        szBase += "$APPCLS#ICRow"+nRow;
        }
    else
        {
        szBase = sFldName.substring(0,nPos);
        szBase += "$APPCLS#ICRow"+nRow;
        szBase += sFldName.substring(nPos,sFldName.length);
        }
    }
else
    szBase = sFldName+"$APPCLS#ICRow"+nRow;

submitAction_win0(document.win0,szBase);
}

InvokePageAppCls = function(sServname)
{
var sAppServname = "$APPCLS#"+sServname;
submitAction_win0(document.win0,sAppServname);
}

stopCTXEvent = function(ev) {
ev || (ev = window.event);
var objFrame =  top.frames['TargetContent'];
var ns6 = objFrame.document.getElementById&&!objFrame.document.all;
if (!ns6) {
ev.cancelBubble = true;
ev.returnValue = false;
} else {
ev.preventDefault();
ev.stopPropagation();
}
return false;
}
onUnload = function(ev) {
if(bDisableField)
    ptEvent.remove(document, "mousedown", onDocumentMouseDown);
PrevScrollTop = null;
PrevScrollLeft = null;
}
