//	Ronald Pannekoek 21-07-2008:
//		FireFox bug opgelost:
//		- Event toegevoegd aan begin naar functie tekstBox: LET OP hierdoor
//		  moeten wel alle aanroepen in de database worden aangepast.
//		  Hiervoor is een replace_databse-job gemaakt, zie opleveringenmap
//		- Tevens diverse andere FireFox gerelateerde bugjes opgelost
//		- De tekstBox-divjes altijd verplaatsen naar de body, want Firefox 
//		  positioneerd de div anders t.o.v. de containers dan IE

var timerID = null;

// Selecteer de optie selectedOption van het select invoer type selectObject
function setOption(selectObject, selectedOption)
{
	if(selectObject && (selectedOption!='')) {
		var i;
		for(i=0;i<selectObject.length;i++) {
			if(selectObject[i].value.toLowerCase() == selectedOption.toLowerCase()) {
				selectObject.selectedIndex = i;
			}
		}
	}
}

// Zet de focus op het formulier element met de meegegeven naam.
// Wanneer er geen naam wordt meegegeven of er bestaat geen element met die naam dan wordt
// de focus gezet op het eerste invoer elementje
function setFocusOnElement(sName)
{
	if(sName) {
		sName = sName.toLowerCase();
		
		for(var i=0;i<document.forms.length;i++) {
			for(var j=0;j<document.forms[i].length;j++) {
				if(document.forms[i][j].name.toLowerCase()==sName && !document.forms[i][j].disabled) {
					if(document.forms[i][j].type!="hidden") {
						document.forms[i][j].focus();
					}
					return;
				}
			}
		}
	}

	setFocusOnFirstTextElement()
}

// Zet de focus op het eerste invoer elementje
function setFocusOnFirstTextElement()
{
	for(var i=0;i<document.forms.length;i++) {
		for(var j=0;j<document.forms[i].length;j++) {
			if(document.forms[i][j].type!="hidden" && !document.forms[i][j].disabled) {
				try {
					document.forms[i][j].focus();
				} catch(e){}
				return;
			}
		}
	}
}

// Vervang alle voorkomens van sFind in sText door sReplace
function replaceAll(sText,sFind,sReplace)
{
	var i;
	
	i = sText.indexOf(sFind,0);
	
	while(i!=-1) {
		sText = sText.substr(0,i) + sReplace + sText.substr(i + sFind.length);
		i += sReplace.length;
		
		if(i<=sText.length) {
			i = sText.indexOf(sFind,i);
		} else {
			i = -1;
		}
	}

	return sText;
}

// Controleer of gebruiker 0-9, backspace, delete of pijltjes toetsen indrukt
function testDigit(e)
{
	if (navigator.appName == 'Netscape') 
		key = e.which;
	else
		key = window.event.keyCode;
	
	return (((key >= 48)
		&&(key <= 57))
		||(key==8)
		||(key==46));
}

function checkEnter(e,action)
{
    if (navigator.appName == 'Netscape') 
		key = e.which;
	else
		key = e.keyCode;
			
	if (key==13) {
		eval(action);
	}
}

function isObject(obj)
{
	var titelobject = "" + obj;   //String van maken
	return (titelobject.indexOf("[object") > -1 ); //true als het een object is
}

function openInScreen(sURL, iWidth, iHeight, bLocation)
{
	//Externe link
	if(bLocation) {
		window.open(sURL,"_blank","width=" + iWidth + ",height=" + iHeight + 
			",resizable=yes,scrollbars=yes,directories=no,menubar=yes,status=no,toolbar=no,location=no");
	} else {
		window.open(sURL,"_blank","width=" + iWidth + ",height=" + iHeight + 
			",resizable=yes,scrollbars=yes,directories=yes,menubar=yes,status=yes,toolbar=yes,location=yes");
	}

	return;	
}

