/**
 * Milisegundos de espera para subir 1px.
 */
var retardoDespl = 20; //
/**
 * Milisegundos de espera entre cada "animacion" de 1 fila completa.
 */
var intervaloDisp = 2000;
/**
 * Pixels de ancho de 2 filas.
 */
var anchoPxFila = 46;
/**
 * Locale por defecto del cliente en caso de no especificarlo.
 */
var defaultLocaleClient = "en";

/**
 * Script que introduce la animacion a la informacion de las ultimas busquedas de la bolsa
 * de almacenaje.
 */
jQuery(document).ready(function() {
    getLastSearches();
});

/**
 * Realiza una peticion al servidor para recuperar el listado de ultimas busquedas.
 */
function getLastSearches() {
    if (!localeClient) {
        localeClient = defaultLocaleClient;
    }

    var data = '{"action":"WarehouseLastSearches","method":"get","data":{"locale":"' + localeClient + '"},"type":"rpc","tid":1}';

    jQuery.ajax({
        type: "POST",
        url: "/WTNWEB/servlet/DirectControllerServlet",
        contentType: "application/json",
        data: data,
        dataType:"json",
        success: callSuccess
    });
}

/**
 * Se realizara la llamada cuando la respuesta de la peticion Ajax haya sido satisfactoria.
 *
 * @param response Con la respuesta del servidor
 */
function callSuccess(response) {
    if (response.result.success === true) {
        fillLastSearches(response.result.data.lastSearchesList);
        setTimeout('moverFilaPixelArriba(' + anchoPxFila + ')', intervaloDisp);
    }
}

/**
 * Rellena la estructura con la informacion de las ultimas busquedas recuperadas del servidor.
 *
 * @param lastSearchesList Listado de ultimas busquedas
 */
function fillLastSearches(lastSearchesList) {

    if (lastSearchesList.length > 0) {

        jQuery("#top-searches").height(jQuery("#necesitanAlmacenes nav").height());

        var container = jQuery("#top-searches-inner");

        var lastSearch = null;
        var countryName = null;
        var provinceName = null;
        var newElContainer = null;
        var newElCountry = null;
        var newElProvince = null;
        for (var i = 0; i < lastSearchesList.length; i++) {
            lastSearch = lastSearchesList[i];

            countryName = lastSearch.countryName ? lastSearch.countryName : "";
            provinceName = lastSearch.provinceName ? lastSearch.provinceName : "";

            newElContainer = jQuery("<a></a>");
            newElCountry = jQuery("<span class=\"td-pais\">" + countryName + "</span>");
            newElProvince = jQuery("<span class=\"td-prov\">" + provinceName + "</span>");

            container.append(newElContainer);
            newElContainer.append(newElCountry);
            newElContainer.append(newElProvince);
        }

    }

}

/**
 * Realiza la animacion de mover la informacion de las ultimas busquedas un pixel hacia el top del container.
 *
 * @param ctrl Numero de pixels restantes para acabar el movimiento
 */
function moverFilaPixelArriba(ctrl) {

    //Calculamos el valor del margen (negativo) a establecer
    valorMarginTop = (anchoPxFila - ctrl) + 1;

    //Establecemos el margen
    var container = jQuery("#top-searches-inner");
    container.css("marginTop", (-valorMarginTop) + "px");

    //Restamos uno de la variable de control (1 pixel menos)
    ctrl = ctrl - 1;

    if ( ctrl > 0 ) {
        // Si aun no hemos movido todos los pixels, iniciamos otra vez el 
        // mover pixel arriba indicando un pixel menos
        setTimeout('moverFilaPixelArriba(' + ctrl + ')', retardoDespl);
    } else {
        //Si hemos movido todos los pixels, volvemos a establecer el margen a 0 (volver a bajar el div)
        container.css("marginTop", "0px");
        
        // Movemos las dos primeras filas abajo del todo de la tabla
        moveElementToTheEnd(container);
        moveElementToTheEnd(container);
        
        //Iniciamos la animación desde el principio (anchoPxFila) 
        setTimeout('moverFilaPixelArriba(' + anchoPxFila + ')', intervaloDisp );
    }

}

/**
 * Mueve el primer elemento de un container al final de éste.
 *
 * @param container Contenedor de los elementos
 */
function moveElementToTheEnd(container) {
    var firstElement = container.find(":first");
    firstElement.remove();
    container.append(firstElement);
}
