var timer1;
var timer2;

var activeNiv1='';
var activeNiv2='';

var baseDelay1=250;
var extendedDelay1=2000;

var delayNiv1=baseDelay1;
var delayNiv2=500;

var niv2locked=false;
var delayNiv2Locked=1000;

/* opent een hoofdmenu */
function displayMenuNiv1(m) {
	delayNiv1=baseDelay1;
	if (timer1) {
		window.clearTimeout(timer1);
	}

	if (activeNiv1 && activeNiv1!=m) {
		hideMenuNiv1(activeNiv1);
	}
	m.className='niv0Active';
	
	//Activeer tab
	var tabImg=m.getElementsByTagName("IMG");
	tabImg[0].src=tabImg[0].src.replace("_n.gif","_a.gif");
	
	activeNiv1=m;
}

/* verbergt een hoofdmenu direct */
function hideMenuNiv1(m) {
	m.className='niv0';
	
	//Activeer tab
	var tabImg=m.getElementsByTagName("IMG");
	tabImg[0].src=tabImg[0].src.replace("_a.gif","_n.gif");
	
}

/* verbergt een open hoofdmenu met een vertraging van delayNiv1 milliseconden */
function delayedHideMenuNiv1(m) {
	timer1=window.setTimeout(function() {
			hideMenuNiv1(m);
		},delayNiv1
	);
}


/**
 * Opent een submenu
 */
function displayMenuNiv2(sm) {
	/* */
	if (!niv2locked) {
		if (activeNiv2 && activeNiv2!=sm) {
			//Als er een actief submenu is, heb je kans dat het menu onder je muis wegschuift, om dit tegen te gaan de verberg-delay opschroeven
			delayNiv1=extendedDelay1;
			hideMenuNiv2(activeNiv2);
		}

		Effect.BlindDown($(sm), {
			duration: 0.4,
			beforeStart: function() {
				niv2locked=true;
				window.setTimeout(function() {
					niv2locked=false;
				},delayNiv2Locked);
			}
		});

		activeNiv2=sm;
	} else {
		/* als het submenu gelockt is zetten we een nieuwe timer aan */
		timer2=window.setTimeout(function() {
				displayMenuNiv2(sm);
			},delayNiv2
		);
	}
}

/* klapt een open submenu dicht */
function hideMenuNiv2(sm) {
	Effect.BlindUp($(sm), { duration: 0.3 });
}

/* zoekt uit of een menu-item (niv1) een submenu heeft (niv2) en zo ja start een timer op het niv2-menu open te klappen */
function delayedShowSub(m) {
	if (timer2) {
		window.clearTimeout(timer2);
	}

	var subMenu=Element.next(m);
	if (subMenu!=undefined) {
		if (subMenu.nodeName=="DIV") {
			timer2=window.setTimeout(function() {
					displayMenuNiv2(subMenu);
				},delayNiv2
			);
		}
	}
}

function cancelSub() {
	if (timer2) {
		window.clearTimeout(timer2);
	}
}

/* opent kennistest in een nieuw window */
function openKennistest(url) {
	window.open(url,'kennistest','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=450,height=350');
}

function laadMeerArtikelen(tab,s,v) {
	var url='/laad_artikel.php?t='+tab+'&s='+s+'&v='+v;
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(serverReply) {
			$('allesOver'+tab).update(serverReply.responseText);
		},
		onFailure: function(serverReply) {
			alert("De opgevraagde artikelen zijn momenteel niet beschikbaar.");
		}
	});
}

function laadMeerArtikelenAllesVoor(tab,s,d) {
	var url='/laad_artikel.php?t='+tab+'&s='+s+'&d='+d;
	new Ajax.Request(url, {
		method: 'get',
		onSuccess: function(serverReply) {
			$('allesOver'+tab).update(serverReply.responseText);
		},
		onFailure: function(serverReply) {
			alert("De opgevraagde artikelen zijn momenteel niet beschikbaar.");
		}
	});
}

function isValidEmail(email) {
	return validateValue(email,getPatternByName("email"));
}

//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 "06nummer":
			return "^06(\\s|-|\\s-\\s)?[0-9]{8}$";
      break;
    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_float":
      return "^$|[+-]?[0-9]+([.][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+"'");
	}
}


function zoeken() {
	//Afhankelijk van de gekozen subsite submit-pagina aanpassen
	var f=$('searchForm');
	var ss=$F('subsite');
	
	if (ss==1) {
		f.action=zoekURL;
	} else if (ss==99) {
		f.action=zoekMediaURL;
	} else {
		f.action=zoekGerubriceerdURL;
	}
	f.submit()
}

function popup(url) {
  window.open(url,'jellinek_popup_w700_h600','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no,width=700,height=600');
  return false;
}


