function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

function setCrumbs(){
  pos_crumb=findPos('layerCrumbs','divCrumbs');
  document.getElementById('Crumbs').style.left=pos_crumb[0]+15+"px";
}

function findPos(netscape, other){
  if(bw.ns4){   //Netscape 4
    x = document.layers.netscape.pageX
    y = document.layers.netscape.pageY
  }else{ //other browsers
    x=0; y=0; var el,temp
    el = bw.ie4?document.all[other]:document.getElementById(other);
    if(el.offsetParent){
      temp = el
      while(temp.offsetParent){ //Looping parent elements to get the offset of them as well
        temp=temp.offsetParent; 
        x+=temp.offsetLeft
        y+=temp.offsetTop;
      }
    }
    x+=el.offsetLeft
    y+=el.offsetTop
  }

  //Returning the x and y as an array
  return [x,y]
}

function emptystr(string) {
	var x = 0;
	var chr;
	var empty = true;
	if (string.length) {
		do {
			chr = string.substring(x, x + 1);
			x++;
			empty = (chr == ' ' || chr == '\t' || chr == '\n' || chr == '\r');
		} while (empty && x < string.length);
	}
	return empty;
}

function checkNumber(item, name){
  if (isNaN(document.form_cms.elements[item].value)){
	  alert(name + ' moet een nummer zijn!');
    document.form_cms.elements[item].focus();
    return false;
  }
  else{
    return true;
  }
}

function checkSearcb(form, item, name, length){
  if(document.forms[form].elements[item].value.length < length){
    alert('Het veld ' + name + ' moet minimaal ' + length + ' karakters bevatten!');
    document.forms[form].elements[item].focus();
    return false;
  }
  else
    return true;
}

function checkEmpty(form, item, name){
  if (emptystr(document.forms[form].elements[item].value)){
    alert('U bent ' + name + ' vergeten in te voeren!');
    document.forms[form].elements[item].focus();
    return false;
  }
  else
    return true;
}

function checkEmail(form, item){
  var pattern=/(^[\-_\.a-zA-Z0-9]+)@((([0-9]{1,3}\.){3}([0-9]{1,3})((:[0-9])*))|(([a-zA-Z0-9\-]+)(\.[a-zA-Z]{2,})+(\.[a-zA-Z]{2})?((:[0-9])*)))/;
  
  if (document.forms[form].elements[item].value.search(pattern) == -1){
    alert('Het e-mailadres is onjuist!');
    document.forms[form].elements[item].focus();
    return false;
  }
  else{
    return true;
  }
}

function checkRadio(item){
  for(var i = 0; i < document.form_cms.elements[item].length; i++){
    if(document.form_cms.elements[item][i].checked == true){
      return true;
    }
  }
  alert('U moet een waarde selecteren!');
  return false;
}

function checkPoll(item){
  for(var i = 0; i < document.form_poll.elements[item].length; i++){
    if(document.form_poll.elements[item][i].checked == true){
      return true;
    }
  }
  alert('U moet een waarde selecteren!');
  return false;
}

function checkPassword(item1, item2){
  if (document.form_cms.elements[item1].value != document.form_cms.elements[item2].value){
    alert('Het wachtwoord en de bevestiging van het wachtwoord komen niet overeen!');
    document.form_cms.elements[item1].focus();
    return false;
  }
  else{
    return true;
  }
}

function checkEmptyCheckbox(item, name) {
  var chkd = 0;
  for (var i = 0; i < document.form_cms.elements.length; i++) {
    var obj = document.form_cms.elements[i];
    if (obj.name == item && obj.checked) {
      chkd = 1;
      break;
    }
  }

  if (chkd != 1) {
    alert(name);
    return false;
  }
  else {
    return true;
  }
}

function checkCheckedCheckbox(form, name, item) {
    var chkd = 0;
    for (var i = 0; i < document.forms[form].elements.length; i++) {
        var obj = document.forms[form].elements[i];
        if (obj.checked) {
            chkd = chkd + 1;
        }
    }

    if (chkd <= 0) {
        alert('Er is geen ' + item + ' geselecteerd');
        return false;
    } else {
        return true;
    }
}

