/*
'#################################################################################
'## Copyright (C) 2005 René de Jong, O.S.G. Willem Blaeu
'##
'## This program is free software; you can redistribute it and/or modify
'## it under the terms of the GNU General Public License as published by
'## the Free Software Foundation; either version 2 of the License, or
'## (at your option) any later version.
'## 
'## This program is distributed in the hope that it will be useful,
'## but WITHOUT ANY WARRANTY; without even the implied warranty of
'## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
'## GNU General Public License for more details.
'## 
'## You should have received a copy of the GNU General Public License
'## along with this program; if not, write to the Free Software
'## Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
'##
'## This program is a school/student expanded version based on Nukedit 4.9, 
'## Copyright (C) 2004 Rick Eastes.
'## You can find more info on the original version at http://www.nukedit.com
'##
'## The "powered by" text/logo with a link back to http://www.nukedit.com and 
'## http://www.willemblaeu.nl in the footer of the pages MUST remain visible
'## when the pages are viewed on the internet or intranet.
'## Donations made to O.S.G. Willem Blaeu may waiver this requirement.
'## Speak to ict-beheer@willemblaeu.nl
'##
'## All copyright notices regarding nukedit blaeu edition
'## must remain intact in the scripts and in the outputted HTML
'#################################################################################
*/

//Set Global Variables

var deactivatemenu = false;
var editorvisible = false;
var arySelected = new Array();
var aryObjSelected = new Array();
var nTimeOutId = -1;
var DHTML = (document.getElementById || document.all || document.layers);

if (navigator.appName == "Netscape") {
	layerStyleRef = "layer.";
	layerRef = "document.layers";
	styleSwitch = "";
}
else {
	layerStyleRef = "layer.style.";
	layerRef = "document.all";
	styleSwitch = ".style";
}

function openWindow(url) {
	popupWin = window.open(url, 'new_page', 'width=450, height=400, scrollbars=yes')  
}

function popupWindow(url, nWidth, nHeight) {
	nWidth = parseInt(nWidth) + 20;
	nHeight = parseInt(nHeight) + 30;

	newWindow = window.open(url, "newWindow", "left=0, top=70, width = " + nWidth + ", height = " + nHeight);
}              

function CloseSoon(strDiv, delay) {
	if (!delay)
		delay = 1000;	
	return setTimeout("HideLayer('" + strDiv + "')", delay);
}

function ShowSoonAt(strDiv, x, y) {
	if (document.nOpenTimoutID > 0)
		clearTimeout(document.nOpenTimoutID)

	document.nOpenTimoutID = setTimeout("ShowLayerAt('" + strDiv + "', " + x + ", " + y + ")", 400);
}

function OnMouseOverMenu(strDivId, nLevel, objDiv, align) {
	// Triggered when user mouses a menu item
	// strDivId:		If !="", then it is a parent also. We then open the child menu named strDivId
	// nLevel:			What level is this menu item at. Root = 1, 
	// objDiv:			The object of the div that the user moused over

	if (editorvisible == true || deactivatemenu == true)
		return;
	
	HideMenus(nLevel);
	clearTimeout(nTimeOutId);
	
	if (objDiv.className) {
		objDiv.className = 'menuover';
		arySelected[nLevel] = strDivId;
		aryObjSelected[nLevel] = objDiv;
	}

	if (strDivId != "") {	//If there is a child menu
		//Fix: If there is a long menu at the bottom of the page, we need to move it up a bit so it fits
		objMenu = MM_findObj(strDivId);
		y1 = objDiv.offsetTop - 1; 
		x1 = objDiv.width;
		
		if (objDiv.offsetParent) {	//If we're allowed to get parent element that offset comes from
			objDivCopy = objDiv;
			y1abs = 0;	
			while (objDivCopy.offsetParent) {
				objDivCopy = objDivCopy.offsetParent;
				y1abs += objDivCopy.offsetTop;
			}
			y1abs += objDiv.offsetTop;

			y2 = objMenu.clientHeight + y1abs;
			//DebugMsg("y1:" + y1 + " y2:" + y2 + "");
			if (y2 > document.body.clientHeight + document.body.scrollTop)
				y1 = y1 - (y2 - document.body.clientHeight - document.body.scrollTop);
		}
		
		
		if (align == "horiz" && nLevel == 1) {
			ShowLayerAt(strDivId, "NaN", getObj(strDivId).style.clientTop);
		}
		else {
			ShowLayerAt(strDivId, x1, y1);
		}
		
	}
}

