var alertLine="--------------------------------------------\n";
var alertHeaders=new Object();
alertHeaders["move"]=alertLine+"Move pages\n"+alertLine;
alertHeaders["copy"]=alertLine+"Copy pages\n"+alertLine;
alertHeaders["copymove"]=alertLine+"Copy/move pages\n"+alertLine;
alertHeaders["delete"]=alertLine+"Delete pages\n"+alertLine;
alertHeaders["activate"]=alertLine+"Activate pages\n"+alertLine;
alertHeaders["deactivate"]=alertLine+"Deactivate pages\n"+alertLine;
alertHeaders["create"]=alertLine+"Create page\n"+alertLine;
alertHeaders["deleteRoles"]=alertLine+"Delete roles\n"+alertLine;
alertHeaders["deleteUsers"]=alertLine+"Delete users\n"+alertLine;
alertHeaders["createUsers"]=alertLine+"Create user\n"+alertLine;
alertHeaders["createRoles"]=alertLine+"Create role\n"+alertLine;



var alertMessages=new Object();
alertMessages["noSelection"]="Failed: No pages selected";
alertMessages["noSelectionUsers"]="Failed: No users selected";
alertMessages["noSelectionRoles"]="Failed: No roles selected";


function empty()
	{
	//
	}

function changeContext(p_section) {
	window.document.forms.mgnlFormMain.elements["context"].value=p_section;
	window.document.forms.mgnlFormMain.submit();
}


function updateCK(href) {
    var newSearch = "";
    var newHref = "";
    if (href.indexOf("?") < 0) {
        newSearch = "?cK="+getCK();
        newHref = href + newSearch;
    }
    else {
        indexOfSearch = href.indexOf("?");
        if (indexOfSearch < 0) indexOfSearch = 0;
        var search = href.substr(indexOfSearch);
        var startIndex = search.indexOf("cK");
        if (startIndex < 0) startIndex = search.indexOf("ck");
        if (startIndex < 0) startIndex = search.indexOf("CK");
        if (startIndex < 0) newSearch = search+"&cK="+getCK();
        else {
            var pre = search.substr(startIndex,16);
            var post = search.substr(startIndex + 16);
            newSearch = pre + "cK=" + getCK() + post;
        }
    }
    endIndex = href.indexOf("?");
    if (endIndex < 0) endIndex = href.length;
    var HrefWithoutSearch = href.substr(0,endIndex);
    newHref = HrefWithoutSearch + newSearch;
    return newHref;
}


function getCK() {
    var now = new Date();
    return now.getTime();
}