function checkPhone(form, item, name){
  var pattern=/^(\d{3}-?\d{7}|\d{4}-?\d{6})$/;

  if (!emptystr(document.forms[form].elements[item].value)){
    if (document.forms[form].elements[item].value.search(pattern) == -1) {
      alert('Dit is geen geldig ' + name);
      document.forms[form].elements[item].focus();
      return false;
    }
  }

  return true;
}

function checkLength(form, item, name, length){
  if (!emptystr(document.forms[form].elements[item].value)){
    if(document.forms[form].elements[item].value.length < length){
      alert('Het veld ' + name + ' moet minimaal ' + length + ' karakters bevatten!');
      document.forms[form].elements[item].focus();
      return false;
    }
  }

  return true;
}

function onlyDigits(form, item, name){
  var pattern=/^[0-9]+$/;

  if (!emptystr(document.forms[form].elements[item].value)){
    if (document.forms[form].elements[item].value.search(pattern) == -1) {
      alert('Dit is geen geldig ' + name);
      document.forms[form].elements[item].focus();
      return false;
    }
  }

  return true;
}

function onlyCharacters(form, item, name){
  var pattern=/^[aA-zZ]+$/;

  if (!emptystr(document.forms[form].elements[item].value)){
    if (document.forms[form].elements[item].value.search(pattern) == -1) {
      alert('Dit is geen geldig ' + name);
      document.forms[form].elements[item].focus();
      return false;
    }
  }

  return true;
}

function checkZipcode(form, item, name){
  var pattern=/^[0-9]{4}\s{0,1}[a-zA-Z]{2}$/;

  if (!emptystr(document.forms[form].elements[item].value)){
    if (document.forms[form].elements[item].value.search(pattern) == -1) {
      alert('Dit is geen geldig ' + name);
      document.forms[form].elements[item].focus();
      return false;
    }
  }

  return true;
}

function checkDate(form, item, name) {
  var reg = /^([0-9]+)\-([0-9]+)\-([0-9]+)$/, res;
  var day, month, year, date_error;

  if (!emptystr(document.forms[form].elements[item].value)){
    if (!(res = document.forms[form].elements[item].value.match(reg))) {
      date_error = true;
    }
    else {
      day = parseInt(res[1], 10);
      month = parseInt(res[2], 10) - 1;
      year = parseInt(res[3], 10);
      var date = new Date(year, month, day);

      if (date.getDate() != day || date.getMonth() != month || date.getFullYear() != year)
        date_error = true;
    }

    if (date_error){
      alert('Dit is geen geldige ' + name + '!');
      document.form_cms.elements[item].focus();
      return false;
    }
  }


  return true;
}

function checkDatePresent(form, item, name) {

   if(checkDate(form, item, name))  {
      if (trim(document.forms[form].elements[item].value)!=""){
       	  var now = new Date();
       	  var reg = /^([0-9]+)\-([0-9]+)\-([0-9]+)$/, res;
       	  var day, month, year;
       	  
       	  now = new Date(now.getFullYear(), now.getMonth(), now.getDate());
    	  now = now.getTime(); 
    	  res = document.forms[form].elements[item].value.match(reg);
    	  
          day = parseInt(res[1], 10);
          month = parseInt(res[2], 10) - 1;
          year = parseInt(res[3], 10);
          var dateToCheck = new Date(year, month, day);	
    	  dateToCheck = dateToCheck.getTime(); 
    	  if (now > dateToCheck){
    	     alert('De ' + name + ' ligt in het verleden!');
    	     return false;
    	  }
      }
   }
   else
      return false;
   return true;   
}


