function iNumberOfCheckedCheckboxes(objCheckboxGroup)
{
  var iAantalChecked = 0;

  if (typeof objCheckboxGroup == 'undefined')
  {
    alert('Updater: onbekend checkbox group object');
    iAantalChecked = 0;
  }
  else  
  {
    // als de checkboxgroup uit 1 radiobutton bestaat dan is de checkboxgroup helemaal
    // geen checkbox group maar 1 checkbox en dient dus als zodanig te worden behandeld. 
    if (typeof objCheckboxGroup.length == 'undefined')
    {
      iAantalChecked = objCheckboxGroup.checked?1:0;
    }
    else
    {
      var iNumberOfCheckboxes;
      iNumberOfCheckboxes = objCheckboxGroup.length;
    
      for (var i = 0; i < iNumberOfCheckboxes; i++)
      {
        if (objCheckboxGroup[i].checked)
        {
          iAantalChecked++;
        }
      }
    }
  }
  
  return iAantalChecked;
}


/*
function    : isLegalDate
description : checks if the given year, month, day form a legal date
arguments   : [in] iYear, the year (4 digits)
              [in] iMonth, the month (0=januari, 1=februari ... 11=december)
              [in] iDay, the day of the month (1=first day)
returns     : true if the given year, month, day form a legal date else false
*/
function isLegalDate(iYear, iMonth, iDay)
{
  // save the given date as a legal date
  var dDate = new Date(iYear, iMonth, iDay);
  // the date will be shifted to a legal date if it is illegal.
  // if the year, month and day are not the same as specified through the arguments
  // of this function then the date was shifted e.g. was illegal. 
  var getYear_dDate = (dDate.getYear()<1900)?dDate.getYear() + 1900:dDate.getYear();
  return ((iYear == getYear_dDate) && (iMonth == dDate.getMonth()) && (iDay == dDate.getDate()));
}

/*
' function    : isValidInteger
' description : returns true if the string is a integer
' arguments   : [in] sNumber
' returns     : true if the string contains a valid integer value and nothing but an integer value
'               else false
*/
function isValidInteger(sNumber)
{
  return ((parseInt(parseFloat(sNumber)) == parseFloat(sNumber)) && (!isNaN(sNumber)));
}

/*
' function  : isValidFilename
' overview  : checks if the filename is valid
' arguments : 
' return    : 
' example   : 
' note      : the filename may contain a path, which will be stripped before checking the filename (i.o.w. the )
*/
function isValidFilename(sFilename) {
  return ((/(^|\\|\/)(\w|:|\/| |\.|-)*\.([a-z]+)$/i).test(sFilename));
}

function TryBodyLoadHistoryBackIE()
{

	var sMessage = '';
	var oErrorMessage = null;
	
  if (FormValidationBrowserInfo.IsIE6 == true)
	{ // >= 6
    oErrorMessage = document.getElementById('oFBError');
  	if (oErrorMessage)
  	{ // IE >= 5.5
			try 
			{ 
				//qua beveiliging (IE7) zou userdata persistence uitgeschakeld kunnen zijn
				// dan levert de .load een object fout op
			  oErrorMessage.load('oXMLMessage');
      	sMessage = oErrorMessage.getAttribute('errorMessage');
    	  if (sMessage == null)
    	    sMessage = '';
  				
  			oErrorMessage.setAttribute('errorMessage','');
          oErrorMessage.save('oXMLMessage');
			} 
			catch(e)
			{	
					//alert('catch?');
			};			
  	}
	}
	else
  // voor IE < 5.5 
  { if (window.navigator)
    { if (window.navigator.errorMessage)
	    { if (window.navigator.errorMessage > '')
			    // 'nav:' +
		      sMessage = window.navigator.errorMessage;
					
					window.navigator.errorMessage = '';
		  }
	  }
  }

  if (arVraagOnBusyOff) // zet 'vraag div' aan, 'busy div' uit
	{ for (i=0;i<arVraagOnBusyOff.length;i++)
     { try {eval(arVraagOnBusyOff[i])()} catch(e) {};
     }
	}	 

/*	
	// bv friendly url
	if ((sMessage == '') && (location.pathname != '/cms/publish/content/showpage.asp')) 
	{
	   
	 	 function AJAXMessageResponse(responseText)
		 {
  	   sAjaxMessage = responseText;
  	   bAjaxMessageLoaded = true;
			 if (bInTryOnload == true)
			 {   
			   ShowMessage( sAjaxMessage );
			 }	 		
		 }
	
		 window.attachEvent("onload", TryOnloadAfterAjaxMessage);
		 sAjaxMessage = '';
		 bAjaxMessageLoaded = false;
		 bInTryOnload = false;
	
	 	 var ai = new AJAXInteraction("/cms/publish/content/fb_error_2.asp", AJAXMessageResponse);
  	 ai.doGet(); //1x aanroepen
	}
*/	

  if (sMessage > '')
	{
	 	if (window.attachEvent("onload", TryBodyLoadHistoryShowMessageAfterUnload) == true)
 		{
		 	sMessageAfterUnload = sMessage;
 		  sMessage = '';
		}
		else
		{
      alert(sMessage);
		}	
	}	
	
	/*
  // bv friendly url
	// preview: /cms/explorer/treetabs/tabs/pageversionpreview.asp...
	if ((sMessage == '') && (location.pathname != '/cms/publish/content/showpage.asp')) 
	{	
	  window.attachEvent("onload", TryCheckFBMessage);
	}	
	*/	 
 	
}

