var loading_img = '<img src="img/loading.gif" />';

// FUTURE: alle $(document).ready()'s verzamelen


/* ************************************************************************* */
// ??? waar wordt dit aangeroepen?
function MM_openBrWindow(theURL,winName,features) { //v2.0
  window.open(theURL,winName,features);
}


/* HULPFUNCTIES VOOR FORMULIER VALIDATIE *************************************/
function haalWaarde(elid)
{
    return $('#'+elid).val();
}

function isLeeg(elid)
{
    return (jQuery.trim($('#'+elid).val()) == '');
}

function zetFout(elid)
{
    $('#'+elid).addClass('formfout');
}

function wisFouten()
{
    $('.formfout').removeClass('formfout');
}

function telFouten()
{
    return $('.formfout').length;
}

function isFoutAlsLeeg(elid)
{   // snel-functie, combineert controle en foutmelding zetten in één
    if (isLeeg(elid))
    {
        zetFout(elid);
        return 1; // om bijvoorbeeld een foutteller op te hogen
    }
    else
    {
        return 0;
    }
}


/* PANORAMA SLIDESHOW ********************************************************/
// preload
jQuery.preloadImages = function()
{   // source: http://www.mattfarina.com/2007/02/01/preloading_images_with_jquery
    var l = arguments.length;

    // no arguments
    if (l = 0) return;

    // one or more arguments
    if (l = 1 && typeof(arguments[0]) != 'string')
    {   // single argument is an array
        jQuery.each(arguments[0], function(i, src) {
              jQuery('<img />').attr('src', src);
            });
    }
    else
    {   // multiple arguments (strings)
        for (var i = 0; i < l; i++)
        {
            jQuery('<img />').attr('src', arguments[i]);
        }
    }
}

$.preloadImages(panoslide_imgs);

// topscroller (panoslide) - slideshow
var panoslide_img = 1, // nulde wordt bij laden getoond
    panoslide_speed = 1, // in seconden
    panoslide_delay = 5; // in seconden

function panoslide(start)
{
    if (start == true)
    {   // eerste aanroep, niet gelijk beginnen
        window.setTimeout(panoslide, (panoslide_delay * 1000));
        return;
    }

    $('img#panoslide').fadeOut((panoslide_speed * 1000), function(){
        // afbeelding wisselen en opnieuw tonen
        $('img#panoslide').attr('src', panoslide_imgs[panoslide_img]);
        $('img#panoslide').fadeIn((panoslide_speed * 1000));

        // doortellen
        panoslide_img++;
        if (panoslide_img >= panoslide_imgs.length) panoslide_img = 0;

        // even wachten en dan opnieuw aanroepen
        window.setTimeout(panoslide, (panoslide_delay * 1000));
    });
}

$('document').ready(function(){
    panoslide(true); // start
});

/* AJAX PAGINA LADERS ********************************************************/
var ajax = new sack();

function laadpagina(pagina, div)
{
    //alert(pagina); // XXX test
    //alert(div); // XXX test

    document.getElementById(div).innerHTML = loading_img;
    ajax.requestFile = pagina;

    if(div == "inloggen"){
        ajax.onCompletion = login;
    }

    if(div == "main"){
        ajax.onCompletion = main;

        var waarde = document.getElementById('blabla1').value;
        //var waarde2 = document.getElementById('blabla2').value;

        document.getElementById('verborgenpagina').value = waarde;
        document.getElementById('blabla1').value = pagina;
        //document.getElementById('blabla2').value = waarde2;
    }

    if(div == "sneltoevoegenresult"){
        ajax.onCompletion = sneltoevoegenresult;
    }

    if(div == "basket"){
        ajax.onCompletion = geefbasketweer;
    }

    if(div == "contactformulier"){
        ajax.onCompletion = contactformulier;
    }

    ajax.runAJAX();
}

// blader functie
function paginaterug()
{
    var pag = document.getElementById('verborgenpagina').value;
    laadpagina(pag,"main");
}


