$(function() {
    //checks how many counters exists on the page
    var length = $(".container-countdown").length;
    
    //checks if popup or normal page counter is on the current page
    if (length != 0) {
        //starts timers by class loop
        //console.debug($(".container-countdown:eq("+i+")").attr('id'));
        for (var i = 0; i != length; i++) {
            countingdown($(".container-countdown:eq("+i+")").attr('id'));
        };
    } else {
        countingdown('popupcountdown');
    }
});

// Function to countdown the remaining auction time.
function countingdown(count)
{
    // Bepalen adhv meegegeven timer hoe deze moet worden benaderd.
    if (count == "popupcountdown") {
        var currentcountdown = "#" + count;
    } else {
        var currentcountdown = "#" + count;
    }

    var dagen    = '';
    var uren     = '';
    var minuten  = '';
    var seconden = '';

    // Controleer of de countdown moet worden uitgevoerd
    if ($(currentcountdown + ">span[rel=seconden]").length > 0) {

        // Per object blok zijn er 4 <span> elementen: dagen, uren, minuten, seconden.

        // De tijdsvariabelen invullen indien deze nog van toepassing zijn.
        if ($(currentcountdown + ">span[rel=dagen]").length > 0) {
            // Uitlezen van overgebleven dagen uit de "dagen" <span>.
            dagen = parseInt($(currentcountdown+">span[rel=dagen]").text());
        }

        if ($(currentcountdown + ">span[rel=uren]").length > 0) {
            // Uitlezen van overgebleven uren uit de "uren" <span>.
            uren = parseInt($(currentcountdown+">span[rel=uren]").text());
        }

        if ($(currentcountdown + ">span[rel=minuten]").length > 0) {
            // Uitlezen van overgebleven minuten uit de "minuten" <span>.
            minuten = parseInt($(currentcountdown+">span[rel=minuten]").text());
        }

        if ($(currentcountdown + ">span[rel=seconden]").length > 0) {
            // Uitlezen van overgebleven seconden uit de "seconden" <span>.
            seconden = parseInt($(currentcountdown + ">span[rel=seconden]").text());
        }

        // Timer met 1 seconde interval.
        t = setInterval(function timing()
        {
            if ($(currentcountdown + ">span[rel=dagen]").length > 0) {
                dagen = parseInt($(currentcountdown+">span[rel=dagen]").text());
            }

            if ($(currentcountdown + ">span[rel=uren]").length > 0) {
                uren = parseInt($(currentcountdown+">span[rel=uren]").text());
            }

            if ($(currentcountdown + ">span[rel=minuten]").length > 0) {
                minuten = parseInt($(currentcountdown+">span[rel=minuten]").text());
            }

            if ($(currentcountdown + ">span[rel=seconden]").length > 0) {
                seconden = parseInt($(currentcountdown+">span[rel=seconden]").text());
            }

            // Tekst aanpassen na elke seconde.
            // Rekening houden met enkelvoud of meervoud: dag/dagen, uur/uren, etc.
            if (seconden === 0) {
                if (minuten !== '') {
                    if (minuten === 0) {
                        if (uren !== '') {
                            if (uren === 0) {
                                if (dagen !== '') { // 3 dagen 2 uren 1 minuut 50 seconden
                                    dagen--;
                                    $(currentcountdown + ">span[rel=dagen]").text(dagen);
                                    if (dagen === 1) {
                                        $(currentcountdown + ">span.dagen-tekst").text("dag, ");
                                    } else {
                                        $(currentcountdown + ">span.dagen-tekst").text("dagen, ");
                                    }
                                }
                                uren = 23;
                            } else {
                                uren--;
                            }
                            $(currentcountdown + ">span[rel=uren]").text(uren);
                        }
                        minuten = 59;
                    } else {
                        minuten--;
                    }
                    $(currentcountdown + ">span[rel=minuten]").text(minuten);
                    if (minuten === 1) {
                        $(currentcountdown + ">span.minuten-tekst").text("minuut en ");
                    } else {
                        $(currentcountdown + ">span.minuten-tekst").text("minuten en ");
                    }
                }
                seconden = 59;
            } else {
                seconden--;
            }

            // Geen dagen meer over: dagen <span> verwijderen.
            if ($(currentcountdown + ">span.dagen-tekst").length > 0 && dagen === 0) {
                $(currentcountdown + ">span.dagen-tekst").remove();
                $(currentcountdown + ">span[rel=dagen]").remove();
            }

            // Geen uren meer over: uren <span> verwijderen.
            if ($(currentcountdown + ">span.uren-tekst").length > 0 && dagen === '' && uren === 0) {
                $(currentcountdown + ">span.uren-tekst").remove();
                $(currentcountdown + ">span[rel=uren]").remove();
            }

            //if ($(currentcountdown+">span.minuten-tekst").length > 0 && dagen === '' && uren === '' && minuten === 0) {
            //    $(currentcountdown+">span.minuten-tekst").hide();
            //    $(currentcountdown+">span[rel=minuten]").hide();
            //}

            $(currentcountdown + ">span[rel=seconden]").text(seconden);

            if ($(currentcountdown + ">span.seconden-tekst").length > 0 && dagen === '' && uren === '' && minuten === 0 && seconden === 0) {
                $.getJSON('/mijn-catalogus/check-status/' + $(currentcountdown).attr('rel'), function(data) {
                    switch(data.status) {
                        case 'bied-nu':
                        case 'hoogste-bod':
                            checkStatus($(currentcountdown).attr('rel'));
                            break;
                        case 'toegewezen':
                        case 'verkocht':
                            $(currentcountdown).text('Bezig met verwerken');
                            $(currentcountdown + ">span.uren-tekst").remove();
                            $(currentcountdown + ">span[rel=uren]").remove();
                            checkStatus($(currentcountdown).attr('rel'));
                            $(currentcountdown).remove();
                            break;
                    }
                    $(currentcountdown).remove();
                });
            }

            // Tekst seconde(n) goedzetten.
            if (seconden === 1) {
                $(currentcountdown + ">span.seconden-tekst").text("seconde");
            } else {
                $(currentcountdown + ">span.seconden-tekst").text("seconden");
            }
            //checkStatus($(currentcountdown).attr('rel'));
            // Checkmomenten
            if (count !== 'popupcountdown') {
                if (dagen !== '') {
                    if (minuten === 0 && seconden === 0) {
                        checkStatus($(currentcountdown).attr('rel'));
                        checkStatus($(currentcountdown).attr('rel'));
                    }
                } else if (uren === '') {
                    if (minuten > 30) {
                        if (seconden % 30 && seconden === 0) {
                            checkStatus($(currentcountdown).attr('rel'));
                        }
                    } else if (minuten <= 10 && minuten > 5) {
                        if (seconden % 15 === 0) {
                            checkStatus($(currentcountdown).attr('rel'));
                        }
                    } else {
                        if (seconden % 10 === 0) {
                            checkStatus($(currentcountdown).attr('rel'));
                        }
                        if (minuten === 0 && seconden % 2 === 0) {
                            checkStatus($(currentcountdown).attr('rel'));
                        }
                    }
                }
            }
        },1000);
    } else {
        checkStatus(count);
        
    }
}

