////////////////
//
//	Função que abre uma div cobrindo toda a tela bloqueando o site, com função de callback.
//	ex:
//		bloqueia({ speed: "slow", bgcolor: "#000" });
//		bloqueia({ speed: "slow", evento: "fim" });
//
//	OBS: Nescessário plugin Dimension.
//
/////////////
function bloqueia(options,callback){
	var defaults = {
		autor: "Diego Marques",
		versao: 2.1,
		id: "bloqueio",
		evento: "inicio",
		bgColor: "#000",
		opacity: "0.5",
		speed: "normal",
		zIndex: "100",
		cursor: "default",
		animate: true
	}
	options = $.fn.extend({}, defaults, options);

	if ((options.id == "" || options.id == "bloqueio") && !$("#bloqueio").is("div")) $("body").append("<div id=\"bloqueio\" style=\"display:none\"></div>");

	var altura = $(document).height() > $(window).height() ? $(document).height() : $(window).height();

	if (options.evento == "inicio") {
		if ($.browser.msie && $.browser.version == "6.0") $("select:visible").addClass("hiddenForDmBlock").css("visibility", "hidden");
		$("#" + options.id).css({
			background: options.bgColor,
			cursor: options.cursor,
			height: altura,
			left: "0",
			opacity: options.opacity,
			position: "absolute",
			top: "0",
			width: "100%",
			zIndex: options.zIndex
		});
		if (options.animate) {
			$("#" + options.id).fadeIn(options.speed, function() { if (typeof (callback) != "undefined") { callback(); } });
		} else {
			$("#" + options.id).css("display", "block");
			if (typeof (callback) != "undefined") { callback(); }
		}
		carregandoResize = function() {
			altura = $(document).height() > $(window).height() ? $(document).height() : $(window).height();
			$("#" + options.id).css({ height: altura });
		}
		$(window).bind('resize', carregandoResize);
	} else {
		$("select.hiddenForDmBlock").css("visibility", "visible");
		$(window).unbind('resize', carregandoResize);
		if (options.animate) {
			$("#" + options.id).fadeOut(options.speed, function() { if (typeof (callback) == "function") { callback(); } });
		} else {
			$("#" + options.id).css("display", "none");
			if (typeof (callback) == "function") { callback(); }
		}
	}
}


//////////////////
// ScrollPages //
////////////////
$.extend({
	scrollPages: {
		defaults: {
			elementSize: 50,
			elements: 3,
			speed: "slow",
			direction: "up",
			escala: this.elements
		}
	}
});
$.fn.extend({
	scrollPages: function(options){
		options = $.extend({}, $.scrollPages.defaults, options);
		return this.each(function(){
			
			// Definições de variáveis
			var total = $(".scrollMask li",this).length;
			var mask = options.elementSize * options.elements;
			var escala = options.escala > options.elements ? mask : options.escala * options.elementSize;
			var area = options.elementSize * total;
			var animation = false;
			var obj = this;
			var dimension = options.direction == "left" ? "width" : "height";
			var side = new Array();
			side[0] = options.direction;
			side[1] = options.direction == "up" ? "down" : "right";
			
			//$(".scrollButtom",this).css("opacity",".4");
			if(total > options.elements){				
				$(".scrollButtom[rel*='"+options.direction+"']",obj).css("visibility","hidden");
			}else{
				$(".scrollButtom",this).css("visibility","hidden");
				mask = area;
			}
			
			// Aplicação de estilos
			$(".scrollMask",this).css({"width": mask + "px", overflow: "hidden"}); // Máscara
			$(".scrollMask ul",this).css({"width": area + "px", marginTop: 0}); // UL
			$(".scrollMask li",this).css({"width": options.elementSize + "px", display: "block"}); // LI

			// Função que executa a rolagem
			var rolagem = function(direction){

				// Variáveis
				var margem = -parseInt($(".scrollMask ul",obj).css("margin-"+(options.direction == "up" ? "top" : "left")));

				var intervalo = direction == side[1]
					? ( margem + ( mask * 2 ) ) < area
						? mask
						: area - (margem + mask)
					: ( margem - mask ) < 0
						? margem
						: mask
				;
				
				intervalo = intervalo > escala ? escala : intervalo;
				
				direction = direction == side[1]
					? -margem - intervalo
					: -margem + intervalo
				;
				
				$(".scrollButtom",obj).css("visibility", "visible");
				var rel = -direction == 0 ? side[0] : (-direction + mask) == area ? side[1] : null;
				if(rel != null) $(".scrollButtom[rel*='"+rel+"']",obj).css("visibility","hidden");
				
				// Animação
				animation = true;
				if(options.direction == "up"){
					$(".scrollMask ul",obj).animate({marginTop: direction + "px"},options.speed,function(){ animation = false; });
				}else{
					$(".scrollMask ul",obj).animate({marginLeft: direction + "px"},options.speed,function(){ animation = false; });
				}
			}
			
			// Aplicação de eventos
			if(total > options.elements){
			    $(".scrollButtom",this).unbind("click").click(function(){
				    if(!animation){
					    var direction = $(this).attr("rel");
					    rolagem(direction);
				    }
			    });
			}
		});
	}
});