function HideMenusSoon()
{
		nTimeOutId = setTimeout("HideMenus(1)", 1500);
}

function HideMenus(nLevel) {
	//Hides All menus from current level onwards an sets the layer style back to menuout

	if (deactivatemenu == true)
		return;

	for (i = nLevel; i < arySelected.length; i++) {
		if (arySelected[i]) {
			HideLayer(arySelected[i]);
			arySelected[i] = null;
		}
		
		if (aryObjSelected[i]) {	
			aryObjSelected[i].className = 'menuout';
			aryObjSelected[i] = null;
		}
	}

}

function ResetStyle(nLevel) {
	//Resets All menustyles from current level onwards to menuout
	
	for (i = nLevel; i < aryObjSelected.length; i++) {
		if (aryObjSelected[i]) {				
			aryObjSelected[i].className = 'menuout';
			aryObjSelected[i] = null;
		}
	}
}


function HideLayerTrans(layerName) {
	obj = getObj(layerName);

	if (obj.filters[0])
		obj.filters[0].Apply();

	getObjStyle(layerName).visibility = "hidden";

	if (obj.filters[0])
		obj.filters[0].Play();	
}

function HideLayer(layerName) {
	getObjStyle(layerName).visibility = "hidden";
}

function ShowLayerTrans(layerName) {
	obj = getObj(layerName);

	if (obj.filters[0])
		obj.filters[0].Apply();

	getObjStyle(layerName).visibility = "visible";
	
	if (obj.filters[0])
		obj.filters[0].Play();	
}


function ShowLayer(layerName) {
	getObjStyle(layerName).visibility = "inherit";
}

function DebugMsg(message) {
	//Puts message into top of page in realtime
	SetContent("Debug", eval(layerRef + '["Debug"].innerHTML') + "  " + message);  
}

function SetContent(layerName,content) {
	eval(layerRef + '["' + layerName + '"].innerHTML = "' + content + '"');
}


function ShowLayerAt(layerName,x,y) {
	ShowLayer(layerName);

	if (!isNaN(x))
		getObjStyle(layerName).left = x;
	
	if (!isNaN(y))
		getObjStyle(layerName).top = y;
	
}

function showSubMenu(x, y, layertext) {
	x = x + document.body.scrollLeft + 5;
	y = y + document.body.scrollTop - 5;

	divSubMenu.innerHTML = layertext;
	ShowLayerAt("divSubMenu", x, y);
}

/*
function toggleLayer(layerName){
	if (setupvisible == "false") {
		setupvisible = "true";
		showLayer(layerName);
	}
	else {
		setupvisible = "false";
		hideLayer(layerName);
	}
}
*/

function showEditLayer(parentid, menuid, x, y, site) {
	deactivatemenu = true;
	x = x + document.body.scrollLeft - 8;
	y = y + document.body.scrollTop - 8;
	layertext = "<a href='" + site + "utilities/menumanager.asp?action=add&parentid=" + parentid + "&menuid=" + menuid + "' class=imagelink><img src='" + site + "gfx/context-new.gif' border=0 align=top alt='Add a page under this one' vspace=0></a><br>";
	layertext += "<a href='" + site + "utilities/menumanager.asp?action=editcontent&parentid=" + parentid + "&menuid=" + menuid + "' class=imagelink><img src='" + site + "gfx/context-edit.gif' border=0 align=top alt='Edit the Content' vspace=0></a><br>";
	layertext += "<a href='" + site + "utilities/menumanager.asp?action=edit&menuid=" + menuid + "' class=imagelink><img src='" + site + "gfx/context-properties.gif' border=0 align=top alt='Edit Properties' vspace=0></a><br>";
	if (parentid != -1)
		layertext += "<a href='" + site + "utilities/menumanager.asp?action=delete&menuid=" + menuid + "' class=imagelink><img src='" + site + "gfx/context-delete.gif' border=0 align=top alt='Delete This menu Item' vspace=0></a>";
	
	getObj("divEditMenu").innerHTML = layertext;

	ShowLayerAt("divEditMenu", x, y);
}

function getObjStyle(name) {
	if (document.getElementById)
  		return document.getElementById(name).style;
	else if (document.all)
		return document.all[name].style;
	else if (document.layers)
		return document.layers[name];
	else 
		return false;
}

function getObj(name) {
	if (document.getElementById)
		return document.getElementById(name);
	else if (document.all)
		return document.all[name];
	else if (document.layers)
		return document.layers[name];
	else
		return false;
}


