// JavaScript Document

var basisKleur = 'White';
var foutKleur = 'Yellow';
var vertraging = 2000;
var dtCh= "/"; // Character dat de datum splitst
var minYear=1900;
var maxYear=2100;

// Kalender variabelen
window.dhx_globalImgPath="css/imgs/";

var cal1, cal2;

dhtmlxCalendarLangModules = new Array();
dhtmlxCalendarLangModules['nl'] = {
	langname:	'nl',
	dateformat:	'%d/%m/%Y',
	monthesFNames:	["Januari", "Februari", "Maart", "April", "Mei", "Juni", "Juli", "Augustus", "September", "Oktober", "November", "December"],
	monthesSNames:	["Jan", "Feb", "Mar", "Apr", "Mei", "Jun", "Jul", "Aug", "Sep", "Okt", "Nov", "Dec"],
	daysFNames:	["Zondag", "Maandag", "Dinsdag", "Woensdag", "Donderdag", "Vrijdag", "Zaterdag"],
	daysSNames:	["Zo", "Ma", "Di", "Wo", "Do", "Vr", "Za"],
	weekend:	[0, 6],
	weekstart:	1,
	msgClose:	 "Sluiten",
	msgMinimize: "Minimaliseren",
	msgToday:	 "Vandaag"
}

var dateFrom = null;
var dateTo = null;

window.onload = function () {
	cal1 = new dhtmlxCalendarObject('kalender', false, {isYearEditable: true});
	cal1.setOnClickHandler(selectDateGeldig);
	cal1.loadUserLanguage('nl');
	cal1.setSkin("simplecolordark");
}

function selectDateGeldig(date) {
	document.getElementById('datum').value = cal1.getFormatedDate(null,date);
	document.getElementById('kalender').style.display = 'none';
	cal1.setSensitive(dateFrom, dateTo);
	return true;
}

function toonKalender(welke) {
	var dateVal = "";
	
	switch(welke) {
		case 'van':
			dateVal = document.getElementById('van').value;
			document.getElementById('kalender').style.left = '100px';
			break;
		case 'tot':
			document.getElementById('kalender').style.left = '250px';
		case 'lid':
		case 'acts':
			dateVal = document.getElementById('datum').value;
			break;
	}
	
	var currentDate = new Date();
	var month = currentDate.getMonth() + 1
	var day = currentDate.getDate()
	var year = currentDate.getFullYear()
	
	if (dateVal == '' || dateVal == '//' || document.getElementById('datum').value.length < 10) {
		if( welke == 'lid' ) {
			dateVal = '01/01/1990';
		} else {
			dateVal = day + "/" + month + "/" + year;
		}
	}
	cal1.setDate(dateVal);
	
	if (document.getElementById('kalender').style.display == 'block') {
		document.getElementById('kalender').style.display = 'none';
	} else {
		document.getElementById('kalender').style.display = 'block';
	}
}

//
// Check op de formulieren
//

function validateMsgForm(theForm) {
  var reason = "";
  
  if (theForm.mail.value.length > 0) {
	reason += validateEmail(theForm.mail);
  } else {
  	theForm.mail.style.background = basisKleur;
  }
  reason += validateEmpty(theForm.naam);
  reason += validateEmpty(theForm.bericht);
      
  if (reason != "") {
    alert("Gelieve alles correct in te vullen:\n" + reason);
    return false;
  }

  return true;
}

function validateCommentForm(theForm) {
	var reason = "";
	
	reason += validateEmpty(theForm.bericht);
	
	if (reason != "") {
    	alert("Gelieve alles correct in te vullen:\n" + reason);
    	return false;
	}

	return true;
}

function validateLoginForm(theForm) {
  var reason = "";

  reason += validateEmpty(theForm.user);
  reason += validateEmpty(theForm.pass);
      
  if (reason != "") {
    alert("Gelieve alles correct in te vullen:\n" + reason);
    return false;
  }

  return true;
}

function validateNewsForm(theForm) {

}