// laad pagina in div#main
function main()
{
    document.getElementById('main').innerHTML = ajax.response;

    if ($('#blabla1').val().substr(0, 16) == 'registreerpi.php'
        && $('#registreerpi_form').length > 0) // alleen doen wanneer het formulier daadwerkelijk getoond wordt
    {
        // TODO: refactor, onderstaand in aparte functie gieten

        //// land <select> bij factuuradres, stuurt ook kvk/btw aan
        $('#bedrijfsland')
            .change(factuurlandVeranderd)
            .change(); // trigger on load

        //// land <select> bij leveradres
        $('#land')
            .change(leverlandVeranderd)
            .change(); // trigger on load

        //// kvk/btw
        var geenkvk_melding_omvat = $('<span></span>').insertAfter('#welkvk');

        $('<label>&nbsp;</label>').appendTo(geenkvk_melding_omvat);
        $('<input id="geenkvk_check" type="checkbox" />').appendTo(geenkvk_melding_omvat)
            .click(toggleGeenKvk);
        $('<span>'+geenkvk_melding+'</span>').appendTo(geenkvk_melding_omvat);
        $('<br clear="all" />').appendTo(geenkvk_melding_omvat);

        if ($('#geenkvkreden').val() == '')
        {
            $('#geenkvk_check').attr('checked', false);
            $('#welkvk').show();
            $('#geenkvk').hide();
        }
        else if ($('#geenkvkreden').val() != '')
        {
            $('#geenkvk_check').attr('checked', true);
            $('#welkvk').hide();
            $('#geenkvk').show();
        }


        var geenbtw_melding_omvat = $('<span></span>').insertAfter('#welbtw');

        $('<label>&nbsp;</label>').appendTo(geenbtw_melding_omvat);
        $('<input id="geenbtw_check" type="checkbox" />').appendTo(geenbtw_melding_omvat)
            .click(toggleGeenBtw);
        $('<span>'+geenbtw_melding+'</span>').appendTo(geenbtw_melding_omvat);
        $('<br clear="all" />').appendTo(geenbtw_melding_omvat);

        if ($('#geenbtwreden').val() == '')
        {
            $('#welbtw').show();
            $('#geenbtw').hide();
        }
        else if ($('#geenbtwreden').val() != '')
        {
            $('#welbtw').hide();
            $('#geenbtw').show();
        }


        //// afleveradres optioneel maken
        var alc = $('<input id="afleveradres_check" type="checkbox" />').insertBefore($('#afleveradres'))
            .click(toggleAfleveradres);
        $('<span>('+hetzelfde_adres+')</span><br />').insertBefore($('#afleveradres'))

        if ($('#afleverbedrijf').val() == '')
        {   // afleveradres is leeg bij laden van pagina: verberg afleveradres
            alc.attr('checked', true);
            $('#afleveradres').hide();
        }
    }
}


function herlaadMain()
{   // na in-/uitloggen #main verversen

    var p = $('#blabla1').val();

    if (p != '')
    {
        ajax.requestFile = p;
        ajax.onCompletion = main;
        ajax.runAJAX();
    }
}


// laad pagina in div#inloggen
function login()
{
    // #inloggen vullen
    $('#inloggen').html(ajax.response);

    // div#inloggen opnieuw initialiseren
    initLogin();

    // #mandje verversen
    // met jQuery's ajax om niet in de weg te zitten van herlaadMain()
    // FUTURE: alle ajax met jQuery doen
    $.get('mandje.php', function(data){
        $('#mandje').html(data);
    });

    // #main herladen
    herlaadMain();


    /* ???
    // basketcheck
    if (document.getElementById('loginbasketcheck').innerHTML == 1)
    {
        vraagcontrolle();
    }
    else
    {
        laadspecial();
    }
    */
}


// laad pagina in div#sneltoevoegenresult
function sneltoevoegenresult()
{
    document.getElementById('sneltoevoegenresult').innerHTML = ajax.response;
}


// laad pagina in div#contactformulier (zie bedrijfsgegevens en contactform.php)
function contactformulier()
{
    document.getElementById('contactformulier').innerHTML = ajax.response;
}


/* ONLOAD LADERS *************************************************************/
function laadhomebijopenen(){
    startw();
    document.getElementById("main").innerHTML = loading_img;
    ajax.requestFile = 'home.php';
    ajax.onCompletion = geefhomeweerbijopenen;
    ajax.runAJAX();
}

function laadartikelbijopenen(artikel){
    startw();
    //document.getElementById("main").innerHTML = loading_img;
    //ajax.requestFile = 'artikelen.php?s='+artikel;
    //ajax.onCompletion = geefhomeweerbijopenen;
    //ajax.runAJAX();
    // XXX laadbasket();
}

function geefhomeweerbijopenen()
{
    document.getElementById("main").innerHTML = ajax.response;
    // XXX laadbasket();
}


/* ************************************************************************* */
function laadhome(){
    document.getElementById("main").innerHTML = loading_img;
    ajax.requestFile = 'home.php';
    ajax.onCompletion = geefhomeweer;
    ajax.runAJAX();
}


function laadkassa(){
    ajax.requestFile = 'kassa.php';
    ajax.onCompletion = geefhomeweer;
    ajax.runAJAX();
}

function geefhomeweer()
{
    document.getElementById("main").innerHTML = ajax.response;

}


/* ************************************************************************* */
function laadpaginasnelbestel(){
    document.getElementById("main").innerHTML = loading_img;
    ajax.requestFile = 'snelbestellenlijst.php';
    ajax.onCompletion = geefsnelbestelweer;
    ajax.runAJAX();
}

function geefsnelbestelweer(){
    document.getElementById("main").innerHTML = ajax.response;

    // #mandje verversen
    // XXX laadbasket();
    // met jQuery's ajax om niet in de weg te zitten van andere ajaxen
    // FUTURE: alle ajax met jQuery doen
    $.get('mandje.php', function(data){
        $('#mandje').html(data);
    });
}


/* ************************************************************************* */
function laadspecial(){
    ajax.requestFile = 'specials.php';
    ajax.onCompletion = geefspecialweer;
    ajax.runAJAX();
}