function submitForm(p_actions,recursive) {
	var form = window.document.forms.mgnlFormMain;
	var alertText = "";
	///////////////////////////////////
	// DELETE PAGES
	///////////////////////////////////
	if (p_actions == "deletePages") {
		var deactTitles="";
		var deactPaths="";
		var deactDelim="";
		var delTitles="";
		var delPaths="";
		var delDelim="";

		if (countChecked(form.elements) == 0)
			{
			window.alert(alertHeaders['delete']+alertMessages['noSelection']);
			return;
			}


		for (var i = 0; i < form.elements.length; i++)
			{
			if ((form.elements[i].type == "checkbox") && (form.elements[i].checked))
				{
				var node=nodesInfo[form.elements[i].value];
				if (node.isActivated)
					{
					deactTitles+=node['title']+" ("+node['name']+".html)\n";
					deactPaths+=deactDelim+node['handle'];
					deactDelim=",";
					}
				else
					{
					delTitles+=node['title']+" ("+node['name']+".html)\n";
					delPaths+=delDelim+node['handle'];
					delDelim=",";
					}
				}
			}

		if (deactTitles!="")
			{
			var txt=alertHeaders['delete'];
			txt+="Deleting of activated pages is not allowed.\nDo you want to deactivate the following pages?\n\n";
			txt+=deactTitles;
			txt+="\n";
			if (window.confirm(txt))
				{
				form.elements["paths"].value=deactPaths;
				form.elements["actions"].value="deactivatePages";

				var nextPaths=deactPaths;
				if (delPaths!="") nextPaths+=","+delPaths;
				form.elements["nextPaths"].value=nextPaths;
				form.elements["nextActions"].value="deletePages";

				form.submit();
				return;
				}
			else if (delTitles=="")
				{
				return;
				}
			}

		if (delTitles!="")
			{
			var txt=alertHeaders['delete'];
			txt+="Are you sure to delete the following pages with all its sub pages?\n\n";
			txt+=delTitles;
			txt+="\n";
			if (window.confirm(txt))
				{
				form.elements["paths"].value=delPaths;
				}
			else return;
			}
	}

	///////////////////////////////////
	// DELETE USERS/ROLES
	///////////////////////////////////
	if (p_actions == "deleteUsers" || p_actions=="deleteRoles") {
		var deactTitles="";
		var deactPaths="";
		var deactDelim="";
		var delTitles="";
		var delPaths="";
		var delDelim="";

		var what;
		var noSelection;
		if (p_actions=='deleteUsers')
			{
			what="users";
			noSelection=alertMessages['noSelectionUsers'];
			}
		else
			{
			what="roles"
			noSelection=alertMessages['noSelectionRoles'];
			}

		if (countChecked(form.elements) == 0)
			{

			window.alert(alertHeaders[p_actions]+noSelection);
			return;
			}

		for (var i = 0; i < form.elements.length; i++)
			{
			if ((form.elements[i].type == "checkbox") && (form.elements[i].checked))
				{
				var node=nodesInfo[form.elements[i].value];
				delTitles+=node['title']+" ("+node['name']+")\n";
				delPaths+=delDelim+node['handle'];
				delDelim=",";
				}
			}

		var txt=alertHeaders[p_actions];
		txt+="Are you sure to delete the following "+what+"?\n\n";
		txt+=delTitles;
		txt+="\n";
		if (window.confirm(txt))
			{
			form.elements["paths"].value=delPaths;
			p_actions="deletePages";
			}
		else return;

	}
	///////////////////////////////////
	// CREATE PAGES
	///////////////////////////////////
	else if (p_actions == "createPages") {
		var radioGroup = window.listTemplates.document.forms.mgnlFormMain.elements["template"];
		var title = form.elements["pagetitle"].value;
		var label=form.elements["pagelabel"].value;

		if (title=="")
			{
			window.alert(alertHeaders['create']+"Please enter a page title!");
			return;
			}

		if (!radioGroup[0]) {
			form.elements["template"].value = radioGroup.value;
		}
		else {
			for (var i = 0; i < radioGroup.length; i++) {
				if (radioGroup[i].checked) {
					form.elements["template"].value = radioGroup[i].value;
				}
			}
		}

		if (label!="")
			{
			if (!checkLabel(label))
				{
				alert(alertHeaders['create']+"The Page Label contains illegal characters.\nPlease adjust.");
				return;
				}
			}
		else
			{
			label=createLabel(title);
			}

		form.elements["title"].value = title;
		form.elements["label"].value = label;
	}
	///////////////////////////////////
	// CREATE USER
	///////////////////////////////////
	else if (p_actions == "createUsers") {
		var fullname = form.elements["fullname"].value;
		var label = form.elements["username"].value;
		var password = form.elements["password"].value;
		var password2 = form.elements["password2"].value;

		if (label=="")
			{
			alert(alertHeaders['createUsers']+"Please enter a user name!");
			return;
			}
		else
			{
			if (!checkLabel(label))
				{
				alert(alertHeaders['createUsers']+"The user name you have entered contains illegal characters.\nPlease adjust.");
				return;
				}
			}

		if (password=="" || password2=="")
			{
			alert(alertHeaders['createUsers']+"Please enter a password"); return;
			}
		if (password != password2)
			{
			alert(alertHeaders['createUsers']+"Password does not match"); return;
			}

		// collect assigned roles and check if min. 1 is assigned
		var acl="";
		var delim="";
		form.elements.acl.value="";
		for (var i=0; i<form.elements.length; i++)
			{
			if (form.elements[i].name.indexOf("acl")==0 && form.elements[i].value!="") //indexOf 0: assure name starts with acl; future: rename
				{
				acl+=delim+form.elements[i].value;
				delim=",";
				}
			}
		if (acl=="")
			{
			alert(alertHeaders['createUsers']+"Assign at least one role!");
			return;
			}
		else
			{
			form.elements.acl.value=acl;
			}



		// else we assign the new label(username) and title (fullname)
		form.elements["label"].value = label;
		form.elements["title"].value = fullname;
		p_actions="createPages";
	}
	///////////////////////////////////
	// CREATE ROLE
	///////////////////////////////////
	else if (p_actions == "createRoles") {
		var title=form.elements["pagename"].value;
		if (title=="")
			{
			alert(alertHeaders['createRoles']+"Please enter a role name!");
			return;
			}
		var label=createLabel(title);

		// collect assigned acl and check if min. 1 is assigned
		var acl="";
		var access="";
		var startNodes="";
		var delim="";
		form.elements.acl.value="";
		form.elements.access.value="";
		form.elements.startNodes.value="";
		for (var i=0; i<form.elements.length; i++)
			{
			if (form.elements[i].name.indexOf("acl")==0 && form.elements[i].value!="") //indexOf 0: assure name starts with acl; future: rename
				{
				acl+=delim+form.elements[i].value;
				var id=form.elements[i].name.substring(3); //get rid of "acl"
				access+=delim+form.elements['access'+id].value;
				startNodes+=delim+form.elements['start'+id].value;
				delim=",";
				}
			}
		if (acl=="")
			{
			alert(alertHeaders['createRoles']+"Assign at least one access!");
			return;
			}
		else
			{
			form.elements.acl.value=acl;
			form.elements.access.value=access;
			form.elements.startNodes.value=startNodes;
			}
		form.elements["title"].value = title;
		if (form.elements["label"].value=="") form.elements["label"].value=label; // empty if create, else edit
		p_actions="createPages";
	}
	///////////////////////////////////
	// COPY PAGES
	///////////////////////////////////
	else if (p_actions == "copyPages") {

		//collect new labels
		var form=document.forms.mgnlFormMain;
		if (!form.destLabel[0])
			{
			var label=form.destLabel.value;
			if (!checkLabel(label))
				{
				alert(alertHeaders['copy']+"The Page Label contains illegal characters.\nPlease adjust.");
				return;
				}
			form.labels.value=label;
			}
		else
			{
			var obj=form.destLabel;
			for (var i=0;i<obj.length;i++)
				{
				var label=obj[i].value;
				if (!checkLabel(label))
					{
					alert(alertHeaders['copy']+"The following Page Label contains illegal characters:\n"+label+"\n\nPlease adjust.");
					return;
					}
				form.labels.value+=label+",";
				}
			}

		var paths = form.elements["paths"].value;
		var path = paths.split(",");
		var destinationPath = form.elements["destinationPath"].value;
	}
	///////////////////////////////////
	// MOVE PAGES
	///////////////////////////////////
	else if (p_actions == "movePages") {
		var act;
		if (p_actions == "movePages") act = "move";
		if (p_actions == "copyPages") act = "copy";
		var paths = form.elements["paths"].value;
		if (paths == "") {
			window.alert("No pages to "+act+" selected.");
			return;
			}
		var path = paths.split(",");
		var destinationPath = form.elements["destinationPath"].value;
		if (act == "move") {
			for (var i = 0; i < path.length; i++) {
				if (destinationPath.indexOf(path[i]) == 0) {
					window.alert(alertHeaders['move']+"Failed: Moving pages into themselves or their descendants is not possible.\n\nPlease select a different destination.");
					return;
				}
				if (path[i].indexOf(destinationPath) == 0){
					var cutPath = path[i].substring(destinationPath.length);
					var cutLabels = cutPath.split("/");
					if ( (cutLabels.length == 2) && (cutLabels[0] == ""/*otherwise it's root*/) ) {
						window.alert(alertHeaders['move']+"Failed: Destination is same as original location.\n\nPlease select different destination.");
						return;
					}
				}
			}
		}
	}
	///////////////////////////////////
	// ACTIVATE PAGES
	///////////////////////////////////
	else if (p_actions == "activatePages") {
		var checked = countChecked(form.elements);
		var paths = "";
		if (checked == 0) {
			window.alert(alertHeaders['activate']+alertMessages['noSelection']);
			return;
		}
        var allPaths = collectPaths(form.elements);
        var paths = allPaths.split(",");
        var pagesWithChildren = false;
        for (var i in paths) {
            if (nodesInfo[paths[i]].hasChildren) {
                pagesWithChildren = true;
                break;
            }
        }
        if (pagesWithChildren) showLayer('activateLayer');
        else activatePages(false);
		return;
	}
	///////////////////////////////////
	// DEACTIVATE PAGES
	///////////////////////////////////
	else if (p_actions == "deactivatePages") {
		var alertText="";
		var checked = countChecked(form.elements);
		var paths = "";
		if (checked == 0) {
			window.alert(alertHeaders['deactivate']+alertMessages['noSelection']);
			return;
		}
		///if (checked == 1) {
		//	// just one checkbox selected
		//	alertText += "Are you sure you want to deactivate the following page:\n\n";
		//}
		//else alertText += "Are you sure you want to deactivate the following pages:\n\n";

		alertText+=alertHeaders['deactivate']+"Are you sure to deactivate the following pages with all its subpages?\n\n";

		for (var i = 0; i < form.elements.length; i++) {
			if ((form.elements[i].type == "checkbox") && (form.elements[i].checked)) {
				var node=form.elements[i].value;
            	alertText += nodesInfo[node].title+" ("+nodesInfo[node].name+".html)\n";
				paths += form.elements[i].value + ",";
			}
		}
		form.elements["paths"].value = paths.substr(0,paths.length-1);
		var confirmed = window.confirm(alertText);
		if (!confirmed) return;
	}
	form.elements["actions"].value = p_actions;
	form.submit();
}