// Check function for form module 
function form_checkField(type, name, label) {
  var msg;
  switch (type) {
    case 'email':
      var valid = true;

      if (!emptystr(document.forms['form_cms'].elements[name].value))
         valid = checkEmail('form_cms', name);

      return valid;
      break;
    case 'accountnr':
      return checkLength('form_cms', name, label, 1);
      break;
    case 'bsn':
      return onlyDigits('form_cms', name, label) && checkLength('form_cms', name, label, 9);
      break;
    case 'zipcode':
      return checkZipcode('form_cms', name, label);
      break;
    case 'date_present':
      return checkDatePresent('form_cms', name, label);
      break;        
    case 'date':
      return checkDate('form_cms', name, label);
      break;
    case 'onlynumbers':
      return onlyDigits('form_cms', name, label);
      break;
    case 'onlyalpha':
      return onlyCharacters('form_cms', name, label);
      break;
    case 'phonenr':
      return checkPhone('form_cms', name, label);
      break;
  }
  return true;
}

// Validate function for form module 
function form_validateField(type, name, label) {
  switch (type) {
    case 'upload':
      var upload = document.getElementById('upload'+name);
      if (upload.value == 1)
        return true;
      else {
        alert(label + " is een verplicht veld!");
        return false;
      }
      break;        
    case 'textfield':
    case 'password':
      if (document.forms['form_cms'].elements[name].type != 'hidden')
        return checkEmpty('form_cms', name, label);
      else
        return true;
      break;
    case 'textarea':
      return checkEmpty('form_cms', name, label);
      break;
    case 'radio':
    case 'checkbox':
      var sel = false;
      var frm = document.forms['form_cms'];
      for (var i = 0; i < frm.elements.length && !sel; i++)
        sel = (frm.elements[i].name == name && frm.elements[i].checked);

      if (sel)
        return true;
    	else {
        alert(label + " is een verplicht veld!");
        return false;
      }
      break;
    case 'select':
      if (document.forms['form_cms'].elements[name].selectedIndex == -1) {
        alert(label + " is een verplicht veld!");
        return false;
      }
      return true;
      break;
  }
  return false;
}

function form_validateForm() {
  var ret = true;

  for (var i = 0; i < form_formValidate.length && ret; i++)
    ret = form_validateField(form_formValidate[i][0], form_formValidate[i][1], form_formValidate[i][2]);

  for (var i = 0; i < form_formChecks.length && ret; i++)
    ret = form_checkField(form_formChecks[i][0], form_formChecks[i][1], form_formChecks[i][2]);
  
  return ret;
}

