var dmMenArr=new Array(2000);
var dmTemplCount=0;
var dmMenArrCount=0;
var dmMenuFrameno=-1;
var dmMenuFrameName="";
var dmMainFrameName="mainframe";
var dmnActMenu=-1;
var dmActSiteId=0;
var dmActGrpId=0;

var dmStrItemNormal="";
var dmStrItemOver="";
var dmStrItemSelected="";
var dmStrFolderNormal="";
var dmStrFolderOver="";
var dmStrFolderSelected="";
var dmStrItemEmpty="";
var dmStrFolderEmpty="";
var dmStrLastSiteId="";
var dmStrLastGroupId="";
var dmStrImageTempl="<td valign=\"top\"><img border=\"0\" src=\"[%IMAGENAME%]\" ></td>";
var dmStrTemplateFolder="";
var dmStrTemplateItem="";
var dmStrEditFormHeader="";
var dmStrEditFormFooter ="";
var dmActUserId=0;
var dmEditMenuInd=-1;
var dmStrHeader="<html> <head> <title>Menu</title> </head> <body bgcolor=\"#FFFFCC\" text=\"#000080\" link=\"#000080\" vlink=\"#000080\">[%EDITFORM%] <table>";
var dmStrBetweenGroups ="</table><table>"
var dmStrFooter="</table>[%EDITFORM%]</body></html>";

