/************************************************
Gratiscontactformulier.be contact-script		*
------------------------------------------------*
Copyright:          Gratiscontactformulier.be   *
                                                *
Auteur:             Vloeberghs Sam				*
                    http://www.samvloeberghs.be *
                                                *
Laatste update:		06-08-2009  				*
												*
Bestand : 			js/functions.js				*
                                                *
*************************************************/

/*
 * GEBRUIKSVOORWAARDEN:
 *
 * Dit script is vrij te gebruiken op niet-commerciële websites
 * en indien u de link naar het contactformulier laat staan.
 *
 * Indien u het script wenst te gebruiken op commerciële en/of bedrijfswebsites
 * moet u een licentie aankopen. Prijzen zijn te verkrijgen via contact op de website
 */

function checkForm(form){
	removeError('foutdiv');
	var naam = form.naam.value;
	var email = form.email.value;
	var bericht = form.bericht.value;
	var spam = form.spam.value;
		
	$("#email").css('border','1px solid #a7a6aa');
	$("#bericht").css('border','1px solid #a7a6aa');
	$("#spam").css('border','1px solid #a7a6aa');
	$("#naam").css('border','1px solid #a7a6aa');
	
	var returnvar = true;
	var fout = '';
	
	//controle op de ingegeven naam
	var naamfout = document.getElementById('naamfmelding');
	var naamjuist = document.getElementById('naammelding');
	if(naam.length<=1){
		fout="U dient uw naam in te geven!";	
		newOne(fout);
		$("#naam").css('border','1px solid red');
		naamjuist.style.display='none';
		naamfout.style.display='block';
		returnvar=false;	
	}
	else{
		$("#naam").css('border','1px solid #a7a6aa');
		naamjuist.style.display='block';
		naamfout.style.display='none';
	}

	// controle op het ingegeven emailadres
	var emailfout = document.getElementById('emailfmelding');
	var emailjuist = document.getElementById('emailmelding');
	if(email.length!=0){
		// Controle op geldig emailadres
		if(!checkEmail2(email)){
			fout="Het opgegeven emailadres is niet geldig!";	
			newOne(fout);
			$("#email").css('border','1px solid red');
			emailjuist.style.display='none';
			emailfout.style.display='block';
			returnvar=false;
		}	
		else{
			$("#email").css('border','1px solid #a7a6aa');
			emailjuist.style.display='block';
			emailfout.style.display='none';
		}
	}
	else{
		fout="U dient een emailadres in te geven!";	
		newOne(fout);
		$("#email").css('border','1px solid red');
		emailjuist.style.display='none';
		emailfout.style.display='block';
		returnvar=false;
	}
	
	// controle op het ingegeven bericht
	var berichtfout = document.getElementById('berichtfmelding');
	var berichtjuist = document.getElementById('berichtmelding');
	if(bericht.length<=4){
		fout="U dient een bericht in te geven!";	
		newOne(fout);
		$("#bericht").css('border','1px solid red');
		berichtjuist.style.display='none';
		berichtfout.style.display='block';
		returnvar=false;
	}
	else{
		$("#bericht").css('border','1px solid #a7a6aa');
		berichtjuist.style.display='block';
		berichtfout.style.display='none';
	}
	
	// controle op de ingegeven spamcheck
	var spamfout = document.getElementById('spamfmelding');
	var spamjuist = document.getElementById('spammelding');
	// controle op de ingegeven spamcheck
	if(spam.length==0){
		fout="U dient de uitkomst van de spamcontrole in te vullen!";	
		newOne(fout,'fout');
		$("#spam").css('border','1px solid red');
		spamjuist.style.display='none';
		spamfout.style.display='block';
		returnvar=false;
	}
	else{
        var getal1 = document.getElementById('nummer_1').innerHTML;
        var getal2 = document.getElementById('nummer_2').innerHTML;
        uitkomst = parseFloat(getal1)+parseFloat(getal2);
		if(spam!=uitkomst){
			fout="Dat is niet de juiste uitkomst van de spamcontrole!";	
			newOne(fout,'fout');
			$("#spam").css('border','1px solid red');
			spamjuist.style.display='none';
			spamfout.style.display='block';
			returnvar=false;
		}
		else{
			$("#spam").css('border','1px solid #a7a6aa');
			spamfout.style.display='none';
			spamjuist.style.display='block';
		}
	}
	return returnvar;
	
}
/*  Controleren of het een geldig emailadres is
	
	@return false als het emailadres NIET klopt
	@return true als het emailadres over��nkomt met het patroon
	
*/
function checkEmail2(email){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
		if (filter.test(email)) return true;
		else return false;
}