function laadbasket(){
    ajax.requestFile = 'toev.php';
    ajax.onCompletion = geefbasketweer2;
    ajax.runAJAX();
}

function geefbasketweer2()
{
    document.getElementById("basket").innerHTML = ajax.response;
    berekentotaal();
}


/* ************************************************************************* */
function artikeltoevoegen(id, aantal)
{
    // id: artikel_id EN numeriek deel van id van het betreffende "aantal" tekstveld
    // aantal: optioneel, kan programmatisch/vast/hard opgegeven worden,
    //         anders wordt het uit het bijbehorende tekstveld gehaald

    aantal = (typeof(aantal) == 'undefined')
           ? $('#aantal'+id).val()
           : aantal;

    //alert(aantal); return; // XXX test

    $.get('mandje.php?toevoegen='+id+'&aantal='+aantal, function(data){
        $('#mandje').html(data);
    });
}

function artikelverwijderen(artcode)
{
    //document.getElementById('onderloading').innerHTML = loading_img;

    ajax.requestFile = 'toev.php?verwijder='+artcode;
    ajax.onCompletion = geefbasketweer;
    ajax.runAJAX();

}

/* ************************************************************************* */
var mandje_venster = false;

function openMandje()
{
    if (mandje_venster == false
        || mandje_venster.closed
        || mandje_venster.name == 'undefined')
    {
        mandje_venster = window.open('afhandeling.php','afhandeling','width=800,height=700,scrollbars=yes,toolbar=no,location=no');
    }
    else
    {
        mandje_venster.focus();
        mandje_venster.location.href = 'afhandeling.php';
    }
}

/* ************************************************************************* */
function geefbasketweer()
{
    document.getElementById("basket").innerHTML = ajax.response;
    berekentotaal();
}


function geefspecialweer()
{
    document.getElementById("specialeartikelen").innerHTML = ajax.response;
    // XXX laadbasket();
}


/* ************************************************************************* */
function berekentotaal(){
    document.getElementById("totaal").innerHTML = loading_img;
    ajax.requestFile = 'totaal.php';
    ajax.onCompletion = geeftotaalweer;
    ajax.runAJAX();
}

function geeftotaalweer(){
    document.getElementById("totaal").innerHTML = ajax.response;
}


/* ************************************************************************* */
function laadartikelen(artcode){
    var waarde = document.getElementById('blabla1').value;
    document.getElementById('verborgenpagina').value = waarde;
    var pagina = 'artikelen.php?artcode='+artcode;

    var waarde = document.getElementById('blabla1').value;
    //var waarde2 = document.getElementById('blabla2').value;

    document.getElementById('verborgenpagina').value = waarde;
    document.getElementById('blabla1').value = pagina;
    //document.getElementById('blabla2').value = waarde;


    document.getElementById("main").innerHTML = " <div id='tekst'>"+loading_img+"</div>";

    ajax.requestFile = 'artikelen.php?artcode='+artcode;
    ajax.onCompletion = geefmainweer;
    ajax.runAJAX();
}

function laadartikelenvideo(artcode){
    var waarde = document.getElementById('blabla1').value;
    document.getElementById('verborgenpagina').value = waarde;
    var pagina = 'artikelen.php?artcode='+artcode;

    var waarde = document.getElementById('blabla1').value;
    //var waarde2 = document.getElementById('blabla2').value;

    document.getElementById('verborgenpagina').value = waarde;
    document.getElementById('blabla1').value = pagina;
    //document.getElementById('blabla2').value = waarde;

    document.getElementById("videoid").value = artcode;

    document.getElementById("main").innerHTML = " <div id='tekst'>"+loading_img+"</div>";

    ajax.requestFile = 'artikelen.php?artcode='+artcode;
    ajax.onCompletion = geefmainweervideo;
    ajax.runAJAX();
}


function geefmainweervideo(){
    document.getElementById("main").innerHTML = ajax.response;
    var videoid = document.getElementById("videoid").value;
    var s1 = new SWFObject("mediaplayer.swf","mediaplayer","320","250","8");
    s1.addParam('allowfullscreen','true');
    s1.addVariable('height','250');
    s1.addVariable('width','320');
    s1.addVariable('logo','img/logo-videoplayer.png');
    s1.addVariable('frontcolor','0x333333');
    s1.addVariable('lightcolor','0x888888');
    s1.addVariable('screencolor','0xFFFFFF');
    s1.addVariable('file','flv/' + videoid + '.flv');
    s1.addVariable('image','cat/' + videoid + '.jpg');
    //s1.addVariable('image','cat/myofascial2_164617.jpg');
    //s1.addVariable('displayheight','250');
    //s1.addVariable('displaywidth','320');
    s1.addVariable('searchbar','false');
    s1.addVariable('volume','70');
    s1.addVariable('showstop','true');
    //s1.addVariable('thumbsinplaylist','false');
    //s1.addVariable('repeat','list');
    s1.write("videogrootcontainer");
}

