/* JAVASCRIPT RULES! */
if(typeof(console) === 'undefined') {
    var console = {}
    console.log = console.error = console.info = console.debug = console.warn = console.trace = console.dir = console.dirxml = console.group = console.groupEnd = console.time = console.timeEnd = console.assert = console.profile = function() {};
}


var projecteObert;  // la ID del projecte Obert;
var projecteObertObjecte; 
var ampleProjecteObert; 
var timerResize;
var uri1; 
var uri2; 
var uri3; 
var boot; 
//rescata el projecte carregat amb php
function detectaProjecteObert(){

	if($("conteProjecte")){
	
		projecteObert = $("conteProjecte").getParent().getParent().getProperty("id");
		projecteObertObjecte = $(".visorProjecte");
	}
}

window.addEvent('resize', function(){
  clearTimeout(timerResize);
  timerResize = (function(){
	calculAmple();
  }).delay(50);
});

window.addEvent("domready", function(){
	
	if($$(".isocial")){
		$$(".isocial").each(function(element, index){
			element.addEvent("mouseover", function(e){
				element.set('morph',{duration:300})
				var test = this.getStyle("background-position").split(" ");
				
				element.morph({
					"background-position" : "0px "+test[1]
				})
			});
			
			element.addEvent("mouseout", function(e){
				var test = this.getStyle("background-position").split(" ");
				element.morph({
					"background-position" : "-15px "+test[1]
				})
			}); 

		});
	}
	
	detectaProjecteObert();
	//control navegació
	//comprovo si estan definits
	// o hi poso valors per defecte
	
	//document.addEventListener('touchmove', function(e){ e.preventDefault(); })
	
	initProjectes();	
	altaBotons();
	var lazyloader = new LazyLoad({
		elements:'.fotoProj',
		mode: 'vertical'
	});
	calculAmple();
	this.historyListener = function(historyHash) {

		var nHash = historyHash.split("/");
		var novaUri = nHash[nHash.length-1];
		
		
		if(novaUri){
			_gaq.push(['_trackPageview', '/ajax/'+novaUri]);
			if(boot){
				var delai = 0; 
			} else {
				delai = 1000;
			}
			if(novaUri == "nosaltres") {
				var obj = $("pNosaltres");
				(function(){mostraProjecte(obj.getChildren("a")[0])}).delay(delai);
			} else if(novaUri == "premsa"){
				var obj = $("pPremsa");
				(function(){mostraProjecte(obj.getChildren("a")[0])}).delay(delai);
				//mostraProjecte(obj.getChildren("a")[0]);

			} else {
				
				var req = new Request({
					url: base_url+'index.php/ajax/projecte_a_id/'+novaUri, 
					evalScripts: false, 
					onSuccess: function(txt){
						if(txt != "e404"){
							var obj = $("p"+eval(txt));
							(function(){mostraProjecte(obj.getChildren("a")[0])}).delay(delai);
						}
					},	
					onFailure: function(){
						//$('cVisor').set('text','oh que pena');
					}
				});
				req.send();	
			}  
		}

	};
	unFocus.History.addEventListener('historyChange', this.historyListener);
	this.historyListener(unFocus.History.getCurrent());

});

