// Define Globals
var isIE, isIE6, isIE7, isNN, isFF;
var sBgColOld;
var sFooterDef;
var bToggle = 1;
var sBg;

function getCalender(strYear, strMonthNo){
	if(strYear==undefined || strMonthNo==undefined){
		var d=new Date();
		strYear = d.getFullYear();
		strMonthNo = d.getMonth()+1;
	}
	try{    
		objXMLHTTP=new XMLHttpRequest();
	}
	catch (e){    
		try{      
			objXMLHTTP=new ActiveXObject("Msxml2.XMLHTTP");      
		}
		catch (e){      
			try{        
				objXMLHTTP=new ActiveXObject("Microsoft.XMLHTTP");        
			}
			catch (e){        
				alert("Your browser does not support AJAX!");        
				return false;        
			}     
		}    
	}
	objXMLHTTP.onreadystatechange=function(){
		if(objXMLHTTP.readyState==4){
			
			if (objXMLHTTP.status == 200) {
				document.getElementById("calendarDiv").innerHTML = objXMLHTTP.responseText;
			} else {
				alert("There was a problem retrieving the XML data:\n" +objXMLHTTP.statusText);
		}
	}
	}
objXMLHTTP.open("GET","http://" + location.hostname + "/calendar.php?year=" + strYear + "&monthNo=" + strMonthNo + "&sid=" + Math.random());
objXMLHTTP.send(null);	
}


// Pre-Load Function (loads on page init)
function preLoad(stMsg) {
  if ('Microsoft Internet Explorer' == navigator.appName) {
    isIE = 1;
    var n = navigator.appVersion.indexOf('MSIE ') + 5;
    if (6 == parseInt(navigator.appVersion.substring(n))) { isIE6 = 1; }
    else if (7 == parseInt(navigator.appVersion.substring(n))) { isIE7 = 1; }
  }
  if ('Netscape' == navigator.appName) {
    isNN = 1;
    if (4 < parseInt(navigator.appVersion)) { isFF = 1; }
  }
  window.defaultStatus = stMsg;
  //alert(navigator.appVersion);
}

// Line-break Replace Function
function removeLineBreaks (str) {
  str = str.replace(/\r\n|\r|\n/g, ' ');
  return str;
}

// Visibility Toggle Function
function tgV(elementName,imgEl) {
  var item = $(elementName);

  if ('none' != item.style.display) {
    if (undefined != imgEl) {
      imgEl.src = eval(imgEl.name + '_d').src;
      if ('img_arr' == imgEl.name) {
        sBg = $(elementName).parentNode.style.backgroundImage;
        item.parentNode.style.backgroundImage = 'none';
      }
    }
    item.hide();
  }
  else {
    if (undefined != imgEl) {
      imgEl.src = eval(imgEl.name + '_u').src;
      if ('img_arr' == imgEl.name) {
        item.parentNode.style.backgroundImage = sBg;
      }
    }
    item.show();
  }
}

var timerSet = null;
// Go Function
function go(uri) {
  if (timerSet) { clearTimeout(timerSet); timerSet = null; }
  else { timerSet = setTimeout("redirect('"+uri+"')",250); }
}

// Redirect Function
function redirect(uri) {
  location.href = uri;
}

// New Browser Window Function
var newWin;
function openWindow(windowURL,windowName,windowProps) {
  windowProps = windowProps + ',scrollbars';
  newWin = window.open(windowURL,windowName,windowProps);
  setTimeout('newWin.focus();',250);
}

// Clear Input Field Function
function clearInput(elementName,defValue) {
  if (defValue == elementName.value) { elementName.value = ''; }
}

// Set Footer
function setFtr(sText) {
  var footer = $('agenda_ftr');

  if (null == sText) {
    footer.innerHTML = sFooterDef;
  }
  else {
    sFooterDef = footer.innerHTML;
    footer.innerHTML = sText;
  }
}