function laadartikelengroep(groep){
    var waarde = document.getElementById('blabla1').value;
    document.getElementById('verborgenpagina').value = waarde;
    var pagina = 'productgroep.php?productgrp='+groep;

    var waarde = document.getElementById('blabla1').value;
    //var waarde2 = document.getElementById('blabla2').value;

    document.getElementById('verborgenpagina').value = waarde;
    document.getElementById('blabla1').value = pagina;
    //document.getElementById('blabla2').value = waarde;


    document.getElementById("main").innerHTML = " <div id='tekst'>"+loading_img+"</div>";

    ajax.requestFile = 'productgroep.php?productgrp='+groep;
    ajax.onCompletion = geefmainweer;
    ajax.runAJAX();
}

function geefmainweer(){
    document.getElementById("main").innerHTML = ajax.response;
}


/* ************************************************************************* */
/* XXX aangepast ivm. layout wijzigingen
function laadzoekresultaat(zoekopdracht){

    document.getElementById("zoekresultaat").innerHTML = loading_img;

    ajax.requestFile = 'zoek.php?zoekopdracht='+zoekopdracht;
    ajax.onCompletion = geefzoekresultaatweer;
    ajax.runAJAX();
}

function geefzoekresultaatweer(){
    document.getElementById("zoekresultaat").innerHTML = ajax.response;
}
*/

// alle hoogtes zijn in te stellen via css
var zoek_hoogte = '', // #zoek
    cats_hoogte = '', // #cats
    zoekresultaat_hoogte = ''; // #zoekresultaat

$(document).ready(function(){
    // initiele hoogte van #zoek onthouden
    zoek_hoogte = $('#zoek').height();

    // initiele hoogte van #cats onthouden
    cats_hoogte = $('#cats').height();

    // zoekveld activeren
    $('#zoekopdracht').keyup(function(e){
        if (e.keyCode == 13) $('#zoekknop').click();
    });
});

function laadzoekresultaat()
{
    var zoekopdracht = jQuery.trim($('#zoekopdracht').val());

    // (oude) zoekresultaten altijd (eerst) verwijderen
    sluitZoekresultaten(false); // false: niet het zoekveld te wissen

    // uitvoeren
    if (zoekopdracht != '')
    {
        ajax.requestFile = 'zoek.php?zoekopdracht='+zoekopdracht;
        ajax.onCompletion = geefzoekresultaatweer;
        ajax.runAJAX();
    }
}

function geefzoekresultaatweer()
{
    // nieuw element toevoegen, met zoekresultaten als inhoud
    $('<div id="zoekresultaat">'+ajax.response+'</div>')
        .appendTo('#zoek')
        .hide(); // even nog verborgen laten

    // deze hoogte is nu pas te achterhalen, voorheen stond het betreffende
    // element nog niet in de DOM
    zoekresultaat_hoogte = $('#zoekresultaat').height();

    // sluitknop toevoegen
    $('<span id="zoekresultaat_sluiten">&times;</span>')
        .appendTo('#zoekresultaat')
        .click(function(){ sluitZoekresultaten(true); /* true: ook het zoekveld wissen */ });

    // resultaten tonen
    openZoekresultaten();

}

// FUTURE: animeren van hoogte-aanpassing nakijken
function openZoekresultaten()
{
    // zoekresultaten een hoogte geven en daarna tonen
    $('#zoekresultaat')
        .height(zoekresultaat_hoogte+'px')
        .show();

    // hoogte van #zoek aanpassen (omvattend element)
    $('#zoek').height((zoek_hoogte + zoekresultaat_hoogte)+'px');
    //$('#zoek').animate({height: (zoek_hoogte + zoekresultaat_hoogte)+'px'}, 'normal');

    // hoogte van #cats aanpassen
    $('#cats').height((cats_hoogte - zoekresultaat_hoogte)+'px');
    //$('#cats').animate({height: (cats_hoogte - zoekresultaat_hoogte)+'px'}, 'normal');
}

function sluitZoekresultaten(wis)
{
    // sluiten is eigenlijk gewoon verwijderen
    $('#zoekresultaat').remove();

    // hoogte van #zoek herstellen
    $('#zoek').height(zoek_hoogte+'px');
    //$('#zoek').animate({height: zoek_hoogte+'px'}, 'normal');

    // hoogte van #cats herstellen
    $('#cats').height(cats_hoogte+'px');
    //$('#cats').animate({height: cats_hoogte+'px'}, 'normal');

    // zoekveld wissen
    if (wis == true) $('#zoekopdracht').val('');
}


/* ************************************************************************* */
function show(janee)
{
    if(janee == 'ja')
    document.orderform.issuerID.disabled=false;

    if(janee == 'nee')
    document.orderform.issuerID.disabled=true;
}


function checkCheckBox(f){

    var retval = false;

    for (var i = 0; i < f.betaalwijze.length; i++){
        if (f.betaalwijze[i].checked) retval = true;
    }

    if (!retval){

        alert(betaalwijzekiezen);

        return false;

    }else{

        if (f.algvoorwaarden.checked == false){
            alert(akkoordmetvoorwaarden);
            return false;

        }else{

            return true;

        }

    }
}


