(function ($) {
	$.fn.popupTool = function (default_opt) {
        var opt = $.extend({
			closeTrigger: '#Close',
			attrPopTarget: 'href',
            bodyBlockClass: 'PopUpMode'
        }, default_opt);

        var tool = $(this);
		var popID = $(this).attr(opt.attrPopTarget);
		
		tool.click(function(){
			ShowPopUp();
		});
		
		$(popID).find('[href="#Close"]').click(function(e){
			e.preventDefault();
			HidePopUp();
		});
		
		function ShowPopUp(){
			$(popID).show();
			$('body').addClass(opt.bodyBlockClass);
		}
		function HidePopUp(){
			$(popID).hide();
			$('body').removeClass(opt.bodyBlockClass);
		}
};

$.fn.popupCreator = function (options) {
    var defaults = {
        carrousel: '.pop-liston',
        carrouselItems: '.items .item',
        mainImage: '.pop-foto img',
        hasTabs: false
    };

    // opciones
    var opt = $.extend(defaults, options);
    // slider machin
    var obj = $(this);

    // init al container de imagenes grandes
    obj.find(opt.carrouselItems).click(function () {
        var imageSrc = $(this).find('img').attr("src");
        imageSrc = imageSrc.replace("thumbs/", "");

        var imageNew = new Image();
        imageNew.src = imageSrc;

        obj.find('.loading').show();
        obj.find('.pop-foto').css('opacity', 0.6)
					.empty().append(imageNew);

        imageNew.onload = function () {
            obj.find('.pop-foto').css('opacity', 1);
            obj.find('.loading').hide();
        }

        /*obj.find(opt.mainImage).fadeOut(200, function(){
        obj.find(opt.mainImage).attr("src", imageSrc);
        obj.find(opt.mainImage).onload = function () {
        obj.find(opt.mainImage).fadeIn();				
        }
        });	*/
    });

    // tabs
    if (opt.hasTabs) {
        // primer boton tab como activado
        obj.find('.boton').eq(0).addClass("activo");

        obj.find(opt.carrouselItems).hide().addClass("disabled");
        obj.find(opt.carrouselItems + '.tab1').removeClass("disabled").show();

        obj.find('.boton').click(function () {
            // mostrar items de tab activo								
            var clase = $(this).attr("class").replace("boton ", ".");
            obj.find(opt.carrouselItems).addClass("disabled").hide();
            obj.find(opt.carrouselItems + clase).removeClass("disabled").show();
            obj.find(opt.carrouselItems + clase).eq(0).click();

            // cambiar boton activo
            obj.find('.boton').removeClass("activo");
            $(this).addClass("activo");

            // resetear slider
            obj.find('.items').css('left', 0);

            obj.find(opt.carrousel).carrouseltool({
                btnLeft: '.btnizq',
                btnRight: '.btnder',
                items: opt.carrouselItems,
                animateSpeed: 500,
                itemWidth: 170
            });
        });
    }

    // crear carrousel del popup
    obj.find(opt.carrousel).carrouseltool({
        btnLeft: '.btnizq',
        btnRight: '.btnder',
        items: opt.carrouselItems,
        animateSpeed: 500,
        itemWidth: 170
    });

}

$.fn.carrouseltool = function (options) {
    var defaults = {
        itemsContainer: '.items',
        items: '.items .item',
        btnLeft: '.btnizq',
        btnRight: '.btnder',
        animateSpeed: 500,
        itemWidth: 1000,
        visibleItems: 5
    };

    // opciones
    var opt = $.extend(defaults, options);
    // slider machin
    var obj = $(this);

    // init	
    var actualIndex = 0;
    obj.find(opt.btnLeft).hide();
    if (obj.find(opt.items + ':not(.disabled)').length <= opt.visibleItems) {
        obj.find(opt.btnRight).hide();
    } else {
        obj.find(opt.btnRight).show();
    }

    // click handlers
    obj.find(opt.btnLeft).click(function () {
        actualIndex--;
        if (actualIndex >= 0) {
            slideItems(actualIndex);
        }
        updateNavs(actualIndex);
    });

    obj.find(opt.btnRight).click(function () {
        actualIndex++;
        var slideIndex = obj.find(opt.items + ':not(:hidden)').length - opt.visibleItems;
        if (actualIndex <= slideIndex) {
            slideItems(actualIndex);
        }
        updateNavs(actualIndex);
    });

    function slideItems(index) {
        obj.find(opt.itemsContainer).stop().animate({ 'left': -index * opt.itemWidth }, opt.animateSpeed);
    }

    function updateNavs(index) {
        if (actualIndex == obj.find(opt.items + ':not(:hidden)').length - opt.visibleItems) {
            obj.find(opt.btnRight).hide();
        } else {
            obj.find(opt.btnRight).show();
        }

        if (actualIndex <= 0) {
            obj.find(opt.btnLeft).hide();
        } else {
            obj.find(opt.btnLeft).show();
        }
    }
}

})(jQuery);