function validateLidForm(theForm) {
  var reason = "";

  reason += validateEmpty(theForm.voornaam);
  reason += validateEmpty(theForm.achternaam);

  if (theForm.mail.value.length > 0) {
	reason += validateEmail(theForm.mail);
  } else {
  	theForm.mail.style.background = basisKleur;
  }

  reason += validateDate(theForm.datum);
    
  if (reason != "") {
    alert("Gelieve alles correct in te vullen:\n" + reason);
    return false;
  }

  return true;
}

function validateUserForm(theForm) {
	var reason = "";

  reason += validateEmpty(theForm.naam);
  reason += validateEmpty(theForm.pass);

  if (theForm.mail.value.length > 0) {
	reason += validateEmail(theForm.mail);
  } else {
  	theForm.mail.style.background = basisKleur;
  }
    
  if (reason != "") {
    alert("Gelieve alles correct in te vullen:\n" + reason);
    return false;
  }

  return true;
}

function validateWeetjeForm(theForm) {
	var reason = "";
	
	reason = validateEmpty(theForm.bericht);
	
	if (reason != "") {
    alert("Gelieve een wist-je-datje in te vullen:");
    	return false;
  	}

	return true;
}

function validateForumForm(theForm) {
	var reason = "";

	reason += validateEmpty(theForm.titel);
	reason += validateEmpty(theForm.info);
    
	if (reason != "") {
    	alert("Gelieve alles correct in te vullen:\n" + reason);
	return false;
  }

  return true;
}

function validateTopicForm(theForm) {
	var reason = "";

	reason += validateEmpty(theForm.titel);
	reason += validateEmpty(theForm.bericht);
    
	if (reason != "") {
    	alert("Gelieve alles correct in te vullen:\n" + reason);
	return false;
  }

  return true;
}

function validateFotoSelect(theForm) {
	var reason = "";

	reason += validatePhoto(theForm.bestand);
    
	if (reason != "") {
    	alert("Gelieve alles correct in te vullen:\n" + reason);
	return false;
  }

  return true;
}

function validateFileSelect(theForm) {
	var reason = "";

	reason += validateFile(theForm.bestand);
    
	if (reason != "") {
    	alert("Gelieve alles correct in te vullen:\n" + reason);
		return false;
  	}

  	return true;
}

function validateDatumForm(theForm) {
	var reason = "";
	
	reason += validateDate(theForm.datum);
	    
	if (reason != "") {
    	alert("Gelieve alles correct in te vullen:\n" + reason);
		return false;
  	}

  	return true;
}

function validateMailForm(theForm) {
	var reason = "";
	
	if (theForm.mail.value.length > 0) {
		reason += validateEmail(theForm.mail);
	} else {
	  	theForm.mail.style.background = basisKleur;
	}
	    
	if (reason != "") {
		alert("Gelieve alles correct in te vullen:\n" + reason);
	    return false;
	}
	
	return true;
}

function validatePasForm(theForm) {
	var reason = "";
	
	if (theForm.pass1.value == theForm.pass2.value) {
		if(theForm.pass1.value == "" || theForm.pass2.value == "") {
			reason += "- Je moet een paswoord invullen.\n";
			theForm.pass1.style.background = foutKleur;
			theForm.pass2.style.background = foutKleur;
		} else {
			theForm.pass1.style.background = basisKleur;
			theForm.pass2.style.background = basisKleur; 
		}
	} else {
		reason += "- Paswoorden zijn niet gelijk.\n";
		theForm.pass1.style.background = foutKleur;
		theForm.pass2.style.background = foutKleur;
	}
	
	if (reason != "") {
		alert("Gelieve alles correct in te vullen:\n" + reason);
		return false;
	}
	
	return true;
}

// 
// Type van velden om te checken
//

function validateRadio(fld) {
	var selected = false;
	var error = "";
	
	for (counter = 0; counter < fld.length; counter++) {
		if (fld[counter].checked) selected = true; 
	}
	
	if (!selected) {
		error = "- Selecteer een optie.\n"	
	}
	return error;
}

function validateEmpty(fld) {
    var error = "";
  
    if (fld.value.length == 0) {
        fld.style.background = foutKleur; 
        error = "- " + fld.name + " werd niet ingevuld.\n"
    } else {
        fld.style.background = basisKleur;
    }
    return error;   
}

