/**
 * Macromedia Dreamweaver functions
 */
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_showHideLayers() { //v6.0
  var i,p,v,obj,args=MM_showHideLayers.arguments;
  for (i=0; i<(args.length-2); i+=3) if ((obj=MM_findObj(args[i]))!=null) { v=args[i+2];
    if (obj.style) { obj=obj.style; v=(v=='show')?'visible':(v=='hide')?'hidden':v; }
    obj.visibility=v; }
}

function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


/**
 * Dingen doen met formulieren
 */
function submitForm(f)
{
  //var f=document.forms[formname];
 	if (validateForm(f)) {
    f.submit();
  }  
}

function validateForm(aform)
{
	var s="";

	//check if form has validator arr
	if (aform.validatorArr)
	{
		//Iterate over Form elements
		for (var i=0;i<aform.validatorArr.length;i++)
		{
			var anelem=aform[aform.validatorArr[i][1]];
			var pattern=getPatternByName(aform.validatorArr[i][2]);

			if (aform.validatorArr[i][4]=="radio")
			{
				var fv="";

				eval("var chkArray=aform."+aform.validatorArr[i][1]+";");
				
				for (j=0;j<chkArray.length;j++)
				{
					if (chkArray[j].checked)
					{
						fv=chkArray[j].value;
					}
				}

				if (validateValue(fv,pattern) == false)
				{
					s+=aform.validatorArr[i][3]+"\n";
				}	
				
			}
			else
			{	
				if (validateField(anelem,pattern) == false)
				{
					s+=aform.validatorArr[i][3]+"\n";
				}	
			}	
		}	
		
		//Report errors
		if (s!="")
		{
			alert(s);
			return false;
		}	

	}	
	
	return true;
}

//Pass a form element (not just the name) and a regular expression pattern
function validateField(formElem,pattern) 
{
  var re = new RegExp(pattern);
  var fv = formElem.value;

  return re.test(fv);
}

//Pass a value and a regular expression pattern
function validateValue(fv,pattern) 
{
  var re = new RegExp(pattern);
  return re.test(fv);
}

function getPatternByName(patternName)
{
  switch (patternName) {
    case "empty_or_email":
      return "^$|^[0-9a-zA-Z][-_0-9a-zA-Z.]*@[-_0-9a-zA-Z.]+[.][a-zA-Z]+$";
      break;
  	case "empty_or_url":
      return "^$|^http://.{2,}";
      break;
  	case "empty_or_time":
      return "^$|^00:00$|^[012][0-9]:[0-9][0-9]$";
      break;
  	case "empty_or_date":
      return "^$|^0000-00-00$|^[12][0-9]{3}[-][01]?[0-9]-[0-3]?[0-9]$";
      break;
  	case "empty_or_number":
      return "^$|^[0-9]+$";
      break;
  	case "notempty":
      return "^.";
      break;
    case "email":
      return "^[0-9a-zA-Z][-_0-9a-zA-Z.]*@[-_0-9a-zA-Z.]+[.][a-zA-Z]+$";
      break;
  	case "pagename":
      return "^[_a-z0-9]{1,50}$";
      break;
  	case "username":
      return "^[_a-z0-9]{1,50}$";
      break;
  	case "pass":
      return "^[a-zA-Z0-9 ]{3,20}$";
      break;
   	//dd-mm-yyyy
   	case "nldate":
      return "^[0-3]?[0-9][-][01]?[0-9][-][12][0-9]{3}$";
      break;
   	//yyyy-mm-dd
   	case "date":
      return "^[12][0-9]{3}[-][01]?[0-9]-[0-3]?[0-9]$";
      break;
  	case "integer":
      return "^[-]?[0-9]+$";
      break;
  	case "posinteger":
      return "^[0-9]+$";
      break;
  	case "float":
      return "^[+-]?[0-9]+([.][0-9]+)?$";
      break;
  	case "nlfloat":
      return "^[+-]?[0-9]+([,][0-9]+)?$";
      break;    	
		case "url":
      return "^http://.{2,}";
      break;    	
  	default: 
   		alert("Unknown validator added to a form element: '" + patternName+"'");
	} 	   
}