function countChecked(p_elements) {
	var cnt = 0;
	for (var i = 0; i < p_elements.length; i++) {
		if ((p_elements[i].type == "checkbox") && p_elements[i].checked) cnt++;
	}
	return cnt;
}


function collectPaths(p_elements) {
	var allPaths = "";
	for (var i = 0; i < p_elements.length; i++) {
		if ((p_elements[i].type == "checkbox") && p_elements[i].checked) allPaths += (p_elements[i].value + ",");
	}
	allPaths = allPaths.substr(0,allPaths.length-1);
	return allPaths;
}


function openWin(p_url,p_name,p_add) {
		var w=window.open(p_url,p_name,p_add+",scrollbars=yes,status=yes,resizable=yes");
		if (w && w.focus()) w.focus();
}


function getValidLabel(p_label) {
	var label = "";
	for (var i = 0; i < p_label.length; i++) {
		var charCode = p_label.charCodeAt(i);
		// charCodes: 48-57: 0-9; 65-90: A-Z; 97-122: a-z; 45: -; 95: _
		if (((charCode >= 48) && (charCode <= 57)) || ((charCode >= 65) && (charCode <= 90)) || ((charCode >= 97) && (charCode <= 122)) || charCode==45 || charCode==95) {
			label += p_label.charAt(i);
		}
		//else {
			//if (i == 0) {
			//	window.alert ("Page name should start with a common letter or a number");
			//}
			//return label.toLowerCase();
		//}
	}
	return label.toLowerCase();
}


