/* Author: 9000
 */
 (function($) {
  var cache = [];
  // Arguments are image paths relative to the current page.
  $.preLoadImages = function() {
    var args_len = arguments.length;
    for (var i = args_len; i--;) {
      var cacheImage = document.createElement('img');
      cacheImage.src = arguments[i];
      cache.push(cacheImage);
    }
  }
})(jQuery)
$(document).ready(function(){

    //DEFAULT AJAX SETTINS
    $.preLoadImages("/images/top-headerNavH.png","/images/nav-rightH.png","/images/nav-leftH.png");
    
    $.ajaxSetup({
        url:"/ajax/ajaxGateway.cfc"
    })

    //HEADER SLIDER
    var globalTimer;
    var speed = 7000;
    var currentSlide = 0;
    var totalSlides = $("#banners UL LI").length;
    if (totalSlides > 1) {
        globalTimer = setTimeout(nextSlide, speed);
    }
    
    //SET UP TIMER FOR SLIDESHOW
    function nextSlide(){
        clearTimeout(globalTimer);
        if (currentSlide > (totalSlides - 2)) {
            currentSlide = 0;
        }
        else {
            currentSlide++
        }
        goTo(currentSlide);
        globalTimer = setTimeout(nextSlide, speed);
    }
    
    function goTo(current){
        loadImg($("#banners UL LI:eq(" + current + ")").html());
    }
    
    function loadImg(src){
        if ($("#banner img").length > 1) {
            $("#banner img:eq(0)").remove();
        }
        var img = new Image();
        $(img).load(function(){
            $(this).hide();
            $("#banner").append(this);
            $(this).fadeIn("slow");
        }).attr('src', src)
        return false;
    }
    
    //PAGING PRODUCTS + LINKING PRODUCTS
    $(window).hashchange(function(){
        if (getHash() != page) {
            gotoPage(getHash());
        }
    });
    var page = 1;
    var perpage = 10;
    var pages = 1;
    var products = $(".productWrap .product").size();
    var $container = $("#content .productWrap");
    var gap = $(".productWrap .product").first().outerHeight() + 10;
    if (products) {
        resetBrands();
        pages = Math.ceil(products / perpage);
        setUpLinks();
        if (getHash() == '') {
            setHash(1);
        }
        else {
            gotoPage(getHash());
        }
    }
    $("#brands").change(function(){
        if ($("#brands").val() == 0) {
             $(".productWrap .product").addClass("visible").show();
        } else {
            console.log('.product[data-brand!="'+$("#brands").val()+'"]');
            $(".product").addClass("visible").show();
            $(".product[data-brand!='"+$("#brands").val()+"']").removeClass("visible").hide();
        }
        resetPaging();
    })
    $("#search").keyup(function(){
        $(".product").each(function(){
            var name = $(this).data("name");
            var type = $(this).data("type");
            var reference = $(this).data("reference");
            var term = $("#search").val();
            if (term == '') {
                $(this).slideDown(500).addClass("visible").data("search", false);
                resetPaging();
            }
            else {
                if (contains(name, term) || contains(type, term) || contains(reference, term)) {
                    $(this).slideDown(500).addClass("visible").data("search", false);
                    resetPaging();
                }
                else {
                    $(this).slideUp(500).removeClass("visible").data("search", true);
                    resetPaging();
                }
            }
        })
    })
    function resetPaging(){
        products = $(".productWrap .product.visible").size();
        pages = Math.ceil(products / perpage);
        page = 1;
        gotoPage(1);
        setUpLinks();
    }
    function setUpLinks(){
        $(".paging *").remove()
        if (page > 1) {
            $(".paging").append('<a href="#' + (page - 1) + '">&lt;</a>');
        }
        else {
            $(".paging").append('<span>&laquo;</span>');
        }
        for (var i = 1; i <= pages; i++) {
            if (i == page) {
                $(".paging").append('<a class="active" href="#' + i + '">' + i + '</a>');
            }
            else {
                if(pages > 5){
                    if(i < (page+3) && i > (page-3)){
                         $(".paging").append('<a href="#' + i + '">' + i + '</a>');
                    }
                } else {
                    $(".paging").append('<a href="#' + i + '">' + i + '</a>');
                }
                
            }
        }
        if (page != pages) {
            $(".paging").append('<a href="#' + (page + 1) + '">&gt;</a>');
        }
        else {
            $(".paging").append('<span>&gt;</span>');
        }
    }
    function contains(superstring, substring){
        if (superstring.toLowerCase().indexOf(substring.toLowerCase()) != -1) {
            return true;
        }
        else {
            return false;
        }
    }
    function gotoPage(destination){
        var check = destination;
        destination = parseInt(destination);
        if (destination == check && destination >= 1 && destination <= pages) {
            page = destination;
            var margin = (gap * perpage * (destination - 1)) * -1;
            $container.css({
                marginTop: margin
            });
            setUpLinks();
        }
    }
    function resetBrands(){
        $.ajax({
            data: {
                method: "getAllBrands",
                type: parseInt($(".productWindow").data("type"))
            }
        }).success(function(data){
            $("#brands *").remove();
            var result = $.parseJSON(data);
            $("#brands").append('<option value="0">Alle merken</option>');
            for (var o = 0; o < result.length; o++) {
                $("#brands").append('<option value="' + result[o].ID + '">' + result[o].NAME + '</option>');
            }
        })
    }
    //Enhancements detail page
    $("#accordeon .root>span").each(function(){
        $(this).click(function(){
            $(this).parent().find("ul").slideToggle(400);
            $("#accordeon .root ul").not($(this).parent().find("ul")).each(function(){
                $(this).slideUp(400);
            })
        })
    })
})

