String.prototype.endsWith = function (s) { return this.length >= s.length && this.substr(this.length - s.length) == s;} 

var vehicleModal = {
        message: null,
        open: function (dialog) {
            dialog.overlay.fadeIn(200, function () {
                dialog.container.fadeIn(200, function () {
                    dialog.data.fadeIn(200);
                });
            });
        },
        close: function (dialog) {
            dialog.data.fadeOut('fast', function () {
                dialog.container.fadeOut('fast',   function () {
                    dialog.overlay.fadeOut('fast', function () {
                        $.modal.close();
                    });
                });
            });
        }
    };


$(document).ready(function() {

    $(".Hall tbody tr td.Clickable").click(function (e) {
        e.preventDefault();
        displayVehicle($(this).parents().attr("id"));
    });

    var immat = getParameterValueFromUrl(document.location.href,"v");
    if (immat != null && immat.length > 0) {
        displayVehicle(immat);
    }

    $("#filter_marque").change(function() {
        $aDesactiver = $("select[name='modele']:enabled");
        $aDesactiver.addClass("Invisible");
        $aDesactiver.attr('disabled', true);
        $selectedMarque = $(this).val().replace(" ","-");
        $selectedMarque = ($selectedMarque==""?"none":$selectedMarque);
        $("#modele-"+$selectedMarque).removeClass("Invisible");
        $("#modele-"+$selectedMarque).attr("disabled",false);
    });

    // Boutons du filtre
    $(".CompleteListButton").click(function() {
        document.location="hall.php";
    });
    $(".FilterButton").click(function() {
        $("form").submit();
    });

    // Tri au niveau de l'entête
    $("#EnergyHeader").click(function() { sort("energie"); });
    $("#IDHeader").click(function() { sort("id"); });
    $("#MakeHeader").click(function() { sort("nom"); });
    $("#DamagesHeader").click(function() { sort("dommages"); });
    $("#PriceHeader").click(function() { sort("prix"); });
    $("#MileageHeader").click(function() { sort("kilometrage"); });
    $("#ColorHeader").click(function() { sort("coloris"); });
    $("#DptHeader").click(function() { sort("dpt"); });
    $("#MECHeader").click(function() { sort("mec"); });
    
    /* DEPRECATED */
    $(".FilterArrowsBlock a").click(function() {
        $sort = $(this).attr("name");
        $order = $(this).att("title");
        
    });
});

function displayVehicle(immat) {
    $.get("modals/vehicle.modal.php?v="+immat, function(data){
        $(data).modal({
            minHeight:620,
            close: true,
            escClose: true,
            closeHTML: "",
            position: ["5%"],
            onOpen: vehicleModal.open,
            onShow: vehicleModal.show,
            onClose: vehicleModal.close
        });
    });
}

function sort(by) {
    var currentSort = getParameterValueFromUrl(document.location.href,"sort");
    var currentOrder = getParameterValueFromUrl(document.location.href,"order");
    var newOrder = "asc";
    if (currentOrder == "asc" && currentSort == by) {
        newOrder = "desc";
    }
    var url = removeParameterFromUrl(document.location.href,"sort");
    url = removeParameterFromUrl(url,"order");
    var sep = "&";
    if (url.endsWith(".php") || url.endsWith("\\/")) {
        sep = "?";
    }
    else if (url.endsWith("?")) {
        sep = "";
    }
    document.location = url+sep+"sort="+by+"&order="+newOrder;
}

function getParameterValueFromUrl(url,param) {
    var regexS = "[\\?&]"+param+"=([^&#]*)";
    var regex = new RegExp (regexS);
    var results = regex.exec(url);
    if (results==null) {
        return null;
    }
    else {
        return results[1];
    }
}

function removeParameterFromUrl(url,param) {
    var regexS = "[\\?&]("+param+"=[^&#]*[&]?)";
    var regex = new RegExp (regexS);
    var results = regex.exec(url);
    if (results==null) {
        return url;
    }
    else {
        return url.replace(results[1],"");
    }
}
