var msg={
  'required': 'Alleen volledig ingevulde formulieren worden in behandeling genomen',
  'nodate': 'Het formaat van een datum is dd-mm-jjjj (dag-maand-jaar)',
  'nodatetime': 'Het formaat van een datum/tijd is dd-mm-jjjj hh:mm\n(dag-maand-jaar uur:minuten)\n\nDe tijd mag weggelaten worden.',
  'fmtEmail': 'Hier moet een email-adres ingevuld worden.',
  'pwdMailer':'Om uw wachtwoord per email te ontvangen,\nmoet u eerst uw wachtwoord hier invullen.',
  'pwdWrong':'Het wachtwoord moet om veiligheidsredenen minimaal 6 tekens lang zijn.'
}

function ID(s) { return document.getElementById(s); }
var vorigeFouteLabel;
function fout(o,s)
{
  var sMsg;
  if(msg[s]) sMsg=msg[s];
  else sMsg='Onbekende melding:\n----------------\n'+s;

  if(vorigeFouteLabel) 
  {
    vorigeFouteLabel.className=vorigeFouteLabel.className.replace(' fout','');
    vorigeFouteLabel.title='';
  }
  vorigeFouteLabel=ID('label_'+o.id);
  if(vorigeFouteLabel) 
  {
    vorigeFouteLabel.className+=' fout';
    vorigeFouteLabel.title=sMsg;
  }
  alert(sMsg);
  o.focus();
  return false;
}
function trim(o)
{
  if(typeof o=='string') return s.replace(/^ +/,'').replace(/ +$/,'');
  else if(typeof o=='object') o.value=o.value.replace(/^ +/,'').replace(/ +$/,'');
}
//---[ Check functies ]------------------------------------------
function chkReq(o)
{
  trim(o);
  return o.value.length==0;
}
function chkEmail(o)
{
  return o.value.indexOf('@')==-1;
}
function chkPwd(o)
{
  return o.value.length<6;
}
function chkDate(o,fmt)
//--#check control op formaat
//--@fmt;type=string;optional;default='datetime'@
{
  var reDate=/^\d{1,2}-\d{1,2}-\d{4}$/;
  var reTime=/^\d{1,2}:\d{1,2}$/;
  var reTimeS=/^\d{1,2}:\d{1,2}:\d{1,2}$/;
  var reDateTime=/^\d{1,2}-\d{1,2}-\d{4} \d{1,2}:\d{1,2}$/;
  var reDateTimeS=/^\d{1,2}-\d{1,2}-\d{4} \d{1,2}:\d{1,2}:\d{1,2}$/;
  if(!fmt) fmt='datetime';
  if(o.value=='') return false; //leeg veld mag ook
  switch(fmt)
  {
    case 'date':      return !reDate.test(o.value);
    case 'time':      return !reTime.test(o.value);
    case 'timeS':     return !(reTimeS.test(o.value)||reTime.test(o.value));
    case 'datetime':  return !(reDateTime.test(o.value)||reDate.test(o.value));
    case 'datetimeS': return !(reDateTimeS.test(o.value)||reDateTime.test(o.value)||reDate.test(o.value));
  }
}
//---[ RPC functies ]------------------------------------------
if(window.attachEvent)
{
  window.attachEvent('onload',
    function()
    {
      document.body.attachEvent('onkeypress',rpcDbgShowIFrame);
    }
  );
}

function rpcDbgShowIFrame()
{
  if(event.keyCode==28) //control-backslash
  {
    var o=document.getElementById('rpc');
    if(o) 
    {
      o.style.visibility=o.style.visibility=='visible'?'hidden':'visible';
    }
    else 
    {
      window.status+='|RPC: no show';
    }
  }
}

function openPicture(url,w,h)
{
  var x=parseInt(screen.width*0.5-320,10),y=parseInt(screen.height*0.33-158,10);
  w+=20;if(w<100) w=100;
  h+=20;if(h<100) h=100;
  window.open(url,'_blank','fullscreen=0,location=0,menubar=0,resizable=1,scrollbars=0,status=0,toolbar=0,width='+w+',height='+h+',left='+x+',top='+y);
  return false;
}

function toggleOverflow(id)
{
  var o=document.getElementById(id);
  if(o.currentStyle.overflow=='visible')
  {
    o.style.overflow='auto';
  }
  else
  {
    o.style.overflow='visible';
  }
}
function evenGeduld(bln,txt)
{
  var o=ID('evenGeduldAub');
  if(bln)
  {
    if(o==null)
    {
      o=document.createElement('div');
      o.setAttribute('id','evenGeduldAub');
      o.appendChild(document.createTextNode(txt||'Even geduld a.u.b.'));
      document.body.appendChild(o);
    }
    else
    {
      o.style.visibility='visible';
    }
  }
  else 
  {
    if(o) //to make sure
    {
      o.style.visibility='hidden';
    }

  }
}
/** xHTML helpers**/
function lt(a,b){return a<b;}
function le(a,b){return a<=b;}
function gt(a,b){return a>b;}
function ge(a,b){return a>=b;}
//
function obj2str(o,r) {  var s='';   for(var i in o) {     if(!r||r.test(i)) {      s+=i+': '+o[i]+'\n';   } }  return s;}

/** icon functions **/
function removeRow(o)
{
	var row=getTR(o);
	if(row) 
	{
		row.parentNode.removeChild(row);
	}
}
function appendRow(o,templateNode)
{ 
	var templateRow,row,newRow;
	if(templateNode) templateRow=getTR(templateNode)
	else templateRow=getTR(o);
	row=getTR(o);
	newRow;
	if(row)
	{
		newRow=templateRow.cloneNode(true);
		forAllElements(newRow,clearFormElements);
		row.parentNode.insertBefore(newRow,row);
	}
}
function moveUp(o)
{
	var row=getTR(o);
	if(row.previousSibling&&getIconActionBar(row.previousSibling)!=null)
	{
		DOMNode_swapNode(row.previousSibling,row);
	}
	else
	{
		alert('Sorry, item kan niet verder naar boven.');
	}
}
function moveDown(o)
{
	var otherRow,row=getTR(o);
	if(row.nextSibling&&getIconActionBar(row.nextSibling)!=null)
	{
		DOMNode_swapNode(row,row.nextSibling);
	}
	else
	{
		alert('Sorry, item kan niet verder naar onder.');
	}
}
function DOMNode_swapNode(n1,n2)
{
	n1.parentNode.insertBefore(n2.parentNode.removeChild(n2),n1);
}
function getTR(o)
{
	if(o.tagName.toLowerCase()=='tr') return o;
	var row=o.parentNode;
	while(row.tagName.toLowerCase()!='tr') {
		row=row.parentNode;
		if(row==null) return null;
	}
	return row;
}
function getIconActionBar(tr)
{
	var result=null;
	function testNode(node)
	{
		if(node.tagName.toLowerCase()=='span'&&node.className.indexOf('actionIcon')>=0)
		{
			result=node;
		}
	}
	forAllElements(tr,testNode);
	return result;
}
function clearFormElements(element)
{
	var type=element.tagName.toLowerCase();
	if(type=='input') type=element.type;
	switch(type)
	{
		case 'select':
		case 'text': 
		element.value=''; 
		break;
	}
}
function forAllElements(o,f)
{
	var ELEMENT=1;
	for(var i=0; i<o.childNodes.length; i++)
	{
		var child=o.childNodes[i];
		if(child.nodeType==ELEMENT) 
		{
			f(child);
			forAllElements(child,f);
		}
	}
}