//addValidator("mainform","naam","notempty","Uw naam mag niet leeg zijn.");
function addValidator(aformname,aformelement,avalidator,anerrormsg)
{
	eval("var anelem=document.forms."+aformname+"."+aformelement);

	//Radiogroup or a single element
	if (anelem[0])
	{
		atype=anelem[0].type;
	}
	else
	{
		atype=anelem.type;
	}	
	
	//check if validatorArr has been added to the form
	if (!document.forms[aformname].validatorArr)
	{
		document.forms[aformname].validatorArr= new Array();	
	}	
	
	//add new array to a new last position in the array
	document.forms[aformname].validatorArr[document.forms[aformname].validatorArr.length]=
		new Array(aformname,aformelement,avalidator,anerrormsg,atype);
}

function initSelect(formname,obj,v) {
	eval("var rd=document.forms['"+formname+"']."+obj);
	if (rd==null)	{
		alert("Error: " + obj + " does not exist on form "+formname+".");
	}
	if (rd.length>1) {
		for (var i=0; i<rd.length; i++)	{
			if (rd[i].value==v)	{
				rd[i].selected=true;		
				break;
			}
		}
	}
	else {
		//exception for single item
		if (rd.value==v) {
			rd.selected=true;		
		}
	}
}

function initForm(formname,formvalues)
{
	//parse the formdata field
	var formentries=String(formvalues).split("&");

	for (var i=0;i<formentries.length;i++)
	{
		var formentry=String(formentries[i]).split("=");
		
		if ((formentry[0]!=null)&&(formentry[0]!=""))
		{
			eval("var comp=document."+formname+"."+formentry[0]);
			if ((comp!=null)&&(formentry[1]!=null))
			{
				if ((comp.type=="text")||(comp.type=="textarea"))
				{
					comp.value=unescape(formentry[1]);
				}
				else if (comp.type=="checkbox")
				{
					if (comp.value==formentry[1])
					{
						comp.checked=true;	
					}	
				}
				else if (comp[0].type=="radio")
				{
					initRadio(formname,formentry[0],formentry[1]);
				}
				else if (comp.type=="select-one")
				{
					initSelect(formname,formentry[0],formentry[1]);
				}	
			}
		}	
	}
}

function initRadio(formname,obj,v)
{
	eval("var rd=document.forms['"+formname+"']."+obj);

	if (rd==null)
	{
		alert("Error: " + obj + " does not exist on form "+formname+".");
	}
	
	if (rd.length>1)
	{
		for (var i=0; i<rd.length; i++)
		{
			if (rd[i].value==v)
			{
				rd[i].checked=true;
				break;
			}
		}
	}
	else
	{
		//exception for single radiobutton
		if (rd.value==v)
		{
			rd.checked=true;		
		}
	}	
}

function initSelect(formname,obj,v)
{
	eval("var rd=document.forms['"+formname+"']."+obj);
	if (rd==null)
	{
		alert("Error: " + obj + " does not exist on form "+formname+".");
	}
	if (rd.length>1)
	{
		for (var i=0; i<rd.length; i++)
		{
			if (rd[i].value==v)
			{
				rd[i].selected=true;		
				break;
			}
		}
	}
	else
	{
		//exception for single radiobutton
		if (rd.value==v)
		{
			rd.selected=true;		
		}
	}
}

function unsetRadio(aradioName)
{
  f=document.forms[0];
  r=f[aradioName];
  //r=MM_findObj(aradioName);
  if (!r.value)
  {
		for (i=0;i<r.length;i++)
    {		
		  r[i].checked=false;
		}  
  }
}

//Retrieves the selected values for aradioName, -1 if none selected
function getSelectedRadio(aradioName)
{
	var chkArray = MM_findObj(aradioName);
	
	//exception for a single radiobutton
	if ((chkArray.value != null) && (chkArray.checked))
	{
		return chkArray.value;
	}
	
	for (i=0;i<chkArray.length;i++)
	{
		if (chkArray[i].checked)
		{
			return chkArray[i].value;
		}
	}

	return -1;
}