function openInPopup(sURL, iWidth, iHeight, bFrameSet)
{
	//Interne link
	if(bFrameSet) {
		window.open(sURL,"_blank","width=" + iWidth + ",height=" + iHeight + 
			",resizable=yes,scrollbars=yes,directories=yes,menubar=yes,status=yes,toolbar=yes,location=yes");
	} else {
		if(sURL.indexOf("GeenFrameset=") < 0) {
			sURL = sURL + "&GeenFrameset=1";
		}

		window.open(sURL,"_blank","width=" + iWidth + ",height=" + iHeight + 
			",resizable=yes,scrollbars=yes,directories=no,menubar=no,status=no,toolbar=no,location=no");
	}

	return;
}


function IsNumeric(sText) {
	var ValidChars = "0123456789.-";
	var IsNumber = true;
	var Char;
		
	if (sText != '' && sText != undefined) {
		for (i = 0; i < sText.length && IsNumber == true; i++) {
			Char = sText.charAt(i); 
			if (ValidChars.indexOf(Char) == -1) {
				IsNumber = false;
		    }
		}
	} else {
		IsNumber = false;
	}
	return IsNumber;
}

var iTop,iLeft;

function determineIVerdwijn(iVerdwijn) {
	var sVerdwijn;
	sVerdwijn = iVerdwijn.toString();
	sVerdwijn = sVerdwijn.replace('\'','');
	
	iTop =-1;
	iLeft=-1;
	
	if (sVerdwijn.indexOf('_')>0) { 
		if (sVerdwijn.indexOf('x')>0) {
			iTop = sVerdwijn.substring(sVerdwijn.indexOf('_')+1,sVerdwijn.indexOf('x'));
			if (iTop.toString() == "") iTop=-1;
			iLeft = sVerdwijn.substring(sVerdwijn.indexOf('x')+1);	
			if (iLeft.toString() == "") iLeft=-1;
			iVerdwijn= parseInt(sVerdwijn.substring(0,sVerdwijn.indexOf('_')),10);				
			if (iVerdwijn.toString() == "") iVerdwijn=-1;
			//alert("iTop="+iTop + " iLeft="+iLeft + " iVerdwijn="+iVerdwijn);
		}else{
			//weghalen van de '_'
			if(!isNaN(sVerdwijn.replace('_',''))) {
				iVerdwijn=parseInt(sVerdwijn.replace('_',''),10);
			}else{
				iVerdwijn = -1;
			}
		}
	}else{
		iVerdwijn = parseInt(sVerdwijn,10);
	}

	return iVerdwijn;
}

  
function tekstBox(event, param1, param2, param3, param4, fontColor, bVoorbeeld, borderSize, borderColor, iVerdwijn, bTransparant)
{
/*
--------------------------------------------------------------------------------	
Auteur		: Clim de Boer									Datum:	29-01-2007
Wijziging	: "Rich" content is nu mogelijk (via uitgebreide editor)
--------------------------------------------------------------------------------
Auteur		: John Derks									Datum:	21-03-2007
Wijziging	: insertAdjacentHTML werd niet goed begrepen ;-)
--------------------------------------------------------------------------------
Auteur:		Ronald PAnnekoek								Datum:	21-08-2008
Wijziging:	Firefox ready gemaakt:
			- event met functie meesturen
			- removeNode vervangen door style.display='none'
			- InsertAdjacentHTML omgebouwd naar appendClient
			- controle op ingedrukt toets verwijderd
			- De tekstBox-divjes altijd verplaatsen naar de body, want Firefox 
		      positioneerd de div anders t.o.v. de containers dan IE
--------------------------------------------------------------------------------
*/
//:	Er zijn twee functieaanroepen. Bij de ene krijgt hij 10 parameters mee
//:	bij de andere maar 4.
//:	Bij de eerste is het dus:
//:		- param1=sTekst
//:		- param2=iWidth
//:		- param3=iHeight
//:		- param4=bTransparant
//:	  Bij de tweede is het:
//:		- param1=divID
//:		- param2=iVerwijn
//:		- param3=bVoorbeeld
//:		- param4=bgColor
//:		- alle overige zijn niet gedefineerd.	
	var boxTop;

	if (!event) var event = window.event;
	
	//Bereken muis positie inclusief scroll
	var iMuisX = 0;
	var iMuisY = 0;
	if (event.pageX || event.pageY) 	{
		iMuisX = event.pageX;
		iMuisY = event.pageY;
	}
	else if (event.clientX || event.clientY) 	{
		iMuisX = event.clientX + document.body.scrollLeft
			+ document.documentElement.scrollLeft;
		iMuisY = event.clientY + document.body.scrollTop
			+ document.documentElement.scrollTop;
	}

	if (param1.length>0 ) param1 = param1.replace("tekstbox","tekstBox") ;

	if(fontColor != undefined){	//: meer dan 4 parameters

		var sTekst = param1, iWidth = param2, iHeight = param3, bgColor = param4;
		var key = null;
		var sBackgroundColor = (bTransparant)?'transparent':bgColor;

		if(timerID!=null){
			clearTimeout(timerID);
			timerID=null;
		}
		if(!document.getElementById('tekstBox')){

			//RPa: Schuif naar links indien te ver naar rechts
			var boxLeft, boxRight;
			iVerdwijn= determineIVerdwijn(iVerdwijn);

			if (iTop>-1  && iLeft>-1) {
				boxLeft = iLeft;	
				boxTop = iTop;							
			}else{
				boxLeft = iMuisX + 5;
				boxTop = iMuisY + 5;
			}			
			
			boxRight =  parseInt(boxLeft) + parseInt(iWidth);
			if (boxRight > document.body.offsetWidth) {
				//RPa: 20px extra voor verticale scrollbar
				boxLeft  = boxLeft - (boxRight - document.body.offsetWidth ) - 20;
			}

			var newDiv = document.createElement("div");
			newDiv.id="tekstBox";
			newDiv.onclick=new Function("this.style.display='none';if(timerID){clearTimeout(timerID);timerID=null;}");
			//newDiv.onclick=new Function('alert(1)');
			newDiv.title='Klik om te sluiten';
			newDiv.style.position = 'absolute';
			newDiv.style.width = iWidth + 'px';
			newDiv.style.height = iHeight + 'px';
			newDiv.style.top = boxTop + 'px';
			newDiv.style.left = boxLeft + 'px';
			newDiv.style.overflowX = 'hidden';
			newDiv.style.overflowY = 'auto';
			newDiv.style.padding = '5px';
			newDiv.style.backgroundColor = sBackgroundColor;
			newDiv.style.color =  fontColor;
			newDiv.style.border = borderSize + 'px solid ' + borderColor;
			document.body.appendChild(newDiv);
			//alert('document.getElementById("tekstBox").onclick='+ document.getElementById("tekstBox").onclick);

			
			sTekst = sTekst.replace(/%0A/g, '<br>');
			sTekst = sTekst.replace(/&lt;/g, '<');
			sTekst = sTekst.replace(/&gt;/g, '>');
			sTekst = sTekst.replace(/&amp;/g, '&');

			document.getElementById('tekstBox').innerHTML=unescape(sTekst);
			document.getElementById("tekstBox").style.display="";
			//alert('top=' + document.getElementById("tekstBox").style.top + ' left=' + document.getElementById("tekstBox").style.left );

//			while(document.getElementById('tekstBox').readyState != 'complete' && key==null){	
//				key = event.keyCode;
//			}
			if(iVerdwijn > -1)
				timerID = setTimeout('document.getElementById("tekstBox").style.display="none";timerID=null',(iVerdwijn*1000));
			else
				timerID = null;
		} else {
			var tekstBox = document.getElementById('tekstBox')
			
			var boxLeft, boxRight;
			
			iVerdwijn= determineIVerdwijn(iVerdwijn);
			
			if (iTop>-1  && iLeft>-1) {
				boxLeft = iLeft;				
			
				tekstBox.style.top				= iTop +'px';
			}else{
				//RPa: Schuif naar links indien te ver naar rechts
				boxLeft = iMuisX + 5;
				boxRight =  boxLeft + iWidth;
				if (boxRight > document.body.offsetWidth) {
					//RPa: 20px extra voor verticale scrollbar
					boxLeft  = boxLeft - (boxRight - document.body.offsetWidth ) - 20;
				}
				
				tekstBox.style.top = (iMuisY + 5) +'px'; 
			}

			tekstBox.style.width			= iWidth +'px';
			tekstBox.style.height			= iHeight +'px';
			tekstBox.style.left				= boxLeft +'px';
			tekstBox.style.backgroundColor	= sBackgroundColor;
			tekstBox.style.color			= fontColor;
			tekstBox.style.border			= borderSize +'px solid ' +borderColor;

			tekstBox.innerHTML = '';

			sTekst = sTekst.replace(/%0A/g, '<br>');
			sTekst = sTekst.replace(/&lt;/g, '<');
			sTekst = sTekst.replace(/&gt;/g, '>');
			sTekst = sTekst.replace(/&amp;/g, '&');

			tekstBox.innerHTML = unescape(sTekst);
			document.getElementById("tekstBox").style.display="";
			
//			while(document.getElementById('tekstBox').readyState != 'complete' && key==null){	
//				key = event.keyCode;
//			}

			if(iVerdwijn>-1)
				timerID = setTimeout('document.getElementById("tekstBox").style.display="none";timerID=null',(iVerdwijn*1000));
			else
				timerID = null;
		}
	} else {	//: dus maar 4 parameters
		var divID=param1; iVerdwijn=param2; bTransparant=param4	//: 3e param is hier niet nodig

		iVerdwijn = determineIVerdwijn(iVerdwijn);
		
		if(document.getElementById(divID)){	//: alleen als de div bestaat
			var tekstBox = document.getElementById(divID);

			//Verplaats tekstBox naar body, zodat positie hetzelfde werkt in IE en FireFox
			if (tekstBox.parentNode!=document.body) {
				tekstBox.parentNode.removeChild(tekstBox); 
				document.body.appendChild(tekstBox);
			}

			//Zorg ervoor dat HTML-tags goed getoond worden:
			var tekstBoxContent = tekstBox.innerHTML;
			tekstBoxContent = unescape(tekstBoxContent.replace(/&lt;/g, '<'));
			tekstBoxContent = unescape(tekstBoxContent.replace(/&gt;/g, '>'));
			tekstBoxContent = unescape(tekstBoxContent.replace(/&amp;/g, '&'));
			tekstBox.innerHTML = tekstBoxContent;
			
			if (iTop>-1  && iLeft>-1) {
				boxTop = iTop;
				boxLeft = iLeft;				
			}else{
				//RPa: Schuif naar juiste plaats
				//RPa: Bij frameloos rekening houden met parentOffset
				var boxTop, boxLeft, boxRight;
				boxTop = iMuisY + 5; 
				boxLeft = iMuisX + 5;
				boxRight =  boxLeft + Math.abs(tekstBox.style.width.replace('px',''));
				if (boxRight > document.body.offsetWidth) {
					//RPa: 20px extra voor verticale scrollbar
					boxLeft  = boxLeft - (boxRight - document.body.offsetWidth ) - 20;
				}
			}

//			while(document.getElementById(tekstBox.id).readyState!='complete' && key==null) {
//					key = event.keyCode;
//			}
			
			if(iVerdwijn>-1)
				timerID = setTimeout('document.getElementById(\'' +tekstBox.id +'\').style.display = \'none\'; timerID=null',(iVerdwijn*1000));
			else
				timerID = null;

			if(bTransparant)
				tekstBox.style.backgroundColor = 'transparent';

			tekstBox.style.top		= boxTop + 'px';
			tekstBox.style.left		= boxLeft +'px';
			tekstBox.style.position	= 'absolute';
			tekstBox.style.display	= 'block';

		}
	}
}