function initProjectes(){
	var elementsMenu = $$("caixaProjecte");
	var i = 0;
	$$(".caixaProjecte").each(function(element){
		//Animacions d'entrada
		element.setStyle("opacity", 0);
		element.setStyle("margin-top", "40px");
		element.set('morph', {duration:500, transition:Fx.Transitions.Quad.easeInOut});

		var m = (function(){ element.morph({opacity:1, "margin-top":"0px"}) 	}).delay(25*i);

		i++
		
		var el = element.getChildren("a")[0]
		//ALERTA: Fent-ho aixins es propagan els events als seus fills
		//s'ha de prevenir mitjançant: fill.stopPropagation();
		el.addEvent("click", apretaProjecte);
		//afeigt per prevenir clck quan no té listener
		if(ajax){
			el.addEvent("click", function(event){ event.preventDefault(); }) 
		}
	
		//CAPA OVER, li poso mouseOver
		el.addEvent("mouseover", caixaOver); 
		el.addEvent("mouseout", caixaOut);
	})
}
function caixaOver(event){
		//demano l'objecte "LI", vé de l'etiqueta IMG o
		
		var principal = detectaPare(event.target);
		var caixaRoll = principal.getChildren('a')[0].getChildren('div')[0].getChildren('.caixaImgOver')[0]; 
	
		//animació ROLL 
		caixaRoll.setStyles({
			opacity: "0.01"
		})
		
		
		caixaRoll.morph({
			opacity: "1",
			top: "0"
		});
	
		return false; //impedeixo que s'executi per ningú més
	
}
function caixaOut(event){
		//demano l'objecte "LI";
		var principal = detectaPare(event.target);
		var caixaRoll = principal.getChildren('a')[0].getChildren('div')[0].getChildren('.caixaImgOver')[0]; 
		//caixaRoll.setStyle('opacity', '0');
		caixaRoll.morph({
			opacity: 0.01,
			top: "-107px"
		});
		return false; //impedeixo que s'executi per ningú més
}

function apretaProjecte(event){
	boot = true;
	if(ajax){
		event.preventDefault();
	}
	var urlNova = event.target.getParent().getParent().get('href');
	//aquesta funció executa la carrega del projecte;
	afegeixHistorial(urlNova);
}

function carregaSubseccio(uri){
}

//aquesta funció calcula l'ample a partir de les caixes del projecte de la primera fila
function calculAmple(){
	
	if(vista != 2){
		var liniaBaseX = 0;
		
		var nX; 
		$$(".caixaProjecte").each(function(el){
			nX = el.getPosition($('conteProjectes')).x;
			if(liniaBaseX < nX){
				liniaBaseX = nX;
			}
		})
	
		ampleProjecteObert = liniaBaseX+185; 
		if(projecteObertObjecte){
			projecteObertObjecte.setStyle('width', ampleProjecteObert+'px');
			
		}
	}
}

function tancaProjecte(){
	if($(projecteObert)){
		amplia($(projecteObert), "165px");
		
		
		$(projecteObert).addEvent("click", apretaProjecte);
		
		$(projecteObert).getChildren("a")[0].addEvent("mouseover", caixaOver);
		$(projecteObert).getChildren("a")[0].addEvent("mouseout", caixaOut);
		
		$(projecteObert).getChildren("a")[0].getChildren("div")[0].getChildren("img")[0].morph({
			opacity: 0.01,
			top: "-107px"
		});
		
			
		var capaBorrar = $(projecteObert).getChildren("div");
		
		
		capaBorrar.dispose();
		
		projecteFlash = false;
	}
}

function mostraProjecte(el){
	if(el.target){
		el.preventDefault();
		var objecte = el.target;
	} else {
		objecte = el;
	}
	
	var s = new Fx.Scroll(window, {
			offset: {
				x:0,
				y: -110
			}
		}).toElement(objecte, 'y');
	if(!boot){
		
	}
	
	boot = true;
	
	
	//detecto si ja hi ha un projecte obert i l'esborro 
 	tancaProjecte();
	
	var pare = objecte.getParent();
	//elimino event

	objecte.removeEvent("click", apretaProjecte);
	var t = detectaPare(objecte);

	amplia(t, '530px');
	
	//guardo el projecte Obert

	projecteObert = t.id;

	projecteObertObjecte = new Element("div", {
		'class': 'visorProjecte',
		'style': 'width:'+ampleProjecteObert+'px;',
		'height': '0px',
		text: ''
	})
	

	//coloco la capa fora de l'etiqueta A perquè no es propaguin
	//els efectres
	t.grab(projecteObertObjecte);

	var id = projecteObert.substr(1,10)

	if(id=="Nosaltres")	{	
		carregaProjNosaltres(projecteObertObjecte)
	} else if(id=="Premsa"){
		carregaProjPremsa(projecteObertObjecte)
	} else 	{
		carregaProjecte(id, projecteObertObjecte)
	}
	
}

