var busy = false;
var selected_filter = false;
var stock_box = false;

$(function()
{
    $('#changelanguage').click(function()
    {
        $('#changelanguagewrapper').toggle();
        return false;
    });

    $('input.jQupdate').change(function()
    {
        $('#cartForm').submit();
    });
});

function rateImage(image_id, mark)
{
    busy = getBusyOverlay(document.getElementById('mainPictureWrapper'), {color:'#ffffff',opacity:0.8});
    $.post('/ajax/' + image_id + '/' + mark + '/rateimage.html', function(data) {$('#ajaxPictureWrapper').html(data);});
}

function toggleFilter(id)
{
    if ($('.' + id))
    {
        $('.' + id).toggle();
    }
    return false;
}

function deselectFields(field)
{
    if ($('input.' + field))
    {
        $('input.' + field).attr('checked', false);
    }

    $('#filter_pager').val(0);

    filterList();

    return false;
}

$(function()
{
    // Bind the event.
    $(window).hashchange( function()
    {
        if ($('#filter_history') && $('#maxprice') && $('#itemsPerPage') && $('#itemsPerPage').val() > 0)
        {
            // zet alle merken uit, enkel die in de URL staan zetten we aan
            $('input.filter_brand').attr('checked', false);

            brands_url = getUrlVars()["brands"];

            if (brands_url)
            {
                brands = brands_url.split("_");
                for(var i = 0; i < brands.length; i++)
                {
                    $('#' + brands[i]).attr('checked', true);
                }
            }

            // zet alle types uit, enkel die in de URL staan zetten we aan
            $('input.filter_type').attr('checked', false);

            types_url = getUrlVars()["types"];

            if (types_url)
            {
                type = types_url.split("_");
                for(var i = 0; i < type.length; i++)
                {
                    $('#' + type[i]).attr('checked', true);
                }
            }

            // zet alle voorraad uit, enkel die in de URL staan zetten we aan
            $('input.filter_stock').attr('checked', false);

            stock_url = getUrlVars()["stock"];

            if (stock_url)
            {
                stock = stock_url.split("_");
                for(var i = 0; i < stock.length; i++)
                {
                    $('#' + stock[i]).attr('checked', true);
                }
            }

            // zet alle kenmerken uit, enkel die in de URL staan zetten we aan
            $('input.filter_km').attr('checked', false);

            kw_url = getUrlVars()["kw"];

            if (kw_url)
            {
                kw = kw_url.split("_");
                for(var i = 0; i < kw.length; i++)
                {
                    $('#' + kw[i]).attr('checked', true);
                }
            }

            sortfield = getUrlVars()["sort"];
            if (parseInt(sortfield) > 0)
            {
                $('#filter_sort').val(sortfield);
            }

            pagerfield = getUrlVars()["pager"];
            if (parseInt(pagerfield) > 0)
            {
                $('#filter_pager').val(pagerfield);
            }

            itemsfield = getUrlVars()["items"];
            if (parseInt(itemsfield) > 0)
            {
                $('#filter_perpage').val(itemsfield);
            }

            pricerange = getUrlVars()["pricerange"];
            if (pricerange)
            {
                pr = pricerange.split("-");

                if (parseInt(pr[0]) >= 0 && parseInt(pr[1]))
                {
                    $("#slider-range").slider("option", "values", [pr[0], pr[1]]);
                    $('#minprice').val(pr[0]);
                    $('#maxprice').val(pr[1]);

                    $('#min_price_info').html(parseInt(pr[0]));
                    $('#max_price_info').html(parseInt(pr[1]));
                }
            }

        	res = getUrlVars()["res"];

        	if (res)
        	{
                re = res.split("-");

                if (parseInt(re[0]) >= 0 && parseInt(re[1]))
                {
                    $("#slider-range-res").slider("option", "values", [re[0], re[1]]);
                    $('#minres').val(re[0]);
                    $('#maxres').val(re[1]);

                    $('#min_res_info').html(parseInt(re[0]));
                    $('#max_res_info').html(parseInt(re[1]));
                }
            }

            updateFilter();
        }
    })
    // Trigger the event (useful on page load).
    $(window).hashchange();
});

