// ==================================================
// vars
// ==================================================

// ticker vars

var newsticker	= 0;		// (moeten we de newsticker initialiseren?) wordt eventueel later nog op 1 gezet
var ticktid, tickchartel, tickactwidth;
var pgScrollTid, pgScrollPos;
var pgScrollSpeed = 50;
var pgScrollDelay = 2*1000;
var glowCount;
var glowColors = new Array("7A6800", "665700", "7A6800", "ccad00", "ffffff", "ccad00");
var doInit = true;

// ==================================================
// Function: Init Page na onload
// ==================================================

function initpage(align_set, width_set, page_name, is_admin, is_input, is_percent, has_menuset, forceframe) {
	// hey main.php zit in de topframe vd window, dat mag niet, we moeten in frameset zitten!
	//if (top == self && forceframe) {
	//	//alert('we are in main.php => reload index.php?'+querystring);
	//	location.href = "../index.php?" + querystring;
	//	return;
	//}

	// zet focus op window aangezien window in frameset staat
	if (!nofocus) window.focus();

	// zet adminbar weer op 0 indien geen adminbar
	if (!is_admin) adminbarh = 0;

	// reken procenten om in pixels, indien width_set in procenten is aangegeven
	if (is_percent) width_set = Math.round(document.body.clientWidth * width_set / 100);

	// check of deze functie al is aangeroepen, zoniet zorg er dan voor dat dit niet nog eens kan gebeuren (bij timeout > 5sec)
	if (is_initpage) return false;
	//clearTimeout(forceload);
	is_initpage = 1;

	blocksetw = width_set;	// onthoud global voor evt. strakkies

	// afmetingen van document
	docw = document.body.clientWidth;
	doch = document.body.clientHeight;

	// check alignment
	if (align_set == 'center') {
		blocksetx	= (docw - width_set) / 2;	// center align
	} else if (align_set == 'right') {
		blocksetx	= docw - width_set;			// right align
	} else {
		blocksetx	= 0;						// left align
	}

	// toon de main content
	posElement('blockset',"left",blocksetx);
	if (is_admin == 1) {
		// adminbar
		//posElement('adminbartop',"left",blocksetx);
		//posElement('adminbarsub',"left",blocksetx);
		document.admin.pagelabel.defaultValue = document.admin.pagelabel.value;
	} else if (is_admin == 2) {
		// subscriber-bar
		//posElement('adminbartop',"left",blocksetx);
	}

	// check of adminbar getoond moet worden
	if (adminbarh) {
		//posElement('blockset',"top",adminbarh);
		//getElement('adminbartop').style.visibility	= 'visible';
		//if (is_admin == 1) getElement('adminbarsub').style.visibility	= 'visible';

		// verplaats ook alle menus naar beneden
		if (has_menuset) {
			i = 0;
			while (objmbut = getElement('mbut'+i)) {
				objmbut.style.pixelTop += adminbarh;
				getElement("menuitems" + eval("document.formmenudata.menuidx"+i+".value")).style.pixelTop += adminbarh;
				i++;
			}
		}
	}
	getElement('blockset').style.visibility = 'visible';

	// zet titel
	// if (page_name) window.top.document.title = page_name + (is_admin==1 ? " (" + pageid + ")" : "");
	if (page_name && typeof(window.top.document) == "object") {
		window.top.document.title = page_name + (is_admin==1 ? " (" + pageid + ")" : "");
	}

	// indien er een set menu's is...
	if (has_menuset) {
		//
		// indien menualign anders dan 'no' is, herpositioneer alle menu's dan...
		// momenteel alleen support voor 'left'! De opties 'right' en 'center' volgens nog...
		//
		dfmenu = document.formmenudata;
		if (dfmenu.menualign.value != 'no') {
			i = 0;
			while (objmbut = getElement('mbut'+i)) {
				objmbut.style.pixelLeft += blocksetx;													// pas menu-xpos aan aan blocksetx
				getElement("menuitems"+eval("dfmenu.menuidx"+i+".value")).style.pixelLeft += blocksetx;	// doe dit ook met menuitems
				i++;
			}
		}
		//
		// maak menu's zichtbaar
		//
		if (displaymenus) {
			i = 0;
			while (objmbut = getElement('mbut'+i)) {
				objmbut.style.visibility = 'visible';
				i++;
			}
		}
	}

	// maak div-loader ONzichtbaar
	//clearTimeout(idloader);
	//getElement	('divloader').style.visibility = 'hidden';

	if (gotocontent.length) {
		// indien gotocontent is gezet, spring dan naar dit item
		//alert(location.href);
		location.href += '#cid'+gotocontent;
	} else {
		// indien yoff != 0 is scroll dan naar benieden
		setyoff(yoffset);
	}

	// ** OUD EN NIET MEER IN GEBRUIK ** indien ingelogd positioneer content-editlayer
	if (is_input && internaleditor) {
		// maximaliseer hoogte van CED afhankelijk van windowheight
		ced_winsizes[1] = Math.min(ced_winsizes[1], (is_safari ? document.clientHeight : document.body.clientHeight) - 150);
		//getElement('cedit').style.pixelLeft = window.top.cedx;
		//getElement('cedit').style.pixelTop = window.top.cedy;
		//cedsize_state = 1 - window.top.cedsw;
		sw_cedboxsize(0);
		//for (i = 0; i < linkedgroups.length; i++) {
		//	for (j = 0; j < linkedgroups[i].length; j++) {
		//		//alert(i + " | " + j);
		//		getElement('glink'+linkedgroups[i][j]).src = "gfx/glink1.gif";
		//	}
		//}
	}

	// toon cedlayer indien in juiste modi
	if (edshow && edcontentid && is_input) ced_load(edcontentid, 0, 1);
	if (pushcontent && edcontentid && is_input) ced_pushcontent(edcontentid);

	// Start news-ticker indien van toepassing
	if (newsticker) ticker_init();

	// start de flying toolbar
	//ftbar_init();

	// indien arrays bestaan, laadt plaatjes dan in
	// JS 22-5-06: we plaatsen beelden gewoon direct in <IMG SRC=''>
	if (typeof(imgids) != 'undefined') {
		for (i = 0; i < imgids.length; i++) {
			if (getElement('i'+imgids[i])) getElement('i'+imgids[i]).src = imgnames[i];
		}
	}

	// geef melding als aantal woorden zijn overschreden
	if (exceedwords.length != 0) showalerts(0);

	// toon guides
	if (getElement('guideh')) {
		if (guideprops[0] == 1) {
			getElement('guideh').style.visibility = 'visible';
			getElement('guidev').style.visibility = 'visible';
		}
		getElement('guidev').style.pixelLeft = guideprops[1];
		getElement('guidev').style.pixelTop	= adminbarh;

		getElement('guideh').style.pixelLeft = 0;
		getElement('guideh').style.pixelTop	= guideprops[2];
	}

	// toon infobox
	if (getElement('grabinfo')) {
		if (infoprops[0] == 1) {
			getElement('grabinfo').style.visibility = 'visible';
		}
		getElement('grabinfo').style.pixelLeft 	= infoprops[1];
		getElement('grabinfo').style.pixelTop	= infoprops[2];
	}

	// JS 26-1-07: behandel hiermenu's, zie functions_user.php / ws_hiermenu()
	hm_init();

	// JS 27-nov-07: stel object-breedtes in
	setObjWidths();

	// JS 1-3-07: automatisch vertikaal scrollen (tbv demo MIPIM 2007)
	if (scrolly>0) {
		setTimeout("initPageScroll()", pgScrollDelay);
	}

	// JS 5-apr-07: dirty trick om een plaatje te refreshen na die bewerkt en close-editor gedrukt te hebben
	if (reloadImage.length) reloadImages(0);

	// indien scroller aanwezig, start deze dan!
	if (typeof(scrollInit) == "function") scrollInit();

	// JS 12-apr-07: indien in editmode, check dan alle images
	//if (is_input) check_imagesizes();

	// JS 26-jun-07: oplichten van bepaalde group/block, tevens object in beeld scrollen
	// JS 13-aug-07: is_admin, kan nu altijd worden uitgevoerd; toegevoegd contenthl, kan nu ook 1 content-item highlighten
	//if (is_admin) {
		var hlObj = false;
		if (blockhl && getElement('block'+blockhl)) {
			hlObj = getElement('block'+blockhl);
		} else if (contenthl && getElement('content'+contenthl)) {
			hlObj = getElement('content'+contenthl);
		}

		if (hlObj) {
			hlObj.style.border = '2px dashed #000000';
			//hlObj.style.background = 'transparent';
			//hlObj.style.backgroundColor = "#fff0a0";
			hlObj.style.padding = '2px';
			hlObj.style.margin = '2px';

			var objTop = obj_curtop(hlObj);
			var objLeft = obj_curleft(hlObj);
			window.scrollTo(
				objLeft ? Math.max(0, objLeft-10) : 0,
				objTop ? Math.max(0, objTop-10) : 0
			);
			glowCount = 0;
			setInterval("glow('"+hlObj.id+"')",100);	// 300
		}
	//}

	// toon uitgeklapte tree-div
	if (treevis) exp_tree(1);
}