// Field Validator
function validateField(sEl) {
  if (window.RegExp) {
    
    
    var reg_name_str  = "^[a-z][a-z'.-]*[ .][ a-z'.-]*[a-z]$"
    var reg_name      = new RegExp(reg_name_str, "i");
    var reg_date_str  = "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)?[0-9][0-9]$"
    var reg_date      = new RegExp(reg_date_str);
    var reg_tel_str   = "^[0-9- ]{7,11}$"
    var reg_tel       = new RegExp(reg_tel_str);
    var reg_adres_str = "^[a-z0-9- ]{2,30}[0-9]{1,4}[a-z]{0,1}$"
    var reg_adres     = new RegExp(reg_adres_str, "i");
    var reg_postcode_str   = "^[0-9]{4}[ ]{0,1}[a-z|A-Z]{2}$"
    var reg_postcode  = new RegExp(reg_postcode_str);
    var reg_city_str  = "^[a-z0-9- ]{2,30}$"
    var reg_city      = new RegExp(reg_city_str, "i");
    var reg_email_str = "^([a-z0-9`~!#$%^&*_=+?{}|-]|([a-z0-9`~!#$%^&*_=+?{}|-][.a-z0-9`~!#$%^&*_=+?{}|-]*[a-z0-9`~!#$%^&*_=+?{}|-]))[@]([a-z0-9][a-z0-9-]{0,61}[a-z0-9]\.)+[a-z]{2,6}$"
    var reg_email     = new RegExp(reg_email_str, "i");
    var reg_opleiding_str  = "^[a-z0-9-& ]{2,50}$"
    var reg_opleiding      = new RegExp(reg_opleiding_str, "i");
    var reg_cv_str    = "^[^$]*.(doc|pdf|txt)$"
    var reg_cv        = new RegExp(reg_cv_str, "i");
    var reg_motivation_str  = "^[^$]{1,25000}$"
    var reg_motivation      = new RegExp(reg_motivation_str, "i");
    var reg_char_str  = "^[a-z][ a-z'.-]*[a-z.]$"
    var reg_char      = new RegExp(reg_char_str, "i");
    var reg_num_str   = "^[0-9]+$"
    var reg_num       = new RegExp(reg_num_str);
    var reg_dob_str   = "^(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)?[0-9][0-9]$"
    var reg_dob       = new RegExp(reg_dob_str, "i");


    result = false;
    el = sEl.name;
    switch (el){
      case "apply_name":
        if (true === reg_name.test($F(sEl))) { result = true; }
      break;
      case "apply_geb":
        if (true === reg_date.test($F(sEl))) { result = true; }
      break;
      case "apply_tel":
        if (true === reg_tel.test($F(sEl))) { result = true; }
      break;
      case "apply_adres":
        if (true === reg_adres.test($F(sEl))) { result = true; }
      break;
      case "apply_postcode":
        if (true === reg_postcode.test($F(sEl))) { result = true; }
      break;
       case "apply_city":
        if (true === reg_city.test($F(sEl))) { result = true; }
      break;     
      case "apply_email":
        if (true === reg_email.test($F(sEl))) { result = true; }
      break;  
      case "apply_opleiding":
      if (true === reg_opleiding.test($F(sEl))) { result = true; }
      break;
      case "apply_cv":
      if (true === reg_cv.test($F(sEl))) { result = true; }
      break;      
      case "apply_motivation":
        if (true === reg_motivation.test($F(sEl))) { result = true; }
      break;        
      case "mailing_email":
        if (true === reg_email.test($F(sEl))) { result = true; }
      break;
      case "mailing_tel":
        if (true === reg_tel.test($F(sEl))) { result = true; }
      break;
      case "mailing_name":
        if (true === reg_char.test($F(sEl))) { result = true; }
      break;
      case "mailing_surname":
        if (true === reg_char.test($F(sEl))) { result = true; }
      break;
      case "mailing_dob":
        if (true === reg_dob.test($F(sEl))) { result = true; }
      break;
      case "mailing_city":
        if (true === reg_city.test($F(sEl))) { result = true; }
      break;
      case "mailing_province":
        if (true === reg_char.test($F(sEl))) { result = true; }
      break;
    }

    if (true !== result) {
      sEl.setStyle({border: 'solid 1px #F00'});
    }
    else {
      sEl.setStyle({border: 'solid 1px #0F0'});
    }
  }

  return result;
}