/*  Deze functie verwijderd alle elementen
	uit een gegeven element 
*/
function removeError(foutdiv){
	var foutdiv = document.getElementById(foutdiv);
	while(foutdiv.firstChild != null){
		foutdiv.removeChild(foutdiv.firstChild);
	}
}

/*  Deze functie maakt een nieuwe foutmelding 
	met een gegeven fout 
*/
function newOne(fout){
	var newEl = document.createElement('p');
	var newTx = document.createTextNode(fout);
	newEl.appendChild(newTx);
	var fdiv = document.getElementById('foutdiv');
	fdiv.appendChild(newEl);
	fdiv.style.marginBottom="10px";
}

/* 
Functie voor het naam veld te controlen 
*/
function checkNaam(naam){
	var naamfout = document.getElementById('naamfmelding');
	var naamjuist = document.getElementById('naammelding');
	// als de naam niet langer is of gelijk is aan 1
	if(naam.length<=1){
		$("#naam").css('border','1px solid red');
		naamjuist.style.display='none';
		naamfout.style.display='block';
	}
	else{
		$("#naam").css('border','1px solid #a7a6aa');
		naamjuist.style.display='block';
		naamfout.style.display='none';
	}
}

/* 
Functie voor het email veld te controlen 
*/
function checkEmail(email){
	var emailfout = document.getElementById('emailfmelding');
	var emailjuist = document.getElementById('emailmelding');
	// als de email lengthe niet gelijk is aan 0
	if(email.length!=0){
		// Controle op geldig emailadres
		if(!checkEmail2(email)){
			$("#email").css('border','1px solid red');
			emailjuist.style.display='none';
			emailfout.style.display='block';
		}	
		else{
			$("#email").css('border','1px solid #a7a6aa');
			emailjuist.style.display='block';
			emailfout.style.display='none';
		}
	}
	else{
		$("#email").css('border','1px solid red');
		emailjuist.style.display='none';
		emailfout.style.display='block';
	}
}

/* 
Functie voor het bericht veld te controlen 
*/
function checkBericht(bericht){
	var berichtfout = document.getElementById('berichtfmelding');
	var berichtjuist = document.getElementById('berichtmelding');
	// als het bericht niet langer is of gelijk is aan 1
	if(bericht.length<=4){
		$("#bericht").css('border','1px solid red');
		berichtjuist.style.display='none';
		berichtfout.style.display='block';
	}
	else{
		$("#bericht").css('border','1px solid #a7a6aa');
		berichtjuist.style.display='block';
		berichtfout.style.display='none';
	}
}
/* 
Functie voor het spaminvoer veld te controlen 
*/

function checkSpam(spam){
	var spamfout = document.getElementById('spamfmelding');
	var spamjuist = document.getElementById('spammelding');
	// controle op de ingegeven spamcheck
	if(spam.length==0){
		$("#spam").css('border','1px solid red');
		spamjuist.style.display='none';
		spamfout.style.display='block';
	}
	else{
        var getal1 = document.getElementById('nummer_1').innerHTML;
        var getal2 = document.getElementById('nummer_2').innerHTML;
        uitkomst = parseFloat(getal1)+parseFloat(getal2);
		if(spam!=uitkomst){
			$("#spam").css('border','1px solid red');
			spamjuist.style.display='none';
			spamfout.style.display='block';
		}
		else{
			$("#spam").css('border','1px solid #a7a6aa');
			spamfout.style.display='none';
			spamjuist.style.display='block';
		}
	}
}

// leegmaken van het mailObject
	var mailObject = false;

// aanmaken van het mailObject
	mailObject = createObject();
	