function checkLabel(p_label)
	{
	for (var i = 0; i < p_label.length; i++) {
		var charCode = p_label.charCodeAt(i);
		if (((charCode >= 48) && (charCode <= 57)) || ((charCode >= 97) && (charCode <= 122)) || charCode==45 || charCode==95)
			{
			// is valid character
			// 48-57: 0-9; 97-122: a-z; 45: -; 95: _
			}
		else
			{
			// is illegal character
			return false;
			}
		}
	return true;
	}


function createLabel(title)
	{
	var label = "";
	var labelRaw;
	var obj=title.split(" ");

	// get rid of the, a, one, der, die, das, la, il etc.
	if (obj[0].length<=3 && obj[1]) labelRaw=obj[1];
	else labelRaw=obj[0];

	for (var i = 0; i < labelRaw.length; i++)
		{
		var charCode = labelRaw.charCodeAt(i);
		// charCodes: 48-57: 0-9; 65-90: A-Z; 97-122: a-z; 45: -; 95: _
		if (((charCode >= 48) && (charCode <= 57)) || ((charCode >= 97) && (charCode <= 122)) || charCode==45 || charCode==95)
			{
			label+=labelRaw.charAt(i);
			}
		else if ((charCode >= 65) && (charCode <= 90))
			{
			label+=labelRaw.charAt(i).toLowerCase();
			}
		else
			{
			//replace illegal characters with -
			label+="-";
			}
		}
	return label;
	}







