/******************************************************************************
 * Clase que controla la galería de fotos
 */
var GaleriaDeImagenes = function(){ return this.construct.apply(this, arguments); };
GaleriaDeImagenes.prototype = {
    className : null,

    galeria : null,
    numFotos : 0,

    fotoActual : 0,

    diapositiva : null,
    
    construct : function (className) {
        this.className = className;
    },
    prepare : function () {
        // SACAMOS LOS LINKS NORMALES
        $("#anchor").remove();
        //$("#anchor").hide();
        if (true === this.recuperarGaleria()) {

            // COLOCAMOS LOS BOTONES
            var contenedor = $("#links");
            contenedor.append('<input type="button" id="anterior"><input type="button" class="" id="diapositiva"><input type="button" id="siguiente">');

            var closure = this;
            var diapositiva = $('#diapositiva');
            diapositiva.click( function() {
                if (closure.diapositiva) {
                    // diapositiva.css('background-position', '0% 0%');
                    window.clearInterval(closure.diapositiva);
                    closure.diapositiva = null;

                    $('#diapositiva').bind('mouseover', function () { $('#infoCmds').text('Activar diapositiva'); });
                } else {
                    // diapositiva.css('background-position', '0% 50%');
                    closure.diapositiva = window.setInterval(function () {
                        closure.fotoActual++;
                        if (closure.fotoActual >= closure.numFotos) { closure.fotoActual = 0; }
                        return closure.cambiarImagen();
                    }, 6000);
                    closure.fotoActual++;
                    if (closure.fotoActual >= closure.numFotos) { closure.fotoActual = 0; }
                    $('#diapositiva').bind('mouseover', function () { $('#infoCmds').text('Desactivar diapositiva');});
                    return closure.cambiarImagen();
                }
            }).bind('mouseover', function () { $('#infoCmds').text('Activar diapositiva');
            }).bind('mouseout', function () { $('#infoCmds').text(''); });;
            var anterior = $('#anterior');
            anterior.click( function() {
                if (closure.diapositiva) {
                    // diapositiva.css('background-position', 'inherit');
                    window.clearInterval(closure.diapositiva);
                    closure.diapositiva = null;
                }
                closure.fotoActual--;
                if (closure.fotoActual < 0) { closure.fotoActual = closure.numFotos-1; }
                return closure.cambiarImagen();
            }).bind('mouseover', function () { $('#infoCmds').text('Anterior');
            }).bind('mouseout', function () { $('#infoCmds').text(''); });;
            var siguiente = $('#siguiente');
            siguiente.click( function() {
                if (closure.diapositiva) {
                    // diapositiva.css('background-position', 'inherit');
                    window.clearInterval(closure.diapositiva);
                    closure.diapositiva = null;
                }
                closure.fotoActual++;
                if (closure.fotoActual >= closure.numFotos) { closure.fotoActual = 0; }
                return closure.cambiarImagen();
            }).bind('mouseover', function () { $('#infoCmds').text('Siguiente');
            }).bind('mouseout', function () { $('#infoCmds').text(''); });;
        }
    },
    recuperarGaleria : function () {
        var imagenes = $('img.'+this.className);
        //var imagenes = $('img').filter('.'+this.className);
        var galeria = [];
        $.each( imagenes, function(i, imagen){
            if (imagen.src != null) {
                galeria[i] = imagen.src;
            }
        });

        this.galeria = galeria;
        this.numFotos = galeria.length || 0;

        return (this.numFotos > 1);
    },
    cambiarImagen : function () {
        var closureSrcImg = this.galeria[this.fotoActual];
        $("#imagenPropiedad").fadeOut("slow", function () {
            this.src = closureSrcImg;
            return $("#imagenPropiedad").fadeIn("slow");
        });
        return this;
    }
};

$(window).ready(function() {
    // se carga el manejador de ventana
    $.getScript('/public/js/Win.js', function () {
        Win.init( $('#sombraWin'), $('#contenidoWin'), $('#cabeceraWin'), $('#cuerpoWin') );
    });
    
    // se ocultan los formularios
    $('#formConsulta').hide();
    $('#formRecomendar').hide();

    // se inicia la galería
    var galeria = new GaleriaDeImagenes('galeria');
    galeria.prepare();

    // se agregan los botones sobre la imagen
    var cmdsFicha = $('#cmdsFicha');
    if (cmdsFicha.length > 0) {
        // informa sobre la función del botón
        var infoCmds = $('<span id="infoCmds"></span>');
        // el botón de volver al listado
        var volverAlListado = $('#volverAlListado');
        var volver = $('<input type="button" id="volverListado" class="cmdFicha" value="" />');
        volver.bind('click', function () {
            window.location.href = this.name;
            return false;
        }).bind('mouseover', function () { infoCmds.text('Retroceder a la pagina anterior');
        }).bind('mouseout', function () { infoCmds.text('');
        }).attr('name', volverAlListado.attr('href'))
        volverAlListado.remove();
        // botón consultar por propiedad
        var consultar = $('<input type="button" id="openFormConsulta" class="cmdFicha" value="" />');
        consultar.bind('click', function () {
            Win.show('Realizar una consulta sobre esta propiedad', '/ficha/consulta/numero/'+idFicha);
        }).bind('mouseover', function () { infoCmds.text('Realizar una consulta sobre esta propiedad');
        }).bind('mouseout', function () { infoCmds.text(''); });
        // botón recomendar pagina
        var recomendar = $('<input type="button" id="cmdRecomendar" class="cmdFicha" value="" />');
        recomendar.bind('click', function () {
            Win.show('Recomendar esta pagina', '/ficha/recomendar/numero/'+idFicha);
        }).bind('mouseover', function () { infoCmds.text('Recomendar esta pagina');
        }).bind('mouseout', function () { infoCmds.text(''); });
        // botón imprimir ficha
        var imprimir = $('<input type="button" id="printFicha" class="cmdFicha" value="" />');
        imprimir.bind('click', function () {
            window.print();
        }).bind('mouseover', function () { infoCmds.text('Imprimir ficha');
        }).bind('mouseout', function () { infoCmds.text(''); });
        // se coloca la zona de mensajes y los botones
        cmdsFicha.append(infoCmds).append(volver).append(imprimir).append(recomendar).append(consultar);
    }
});