/* ************************************************************************* */
function checkbijlogout(){

    if(document.getElementById('loginproductencheck').innerHTML == 1){

        if(confirm(tekstjade)){
            laadpagina('login.php?winkelmandopslaan=aan','inloggen');
        }else{
            //laadpagina('login.php?uitloggen=aan','inloggen');
            if(confirm(tekstjade2)){
                laadpagina('login.php?uitloggen=aan','inloggen');
            }else{
                laadpagina('login.php?winkelmandopslaan=aan','inloggen');
            }
        }

    }else{
        laadpagina('login.php?uitloggen=aan','inloggen');
    }
}


/* ************************************************************************* */
function vraagcontrolle(){
    if(confirm(tekstjade3)){
        laadpagina('toev.php?winkelwagenophalen=aan','basket');
    }else{
        if(confirm($tekstjade4)){
            laadspecial();
        }else{
            laadpagina('toev.php?winkelwagenophalen=aan','basket');
        }
    }
}


/* HULPFUNCTIES VOOR AANMELDFORMULIER ****************************************/
// zie ook: registreerpi.php
function factuurlandVeranderd()
{
    if ($('#bedrijfsland').val() == 'oc')
    {   // "ander land"
        $('#landgroot_omvat').show();
        $('#landgroot').focus('');
    }
    else
    {   // reset en verberg "ander land"
        $('#landgroot_omvat').hide();
        $('#landgroot').val('');
    }

    // toon/verberg kvk&/btw
    if ($('#bedrijfsland').val() == '')
    {   // (nog) geen keuze
        $('#kvkomvat, #btwomvat').hide();
        $('#kvknummer, #btwnummer').val('');
    }
    else if ($('#bedrijfsland').val() == 'nl')
    {   // Nederland
        $('#kvkomvat').show();
        $('#btwomvat').hide();
        $('#btwnummer, #geenbtwreden').val('');
    }
    else
    {   // "buitenland"
        $('#kvkomvat').hide();
        $('#kvknummer, #geenkvkreden').val('');
        $('#btwomvat').show();
    }
}

function leverlandVeranderd()
{
    if ($('#land').val() == 'oc')
    {   // "ander land"
        $('#othercountry_omvat').show();
        $('#othercountry').focus('');
    }
    else
    {   // reset en verberg "ander land"
        $('#othercountry_omvat').hide();
        $('#othercountry').val('');
    }
}


function toggleGeenKvk()
{
    if ($('#geenkvk_check:checked').length > 0)
    {   // vinkje aan
        $('#welkvk').hide();
        $('#kvknummer').val('');
        $('#geenkvk').show();
        $('#geenkvkreden').focus();
    }
    else
    {   // vinkje uit
        $('#welkvk').show();
        $('#kvknummer').focus();
        $('#geenkvk').hide();
        $('#geenkvkreden').val('');
    }
}

function toggleGeenBtw()
{
    if ($('#geenbtw_check:checked').length > 0)
    {   // vinkje aan
        $('#welbtw').hide();
        $('#btwnummer').val('');
        $('#geenbtw').show();
        $('#geenbtwreden').focus();
    }
    else
    {   // vinkje uit
        $('#welbtw').show();
        $('#btwnummer').focus();
        $('#geenbtw').hide();
        $('#geenbtwreden').val('');
    }
}

function toggleAfleveradres()
{
    if ($('#afleveradres_check:checked').length > 0)
    {
        $('#afleveradres').hide();
    }
    else
    {
        $('#afleveradres').show();
    }
}

function kopieerdiegegevens()
{
    document.getElementById('afleverbedrijf').value = document.getElementById('bedrijfsnaam').value;
    document.getElementById('afleverpersoon').value = document.getElementById('naam').value + " " + document.getElementById('achternaam').value;
    document.getElementById('straat').value = document.getElementById('bedrijfsadres').value;
    document.getElementById('straatnummer').value = document.getElementById('bedrijfsstraatnummer').value;
    document.getElementById('postcode').value = document.getElementById('bedrijfspostcode').value;
    document.getElementById('plaats').value = document.getElementById('bedrijfsplaats').value;
}