function movePages(p_url,p_name,p_add)
	{
	var deactTitles="";
	var deactPaths="";
	var deactDelim="";
	var moveTitles="";
	var movePaths="";
	var moveDelim="";
	var form = window.document.forms.mgnlFormMain;

	if (countChecked(form.elements) == 0)
		{
		window.alert(alertHeaders['move']+alertMessages['noSelection']);
		return;
		}

	for (var i = 0; i < form.elements.length; i++)
		{
		if ((form.elements[i].type == "checkbox") && (form.elements[i].checked))
			{
			var node=nodesInfo[form.elements[i].value];
			if (node.isActivated)
				{
				deactTitles+=node['title']+" ("+node['name']+".html)\n";
				deactPaths+=deactDelim+node['handle'];
				deactDelim=",";
				}
			else
				{
				moveTitles+=node['title']+" ("+node['name']+".html)\n";
				movePaths+=moveDelim+node['handle'];
				moveDelim=",";
				}
			}
		}

	if (deactTitles!="")
		{
		var txt=alertHeaders['move'];
		txt+="Moving of activated pages is not allowed.\nDo you want to deactivate the following pages?\n\n";
		txt+=deactTitles;
		txt+="\n";
		if (window.confirm(txt))
			{
			form.elements["paths"].value=deactPaths;
			form.elements["actions"].value="deactivatePages";

			var nextPaths=deactPaths;
			if (movePaths!="") nextPaths+=","+movePaths;
			form.elements["nextPaths"].value=nextPaths;
			form.elements["nextActions"].value="movePages";

			form.submit();
			return;
			}
		else if (moveTitles=="") return;
		else
			{
			var txt=alertHeaders['move'];
			txt+="Do you want to move the following, not activated pages?\n\n";
			txt+=moveTitles;
			txt+="\n";
			if (!window.confirm(txt)) return;
			}
		}
	openWin(p_url+"&allPaths="+movePaths,p_name,p_add);
	}

function copyPages(p_url,p_name,p_add)
	{
	var form = window.document.forms.mgnlFormMain;
	var checked = countChecked(form.elements);
	var paths = "";
	if (checked == 0) {
		window.alert(alertHeaders['copy']+alertMessages['noSelection']);
		return;
	}
	var allPaths = collectPaths(form.elements);
	openWin(p_url+"&allPaths="+allPaths,p_name,p_add);
	}



function activatePages(recursive) {
    var alertText=alertHeaders['activate'];
    var paths = "";
    var form = window.document.forms.mgnlFormMain;
    var checked = countChecked(form.elements);
    //if (checked == 1) {
        // just one checkbox selected
    //    alertText = "Are you sure you want to activate the following page:\n\n";
    //}
    //else alertText = "Are you sure you want to activate the following pages:\n\n";

	var anchestorsTitlesAllowed="";
	var anchestorsTitlesDenied="";
	for (var elem in ancestorsInfo)
		{
		var node=ancestorsInfo[elem];
		if (!node.isActivated)
			{
			var txt=node.title+" ("+node.handle+".html)\n";
			if (node.activatePermission)
				{
				anchestorsTitlesAllowed+=txt;
				}
			else
				{
				anchestorsTitlesDenied+=txt;
				}
			}
		}
	if (anchestorsTitlesDenied!="")
		{
		alertText+="Failed: All superior pages must be activated to fulfil your request.\n\n";
		alertText+="You do not have the permission to activate the following superior files:\n\n";
		alertText+=anchestorsTitlesDenied;
		alertText+="\nPlease contact a person with the appropriate permissions.\n\n";
		window.alert(alertText);
		return;
		}

    alertText+="Are you sure to activate the following pages";
    if (recursive == "true") alertText += " with all its subpages";
	alertText+="?\n\n";

    for (var i = 0; i < form.elements.length; i++) {
        if ((form.elements[i].type == "checkbox") && (form.elements[i].checked)) {
        	var node=form.elements[i].value;
            alertText += nodesInfo[node].title+" ("+nodesInfo[node].name+".html)\n";
            paths += form.elements[i].value + ",";
        }
    }

	if (anchestorsTitlesAllowed!="")
		{
		alertText+=alertLine;
		alertText+="To activate the selected pages, all superior pages must be activated.\n";
		alertText+="The following superior pages are not activated now. Are you sure to activate these superior pages?\n"
		alertText+=anchestorsTitlesAllowed;
		}
    form.elements["paths"].value = paths.substr(0,paths.length-1);
    var confirmed = window.confirm(alertText);
    if (!confirmed) return;
    form.elements["actions"].value = "activatePages";
    form.elements["recursive"].value = recursive;
	form.submit();
}