function glow(el) {
//alert(el);
 getElement(el).style.borderColor = "#"+glowColors[glowCount];
 glowCount++;
 if (glowCount>=glowColors.length) glowCount = 0;
}

function initPageScroll() {
	scrolly = Math.min(scrolly,20);
	pgScrollPos = getyoff();
	pgScrollTid = setInterval("doPageScroll()", pgScrollSpeed);
}

function doPageScroll() {
	pgScrollPos+=scrolly;
	setyoff(pgScrollPos);
}

function showalerts(str) {
	if (str) {
		centerobject('grabalert', 350, 350, 1);
		getElement('alerttext').innerText = str;
	} else {
		tmp = "";
		tmpl = exceedwords.length;
		for (i = 0; i < tmpl; i++) tmp += exceedwords[i] + (i+1<tmpl ? "\n\n" : "");
		centerobject('grabalert', 350, 350, 1);
		getElement('alerttext').innerText = tmp;
	}
}

// ==================================================
// printervriendelijke versie, zonder poespas
// ==================================================

function initprintable(page_name) {
	// indien arrays bestaan, laadt plaatjes dan in
	if (typeof(imgids) != 'undefined') {
		for (i = 0; i < imgids.length; i++) {
			if (getElement('i'+imgids[i])) getElement('i'+imgids[i]).src = imgnames[i];
		}
	}

	// JS 27-nov-07: stel object-breedtes in
	setObjWidths();

	// zet focus op window aangezien window in frameset staat
	if (!nofocus) window.focus();

	// zet titel
	if (page_name) {
		window.top.document.title = page_name + " (printer-friendly)";
		getElement('doctitle').innerText = page_name;
	}

	// print it
	if (typeof(window.print) != 'undefined') window.print();
}