/* VALIDEERFUNCTIE VOOR AANMELDFORMULIER *************************************/
// zie ook: registreerpi.php
function doedietest()
{
    // formulier valideren/indienen, betreft formulier in registreerpi.php
    var stop_op_fouten = true; // XXX test, wel/niet stoppen bij fouten

    wisFouten(); // alle foutmeldingen verwijderen


    // leeg controle: login gegevens //////////////////////////////////////
    isFoutAlsLeeg('login');
    isFoutAlsLeeg('pass');

    // leeg controle: factuuradres ////////////////////////////////////////
    isFoutAlsLeeg('bedrijfsnaam');
    isFoutAlsLeeg('bedrijfsadres');
    isFoutAlsLeeg('bedrijfsstraatnummer');
    isFoutAlsLeeg('bedrijfspostcode');
    isFoutAlsLeeg('bedrijfsplaats');

    if (isLeeg('bedrijfsland'))
    {
        zetFout('bedrijfsland');
    }
    else if ($('#bedrijfsland').val() == 'oc')
    {
        isFoutAlsLeeg('landgroot');
    }

    // leeg controle: persoonsgegevens ////////////////////////////////////
    isFoutAlsLeeg('naam');
    isFoutAlsLeeg('achternaam');

    // leeg controle: contactgegevens /////////////////////////////////////
    isFoutAlsLeeg('telefoon');
    isFoutAlsLeeg('email');
    isFoutAlsLeeg('email2');

    // leeg controle: diversen ////////////////////////////////////////////
    isFoutAlsLeeg('maandaggesloten');
    isFoutAlsLeeg('taal');
    isFoutAlsLeeg('welgeenmail');

    // leeg controle: kvk/btw /////////////////////////////////////////////
    var bedrijfsland = $('#bedrijfsland').val();
    if (bedrijfsland == '' || bedrijfsland == 'oc') bedrijfsland = $('#landgroot').val();

    if (bedrijfsland == 'nl'
        && isLeeg('kvknummer')
        && isLeeg('geenkvkreden'))
    {   // kvk verplicht voor Nederland, behalve bij een goede reden
        zetFout('kvknummer');
        zetFout('geenkvkreden');
    }

    if (bedrijfsland != 'nl'
        && isLeeg('btwnummer')
        && isLeeg('geenbtwreden'))
    {   // btwnummer verplicht voor andere landen, behalve bij een goede reden
        zetFout('btwnummer');
        zetFout('geenbtwreden');
    }

    // leeg controle: afleveradres ////////////////////////////////////////
    if ($('#afleveradres_check:checked').length == 0)
    {   // mag leeg zijn, afleveradres is dan hetzelfde als factuuradres
        // wordt dan verderop gekopieerd

        isFoutAlsLeeg('afleverbedrijf');
        // XXX isFoutAlsLeeg('afleverpersoon');
        isFoutAlsLeeg('straat');
        isFoutAlsLeeg('straatnummer');
        isFoutAlsLeeg('postcode');
        isFoutAlsLeeg('plaats');
        // XXX isFoutAlsLeeg('provincie');

        if (isLeeg('land'))
        {
            zetFout('land');
        }
        else if ($('#land').val() == 'oc')
        {
            isFoutAlsLeeg('othercountry');
        }
    }

    if (telFouten() > 0)
    {   // oeps, niet alles ingevuld
        alert(alleveldenvullen);
        if (stop_op_fouten) return false; // stop
    }


    // juistheid controle: login naam /////////////////////////////////////
    var bevatfoutetekens = false,
        nietok = /\W/gi; // non-word chars (inclusief spaties)

    // niet-woord tekens
    if (nietok.test($('#login').val()) == true)
    {
        bevatfoutetekens = true;
    }

    // letters met diakritische tekens
    var ln = $('#login').val(),
        lnl = ln.length;

    for (i = 0; i < lnl; i++)
    {
        if (ln.charCodeAt(i) > 127)
        {
            bevatfoutetekens = true;
            break; // één fout teken is al genoeg
        }
    }

    if (bevatfoutetekens == true)
    {   // oeps, foute tekens
        alert(geenspecialetekens);
        zetFout('login');
        if (stop_op_fouten) return false; // stop
    }


    // juistheid controle: wachtwoord /////////////////////////////////////////
    bevatfoutetekens = false;

    // niet-woord tekens
    if (nietok.test($('#pass').val()) == true)
    {
        bevatfoutetekens = true;
    }

    // letters met diakritische tekens
    var ln = $('#pass').val(),
        lnl = ln.length;

    for (i = 0; i < lnl; i++)
    {
        if (ln.charCodeAt(i) > 127)
        {
            bevatfoutetekens = true;
            break; // één fout teken is al genoeg
        }
    }

    if (bevatfoutetekens == true)
    {   // oeps, foute tekens
        alert(geenspecialetekens);
        zetFout('pass');
        if (stop_op_fouten) return false; // stop
    }


    // dubbel controle: login naam ////////////////////////////////////////
    // TODO: met ajax controleren of de login naam al bestaat

    // e-mail adres ///////////////////////////////////////////////////////
    if (haalWaarde('email') != haalWaarde('email2'))
    {
        alert(email2onjuist);
        zetFout('email');
        zetFout('email2');
        if (stop_op_fouten) return false; // stop
    }


    // alles is ok  ///////////////////////////////////////////////////////
    return true; // antwoord aan onsubmit van form



    ///////////////////////////////////////////////////////////////////////////
    // 20091116, rotr
    return;
    // XXX het volgende geeft inconsistente resultaten in verschillende browsers!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    // oplossing is om een traditionele submit van het formulier te doen

    // get string opbouwen
    var g = '?submit=1';

    g += '&login='+$('#login').val();
    g += '&pass='+$('#pass').val();
    g += '&email='+$('#email').val();

    g += '&bedrijfsnaam='+$('#bedrijfsnaam').val();
    g += '&bedrijfsadres='+$('#bedrijfsadres').val();
    g += '&bedrijfsstraatnummer='+$('#bedrijfsstraatnummer').val();
    g += '&bedrijfspostcode='+$('#bedrijfspostcode').val();
    g += '&bedrijfsplaats='+$('#bedrijfsplaats').val();
    g += '&bedrijfsland='+$('#bedrijfsland').val();
    g += '&landgroot='+$('#landgroot').val();

    g += '&kvknummer='+$('#kvknummer').val();
    g += '&geenkvkreden='+$('#geenkvkreden').val().replace(/\n/g, '<br />');
    g += '&btwnummer='+$('#btwnummer').val();
    g += '&geenbtwreden='+$('#geenbtwreden').val().replace(/\n/g, '<br />');

    g += '&naam='+$('#naam').val();
    g += '&tussenvoegsel='+$('#tussenvoegsel').val();
    g += '&achternaam='+$('#achternaam').val();

    if ($('#afleveradres_check:checked').length == 0)
    {   // afwijkend afleveradres
        g += '&afleverbedrijf='+$('#afleverbedrijf').val();
        g += '&afleverpersoon='+$('#afleverpersoon').val();
        g += '&straat='+$('#straat').val();
        g += '&straatnummer='+$('#straatnummer').val();
        g += '&postcode='+$('#postcode').val();
        g += '&plaats='+$('#plaats').val();
        g += '&provincie='+$('#provincie').val();
        g += '&land='+$('#land').val();
        g += '&othercountry='+$('#othercountry').val();
    }
    else
    {   // afleveradres hetzelfde als factuuradres: kopieren
        g += '&afleverbedrijf='+$('#bedrijfsnaam').val();
        g += '&afleverpersoon=';
        g += '&straat='+$('#bedrijfsadres').val();
        g += '&straatnummer='+$('#bedrijfsstraatnummer').val();
        g += '&postcode='+$('#bedrijfspostcode').val();
        g += '&plaats='+$('#bedrijfsplaats').val();
        g += '&provincie='; // XXX ??? geen provincie bij factuuradres
        g += '&land='+$('#bedrijfsland').val();
        g += '&othercountry='+$('#landgroot').val();
    }

    g += '&maandaggesloten='+$('#maandaggesloten').val();
    g += '&telefoon='+$('#telefoon').val();
    g += '&fax='+$('#fax').val();
    g += '&taal='+$('#taal').val();

    g += '&welgeenmail='+$('#welgeenmail').val();
    // XXX oud, g += '&welgeenmail='+$('input[name=welgeenmail]:checked').val();
    // XXX oud, g += '&welgeenmail='+(($('#welgeenmail:checked')) ? 1 : 0);
    g += '&webvia='+$('input[name=webvia]:checked').val();
    g += '&viaopmerking='+$('#viaopmerking').val();

    //alert(g); return false; // XXX test

    // formulier indienen via ajax
    laadpagina('registreerpi.php'+g, 'main');

    // voorkomen dat formulier "traditioneel" wordt ingediend
    return false;
}


