var language = null;

function initLanguage(lang)
{
	language = lang;
}

function checkform(of)
{
	// Test if DOM is available and there is an element called required
	if(!document.getElementById || !document.createTextNode){return;}
	if(!document.getElementById('required')){return;}

	// Define error messages and split the required fields
	var foundError = false;
	var errorID = 'errormsg';
	var errorClass='error';
	var reqfields=document.getElementById('required').value.split(',');

	// Cleanup old mess
	// hide the error messsage
	if(document.getElementById(errorID))
	{
		var em=document.getElementById(errorID);
		var searchstring = "/ " + errorClass + "/g";
		em.className.replace(searchstring, "");
	}
	// loop over required fields
	for(var i=0;i<reqfields.length;i++)
	{
		// check if required field is there
		var f=document.getElementById(reqfields[i]);
		if(!f){continue;}
		// test if the required field has an error, 
		// according to its type
		switch(f.type.toLowerCase())
		{
			case 'text':
				if(f.value=='' && f.id!='email'){cf_adderr(f)}							
				// email is a special field and needs checking
				if(f.id=='mail' && !cf_isEmailAddr(f.value)){cf_adderr(f)}							
				break;
			case 'textarea':
				if(f.value==''){cf_adderr(f)}							
				break;
			case 'checkbox':
				if(!f.checked){cf_adderr(f)}							
				break;
			case 'select-one':
				if(!f.selectedIndex && f.selectedIndex==0){cf_adderr(f)}							
				break;
		}
	}
	return !foundError;

	/* Tool methods */
	function cf_adderr(o)
	{
		// Check if there is not already an error message
		if (!foundError)
		{
			var errElt = document.getElementById(errorID);
			if (errElt)
			{
				errElt.className += " " + errorClass;
				errElt.innerHTML = language == "fr"
					? "Un ou plusieurs champs obligatoires ne sont pas remplis."
					: "Een of meer verplichte velden zijn niet ingevuld.";
			}
			foundError = true;
		}
	}
	function cf_isEmailAddr(str) 
	{
	    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
}


function initPage()
{
	google.load("jquery", "1");
	
	initPageInner = function()
	{
		initMarquee("message", "marqueeTekst", 4, 100, 0);
	}

	google.setOnLoadCallback(initPageInner);
}

function initPopup()
{
	google.load("jquery", "1");
	google.load("jqueryui", "1");
	
	initDialog = function()
	{
		$("#popup").dialog({ width: 520, height: 420, modal: true });
	}

	google.setOnLoadCallback(initDialog);
}

//meel link bescherming
//door meelto links niet hard in onze html op te nemen, bereiken we 2 dingen:
//- spambots worden misleid
//- er komt geeen melding dat de pagina beveiligde en onbeveiligde items bevat.
function zetMeel(eltId) {
	var elt = document.getElementById(eltId);
	if (elt) {
		// normally meel address will be put in innerHtml and href will equal "#"
		// but if innerHtml should not become the plain meel address, put the meel
		// address directly in href, but in this case prefixed by meelto: as
		// otherwise the href property wil be expanded as if being a relative URL
		var meelTo = "mai";
		meelTo += "lto";
		meelTo += ":";
		var versleuteldMeelAdres;
		var changeInnerHtml;
		if (elt.href.length > 13 && elt.href.substr(0,7) == meelTo) {
			versleuteldMeelAdres = elt.href.substr(7);
			changeInnerHtml = false;
		}
		else {
			versleuteldMeelAdres = elt.innerHTML;
			changeInnerHtml = true;
		}
		// only decrypt if it not already contains a meel address (in combination
		// with a jQuery popup, this code will be exucted twice)
		if (versleuteldMeelAdres.indexOf("@") == -1) {
			var meelAdres = "";
			for(var i = 0; i < versleuteldMeelAdres.length; i++)
			{
				meelAdres = String.fromCharCode(versleuteldMeelAdres.charCodeAt(i)) + meelAdres;
			}
			meelAdres = meelAdres.replace(/\?/, "@");
			var href = meelTo;
			href += meelAdres;
			elt.href = href;
			if (changeInnerHtml) {
				elt.innerHTML = meelAdres;
			}
		}
	}
}

/*
 * function to show an answer in the faq
 */
var currentShowId = null;

function Show(eltId)
{
	var elt = document.getElementById(eltId);
	if (elt)
	{
		if (elt.className == "answer")
		{
			if (currentShowId)
			{
				var currentShow = document.getElementById(currentShowId);
				if (currentShow)
				{
					currentShow.className = "answer";
					currentShowId = null;
				}
			}
			elt.className = "answerShow";
			currentShowId = eltId;
		}
		else
		{
			currentShowId = null;
			elt.className = "answer";
		}
	}
}

/*
 * Javascript version for the marquee element
 *
 * The marquee should appear in the html as follows:
 *
 * <div id="marqueeContainer">
 * 	<span id="marqueeContents">Your marquee text here</span>
 * </div>
 *
 * Apply any (additional) styling to the container and the span as you like.
 * However, the styling for the contents should be restricted to font, colors and the like,
 * and should not interfere with the positioning of the span within the container.
 *
 * After these elements have been loaded, you should call the function:
 *
 * initMarquee(containerId, contentsId, scrollAmount, delayBetweenMoves, delayBeforeStart)
 *
 * Where:
 *
 * containerId:			the id of the container
 * contentsId:				the id of the contents
 * scrollAmount:			the number of pixels the text scrolls between each subsequent drawing of the marquee
 * delayBetweenMoves:	the delay (in milliseconds) between subsequents drawings of the marquee
 * delayBeforeStart:		the delay before the marquee is first shown on the page
 *
 * TODO:
 * - toggle moving with onClick
 * - slow down moving / resume normal speed with onmouseover/out
 */

var marqueeDelayBeforeStart;
var marqueeDelayBetweenMoves;
var marqueeScrollAmount;
var marqueeContainer;
var marqueeContents;
var marqueeContainerWidth;
var marqueeContentsWidth;
var marqueeTimer;

function scrollMarquee()
{
	var currentLeft = parseInt(marqueeContents.style.left);
	currentLeft -= marqueeScrollAmount;
	if (currentLeft <= -marqueeContentsWidth)
	{
		currentLeft = marqueeContainerWidth;
	}
	marqueeContents.style.left = currentLeft + "px";
}


function initMarquee(containerId, contentsId, scrollAmount, delayBetweenMoves, delayBeforeStart)
{
	marqueeScrollAmount = scrollAmount ? scrollAmount : 10;
	marqueeDelayBetweenMoves = delayBetweenMoves ? delayBetweenMoves : 30;
	marqueeDelayBeforeStart = delayBeforeStart ? delayBeforeStart : 1000;
	var marqueeContainerId = containerId ? containerId : "marqueeContainer";
	var marqueeContentsId = contentsId ? contentsId : "marqueeContents";
	marqueeContainer = document.getElementById(marqueeContainerId);
	marqueeContents = document.getElementById(marqueeContentsId);
	if (marqueeContainer && marqueeContents)
	{
		// apply additional styling
		marqueeContainer.style.overflow = "hidden";
		marqueeContents.style.whiteSpace = "nowrap";

		// get width of container and contents (after re-styling)
		marqueeContainerWidth = marqueeContainer.offsetWidth;
		marqueeContentsWidth =  marqueeContents.offsetWidth;

		// and style further
		marqueeContents.style.position = "relative";
		marqueeContents.style.left = marqueeContainerWidth + "px";

		// kick off
		setTimeout('marqueeTimer = setInterval("scrollMarquee()",marqueeDelayBetweenMoves)', marqueeDelayBeforeStart);
	}
}

/*
 * set :first-child class in ie6
 */
function GetFirstChildForElt(elt)
{
	if (elt && elt.hasChildNodes())
	{
		return elt.childNodes.item(0);
	}
	return null;
}

function GetFirstChildForEltId(eltId)
{
	return GetFirstChildForElt(document.getElementById(eltId));
}

function SetClass(elt, className)
{
	if (elt)
	{
		elt.className = className;
	}
}

//v1.0
//Copyright 2006 Adobe Systems, Inc. All rights reserved.
function AC_AddExtension(src, ext)
{
  if (src.indexOf('?') != -1)
    return src.replace(/\?/, ext+'?'); 
  else
    return src + ext;
}

function AC_Generateobj(objAttrs, params, embedAttrs) 
{ 
  var str = '<object ';
  for (var i in objAttrs)
    str += i + '="' + objAttrs[i] + '" ';
  str += '>';
  for (var i in params)
    str += '<param name="' + i + '" value="' + params[i] + '" /> ';
  str += '<embed ';
  for (var i in embedAttrs)
    str += i + '="' + embedAttrs[i] + '" ';
  str += ' ></embed></object>';

  document.write(str);
}

function AC_FL_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".swf", "movie", "clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
     , "application/x-shockwave-flash"
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_SW_RunContent(){
  var ret = 
    AC_GetArgs
    (  arguments, ".dcr", "src", "clsid:166B1BCA-3F9C-11CF-8075-444553540000"
     , null
    );
  AC_Generateobj(ret.objAttrs, ret.params, ret.embedAttrs);
}

function AC_GetArgs(args, ext, srcParamName, classid, mimeType){
  var ret = new Object();
  ret.embedAttrs = new Object();
  ret.params = new Object();
  ret.objAttrs = new Object();
  for (var i=0; i < args.length; i=i+2){
    var currArg = args[i].toLowerCase();    

    switch (currArg){	
      case "classid":
        break;
      case "pluginspage":
        ret.embedAttrs[args[i]] = args[i+1];
        break;
      case "src":
      case "movie":	
        args[i+1] = AC_AddExtension(args[i+1], ext);
        ret.embedAttrs["src"] = args[i+1];
        ret.params[srcParamName] = args[i+1];
        break;
      case "onafterupdate":
      case "onbeforeupdate":
      case "onblur":
      case "oncellchange":
      case "onclick":
      case "ondblClick":
      case "ondrag":
      case "ondragend":
      case "ondragenter":
      case "ondragleave":
      case "ondragover":
      case "ondrop":
      case "onfinish":
      case "onfocus":
      case "onhelp":
      case "onmousedown":
      case "onmouseup":
      case "onmouseover":
      case "onmousemove":
      case "onmouseout":
      case "onkeypress":
      case "onkeydown":
      case "onkeyup":
      case "onload":
      case "onlosecapture":
      case "onpropertychange":
      case "onreadystatechange":
      case "onrowsdelete":
      case "onrowenter":
      case "onrowexit":
      case "onrowsinserted":
      case "onstart":
      case "onscroll":
      case "onbeforeeditfocus":
      case "onactivate":
      case "onbeforedeactivate":
      case "ondeactivate":
      case "type":
      case "codebase":
        ret.objAttrs[args[i]] = args[i+1];
        break;
      case "width":
      case "height":
      case "align":
      case "vspace": 
      case "hspace":
      case "class":
      case "title":
      case "accesskey":
      case "name":
      case "id":
      case "tabindex":
        ret.embedAttrs[args[i]] = ret.objAttrs[args[i]] = args[i+1];
        break;
      default:
        ret.embedAttrs[args[i]] = ret.params[args[i]] = args[i+1];
    }
  }
  ret.objAttrs["classid"] = classid;
  if (mimeType) ret.embedAttrs["type"] = mimeType;
  return ret;
}