function afegeixHistorial(url){
	var nHash = url.split("/");
	var nUrl = nHash[nHash.length-1]
	
	unFocus.History.addHistory("/"+nUrl);
}

function detectaPare(objecte){
	
	//faig un loop fins que detecto el pare
	// respon a l'identificador de 
	for(i=0; i<5; i++){
		if(objecte.get('tag') == "li"){
			return objecte;
			break;
		}
		objecte = objecte.getParent(); 
	}
	
}

function animacioEntrada(element){
	var objecte = element.getElementById("conteProjecte");
	element.setStyle("opacity", 1);
	objecte.setStyles({
		height: '0px',
		display: 'block',
		position: 'relative'
	});
	if(!objecte.get("morph")){
		objecte.set('morph',{duration:'long'})
	}
	if(!element.get("morph")){
		element.set('morph',{duration:'long'})
	}
	element.morph({height: "360px"});
	objecte.morph({	left:0});
	
}

function carregaProjecte(id, desti){

	var req = new Request({
		url: base_url+'index.php/ajax/projecte/'+id, 
		method:'post',
		data:'idioma='+idioma, 
		evalScripts: true, 
		onSuccess: function(txt){
		
			desti.set('html',txt);
			animacioEntrada(desti);
			//opacitat(desti, "1");
			altaBotons();
		},	
		onFailure: function(){
			//$('cVisor').set('text','oh que pena');
		}
	});
	req.send();
}

function carregaProjNosaltres(desti){
	var req = new Request({
		url: base_url+'index.php/nosaltres/', 
		evalScripts: true, 
		onSuccess: function(txt){
			desti.set('html',txt);
			opacitat(desti, "1");
			altaBotons();
			mostraQuiSom();
		},	
		onFailure: function(){	
			//$('cVisor').set('text','oh que pena');
		}
	});
	req.send();
}

function carregaProjPremsa(desti){
	var req = new Request({
		url: base_url+'index.php/premsa/', 
		evalScripts: false, 
		onSuccess: function(txt){
			desti.set('html',txt);
			opacitat(desti, "1");
			altaBotons();
		},	
		onFailure: function(){
			//$('cVisor').set('text','oh que pena');
		}
	});
	req.send();
}

function amplia(objecte, alt){
	//executo sempre des d'aqui el tancar-ho tot
	//així detectaré si l'objecte a tancar
	//i el que s'obra estan a la mateixa fila
	

	//objecte.setStyles({height:alt})   //instantani
	if(objecte){
		if(!objecte.get("morph")){
			objecte.set('morph',{duration:'long'})
		}
		objecte.morph({height:alt});
	}
	objecte.getChildren("a")[0].removeEvent("mouseover", caixaOver);
	objecte.getChildren("a")[0].removeEvent("mouseout", caixaOut);
	
	objecte.getChildren("a")[0].getChildren("div")[0].getChildren("img")[0].addClass("caixaImgSeleccinat");
}

function opacitat(objecte, alt){
	if(!objecte.get("morph")){
		objecte.set('morph',{ duration:'long'})
	}
	var tmp = objecte.getStyle("height");
	objecte.setStyle("height", "0px");
	objecte.morph({opacity:alt, height:360, left:"0px"});
	
	
}

/* aquesta funció dona d'alta els botons "<" i ">" */