function checkForm(moduleName, formName, action) {
  switch (moduleName) {
    case 'forum':
      switch (formName) {
        case 'subject':
          if (action == 'add')
            return (checkEmpty(formName, 'subject', 'het onderwerp') && checkEmpty(formName, 'user', 'de naam') && checkEmail(formName, 'email') && checkEmpty(formName, 'content', 'het bericht')); 
          else
            return false;
          break;
        case 'post':
          if (action == 'add')
            return (checkEmpty(formName, 'user', 'de naam') && checkEmail(formName, 'email') && checkEmpty(formName, 'content', 'het bericht')); 
          else 
            return false;
          break;
      }
      break;
    case 'newsletter':
      switch (formName) {
        case 'member':
          if (action == 'add')
            return (checkEmpty(formName, 'lastname', 'de achternaam') && checkEmpty(formName, 'firstname', 'de voornaam') && checkEmail(formName, 'email') && checkEmptyCheckbox('group[]', 'Selecteer minimaal 1 groep!'));
          else if (action == 'remove')
            return checkEmail(formName, 'email');
          else
            return false;
      }
      break;
    case 'job':
      switch (formName) {
        case 'reaction':
          if (action == 'send')
            return (checkEmpty(formName, 'firstname', 'de voornaam') && checkEmpty(formName, 'lastname', 'de achternaam')  && checkEmpty(formName, 'address', 'het adres')  && checkEmpty(formName, 'zipcode', 'de postcode')  && checkEmpty(formName, 'city', 'de woonplaats') && checkEmail(formName, 'email')  && checkEmpty(formName, 'motivation', 'de motivatie'));
          else
            return false;
          break;
        case 'member':
          if (action == 'login')
            return (checkEmpty(formName, 'username', 'de gebruikersnaam') && checkEmpty(formName, 'password', 'het wachtwoord'));
          else if (action == 'add')
            return (checkEmpty(formName, 'username', 'de gebruikersnaam') && checkEmpty(formName, 'password', 'het wachtwoord') && checkPassword('password', 'password_check') && checkEmpty(formName, 'name', 'de naam') && checkEmpty(formName, 'email', 'het e-mailadres') && checkEmail(formName, 'email') && checkEmptyCheckbox('jobcategories[]', 'Selecteer minimaal 1 rubriek!'));
          else if (action == 'change')
            return (checkPassword('password', 'password_check') && checkEmpty(formName, 'name', 'de naam') && checkEmpty(formName, 'email', 'het e-mailadres') && checkEmail(formName, 'email') && checkEmptyCheckbox('jobcategories[]', 'Selecteer minimaal 1 rubriek!'));
          else if (action == 'remove')
            return (checkEmpty(formName, 'password', 'het wachtwoord') && confirm('Weet u zeker dat u uw registratie wil verwijderen?'));
          break;
      }
      break;
    case 'search':
      if (action == 'search')
        return (checkSearcb(formName, 'search', 'zoekopdracht', 3));
      else if (action == 'search_keyword')
        return checkEmpty(formName, 'search_string', 'de zoekopdracht');
      else
        return false;
    break;
    case 'poll':

      if (action == 'vote')
        return (checkPoll('answer'));
      else
        return false;
      break;
    case 'rule':
      return checkSearcb(formName, 'search', 'zoekopdracht', 3);
      break;

        case 'publication':
            switch (formName) {
                case 'registration':
                    switch (action) {
                        case 'add':
                            var ret = checkEmpty(formName, 'firstname', 'de voornaam') && 
                                   checkEmpty(formName, 'lastname', 'de achternaam') && 
                                   checkEmail(formName, 'email', 'het emailadres');
                                   
                            if (ret && document.forms[formName].elements['locatie'][1].checked) {
                                ret = checkEmpty(formName, 'street', 'de straat') && 
                                      checkEmpty(formName, 'number', 'het huisnummer') && 
                                      checkEmpty(formName, 'zipcode', 'de postcode');
                            }
                            return  ret && checkCheckedCheckbox(formName, 'type', 'type');
                            break;
                    }
                    break;
            }
            break;
  }
  return false;
}

function windowOpen(name, url, height, width) {
  var l = (screen.width) ? (screen.width - width) / 2 : 0;
  var t = (screen.height) ? (screen.height - height) / 2 : 0;
  var opts = 'width=' + width + ',height=' + height + ',top=' + t + ',left=' + l + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes';

  var win = window.open(url,name, opts);
  win.focus();
}

function selectListboxItem(listbox, item ) {
	var opts = listbox.options;
	for (var i = 0; i < opts.length; i++)
		opts[i].selected = (opts[i].value == item);
}

function loadNavigation(type,frame_page,frame_mainmenu,frame_submenu,page,menu,class_name,group_name,item_name,menu_name){
  switch (type) {
    case 'mainmenu':
      changeClass(class_name,group_name,item_name,frame_mainmenu,menu);
      loadPage(frame_page,page);
      loadSubmenu(frame_submenu,menu);
      showStatus(menu_name);
    break;
    case 'submenu':
      changeClass(class_name,group_name,item_name,frame_submenu,menu);
      loadPage(frame_page,page);
      showStatus(menu_name);
    break;
  }
}

function showStatus(name){
  window.status=name;
  return true;
}

function toggleProductSize(maxImg, minImg) {
  if (document.getElementById) {
    var popup = parent.document.getElementById('divPopup');

    if (parseInt(popup.style.width) == 530) {
      parent.resizeProductPopup(popup, 780, 500);
      document.images['maximizeImg'].src = minImg.src;
    }
    else {
      parent.resizeProductPopup(popup, 530, 360);
      document.images['maximizeImg'].src = maxImg.src;

      if (navigator.userAgent.toLowerCase().indexOf('gecko') != -1)
        window.location.reload(); // For Mozilla
    }
  } 
}

