// JavaScript Document

var TransitionController =  {
		goto: function (id) {
			var myRef= this.cleanPath(id,"");
			
			if(myRef.id=="index")
				animateMenu(false);
			else
				animateMenu(true);
				
				
				if(myRef.id!=null)
				{
					
					if(transitionControllerSetup.currentPage==myRef.id && transitionControllerSetup.loadVars!=myRef.vars)
					{
						transitionControllerSetup.loadVars = myRef.vars;
						var myF = TransitionController.getFunction(myRef.id);
						myF.onDeepLink(myRef.vars);
					}
					else
					{
						transitionControllerSetup.loadVars = myRef.vars;
						transitionControllerSetup.transitionPage = myRef.id;
						
						//if(!$.browser.msie)
//							console.log("ID: " + myRef.id + " MYVARS: " + myRef.vars);
							
						$.address.title("Casas da Lapa :: " + this.getTitle(myRef.id));
						TransitionController.startTransition(this.getPage(myRef.id));
					}
				}
				else
				{
					myRef= this.cleanPath(PAGES[0].id,"");
					transitionControllerSetup.loadVars = myRef.vars;
					transitionControllerSetup.transitionPage = myRef.id;
					$.address.title("Casas da Lapa :: " + this.getTitle(myRef.id));
					TransitionController.startTransition(this.getPage(myRef.id));
				}
		
		},
		showPreloader: function () {
			var width = 0;
			if(config.maxWidth!=null)
				width = config.maxWidth;
			else
				width = $(window).width();
			
			var height = 0; 
			
			if(config.maxHeight!=null)
				height = config.maxHeight;
			else
				height = $(window).height();
			
			$(document.body).append('<div id="' + transitionControllerSetup.malhaID + '"></div>');
			$("#"+ transitionControllerSetup.malhaID).width(width);
			$("#"+ transitionControllerSetup.malhaID).height(height);
			$("#"+ transitionControllerSetup.malhaID).animate({ opacity: 0 }, 0);
			
			$(document.body).append('<div id="' + transitionControllerSetup.loaderID + '"><img src="'+transitionControllerSetup.loaderURL+'" border="0" /></div>');
			$("#"+ transitionControllerSetup.loaderID+" img").load(function () {  var width = (config.maxWidth!=null) ? config.maxWidth : $(window).width(); var height = (config.maxHeight!=null) ? config.maxHeight : $(window).height(); var posx = parseInt((height/2) - ( $("#"+ transitionControllerSetup.loaderID+" img").height()/2)); var posy = parseInt((width/2) - ( $("#"+ transitionControllerSetup.loaderID+" img").width()/2)); 	$("#"+ transitionControllerSetup.loaderID).css("top",posx + "px"); $("#"+ transitionControllerSetup.loaderID).css("left",posy + "px"); });
			$("#"+ transitionControllerSetup.loaderID).fadeOut(0);
			
			$("#"+ transitionControllerSetup.malhaID).animate({ opacity: 0.65 }, 500);
			$("#"+ transitionControllerSetup.loaderID).fadeIn(500).delay(250);
			//$("#malha").
		},
		removePreloader: function () {
			$("#"+ transitionControllerSetup.loaderID).fadeOut(500,'linear',function () { $("#"+ transitionControllerSetup.loaderID).remove(); });
			$("#"+ transitionControllerSetup.malhaID).animate({ opacity: 0 }, 500,function () { $("#"+ transitionControllerSetup.malhaID).remove(); }).delay(250);
		},
		requestData: function (DATA) {
			//alert("request");
			if(transitionControllerSetup.transitionPage!="index")
			{
				if(transitionControllerSetup.loadVars!=false && transitionControllerSetup.loadVars!="")
				{
					$.ajax({
					  url: DATA,
					  cache: false,
					  data: {op: transitionControllerSetup.loadVars},
					  success: TransitionController.requestResponse
					});
				}
				else
				{
					$.ajax({
					  url: DATA,
					  cache: false,
					  success: TransitionController.requestResponse
					});
				}
			}
			else
				TransitionController.requestResponse(null);
		},
		requestResponse: function (html) {
			//alert("response");
			if(html!=null)
			{
				var itemCount = 0;
				var counter = 1;
				$("#" + transitionControllerSetup.mainContainerID).css("visibility","hidden");
				
				$("#" + transitionControllerSetup.mainContainerID).html(html);
				var myF = TransitionController.getFunction(transitionControllerSetup.transitionPage);
				myF.transitionInComplete = TransitionController.transitionInComplete;
				$("#" + transitionControllerSetup.mainContainerID).css("visibility","visible");
				myF.init(transitionControllerSetup.loadVars);
				//$("#content ." + transitionPage).each( function (index,domEle) { itemCount++;  $(domEle).fadeOut(0); } );
				//if(!$.browser.msie)
//					console.log("#TransitionController: TRANSITION IN START");
				
				myF.transitionIn();
			}
			else
			{
				$("#" + transitionControllerSetup.mainContainerID).html("");
				var myF = TransitionController.getFunction(transitionControllerSetup.transitionPage);
				myF.transitionInComplete = TransitionController.transitionInComplete;
				myF.init(transitionControllerSetup.loadVars);
				//if(!$.browser.msie)
//					console.log("#TransitionController: TRANSITION IN START");
				myF.transitionIn();
			}
			
		},
		transitionInComplete: function () {
		//	if(!$.browser.msie)
//				console.log("#TransitionController: TRANSITION IN COMPLETE");
			
			var width = (config.maxWidth!=null) ? config.maxWidth : $(window).width();
			var height = (config.maxHeight!=null) ? config.maxHeight : $(window).height();
				
				
			//FB.Canvas.setSize({width: 520, height: heightB});
			$("#"+ transitionControllerSetup.loaderID).offset({top: (height/2) - ($("#"+ transitionControllerSetup.loaderID +" img").height()/2),left:(width/2) - ($("#"+ transitionControllerSetup.loaderID +" img").width()/2) });
			TransitionController.removePreloader();
			TransitionController.transitionComplete();
			//alert("COMPLETE TRANSITION");
		},
		transitionComplete: function () {
			transitionControllerSetup.currentPage = transitionControllerSetup.transitionPage;
			transitionControllerSetup.transitionPage = "";
		},
		startTransition: function (ref) {
			transitionControllerSetup.pendingRequest = ref;
			TransitionController.showPreloader();
			TransitionController.transitionOut();
		},
		transitionOut: function () {
			var itemCount = 0;
			var counter =0 ;
			//if(!$.browser.msie)
//				console.log("#TransitionController: TRANSITION OUT START");
			if(transitionControllerSetup.currentPage!="")
			{
				var myF = TransitionController.getFunction(transitionControllerSetup.currentPage);
				
				
				myF.transitionOutComplete = TransitionController.transitionOutComplete;
				myF.transitionOut();
			}
			else
				TransitionController.transitionOutComplete();
		},
		transitionOutComplete: function (){
			//if(!$.browser.msie)
//				console.log("#TransitionController: TRANSITION OUT END");
			if(transitionControllerSetup.currentPage!="")
			{
				var myF = TransitionController.getFunction(transitionControllerSetup.currentPage);
				myF.destroy();
			}
			
			TransitionController.requestData(transitionControllerSetup.pendingRequest);
		},
		getPage: function (id) {
			var url=false;
			for(var i = 0; i<PAGES.length; i++)
			{
				if(PAGES[i].id==id)
					url = PAGES[i].page;
			}
			return url;	
		},
		getTitle: function (id) {
			var url=false;
			for(var i = 0; i<PAGES.length; i++)
			{
				if(PAGES[i].id==id)
					url = PAGES[i].title;
			}
			return url;	
		},
		getFunction: function (id) {
			var url=false;
			for(var i = 0; i<PAGES.length; i++)
			{
				if(PAGES[i].id==id)
					url = PAGES[i].func;
			}
			return url;	
		},
		cleanPath: function (id,complete) {
			var myObj = {id: null, vars: null };	
			var search = false;
			var idSplit = id.split("/");
			for(var i = 0; i<PAGES.length; i++)
			{
				if(PAGES[i].id==id)
				{
					myObj.id = id;
					myObj.vars = complete;	
					search = true;
				}
			}
			if(!search)
			{
				if(complete!="")
					complete += complete + "/" + idSplit.pop();
				else
					complete = idSplit.pop();
					//console.log("idSplit: " + idSplit.length);
				if(idSplit.length>0)
					myObj = this.cleanPath(idSplit.join("/"), complete);
				
				
			}
			
			return myObj; 
			
			
		}
};