function checkStatus(objectID)
{
    $.getJSON('/mijn-catalogus/check-status/' + objectID, function(data) {
        switch(data.status) {
            case 'bied-nu':
                statusBiedNu(objectID, data.hoogstebod, data.veilingnummer, data.objectnummer, data.dagen, data.uren, data.minuten, data.seconden, data.startprijs);
                break;
            case 'hoogste-bod':
                statusHoogsteBod(objectID, data.hoogstebod, data.dagen, data.uren, data.minuten, data.seconden);
                break;
            case 'verkocht':
                statusVerkocht(objectID);
                break;
            case 'binnenkort-webshop':
                statusBinnenkortWebshop(objectID);
                break;
            case 'toegewezen':
                statusToegewezen(objectID);
                break;
        }
    });
}

function statusHoogsteBod(objectID, hoogstebod, dagen, uren, minuten, seconden)
{
    $('#' + objectID + '-object .status').html('Hoogste bod: € '+ hoogstebod +',- ');
    $('#' + objectID + '-object .dashboard-button').removeClass('verkocht-button').removeClass('biednu-button').removeClass('toegewezen-button').removeClass('hoogste-button').addClass('hoogste-button').html('Hoogste bod').css('color','#fff');
    $('#' + objectID + '-object').removeClass('dashboard-item-verkocht').removeClass('dashboard-item-toegewezen').removeClass('dashboard-item-webshop').removeClass('dashboard-item-hoogstebod').removeClass('dashboard-item-overboden').removeClass('dashboard-item-hoogstebod');
    $('#' + objectID + '-countdown span[rel=minuten]').text(minuten);
    $('#' + objectID + '-countdown span[rel=seconden]').text(seconden);
    $('#' + objectID + '-countdown span[rel=minuten]').show();
}

