var SWIS = {

    /**
     *  @desc start function, wordt altijd uitgevoerd
     *
     */
    start: function(){
        SWIS.pageHit();
    },

    /**
     *  @desc pageHit: statistieken
     *
     */
    pageHit: function(){

        sBaseUrl = $('base').attr('href');

        p = escape(document.location.href);
        rfr = escape(document.referrer);
        if (rfr == "undefined"){ rfr = "";}
        sx = screen.width;
        sy = screen.height;
        sc = (navigator.appName.indexOf("Microsoft") > -1) ? screen.colorDepth : screen.pixelDepth;
        src = 'stats.php?p=' + p + '&rfr=' + rfr + '&sx=' + sx + '&sy=' + sy + '&sc=' + sc;
        src = '<img style="position:absolute;left:-10px;top:-10px;" src="' + sBaseUrl + src + '" width="1" height="1" border="0" alt="" />';

        document.getElementById('counter').innerHTML = src;
    }

}

// Reading GET variables with JavaScript. Example: var var1 = $_GET('var1');
function $_GET(q,s) {
    s = (s) ? s : window.location.search;
    var re = new RegExp('&'+q+'=([^&]*)','i');
    return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}

var aOptions = [];

// jQuery functies
$(document).ready(function () {

    // statistieken
    SWIS.start();

    // Links met rel="external" moeten in een nieuw venster worden geopend
    $('A[rel="external"]').click( function() {
        window.open(jQuery(this).attr('href') );
        return false;
    });

    // Edit in place toolbar
    $('#eipToolbar').css({'opacity': "0.9"});

    // Prefill text for inputs
    //$("input[type='text'], .header_inloggen_login #wachtwoord").example(function() {
    $("#textfield_q, .header_inloggen_login #wachtwoord").example(function() {
        return $(this).attr('title');
    }, {className: 'searchinputtxt'});

    // Print knop
    $('.print').click(function(e){
        e.preventDefault();
        window.print();
    })

    // Toggle function
    $(".toggle_content").hide();
    $(".toggle_click").click(function(){
        //$(this).nextAll(".toggle_content:first").slideToggle(400);
        $(this).nextAll(".toggle_content:first").toggle();
        //$(".toggle_content").slideToggle(400);
        return false;
    });

    // Errors van het inloggen formulier dmv javascript tonen. De error codes staan in een verborgen span met de class "error".
    sLoginError = $('.header_inloggen_login .error').html();
    if(sLoginError != null) alert(sLoginError);


    // autocomplete op zoekform
    $('#searchForm input[name="q"]').autocomplete('ajax/autocomplete.php',{
        selectFirst: false
    });


    // uitgebreid zoeken togglen
    $('.toggle_searchform_bottom').click(function(e){
        e.preventDefault();

        sCurrentState = $('.searchform_bottom').css('display');

        // Als uitgebreid zoeken nu openstaat -> verbergen
        if(sCurrentState == 'block'){
            $('.searchform_bottom').hide();
            sNewState = 'none';
        }
        // Anders uitgebreid zoeken openen
        else {
            $('.searchform_bottom').show();
            sNewState = 'block';
        }

        // Nieuwe state in de sessie opslaan via ajax. (Met cSearch->getUitgebreidZoekenState() kan de state worden uitgelezen)
        jQuery.get('ajax/uitgebreidzoeken.php',{state: sNewState}, function(data){
            if(data.error == 1){
                alert(data.message);
            }
        }, 'json');
    });


    // laatst bekeken togglen
    $('.toggle_laatst_bekeken').click(function(e){
        e.preventDefault();

        sCurrentState = $('#laatst_bekeken').css('display');

        // Als laatst bekeken nu openstaat -> verbergen
        if(sCurrentState == 'block'){
            $('#laatst_bekeken').hide();
            sNewState = 'none';
        }
        // Anders openen
        else {
            $('#laatst_bekeken').show();
            sNewState = 'block';
        }

        // Nieuwe state in de sessie opslaan via ajax. (Met cBezoeker->getLaatstBekekenState() kan de state worden uitgelezen)
        jQuery.get('ajax/laatstbekeken.php',{state: sNewState}, function(data){
            if(data.error == 1){
                alert(data.message);
            }
        }, 'json');
    });


    // Reset laatst bekeken
    $('.reset_laatst_bekeken').click(function(e){
        e.preventDefault();

        // Sessie array wissen
        jQuery.get('ajax/resetlaatstbekeken.php', function(data){
            if(data == 0){
                alert('Failure');
            }
            else{
               location.reload();
            }

        }, 'json');

    });

    // taalkeuze jumpbox
    $('#taalswitchselect').change(function(){
        sUrl = $("#taalswitchselect").val();

        if(sUrl != 0){
            document.location.href = sUrl;
        }
    });

    // taalkeuze lijst
    $('#taallijst .inactive').hide();

    $('#taallijst').hover(function(){
        $('#taallijst .inactive').css('display','block');
    },
    function(){
        $('#taallijst .inactive').hide();
    });

    // producten zoeken: Zodra er in de "weergave" selectboxen iets wordt gekozen, wordt er een nieuwe zoekopdracht uitgevoerd
    $('.submitSearchForm').change(function(){
        $('#searchForm').submit();
    });

    // bug fix voor deze bug: als je op diversen -> voorzet apparatuur klikt, en dan in je browser op "back" en weer op diversen klikt en dan op zoeken klikt (terwijl voorzet apparatuur nog automatisch geselecteerd staat) dan ga je niet naar voorzet apparatuur
   $('#searchForm').submit(function(e){
       // als voorzet_apparatuur gechecked staat...
       if($('input[name=categorie]:checked').val() == 'voorzet_apparatuur'){
           e.preventDefault(); // zoekform niet submitten...
           goToAttachments(); // maar doorsturen naar de attachments pagina
       }
   })

   $('#subcategorie_voorzet_apparatuur').change(function(){
        goToAttachments();
    });
    $('#subcategorie_voorzet_apparatuur').click(function(){
        goToAttachments();
    });

    // homepage: bij het klikken op een van de vier hoofdcategorieen, wordt de bijbehorende subcategorie getoond
    $('.quicksearch .subcategorie').hide();

    $('.quicksearch .quicksearch_typemachine a').click(function(e){
        e.preventDefault();

        sHoofdcategorie = $(this).attr('id'); // hoofdcategorie uitlezen
        iHoofdcategorie = sHoofdcategorie.replace('hc',''); // hc verwijderen uit id

        $('#soortmachine').attr('value',iHoofdcategorie); // in het hidden field de hoofdcategorie zetten

        $('.quicksearch .subcategorie').hide(); // alle subcategorieen verbergen
        $('.quicksearch #hoofdcategorie'+iHoofdcategorie).show(); // de juiste subcategorieen tonen
    });

    // Reset button op het zoekformulier: de products pagina opnieuw inladen
    $('#resetbutton').click(function(){
        sBase = $('base').attr('href');
        sTaalcode = getTaalcode();
        document.location = sBase + sTaalcode + '/products';
    });

    // Animatie (hiervoor is jquery.cycle.lite.min.js nodig!)
    $('#diashow').cycle({
        prev:   '#diashowPrev',
        next:   '#diashowNext',
        pause:   1

    });

    // Aanbiedingen rouleren (hiervoor is jquery.cycle.lite.min.js nodig!)
    $('#aanbiedingen').cycle({
        pause:   1
    });

    $('#product_slider .products').cycle({
        fx: 'scrollDown',
        speed:    500,
        timeout:  1500,
        pause:   1
    });

    // PDF offerte generen: bij het invullen van een eigen prijs: de Lisman prijs grijs maken
    $('#FormHandler .eigenprijs').blur(function(){
        if($(this).attr('value') != ''){
            // 2x previous: de eerste prev is een <br/> en daarvoor zit de <span> waarin de prijs staat.
            $(this).prev().prev().addClass('grayed_out');
        } else {
            $(this).prev().prev().removeClass('grayed_out');
        }

    });

    // JQ zoom
    var jqzoomOptions = {
        title: false
    };

    $('#jqzoom').jqzoom(jqzoomOptions);

    // productdetails pagina: klik op thumb -> toon grote foto
    // fotoalbum: klik op thumb -> toon grote foto
    $('.fotoalbum_thumbs a').click(function(e){
        e.preventDefault();

        sImage = $(this).attr('href'); // de href link bevat het path naar de fullsize foto
        setFotoalbumFullImg(sImage);
    })

    // Pijltjes verbergen als er minder als 2 thumbs zijn, en er dus niks te bladeren valt
    if($('.fotoalbum_thumbs a').length < 2){
        $('.fotoalbum_full .previous, .fotoalbum_full .next').hide();
    }

    // Pijltje terug -> vergroot de vorige thumbnail
    $('.fotoalbum_full .previous').click(function(e){
        e.preventDefault();

        // opvragen welke foto er nu als full getoond wordt
        sFull = $('#fotoalbum_full').attr('src');

        // De thumbnail opzoeken waarbij in href de huidige fullfoto staat, en van de vorige thumbnail de href uitlezen
        sImage = $('.fotoalbum_thumbs a[href='+sFull+']').prev().attr('href');

        // Na de eerste thumbnail, weer doorgaan met de laatste
        if(sImage == undefined) sImage = $('.fotoalbum_thumbs a:last').attr('href');

        //$('#fotoalbum_full').attr('src',sImage);
        setFotoalbumFullImg(sImage);

    });

    // Pijltje verder -> vergroot de volgende thumbnail
    $('.fotoalbum_full .next').click(function(e){
        e.preventDefault();

        // opvragen welke foto er nu als full getoond wordt
        sFull = $('#fotoalbum_full').attr('src');

        // De thumbnail opzoeken waarbij in href de huidige fullfoto staat, en van de volgende thumbnail de href uitlezen
        sImage = $('.fotoalbum_thumbs a[href='+sFull+']').next().attr('href');

        // Na de laatste thumbnail, weer doorgaan met de eerste
        if(sImage == undefined) sImage = $('.fotoalbum_thumbs a:first').attr('href');

        //$('#fotoalbum_full').attr('src',sImage);
        setFotoalbumFullImg(sImage);

    });

    function setFotoalbumFullImg(sImage){
        $('#jqzoom').unbind();
        $('#fotoalbum_full').attr('src',sImage);

        sColorboxImage = sImage.replace('471/352','800/600');

        $('.fotoalbum_full .colorbox').attr('href',sColorboxImage);

        $('#jqzoom').jqzoom(jqzoomOptions);
    }

    // product toevoegen aan "Mijn selectie"
    $('.addtoselection a').click(function(e){
        e.preventDefault();

        iRoutingnummer = $(this).attr('href'); // de href link bevat het routingnummer
        iRoutingnummer = iRoutingnummer.replace('addtoselection/',''); // het stukje tekst "addtoselection/" verwijderen, zodat het routingnummer overblijft

        // via ajax toevoegen aan de selectie
        jQuery.get('ajax/mijnselectie.php',{action: "add", routingnummer: iRoutingnummer, taalcode: getTaalcode()}, function(data){

            if(data.error == 1){
                alert(data.message);
            } else {
                // Mijn selectie updaten
                updateMijnSelectie();
            }

        }, 'json');

    });

    // product verwijderen uit "Mijn selectie". De .live functie zorgt ervoor dat het verwijder linkje in "Mijn selectie" ook blijft werken nadat de content via ajax opnieuw is ingeladen :)
    $('#mijnselectie a.addplus').live("click", function(e){
        e.preventDefault();

        iRoutingnummer = $(this).attr('href'); // de href link bevat het routingnummer
        iRoutingnummer = iRoutingnummer.replace('removefromselection/',''); // het stukje tekst "removefromselection/" verwijderen, zodat het routingnummer overblijft

        // via ajax verwijderen uit de selectie
        jQuery.get('ajax/mijnselectie.php',{action: "remove", routingnummer: iRoutingnummer, taalcode: getTaalcode()}, function(data){

            if(data.error == 1){
                alert(data.message);
            } else {
                // Mijn selectie updaten
                updateMijnSelectie();
            }

        }, 'json');

    });

    // alle producten verwijderen uit "Mijn selectie"
    $('#mijnselectie a.removeall').live("click", function(e){
        e.preventDefault();

        // via ajax verwijderen uit de selectie
        jQuery.get('ajax/mijnselectie.php',{action: "removeall", taalcode: getTaalcode()}, function(data){

            if(data.error == 1){
                alert(data.message);
            } else {
                // Mijn selectie updaten
                updateMijnSelectie();
            }

        }, 'json');

    });

    // product toevoegen aan "Mijn selectie" en meteen doorlinken naar de "offerte aanvragen" pagina
    $('.machineButtons a.makeMachineOffer').click(function(e){
        e.preventDefault();

        iRoutingnummer = $(this).attr('href'); // de href link bevat het routingnummer
        iRoutingnummer = iRoutingnummer.replace('addtoselection/',''); // het stukje tekst "addtoselection/" verwijderen, zodat het routingnummer overblijft

        // via ajax toevoegen aan de selectie
        jQuery.get('ajax/mijnselectie.php',{action: "add", routingnummer: iRoutingnummer, taalcode: getTaalcode()}, function(data){

            if(data.error == 1){
                alert(data.message);
            } else {
                // als het toevoegen is gelukt -> doorlinken
                sBase = $('base').attr('href');
                sTaalcode = getTaalcode();
                window.location = sBase + sTaalcode + '/request_offer';
            }

        }, 'json');

    });

    // product toevoegen aan "Mijn selectie" en meteen doorlinken naar de "tell a friend" pagina
    $('.machineButtons a.tellafriend').click(function(e){
        e.preventDefault();

        iRoutingnummer = $(this).attr('href'); // de href link bevat het routingnummer
        iRoutingnummer = iRoutingnummer.replace('addtoselection/',''); // het stukje tekst "addtoselection/" verwijderen, zodat het routingnummer overblijft

        // via ajax toevoegen aan de selectie
        jQuery.get('ajax/mijnselectie.php',{action: "add", routingnummer: iRoutingnummer, taalcode: getTaalcode()}, function(data){

            if(data.error == 1){
                alert(data.message);
            } else {
                // als het toevoegen is gelukt -> doorlinken
                sBase = $('base').attr('href');
                sTaalcode = getTaalcode();
                window.location = sBase + sTaalcode + '/tellafriend';
            }

        }, 'json');

    });

    // Javascript pagina terug functie
    $('.pageBack').click(function(e){
        e.preventDefault();
        history.go(-1);
    });

    // Fotos in overlay openen
    $(".colorbox").colorbox();



    /*
    // Bij het selecteren van een soort machine (Hoofdcategorie) moeten in de categorie select de juiste opties getoond worden (subcategorie)
    aOptions = $('.searchform #categorie option');

    $('.searchform #soortmachine').change(function(){

        iSoortMachine = $(this).val(); // id opvragen van de hoofcategorie

        if(iSoortMachine == 0){
            // als er geen hoofdcategorie is gekozen: alle opties laten zien in de categorie box
            $('#categorie option').show();

            for(var i = 0; i < aOptions.length; i++){
                $('.searchform #categorie').append(aOptions[i]);
           }

        } else {
            // als er WEL een hoofdcategorie is gekozen: alle opties in de categorie select verbergen, en alleen de opties tonen die in de gekozen hoofdcategorie vallen + de optie "allemaal"
           $('#categorie option').remove();

           for(var i = 0; i < aOptions.length; i++){
             if(aOptions[i].className.substr(12) == iSoortMachine || aOptions[i].className.substr(12) == 0){
                 $('.searchform #categorie').append(aOptions[i]);
             }
           }
        }

        // De eerste optie selecteren (standaard staat de laatste optie geselecteerd)
        $('.searchform #categorie').val($(".searchform #categorie option:first").val());

    });
    */

    // Bij het selecteren van een soort machine (Hoofdcategorie) moeten de juiste subcategorie checkboxen getoond worden
    $('.searchform #soortmachine').change(function(){

        iSoortMachine = $(this).val(); // id opvragen van de hoofcategorie

        if(iSoortMachine == 0){
            // als er geen hoofdcategorie is gekozen: alle checkboxen laten zien
            $('.categorieWrap div').show();
        } else {
            // als er WEL een hoofdcategorie is gekozen: alle opties in de categorie select verbergen, en alleen de opties tonen die in de gekozen hoofdcategorie vallen
           $('.categorieWrap div').hide();

           $('.categorieWrap div.soortmachine'+iSoortMachine).show();
           //console.log('.categorieWrap div.soortmachine'+iSoortMachine);

        }

    });

    // Bij het inladen van de zoekmachine pagina moet de bovenstaande functie alvast 1x worden uitgevoerd
    $(".searchform #soortmachine").change();

    // Als er op het zoekformulier een categorie is gekozen, moet deze in de categorie selectbox geselecteerd staan
    /*
    var iCategorie = $_GET('categorie');
    if (iCategorie != '') {
        $('.searchform #categorie').val(iCategorie);
    }
    */


    // Tooltips: de title tag van de tag waarop de class .showtooltip staat wordt uitgelezen en als tooltip getoond.
    $('.showtooltip').qtip({
        style: {
          width: 200,
          padding: 10,
          background: '#e3eff2',
          color: 'black',
          border: {
             width: 1,
             radius: 1,
             color: '#cfe0e4'
          }
       }
    });

    // Over Lisman - DNA
    $(".dna-link1").colorbox({width:"450px", inline:true, href:"#dna-box1"});
    $(".dna-link2").colorbox({width:"450px", inline:true, href:"#dna-box2"});
    $(".dna-link3").colorbox({width:"450px", inline:true, href:"#dna-box3"});
    $(".dna-link4").colorbox({width:"450px", inline:true, href:"#dna-box4"});
    $(".dna-link5").colorbox({width:"410px", inline:true, href:"#dna-box5"});
    $(".dna-link6").colorbox({width:"450px", inline:true, href:"#dna-box6"});
    $(".dna-link7").colorbox({width:"450px", inline:true, href:"#dna-box7"});
    $(".dna-link8").colorbox({width:"450px", inline:true, href:"#dna-box8"});
    $(".dna-link9").colorbox({width:"450px", inline:true, href:"#dna-box9"});
    $(".dna-link10").colorbox({width:"450px", inline:true, href:"#dna-box10"});
    $(".dna-link11").colorbox({width:"450px", inline:true, href:"#dna-box11"});


    // Over Lisman - Geschiedenis
    $('#lisman_history_content').cycle({
        fx:     'fade',
        speed:  'fast',
        timeout: 0,
        pager:  '#navi',
        pagerAnchorBuilder: function(idx, slide) {
            return '#lisman_history_navi span:eq(' + (idx) + ') a';
        }
    });

    // password strength meter
    $("#custom_wachtwoord").passStrength({userid: "#custom_gebruikersnaam"});

    // merk_checkall
    $('#merk_checkall').click(function(){
        bChecked = false;
        if($(this).attr('checked') == 'checked') bChecked = true;
        // als je "check all" aan of uit vinkt ook alle merk checkboxen aan of uit vinken
        $('#searchSpecificerenForm input:checkbox[name="merk[]"]').attr('checked', bChecked);
    });

    // categorie_checkall
    $('#categorie_checkall').click(function(){
        bChecked = false;
        if($(this).attr('checked') == 'checked') bChecked = true;
        // als je "check all" aan of uit vinkt ook alle merk checkboxen aan of uit vinken
        $('#searchSpecificerenForm input:checkbox[name="categorie[]"]').attr('checked', bChecked);
    });

    // in het zoekresultaten scherm: bij klikken op "lijst met zoekresultaten exporteren" krijg je een alert melding als je niet mag exporteren:
    $('.export a.message').click(function(e){
       e.preventDefault;
       alert($(this).attr('title'));
       return false;
    });
});