function dmMenuEntry(nType, nMenId, nParentId, strDescr, strUrl, strUrlIcon, strPos, strParam1, strParam2 )
{
  if (nType == "0")
  {
    this.m_nType = "0";
  }
  else
  {
    this.m_nType = "1";

  }
  this.m_nMenID = nMenId;
  this.m_nParentId = nParentId;
  this.m_strDescr = strDescr ;
  this.m_strURL  = strUrl ;
  this.m_strURLIcon  = strUrlIcon;
  this.m_nLevel=0;
  this.m_bOpen=false;
  this.m_nParentInd=-1;
  this.m_strBezTotal=strDescr ;
  this.m_strParam1=strParam1 ;
  this.m_strParam2=strParam2 ;

  var nPind=dmGetMenuIndex(nParentId);
  if (nPind > -1)
  {
    this.m_nLevel=dmMenArr[nPind].m_nLevel + 1;
    this.m_nParentInd=nPind;
    this.m_strBezTotal=dmMenArr[nPind].m_strBezTotal + "\\" + this.m_strBezTotal;
  }
  this.m_strPos=strPos ;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

function dmAddMenu(nType, nMenId, nParentId, strDescr, strURL, strURLIcon)
{
	var mstrURLIcon=strURL; 
	if (strURLIcon != '')
	{
		mstrURLIcon = strURLIcon;
	}
	dmMenArr[dmMenArrCount]=new dmMenuEntry(nType, nMenId, nParentId, strDescr, strURL, mstrURLIcon,"", "","");
	dmMenArrCount++;
}

function dmIsParent( nChildInd , nId)
{
	var nPid=dmMenArr[nChildInd].m_nParentInd;
	while (nPid > -1) 
	{
		if (dmMenArr[nPid].m_nMenID== nId)
		{
			return true;
		}
		nPid=dmMenArr[nPid].m_nParentInd;
	}
	return false;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

function dmCloseFolders( nMenuInd )
{
   
  for ( i=0; i < dmMenArrCount;i++)
  {
	
    if( i != nMenuInd )
    {
	if (dmMenArr[i].m_nType == 1)
	{
		if (dmMenArr[i].m_nParentInd == dmMenArr[nMenuInd].m_nParentInd ) 
		{
			dmMenArr[i].m_bOpen=false;
		}
		else
		{
			if (! dmIsParent( nMenuInd , dmMenArr[i].m_nMenID))
        		{
           			dmMenArr[i].m_bOpen=false;
        		}
		}
	}
     }
  }


}
///////////////////////////////////////////////////////////////////////////////////////////////////
function dmOnMenuOver(nMenuInd)
{
	if(dmMenuFrameno >=0)
	{
		if(nMenuInd==dmnActMenu)
		{
			return;
		}
		if(dmMenArr[nMenuInd].m_bOpen==true)
		{
			return;
		}
		var strMenuOption="MEN" + nMenuInd;
		if (dmMenArr[nMenuInd].m_nType ==0)
		{
			window.frames[dmMenuFrameno].document[strMenuOption].src = dmStrItemOver;	
		}
		else
		{
			window.frames[dmMenuFrameno].document[strMenuOption].src = dmStrFolderOver;	
		}
	}
}

function dmOnMenuOut(nMenuInd)
{
	if(dmMenuFrameno >=0)
	{
		if(nMenuInd==dmnActMenu)
		{
			return;
		}
		if(dmMenArr[nMenuInd].m_bOpen==true)
		{
			return;
		}
		var strMenuOption="MEN" + nMenuInd;
		if (dmMenArr[nMenuInd].m_nType ==0)
		{
			window.frames[dmMenuFrameno].document[strMenuOption].src = dmStrItemNormal;	
		}
		else
		{
			window.frames[dmMenuFrameno].document[strMenuOption].src = dmStrFolderNormal;	
		}
	}
}

function dmOnMenuClick(nMenuInd)
{
	var   bReprint=true; 
        dmEditMenuInd=nMenuInd;
        if(dmMenuFrameno >=0)
	{
		
                if(nMenuInd==dmnActMenu)
		{
			//return;
		}
		var strMenuOption="MEN" + nMenuInd;

		//alert("Reprint1:" + dmMenArr[nMenuInd].m_bOpen );

		if (dmMenArr[nMenuInd].m_bOpen == true)
		{
			dmMenArr[nMenuInd].m_bOpen=false;
		}
		else
		{
			dmCloseFolders(nMenuInd);
			dmMenArr[nMenuInd].m_bOpen=true;
		}
		dmnActMenu=nMenuInd;
		if (dmMenArr[nMenuInd].m_strURL.length > 0)
		{
			dmLoadNewPage(dmMenArr[nMenuInd].m_strURL);
		}
		
                if ( bReprint)
                {
                   dmPrintMenuTree();
		}
	}
}

function dmOnIconClick(nMenuInd)
{
	var   bReprint=true; 
        dmEditMenuInd=nMenuInd;
        if(dmMenuFrameno >=0)
	{
		alert("Menu----MenuInd " + nMenuInd);
//		alert("Menu----MenuInd " + nMenuInd + ", type:" + dmMenArr[nMenuInd].m_nType + ", Open:" + dmMenArr[nMenuInd].m_bOpen);
                if(nMenuInd==dmnActMenu)
		{
			//return;
		}
		var strMenuOption="MEN" + nMenuInd;
	
		//alert("Reprint1:" + dmMenArr[nMenuInd].m_bOpen );

		if (dmMenArr[nMenuInd].m_bOpen == true)
		{
			dmMenArr[nMenuInd].m_bOpen=false;
		}
		else
		{
			dmCloseFolders(nMenuInd);
			dmMenArr[nMenuInd].m_bOpen=true;
		}
		dmnActMenu=nMenuInd;

		if (dmMenArr[nMenuInd].m_strURLIcon.length > 0)
		{
			dmLoadNewPage(dmMenArr[nMenuInd].m_strURLIcon);
		}

                if ( bReprint)
                {
                   dmPrintMenuTree();
		}
    }
}
function dmGetMenuIndex(nMenId)
{
	var i;
	for ( i=0; i < dmMenArrCount;i++)
	{
		if (dmMenArr[i].m_nMenID== nMenId)
	        {
        		return i;
	        }
	}
  	return -1;
}
///////////////////////////////////////////////////////////////////////////////////////////////////


function dmLoadNewPage(strUrl)
{
	if(strUrl.length >0)
	{
		var nFrameNo=dmGetFramenoFromName(dmMainFrameName);
		if (nFrameNo >=0 )
		{
			if (window.frames[nFrameNo])
			{
				//alert(strUrl);
				window.frames[nFrameNo].location=strUrl;
			}
		}
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////
function dmGetNextSubMenu(nParentId,nStart)
{
  var i;
  for ( i=nStart; i < dmMenArrCount;i++)
  {
		if (dmMenArr[i].m_nParentId== nParentId)
        {
           return i;
        }
  }
  return -1;

}
function dmGetTreeRoot()
{
  var nRet=dmMenArr[0].m_nParentId;
  return nRet;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
function dmReplaceText(strText,strRepl,strReplWith)
{
  var lRepl = strRepl.length;
  var p = strText.indexOf(strRepl);

  while(p >= 0)
  {
	strText = strText.substring(0,p) + strReplWith + strText.substring(p+lRepl)
	p = strText.indexOf(strRepl);
  }
  return strText;
}
///////////////////////////////////////////////////////////////////////////////////////////////////

function dmPrintMenu(nMenInd)

{
	
	if (nMenInd == '[%MENU_IND%]')
	{
		alert("dmPrintMenu----MenuInd " + nMenuInd);
	}
	if ((nMenInd >= 0) && (dmMenuFrameno >=0))
	{
		var strTemplate=dmStrTemplateItem;
		var strImage=dmStrItemNormal;
		var strImageEmpty=dmStrItemEmpty;
		
		if(dmMenArr[nMenInd].m_nType==1)
		{
			strTemplate=dmStrTemplateFolder;
			if(dmMenArr[nMenInd].m_bOpen==true)
			{
				strImage=dmStrFolderSelected;
			}
			else
			{
				strImage=dmStrFolderNormal;
			}
			strImageEmpty=dmStrFolderEmpty;
		}
		else
		{
			if(nMenInd==dmnActMenu)
			{
				strImage=dmStrItemSelected;
			}
			else
			{
				strImage=dmStrItemNormal;
			}
			strImageEmpty=dmStrItemEmpty;
		}
		strTemplate=dmReplaceText(strTemplate,"[%MENU_IND%]",nMenInd);
		strTemplate=dmReplaceText(strTemplate,"[%MENU_DESCRIPTION%]",dmMenArr[nMenInd].m_strDescr);
		strTemplate=dmReplaceText(strTemplate,"[%MENU_IMAGE%]",strImage);
		strTemplate=dmReplaceText(strTemplate,"[%MENU_POS%]",dmMenArr[nMenInd].m_strPos);

		var i;
		var strFillEmpty="";
		for (i=1;i <= dmMenArr[nMenInd].m_nLevel; i++)
		{
			var strFillImage=dmStrImageTempl;
			strFillImage=dmReplaceText(strFillImage,"[%IMAGENAME%]",strImageEmpty);
			strFillEmpty=  strFillImage + strFillEmpty  ;
		}
		strTemplate=dmReplaceText(strTemplate,"[%FILLEMPTY%]",strFillEmpty);

		// replace template contents with Menu Object
		//alert(strTemplate);
		window.frames[dmMenuFrameno].document.writeln(strTemplate);
		if (dmMenArr[nMenInd].m_bOpen==true)
		{
			window.frames[dmMenuFrameno].document.writeln(dmStrBetweenGroups);
			var nRootId=dmMenArr[nMenInd].m_nMenID;
			var nSubInd=dmGetNextSubMenu(nRootId,nMenInd+1);
			if (nSubInd >= 0)
			{
				while(nSubInd >=0 )
				{
					dmPrintMenu(nSubInd);
					nSubInd++;
					nSubInd=dmGetNextSubMenu(nRootId,nSubInd);
				}
				window.frames[dmMenuFrameno].document.writeln(dmStrBetweenGroups);
			}
		}
	}
	else
	{
		alert("dmPrintMenu----MenuInd " + nMenuInd);
	}
}
///////////////////////////////////////////////////////////////////////////////////////////////////

function dmGetFramenoFromName(strTargetFrame)
{
	var i;
	var nFrames= window.frames.length;
	for (i=0; i < nFrames ; i++)
	{ 
	  if (frames[i].name==strTargetFrame)
	  {
	     return i;
	  }
	}
	return -1;
}
//////////////////////////////////////////////////////////////////////////////////////////////////

function dmSetDocument()
{
  var nFrameNo=dmGetFramenoFromName(dmMenuFrameName);
  if (nFrameNo >=0)
  {
     dmMenuFrameno= nFrameNo;
  }
}


///////////////////////////////////////////////////////////////////////////////////////////////////

function dmPrintMenuTree()
{
    dmSetDocument();
    
	if (dmMenuFrameno >=0)
	{
	  window.frames[dmMenuFrameno].document.close();
	  window.frames[dmMenuFrameno].document.open();
          var strHeader = dmStrHeader;
          strHeader = dmReplaceText(strHeader  ,"[%EDITFORM%]", dmStrEditFormHeader );

	  window.frames[dmMenuFrameno].document.writeln(strHeader);
	  var nRootId=dmGetTreeRoot();
	  var nSubInd=dmGetNextSubMenu(nRootId,0);
	  while(nSubInd >=0 )
	  {
     
		dmPrintMenu(nSubInd);

	      nSubInd++;
	      nSubInd=dmGetNextSubMenu(nRootId,nSubInd);
	  }
          var strFooter = dmStrFooter ;
          strFooter = dmReplaceText(strFooter ,"[%EDITFORM%]", dmStrEditFormFooter );
	  window.frames[dmMenuFrameno].document.writeln(strFooter );
	  window.frames[dmMenuFrameno].document.close();
	}
}

function dmSetFramenames(strLeftFrame,strMainFrame)
{
	dmMenuFrameName=strLeftFrame;
	dmMainFrameName=strMainFrame;

}
function dmSetEditFormString(strEditFormHeader,strEditFormFooter)
{
	dmStrEditFormHeader=strEditFormHeader;
	dmStrEditFormFooter=strEditFormFooter;

}

function dmSetTemplateFolderLine(strTempl)
{
	dmStrTemplateFolder=strTempl;
}

function dmSetTemplateNormalLine(strTempl)
{
	dmStrTemplateItem=strTempl;

}

function dmSetImagesNormalLine(strItemNormal,strItemOver,strItemSelected,strItemEmpty)
{
	dmStrItemNormal=strItemNormal;
	dmStrItemOver=strItemOver;
	dmStrItemSelected=strItemSelected;
	dmStrItemEmpty=strItemEmpty;

}

function dmSetImagesFolderLine(strItemNormal,strItemOver,strItemSelected,strItemEmpty)
{
	dmStrFolderNormal=strItemNormal;
	dmStrFolderOver=strItemOver;
	dmStrFolderSelected=strItemSelected;
	dmStrFolderEmpty=strItemEmpty;
	

}  

function dmGetEditMenuId()
{
	var strReturn ="";
	if (dmEditMenuInd > -1)
	{
		strReturn = dmMenArr[dmEditMenuInd].m_nMenID;
	}
	return strReturn;
}

function dmGetEditMenuParentId()
{
	var strReturn ="";
	if (dmEditMenuInd > -1)
	{
		var nParentInd=dmMenArr[dmEditMenuInd].m_nParentInd;
		if(nParentInd >-1)
		{
			strReturn = dmMenArr[nParentInd].m_nMenID;
		}
	}
	return strReturn;
}

function dmGetMenuBezTotalId(nMenId)
{
	var strReturn ="";
	var nMenuInd=dmGetMenuIndex(nMenId)
	if (nMenuInd > -1)
	{
		strReturn = dmMenArr[nMenuInd].m_strBezTotal;
	}
	return strReturn;
}

function dmGetMenuBezTotalInd(nMenuInd)
{
 var strReturn ="";
  if (nMenuInd> -1)
  {
	strReturn = dmMenArr[nMenuInd].m_strBezTotal;
  }
  return strReturn;

}

function dmGetMenuCount()
{
  return  dmMenArrCount;
}

function dmGetMenuIdInd(nMenuInd)
{
 var strReturn ="";
  if (nMenuInd> -1)
  {
	strReturn = dmMenArr[nMenuInd].m_nMenID;
  }
  return strReturn;

}

function dmGetMenuTypInd(nMenuInd)
{
 var strReturn ="";
  if (nMenuInd> -1)
  {
	strReturn = dmMenArr[nMenuInd].m_nType;
  }
  return strReturn;

}

function dmGetMenuParam1Ind(nMenuInd)
{
 var strReturn ="";
  if (nMenuInd> -1)
  {
	strReturn = dmMenArr[nMenuInd].m_strParam1;
  }
  return strReturn;

}

function dmGetMenuParam2Ind(nMenuInd)
{
 var strReturn ="";
  if (nMenuInd> -1)
  {
	strReturn = dmMenArr[nMenuInd].m_strParam2;
  }
  return strReturn;

}