/* Functies voor popups */
function fotoalbum(aurl)
{
  var w=window.open(aurl,'fotoalbum','left=0,top=0,width=678,height=530,scrollbars=yes,status=no,menubar=no,location=no,resizable=no,titlebar=no,a');
  w.focus();
}

function showDoc(theUrl,theTitel)
{
  var nw=window.open(theUrl,'Oase','left=0,top=0,scrollbars,status,menubar,location=no,resizable,titlebar=no');
  nw.focus();
}

/* 
###################################################
# FUNCTIES VOOR HET MENU IN DE LINKERKOLOM                            
#==================================================
# (1) togglemenu =>                            
# Het menu kan open en dicht door op + dan 
# wel - te klikken.
#--------------------------------------------------
# (2) gotoURLAndOpenMenu => 
# Het menu gaat ook open na klikken op het 
# hoofd menu-item.
#--------------------------------------------------
# (3) setSessionDisplayProperties => 
# De open/dicht status wordt opgeslagen 
# in een SESSION var via een AJAX request.
#
###################################################
*/

function togglemenu(menuopen_id,plusmin_id)
{
	var menuDiv = document.getElementById(menuopen_id);
	var plusMin = document.getElementById(plusmin_id);
	//alert(menuDiv.style.display);
	if(menuDiv.style.display=="block")
	{
		menuDiv.style.display="none";
		plusMin.innerHTML="+";
	}
	else if(menuDiv.style.display=="none")
	{
		menuDiv.style.display="block";		
		plusMin.innerHTML="-";
	}
	
	setSessionDisplayProperties(menuopen_id,menuDiv.style.display);
	
}

function gotoURLAndOpenMenu(theURL,menuopen_id){
	var display="block";
	setSessionDisplayProperties(menuopen_id,display);
	document.location.href=theURL;
}


/**
 * Functies voor het versturen van een ajax XMLHttpRequest. 
*/
var xmlHttp

function setSessionDisplayProperties(divID,display)
{
	xmlHttp=GetXmlHttpObject()
	if (xmlHttp==null)
	{
		alert ("Browser does not support HTTP Request");
		return;
	} 
	var url="scripts/set_display_properties.php";
	url=url+"?divID="+divID;
	url=url+"&display="+display;
	url=url+"&sid="+Math.random();
	xmlHttp.onreadystatechange=stateChanged;
	xmlHttp.open("GET",url,true);
	xmlHttp.send(null);
}

function stateChanged() { 
	if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
	{ 
			/* als je de response wilt testen haal dan de commets hieronder weg */
			//alert ("response: "+xmlHttp.responseText);
	} 
} 

function GetXmlHttpObject() { 
	var objXMLHttp=null;
	if (window.XMLHttpRequest)
	{
		objXMLHttp=new XMLHttpRequest();
	}
	else if (window.ActiveXObject)
	{
		objXMLHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}
	return objXMLHttp;
}

/*Toggle group op documenten pagina*/
  var currgroep=0;
  var oldimage;
  
  function groupShow(groep)
  {
  	hideOtherGroups("groep"+groep);
  	currgroep=groep;
  
  	//toggle clicked div
  	var div_vragen=document.getElementById("groep"+groep);
  	div_vragen.style.display=(div_vragen.style.display=='none')?div_vragen.style.display='block':div_vragen.style.display='none';
  }
  
  function hideOtherGroups(groep)
  {
  	divs = document.getElementsByTagName("div");
  	for (var i=0; i<divs.length; i++) 
  	{
  	  if (divs[i].id!=groep && divs[i].id.substr(0, 5)=="groep" && divs[i].style.display!="none")
  	  {
  	  	divs[i].style.display="none";
  		}	
  	}
  }
  
  function openEersteRubriek()
  {
    firstGroup='<xsproc name="getFirstLinksGroup"></xsproc>';
    if (firstGroup!="")
    {
      groupShow(firstGroup);
    } 
  }