/*
Functie om een XMLHttpRequest object aan te maken
Laatste update : 25-03-2009

!! AFGEWERKT !!

*/
function createObject(){
	// firefox / chrome e.d.
	if(window.XMLHttpRequest){
		xHRObject = new XMLHttpRequest();
	}
	else{
		// internet explorer < 7
		if(window.ActiveXObject){
			xHRObject = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	return xHRObject;
}

/*
AJAX functie voor het versturen van de email
*/
function sendMail(){
	var naam = document.getElementById('naam');
	var email = document.getElementById('email');
	var telefoon = document.getElementById('tel');
	var bericht = document.getElementById('bericht');
	var spam = document.getElementById('spam');
    var uitkomst = document.getElementById('uitkomst');
	var hidden1 = document.getElementById('hid1');
	var hidden2 = document.getElementById('hid2');
		
	var information = "naam=" + encodeURIComponent(naam.value) + 
						"&email=" + encodeURIComponent(email.value) + 
						"&telefoon=" + encodeURIComponent(telefoon.value) + 
						"&bericht=" + encodeURIComponent(bericht.value) + 
						"&spam=" + encodeURIComponent(spam.value) +
                        "&uitkomst=" + encodeURIComponent(uitkomst.value) +
						"&hid1=" + encodeURIComponent(hidden1.value) +
						"&hid2=" + encodeURIComponent(hidden2.value);
	mailObject.open("POST", "sendMail.php", true);
	mailObject.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	mailObject.send(information);
	mailObject.onreadystatechange = setMailData;
	showWait();
}

/*
Callback functie voor de sendMail functie
*/
function setMailData(){
	// Controleren of het XMLHttpRequest klaar is
	if (mailObject.readyState == 4) {
		// als de pagina gevonden is
		if (mailObject.status == 200) {
           
			
            setTimeout("maakMelding()",1400);

		}
	}
}


/* 
Functie die de meldingen toont van het resultaat
*/
function maakMelding(){
     // clear de inhoud van wait div
    var wait = document.getElementById('wait');
    wait.innerHTML="";
    
    // zet de response van de server in een variabele
    var serverResponse = mailObject.responseXML;
    // haal het resultaat uit de xml? 1 of 0
    var resultaatXML = serverResponse.getElementsByTagName('resultaat')[0].textContent;
    // haal alle meldingen uit de xml
    var meldingXML = serverResponse.getElementsByTagName('melding');

    // maak een element paragraaf
    var par = document.createElement('p');
    // maak een element image
    var img = document.createElement('img');

    // hang klasse succes aan img
    img.className='succes';
    // hang de image in de paragraaf
    par.appendChild(img);

    // toont de eerste melding
    par.appendChild(document.createTextNode(meldingXML[0].textContent));
    // haal de wacht div op
    var wait = document.getElementById('wait');
    // hang de paragraaf in de wachtdiv
    wait.appendChild(par);

    // als het resultaat van de xml 1 is
    if(resultaatXML == "1"){
        // hang een ok image met alt ok
        img.src="images/ok.gif";
        img.alt="ok";

        // ga terug naar het formulier
        setTimeout("terug()",3000);
    }
    // als het resultaat van de xml 0 is
    else{
        // hang een niet ok met alt niet ok
        img.src="images/nok.gif";
        img.alt="niet ok";

        // creer een lijst element
        var lijst = document.createElement('ul');

        // voor elke melding in de lijst

        for(i=1; i<meldingXML.length; i++){
            // maak een lijst item
            var lijstitem = document.createElement('li');
            // hang de text van de melding in de het lijstitem
            lijstitem.appendChild(document.createTextNode(meldingXML[i].textContent));
            // hang het lijstitem in de lijst
            lijst.appendChild(lijstitem);
        }
        // hang de lijst aan de wait div
        wait.appendChild(lijst);

        // maak een paragraaf aan
        var terug = document.createElement('p');
        // hang een link in de paragraaf
        var teruglink = document.createElement('a');
        terug.appendChild(teruglink);

        // zet de href op #
        teruglink.href='#';
        // zet onclick function
        teruglink.onclick = function(){ showForm();};
        // hang tekst in de anchor
        teruglink.appendChild(document.createTextNode('Klik hier om het nog eens te proberen'));

        // hang de terug paragraaf aan de wait div
        wait.appendChild(terug);
    }
}

/* 
Functie die het formulier laat verdwijnen en de wachtdiv toont
*/
function showWait(){
    // zet het form onzichtbaar
	$('#form').css("display","none");
    // fade de wachtdiv in
	$('#wait').fadeIn(800);
    // zet een margin aan de wacht div
	$('#wait').css("margin-top","50px");
}
/*
Functie die de wachtdiv laat verdwijnen en het form toont
*/
function showForm(){
    // wait div onzichtbaar
	$('#wait').css("display","none");
    // form zichtbaar
    $('#form').css("display","block");
}

/* 
Functie die na verloop van bepaalde tijd het formulier terug toont
*/
function terug(){
	var currentloc = window.location;
	window.location = currentloc;
}