function resetPrice()
{
    $("#slider-range").slider("option", "values", [$("#slider-range").slider("option", "min"), $("#slider-range").slider("option", "max")]);

    $('#minprice').val($("#filter_price_min").val());
    $('#maxprice').val($("#filter_price_max").val());

    filterList();
	return false;
}

function resetRes()
{
    $("#slider-range-res").slider("option", "values", [$("#slider-range-res").slider("option", "min"), $("#slider-range-res").slider("option", "max")]);

    $('#minres').val($("#filter_res_min").val());
    $('#maxres').val($("#filter_res_max").val());

    filterList();
	return false;
}

function getUrlVars()
{
    var vars = [], hash;

    // searchfield
    if (window.location.href.match('searchfield'))
    {
        var hashes = window.location.href.slice(window.location.href.indexOf('#') + 2).split('&');
    }
    else
    {
        var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    }

    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}

function filterList(filter_id)
{
    selected_filter = filter_id;

    var checked_boxes = $('input:checked');
    url_add = '?';

    brands = '';
    types = '';
    stock = '';
    kw = '';

    for (i=0; i<checked_boxes.length;i++)
    {
        if ($('#' + checked_boxes[i].id).hasClass('filter_brand'))
        {
            if (brands == '')
            {
                brands = checked_boxes[i].id;
            }
            else
            {
                brands = brands + '_' + checked_boxes[i].id;
            }
        }
        if ($('#' + checked_boxes[i].id).hasClass('filter_type'))
        {
            if (types == '')
            {
                types = checked_boxes[i].id;
            }
            else
            {
                types = types + '_' + checked_boxes[i].id;
            }
        }
        if ($('#' + checked_boxes[i].id).hasClass('filter_stock'))
        {
            if (stock == '')
            {
                stock = checked_boxes[i].id;
            }
            else
            {
                stock = stock + '_' + checked_boxes[i].id;
            }
        }
        if ($('#' + checked_boxes[i].id).hasClass('filter_km'))
        {
            if (kw == '')
            {
                kw = checked_boxes[i].id;
            }
            else
            {
                kw = kw + '_' + checked_boxes[i].id;
            }
        }
    }
    url_add = url_add + 'brands=' + brands + '&types=' + types + '&stock=' + stock + '&kw=' + kw;

    if ($('#maxprice'))
    {
        url_add = url_add + '&pricerange=' + $('#minprice').val() + '-' + $('#maxprice').val();
    }

    if ($('#maxres') && $('#maxres').val() > 0)
    {
        url_add = url_add + '&res=' + $('#minres').val() + '-' + $('#maxres').val();
    }

    url_add = url_add + '&pager=' + $('#filter_pager').val();
    url_add = url_add + '&sort=' + $('#filter_sort').val();
    url_add = url_add + '&items=' + $('#filter_perpage').val();

    $('#filter_history').val(document.location.href);
    document.location.href = '#' + url_add;

    $('#clearFilters').show();
}

