var oPopup = null;
var popupX, popupY, popupHTML;
var xmlSecurity = null;
var isSiteAdministrator = false;

function buildMenuArray(menuArray, name, action)
{
	if (menuArray == null) menuArray = [];
	menuItem = new Object();
	menuArray[menuArray.length] = menuItem;
	menuItem.name = name;
	menuItem.action = action;
	return menuArray;
}

function hidePopup()
{
	if (oPopup)
	{
		var e;
		try {oPopup.hide()} catch(e){};
		return true;
	}
	else return false;
}

function openWindowFromMenu(link, target)
{
	hidePopup();
	var wind = window.open(link, target || '_blank');
	if (wind) wind.focus();
}

function editPage()
{
	var editObject = new Object();
	editObject.document = document;
	var returnValue = window.showModalDialog("/pagedialog.cm?path=" + document.URL, editObject, 
	//"dialogHeight:285px;dialogWidth:782px;edge:Sunken;center:Yes;help:No;resizable:No;status:No;");
	"dialogHeight:200px;dialogWidth:200px;edge:Sunken;center:Yes;help:No;resizable:No;status:No;");
	if (returnValue)
	{
		document.all.xmlcmx.value = returnValue.xml.xml;
		document.cm__form.submit();
	}
}

function addFolderPagesToMenu(menuArray)
{
  var url = document.URL;
  var qpos = url.indexOf('?');
  if (qpos >= 0) url = url.substr(0, qpos);
  var pos = url.indexOf("//");
  if (pos >= 0)
  {
		pos = url.indexOf('/', pos + 2);
		if (pos >= 0) url = url.substr(pos);
		if (url.charAt(url.length - 1) == '/') url = url.substr(0, url.length - 1);
		if (url.indexOf('.') < 0) url += "/default.html";
		if (url.length >= 7 && url.substr(url.length - 7).toLowerCase() == "/@.html")
		  url = url.substr(0, url.length - 7);
		var aUrl = url.split('/');
		if (aUrl.length > 1)
		{
			buildMenuArray(menuArray);
      buildMenuArray(menuArray, "Site Defaults Page", "parent.location.href='/@.html'");
      var folder = "";
		  for (var n = 1; n < aUrl.length - 1; n++)
		  {
				folder += "/" + aUrl[n];
				buildMenuArray(menuArray, "/" + aUrl[n] + " Page", "parent.location.href='" + folder + "/@.html'");
		  }
		}
  }
}

function onLoadTest(screenX, screenY)
{
	alert("anloadtest");
	//oPopup.show(screenX, screenY, cm__iframe.document.body.scrollWidth, 
	//	cm__iframe.document.body.scrollHeight);
	
}

function onLoadMenuFrame()
{
	var	css = isWin2K() ? "/~/~cmx/popup.css" : "/~/~cmx/popupx.css";
	cm__menuframe.document.createStyleSheet(css);
}

function showMenu()
{
	oPopup = window.createPopup();
	var	css = isWin2K() ? "/~/~cmx/popup.css" : "/~/~cmx/popupx.css";
	oPopup.document.createStyleSheet(css);
	oPopup.document.body.innerHTML = popupHTML;
	oPopup.show(popupX, popupY, cm__menuframe.document.body.scrollWidth + 10,
		cm__menuframe.document.body.children[0].scrollHeight + (isWin2K() ? 4 : 2));
}

function showMenuArray(menuArray, screenX, screenY, css, width, unitHeight, borderHeight)
{
	if (!width) width = 240;//180;
	if (!unitHeight) unitHeight = 16;
	if (!borderHeight) borderHeight = 4;
  //oPopup = window.createPopup();
	//if (css == null)
	//	css = isWin2K() ? "/~/~cmx/popup.css" : "/~/~cmx/popupx.css";
  //if (css) oPopup.document.createStyleSheet(css);
  popupX = screenX; popupY = screenY;
  popupHTML = "<table cellspacing=0>";
  for (var n = 0; n < menuArray.length; n++)
  {
		var menuItem = menuArray[n];
		if (!menuItem.name) // separator
		  popupHTML += "<tr><td class=rule><hr></td></tr>";
		else if (!menuItem.action) // disabled
		  popupHTML += "<tr><td><a disabled class=disabled><nobr>" + menuItem.name + "</nobr></a></td></tr>";
		else
		  popupHTML += "<tr><td><a onclick=\"" + menuItem.action + "\" href=\"\"><nobr>" + menuItem.name + "</nobr></a></td></tr>";
  }
  popupHTML += "</table>";
  /*
  if (typeof cm__iframe != "undefined")
  {
		if (css) cm__iframe.document.createStyleSheet(css);
		//var i2 = "<body onload=\"parent.onLoadTest(" + screenX + "," + screenY + ")\">" + popupHTML + "</body>";
		cm__iframe.document.body.innerHTML = popupHTML;
		oPopup.document.body.innerHTML = popupHTML;
		//oPopup.show(screenX, screenY, cm__iframe.document.body.scrollWidth, 
		// cm__iframe.document.body.scrollHeight);
	}
	else
	*/
	{
		//cm__menuframe.document.body.onload = onLoadTest;
		cm__menuframe.document.body.innerHTML = popupHTML; // to measure
		setTimeout(showMenu, 1); // to let the frame settle down
		//alert(">" + cm__menuframe.document.body.scrollWidth + ":" +  cm__menuframe.document.body.children[0].scrollHeight);
		//alert(">" + cm__menuframe.document.body.scrollWidth + ":" +  cm__menuframe.document.body.children[0].scrollHeight);
		//oPopup.show(screenX, screenY, width, menuArray.length * unitHeight + borderHeight);
		/*
		oPopup = window.createPopup();
		if (css == null)
			css = isWin2K() ? "/~/~cmx/popup.css" : "/~/~cmx/popupx.css";
		if (css) oPopup.document.createStyleSheet(css);
		oPopup.document.body.innerHTML = popupHTML;
		oPopup.show(screenX, screenY, cm__menuframe.document.body.scrollWidth + 10,
		 cm__menuframe.document.body.children[0].scrollHeight + borderHeight);
		 */
  }
}

function initCmxCommon()
{
  //oPopup = window.createPopup();
  //oPopup.document.createStyleSheet(css);
	if (typeof cmxXmlDoc != "undefined") xmlSecurity = cmxXmlDoc.documentElement.selectSingleNode("Security");
	isSiteAdministrator = xmlSecurity && ((xmlSecurity.getAttribute("IsSiteAdministrator") || "").toLowerCase() != "false");
  document.oncontextmenu = onContextMenu;
  if (document.all.cm__form)
  {
		var action = document.URL;
		var lastSlash = action.lastIndexOf('/');
		if (lastSlash >= 0)
			if (action.indexOf('.', lastSlash) < 0) // no extn
			{
				if (action.charAt(action.length - 1) != '/') action += '/';
				if ((action.length >= 3) && action.substr(action.length - 3, 3) == "/@/")
					action = action.substr(0, action.length - 1) + ".html";
				else
					action += "default.html";
			}
		document.all.cm__form.action = action;
  }
}

function buildUrl(page)
{
	var url = page;
	if (arguments.length >= 2)
		for (var n = 1; n < arguments.length; n += 2)
		{
			url += n == 1 ? '?' : '&';
			url += arguments[n];
			url += '=';
			url += escape(arguments[n + 1].replace(/ /g, '+'));
		}
	return url;
}