function TryCheckFBMessage()
{

	 function AJAXMessageResponse(responseText)
	 {
		   ShowMessage( responseText );
	 }
		 
   var ai = new AJAXInteraction("/cms/publish/content/fb_error_2.asp", AJAXMessageResponse);
   ai.doGet(); //1x aanroepen		 
}

var bMessageShown = false;
function ShowMessage(sMessage)
{
  if (bMessageShown == false)
	{
	   bMessageShown = true;
		 if (sMessage > '')
		 	 alert(sMessage);
	}
}	

var sAjaxMessage = '';
var bAjaxMessageLoaded = false;
var bInTryOnload = false;
function TryOnloadAfterAjaxMessage()
{ 			 
		bInTryOnload = true;		
		window.detachEvent("onload", TryOnloadAfterAjaxMessage);
		if (bAjaxMessageLoaded == true)
		  ShowMessage( sAjaxMessage );
}


var sMessageAfterUnload = '';
function TryBodyLoadHistoryShowMessageAfterUnload()
{ 
	window.detachEvent("onload", TryBodyLoadHistoryShowMessageAfterUnload);
  if (sMessageAfterUnload > '')
	{
    alert(sMessageAfterUnload);
		sMessageAfterUnload = ''; // for sure
	}
}


function TryBodyLoadHistoryBackOpera()
{
  // Opera voert geen onload uit na history.back
	// en kan dus hier ook geen message tonen; deze reeds in fb_error getoond 

  if (arVraagOnBusyOff) // zet 'vraag div' aan, 'busy div' uit
	{ for (i=0;i<arVraagOnBusyOff.length;i++)
     { try {eval(arVraagOnBusyOff[i])()} catch(e) {};
     }
	}	 

}

function TryBodyLoadHistoryBackChrome()
{

  // Chrome net als Opera handelen
	// melding in fb_error gegeven 

  if (arVraagOnBusyOff) // zet 'vraag div' aan, 'busy div' uit
	{ for (i=0;i<arVraagOnBusyOff.length;i++)
     { try {eval(arVraagOnBusyOff[i])()} catch(e) {};
     }
	}	 
 
}

function TryBodyLoadHistoryBackSafari()
{

  // Safari net als Opera handelen
	// melding in fb_error gegeven 
  if (arVraagOnBusyOff) // zet 'vraag div' aan, 'busy div' uit
	{ for (i=0;i<arVraagOnBusyOff.length;i++)
     { try {eval(arVraagOnBusyOff[i])()} catch(e) {};
     }
	}	 
 
}

function TryBodyLoadHistoryBackFireFox()
{
	var sMessage = '';
	try {
   	if (sessionStorage) // deze test levert een fout op in IE
   	{ // 'ff:' +
   		var sItem = sessionStorage.getItem('errorMessage');
  		if (sItem != null)
   		  sMessage = sItem.toString();
  			
   	  sessionStorage.setItem('errorMessage', '');
  	}
	} catch(e) {} ;				

  if (arVraagOnBusyOff) // zet 'vraag div' aan, 'busy div' uit
	{ for (i=0;i<arVraagOnBusyOff.length;i++)
     { try {eval(arVraagOnBusyOff[i])()} catch(e) {};
     }
	}	 

	// Bij Firefox wordt TryBodyLoadHistoryBack in onshowpage aangeroepen
  if (sMessage > '')
  { // De pagina zal er (grotendeels) staan; nu de melding geven
    alert(sMessage);
	}		 
 	
}

function TryVraagOnBusyOff( iOffset )
{
  if (arVraagOnBusyOff) // zet 'vraag div' aan, 'busy div' uit voor 1 formulier
	{ if (iOffset < arVraagOnBusyOff.length)
     { try {eval(arVraagOnBusyOff[iOffset])()} catch(e) {};
     }
	}	 
}



// uit fckeditor  2.60
// try aanvulling rolf
var sNavUserAgent = '';
try
{  sNavUserAgent = navigator.userAgent.toLowerCase();
}
catch(e)
{  // browser sniffing not allowed ? of IE via de Mac???????
  sNavUserAgent = 'MSIE';
};
var sNavProduct = ''
try
{  sNavProduct = navigator.product;
}
catch(e)
{  // browser sniffing not allowed ? of IE via de Mac???????
  sNavProduct = '';
};