function deleteNode(path,paragraphName,nodeName) {
	var alertText = "Are you sure you want to delete the selected paragraph?\n\n";
	var confirmed = window.confirm(alertText);
	if (!confirmed) return;
	var path = "/.CMSadmin/tagRequestHandler.html?actions=deleteNode&path="+path+"&paragraphName="+paragraphName+"&nodeName="+nodeName;
	window.location.href=path;
}


function preview(p_href,p_search) {
    var location = p_href.split("?")[0];
    location += "?preview=1";
    if (p_search.length > 0) location += ("&" + p_search.substr(1));
    window.document.location.href = location;
}


function unPreview(p_href) {
    var location = "";
    var parts = p_href.split("?preview=1");
    if (parts.length == 1) location = parts[0];
    else location = parts[0] + parts[1].replace("&","?");
    window.document.location.href = location;
}


function showLayer(id) {
    if (document.all) {
        document.all[id].style.visibility = "visible";
        document.all[id].style.top = (7 + yMousePos) + "px";
        document.all[id].style.left = (7 + xMousePos) + "px";
    }
    else if (document.getElementById) {
        document.getElementById(id).style.visibility = "visible";
        document.getElementById(id).style.top = (7 + yMousePos) + "px";
        document.getElementById(id).style.left = (7 + xMousePos) + "px";
    }
}



function hideLayer(id) {
    if (document.all) {
        document.all[id].style.visibility = "hidden";
    }
    else if (document.getElementById) {
        document.getElementById(id).style.visibility = "hidden";
    }
}



document.write("<script src='/admindocroot/js/getCss.js'></script>");




/* ###################################
### move paragraphs (on content pages)
################################### */

var mgnlMoveNode; //selected container name
var mgnlMoveNodeCollection; //selected container list name

//divs which will be placed onMouseMove
//shadow: half transparent and scaled down editBar
document.write('<div id="mgnlMoveDivShadow" style="position:absolute;top:-50;left:-50;z-index:100;visibility:hidden;"><img src="/admindocroot/images/mgnlMoveShadow.gif"></div>');
//denied: denied sign
document.write('<div id="mgnlMoveDivDenied" style="position:absolute;top:-50;left:-50;z-index:100;visibility:hidden;"><img src="/admindocroot/images/mgnlMoveDenied.gif"></div>');
//allowed: text 'Move above here'
document.write('<div id="mgnlMoveDivAllowed" style="position:absolute;top:-50;left:-50;z-index:100;visibility:hidden;font-family:Verdana;font-size:10px;">Move the paragraph selected above this one</div>');

var mgnlMoveDont=false;
//move will not start as long as mgnlMoveDont is true
//set true when clicking a button on a editBar ((and on timeout at mgnlMoveReset()))
var mgnlMove=false; //true as long as a container is selected

function mgnlMoveNodeStart(containerList,container)
	{
	if (!mgnlMoveDont && !mgnlMove)
		{
		var bar=document.getElementById(containerList+'__'+container);
		bar.className='obinaryEditBarPushed';

		//var tmp=bar.id.split('__');
		mgnlMoveNodeCollection=containerList;
		mgnlMoveNode=container;

		var divShadow=document.getElementById('mgnlMoveDivShadow');
		divShadow.style.visibility='visible';

		var divDenied=document.getElementById('mgnlMoveDivDenied');
		var divAllowed=document.getElementById('mgnlMoveDivAllowed');
		if (divAllowed.style.visibility=='hidden') divDenied.style.visibility='visible'; // only if new selection

		mgnlMove=true;
		}
	}



 function mgnlMoveNodeHigh(bar)
	{
	var tmp=bar.id.split('__');
	if (mgnlMove)
		{
		if (tmp[0]==mgnlMoveNodeCollection && tmp[1]!=mgnlMoveNode)
			{
			//same container list and not the container to move: highlight this bar
			bar.className='obinaryEditBarHigh';
			var divDenied=document.getElementById('mgnlMoveDivDenied');
			divDenied.style.visibility='hidden';
			var divAllowed=document.getElementById('mgnlMoveDivAllowed');
			divAllowed.style.visibility='visible';
			}
		}
	}

