(function($){  

    $.fn.Slider = function(arrImages, options) 
    { 
        var $this = $(this);
        var defaults = {
            timeFadeOut:1000,
            urlpath: '/images',
            id: 'slider'
        };
        var options = $.extend(defaults, options);
        var defaultTime = 3000;
        var frontImg = 0;
        var curr = 0;
        var next_img = 0;
        var countImgLoad = 0;
        var img_loading = null;
        var pause = false;
        var time = null;
        var loading = function()
        {
            if (!img_loading)
                img_loading = $("<div id='loading'></div>")/*.css({'position':'absolute','z-index':1000, 'background-image':'url(img/media-loader.gif)'})*/
                .appendTo('.slideshow');
            $(img_loading).center($this);
        }
        var hide_loading = function()
        {
            if (img_loading)
            {
                $(img_loading).fadeOut();
            }
        }
        var loadImg = function()
        {
            img = document.getElementById(options.id+'img0');
            if (!img.complete)
            {
                window.setTimeout(function(){
                    loadImg();
                }, 200);
            }
            else
            {
                hide_loading();
                $("#"+options.id).css('height', $("#"+options.id+"img0").attr("height")+'px');
                $("#"+options.id+"frases").html('');
                $("<div class='title' style='z-index:1001;position:absolute;display:none'></div>").appendTo("#"+options.id+"frases");
                //$("#"+options.id+"frases").append("<div class='title' style='z-index:1001;position:absolute;display:none'></div>");
                                
                if (arrImages[0].title && arrImages[0].title!=""){
                    if ($.browser.msie){
                        $("#"+options.id+"frases .title").html(arrImages[0].title).fadeIn(function(){
                            this.style.removeAttribute('filter');
                        });
                    }else{
                        $("#"+options.id+"frases .title").html(arrImages[0].title).fadeIn();
                    }
                }
                if (arrImages.length > 1){
                    $("#"+options.id+"img1").css('display','');
                    timeWait = (arrImages[0].time)?arrImages[0].time: defaultTime;
                    time = window.setTimeout(function(){
                        makeSlider();
                    }, timeWait);
                }
            }
			
        }
        
        var linkUrl = function(img)
        {
            parentImg = $(img).parent();
            $(parentImg).attr('href', '#');

            if(arrImages.length > 0){
                if (arrImages[curr].href){
                    $(parentImg).attr('href', arrImages[curr].href);
                }
                _target = '_self';
                if (arrImages[curr].target)	{
                    _target = arrImages[curr].target;
                }
                $(parentImg).attr('target', _target);
            }

            else{
                try{
                    console.log('No existen imágenes asociadas a alguna de las instáncias de animación de la página actual.');
                }catch(ex){}
            }

        }
        
        var initSlider = function(){
            if(arrImages.length > 0){
                var slider = $this;
                
                slider.append("<a style='border:0;padding:0;margin:0' href='#'><img id='"+options.id+"img0' style='z-index:2'/></a>");
                if (arrImages.length > 1)
                    slider.append("<a style='border:0;padding:0;margin:0' href='#'><img id='"+options.id+"img1' src='"+arrImages[1].name+"' style='z-index:1'/></a>");
                linkUrl("#"+options.id+"img0");
                // Positon absolute es obligatoria para garantizar una transición suave entre imágenes.
                $("#"+options.id+"img0, #"+options.id+"img1").css({
                    'position':'absolute',
                    'display':'none',
                    'border':0,
                    'padding':0,
                    'margin':0
                });
                if (arrImages.length > 1){
                    $("#"+options.id+"img0, #"+options.id+"img1").click(function(){
                        if ($(this).parent().attr('href')!="#") return;
                        if (pause)
                        {
                            pause = 0;
                            clearTimeout(time);
                            time = window.setTimeout(function(){
                                makeSlider();
                            }, 500);
                        }
                        else pause = 1;
					
                    });
                }
                $("#"+options.id+"img0").attr('src', arrImages[0].name).fadeIn();
                loading();
                loadImg();
            }
            else{
                try{
                    console.log('No existen imágenes asociadas a alguna de las instáncias de animación de la página actual.');
                }catch(ex){}
            }
        }
        var updateCurrNext = function()
        {
            if (curr + 2 < arrImages.length){
                next_img = curr+2;
                curr++;
            }
            else
            if (curr+1 == arrImages.length){
                curr = 0;
                next_img = 1;
            }
            else // curr+1 == arrImages.length-1
            {
                next_img = 0;
                curr++;
            }
        }
        var makeSlider = function(){
            if (pause) return;
            backImg = (frontImg)?0:1;
            updateCurrNext();
            if (arrImages[curr].title && arrImages[curr].title!=""){
                if ($.browser.msie){
                    $("#"+options.id+"frases .title").html('', function(){
                        this.style.removeAttribute('filter');
                    });   
                }
                
                $("#"+options.id+"frases .title").fadeOut(options.timeFadeOut, function(){
                    $(this).html(arrImages[curr].title);
                    $(this).fadeIn(options.timeFadeOut);
                });
                
            } else {
                $("#"+options.id+"frases .title").css('display','none');
            }
			
            linkUrl("#"+options.id+"img"+backImg);
            $("#"+options.id+"img"+frontImg).animate({
                opacity:"0"
            }, options.timeFadeOut, function(){
		 		
                $(this).css('z-index','1');
                $("#"+options.id+"img"+backImg).css('z-index','2');
		
                $(this).attr({
                    'src':arrImages[next_img].name
                });
                $(this).css({
                    'opacity':1.0
                });
                frontImg = backImg;
                timeWait = (arrImages[curr].time)?arrImages[curr].time: defaultTime;
                time = window.setTimeout(function(){
                    makeSlider();
                }, timeWait);
            });
	 		
        }
        initSlider();
    }
})(jQuery);  

(function($){ 
    $.fn.center = function center(_target){
		
        if (!$(_target).offset() || $(_target).offset() == 'undefined') return;
        leftTarget = $(_target).offset().left;
        topTarget  = $(_target).offset().top;
        widthTarget = $(_target).get(0).offsetWidth;
        heightTarget = $(_target).get(0).offsetHeight;
        widthElem = $(this).get(0).offsetWidth;
        HeightElem = $(this).get(0).offsetHeight;
	
        centerLeft = (leftTarget+widthTarget/2)-widthElem/2;
        centerTop = (topTarget+heightTarget/2)-HeightElem/2;
        $(this).css({
            left:centerLeft,
            top:centerTop
        });
    }
})(jQuery); 
