/**
 * Este javascript faz o uso intenso do Framework Prototype.
 * 
 * Para entende-lo acesse o site [http://www.prototypejs.org/].
 * 
 * Antes de modificar esse javascript, por favor, leia os comentarios.
 */

if(!LoadManager) var LoadManager = {};				// verifica se Load existe e a declara
LoadManager = Class.create();						// cria a classe Load

LoadManager.prototype = {
	contentLoaded	: false,						// variavel para definir se o metodo "contentLoad" foi chamado
	
	queryString		: new Querystring(),
	csSwitcher		: new CSSwitcher(),				// cria uma nova instancia de CSSwitcher();
	printer			: null,
	changerFontSize	: null,
	cadastrese		: null,
	
	initialize		: function() {					// contrutor da classe
		Event.observe(window, 'dom:loaded', this.contentLoad.bindAsEventListener(this) , false);	// chama o metodo "contentLoad" assim que o HTML for 100% carregado, funciona apenas em browser modernos (Firefox, Opera, Safari), não funciona para qualquer versão do IE
		Event.observe(window, 'load', this.load.bindAsEventListener(this) , false);					// chama o metodo "load" assim que o tudo for 100% carregado, funciona em todos os Browser.
		Event.observe(window, 'unload', this.unload.bindAsEventListener(this) , false);					// chama o metodo "load" assim que o tudo for 100% carregado, funciona em todos os Browser.
	},
	
	contentLoad		: function() {
		this.contentLoaded = true;					// seta a variavel "contentLoaded" para definir que o metodo "contentLoad" foi chamado
		
		this.lightbox();
		
		this.changeFontSize();
		
		this.print();
		
		this.formLoad();							// chama o metodo formLoad
	
	},
	
	load			: function() {
		this.isContentLoaded();						// chama o metodo de verificação "isContentLoaded" para saber se o "contentLoad" foi chamado, caso falso, chama-o
	},
	
	unload			: function() {
	},
	
	isContentLoaded	: function() {					// caso o "contentLoad" não seja carregado no construtor "initialize", chama-o mesmo assim para manter a compatibilidade com Browser antigos
		if (!this.contentLoaded) this.contentLoad();
	},
	
	print			: function() {
		if ($$(".printLink").length>0){
			this.printer = new Print(this.queryString, this.csSwitcher);
		}	
	},
	
	changeFontSize	: function() {
		if ($$(".increaseLink a").length>0 && $$(".decreaseLink a").length>0){
			this.changerFontSize = new ChangeFontSize( $$(".sub-conteudo")[0] ,0, 4, 1);
		}	
	},
	
	lightbox		: function() {
		getBrowserInfo();
		initialize();
	},
	
	formLoad		: function() {
		if ($$(".carousel-component").length>0){				// verifica se o formulario existe para chamar as funções respectivas ao funcionamento do mesmo

			this.cadastrese = new Carousel(					// carrega Carrousel
				"cadastrese", 								// id do componente
				{scrollInc: 1, 								// scrooll por pagina
				numVisible: 1, 								// numero de itens visiveis
				nextElementID: 'next-arrow-form', 			// id do link de proximo
				prevElementID: 'prev-arrow-form', 			// id do link de anterior
				buttonStateHandler: buttonStateHandler,		// chama uma função para definir os estados dos links anterior e proximo
				animHandler: animHandler, 					// chama uma função para definir a animação da troca de pagina
				animParameters: {duration: 0}});
		}
	}
};

var loadM = new LoadManager();

// função que defini os estados dos links anterior e proximo
function buttonStateHandler(button, enabled) {
	$(button).style.cursor = enabled ? "pointer" : "default";
	$(button).style.display = enabled ? "" : "none";
}

// função que defini a animação de troca de pagina
function animHandler(carouselID, status, direction) {
	var region = $(carouselID).down(".carousel-clip-region")
	if (status == "before") {
		Effect.Fade(region, {to: 0.5, queue: { position:'end', scope: "carousel" }, duration: 0.25})	// faz um fade de 250ms na saida da pagina
	}
	if (status == "after") {
		Effect.Fade(region, {to: 1, queue: { position:'end', scope: "carousel" }, duration: 0.25})		// faz um fade de 250ms na entrada da pagina
	}
}