// Form Validator
function validateForm(nId) {
  result = false;
  error  = "";
  
  if (0 < nId) {
    nId = '_' + nId;
  }
  else {
    nId = '';
  }

  switch ($F('form_action' + nId)) {
    case "apply":
      if (true !== validateField($('apply_name' + nId))) {
        error += "- Vul aub je volledige voor- en achternaam in.\n"
      }
      if (true !== validateField($('apply_geb' + nId))) {
        error += "- Vul aub een geldige geboorte datum in als dd-mm-jjjj.\n";      
      }
      if (true !== validateField($('apply_tel' + nId))) {
        error += "- Vul aub je telefoonnummer in, inclusief netnummer.\n";
      }
      if (true !== validateField($('apply_adres' + nId))) {
        error += "- Vul aub een geldig adres inclusief huisnummer in.\n";
      }
      if (true !== validateField($('apply_postcode' + nId))) {
        error += "- Vul aub een geldige postcode in.\n";
      }
      if (true !== validateField($('apply_city' + nId))) {
        error += "- Vul aub een geldige stad in.\n";
      }
      if (true !== validateField($('apply_email' + nId))) {
        error += "- Vul aub een geldig e-mail adres in.\n";
      }
      if (true !== validateField($('apply_opleiding' + nId))) {
        error += "- Vul aub een geldige opleiding in.\n";
      }
      if (true !== validateField($('apply_cv' + nId))) {
        error += "- Voeg aub een cv toe in PDF of DOC formaat.\n";
      }
      if (true !== validateField($('apply_motivation' + nId))) {
        error += "- Voeg aub een motivatie toe.\n";
      }
      if ("on" != $F('apply_terms' + nId)) {
        error += "- Je dient akkoord te gaan met onze aanmeldprocedure voorwaarden!";
      }
    break;
    case "mailing":
      if ("on" != $F('mailing_terms' + nId)) {
        error += "Je dient akkoord te gaan met onze aanmeldprocedure voorwaarden!\n";
      }
      if (true !== validateField($('mailing_name' + nId)) || true !== validateField($('mailing_surname' + nId))) {
        error += "Vul aub je volledige voor- en achternaam in...\n"
      }
      if (0 != $F('mailing_gender_m' + nId) && 1 != $F('mailing_gender_f' + nId)) {
        error += "Kies aub je geslacht...\n";
      }
      if (true !== validateField($('mailing_dob' + nId))) {
        error += "Vul aub je geboortedatum in... (vb: 17-04-1980)\n";
      }
      if (true !== validateField($('mailing_city' + nId))) {
        error += "Vul aub je woonplaats in...\n";
      }
      if ("" == $F('mailing_province' + nId)) {
        error += "Kies aub je provincie...\n";
      }
      if (true !== validateField($('mailing_email' + nId))) {
        error += "Vul aub een geldig e-mail adres in...\n";
      }
      if (true !== validateField($('mailing_tel' + nId))) {
        error += "Vul aub je telefoonnummer in, inclusief netnummer...";
      }
    break;
  }

  if ("" == error) {
    result = true;
  }
  else {
    alert('[ Onvolledig / onjuiste invoer ]\n\n' + error + '\n\nLet op: Gebruik geen leestekens of andere niet-alfanumerieke tekens in de invoervelden!');
    result = false;
  }
  
  return result;
}

// Field Highlighter
function hlF(sElId, sDate, sBgCol) {
  var bSetBg = (null == bSetBg) ? "1" : bSetBg;
  var footer = $('agenda_ftr');

  switch (bToggle) {
    case 0:
      bToggle = 1;
      $(sElId).setStyle({backgroundColor: sBgColOld});
      footer.innerHTML = sFooterDef;
    break;
    case 1:
      bToggle = 0;
      sBgColOld = $(sElId).getStyle('backgroundColor');
      if (undefined == sBgCol) { sBgCol = 'ACD1DB'; }
      $(sElId).setStyle({backgroundColor: '#' + sBgCol});
      sFooterDef = footer.innerHTML;
      footer.innerHTML = sDate;
    break;
  }
}

// AJAX Call Handler
function ajax_call(sAjaxFunc,sVars,sTargetElId1,sTargetElId2) {
  el1 = $(sTargetElId1);
  el2 = $(sTargetElId2);

  sLoading = "Een moment geduld aub...";
  switch (sAjaxFunc) {
    case "redrawCal":
      new Ajax.Updater({ success: el1 }, 'inc/func_ajax.php', {
        parameters: { AjaxFunc: 'RedrawCal', Date: sVars },
        onLoading:  function() { el2.innerHTML = '<tr><td id="loading" colspan="7">' + sLoading + '</td></tr>'; }
      });
    break;
    case "showEvent":
      //el1.parentNode.style.display = 'block';
      $('eiw').style.display = 'block';
      new Ajax.Updater({ success: el1 }, 'inc/func_ajax.php', {
        parameters: { AjaxFunc: 'ShowEvent', Date: sVars },
        onLoading:  function() { el1.innerHTML = '<div id=\"loading\">' + sLoading + '</div>'; }
      });
    break;
  }
}
