/* 
 * Este es un lindo efectito para poner en espera una accion ajax
 * mientras se ejecuta
 * @author Oscar Añón (nova)
 * @version 2009-07-24
 *
 * 
 */
(function(jQuery) {

/**
 * aplicamos el efecto de loading sobre un div para generar el 
 * estado de espera para los ansiosos.
 * @param options {image:imagepath,color:backgroundcolor,success:function}
 * image - es la ruta a la imagen para el efecto
 * color - es el color de fondo def "#ffffff"
 * success - es una funcion que se ejecuta luego de aplicar el efecto
 * esta por compatibilidad
 * @description aplica el efecto loading sobre el div seleccionado
 * 
 */
jQuery.fn.showloading = function(options) {

     var _internal_showloading = function(target,image,color){
        // dimensiones del contenedor
        var h = jQuery('#' + target).height();
        var w = jQuery('#' + target).width();
        var t = (h / 2);

        //h = 0;
        var style = 'position:absolute;top:0px;vertical-align:middle;height:'+h+'px;width:'+w+'px;';
        style += 'z-index:98;background-color:'+color+';filter:alpha(opacity=75);-moz-opacity:0.75;opacity:0.75;';
        var cargando = '<div id="ShowLoading_'+target+'" align="center" style="'+style+'">';
        style = 'position:relative;top:'+t+'px;vertical-align:middle;';
        cargando += '<img style="'+style+'" align="middle" border="0" src="'+image+'" />';
        cargando += '</div>';
        var position = jQuery('#' + target).css('position');

        // fix de la posicion del div contenedor (todo div contenedor tiene que tener posicion)
        if(position == 'static')
            jQuery('#' + target).css('position', 'relative');
        jQuery('#' + target).prepend(cargando);
        jQuery('#' + target).unbind('css');
    }

    if(options == 'remove'){
        var removeID = this.attr('id');
        jQuery('#ShowLoading_' + removeID ).remove();
        return this;
    }


    if (!this.length) {
        // si no hay elemento seleccionado no hacemos nada
        return this;
    }

    if (typeof options == 'function')
        options = { success: options };

    options = jQuery.extend({
        image:  '/html/resources/showloading/spinner.gif',
        color: '#ffffff',
        success: function(){}
    }, options || {});

    // aca se mete el efecto
    //this.unbind();
    _internal_showloading(this.attr('id'),options.image,options.color);

    // si por casualidad se obtiene una funcion se ejecuta luego de aplicar el
    // efecto
    options.success.call();

    return this; // permitimos concatenabilidad de efectos
}

})(jQuery);