function validateEmptyFile(fld) {
    var error = "";
  
    if (fld.value.length == 0) {
        fld.style.background = foutKleur; 
        error = "- Bestand selecteren.\n"
    } else {
        fld.style.background = basisKleur;
    }
    return error;   
}

function trim(s)
{
  return s.replace(/^\s+|\s+$/, '');
} 

function validateEmail(fld) {
    var error="";
    var tfld = trim(fld.value);                        // value of field with whitespace trimmed off
    var emailFilter = /^[^@]+@[^@.]+\.[^@]*\w\w$/ ;
    var illegalChars= /[\(\)\<\>\,\;\:\\\"\[\]]/ ;
    
    if (fld.value == "") {
        fld.style.background = foutKleur;
        error = "- Je hebt geen e-mail adres ingevuld.\n";
    } else if (!emailFilter.test(tfld)) {              //test email for illegal characters
        fld.style.background = foutKleur;
        error = "- Gelieve een correct e-mail adres in te vullen.\n";
    } else if (fld.value.match(illegalChars)) {
        fld.style.background = foutKleur;
        error = "- Het e-mail adres bevat onjuiste tekens.\n";
    } else {
        fld.style.background = basisKleur;
    }
    return error;
}

function validatePhone(fld) {
    var error = "";
    var stripped = fld.value.replace(/[\(\)\.\-\ ]/g, '');     

   if (fld.value == "") {
        error = "- Je hebt geen telefoonnummer ingevuld.\n";
        fld.style.background = foutKleur;
    } else if (isNaN(parseInt(stripped))) {
        error = "- Het telefoonnummer bevat onjuiste tekens.\n";
        fld.style.background = foutKleur;
    } else {
    	fld.style.background = basisKleur;
    }
    return error;
}

function validateDate(fld) {
	var error = "";
	var daysInMonth = DaysArray(12);
	var pos1=fld.value.indexOf(dtCh);
	var pos2=fld.value.indexOf(dtCh,pos1+1);
	var strDay=fld.value.substring(0,pos1);
	var strMonth=fld.value.substring(pos1+1,pos2);
	var strYear=fld.value.substring(pos2+1);
	strYr=strYear;
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1);
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1);
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1);
	}
	month=parseInt(strMonth);
	day=parseInt(strDay);
	year=parseInt(strYr);
	if (pos1==-1 || pos2==-1){
		error = "- Het datum formaat is : dd/mm/yyyy.\n";
	}
	if (strMonth.length<1 || month<1 || month>12){
		error = "- Gelieve een geldige maand in te geven.\n";
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		error = "- Gelieve een geldige dag in te geven.\n";
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		error = "- Gelieve een 4 cijfer lang jaartal tussen "+minYear+" en "+maxYear+" in te geven.\n";
	}
	if (fld.value.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(fld.value, dtCh))==false){
		error = "- Gelieve een geldige datum in te geven.\n";
	}

  	return error;
}

//
// Extra functies om de datum validatie te voltooien
//

function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}

function validatePhoto(fld) {
	var error = "";
	var inhoud = fld.value;
	var ext = inhoud.toLowerCase().split('.'); // ext = array: 0=naam & 1=type

    if (fld.value.length == 0) {
        fld.style.background = foutKleur; 
        error = "- Bestand selecteren.\n";
	} else if (ext[1] != "jpg" && ext[1] != "jpeg" && ext[1] != "gif" && ext[1] != "png") {
	   	fld.style.background = foutKleur;
	   	fld.value = '';
		error = "- Bestand is geen afbeelding.\n";
    } else {
        fld.style.background = basisKleur;
    }
    return error; 
}

function validateFile(fld) {
	var error = "";
	
    if (fld.value.length == 0) {
        fld.style.background = foutKleur; 
        error = "- Bestand selecteren.\n";
    } else {
        fld.style.background = basisKleur;
    }
    return error; 
}

function wisRequest(naam) {
	return window.confirm("Bent u zeker dat u " + naam + " wil verwijderen?");
}

//
// Functie om tags te plaatsen in een textarea voor en na het geselecteerde deel.
//