function mgnlMoveNodeReset(bar)
	{
	tmp=bar.id.split('__');
	if (mgnlMove)
		{
		if (tmp[0]==mgnlMoveNodeCollection)
			{
			//same containre list
			if (tmp[1]!=mgnlMoveNode)
				{
				//not the container to move: reset this bar
				bar.className='obinaryEditBar';
				}
			var divDenied=document.getElementById('mgnlMoveDivDenied');
			divDenied.style.visibility='visible';
			var divAllowed=document.getElementById('mgnlMoveDivAllowed');
			divAllowed.style.visibility='hidden';
			}
		}
	}

 function mgnlMoveNodeEnd(bar,path)
	{
	if (mgnlMove)
		{
		var tmp=bar.id.split('__');
		if (mgnlMoveNodeCollection==tmp[0] && mgnlMoveNode!=tmp[1])
			{
			//same container list and not container to move
			bar.className='obinaryEditBarPushed';

			// tmp
			//alert("Moving paragraph\n\nContainerList: "+form.MoveContainerList.value+"\nContainer to move: "+form.MoveContainer.value+"\nmove above Cotainer: "+form.MoveContainerAbove.value);

			//form.submit();
			document.location.href='/.CMSadmin/tagRequestHandler.html?MoveNodeCollection='+mgnlMoveNodeCollection+'&MoveNode='+mgnlMoveNode+'&MoveNodeAbove='+tmp[1]+'&path='+path+'&actions=moveNode';
			}
		}
	}


function initMouseEvent()
	{
	// ns 4, check if needed for ns 6+
	if (navigator.appName=="Netscape")
		{
		document.captureEvents(Event.MOUSEMOVE);
		document.captureEvents(Event.MOUSEDOWN);
		}
	document.onmousemove=getMousePos;
	document.onmousedown=mgnlReset;
	}



var xMousePos = 0; //used in site admin (place layers)
var yMousePos = 0;

initMouseEvent();


function mgnlReset()
    {
    if (mgnlMove)
        {
        var editBarTable=document.getElementById(mgnlMoveNodeCollection+'__'+mgnlMoveNode);
		editBarTable.className='obinaryEditBar';

		var divShadow=document.getElementById('mgnlMoveDivShadow');
        divShadow.style.visibility='hidden';
		divShadow.style.left=-50;
		divShadow.style.top=-50;

		var divDenied=document.getElementById('mgnlMoveDivDenied');
		divDenied.style.visibility='hidden';
		divDenied.style.left=-50;
		divDenied.style.top=-50;

		var divAllowed=document.getElementById('mgnlMoveDivAllowed');
		divAllowed.style.visibility='hidden';
		divAllowed.style.left=-50;
		divAllowed.style.top=-50;

		mgnlMove=false;

		//trick! otherwise, by clicking a cont. of a different list, this one would be selected directly. now, the already selected will just be disabled
		mgnlMoveDont=true;
		setTimeout("mgnlMoveDont=false;",500);
        }

    if (mgnlSort)
    	{
    	if (!mgnlSortSubmit)
    		{
			var trSelected=document.getElementById('sadminTr'+mgnlSortPageId);
			trSelected.style.backgroundColor='';
			}
			
		var divShadow=document.getElementById('mgnlSortDivShadow');
        divShadow.style.visibility='hidden';
		divShadow.style.left=-50;
		divShadow.style.top=-50;

		var divDenied=document.getElementById('mgnlSortDivDenied');
		divDenied.style.visibility='hidden';
		divDenied.style.left=-50;
		divDenied.style.top=-50;

    	mgnlSort=false;
    	}
    }


