$(document).ready(function() {
    /* Start top menu dropdown */
    function addMega() {
        $(this).addClass("expanded");
        $("div#topmenu div#right").addClass("expanded");
        $(this).children("div.subnav").addClass("subnav-visible");
    }

    function removeMega() {
        $(this).removeClass("expanded");
        $("div#topmenu div#right").removeClass("expanded");
        $(this).children("div.subnav").removeClass("subnav-visible");
    }

    var megaConfig = {
        interval: 50,
        sensitivity: 1,
        over: addMega,
        timeout: 50,
        out: removeMega
    };

    $("li.subnav").hoverIntent(megaConfig)
    /* End top menu dropdown */

    /* Start slideshow */
    $('#slides').before('<div id="pager">').cycle({
        fx: 'fade',
        pause: 1,
        pager: '#pager'
    });

    $("#provinces-link").mouseover(function() {
        $(".type-links #categories").hide();
        $(".type-links #provinces").show();

        $("#categories-list").hide();
        $("#provinces-list").show();
    });

    $("#categories-link").mouseover(function() {
        $(".type-links #categories").show();
        $(".type-links #provinces").hide();

        $("#categories-list").show();
        $("#provinces-list").hide();
    });
    /* End slideshow */

    /* Start top3 items */


    $(".category_link, .province_link").hover(function() {
        loadTopThreeItems($(this));
    });


    /* End top3 items */
    
    loadTopThreeItems($('a.category_link').eq(0));
});

var topThreeXmlHttpRequest = null;
var topThreeLastCallTimestamp = 0;
function loadTopThreeItems(input) {
    if (Number(topThreeLastCallTimestamp == 0 || (Number(new Date()) - 500 > topThreeLastCallTimestamp))) {
        if (null !== topThreeXmlHttpRequest) {
            topThreeXmlHttpRequest.abort();
            topThreeXmlHttpRequest = null;
        }

        topThreeLastCallTimestamp = Number(new Date());
        var key = $(input).text().replace("&", "-").replace("!", "").replace("", "");

        var currentTopThreeIds = dicTopThreeIds[key]

        $("#topThreeItemsTitle").html($(input).text());
        
        if ($(input).attr("class") == "category_link") {
            $("#topThreeItemsAllLink").attr("href", dicTopThreeUrls[key]);
        } else {
        $("#topThreeItemsAllLink").attr("href", dicTopThreeUrls[key]);
        }
        $("#topThreeItemsAllLink").text("Bekijk alle uitjes in " + $(input).text());

        $.ajax({
            type: "GET",
            url: "/home/topthree",
            data: "ids=" + currentTopThreeIds,
            dataType: "json",
            beforeSend: function(request) {
                $("#top3_outing_result").hide();

                //$("#top3_outing_loader").fadeIn("slow");
                topThreeXmlHttpRequest = request;
            },
            success: function(topThreeResult) {
                var resultHtml = "";
                for (var i = 0, len = topThreeResult.length; i < len; ++i) {
                    resultHtml += "<div class=\"item\">";
                    //var image = "/imagesizer/imageresizer.ashx?operation=crop&width=202&height=119&anchor=center&file=" + topThreeResult[i].Thumbnail.substring(1);
                    var image = "http://outings.monsterevents.nl.s3.amazonaws.com/" + topThreeResult[i].Thumbnail + "_202x120_rounded.png";
                    resultHtml += "<a href='/outing/detail/" + topThreeResult[i].ID + "/" + cleanStringUrl(topThreeResult[i].UrlSlug) + "'><div class=\"loadable-image thumb202x120\" src=\"" + image + "\" onload=\"img = $(arguments[0]);\"></div></a>";

                    
                    

                    var name = topThreeResult[i].Name;
                    if (name.length > 25) {
                        name = name.substring(0, 20) + "...";
                    }
                    resultHtml += "<a href='/outing/detail/" + topThreeResult[i].ID + "/" + cleanStringUrl(topThreeResult[i].UrlSlug) + "'><h3>" + name + "</h3></a>";
                    var descriptionShort = topThreeResult[i].DescriptionShort;
                    if (descriptionShort.length > 80) {
                        descriptionShort = descriptionShort.substring(0, 80) + "...";
                    }
                    resultHtml += "<p>v.a. &euro;" + topThreeResult[i].PriceForDisplay + " p.p.<br/>" + descriptionShort + "</p>";
                    resultHtml += "<a class='more' href='/outing/detail/" + topThreeResult[i].ID + "/" + cleanStringUrl(topThreeResult[i].UrlSlug) + "'>Lees meer</a>";
                    resultHtml += "</div>";
                }
                $("#top3_outing_result").html(resultHtml);

                //$("#top3_outing_loader").hide();
                $("#top3_outing_result").fadeIn("slow");
                LoadAllImages();
            },
            error: function(xhr, desc, exceptionobj) {

                //$("#top3_outing_loader").hide();
                $("#top3_outing_error").fadeIn("slow");
                alert(xhr.responseText);
            }

        });
        $("#top3_outing_loader").hide();
    }
}

function cleanStringUrl(input) {
    if (input == null)
        return input;
                input = input.toLowerCase();
                input = trimAll(input);
                input = input.split(' ').join('-');
                
                
                
                var whitelistcharacters = "abcdefghijklmnopqrstuvwxyz-0123456789";
                var previousChar = '';
                var newString = "";

                
                for (i=0;i<input.length;i++) {
                    //var currentChar = input.substring(counter - 1, counter)
                    var currentChar = input.substring(i, i+1)
                    if (whitelistcharacters.indexOf(currentChar) > -1) {
                        if (currentChar == '-' && currentChar == previousChar) {
                            continue;
                        }

                        newString += currentChar
                        previousChar = currentChar
                    }
                }
                
            return newString;
}

function trimAll(sString) {
    while (sString.substring(0, 1) == ' ') {
        sString = sString.substring(1, sString.length);
    }
    while (sString.substring(sString.length - 1, sString.length) == ' ') {
        sString = sString.substring(0, sString.length - 1);
    }
    return sString;
}