function resizeProductPopup(popup, width, height) {
    var bSize, bWidth, bHeight, left = 0, top = 0;
    var popupFrame = document.getElementById('popupFrame');

    if (width == 0 || height == 0) {
      width = parseInt(popup.style.width);
      height = parseInt(popup.style.height);
      
      if (height < 500 && width == 780)
        height = 500;
    }
    
    bSize = getWindowInnerSize();
    bWidth = bSize[0];
    bHeight = bSize[1];
    
    if (height > bHeight)
      height = bHeight;

    left = Math.floor((bWidth - width) / 2);
    top = Math.floor((bHeight - height) / 2);
  
    popup.style.width = width + 'px';
    popup.style.height = height + 'px';
    popup.style.left = left + 'px';
    popup.style.top = top + 'px';
    
    if (typeof popupFrame.contentWindow.resizeProduct == 'function')
      popupFrame.contentWindow.resizeProduct();
}

function closeProduct() {
  if (document.getElementById) {
    var popup = parent.document.getElementById('divPopup'), popupLayer = parent.document.getElementById('divPopupLayer');

    popup.style.visibility = 'hidden';
    popupLayer.style.visibility = 'hidden';
    
    eraseCookie('openedProduct');
  }
}

function resizeProdCat() {
  if (document.getElementById) {
    var popup = document.getElementById('divPopup');
    
    if (popup.style.visibility == 'visible') {
      resizeProductPopup(popup, 0, 0);
    }
  }
}

function checkSearch(frm) {
  if (emptystr(frm.elements['search_string'].value)) {
    alert('Vul een zoekopdracht in aub!');    
    frm.elements['search_string'].focus();
    return false;
  }
  return true;
}

function toggleLargePage(normIndex, largeIndex) {
  if (document.getElementsByTagName) {
    var sheets = document.getElementsByTagName('link');
    
    if (sheets[largeIndex].disabled) { 
      sheets[largeIndex].disabled = false;
      sheets[normIndex].disabled = true;
      createCookie('largePage', 'true', 365);
    }
    else { 
      sheets[largeIndex].disabled = true;
      sheets[normIndex].disabled = false;
      createCookie('largePage', 'false', 365);
    }
  }
}

function checkLargePage(normIndex, largeIndex) {
  var large = readCookie('largePage');
  
  if (large != null && large == 'true' && document.getElementsByTagName) {
    var sheets = document.getElementsByTagName('link');
    
    sheets[normIndex].disabled = true;
    sheets[largeIndex].disabled = false;
  }
}

function createCookie(name, value, days) {
	if (days)	{
		var date = new Date();
		date.setTime(date.getTime() + (days*24*60*60*1000));
		var expires = "; expires=" + date.toGMTString();
	}
	else var expires = "";
	document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for (var i = 0; i < ca.length; i++)	{
		var c = ca[i];
		while (c.charAt(0) == ' ') c = c.substring(1, c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name, "", -1);
}

function getWindowInnerSize() {
  var bWidth, bHeight;
  
  if (typeof window.innerWidth == 'number') {
    bWidth = window.innerWidth;
    bHeight = window.innerHeight;
  }
  else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
    bWidth = document.documentElement.clientWidth;
    bHeight = document.documentElement.clientHeight;
  }
  else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
    bWidth = document.body.clientWidth;
    bHeight = document.body.clientHeight;
  }
  
  return [bWidth, bHeight];
}

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_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_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_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 showMoviePopup() {
  var width = 315, height = 235;
  var l = (screen.width) ? (screen.width - width) / 2 : 0;
  var t = (screen.height) ? (screen.height - height) / 2 : 0;
  var opts = 'width=' + width + ',height=' + height + ',top=' + t + ',left=' + l + ',toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no';
  var url = location.href + '&movie_popup=1';  
  
  var win = window.open(url, name, opts);
  win.focus();
  return false;
}