//Cookie Helpers

function getCookieVal(offset) {
   var endstr = document.cookie.indexOf (";", offset);

   if (endstr == -1)
   	endstr = document.cookie.length;
   return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie(name) {
        var arg = name + "=";
        var alen = arg.length;
        var clen = document.cookie.length;
        var i = 0;
        while (i < clen) {
                var j = i + alen;
                if (document.cookie.substring(i, j) == arg)
                        return getCookieVal (j);
                i = document.cookie.indexOf(" ", i) + 1;
                        if (i == 0)
                                break;
                }
   return null;
}

function SetCookie (name, value) {
        var argv = SetCookie.arguments;
        var argc = SetCookie.arguments.length;
        var expires = (argc > 2) ? argv[2] : null;
        var path = (argc > 3) ? argv[3] : null;
        var domain = (argc > 4) ? argv[4] : null;
        var secure = (argc > 5) ? argv[5] : false;
        document.cookie = name + "=" + escape (value) +
			((expires == null) ? "" : ("; expires=" +
			expires.toGMTString())) +
			((path == null) ? "" : ("; path=" + path)) +
			((domain == null) ? "" : ("; domain=" + domain)) +
			((secure == true) ? "; secure" : "");
}

//Standard Dreamweaver routines

function MM_validateForm() { //v3.0
	var i, p, q, nm, test, num, min, max, errors = '', args = MM_validateForm.arguments;

	for (i = 0; i < (args.length - 2); i += 3) { 
		test = args[i + 2]; 
		val = MM_findObj(args[i]);
		if (val) { 
			nm = args[i + 1];
			if (nm == '') {
				nm = val.name;
			}
			if ((val = val.value) != "") {
				if (test.indexOf('isEmail') != -1) {
					p = val.indexOf('@');
					if (p < 1 || p == (val.length - 1)) 
						errors += '- ' + nm + ' must contain an e-mail address.\n';
				}
				else if (test!='R') {
					num = parseFloat(val)
					if (val != '' + num)
						errors += '- ' + nm + ' must contain a number.\n';
				        if (test.indexOf('inRange') != -1) {
						p = test.indexOf(':');
					min = test.substring(8, p);
					max = test.substring(p + 1);
					if (num < min || max < num)
						errors += '- ' + nm + ' must contain a number between ' + min + ' and ' + max + '.\n';
				}
			}
		}
		else if (test.charAt(0) == 'R')
			errors += '- ' + nm + ' is required.\n';
		}
	}

	if (errors) {
		alert('The following error(s) occurred:\n' + errors);
	}

	document.MM_returnValue = (errors == '');
}


function MM_swapImgRestore() { //v3.0
	var i, x, a = document.MM_sr;

	for (i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
		x.src = x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d = document;

	if (d.images) {
		if (!d.MM_p)
			d.MM_p = new Array();

		var i, j = d.MM_p.length, a = MM_preloadImages.arguments;
		
		for ( i = 0; i < a.length; i++)
			if (a[i].indexOf("#") != 0) {
				d.MM_p[j] = new Image;
				d.MM_p[j++].src = a[i];
			}
	}
}

function MM_findObj(n, d) { //v4.01
	var p,i,x;

	if (!d)
		d = document;
	if ((p = n.indexOf("?")) > 0 && parent.frames.length) {
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0,p);
	}
	if (!(x = d[n]) && d.all) 
		x = d.all[n];
	for (i = 0; !x && i < d.forms.length; i++)
		x = d.forms[i][n];
	for (i = 0; !x && d.layers && i < d.layers.length; i++)
		x = MM_findObj(n, d.layers[i].document);
	if (!x && d.getElementById)
		x = d.getElementById(n);
	return x;
}

function MM_swapImage() { //v3.0
	var i, j = 0, x, a = MM_swapImage.arguments;
	
	document.MM_sr = new Array;
	for (i = 0; i < (a.length - 2); i += 3)
		if ((x = MM_findObj(a[i])) != null) {
			document.MM_sr[j++] = x;
			if (!x.oSrc)
				x.oSrc = x.src;
			x.src = a[i + 2];
		}
}

function bookmark(url, description) {
	var netscape = "Netscape and Mozilla users: CTRL+D to add to favourites.";
	if (navigator.appName == 'Microsoft Internet Explorer') {
		window.external.AddFavorite(url, description); 
	}
	else { 
		alert(netscape); 
	}
}
