/***
 * Standaarden scripts extra-functions.js versie 0001 - 8 september 2008
 * Helemaal onderaan dit bestand bevindt zich de Body onload code die in iedere template uitgevoerd zal worden, waarin deze scripts zijn ingeladen.
 * Nu hoeft er niet meer in iedere template apart een body onload te worden ingevoerd.
 * De volgende variabelen zijn vereist in de template aanwezig te zijn vóór dat dit script ingeladen wordt, dit kan er als volgt uitzien in de template:
 * <head>
 * ...
 * 	<script type="text/javascript">
	var timeOut = false;
	var language = "Nederlands";
	var themeId = '<$
type=INTERNAL_VARIABLE
varname=theme_id
$>';
	var themeName = '<$
type=INTERNAL_VARIABLE
varname=theme_name
$>';
	// Vanaf Updater 9 SP3 en hoger, indien lager, deze variabele uitcommentariseren
	var crumbPath_themeIds = '<$
type=internal_variable
varname=theme_id_tree
$>';
	// Vanaf Updater 9 SP3 en hoger, indien lager, deze variabele uitcommentariseren
	var crumbPath_themeNames = '<$
type=internal_variable
varname=theme_id_tree
outputconversion=javascriptname
$>';
	var pageId = '<$
type=INTERNAL_VARIABLE
varname=page_id
$>';
	</script>
	
	// Externe scripts opstelling
	// - jQuery voor de standaard functies en aanroepingen, nodig voor de werking van de fade scriptjes etc
	// - imgFade voor het uiteindelijke fade / rouleer script van IMG elementen
	// - jQuery.newsticker.pack.js voor het faden / rouleren van LI elementen
	// - extra-functions voor de levering van standaardscript en de controle over andere scripts
	// - pngfix voor PNG images transparantie support in IE 6 en lager.
	<script type="text/javascript" src="/javascript/jquery-1.2.6.js"></script>
	<script type="text/javascript" src="/javascript/imgFade.js"></script>
	<script type="text/javascript" src="/javascript/jquery.newsticker.pack.js"></script>
	<script type="text/javascript" src="/javascript/extra-functions.js"></script>
	<!--[if lt IE 7]>
		<script defer type="text/javascript" src="/javascript/pngfix.js"></script>
	<![endif]-->
 * ...
 * </head>
 */

/*== replaceLast ==*/
String.prototype.rev = function()
{
	return this.split('').reverse().join('');
};

function replaceLast(s,from,to)
{
	return s.rev().replace(new RegExp(from.rev()),to.rev()).rev();
};
/*== ==*/
 
/*== getQuery ==*/
var query = window.location.search.substring(1);
var vars = query.split("&");
var varArray = {};

function getQueryVariable(variable) {
	for (var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable)
		{
		  return pair[1];
		}
	} 
}
function loadVariables()
{
	for (var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		varArray[pair[0].toString()] = pair[1];
	}
}
/*== ==*/

/*== HideEmptyImages ==*/
function HideEmptyImages()
{	
	var regex = new RegExp("(shownoimg)\.gif$");
	for (var i=0; i < document.images.length; i++)
	{
		if (regex.test(document.images[i].src))
		{
			document.images[i].style.display = "none";
		}
	}
}
/*== ==*/

/*== Cookie scripts ==*/
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
/*== ==*/

/*== Iframe resize script for IE and FF ==*/
function adjustIFrameSize(iframeWindow)
{
	var iframeElement = document.getElementById(iframeWindow.name);
	
	if (navigator.appVersion.match(/MSIE/))
	{
		iframeElement.style.height = iframeWindow.document.body.scrollHeight + 13 + 'px';
	}
	else
	{
		iframeElement.style.height = iframeWindow.document.getElementsByTagName('html')[0].scrollHeight + 'px';
	}
}
function resizeIframes()
{
	for (var i=0; i<window.frames.length; i++)
	{
		if (window.frames[i])
		{
			adjustIFrameSize(window.frames[i]);
		}
	}
}
function startResizeIframesTimer(milliseconds)
{
	setTimeout("resizeIframes()",milliseconds);
}
/*== ==*/

