function pm_onRunCommand(obj,sMacro,sTarget)
{
	if(sTarget=="") sTarget="";
        if(sMacro != "" && sMacro != "0"){
        	pm_changeContext(obj);
        	GenerateXMLQueryString2('macrotorun='+sMacro+',target='+sTarget);
        }
}

function pm_changeContext(obj, sNewContext)
{
   try{
	var sTrace="";

	sTrace = "getting row id";		
	var sKey = "";

	if(sNewContext == undefined || sNewContext == null){
		var ix=0;
		while(ix<5 && obj.getAttribute("key")==null){
			obj = obj.parentNode;
			ix=ix+1;
		}
		sKey = obj.getAttribute("key");
	}else{
		sKey = sNewContext;
	}
					
	sTrace = "global replace";		
    	var sKeyEx = sKey.replace(/_/g, ".");

        var nKey = "";
        
        sTrace = "sKeyEx - split";
        var aEK = sKeyEx.split(";");
        for(var i =0; i < aEK.length; i++){
          	aEK[i] = aEK[i].split(":");
        }
            
            
        sTrace = "x - get base entity";
        var nBaseEntity = aEK[0][0];
        var nBaseKey = -1;
        for(var i =0; i < aEK.length; i++){
               if(nBaseEntity = aEK[i][0]){
                    nBaseKey = aEK[i][1];
                    i = aEK.length;
                }
        }            
           
	//------------------------//
	// Resetting BaseContext
	//------------------------//		
	sTrace = "x - resetting basecontext";	
	sBaseContext  =  "basecontext@entity=" + nBaseEntity;
	sBaseContext += ",basecontext@key="    + nBaseKey;
	sBaseContext += ",basecontext@label=";
	ChangeElement(sBaseContext);            
            
	//-----------------------------------------------------//
	// Remove all existing Contexts and add in new ones
	//-----------------------------------------------------//
	sTrace = "x - removing additional contexts";	
	RemoveElements("CONTEXT");            
		    
	//------------------------//
	// Resetting additional contexts
	//------------------------//		
	sTrace = "x - resetting additional contexts";		
	for(var i = 0; i < aEK.length; i++){
		        if(nBaseEntity != aEK[i][0]){
			        sContext =  "context@entity=" + aEK[i][0];
			        sContext += ",context@key="   + aEK[i][1];
			        sContext += ",context@label=";
			        CreateElement(sContext);	
			    }
    	}		   
   }catch(e){
	}         
}

function pm_gotopage(obj, nPageNo)
{
	var sTrace;
 	try{
		event.cancelBubble=true;
 	
		sTrace = "accessing offset";

		var oParent = obj.parentNode;
	 	var oOffset = oParent.all("TZCQOFFSET");

		var i=0;
		while(i<4 && oOffset == null && typeof(oParent) == "object"){
			oParent=oParent.parentNode;
			oOffset = oParent.all("TZCQOFFSET");
			i=i+1;
		}

	 	if(oOffset == null || typeof(oOffset) != "object") return;
	 	
	 	sTrace = "set page offset";
	 	oOffset.value = nPageNo; 	
 		 		 		

	       	var bIFrame = false;
            	if(window.frameElement == "[object]"){
       	      		if(window.frameElement.tagName == "IFRAME"){
               	  		bIFrame = true;
           		}
            	}
		var bPost=bIFrame;
		if (typeof(m_sMacro) == "undefined") bPost=true; 

	 	sTrace = "creating form";
	 	var oForm = pmi_createForm(bPost);

		pmi_cloneNode(oForm, oParent, "TZCQOFFSET");
		pmi_cloneNode(oForm, oParent, "TZCQSORT");
		pmi_cloneNode(oForm, oParent, "TZCQDIRECTION");

		if(!bPost){
			pmi_createElem(oForm, "INPUT", "PCKXML","<PCKXML><MACROTORUN>"+m_sMacro+"</MACROTORUN></PCKXML>")
		}

	 	oForm.submit();
	 	
	 	return false;
	 	
	 }
	 catch(e){
		var sError = "Error in pm_gotopage()\n";
		sError += e.description + "\n";
		sError += "Trace: " + sTrace;
		alert(sError);		
		return false;
	  }
}

function pmi_createForm(bAddISK)
{
	//var obj2=document.all("SCRIPTNAME");
	//var sHTTP = obj2["value"];

 	var oForm = document.createElement("FORM");
 	oForm.setAttribute("id", "frmDummy");
 	oForm.setAttribute("name", "frmDummy"); 	
 	oForm.setAttribute("method", "POST");
 	//oForm.setAttribute("target", "XXX");
	//oForm.setAttribute("action",sHTTP);

 	oForm = document.body.appendChild(oForm);
	 				
	if(bAddISK){	
	 	var oISK = document.all("ISAPI_SUPPORT_KEY");
		if(typeof(oISK) == 'object'){
	 	    if(oISK.length != undefined) oISK = oISK[0];
			oISK = oISK.cloneNode(true);
			oISK = oForm.appendChild(oISK);
	 	}
	}

	return oForm;	
}

function pmi_createElem(oForm,sType,sID,sValue)
{
	var obj = document.createElement(sType);
	obj.setAttribute("id",sID);
	obj.setAttribute("name",sID);
	obj.setAttribute("name",sID);
	obj.setAttribute("value",sValue);

	obj = oForm.appendChild(obj);

	return obj;
}

function pmi_cloneNode(oForm, oParent, sName)
{
 	var obj = oParent.all(sName);
	if(typeof(obj) == 'object'){
		obj = obj.cloneNode(true);
		obj = oForm.appendChild(obj);
		return obj;
	}		
	return null;					
}

function linkHigh(obj)
{
	var sClass = obj.getAttribute("className");
	if(sClass.indexOf("highlighted") == -1){
		sClass = sClass + "highlighted";
		obj.setAttribute("className", sClass);
	}
}

function linkUnHigh(obj)
{
	var sClass = obj.getAttribute("className");
	if(sClass.indexOf("highlighted") > 0){
		sClass = sClass.replace("highlighted","");
		obj.setAttribute("className", sClass);
	}
}