function getMousePos(evt)
	{
	var x,y;
	if (document.all)
		{
		x=window.event.clientX+document.body.scrollLeft;
		y=window.event.clientY+document.body.scrollTop;
		}
	else
		{
		x=evt.pageX;
		y=evt.pageY;
		}
	xMousePos = x;
	yMousePos = y;

	if (mgnlMove) //move content paragraphs
		{
		var divShadow=document.getElementById('mgnlMoveDivShadow');
		divShadow.style.left=x+15;
		divShadow.style.top=y-20;

		var divDenied=document.getElementById('mgnlMoveDivDenied');
		divDenied.style.left=x+5;
		divDenied.style.top=y-15;

		var divAllowed=document.getElementById('mgnlMoveDivAllowed');
		divAllowed.style.left=x+20;
		divAllowed.style.top=y-19;
		}

	if (mgnlSort) //sort pages in site admin
		{
		var divShadow=document.getElementById('mgnlSortDivShadow');
		divShadow.style.left=x+5;
		divShadow.style.top=y-20;

		var divDenied=document.getElementById('mgnlSortDivDenied');
		divDenied.style.left=x+5;
		divDenied.style.top=y-15;
		}
	}


/* ###################################
### sort pages (on site admin)
################################### */

//divs which will be placed onMouseMove
//shadow: half transparent, scaled down editBar
document.write('<div id="mgnlSortDivShadow" style="position:absolute;top:-50;left:-50;z-index:100;visibility:hidden;"><img src="/admindocroot/images/sadminSortShadow.gif"></div>');
//denied: denied sign
document.write('<div id="mgnlSortDivDenied" style="position:absolute;top:-50;left:-50;z-index:100;visibility:hidden;"><img src="/admindocroot/images/sadminSortDenied.gif"></div>');
//allowed: text 'Move above here'
//document.write('<div id="mgnlSortDivAllowed" style="position:absolute;top:-50;left:-50;z-index:100;visibility:hidden;font-family:Verdana;font-size:10px;">Move the page selected above here</div>');
//div with the form (on a div because the form generates a linebreak in some browser)
//document.write("<div style=position:absolute;top:0;left:0;visibility:hidden;><form name=mgnlFormSortPage method=post><input type=hidden name=SortPage><input type=hidden name=SortPageAbove></form></div>");


var mgnlSortPage;
var mgnlSortPageId;
var mgnlSortSubmit=false;
var mgnlSort=false; //true as long as a page is selected



function mgnlSortPageStart(id,handle)
	{
	if (!mgnlSort && !mgnlSortSubmit)
		{
		var trSelected=document.getElementById('sadminTr'+id);
		trSelected.style.backgroundColor='#cccccc';
		mgnlSortPage=handle;
		mgnlSortPageId=id;
		mgnlSort=true;

		var divShadow=document.getElementById('mgnlSortDivShadow');
		divShadow.style.visibility='visible';

		var divDenied=document.getElementById('mgnlSortDivDenied');
		divDenied.style.visibility='visible';
		}
	}


function mgnlSortPageEnd(id,handle)
	{
	if (mgnlSort)
		{
		mgnlSortSubmit=true;
		//var form=document.forms.mgnlFormSortPage;
		//form.SortPage.value=mgnlSortPage;
		//form.SortPageAbove.value=handle;

		// tmp
		//alert("Sorting pages\n\nPage to move: "+form.SortPage.value+"\nmove above Page: "+form.SortPageAbove.value);

		//form.submit();

		var loc="/.CMSadmin/methods.html?actions=sortPage&SortPage="+mgnlSortPage+"&SortPageAbove="+handle;

		//alert(mgnlSortPage+" "+handle);
		document.location.href=loc;
		}
	}



function mgnlSortPageHigh(id,handle,lastId)
	{
	if (mgnlSort && handle!=mgnlSortPage && lastId!=mgnlSortPageId)
		{
		var trHigh=document.getElementById('sadminTr'+id+'Pre');
		trHigh.style.backgroundColor='#000000';

		var divDenied=document.getElementById('mgnlSortDivDenied');
		divDenied.style.visibility='hidden';

		}
	}

function mgnlSortPageReset(id,handle)
	{
	if (mgnlSort && handle!=mgnlSortPage)
		{
		var trRes=document.getElementById('sadminTr'+id+'Pre');
		trRes.style.backgroundColor='';

		var divDenied=document.getElementById('mgnlSortDivDenied');
		divDenied.style.visibility='visible';
		}
	}