// ==================================================
// toon / verberg menu's (handig tijdens editten text)
// ==================================================

function menu_toggle() {
	is_showmenu = 1 - is_showmenu;
	visje = is_showmenu ? "visible" : "hidden";
	i = 0;
	while (objmbut = getElement('mbut'+i)) {
		objmbut.style.visibility = visje;
		i++;
	}
}

// ==============================================
// flying toolbar
// ==============================================

var ftbarTID, ftbarANIM, ftbarY_src, ftbarY_dst, ftbarTEL;
var ftbarX = 655;
var ftbarH = 60;

function ftbar_init() {
	ftbarY_src = document.body.clientHeight - ftbarH + getyoff();
	getElement('ftbar').style.pixelLeft = ftbarX;
	getElement('ftbar').style.pixelTop 	= ftbarY_src;
	getElement('ftbar').style.visibility = 'visible';
	ftbarTID = setInterval("ftbar_check()", 1500);
}

function ftbar_check() {
	ftbarY_dst = document.body.clientHeight - ftbarH + getyoff();
	if (ftbarY_dst == ftbarY_src) return;
	ftbarTEL = 0;
	clearInterval(ftbarANIM);
	ftbarANIM = setInterval("ftbar_anim()", 50);
}

function ftbar_anim() {
	getElement('ftbar').style.pixelTop 	= Math.round( (1-rray[ftbarTEL]) * ftbarY_src + rray[ftbarTEL] * ftbarY_dst);
	ftbarTEL++;
	if (ftbarTEL >= rray.length) {
		clearInterval(ftbarANIM);
		ftbarY_src = ftbarY_dst;
	}
}

// --------------------------

var busy_getstats = 0;

function getclickstats(stage, cid) {
	if (busy_getstats) {
		setTimeout("getclickstats(0, "+cid+")", 1500);
		return;
	}
	// zet op locked zodat pagina niet tegelijkertijd nog eens ingeladen kan worden
	busy_getstats = 1;

	// toon help-layer met 'loading' melding
	showbighelp('('+cid+') Statistieken',1);

	// vraag stats op in hidden frame
	window.top.hide.location.href = "getcontentstats.php?contentid="+cid;
}