function statusBiedNu(objectID, hoogstebod, veilingNummer, objectNummer, dagen, uren, minuten, seconden, startprijs)
{
    if (hoogstebod == false) {
    } else {
        $('#' + objectID + '-object .status').html('Hoogste bod: € '+ hoogstebod +',- ');
    }
    $('#' + objectID + '-object .dashboard-button').removeClass('verkocht-button').removeClass('biednu-button').removeClass('toegewezen-button').removeClass('hoogste-button').addClass('biednu-button').html('Bied nu').css('color','#fff');
    $('#' + objectID + '-object').removeClass('dashboard-item-verkocht').removeClass('dashboard-item-toegewezen').removeClass('dashboard-item-webshop').removeClass('dashboard-item-hoogstebod').removeClass('dashboard-item-overboden').removeClass('dashboard-item-overboden');
    $('#' + objectID + '-countdown span[rel=minuten]').text(minuten);
    $('#' + objectID + '-countdown span[rel=seconden]').text(seconden);
    $('#' + objectID + '-countdown span[rel=minuten]').show();
}

function statusVerkocht(objectID)
{
    $('#' + objectID + '-object').removeClass('dashboard-item-verkocht').removeClass('dashboard-item-toegewezen').removeClass('dashboard-item-webshop').removeClass('dashboard-item-hoogstebod').removeClass('dashboard-item-overboden').removeClass('dashboard-item-verkocht').addClass('dashboard-item-verkocht');
    $('#' + objectID + '-countdown').parent().children('span').remove();
    $('#' + objectID + '-object .dashboard-button').before('<span class="container-countdown" id="1-countdown">&nbsp;</span>');
    $('#' + objectID + '-object .dashboard-button').removeClass('verkocht-button').removeClass('biednu-button').removeClass('toegewezen-button').removeClass('hoogste-button').addClass('verkochtondervoorbehoud-button').html('Verkocht onder voorbehoud').css('color','#f1f1f1');
}

function statusBinnenkortWebshop(objectID)
{
    $('#' + objectID + '-object').removeClass('dashboard-item-verkocht').removeClass('dashboard-item-toegewezen').removeClass('dashboard-item-webshop').removeClass('dashboard-item-hoogstebod').removeClass('dashboard-item-overboden').removeClass('dashboard-item-weshop');
    $('#' + objectID + '-countdown').parent().children('span').remove();
    $('#' + objectID + '-object .dashboard-button').before('<span class="container-countdown" id="1-countdown">&nbsp;</span>');
    $('#' + objectID + '-object .dashboard-button').removeClass('verkocht-button').removeClass('biednu-button').removeClass('toegewezen-button').removeClass('hoogste-button').addClass('binnenkortinwebshop-button').html('Binnenkort in Webshop').css('color','#fff');
}

function statusToegewezen(objectID)
{
    $('#' + objectID + '-object').removeClass('dashboard-item-verkocht').removeClass('dashboard-item-toegewezen').removeClass('dashboard-item-webshop').removeClass('dashboard-item-hoogstebod').removeClass('dashboard-item-overboden').removeClass('dashboard-item-toegewezen');
    $('#' + objectID + '-countdown').parent().children('span').remove();
    $('#' + objectID + '-object .dashboard-button').before('<span class="container-countdown" id="1-countdown">&nbsp;</span>');
    $('#' + objectID + '-object .dashboard-button').removeClass('verkocht-button').removeClass('biednu-button').removeClass('toegewezen-button').removeClass('hoogste-button').addClass('wachtenoptoewijzing-button').html('Wachten op toewijzing').css('color','#fff');
    
}