function showLeges(catID) {
  var pWidth = 430, pHeight = 270;
  var bSize, left, top;

  if (document.getElementById && (typeof legesPopupPagID != 'undefined')) { 
    var popup = document.getElementById('legesPopup'), popupLayer = document.getElementById('legesPopupLayer'), popupFrame = document.getElementById('legesPopupFrame');
    
    bSize = getWindowInnerSize();
    bWidth = bSize[0];
    bHeight = bSize[1];
    
    left = Math.floor((bWidth - pWidth) / 2);
    top = Math.floor((bHeight - pHeight) / 2);
  
    popup.style.width = pWidth + 'px';
    popup.style.height = pHeight + 'px';
    popup.style.left = left + 'px';
    popup.style.top = top + 'px';

    popupFrame.src = 'load.php?page=' + legesPopupPagID + '&leges_catID=' + catID;

    popupLayer.style.visibility = 'visible';
    popup.style.visibility = 'visible';
  }
}

function closeLegesPopup() {
  if (document.getElementById) {
    var popup = parent.document.getElementById('legesPopup'), popupLayer = parent.document.getElementById('legesPopupLayer');

    popup.style.visibility = 'hidden';
    popupLayer.style.visibility = 'hidden';
  }
}

function fixActiveXActivation() {
  if (window.attachEvent && !window.opera) {
    var objects = document.getElementsByTagName("object");
    for (var i = 0; i < objects.length; i++) {
      objects[i].outerHTML = objects[i].outerHTML;
    }
  }
}

function toggleDisplay(id, show) {
  var obj;
  if (document.getElementById) {
    obj = document.getElementById(id);
    if (obj != null && show)
      obj.style.display = '';
    else if (obj != null)
      obj.style.display = 'none';
  }
}

function showRule(rulID, verID) {
  var pWidth = 780, pHeight = 500;
  var url;
  if (document.getElementById) { 
    var popup = document.getElementById('divPopup'), popupLayer = document.getElementById('divPopupLayer'), popupFrame = document.getElementById('popupFrame');
    
    resizeProductPopup(popup, pWidth, pHeight);
    
    url = 'module.php?module=rule&template=view&rule_id=' + rulID;

    if (typeof verID != 'undefined')
      url += '&ver_id=' + verID;

    popupFrame.src = url;

    popupLayer.style.visibility = 'visible';
    popup.style.visibility = 'visible';
  }
}

function closeRule() {
  if (document.getElementById) {
    var popup = parent.document.getElementById('divPopup'), popupLayer = parent.document.getElementById('divPopupLayer');

    popup.style.visibility = 'hidden';
    popupLayer.style.visibility = 'hidden';
  }
}

function createRequestObject() {
  var req_obj = null;

  if (window.XMLHttpRequest) {
    req_obj = new XMLHttpRequest();
  }
  else if (window.ActiveXObject) {
    var types = ['Microsoft.XMLHTTP', 'MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];

    for (var i = 0; i < types.length && req_obj == null; i++) {
      try {
        req_obj = new ActiveXObject(types[i]);
      }
      catch(e) {
        req_obj = null;
      }
    }
  }

  return req_obj;
}

// function for returning how many days there are in a month including leap years
function DaysInMonth(WhichMonth, WhichYear)
{
  var DaysInMonth = 31;
  if (WhichMonth == 4 || WhichMonth == 6 || WhichMonth == 9 || WhichMonth == 11) DaysInMonth = 30;
  if (WhichMonth == 2 && (WhichYear/4) != Math.floor(WhichYear/4))	DaysInMonth = 28;
  if (WhichMonth == 2 && (WhichYear/4) == Math.floor(WhichYear/4))	DaysInMonth = 29;
  return DaysInMonth;
}

//function to change the available days in a months
function ChangeOptionDays(form, Which) {
  DaysObject = document.forms[form].elements[Which + "_day"];
  MonthObject = document.forms[form].elements[Which + "_month"];
  YearObject = document.forms[form].elements[Which + "_year"];

  Month = MonthObject[MonthObject.selectedIndex].text;
  Year = YearObject[YearObject.selectedIndex].text;

  DaysForThisSelection = DaysInMonth(Month, Year);

  CurrentDaysInSelection = DaysObject.length;
  if (CurrentDaysInSelection > DaysForThisSelection)
  {
    for (i=0; i<(CurrentDaysInSelection-DaysForThisSelection); i++)
    {
      DaysObject.options[DaysObject.options.length - 1] = null;
    }
  }
  if (DaysForThisSelection > CurrentDaysInSelection)
  {
    for (i=0; i<(DaysForThisSelection-CurrentDaysInSelection); i++)
    {
      DaysObject.options[DaysObject.options.length] = new Option(DaysObject.options.length + 1);
    }
  }
    if (DaysObject.selectedIndex < 0) DaysObject.selectedIndex == 0;
}

function addEventOther(obj, evType, fn, useCapture){
  if (obj.addEventListener){
    obj.addEventListener(evType, fn, useCapture);
    return true;
  } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    // error
  }
}