/*== Give active links in Id elements a class "active" ==*/
function HighlightLocation()
{
	var localThemeId = 'themeid='+themeId;
	var localPageId = 'pageid='+pageId;
	
	var navigationsToCheck = new Array();
	navigationsToCheck[0] = "header_navigation";
	navigationsToCheck[1] = "main_navigation";
	navigationsToCheck[2] = "footer_navigation";
	
	var regExp = new RegExp("#");
	var regExp_digitCheck_ThemeId = new RegExp(localThemeId + '(?![0-9])');
	var regExp_digitCheck_PageId = new RegExp(localPageId + '(?![0-9])');
	
	for (var i=0; i<navigationsToCheck.length; i++)
	{
		if (document.getElementById(navigationsToCheck[i]))
		{	
			var linkObjects = document.getElementById(navigationsToCheck[i]).getElementsByTagName('a');
			
			for (var j=0; j<linkObjects.length; j++)
			{
				var src = ""+linkObjects[j]+"";
				
				if ((regExp_digitCheck_ThemeId.exec(src) || regExp_digitCheck_PageId.exec(src)) && !regExp.exec(src))
				{
					linkObjects[j].className = 'active';
				}
				else
				{
					linkObjects[j].className = '';
				}
			}
		}
	}
}
/*== ==*/

/*== Newsticker display ==*/
function setNewstickerDisplayAt(id)
{
	if (document.getElementById(id))
	{
		document.getElementById(id).getElementsByTagName('ul')[0].id = 'newsticker';
		document.getElementById(id).getElementsByTagName('li')[0].style.display = 'block';
	}
}
/*== ==*/

/*== Check if there are some images that are not selected or empty and delete them from the page ==*/
function deleteEmptyImagesAt(id)
{
	if (document.getElementById(id))
	{
		var containerObject = document.getElementById(id);
		
		for (var i=0; i<containerObject.getElementsByTagName("img").length; i++)
		{
			var currentObject = containerObject.getElementsByTagName("img")[i];
			var parentObject = false;
			
			if (currentObject.src.match(/(shownoimg)\.gif$/))
			{
				parentObject = currentObject.parentNode;
				parentObject.removeChild(currentObject);
			}
		}
		
	}
}
/*== ==*/

/*== Smoelenboek Input navigation ==*/
function createSmoelNavigationAt(id)
{
	if (getQueryVariable("smoelen") && document.getElementById(id))
	{
		var objectToCreateNavigationAt = document.getElementById(id);
		var smoelPageIds = getQueryVariable("smoelen");
		var smoelPageIds_Array = smoelPageIds.split(/,/);
		
		var back = "";
		var backUsed = false;
		var separator = "";
		var next = "";
		var nextUsed = false;
		
		var currentIteratorLocation = 0;
		
		for (var i=0; i<smoelPageIds_Array.length; i++)
		{
			if (smoelPageIds_Array[i] == pageId)
			{
				currentIteratorLocation = i;
			}
		}
		
		if (smoelPageIds_Array[currentIteratorLocation-1])
		{
			back = '<a class="smoel_back" href="/cms/publish/content/showpage.asp?pageid='+smoelPageIds_Array[currentIteratorLocation-1]+'&smoelen='+smoelPageIds+'"><< vorige</a>';
			backUsed = true;
		}
		if (smoelPageIds_Array[currentIteratorLocation+1])
		{
			next = '<a class="smoel_next" href="/cms/publish/content/showpage.asp?pageid='+smoelPageIds_Array[currentIteratorLocation+1]+'&smoelen='+smoelPageIds+'">volgende >></a>';
			nextUsed = true;
		}
		
		if (backUsed && nextUsed)
		{
			//separator = ' - ';
		}
		
		objectToCreateNavigationAt.innerHTML = back+''+separator+''+next;
	}
}
/*== ==*/

/*== placeDateOfTodayAt ==*/
function placeDateOfTodayAt(id)
{
	if (document.getElementById(id))
	{
		var objectToPlaceDateOfToday = document.getElementById(id);
		
		var date = new Date();
		var today = date.getDate() + '-' + (date.getMonth() + 1) + '-' + date.getFullYear();
		
		objectToPlaceDateOfToday.innerHTML = today;
	}
}
/*== ==*/

/*== openClose ==*/
function openClose(elementLink, elementLinkCurrentClassName, elementToOpen, elementToOpenCurrentClassName)
{
	if (elementLink && elementToOpen)
	{
		if (elementLink.className.match(/active/) && elementToOpen.className.match(/active/))
		{
			elementLink.className = elementLinkCurrentClassName;
			elementToOpen.className = elementToOpenCurrentClassName;
		}
		else
		{
			elementLink.className = elementLinkCurrentClassName + ' active';
			elementToOpen.className = elementToOpenCurrentClassName + ' active';
		}
	}
}
/*== ==*/