function vervangImg(iOptie, sSrcNieuw, iHotspotSet, oArea)
{
	var iRecordID = oArea.parentNode.id;
	var oNewImage = new Image();
	oNewImage.src = sSrcNieuw;	

	/*
	: - zoeken naar img welke deze set gebruikt (-RecordID)
	: - opslaan van src bij alle gevonden afbeeldingen
	: - vervangen van src bij alle gevonden afbeeldingen
	: - kijken welke optie
	: - actie bij die optie uitvoeren:
	:		- alleen vervangen;
	:		- vervangen en nieuwe hotspot-set
	:		- vervangen en na mouse-out terugplaatsen
	*/
	var images = document.getElementsByTagName('IMG');
	var aImage = new Array();

	for(i=0; i<images.length; i++){
		if(images[i].useMap)
			if(images[i].useMap == '#' +iRecordID)
				aImage[aImage.length] = images[i];
	}

	switch(iOptie){
		case 1:		//: alleen vervangen
			for(i=0; i<aImage.length; i++){
				aImage[i].removeAttribute('style', 0);
				aImage[i].src = oNewImage.src;
				aImage[i].hidefocus = false;
//				aImage[i].style.width = aImage[i].width +'px';
//				aImage[i].style.height = aImage[i].height +'px';
			}
			break;
		case 2:		//: vervangen en nieuwe hotspotset
			for(i=0; i<aImage.length; i++){
				aImage[i].removeAttribute('style', 0);
				aImage[i].src = oNewImage.src;
				aImage[i].useMap = '#' +iHotspotSet;

//				aImage[i].style.width = aImage[i].width +'px';
//				aImage[i].style.height = aImage[i].height +'px';
			}
			break;
		case 3:		//: vervangen en terugzetten (bij onMouseOut)
			for(i=0; i<aImage.length; i++){	
				aImage[i].removeAttribute('style', 0);
				aImage[i].src = oNewImage.src;
//				aImage[i].style.width = aImage[i].width +'px';
//				aImage[i].style.height = aImage[i].height +'px';
			}
			break;
		default:
			alert('ERROR - vervangImg');
			break;
	}
}

