// JavaScript Document

// ################################################################################
// breedte aanpassen wanneer in edit modus
// ################################################################################

function setEditWidth() {
/*
Wanneer een adminstrator naar de Edit modus gaat komt er een extra kolom beschikbaar 
met allerlei opties. Deze kolom zorgt ervoor dat de layer waar de content in geladen 
wordt te smal is. 

Het element ctl00_SPNavigation_ctl01_toggleContainerColorBar is er alleen in 
Edit modus, dan worden de layers aa-container en aa-content layers breder gezet.
Deze functie wordt bij elke pageLoad aanroepen.
*/
	if (document.getElementById) {
		// onderstaand element is alleen zichtbaar in Edit Page modus
		if (document.getElementById("ctl00_SPNavigation_ctl01_toggleContainerColorBar")) {
			var container = document.getElementById('aa-container');
			container.style.width = 1220;
			var content= document.getElementById('aa-content');
			content.style.width = 1000;
		}
	}
}

// ################################################################################
// functions om iFrame te schalen
// ################################################################################

function resizeCaller() {
/*
Wordt aanroepen vanuit een Listener in de Pagelayout waar een iframe in staat.
Een iframe in de portal krijgt hiermee de hoogte van de pagina die geladen wordt.
Dit voorkomt dat je extra scrollbalken krijgt wanneer het iframe te klein is of
dat het iframe te groot is terwijl dit niet nodig is.
*/
	var dyniframe=new Array()
	for (i=0; i<iframeids.length; i++){
		if (document.getElementById) resizeIframe(iframeids[i])
			//reveal iframe for lower end browsers? (see var above):
		if ((document.all || document.getElementById) && iframehide=="no"){
			var tempobj=document.all? document.all[iframeids[i]] : document.getElementById(iframeids[i])
			tempobj.style.display="block"
		}
	}
}

function resizeIframe(frameid){
	var currentfr=document.getElementById(frameid)
	if (currentfr && !window.opera){
		currentfr.style.display="block"
		if (currentfr.contentDocument && currentfr.contentDocument.body.offsetHeight) //ns6 syntax
			currentfr.height = currentfr.contentDocument.body.offsetHeight+FFextraHeight; 
		else if (currentfr.Document && currentfr.Document.body.scrollHeight) //ie5+ syntax
			currentfr.height = currentfr.Document.body.scrollHeight;
		if (currentfr.addEventListener)
			currentfr.addEventListener("load", readjustIframe, false)
		else if (currentfr.attachEvent){
			currentfr.detachEvent("onload", readjustIframe) // Bug fix line
			currentfr.attachEvent("onload", readjustIframe)
		}
	}

	// check de url in het iframe, ivm Planon redirect naar /philips/
	checkPortalinIframe(currentfr.contentWindow.document.location.href);

	// om rare IE6 bug te verhelpen, de footer kwam niet onderaan het iframe
	
	// versie IE detecten
	var version = 0;
	if (navigator.appVersion.indexOf("MSIE")!=-1){
		var temp = navigator.appVersion.split("MSIE");
		version = parseFloat(temp[1]);
	}
	
	if (version <= 6 && version > 0) {
		// staat standaard op absolute vanuit de stylesheet
		document.getElementById("aa-footer").style.position = "relative";
		document.getElementById("aa-footer").style.position = "absolute";
		// resultaat: footer staat onderaan
		
		// minimale hoogte instellen voor IE6 ipv css: min-height
		if (currentfr.height < 500 ) {
			currentfr.height = 500;
		}
	}
}

function readjustIframe(loadevt) {
	var crossevt=(window.event)? event : loadevt
	var iframeroot=(crossevt.currentTarget)? crossevt.currentTarget : crossevt.srcElement
	if (iframeroot) resizeIframe(iframeroot.id);
}

function loadintoIframe(iframeid, url) {
/*
Een pagina laden in een iframe
*/
	if (document.getElementById)
	document.getElementById(iframeid).src=url
}

function checkPortalinIframe(url) {
/*	
wanneer in het iframe een SharePoint pagina wordt geladen ipv een Planon pagina
dan de portal openen met deze pagina. bijv. http://server/philips/default.aspx
*/
	url = url.toLowerCase();
	if (url.split("/")[3] == "philips") {
		top.location = url;
	}
}

// ################################################################################
// functions om Planon form te laden in een iFrame in SharePoint
// ################################################################################

function getQueryVars() {
/*
Geeft alle url variabelen van het huidige document in een array terug.
Bijv. pagina.aspx?id=1&test=2
*/
	var querystring = document.location.search.split("?")[1];
	var queryvars = querystring.split("&");
	return queryvars;
}

function addToSource(src,name,value) {
/*
Aan een url worden url variabelen toegevoegd.
pagina.aspx,id,1        --> pagina.aspx?id=1
pagina.aspx?id=1,test,2 --> pagina.aspx?id=1&test=2
*/
	if (src.match("=")) {
		src += "&";
	} else {
		src += "?";
	}
	src += name + "=" + value;
	return src;
}