/*== Formbuilder om en om ==*/
function identifyFieldOdds(containerId,elementIdTypes,oddClassNameToAdd)
{
	if (document.getElementById(containerId))
	{
		var elementCounter = 0;
		var containerObject = document.getElementById(containerId);
		
		for (var g=0;g<containerObject.getElementsByTagName('div').length;g++)
		{
			var currentElement = containerObject.getElementsByTagName('div')[g];
			
			if (currentElement.className == elementIdTypes)
			{
				if (elementCounter % 2 == 0)
				{
					currentElement.className = elementIdTypes + ' ' + oddClassNameToAdd;
				}
				
				elementCounter++;
			}
		}
		
	}
}
/*== ==*/

/*== Identify table odds ==*/
function identifyTableOdds(containerId,fieldsContainerType,fieldsToCheckForOddsType)
{
	if (document.getElementById(containerId))
	{
		var containerElement = document.getElementById(containerId);
		
		for (var i=0; i<containerElement.getElementsByTagName(fieldsContainerType).length; i++)
		{
			var currentElement = containerElement.getElementsByTagName(fieldsContainerType)[i];
			
			for (var j=0; j<currentElement.getElementsByTagName(fieldsToCheckForOddsType).length; j++)
			{
				var currentChildElement = currentElement.getElementsByTagName(fieldsToCheckForOddsType)[j];
				
				if (j % 2 == 0)
				{
					currentChildElement.className = 'odd';
				}
			}
		}
	}
}
/*== ==*/