function setVeld(obj, sTekst, sHintTekst)
{
	/*JDe: LET OP: obj moet een id hebben!	*/
	if (obj.value == '') {
		//veld is leeg; plaats originele tekst terug.
		document.getElementById(obj.id).value = sTekst;
	} else if(obj.value.indexOf(sHintTekst) > -1) {
		// bevat de standaard tekst - maak veld leeg
		obj.value = '';
	}
}

function emptyField(obj, sHintTekst)
{
	if(obj.value.indexOf(sHintTekst.replace(/%A0/g, '%20')) > -1){
		// bevat de standaard tekst - maak veld leeg
		obj.value = '';
	}
}

function checkall(oForm, prefix, bChecked)
{
	for (var i=0;i<oForm.length;i++){
		if (oForm[i].type == 'checkbox' && oForm[i].name.indexOf(prefix) != -1){
			oForm[i].checked = bChecked;
		}
	}
}


function existsInArray(oArray, sValue)
{
	var iElement;

	for(iElement = 0; iElement < oArray.length; iElement++){
		if(oArray[iElement] == sValue)
			return true;
	}

	return false;
}

function deleteFromArray(oArray, sValue)
{
	var iElement;
	var aNewArray = new Array();

	for(iElement = 0; iElement < oArray.length; iElement++){
		if(oArray[iElement] != sValue)
			aNewArray[aNewArray.length] = oArray[iElement];
	}

	return aNewArray;
}

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;
}

function eraseCookie(name) {
	createCookie(name, '', -1);
}

var win;

function showPostzegelImage(url, img, width, height){
	if (win) win.close();

	if (screen.width - 10 <= width || screen.height - 70 <= height){
		win = window.open(img
		, 'CE_Image'
		, 'scrollbars=1,top=0,left=0,width=' + (screen.width - 10) + ',height=' + (screen.height - 70)
		);
	} else {
		url += '&src=' + img + '&width=' + width + '&height=' + height;
		win = window.open(url
		, 'CE_Image'
		, 'width=' + width +
			',height=' + height +
			',toolbar=0,top=0,left=0,location=0,status=0,menubar=0,resizable=0'
		);
	}

	if (win) win.focus();
}