/* VALIDEERFUNCTIE VOOR AANMELDFORMULIER *************************************/
// zie ook: contactform.php
function valideer_contact()
{
    // formulier valideren/indienen, betreft formulier in contactform.php
    var stop_op_fouten = true; // XXX test, wel/niet stoppen bij fouten

    wisFouten(); // alle foutmeldingen verwijderen

    isFoutAlsLeeg('naam');
    isFoutAlsLeeg('email');
    isFoutAlsLeeg('vraag');

    //////////////////////////////////////////////////////////////////////////
    if (telFouten() > 0)
    {   // oeps, niet alles ingevuld
        alert(alleveldenvullen);
        if (stop_op_fouten) return false; // stop
    }

    // alles is ok  ///////////////////////////////////////////////////////////
    return true; // antwoord aan onsubmit van form
}


/* VOUWERS *******************************************************************/
// in #categorie_lijst
$('document').ready(function(){
    /* bij openen alle vouwers verbergen */
    $('#categorie_lijst span.foldee').hide();

    /* vouwers activeren */
    $('#categorie_lijst div.folder').click(function(){
        var x = this.id.split('_'),
            foldee_id = 'foldee_'+x[1],
            foldee_was_hidden = $('span#'+foldee_id).is(':hidden');

        // alle vouwers eerst sluiten
        $('#categorie_lijst span.foldee').hide();

        // geklikte vouwer openen (of gesloten laten)
        if (foldee_was_hidden) $('span#'+foldee_id).show();
    });
});


/* LOGIN *********************************************************************/
$('document').ready(function(){
    // login formulier of ingelogde details verbergen bij laden van pagina
    initLogin();
});