function altaBotons(){
	
	$$(".visorDreta").each(function(el){

		el.addEvent("click", function(event){
			//recupero des de la imatge la tira d'imatges
			// imatge > iconesProjecte > descripcioProjecte > contenidorProjecte >> tiraImatges 
			//només 1 resultat
			var tiraImatges = event.target.getParent().getParent().getParent().getChildren(".scrollImg")[0].getChildren("#tiraImatges")[0];
			
			if(tiraImatges.posicio == undefined){
				tiraImatges.posicio = 0;
			}
			
			if((tiraImatges.posicio+1)<tiraImatges.posicions){
				tiraImatges.posicio++
			}
			
			tiraImatges.set('morph', {duration: 500});
			var pos = -594*tiraImatges.posicio;
			tiraImatges.morph({left:pos+"px"})
			controlVisorProjectes();
		});
	})
	
	
	
	$$(".visorEsquerra").each(function(el){
	
		el.addEvent("click", function(event){
			// recupero des de la imatge la tira d'imatges
			// imatge > iconesProjecte > descripcioProjecte > contenidorProjecte >> tiraImatges 
			// només 1 resultat
			
			var tiraImatges = event.target.getParent().getParent().getParent().getChildren(".scrollImg")[0].getChildren("#tiraImatges")[0];
			
			if((tiraImatges.posicio-1) < 0){
				tiraImatges.posicio = 0;
			} else {
				tiraImatges.posicio--;
			}
			
			tiraImatges.set('morph', {duration: 500});
			var pos = -594*tiraImatges.posicio;
			tiraImatges.morph({left:pos+"px"})
			controlVisorProjectes();
		});
		controlVisorProjectes();
	})
	
	
	$$(".visorTancar").each(function(el){
		el.addEvent("click", function(event){
			tancaProjecte();
		})
		 
	})
}



function controlVisorProjectes(){
	
	$$(".tirImg").each(function(el){
		//haig de contar les imatges
		var imatges = el.getChildren(".fotoProj");
	
		//ho escric al div "contaProjecte"
		var indicadorImatges = el.getParent().getParent().getChildren(".descripcioProjecte")[0].getChildren(".iconesProjecte")[0]
		var contaProjectes = indicadorImatges.getChildren(".contaProjecte")[0];
		
		var tiraImatge  =el.getParent().getChildren("#tiraImatges")[0];
		tiraImatge.posicions = imatges.length; 
	
		el.setStyle("width", 594*tiraImatge.posicions+"px");
		
		if(!tiraImatge.posicio){
			tiraImatge.posicio = 0;
		}
		if(!Browser.Platform.ios){
			contaProjectes.set('html', (tiraImatge.posicio+1)+"/"+tiraImatge.posicions);
		} else {
			contaProjectes.set('html', "");
		}
			
		//Scroll Suau dactil per iOs
		if(Browser.Platform.ios){
			
			//si hi ha scroll
			if(!el.iScroll){
				el.iScroll = new iScroll(el,  {hScrollbar:true, vScrollbar:false});
			} else {
				el.iScroll.refresh()
			}
			
			indicadorImatges.getChildren(".visorEsquerra")[0].setStyle("display", "none");
			indicadorImatges.getChildren(".visorDreta")[0].setStyle("display", "none");
		}
		
		/*if(projecteTipus == 2){
			indicadorImatges.getChildren(".visorTancar")[0].setStyle("opacity",0);
		}*/
	});	
}

function mostraQuiSom(){
	var id=1; 
	var nImatge; 
	var oImatge; 

	var mostraSeguent = function(){
		//m'asseguro que estic al lloc on toca
		if(!$("quisom")){
			clearInterval(n);
			return false;
		}
		if(id<=14){
			id++;			
		} else {
			id=1;
		}


		nImatge = new Element("img", {
			'src': base_url+'/img/quisom/zoo_quisom'+id+'.jpg'
		})
		$("quisom").grab(nImatge, 'top');
		
		if(oImatge){
			setTimeout(oImatge.dispose, 500);
		}
		oImatge = nImatge;
	}
	var n = mostraSeguent.periodical(2500);
}