function updateFilter()
{
    busy = getBusyOverlay(document.getElementById('center'), {color:'#ffffff',opacity:0.5});

    qs = '';
    query_string = document.location.href.split("#");
    if (query_string.length == 2)
    {
        qs = query_string[1];
    }

    $.post($('#productListFilter').attr('action') + qs, $('#productListFilter').serialize(), function(data)
    {
        if (data && data.status == 'false')
        {
            alert('Invalid');
        }
        else
        {
        	var filterdata = data;
            $.post('/ajax/' + $('#filter_url').val() + '/filterlist.html' + qs, $('#productListFilter').serialize(), function(data) {$('#ajaxFilterWrapper').html(data); updateFilters(filterdata); busy.remove();});
        }
    }, "json");
}
function updateFilters(data)
{
    if (data.args && data.args.length > 0 && data.status == 'true')
    {
        var todisable = $('input.filter_checkbox'); //.attr('disabled', 'disabled');

        for (i=0; i<todisable.length;i++)
        {
            if ($('#' + todisable[i].id).hasClass(selected_filter))
            {
            }
            else
            {
                $('#' + todisable[i].id).attr('disabled', 'disabled');
                $('#li_' + todisable[i].id).addClass('disabled');
                $('.amount_info_' + todisable[i].id).html('0');

                $('#li_' + todisable[i].id).hide();
            }
        }

        for (i=0; i<data.args.length;i++)
        {
            if ($('#' + data.args[i].value.WaardeID))
            {
                $('#' + data.args[i].value.WaardeID).removeAttr('disabled');
                $('#li_' + data.args[i].value.WaardeID).removeClass('disabled');
                $('#li_' + data.args[i].value.WaardeID).show();
            }
            if ($('#amount_' + data.args[i].value.WaardeID))
            {
                $('#amount_' + data.args[i].value.WaardeID).html('(' + data.args[i].value.Aantal + ')');
            }
        }

        $('input:checked').removeAttr('disabled');
    }

    stock_box = false;
}

function reInitStoxBox()
{
    if (stock_box == false)
    {
        $("a.product_stock").fancybox({
    		'transitionIn'	:	'elastic',
    		'transitionOut'	:	'elastic',
    		'speedIn'		:	600,
    		'speedOut'		:	200,
    		'width'         :   400,
    		'height'        :   600,
    		'overlayShow'	:	false
    	});

    	stock_box = true;
    }
}

function saveItem(oForm)
{
//    busy = getBusyOverlay(oForm);

    $(".error").removeClass('error');
    $(".errorImg").removeClass('errorImg');

    $('#ajaxErrorWrapper').hide();

    $.post(oForm.action, $(oForm).serialize(), function(data)
    {
        if (data.status == 'false')
        {
            ajaxFormErrorHandling(data);
        }
        else
        {
            formHandling(data);
        }
    }, "json");

    return false;
}
function saveFileItem(oForm)
{
//    busy = getBusyOverlay(oForm);

    if ($('#file').val() == '')
    {
        alert('No image');
        return false;
    }

    $(".error").removeClass('error');
    $(".errorImg").removeClass('errorImg');

    $('#ajaxErrorWrapper').hide();

    $.post($('#validate_url').val(), $(oForm).serialize(), function(data)
    {
        if (data.status == 'false')
        {
            ajaxFormErrorHandling(data);
        }
        else
        {
            fileFormHandling(data);
        }
    }, "json");

    return false;
}

function ajaxFormErrorHandling(json)
{
    if (json.errors.length > 0 && json.status == 'false')
    {
        $('#ajaxErrorWrapper').show();
        $('#ajaxErrorWrapper').html('<div class="errorWrapper" id="errorWrapper">&nbsp;</div>');
        var inhtml = '';

        for (i=0; i<json.errors.length;i++)
        {
            if ($(json.errors[i].fieldname))
            {
                if ($('#img_' + json.errors[i].fieldname))
                {
                    $('#img_' + json.errors[i].fieldname).addClass('errorImg');
                }
                $('#' + json.errors[i].fieldname).addClass('error');
            }

            inhtml = inhtml + '<p>' + json.errors[i].message + '</p>';
        }
        $('#errorWrapper').html(inhtml);

        $('html, body').animate({scrollTop:0}, 500);
    }
}

function formHandling(json)
{
    if (json.status == 'true')
    {
        if (json.location != '')
        {
            window.location = json.location;
        }
    }
}

function fileFormHandling(json)
{
    if (json.status == 'true')
    {
        $('#fileForm').removeAttr('onsubmit');
        $('#fileForm').submit();
    }
}