function wrapTag(item, tag, smile) {
	element = document.getElementById(item);
	url = "";
	if (tag == "link") {
		url = prompt("Website adres:");
		if(url == null) {
			url = "";
		}
		url = "="+url+":";
	}
	// Als er geen url werd ingegeven (bij link tag), dan ook geen tag plaatsen
	if (tag != "link" || url != "=:" ) {
		begintag = "["+tag+url+"]";
		eindtag = "[/" + tag + "]";
		
		if (tag == "smile") {
			begintag = "[("+smile+")]";
			eindtag = "";
		}
	
		lengteVoor = begintag.length;
		lengteNa = tag.length + 3;
		
	  	if (element.setSelectionRange) {
	  		// Safari & Firefox
	  		tagVoor = element.value.substring(element.selectionStart - lengteVoor,element.selectionStart);
			
			if (tagVoor != begintag) {
				// Tags toevoegen
		 		element.value = element.value.substring(0,element.selectionStart) + begintag + element.value.substring(element.selectionStart,element.selectionEnd) + eindtag + element.value.substring(element.selectionEnd,element.value.length);
	
			} else {
				// Tags weghalen
				element.value = element.value.substring(0,element.selectionStart - lengteVoor) + element.value.substring(element.selectionStart,element.selectionEnd) + element.value.substring(element.selectionEnd + lengteNa,element.value.length);
			}
	  	} else {
	  		// IE
	  		var selectedText = document.selection.createRange().text; 
	        
	        if(selectedText == "") {
	        	selectedText = promt("Vul de tekst in die u wil aanpassen:");
	        }
	        
	        var newText = begintag + selectedText + eindtag; 
	        document.selection.createRange().text = newText; 
	  	}
	}
}

//
// Toon of verberg 'reden' veld naar gelang de keuze van de status
//

function redenStatus(lijst) {
	var status = lijst.options[lijst.selectedIndex].value;
	if (status != 1) {
		document.getElementById('reden').style.display = 'block';
	} else {
		document.getElementById('reden').style.display = 'none';
	}
}

//
// Toon of verberg 'bestuursgegevens' veld naar gelang de keuze van de status
//  Ga ook naar het onderdeel om groepen aan te passen
//

function lidGroep(lijst) {
	var status = lijst.options[lijst.selectedIndex].value;
	if (status == 99) {
		window.location = 'index.php?page=admin&type=groepen&actie=edit';
	} else {
		if (status == 3) {
			document.getElementById('bestuur').style.display = 'block';
		} else {
			document.getElementById('bestuur').style.display = 'none';
		}
	}
}

//
// Als men de keuze 'nieuwe groep' kiest wordt er naar die pagina doorverwezen
//

function actGroep(lijst) {
	var status = lijst.options[lijst.selectedIndex].value;
	if (status == 99) {
		window.location = 'index.php?page=admin&type=groepen&actie=edit';
	}
}

// Idem als hierboven, maar van voor de links

function linkCat(lijst) {
	var status = lijst.options[lijst.selectedIndex].value;
	if (status == 99) {
		window.location = 'index.php?page=admin&type=links&actie=categorie';
	}
}

//
// Als men bij leden en link de optie nieuwe selecteerd uit de keuzelijst
//

function keuzeSelect(lijst) {
	status = lijst.options[lijst.selectedIndex].value;
	if (status == 'nieuw') {
		// bla bla doe dings...
	}
}

function blokChange(optie) {
	if (optie.value == 'on') {
		document.getElementById('nieuw').disabled = true;
		document.getElementById('nieuw').style.background = '#357AC1';
	} else {
		document.getElementById('nieuw').disabled = false;
		document.getElementById('nieuw').style.background = basisKleur;
	}
}

function urlChange(optie) {
	if (optie.value == 'on') {
		document.getElementById('link').style.display = 'block';
	} else {
		document.getElementById('link').style.display = 'none';
	}
}

//
// Toon de smilies of verberg hen als ze eichtbaar zijn
//

function toon(wat) {
	if (document.getElementById(wat).style.display == 'block') {
		document.getElementById(wat).style.display = 'none';
	} else {
		document.getElementById(wat).style.display = 'block';
	}
}