function initLogin()
{
    $('div#inloggen div.pop').hide(); // direct verbergen, niet met fadeOut()

    // "knop" activeren
    $('div#inloggen > span').click(openLogin);

    // sluit knop
    $('<span id="sluitlogin">&times;</span>')
        .click(sluitLogin)
        .appendTo('div#inloggen div.pop');


    // login formulier overnemen
    $('div#inloggen form').submit(function(){
        var g = $('input#gebruikersnaam').val(),
            w = $('input#wachtwoord').val();

        laadpagina('login.php?submitted=1&gebruikersnaam='+g+'&wachtwoord='+w, 'inloggen');

        return false; // formulier niet "traditioneel" indienen
    });

    // sluit functie toevoegen aan andere "knoppen"
    $('div#inloggen div.pop input[type=button]').click(sluitLogin);
}

function openLogin()
{
    $('div#inloggen div.pop').fadeIn();
    $('div#inloggen div.pop form').focus(); // voor de tabindex, anders springt
                                            // de cursor na een tab naar zoeken
                                            // ipv. wachtwoord
    $('div#inloggen input#gebruikersnaam').select();
}

function sluitLogin()
{
    $('div#inloggen div.pop').fadeOut();
}

/* ************************************************************************* */
/***********************************
*   http://javascripts.vbarsan.com/
*   This notice may not be removed
***********************************/

//-- Begin Scroller's Parameters and message -->
//scroller width: change to your own;
var wwidth=739;

//scroller height: change to your own;
var wheight=30;

//background color: change to your own;
// XXX oud, var wbcolor="#db6ea1";
var wbcolor="transparent";

//scroller's speed: change to your own;
var sspeed=8;
var restart=sspeed;
var rspeed=sspeed;

//text: change to your own
// zie: index.php, wwholemessage

//Or you may do a slide show running left any number of images too!
//Preload is recommended (no downloading check) - otherwise you may skip this:
//preload1 = new Image();
//preload1.src = "http://...";
//preload2 = new Image();
//preload2.src = "http://...";
//preload3 = new Image();
//preload3.src = "http://...";
// ...

//if no preloading, replace below '+ preload... +' with the actual Images path "..."

//wwholemessage='<nobr><img src='+preload1.src+' width=... height=... alt="...">'+
//'<img src='+preload2.src+' width=... height=... alt="...">'+
//'<img src='+preload3.src+' width=... height=... alt="...">'+
//'<img  ... ></nobr>';

//-- end Parameters and message-->

//-- begin: Scroller's Algorithm -->
var sizeupw=0;var operbr=navigator.userAgent.toLowerCase().indexOf('opera');if(operbr==-1&&navigator.product&&navigator.product=="Gecko"){var agt = navigator.userAgent.toLowerCase();var rvStart = agt.indexOf('rv:');var rvEnd = agt.indexOf(')', rvStart);var check15 = agt.substring(rvStart+3, rvEnd);if(parseFloat(check15)>=1.8) operbr=0;}if (navigator.appVersion.indexOf("Mac")!=-1)operbr=0;
function goup(){if(sspeed!=rspeed*8){sspeed=sspeed*2;restart=sspeed;}}
function godown(){if(sspeed>rspeed){sspeed=sspeed/2;restart=sspeed;}}
function startw(){if(document.getElementById)ns6marqueew(document.getElementById('wslider'));else if(document.all) iemarqueew(wslider);else if(document.layers)ns4marqueew(document.wslider1.document.wslider2);}function iemarqueew(whichdiv){iedivw=eval(whichdiv);iedivw.style.pixelLeft=wwidth+"px";iedivw.innerHTML='<nobr>'+wwholemessage+'</nobr>';sizeupw=iedivw.offsetWidth;ieslidew();}function ieslidew(){if(iedivw.style.pixelLeft>=sizeupw*(-1)){iedivw.style.pixelLeft-=sspeed+"px";setTimeout("ieslidew()",100);}else{iedivw.style.pixelLeft=wwidth+"px";ieslidew();}}function ns4marqueew(whichlayer){ns4layerw=eval(whichlayer);ns4layerw.left=wwidth;ns4layerw.document.write('<nobr>'+wwholemessage+'</nobr>');ns4layerw.document.close();sizeupw=ns4layerw.document.width;ns4slidew();}function ns4slidew(){if(ns4layerw.left>=sizeupw*(-1)){ns4layerw.left-=sspeed;setTimeout("ns4slidew()",100);}else{ns4layerw.left=wwidth;ns4slidew();}}function ns6marqueew(whichdiv){ns6divw=eval(whichdiv);ns6divw.style.left=wwidth+"px";ns6divw.innerHTML='<nobr>'+wwholemessage+'</nobr>';sizeupw=ns6divw.offsetWidth;if(operbr!=-1){document.getElementById('operaslider').innerHTML='<nobr>'+wwholemessage+'</nobr>';sizeupw=document.getElementById('operaslider').offsetWidth;}ns6slidew();}function ns6slidew(){if(parseInt(ns6divw.style.left)>=sizeupw*(-1)){ns6divw.style.left=parseInt(ns6divw.style.left)-sspeed+"px";setTimeout("ns6slidew()",100);}else{ns6divw.style.left=wwidth+"px";ns6slidew();}}
//-- end Algorithm -->