// via ajax "Mijn selectie" updaten
function updateMijnSelectie(){

    jQuery.get('ajax/mijnselectie.php',{action: "get", taalcode: getTaalcode()}, function(data){

        if(data.error == 1){
            alert('error');
        } else {
            $('#mijnselectiewrap').html(data.html);
        }

    }, 'json');
}

// Uit de html tag de taalcode uitlezen
function getTaalcode(){
    return $('html').attr('lang');
}

// Op de pagina PDF genereren zit een knop waarmee je je eigen geuploade logo kan verwijderen
function deleteLogo(){



    jQuery.get('ajax/logoverwijderen.php',{action: "verwijderen"}, function(data){

        if(data.error == 1){
            alert(data.message);
        } else {
            $('#eigenlogo').css('display','none');

        }

    }, 'json');
}


function goToAttachments(){
    sBase = $('base').attr('href');
    sTaalcode = getTaalcode();
    document.location.href = sBase + sTaalcode + '/attachments';
}

function createSlider(name, values, sliderLimits, stepAmount){
    sliderValues = inputValues = values;

    var minInput = $("#" + name + "min");
    var maxInput = $("#" + name + "max");

    $("#" + name + "_slider").slider({
        range: true,
        min: sliderLimits[0],
        max: sliderLimits[1],
        values: sliderValues,
        step: stepAmount,
        slide: function(event, ui) {
            minInput.val(ui.values[0]);
            maxInput.val(ui.values[1]);
        }
    });

    var manualChangeCallback = function(name, inputValues, sliderLimits, inputElem, oppositeElem, isMinInput) {
        var inputValue = inputElem.val().replace(/\D/g, "");
        if (inputValue == "")
            inputValue = "0";
        var newValue = parseInt(inputValue);

        if (newValue < 0)
            newValue = 0;
        inputElem.val(newValue);

        var slider = $("#" + name + "_slider");
        var values = slider.slider("option", "values");

        if (newValue < sliderLimits[0]) {
            //sliderLimits[0] = newValue;
            newValue = sliderLimits[0];
            slider.slider("option", "min", newValue);
        }

        if (newValue > sliderLimits[1]) {
            //sliderLimits[1] = newValue;
            newValue = sliderLimits[1];
            slider.slider("option", "max", newValue);
        }

        if (isMinInput) {
            inputValues[0] = newValue;
            values[0] = newValue;

            if (newValue > values[1]) {
                values[1] = sliderLimits[1];
                oppositeElem.val(values[1]);
            }
        }
        else {
            inputValues[1] = newValue;
            values[1] = newValue;
            if (newValue < values[0]) {
                values[0] = sliderLimits[0];
                oppositeElem.val(values[0]);
            }
        }

        slider.slider("option", "values", values);
    }

    minInput.change(function(event) {
        manualChangeCallback(name, inputValues, sliderLimits, minInput, maxInput, true);
    });

    maxInput.change(function(event) {
        manualChangeCallback(name, inputValues, sliderLimits, maxInput, minInput, false);
    });
}