/*== Kruimelpad script (Vanaf Updater 9 SP3 en hoger)  indien lager, dit script uitcommentariseren==*/
function createCrumbPathAt(id)
{
	if (document.getElementById(id) && crumbPath_themeNames && crumbPath_themeIds && themeName && pageName && pageId)
	{
		crumbPath_themeNames = crumbPath_themeNames.replace(/[ ][(]NIET VERWIJDEREN[)]/g,"");
		pageName = pageName.replace(/[ ][(]NIET VERWIJDEREN[)]/g,"");
		themeName = themeName.replace(/[ ][(]NIET VERWIJDEREN[)]/g,"");
		
		crumbPath_themeNames = crumbPath_themeNames.replace(/\* Modules/g,"");
		pageName = pageName.replace(/\* Modules/g,"");
		themeName = themeName.replace(/\* Modules/g,"");
		
		crumbPath_themeNames = crumbPath_themeNames.replace(/^~/,"");
		crumbPath_themeNames = crumbPath_themeNames.replace(/~$/,"");
		
		crumbPath_themeIds = crumbPath_themeIds.replace(/^~/,"");
		crumbPath_themeIds = crumbPath_themeIds.replace(/~$/,"");
		
		var printableNavigation = '';
		var objectToPlaceCrumbpath = document.getElementById(id);
		
		var crumbPath_themeIds_Array = crumbPath_themeIds.replace(/^~/,"");
		crumbPath_themeIds_Array = crumbPath_themeIds.replace(/~$/,"");
		
		var crumbPath_themeIds_Array = crumbPath_themeIds.split(/~/);
		var crumbPath_themeNames_Array = crumbPath_themeNames.split(/~/);
		
		for (var i=0; i<crumbPath_themeIds_Array.length; i++)
		{
			if (crumbPath_themeIds_Array[i] == "")
			{
				crumbPath_themeNames_Array.splice(i,1);
				crumbPath_themeIds_Array.splice(i,1);
			}
			if (crumbPath_themeNames_Array[i-1] && crumbPath_themeNames_Array[i])
			{
				if (crumbPath_themeNames_Array[i-1] == crumbPath_themeNames_Array[i])
				{
					crumbPath_themeNames_Array.splice(i,1);
					crumbPath_themeIds_Array.splice(i,1);
				}
			}
			if (crumbPath_themeNames_Array[i])
			{
				if (crumbPath_themeNames_Array[i] == "")
				{
					crumbPath_themeNames_Array.splice(i,1);
					crumbPath_themeIds_Array.splice(i,1);
				}
				else if (crumbPath_themeNames_Array[i].match(/#/) || crumbPath_themeNames_Array[i].match(/Home/))
				{
					crumbPath_themeNames_Array.splice(i,1);
					crumbPath_themeIds_Array.splice(i,1);
				}
			}
		}
		
		printableNavigation += '<a class="first" href="/">Home</a>';
		
		for (var j=0; j<crumbPath_themeNames_Array.length; j++)
		{
			if (j == 0)
			{
				crumbPath_themeNames_Array[j] = crumbPath_themeNames_Array[j].replace(/NEW/,"CaseWare");
				
				// Voeg alle (sub) thema's toe aan een verzameling met links, evt. opbouw kan hier worden gewijzigd
				printableNavigation += '<a href="/cms/publish/content/showpage.asp?themeid='+crumbPath_themeIds_Array[j]+'">'+crumbPath_themeNames_Array[j]+'</a>';
			}
			else if (j == crumbPath_themeNames_Array.length-1)
			{
				if (pageName == themeName && themeId == crumbPath_themeIds_Array[crumbPath_themeIds_Array.length-1])
				{
					// Voeg alle (sub) thema's toe aan een verzameling met links, evt. opbouw kan hier worden gewijzigd
					printableNavigation += '<a class="last" href="/cms/publish/content/showpage.asp?themeid='+crumbPath_themeIds_Array[j]+'"><strong>'+crumbPath_themeNames_Array[j]+'</strong></a>';
				}
				else
				{
					// Voeg alle (sub) thema's toe aan een verzameling met links, evt. opbouw kan hier worden gewijzigd
					printableNavigation += '<a href="/cms/publish/content/showpage.asp?themeid='+crumbPath_themeIds_Array[j]+'">'+crumbPath_themeNames_Array[j]+'</a>';
				}
			}
			else
			{
				// Voeg alle (sub) thema's toe aan een verzameling met links, evt. opbouw kan hier worden gewijzigd
				printableNavigation += '<a href="/cms/publish/content/showpage.asp?themeid='+crumbPath_themeIds_Array[j]+'">'+crumbPath_themeNames_Array[j]+'</a>';
				
			}
			
		}
		
		if (pageName.toLowerCase().match(themeName.toLowerCase()) && themeId == crumbPath_themeIds_Array[crumbPath_themeIds_Array.length-1])
		{
			// Als het themeId waar we op ons bevinden gelijk is aan het laatste themeId in het kruimelpad en de naam van de pagina gelijk is aan het thema naam, hoeft er geen pagina link toegevoegd te worden
			printableNavigation = replaceLast(printableNavigation,'<a ','<a class="last" ');
		}
		else
		{
			// Hier wordt de paginatitel als laatste link toegevoegd, evt. opbouw kan hier worden gewijzigd
			printableNavigation += '<a class="last" href="/cms/publish/content/showpage.asp?pageid='+pageId+'"><strong>'+pageName+'</strong></a>';
		}
		
		// Plaats het samengestelde kruimelpad in het element met het opgegeven ID
		objectToPlaceCrumbpath.innerHTML = printableNavigation;
	}
}
/*== ==*/

/*== setActiveTabByIndex ==*/
function setActiveTabByIndex(activeTabIndex, loadedTabdata_containerId, loadedTabdata_className, visibleTabdataId, currentClassTablink)
{
	if (document.getElementById(loadedTabdata_containerId) && document.getElementById(visibleTabdataId))
	{
		var loadedTabdata_containerElement = document.getElementById(loadedTabdata_containerId);
		var visibleTabdataElement = document.getElementById(visibleTabdataId);
		var loadedTabdataDivCounter = 0;
		
		for (var divCounter = 0; divCounter < loadedTabdata_containerElement.getElementsByTagName('div').length; divCounter++)
		{
			var currentElement = loadedTabdata_containerElement.getElementsByTagName('div')[divCounter];
			
			if (currentElement.className == loadedTabdata_className && loadedTabdataDivCounter == activeTabIndex)
			{
				currentElement.parentNode.getElementsByTagName('a')[0].className = currentClassTablink + ' active';
				visibleTabdataElement.innerHTML = currentElement.innerHTML;
			}
			
			if (currentElement.className == loadedTabdata_className)
			{
				loadedTabdataDivCounter++;
			}
		}
	}
}
/*== ==*/

/*== setActiveTabByElement ==*/
function setActiveTabByElement(elementTablink, loadedTabdata_containerId, tablinkClassName, visibleTabdataId, currentClassTablink)
{
	if (elementTablink && document.getElementById(loadedTabdata_containerId) && document.getElementById(visibleTabdataId))
	{
		var loadedTabdata_containerElement = document.getElementById(loadedTabdata_containerId);
		var visibleTabdataElement = document.getElementById(visibleTabdataId);
		
		for (var divCounter = 0; divCounter < loadedTabdata_containerElement.getElementsByTagName('div').length; divCounter++)
		{
			var currentElement = loadedTabdata_containerElement.getElementsByTagName('div')[divCounter];
			
			if (currentElement.className.match(tablinkClassName))
			{
				if (currentElement.getElementsByTagName('a')[0])
				{
					currentElement.getElementsByTagName('a')[0].className = currentClassTablink;
				}
			}
		}
		
		elementTablink.className = currentClassTablink + ' active';
		visibleTabdataElement.innerHTML = elementTablink.parentNode.parentNode.getElementsByTagName('div')[1].innerHTML;
	}
}
/*== ==*/

/*== swapTabView ==*/
function swapTabView(elementsToDisplayContainerId, elementNrToDisplay, elementIdTypesToChangeDisplay, currentClassName, tabLinksContainerId, tabLinkToSetActive)
{
	var digitSign = '<nr>';
	var elementIdToDisplay = elementIdTypesToChangeDisplay.replace(digitSign,elementNrToDisplay);
	var elementIdToDisplay_splitted = elementIdTypesToChangeDisplay.split(digitSign);
	var elementIdToDisplay_front = elementIdToDisplay_splitted[0];
	var elementIdToDisplay_back = elementIdToDisplay_splitted[1];
	
	if (document.getElementById(elementsToDisplayContainerId) && document.getElementById(elementIdToDisplay) && document.getElementById(tabLinksContainerId) && tabLinkToSetActive)
	{
		var elementToDisplay_Container = document.getElementById(elementsToDisplayContainerId);
		var elementToDisplay = document.getElementById(elementIdToDisplay);
		
		for (var u=0; u<elementToDisplay_Container.getElementsByTagName('div').length; u++)
		{
			var currentElement = elementToDisplay_Container.getElementsByTagName('div')[u];
			
			if (currentElement.id.match(elementIdToDisplay))
			{
				currentElement.className = currentClassName + ' active';
			}
			else if (currentElement.id.match(elementIdToDisplay_front) && currentElement.id.match(elementIdToDisplay_back))
			{
				currentElement.className = currentClassName;
			}
		}
		
		var tabLinksDisplay_Container = document.getElementById(tabLinksContainerId);
		
		for (var v=0; v<tabLinksDisplay_Container.getElementsByTagName('a').length; v++)
		{
			var currentElement = tabLinksDisplay_Container.getElementsByTagName('a')[v];
			currentElement.className = '';
		}
		
		tabLinkToSetActive.className = 'active';
	}
}
/*== ==*/

/*== launchImagePopup ==*/
function launchImagePopup(sPicURL,title)
{
	if (sPicURL != "" && !sPicURL.match(/spacer.gif/) && !sPicURL.match(/shownoimg.gif/) && !sPicURL.match(/dot.gif/))
	{
		window.open('/data/templates/mod_popup.htm?'+sPicURL,title,"width=200,height=200,scrollbars=no,toolbar=no,location=no,resizable=yes");
	}
}
/*== ==*/

/*== setLastMenubuilderItem("containerId","classToAddToLastItem"); ==*/
function setLastMenubuilderItem(containerId,classToAddToLastItem)
{
	if (document.getElementById(containerId))
	{
		var containerElement = document.getElementById(containerId);
		var itemCollection = [];
		
		for (var i=0; i<document.getElementById(containerId).getElementsByTagName('div').length; i++)
		{
			var currentElement = document.getElementById(containerId).getElementsByTagName('div')[i];
			
			if (currentElement.className.match(/item1/))
			{
				itemCollection.push(currentElement);
			}
		}
		
		itemCollection[itemCollection.length-1].className += " "+classToAddToLastItem;
	}
}
/*== ==*/

/*== Body onload ==*/
window.onload = function(e)
{
	HideEmptyImages();
	HighlightLocation();
	identifyFieldOdds("formulier","formbuilder","odd");
	identifyTableOdds("tabellen","tbody","tr");
	setActiveTabByIndex("0","loaded_tabdata","loaded_tabdata","visible_tabdata","tablink");
	createCrumbPathAt("crumb_path_margins");
	setLastMenubuilderItem("menubuilder_cwf_sub_0","last");
	deleteEmptyImagesAt("root");
	deleteEmptyImagesAt("root");
	deleteEmptyImagesAt("root");
	
	/*deleteEmptyImagesAt("fade_image");
	createSmoelNavigationAt("smoel_nav");
	setNewstickerDisplayAt("newsticker_wrapper");
	placeDateOfTodayAt("date_today");
	startResizeIframesTimer(100);
	
	$('#fade_image').cycle({ 
	    fx:    'fade', 
	    speed:  2500
	});
	$('#newsticker').newsticker();*/
}
/*== ==*/