function setActiveStylesheet(title) {
  var sheets = document.getElementsByTagName('LINK');

  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getAttribute('rel').indexOf('alt') != -1) {
      sheets[i].disabled = true;
      if (sheets[i].getAttribute('title') == title) {
        sheets[i].disabled = false;
      }
    }
  }
}

function getActiveStylesheet() {
  var sheets = document.getElementsByTagName('LINK');

  for (var i = 0; i < sheets.length; i++) {
    if (sheets[i].getAttribute('rel').indexOf('alt') != -1 && sheets[i].disabled == false) {
      return sheets[i].getAttribute('title');
    }
  }

  return null;
}

function checkAltStylesheet() {
  if (document.getElementsByTagName) {
    var style = readCookie('PageStyle');

    if (style != null) {
      setActiveStylesheet(style);
    }
    else {
      setActiveStylesheet('');
    }
  }
}

function toggleAltStylesheet(title) {
  if (getActiveStylesheet() != null) {
    setActiveStylesheet('');
    eraseCookie('PageStyle');
  }
  else {
    setActiveStylesheet(title);
    createCookie('PageStyle', title, 365);
  }
}

function addShortcutLink(elem, link) {
  if (document.getElementById) {
    var el = document.getElementById(elem);
    var li = el.parentNode.parentNode;

    addEvent(li, 'click', function() { location.href = link; });
    li.style.cursor = 'pointer';
  }
}

function externalLinks() {
 if (!document.getElementsByTagName) return;
 var anchors = document.getElementsByTagName("a");
 for (var i=0; i<anchors.length; i++) {
   var anchor = anchors[i];
   if (anchor.getAttribute("href") &&
       anchor.getAttribute("rel") == "external")
     anchor.target = "_blank";
 }
}

addEventOther(window, 'load', externalLinks);

function AllowOnlyNumbers(inputfield, myEvent) {        

  var keyOkay = false;

  if(window.event) {
    keyCode = myEvent.keyCode
  }
  else if(myEvent.which) {
    keyCode = myEvent.which
  }
  else{
    return true
  }

  if (((keyCode>=48) && (keyCode<=57)) || keyCode == 8)
    keyOkay=true;

  return keyOkay;
}

function formGetAddress(zipcode, housenumber, street_field, city_field) {
  if (zipcode != "" && housenumber != "") {
    var req = createRequestObject();
    if (req) {
      req.onreadystatechange = function() {
        if (req.readyState == 4 && (req.status == 200 || req.status == 304)) {
          // Create an object from the returned literal code:
          var objData = {};
          try {
            eval("objData = " + req.responseText);

            street_field.value = objData['street'];
            city_field.value = objData['city'];
          }
          catch (ex) { }
        }
      };

      req.open('GET', "module.php?module=form&template=get_address&zipcode="+escape(zipcode)+"&housenumber="+escape(housenumber));
      req.send(null);
    }
  }
}

function getMouseOverSrc(str) {
  return str.replace(/_off/, '_on');
}

function getMouseOutSrc(str) {
  return str.replace(/_on/, '_off');
}

function copyContent(content, dstField) {
 
  var dstField = document.getElementById(dstField);
  if(dstField){
    dstField.innerHTML = content;

    if (content != "")
      dstField.parentNode.style.display = '';
    else
      dstField.parentNode.style.display = 'none';
  }

}