String.prototype.Contains = function( textToCheck )
{
	return ( this.indexOf( textToCheck ) > -1 ) ;
}

var FormValidationBrowserInfo =
{
  IsIE		: /*@cc_on!@*/false,
	IsIE8		: /*@cc_on!@*/false && ( parseInt( sNavUserAgent.match( /msie (\d+)/ )[1], 10 ) >= 8 ),
	IsIE7		: /*@cc_on!@*/false && ( parseInt( sNavUserAgent.match( /msie (\d+)/ )[1], 10 ) >= 7 ),
	IsIE6		: /*@cc_on!@*/false && ( parseInt( sNavUserAgent.match( /msie (\d+)/ )[1], 10 ) >= 6 ),
																 	 					 											// aanvulling Rolf 19/6/2009
	IsSafari	: sNavUserAgent.Contains(' applewebkit/') && sNavUserAgent.Contains(' version/'),		
	IsOpera		: !!window.opera,
	IsAIR		: sNavUserAgent.Contains(' adobeair/'),
	IsMac		: sNavUserAgent.Contains('macintosh'),
	// aanvulling Rolf 19/6/2009
	IsChrome: sNavUserAgent.Contains(' applewebkit/') && sNavUserAgent.Contains(' chrome/')
};

// Completes the browser info with further Gecko information.
(function( browserInfo )
{ browserInfo.IsGecko = ( sNavProduct == 'Gecko' ) && !browserInfo.IsSafari && !browserInfo.IsOpera && !browserInfo.IsChrome;
	browserInfo.IsGeckoLike = ( browserInfo.IsGecko || browserInfo.IsSafari || browserInfo.IsOpera ) ;
})(FormValidationBrowserInfo) ;

/*
Chrome: 
mozilla/5.0 (windows; u; windows nt 6.0; en-us) 
 applewebkit/530.5 (khtml, lick gecko) 
 chrome/2.0172.31 
 safari/530.5
 
Safari:
mozilla/5.0 (windows; u; windows nt 6.0; nl-nl) 
 applewebkit/530.17 (khtml, lick gecko)
 version/4.0  
 safari/530.5 
 
Firefox:
mozilla/5.0 (windows; u; windows nt 5.0; en-us; rv:1.8.1.18)
 gecko/20081029
 firefox/2.0.0.18 

Opera:
opera/9.64 (windows nt 6.0;u; nl) presto/2.11
 
*/


function DontUseDivSwithing()
{
  if ((FormValidationBrowserInfo.IsOpera == true) ||
    	(FormValidationBrowserInfo.IsSafari == true) ||
	    (FormValidationBrowserInfo.IsChrome == true)) 
	{
	 return true;
	}
			
  return false; 
}

// in arHistoryBack worden per formbuilder formulier de
// history.back code uitgevoerd (vooral voor firefox nodig)
function TryBodyLoadHistoryBack()
{
	if (FormValidationBrowserInfo.IsIE == true)
	{
		TryBodyLoadHistoryBackIE();
		return;
	}	
		 
	if (FormValidationBrowserInfo.IsChrome == true)
	{
		TryBodyLoadHistoryBackChrome();
		return;
	}	

	if (FormValidationBrowserInfo.IsOpera == true)
	{
		TryBodyLoadHistoryBackOpera();
		return;
	}	
	
	if (FormValidationBrowserInfo.IsSafari == true)
	{
		TryBodyLoadHistoryBackSafari();
		return;
	}		
		 
	if (FormValidationBrowserInfo.IsGeckoLike == true)
	{
		TryBodyLoadHistoryBackFireFox();
		return;
	}	

	TryBodyLoadHistoryBackIE(); // gewoon iets kiezen...
		
}

var arScript = new Array();
function LoadScript(sUrl)
{
  for (var i=0; i<arScript.length;i++)
	{
	  if (sUrl == arScript[i]) return;
	}
	
	arScript[arScript.length] = sUrl;		

  var script = document.createElement('script');
  script.type = 'text/javascript';
  document.getElementsByTagName('head')[0].appendChild(script);
  script.src = sUrl; 
} 

function AJAXInteraction(url, callbackFunction) 
{
  var req = init();
  req.onreadystatechange = processRequest;
      
  function init() 
  {
    // Is het Internet Explorer?
    if (window.ActiveXObject) 
    {
        return new ActiveXObject("Microsoft.XMLHTTP");
    }
  }
  
  function processRequest () 
  {
    if (req.readyState == 4) 
    {
      if (req.status == 200) 
      {
        if (callbackFunction) 
        {
          callbackFunction(req.responseText);
          delete req;
        }
      }
      else
      {
        alert('Communicatie fout status = ' + req.status.toString());
      }
    }
  }

  this.doGet = function() 
  {
    req.open("GET", url, true);
    req.send(null);
  }
  
  this.doPost = function(body) 
  {
    req.open("POST", url, true);
    req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    req.send(body);
  }
}