// toon | hide guides
function guide_show() {
	guideprops[0] = 1 - guideprops[0];
	getElement('guideh').style.visibility = guideprops[0] ? "visible" : "hidden";
	getElement('guidev').style.visibility = guideprops[0] ? "visible" : "hidden";

	c = guideprops[0] + "," + getElement('guidev').style.pixelLeft + "," + getElement('guideh').style.pixelTop;
	setCookie("ws_guide", c, cookieexp, "/", hostname);
}

// bereken guide-positie in cm en toon in infobox
function guide_calc(px, prefix, suffix) {
	// Windows schermen zijn standaard ingesteld op 96 DPI, oftewel 96 pixels per inch
	// 1 inch = 2,54 cm. Omgerekend: in 1 cm passen 96/2,54 = 37,8 pixels --- 17,0 cm x 37,8 pixels = 642 pixels
	var inch		= 2.54;
	var screenDPI	= (typeof(screen.logicalXDPI) != 'undefined') ? screen.logicalXDPI : 96;
	var cm			= px / (screenDPI / inch);
	return prefix + px + ' pixels<br>' + Math.round(cm*100)/100 + ' cm @ '+screenDPI+'dpi' + suffix;
}

function info_show() {
	infoprops[0] = 1 - infoprops[0];
	getElement('grabinfo').style.visibility = infoprops[0] ? "visible" : "hidden";

	c = infoprops[0] + "," + getElement('grabinfo').style.pixelLeft + "," + getElement('grabinfo').style.pixelTop;
	setCookie("ws_info", c, cookieexp, "/", hostname);
}

function gotourl(urlbase, val) {
	location.href = urlbase + val;
}

function showlayer(objname, vis, xpos, ypos) {
	if (vis == null) {
		getElement(objname).style.visibility = (getElement(objname).style.visibility == 'hidden') ? 'visible' : 'hidden';
		if (xpos != null) getElement(objname).style.left = xpos+'px';
		if (ypos != null) getElement(objname).style.top = ypos+'px';
	} else if (vis) {
		getElement(objname).style.visibility = 'visible';
		if (xpos != null) getElement(objname).style.left = xpos+'px';
		if (ypos != null) getElement(objname).style.top = ypos+'px';
	} else {
		getElement(objname).style.visibility = 'hidden';
	}
}

// JS 5-apr-07: dirty trick om een plaatje te refreshen na die bewerkt en close-editor gedrukt te hebben
// JS 12-jun-08: unescape() toegevoegd om %20 te verangen door gewone spatie - reloadImage is tenslotte ook niet url-encoded
function reloadImages(reloadAll) {
	var imgs = document.body.getElementsByTagName("IMG");
	for (var i=0; i<imgs.length; i++) {
		if (reloadAll==1) {
			imgs[i].src = (imgs[i].src + ((imgs[i].src.indexOf("?")==-1 ? "?" : "&") + "ct="+ctime()));
		} else if (unescape(imgs[i].src) == reloadImage) {
			//alert('Reload this image: ' + reloadImage);
			imgs[i].src = reloadImage + (reloadImage.indexOf("?")==-1 ? "?" : "&") + "ct="+ctime();
			break;
		}
	}
	// leeg variabele zodat plaatje niet nog een keer herladen wordt
	if (reloadAll!=1) reloadImage = "";
}

// JS 27-nov-07: stel breedte van een element/object in op basis van de breedte (offsetWidth) van een ander element
function setObjWidths() {
	if (!objwidthids.length) return;

	var src, dst;
	for (var i = 0; i < objwidthids.length; i++) {
		src = getElement('setobjectwidth'+objwidthids[i]);
		dst = getElement('getobjectwidth'+objwidthids[i]);
		//alert(src.id + ' = ' + src.offsetWidth);
		if (src && dst) dst.style.width = src.offsetWidth+'px';
	}
}

// ==============================================

// valideer form-fields, zie functions_user.php > ws_forms()
function validate_form(formname, errmsg) {
	if (!errmsg) errmsg = "Please fill-in the field";
	formobj = eval("document."+formname);
	prefix = "req_";
	sysfix = "sys_";
	with (formobj) {
		for (i = 0; i < elements.length; i++) {
			if (elements[i].name.substr(0,prefix.length) != prefix && elements[i].name.substr(0,sysfix.length) != sysfix) {
				reqfield = prefix + elements[i].name;
				isrequired = parseInt(eval(reqfield+".value"), 10);
				if (isrequired && elements[i].value.length == 0) {
					alert(errmsg + " '" + elements[i].name + "'");
					elements[i].focus();
					return;	// breek af
				}
			}
		}
		submit();
	}
}