function createNewSource() {
/*
Bouwt de url voor de src van het iframe op, specifiek voor Planon.
wordt aangeroepen vanuit /philips/pages/autenticated/iFramePlanonForm.aspx
De basis URL is “/planon/login.asp”. Er worden URL vars opgevraagd en toegevoegd.
Sid	 Wordt altijd toegevoegd. Standaard waarde is 3.
App	 Wordt altijd toegevoegd. Standaard waarde is “Call”.
Def	 Wordt optioneel toegevoegd.
Pa	 Wordt optioneel toegevoegd.
Pid	 Wordt optioneel toegevoegd.
*/

	// default waarde toewijzen
	var newSRC = "/planon/Login.aspx";
	var APP = "Call"; // voor backwards competibility
	var SId = 3; // voor backwards competibility
	
	// de url variabelen opvragen
	var queryvars = getQueryVars();
	
	for (i=0; i<queryvars.length; i++){
		name = queryvars[i].split("=")[0];
		name = name.toLowerCase();
		value = queryvars[i].split("=")[1];
	
		switch(name) {
			case "sid":
				SId = value;
				break;
			case "app":
				APP = value;
				break;
			case "def":
				newSRC = addToSource(newSRC,name,value);
				break;
			case "pa":
				newSRC = addToSource(newSRC,name,value);
				break;	
			case "pid":
				newSRC = addToSource(newSRC,name,value);		
				break;	
		}
	}
	newSRC = addToSource(newSRC,"app",APP);
	newSRC = addToSource(newSRC,"sid",SId);

	return newSRC;
}

// ################################################################################
// functions om Planon form te tonen
// ################################################################################

function cleanUp(dirty) {
/*
Uit een string worden karakters vervangen om bijv. een titel netter te tonen
and en or worden & en /
*/
	var clean;
	clean = dirty.replace(/\%20/g," ");
	clean = clean.replace(/ and /g," & ");
	clean = clean.replace(/ or /g," / ");	
	return clean;
}

function getTitle() {
/*
haalt de title op als deze is meegegeven in de url
*/
	var title = "";
	var queryvars = getQueryVars();
	for (i=0; i<queryvars.length; i++){
		name = queryvars[i].split("=")[0];
		value = queryvars[i].split("=")[1];
		if (name == "title") {
			title = value;
		}
	}
	title = cleanUp(title);
	return title;
}

function setTitle() {
/*
voegt de titel uit een url var toe aan de eerste h1 in aa-onecolumn
*/
	var content = document.getElementById("aa-onecolumn");
	var h1 = content.getElementsByTagName("h1");
	h1[0].innerHTML = getTitle();
}

function getFormDetails() {
/* haalt formgroupdescription op en de id uit de url vars */
	var queryvars = getQueryVars();
	var formdetails = new Array();
	for (i=0; i<queryvars.length; i++){
		name = queryvars[i].split("=")[0];
		name = name.toLowerCase();		
		value = queryvars[i].split("=")[1];
		if (name == "fgdid") {
			formdetails[0] = cleanUp(value);
		}
		if (name == "fgd") {
			formdetails[1] = cleanUp(value);
		}
	}
	return formdetails;
}

function createBreadCrumb() {
/* een breadcrumb pad opbouwen nav url variabele */
	var path = '';
	var separator = ' &gt; ';
	var url = document.location.href.split("?")[0];
	var site = ''; // link naar de SharePoint site
	site = url.split("/")[3];
	var subsite = ''; // link naar de SharePoint subsite
	subsite = url.split("/")[4];

	// de juiste namen tonen
	if (site != '') 
	{
		path += '<a href="/' + site + '/">';
		
		// uitzondering voor Van Lanschot
		if (site.toLowerCase() == 'vanlanschot')
		{
			path += 'Van Lanschot';
		}
		else
		{
			path += site.substring(0,1).toUpperCase() + site.substring(1);
		}
			
		path += '</a>';
	}
	if (subsite != '') 
	{
		path += separator;
		path += '<a href="/' + site + '/' + subsite + '/">';
		// van de eerste letter een hoofdletter maken
		path += subsite.substring(0,1).toUpperCase();
		// taalcode eruit halen
		if (subsite.substring(subsite.length - 2).toLowerCase() == 'nl') 
		{
			subsite = subsite.substring(1,subsite.length - 2);
		}
		else if (subsite.substring(subsite.length - 5).toLowerCase() == 'en-us')
		{
			subsite = subsite.substring(1,subsite.length - 5);		
		}
		else // geen taalcode
		{
			subsite = subsite.substring(1);
		}
		// uitzondering voor Den Bosch
		if (subsite == 'enbosch')
		{
			subsite = 'en Bosch';
		}
		path += subsite;
		path += '</a>';
	}

	var formdetails = getFormDetails();	
	if (formdetails[0] && formdetails[1]) {
		path += separator + '<a href="PlanonFormList.aspx?FGDID=' + formdetails[0] + '">' + formdetails[1] + '</a>';
	}
	// de huidige pagina wanneer er een titel is meegegeven
	if (getTitle() != '') {
		path += separator + getTitle();
	}
	return path;
}

// ################################################################################
// functions om PlanonFormList.aspx aan te passen
// ################################################################################

function getH1() {
/* haalt de waarde van de eerste h1 op uit aa-onecolumn */
	var content = document.getElementById("aa-onecolumn");
	var h1 = content.getElementsByTagName("h1")[0].innerHTML;
	h1 = cleanUp(h1);
	return(h1);
}

function CleanUpH1() {
/* haalt de waarde van de eerste h1 op uit aa-onecolumn en stop deze schoon weer terug */
	var content = document.getElementById("aa-onecolumn");
	var h1 = content.getElementsByTagName("h1")[0];
	h1.innerHTML = cleanUp(h1.innerHTML);
}

function addH1toLink() {
/* voegt aan alle links in een lijst de FormGroupDiscription (h1) toe */
	var li = document.getElementById("aa-onecolumn").getElementsByTagName("li");
	var a;
	var h1 = getH1();

	for (i=0; i<li.length; i++) {
		a = li[i].getElementsByTagName('a')[0];
		if (a) {
			a.setAttribute("href", a.href + "&FGD=" + h1);
		}
	}
}
