//general vars
var cms_status = "";
var homeURL = "/homepage/homepage";//url por defecto de home que se redefine desde el cms al inciar el site -> loadMenu()
var urlQueue;
var phpQueue;
var AJAX;
var AJAX_LOADING = false;
var mainColor;
var secondColor;
var mainColorMemo;
var secondColorMemo;
var mainColorPrev;
var WINDOW_WIDTH;
var WINDOW_HEIGHT;
var MOUSE_X = 0;
var MOUSE_Y = 0;
var searchFocus = false;
var documentMouseOut = false;
var zoom = document.documentElement.clientWidth / window.innerWidth;
var HISTORY = new Array();
//background vars
var BgLayerNum = 1;
var BgLayerNumResize = BgLayerNum;
var BgCounter = 0;
var BgOnLoad;//evento que se ejecuta cuando se completa la carga + fade-in del fondo
var BgOnComplete;//evento que se ejecuta cuando se completa la carga del fondo
var BgLoading = false;
var BgCurrentImages;
var BgSecondImageClick = null;//evento para el click de la segunda imagen vertical;
var BgSecondImageClickEvent;
var fullScreenMode = false;
//prelodaer vars
var preloaderId;
var preloaderCounter = 0;
var preloaderInterval;
var prelaoderLoaded = false;
var preloaderFrames = new Array();
var prelaoderTotalFrames;
var preloaderOnLoadFrames;//Evento que se ejecuta cuando termina de inicializar el preloader (inicio del site)
//BackgroundLoader
var BackgroundLoader = new Object();//cargas en 2do plano
//menu vars
/*
el array "menu" contiene toda la estructura del website. Hay 4 tipos: 
"simple" que son secciones sin submenu
"multi" que son secciones con submenu y urls de un solo segmento -> ej. /philosophy
"multifilter"  que son secciones con submenu y urls de 2 y 3 segmentos -> ej. /work/all o /work/all/slug
*/
var menuLoaded = false;
var menuDefaultColor = "#111111";
var menuTransitionTime = 150;
var menuOnLoad;
var submenuArrowLeftEvent = null;
var submenuArrowRightEvent = null;//eventos de las flechas del submenu de work para pasar projects
var menu = new Array(); 
//
//el nodo [0] corresponde a work y se carga desde el cms al iniciar el site
menu[0] = new Object();
menu[0].name = "Work";
menu[0].url = "/work/all";
menu[0].php = "work.php";//php por defecto de cada sección
menu[0].php2 = "project.php";//php para el 2do. nivel de los "multifilter" -> ej. project page -> 3 segmentos en la url
menu[0].type = "multifilter";
menu[0].submenu = new Array();
menu[0].submenu[0] = new Object();
menu[0].submenu[0].name = "All"; 
menu[0].submenu[0].url = "/work/all"; 
menu[0].submenu[0].php = "work.php";//php para cada sección que se abre desde el submenu
//
menu[1] = new Object();
menu[1].name = "About";
menu[1].url = "/philosophy";
menu[1].php = "philosophy.php";
menu[1].type = "multi";
menu[1].submenu = new Array();
menu[1].submenu[0] = new Object();
menu[1].submenu[0].name = "Philosophy"; 
menu[1].submenu[0].url = "/philosophy";
menu[1].submenu[0].php = "philosophy.php";
menu[1].submenu[1] = new Object(); 
menu[1].submenu[1].name = "Bios"; 
menu[1].submenu[1].url = "/bios"; 
menu[1].submenu[1].php = "bios.php";
menu[1].submenu[2] = new Object();
menu[1].submenu[2].name = "Office"; 
menu[1].submenu[2].url = "/office"; 
menu[1].submenu[2].php = "office.php";
menu[1].submenu[3] = new Object();
menu[1].submenu[3].name = "Awards"; 
menu[1].submenu[3].url = "/awards"; 
menu[1].submenu[3].php = "awards.php";
//
menu[2] = new Object();
menu[2].name = "Publications";
menu[2].url = "/publications";
menu[2].php = "publications.php";
menu[2].type = "simple";
menu[2].submenu = new Array();
//
menu[3] = new Object();
menu[3].name = "Journal";
menu[3].url = "http://www.beingpoint.com/stonecanyon/";
menu[3].type = "external";
menu[3].submenu = new Array();
//
menu[4] = new Object();
menu[4].name = "Contact";
menu[4].url = "/contact";
menu[4].php = "contact.php";
menu[4].type = "multi";
menu[4].submenu = new Array();
menu[4].submenu[0] = new Object();
menu[4].submenu[0].name = "General"; 
menu[4].submenu[0].url = "/contact"; 
menu[4].submenu[0].php = "contact.php";
menu[4].submenu[1] = new Object();
menu[4].submenu[1].name = "Employment"; 
menu[4].submenu[1].url = "/employment"; 
menu[4].submenu[1].php = "contact.php";
//
//---------- INICIO ----------
$(document).ready(function() {
	WINDOW_WIDTH = $(window).width();
	WINDOW_HEIGHT = $(window).height();
	//body en alpha cero para el fade-in del inicio
	$("body").css({display:"block",opacity:0});
	$("#footerBg").css({opacity:0.7});
	
	//defino el id y los fotogramas del preloader
	preloaderId = "preloader";
	for(var i=0;i<24;i++){
		preloaderFrames.push("./assets/p"+i+".png");
	}
	//defino la secuencia de eventos para arrancar el site
	//cuando completa la carga de los frames del preloader carga el menu
	preloaderOnLoadFrames = loadMenu;
	//cuando completa la carga del menu arranca el site
	menuOnLoad = start;
	//inicializo el preloader y arranca la secuencia
	prelaoderInit();
	reposFooter();
	$(document).mousemove(function(e){
		MOUSE_X = e.pageX;
		MOUSE_Y = e.pageY;
	});
	$(document).mouseout(function(){
		documentMouseOut = true;
	});
	$(document).mouseover(function(){
		documentMouseOut = false;
	});
	$(document).mousemove();
});
$(window).resize(function() {
	WINDOW_WIDTH = $(window).width();
	WINDOW_HEIGHT = $(window).height();
	var zoomNew = document.documentElement.clientWidth / window.innerWidth;
    if (zoom != zoomNew) {
        // zoom has changed
        // adjust your fixed element
        zoom = zoomNew
		zoomChange();
    }
	//reposiciona el footer y ajusta el tamaño del fondo
	reposFooter();
	resizeBackground();
	if($("#workList").length>0){
		resizeWorkList(true);
	}
	if($("#publicationsList").length>0){
		resizePublicationsList(true)
	}
	if($("#projectDisplay").length>0){
		resizeProjectContent();
	}
});
function zoomChange(){
	projectZoomChange();
}
$.address.init(function(event) {//inicializa jquery address
    $('a:not(.outside)').address(function() { return $(this).attr('href').replace(location.pathname, ''); });
}).change(function(event) {
	//disparo el cambio de pagina
	if(menuLoaded){
		//si el menu está cargado cambia la página
		changePage(event.value);
	}else{
		//si el menu no está cargado queda en cola
		urlQueue = event.value;
	}
});
function start(){
	//guardo en memoria los colores principales
	if(controlHexa(mainColor)){
		parseColorHexa(mainColor);
	}else{
		mainColor = "#B9937C";
	}
	if(controlHexa(secondColor)){
		parseColorHexa(secondColor);
	}else{
		secondColor = "#543929";
	}
	mainColorMemo = mainColor;
	secondColorMemo = secondColor;
	mainColorPrev = mainColor;
	//cargo elementos de favoritos y search
	$("#fav").html('<span id="img"><img src="./assets/fav_icon.png" onload="tintPNG2(this)"/></span><span id="menuFav">Favorites</span></span><span id="favArrows"></span>');
	$("#search").html('<span id="img"><img src="./assets/search_icon.png" onload="tintPNG2(this)"/></span><input type="text" id="searchBox" value="Search" maxlength="50"/>');
	//asigno color al footer
	$("#footerText").css({color:mainColor});
	$("#footerCredits span").css({cursor:"pointer"});
	$("#footerCredits span").click(function(){
		window.open("http://www.thisisloyal.com","_blank");
	});
	//En el arranque del site carga el menu y luego setea la seccion en la que entra
	changePage(urlQueue);
	setSearchEvents();
	setFavEvents();
	testMenuFavButton();
	$("body").animate({opacity:1},200);
}
function setProjectColors(str){
	var control = str.split(" ").join("");
	if(control == ""){
		setDefaultColors();
	}else{
		var colorsStr = str.split("  ").join(" "); 
		if(colorsStr.substring(0,1) == " "){
			colorsStr = colorsStr.substring(1,colorsStr.length);
		}
		var colors = colorsStr.split(" ");
		mainColor = (colors.length > 0) ? parseColorHexa(colors[0]) : mainColorMemo;
		secondColor = (colors.length > 1) ? parseColorHexa(colors[1]) : secondColorMemo;
		refreshColors();
	}
}
function setDefaultColors(){
	mainColor = mainColorMemo;
	secondColor = secondColorMemo;
	refreshColors()
}
function refreshColors(){
	if(mainColorPrev != mainColor){
	var id;
	var idsub;
	var color;
	for(var i=0;i<menu.length;i++){
		id = menu[i].name.toLowerCase();//id del <a>
		color = cssToHexa($("#menu #"+id).css("color"));
		if(color != menuDefaultColor){
			$("#menu #"+id).stop(true).animate({color:mainColor},menuTransitionTime);
			if(menu[i].submenu.length > 0){
				for(var j=0;j<menu[i].submenu.length;j++){
					idsub = menu[i].submenu[j].name.toLowerCase();
					color = cssToHexa($("#submenu #"+id+" #"+idsub).css("color"));
					if(color != menuDefaultColor){
						$("#submenu #"+id+" #"+idsub).stop(true).animate({color:mainColor},menuTransitionTime);
						break;
					}
				}
			}
			break;
		}
	}
	$("#footerText").stop(true).animate({color:mainColor},menuTransitionTime);
	$("#search #img").html('<img src="./assets/search_icon.png" onload="tintPNG3(this,\''+mainColor+'\')"/>');
	$("#search #img img").css({opacity:0});
	$("#fav #img").html('<img src="./assets/fav_icon.png" onload="tintPNG3(this,\''+mainColor+'\')"/>');
	$("#fav #img img").css({opacity:0});
	var favColor = cssToHexa($("#fav #menuFav").css("color"));
	if(favColor != menuDefaultColor){
		$("#fav #menuFav").stop(true).animate({color:mainColor},menuTransitionTime);
	}
	testFavsArrows();
	if($("#submenuArrows").html() != ""){
		submenuShowArrows();
	}
	mainColorPrev = mainColor;
	}
}
function startFromFavs(str){
	var url = "#";//por defecto la url va a home
	if(str != ""){
		var startFavs = str.split(",");
		for(var i=0;i<startFavs.length;i++){
			addToFavs(startFavs[i]);//agrega a favs
		}
		url += "/favorites/"+startFavs[0];//apunta la url al primer project de favs
	}
	window.location = url;
}
//---------- NAVEGACION ----------
function changePage(defaultURL){
	HISTORY.push(defaultURL);
	creditsDisplay = (defaultURL == menu[4].submenu[0].url || defaultURL == menu[4].submenu[1].url) ? "block" : "none";
	$("#footerCredits").css({display:creditsDisplay});
	if(!($.address.pathNames()[0] == "work" && $.address.pathNames().length > 2) && !($.address.pathNames()[0] == "favorites" && $.address.pathNames().length > 1)){
		setDefaultColors();
	}
	//antes de cambiar de página borra los eventos que pueda tener activos la sección que se va a eliminar -> slideshows, etc
	stopEvents();
	BgLoading = false;
	prelaoderVisibility(false);
	setScreenMode("normal");
	/*
	interpreto la url del navegador 
	si es necesario reescribo la url que le voy a pasar al php
	defino que php va a cargar
	*/
	var php = "home.php";//por defecto apunta a home
	var url = homeURL;//por defecto apunta a home
	var pn = $.address.pathNames();//defino los segmentos de la url del navegador
	var name = "";
	var hit = false;
	var suburl;
	var j = 0;
	if(pn[0] == "search" || pn[0] == "keywords" || pn[0] == "favorites" || pn[0] == "projects"){
		//work php muestra lal lista de work y destecta si la url es un filtro o search o keywords
		if(pn[0] == "search" && pn[1] != ""){
			php = "work.php";
			url = pn[0]+"/"+pn[1];
		}
		if(pn[0] == "keywords" && pn[1] != ""){
			php = "work.php";
			url = pn[0]+"/"+pn[1];
		}
		if(pn[0] == "favorites"){
			if(pn.length > 1 && pn[1] != ""){
				php = "project.php";
				url = "/favorites/"+pn[1];
			}else{
				php = "favorites.php";
				url = "favorites/"+String(favData);
			}
		}
		if(pn[0] == "projects"){
			/*
			viene por url una lista de ids de projects que el php compara y devuelve para agregar a favs 
			e iniciar el site en el primer project de favs -> function startFromFavs()
			*/
			php = "startFromFavs.php";
			url = pn[1];
		}
	}else{
		for(var i=0;i<menu.length;i++){
			/*
			comparo el primer segmento de la url del navegador 
			con el primer segmento de la url del item del menu
			*/
			name = menu[i].url.split("/")[1];//defino el 1er segmento de la url de la seccion
			if(menu[i].type == "simple"){
				if(pn[0] == name){
					hit = true;
				}
			}else{
				// si no es "simple" lo comparo con la url del submenu
				for(j=0;j<menu[i].submenu.length;j++){
					suburl = menu[i].submenu[j].url.split("/")[1];//defino el 1er segmento de la url de cada submenu
					if(pn[0] == suburl){
						hit = true;
						break;
					}
				}
			}
			if(hit){
			switch (menu[i].type){
				case "simple":
					url = menu[i].url;
					php = menu[i].php;
					break;
				case "multi":
						/*
						si la url del navegador tiene más d eun segmento
						comparo 1er y  2do segmento de la url del navegador 
						con la url del item del menu (que en type "multi" tiene 2 segmentos)
						*/
						var str = "";
						for(j=0;j<menu[i].submenu.length;j++){
							str += "/"+pn[0]+"->"+menu[i].submenu[j].url+"<br/>"
							if("/"+pn[0] == menu[i].submenu[j].url){
								url = menu[i].submenu[j].url;
								php = menu[i].submenu[j].php;
								if(pn.length > 1){
									//si tiene 2 segmentos redefino url -> es el caso de bios
									url = defaultURL;
									//php = menu[i].php2; // no hace falta usar php2 en bio
								}
								break;
							}
						}
					break;
				case "multifilter":
					for(var j=0;j<menu[i].submenu.length;j++){
						/*
						si la url del navegador tiene más d eun segmento
						comparo 1er y  2do segmento de la url del navegador 
						con la url del item del menu (que en type "multifilter" tiene 2 segmentos)
						*/
						if("/"+pn[0]+"/"+pn[1] == menu[i].submenu[j].url){
							url = menu[i].submenu[j].url;
							php = menu[i].submenu[j].php;
							if(pn.length > 2){
								//si tiene 3 segmentos redefino url y php para usar el php2 (project page)
								url = defaultURL;
								php = menu[i].php2;
							}
							break;
						}
					}
					break;
				}
				break;
			}
		}
	}
	//luego de interpretar la url seteo el menu y cargo la página
	setMenu(url);
	loadPage(url,php);
}
function loadPage(url,php){
	//carga el php vía ajax
	if(AJAX_LOADING){
		AJAX.abort();
	}
	AJAX_LOADING = true;
	$("#content").animate({opacity:0},100);
	prelaoderVisibility(true);
	AJAX = $.ajax({
		//cms_status le dice al fdata.php si usa los datos publicados o preview
		url: php+"?cms_status="+cms_status+"&url="+url,
		success: function(data) {
			//cuando complata la carga le pasa el contenido al div
			loadHTML(data);
			AJAX_LOADING = false;
			if(!BgLoading){
				prelaoderVisibility(false);
			}
		}
	});
}
function loadHTML(data){
	$("#content").stop(true).css({opacity:0});
	$("#content").html(data);
	$("#content").css({opacity:0}).delay(100).animate({opacity:1},150);
}
function loadMenu(){
	$.ajax({
		//cms_status le dice al fdata.php si usa los datos publicados o preview
        url: "getMenu.php?cms_status="+cms_status,
        success: function(data) {
            var tmp1 = String(data).split(";");
			var tmp2 = String(tmp1[1]).split(",");
			//cargo el del filter de homepage 
			homeURL = "/homepage/"+parseFilters(tmp1[0]);
			//cargo el submenu de work
			var php = menu[0].submenu[0].php;//le doy el php por defecto
			menu[0].submenu = new Array();
			for(var i=0;i<tmp2.length;i++){
				menu[0].submenu.push({name:tmp2[i],url:"/work/"+parseFilters(tmp2[i]),php:php});
				if(i==tmp2.length-1){
					menu[0].url = "/work/"+parseFilters(tmp2[i]);	
				}
			}
			createSubmenus();
			menuLoaded = true;
			//cuando completa la carga del menu tiro el evento onload
			menuOnLoad();
		}
    });
}
function printMenu(){
	//funcion de prueba que se usa para testear el menu de work que viene desde el cms
	var str = "";
	for(var i=0;i<menu[0].submenu.length;i++){
		str += menu[0].submenu[i].url+" # ";
	}
	alert(str);
}
function setMenu(url){
	var pn = url.split("/");
	var id = "";
	var idsub = "";
	var hit = false;
	var tmp1;
	var tmp2;
	var subcondition1=false;
	var subcondition2=false;
	addRollOvers("menu");//agrego eventos rollover/rollout a todo el menu
	addRollOvers("submenu");//agrego eventos rollover/rollout a todos los submenu
	submenuHideArrows();
	for(var i=0;i<menu.length;i++){
		hit = false;
		id = menu[i].name.toLowerCase();//id del <a>
		//borra los links
		$("#menu #"+id).removeAttr("href");
		$("#menu #"+id).removeAttr("rel");
		//campara el 1er segmento de url con el de primer segmento de la url del submenu -> menu[i].submenu[j].url
		tmp1 = url.split("/");
		if(menu[i].submenu.length > 0){
			//tiene submenu
			for(var j=0;j<menu[i].submenu.length;j++){
				tmp2 = menu[i].submenu[j].url.split("/");
				if(tmp1[1] == tmp2[1]){
					hit = true;	
					if(pn.length > 3){
						$("#menu #"+id).attr("href",menu[i].url);
						$("#menu #"+id).attr("rel","address:"+menu[i].url);
					}
					$("#menu").stop(true).animate({bottom:46},300);//mueve el menu hacia arriba
					break;	
				}
			}
		}else{
			//NO tiene submenu
			tmp2 = menu[i].url.split("/");
			if(tmp1[1] == tmp2[1] && menu[i].type != "external" ){
				hit = true;
				$("#menu").stop(true).animate({bottom:14},300);//mueve el menu hacia abajo
			}
		}
		if(hit){
			$("#menu #"+id).unbind("mouseover");
			$("#menu #"+id).unbind("mouseout");
			$("#menu #"+id).stop(true).animate({color:mainColor},menuTransitionTime);
			//submenu
			if(menu[i].submenu.length > 0){//si tiene submenu lo muestro y loopeo el submenu
				$("#submenu #"+id).stop(true);
				$("#submenu #"+id).css({display:"block"});
				if($("#submenu #"+id).css("opacity") < 1){
					$("#submenu #"+id).delay(10).animate({opacity:1},100);
				}
				for(var j=0;j<menu[i].submenu.length;j++){
					idsub = menu[i].submenu[j].name.toLowerCase();
					$("#submenu #"+id+" #"+idsub).removeAttr("href");
					$("#submenu #"+id+" #"+idsub).removeAttr("rel");
					switch (menu[i].type){
					case "multi":			
						if("/"+tmp1[1] != menu[i].submenu[j].url){
							$("#submenu #"+id+" #"+idsub).attr("href",menu[i].submenu[j].url);
							$("#submenu #"+id+" #"+idsub).attr("rel","address:"+menu[i].submenu[j].url);
							$("#submenu #"+id+" #"+idsub).stop(true).animate({color:menuDefaultColor},menuTransitionTime);
						}else{
							$("#submenu #"+id+" #"+idsub).unbind("mouseover");
							$("#submenu #"+id+" #"+idsub).unbind("mouseout");
							$("#submenu #"+id+" #"+idsub).stop(true).animate({color:mainColor},menuTransitionTime);
							if(tmp1.length == 3){//es porque va a un item
								$("#submenu #"+id+" #"+idsub).attr("href",menu[i].submenu[j].url);
								$("#submenu #"+id+" #"+idsub).attr("rel","address:"+menu[i].submenu[j].url);
							}
						}
						break;
					case "multifilter":			
						if("/"+tmp1[1]+"/"+tmp1[2] != menu[i].submenu[j].url){
							$("#submenu #"+id+" #"+idsub).attr("href",menu[i].submenu[j].url);
							$("#submenu #"+id+" #"+idsub).attr("rel","address:"+menu[i].submenu[j].url);
							$("#submenu #"+id+" #"+idsub).stop(true).animate({color:menuDefaultColor},menuTransitionTime);
						}else{
							$("#submenu #"+id+" #"+idsub).unbind("mouseover");
							$("#submenu #"+id+" #"+idsub).unbind("mouseout");	
							$("#submenu #"+id+" #"+idsub).stop(true).animate({color:mainColor},menuTransitionTime);
							if(tmp1.length == 4){//es porque va a un project
								$("#submenu #"+id+" #"+idsub).attr("href",menu[i].submenu[j].url);
								$("#submenu #"+id+" #"+idsub).attr("rel","address:"+menu[i].submenu[j].url);
								if(i == 0){//
									submenuShowArrows();
								}
							}
						}
						break;
					}
				}
			}
		}else{
			if(menu[i].submenu.length > 0){//si tiene submenu lo oculto
				$("#submenu #"+id).stop(true);
				$("#submenu #"+id).css({display:"none",opacity:0});
			}
			$("#menu #"+id).stop(true).animate({color:menuDefaultColor},menuTransitionTime);
			$("#menu #"+id).attr("href",menu[i].url);
			if(menu[i].type  != "external"){
				//si no es link externo le define el atributo rel
				$("#menu #"+id).attr("rel","address:"+menu[i].url);
			}
		}
	}
	//activa/desactiva el link a homepage del logo
	if(url == homeURL){
		$("#logo").removeAttr("href");
		$("#logo").removeAttr("rel");
		$("#menu").stop(true).animate({bottom:14},300);//reposiciona el menu si estamos home
	}else{
		$("#logo").attr("href","/");
		$("#logo").attr("rel","address:/");
	}
	if(tmp1[0] == "search" || tmp1[0] == "keywords" || tmp1[0] == "favorites"){
		$("#menu").stop(true).animate({bottom:14},300);//reposiciona el menu si estamos en search o keywords
	}
	if(tmp1[0] == "favorites"){
		$("#menu #fav").css({cursor:"auto"});
	}else{
		$("#menu #fav").css({cursor:"pointer"});
	}
	if($.address.pathNames()[0] != "favorites"){
		//$("#menu #fav").mouseout();
		$("#fav #menuFav").stop(true).animate({color:menuDefaultColor},menuTransitionTime);
	}else if($.address.pathNames().length >1){
		$("#fav #menuFav").stop(true).animate({color:mainColor},menuTransitionTime);
	}
	favArrowsVisibility();//controla la visibilidad de las flechas de favs
	refreshColors();
}
function createSubmenus(){
	//crea todos los submenu 
	var id = "";
	var idsub = "";
	var name = ""
	var url = "";
	var html = "";
	$("#submenu").html("");
	for(var i=0;i<menu.length;i++){
		if(menu[i].submenu.length>0){
			id = menu[i].name.toLowerCase();
			html = '<div id="'+id+'">';
			for(var j=0;j<menu[i].submenu.length;j++){
				idsub = menu[i].submenu[j].name.toLowerCase();
				name = menu[i].submenu[j].name;
				url = menu[i].submenu[j].url;
				html += '<a href="'+url+'" rel="address:'+url+'" id="'+idsub+'">'+name+'</a> ';
			}
			if(i == 0){
				//es work y crea el contenedor de las flechas para cambiar projects 
				html += '<div id="submenuArrows"></div>';
			}
			html += '</div>'
			$("#submenu").append(html);
			$("#submenu #"+id).css({opacity:0,top:0});
		}
	}
	$("#submenu a").css({color:menuDefaultColor});
}
function submenuHideArrows(){
	$("#submenuArrows").stop(true);
	$("#submenuArrows").html("");
}
function submenuShowArrows(){
	//tengo que reescribirlo cada vez porque si el submenu display == "none" no funciona el tint de pixastic
	var html = "";
	html += '<div id="prev">';
	html += '<img src="./assets/arrow_menu_left.png" class="submenuArrowOn" onload="tintPNG2(this)"/>';
	html += '<img src="./assets/arrow_menu_left.png" class="submenuArrowOff" onload="tintPNG3(this,\'#181818\')"/>';
	html += '</div>';
	html += '<div id="next">';
	html += '<img src="./assets/arrow_menu_right.png" class="submenuArrowOn" onload="tintPNG2(this)"/>';
	html += '<img src="./assets/arrow_menu_right.png" class="submenuArrowOff" onload="tintPNG3(this,\'#181818\')"/>';
	html += '</div>';
	$("#submenuArrows").html(html);
	$("#submenuArrows #prev").css({cursor:"pointer"});
	$("#submenuArrows #next").css({cursor:"pointer"});
	$("#submenuArrows #prev").mouseover(function() {
		$(this).children(".submenuArrowOff").stop(true).animate({opacity:0},150);
		$(this).children(".submenuArrowOn").stop(true).animate({opacity:1},150);
	});
	$("#submenuArrows #prev").mouseout(function() {
		$(this).children(".submenuArrowOff").stop(true).animate({opacity:1},150);
		$(this).children(".submenuArrowOn").stop(true).animate({opacity:0},150);
	});
	$("#submenuArrows #next").mouseover(function() {
		$(this).children(".submenuArrowOff").stop(true).animate({opacity:0},150);
		$(this).children(".submenuArrowOn").stop(true).animate({opacity:1},150);
	});
	$("#submenuArrows #next").mouseout(function() {
		$(this).children(".submenuArrowOff").stop(true).animate({opacity:1},150);
		$(this).children(".submenuArrowOn").stop(true).animate({opacity:0},150);
	});
	$("#submenuArrows").css({visibility:"visible",opacity:1});
}
function addRollOvers(targetId){
	$("#"+targetId+" a").mouseover(function() {
		$(this).stop(true).animate({color:mainColor},menuTransitionTime);
	});
	$("#"+targetId+" a").mouseout(function() {
		$(this).stop(true).animate({color:menuDefaultColor},menuTransitionTime);
	});
}
function parseFilters(str){
	return String(str.split(" ").join("_")).toLowerCase();
}
function stopEvents(){
	$(document).unbind("click");//elimino el click fuera del form de project.js
	stopHomeSlideShow();
	if(AJAX_LOADING){
		AJAX.abort();
	}
	AJAX_LOADING = false;
	BgOnLoad = null;
	BgOnComplete = null;
	$(document).unbind("keyup");
	stopBackgroundLoader();
}
function getHistory(value){
	var n;
	var result = "";
	if(value < 0){
		n = HISTORY.length+value-1;
		if(n>=0){
			result = HISTORY[n];
		}
	}else{
		n = value;
		if(n<HISTORY.length-1){
			result = HISTORY[n];
		}
	}
	return result; 
}
//---------- BACKGROUND ----------
function changeBg(img1,img2){
	BgLoading = true;
	prelaoderVisibility(true);//activo preloader
	//creo una nueva layer de fondo
	BgLayerNum++;
	BgCounter = 0;
	BgCurrentImages = new Array();
	var html = '';
	if(BgCurrentImages.length){
		$("#BgLayer"+BgLayerNum+" .bg2").unbind("load");
		$("#BgLayer"+BgLayerNum+" .bg3").unbind("load");
	}else{
		$("#BgLayer"+BgLayerNum+" .bg1").unbind("load");
	}
	if(Boolean(img2)){
		/*
		BgCurrentImages = [img1,img2];
		//si vienen 2 imagenes armo el fondo con las clases bg2 y bg3 que son imagenes
		//y con las clases bg4 y bg5 que son las areas grises de la segunda imagen
		html += '<div id="BgLayer'+BgLayerNum+'" class="bgLayer">';
		html += '<img src=".'+img1+'" class="bg2" />';
		html += '<div class="bg5"></div>';
		html += '<img src=".'+img2+'" class="bg3" />';
		html += '<div class="bg4"></div>';
		html += '</div>';
		*/
		BgCurrentImages = [img1,img2];
		//si vienen 2 imagenes armo el fondo con las clases bg2 y bg3 que son imagenes
		//y con las clases bg4 y bg5 que son las areas grises de la segunda imagen
		html += '<div id="BgLayer'+BgLayerNum+'" class="bgLayer">';
		html += '<img src=".'+img1+'" class="bg2" />';
		html += '<div class="bg5"></div>';
		//html += '<img src=".'+img2+'" class="bg3" />';
		html += '<div class="bg4"></div>';
		html += '</div>';
	}else{
		BgCurrentImages = [img1];
		//si viene una sola imagen uso la clase bg1
		html += '<div id="BgLayer'+BgLayerNum+'"  class="bgLayer">';
		html += '<img src=".'+img1+'" class="bg1" />';
		html += '</div>';
	}
	$("#bg").append(html);
	if(Boolean(img2)){
		$("#BgLayer"+BgLayerNum+" .bg4").css({backgroundColor:"#212121"});
		$("#BgLayer"+BgLayerNum+" .bg5").css({backgroundColor:"#212121"});
		$("#BgLayer"+BgLayerNum+" .bg2").load(function(){
			onloadBackground("double");
		});
		/*
		$("#BgLayer"+BgLayerNum+" .bg3").load(function(){
			onloadBackground("double");
		});
		*/
	}else{
		$("#BgLayer"+BgLayerNum+" .bg1").load(function(){
			onloadBackground("simple");
		});
	}
	if(fullScreenMode){
		$("#BgLayer"+BgLayerNum+" .bg1").css({top:0});
		$("#BgLayer"+BgLayerNum+" .bg2").css({top:0});
		$("#BgLayer"+BgLayerNum+" .bg3").css({top:0});
		$("#BgLayer"+BgLayerNum+" .bg4").css({top:0});
		$("#BgLayer"+BgLayerNum+" .bg5").css({top:0});
	}
}
function onloadBackground(type){
	var speed = 300;
	var delay = 10;
	BgCounter++;
	//al completar la carga de la/s imagen/es hace fade-in
	//al completar el fade-in elimina el fondo viejo -> cleanBg()
	if(type == "simple"){
		var BG1 = $("#BgLayer"+BgLayerNum+" .bg1");
		//if(BgCounter >= 1 && BG1.width() > 10 && BG1.height() > 10){
		if(BgCounter == 1){
		BgLayerNumResize = BgLayerNum;
		resizeBackground();
		if(BgOnComplete != null){
			BgOnComplete();
			BgOnComplete = null;
		}
		$("#BgLayer"+BgLayerNum).delay(delay).animate({opacity:1},speed, function(){
			cleanBg();
			if(BgOnLoad != null){
				BgOnLoad();
				BgOnLoad = null;
			}
			BgLoading = false;
		});
		prelaoderVisibility(false);
		}
	}else{
		/*
		var BG2 = $("#BgLayer"+BgLayerNum+" .bg2");
		var BG3 = $("#BgLayer"+BgLayerNum+" .bg3");
		if(BgCounter == 2){
			BgLayerNumResize = BgLayerNum;
			resizeBackground();
			if(BgOnComplete != null){
				BgOnComplete();
				BgOnComplete = null;
			}
			$("#BgLayer"+BgLayerNum+" .bg4").css({opacity:1});//$("#BgLayer"+BgLayerNum+" .bg4").css({opacity:0.9});
			$("#BgLayer"+BgLayerNum).delay(delay).animate({opacity:1},speed, function(){
				cleanBg();
				if(BgOnLoad != null){
					BgOnLoad();
					BgOnLoad = null;
				}
				BgLoading = false;
			});
			prelaoderVisibility(false);
			if(BgSecondImageClick != null){
				BgSecondImageClickEvent = BgSecondImageClick;
				$("#BgLayer"+BgLayerNum+" .bg4").click(function(){BgSecondImageClickEvent();});
				BgSecondImageClick = null;
			}
		}
		*/
		var BG2 = $("#BgLayer"+BgLayerNum+" .bg2");
		var BG3 = $("#BgLayer"+BgLayerNum+" .bg3");
		//if(BgCounter == 2){
			BgLayerNumResize = BgLayerNum;
			resizeBackground();
			if(BgOnComplete != null){
				BgOnComplete();
				BgOnComplete = null;
			}
			$("#BgLayer"+BgLayerNum+" .bg4").css({opacity:1});//$("#BgLayer"+BgLayerNum+" .bg4").css({opacity:0.9});
			$("#BgLayer"+BgLayerNum).delay(delay).animate({opacity:1},speed, function(){
				cleanBg();
				if(BgOnLoad != null){
					BgOnLoad();
					BgOnLoad = null;
				}
				BgLoading = false;
			});
			prelaoderVisibility(false);
		//}
	}
}
function resizeBackground(){
	//defuno ancho y alto minimo
	var w = 900;
	var h = 700;
	var width = (WINDOW_WIDTH>w) ? WINDOW_WIDTH : w;
	var height = (WINDOW_HEIGHT>h) ? WINDOW_HEIGHT : h;
	//height -= 136+$("#header").position().top;//le resto el alto del header
	height -= ((fullScreenMode) ? 0 : 136);
	//justo el tamaño del fondo
	/*
	uso BgLayerNumResize porque BgLayerNum cambia al agregar una nueva layer
	y si dispara el resize mientras esta cargando la layer nueva genera errores 
	en la layer anterior
	*/
	$("#BgLayer"+BgLayerNumResize+" .bg1").css({width:width,height:"auto"});
	if($("#BgLayer"+BgLayerNumResize+" .bg1").height()<height){
		$("#BgLayer"+BgLayerNumResize+" .bg1").css({width:"auto",height:height});
	}
	$("#BgLayer"+BgLayerNumResize+" .bg2").css({width:"auto",height:height});
	var x = $("#BgLayer"+BgLayerNumResize+" .bg2").width();
	$("#BgLayer"+BgLayerNumResize+" .bg3").css({width:"auto",height:height,left:x});
	$("#BgLayer"+BgLayerNumResize+" .bg4").css({left:x});
	$("#BgLayer"+BgLayerNumResize+" .bg5").css({left:x});
}
function cleanBg(){
	//controla hasta 10 capas que puedan haber quedado
	var inin = BgLayerNum-10;
	if(inin < 0){
		inin = 0;
	}
	for(var i=inin;i<(BgLayerNum);i++){
		if($("#bg #BgLayer"+i).length > 0){
			$("#bg #BgLayer"+i).stop(true);
			$("#bg #BgLayer"+i).remove();
		}
	}
}
function removeBg(){
	cleanBg();
	$("#BgLayer"+BgLayerNum).stop(true);
	$("#BgLayer"+BgLayerNum).animate({opacity:0},100,function(){
		$(this).remove();
	});
}
function setScreenMode(mode){
	if(mode == "fullscreen"){
		fullScreenMode = true;
		BgOnLoad = setFullScreenMode;
		changeBg(BgCurrentImages[0],BgCurrentImages[1]);
	}else{
		setNormalScreenMode();
	}
}
function setNormalScreenMode(){
	/*
	//modo seguro para controllers del navegador pero sin fade-in
	var speed = 300;
	if($("#bg").position().top < 136){
		$("#header").stop(true).animate({top:0}, speed,function(){
			fullScreenMode = false;
			resizeBackground();
		});
		$("#bg").stop(true).animate({top:136}, speed);
		$(".bg1").stop(true).animate({top:136}, speed);
		$(".bg2").stop(true).animate({top:136}, speed);
		$(".bg3").stop(true).animate({top:136}, speed);
		$(".bg4").stop(true).animate({top:136}, speed);
		$(".bg5").stop(true).animate({top:136}, speed);
		$("#content").stop(true).animate({top:136}, speed);
		$("#footer").stop(true).fadeIn(speed);
	}
	*/
	var speed = 300;
	if($("#bg").position().top < 136){
		$("#header").stop(true).animate({top:0}, speed,function(){
			fullScreenMode = false;
			BgOnLoad = setNormalScreenMode;
			changeBg(BgCurrentImages[0],BgCurrentImages[1]);
		});
		$("#bg").stop(true).animate({top:136}, speed);
		$(".bg1").stop(true).animate({top:136}, speed);
		$(".bg2").stop(true).animate({top:136}, speed);
		$(".bg3").stop(true).animate({top:136}, speed);
		$(".bg4").stop(true).animate({top:136}, speed);
		$(".bg5").stop(true).animate({top:136}, speed);
		$("#content").stop(true).animate({top:136}, speed);
		$("#footer").stop(true).fadeIn(speed);
	}
}
function setFullScreenMode(){
	var speed = 300;
	if(fullScreenMode && $("#bg").position().top > 0){
		$("#header").stop(true).animate({top:-136}, speed,function(){
			resizeBackground();
		});
		$("#bg").stop(true).animate({top:0}, speed);
		$(".bg1").stop(true).animate({top:0}, speed);
		$(".bg2").stop(true).animate({top:0}, speed);
		$(".bg3").stop(true).animate({top:0}, speed);
		$(".bg4").stop(true).animate({top:0}, speed);
		$(".bg5").stop(true).animate({top:0}, speed);
		$("#content").stop(true).animate({top:0}, speed);
		$("#footer").stop(true).fadeOut(speed);
	}
}
//---------- PRELOADER ----------
function prelaoderInit(){
	if(preloaderId.substring(0,1) != "#"){
		preloaderId = "#"+preloaderId;
	}
	preloaderCounter = 0;
	prelaoderTotalFrames = preloaderFrames.length;
	var html = "";
	for(var i=0;i<prelaoderTotalFrames;i++){
		html += "<img src='"+preloaderFrames[i]+"' id='p"+i+"' class='preloaderIcon' onload='preloaderOnloadFrame()'/>";
	}
	$(preloaderId).html(html);
}
function prelaoderVisibility(value){
	if(prelaoderLoaded){
		resetPreloader();
		if(value){
			$(preloaderId).css({opacity:0});
			$(preloaderId).delay(10).animate({opacity:1},10);	
			preloaderInterval = setInterval("preloaderAnimationEvent()",33);	
		}
	}
}
function resetPreloader(){
	$(preloaderId).stop(true);
	clearInterval(preloaderInterval);
	for(var i=0;i<24;i++){
		$(preloaderId+" #p"+i).css({display:"none"});
	}	
}
function preloaderAnimationEvent(){
	preloaderCounter++;
	var prev = preloaderCounter-1;
	if(preloaderCounter>=prelaoderTotalFrames){
		preloaderCounter = 0;
		prev=prelaoderTotalFrames-1;
	}	
	$(preloaderId+" #p"+preloaderCounter).css({display:"block"});
	$(preloaderId+" #p"+prev).css({display:"none"});
}
function preloaderOnloadFrame(){
	preloaderCounter ++;
	if(preloaderCounter >= prelaoderTotalFrames){
		preloaderCounter = 0;
		prelaoderLoaded = true;
		//prelaoderVisibility(true);
		preloaderOnLoadFrames();
	}
}
//---------- FOOTER ----------
function reposFooter(){
	//reposiciona footer
	var y = WINDOW_HEIGHT-34;
	// define el minimo
	if(y<710){
		y=710;
	}
	$("#footer").css({top:y});
}
//---------- TINT ----------
function tintPNG(target,color){
	var rgb = hexaToRGBpixastic(color);	
	$(target).pixastic("desaturate").pixastic("coloradjust",{red:rgb[0],green:rgb[1],blue:rgb[2]});
}
function tintPNG2(target){
	var rgb = hexaToRGBpixastic(mainColor);	
	$(target).pixastic("desaturate").pixastic("coloradjust",{red:rgb[0],green:rgb[1],blue:rgb[2]});
}
function tintPNG3(target,color){
	$(target).css({opacity:1});
	var rgb = hexaToRGBpixastic(color);	
	$(target).pixastic("desaturate").pixastic("coloradjust",{red:rgb[0],green:rgb[1],blue:rgb[2]});
}
function tintPNG4(target){
	var rgb = hexaToRGBpixastic(secondColor);	
	$(target).pixastic("desaturate").pixastic("coloradjust",{red:rgb[0],green:rgb[1],blue:rgb[2]});
}
function tintPNGFromId(id,color){
	var rgb = hexaToRGBpixastic(color);	
	$("#"+id).pixastic("desaturate").pixastic("coloradjust",{red:rgb[0],green:rgb[1],blue:rgb[2]});
}
function hexaToDec(num){
	return parseInt(num,16);
}
function hexaToRGBpixastic(num){
	var value = num.split("#").join("");
	var r = value.substring(0,2);
	var g = value.substring(2,4);
	var b = value.substring(4,6);
	var rr = (hexaToDec(r)/255)-1;
	var gg = (hexaToDec(g)/255)-1;
	var bb = (hexaToDec(b)/255)-1;
	var result = [rr,gg,bb]
	return result;
}
function cssToHexa(val){
	var value = val;
	value = value.split("rgb(").join("");
	value = value.split(")").join("");
	value = value.split(" ").join("");
	var rgb = value.split(",");
	var result = "#"+Number(rgb[0]).toString(16)+Number(rgb[1]).toString(16)+Number(rgb[2]).toString(16);
	return result;
}
function parseColorHexa(str){
	var hexa = str.split("#").join("");
	if(hexa.length > 6){
		hexa = hexa.substring(0,6);
	}
	hexa = hexa.toUpperCase();
	var hexaChars = ["A","B","C","D","E","F","0","1","2","3","4","5","6","7","8","9"];
	var hit;
	var result = "#";
	var totalChars = hexa.length
	if(totalChars<6){
		for(var i=(6-totalChars);i<6;i++){
			hexa += "0";
		}
	}
	for(var i=0;i<6;i++){
		hit = false;
		for(var j=0;j<hexaChars.length;j++){
			if(hexa.substring(i,(i+1)) == hexaChars[j]){
				result += hexa.substring(i,(i+1));
				hit = true;
				break;
			}
		}
		if(!hit){
			result += "0";
		}
	}
	return result;
}
function controlHexa(str){
	var hexa = String(str).toUpperCase().split("#").join("");
	var result = true;
	var hexaChars = ["A","B","C","D","E","F","0","1","2","3","4","5","6","7","8","9"];
	if(hexa.length == 6){
		for(var i=0;i<6;i++){
			hit = false;
			for(var j=0;j<hexaChars.length;j++){
				if(hexa.substring(i,(i+1)) == hexaChars[j]){
					hit = true;
					break;
				}
			}
			if(!hit){
				result = false;
				break;
			}
		}
	}else{
		result = false;
	}
	return result;
}
//---------- GLOBAL FUNCTIONS ----------
function hitTestPoint(target,mx,my){
	var y = target.offset().top;
	var x = target.offset().left;
	var w = x+target.width();
	var h = y+target.height();
	return Boolean(mx>=x && mx<=w && my>=y && my<=h);
};
function hitTestObject(target1,target2){
	var y = target2.offset().top;
	var x = target2.offset().left;
	var w = target2.width();
	var h = target2.height();
	var hit1 = hitTestPoint(target1,x,y);
	var hit2 = hitTestPoint(target1,x+w,y);
	var hit3 = hitTestPoint(target1,x+w,y+h);
	var hit4 = hitTestPoint(target1,x,y+h);
	return Boolean(hit1 || hit2 || hit3 || hit4);
};
function capitalizeText(str){
	return str.substring(0,1).toUpperCase()+str.substring(1,str.length);
}
function startBackgroundLoader(data){
	BackgroundLoader.counter = 0;
	//if(!compareBackgroundLoaderData(data)){
	BackgroundLoader.data = data;
	BackgroundLoader.index = 0;
	//}
	$("body").append('<div id="backgroundLoader" style="position:fixed;top:0px;left:0px;display:none;width:1000px;height:50px;overflow:hidden;"></div>');
	BackgroundLoaderLoad();
}
function BackgroundLoaderLoad(){
	if(BackgroundLoader.index < BackgroundLoader.data.length){
		var n = BackgroundLoader.index;
		var data = BackgroundLoader.data;
		var html = '<img src=".'+data[n]+'" id="bglimg_'+n+'" style="position:absolute;top:0px;left:'+(50*n)+'px;"/>';
		$("#backgroundLoader").append(html);
		$("#bglimg_"+n).load(function(){
			BackgroundLoaderOnLoad();
		})
	}
}
function BackgroundLoaderOnLoad(){
	BackgroundLoader.counter++;
	//$("#infoBG").append(($("#bglimg_"+BackgroundLoader.counter).height())+"//");
	//if($("#bglimg_"+BackgroundLoader.counter).height() != null){
	BackgroundLoader.index ++;
	BackgroundLoader.counter = 0;
	BackgroundLoaderLoad();
	//}
}
function stopBackgroundLoader(){
	if($("#backgroundLoader").length > 0){
		var n = BackgroundLoader.index;
		$("#bglimg_"+n).unbind("load");
		$("#backgroundLoader").remove();
	}
}
function compareBackgroundLoaderData(data){
	var result = true;
	if(jQuery.type(BackgroundLoader.data) == "array"){
		if(data.length != BackgroundLoader.data.length){
			result = false;
		}else{
			for(var i=0;i<BackgroundLoader.data.length;i++){
				for(var j=0;j<data.length;j++){
					if(BackgroundLoader.data[i] != data[j]){
						result = false;
						break;
					}
				}
			}
		}
	}else{
		result = false;	
	}
	return result;
}
//---------- SEARCH ----------
function setSearchEvents(){
	$("#searchBox").css({height:25});
	$("#searchBox").focus(function(){
		//$(this).css({width:206});
		$(this).css({textIndent:4,fontFamily:'NeuzeitGroTOTRegular'});
		if($("#menu #fav").css("visibility") == "visible"){
			$(this).stop(true).animate({width:206,color:mainColor},300,function(){
				$(this).animate({backgroundColor:"#222222"},150);
			});
		}else{
			$(this).stop(true).css({width:206}).animate({color:mainColor,backgroundColor:"#222222"},150);
		}
		var value = $(this).val().toLowerCase().split(" ").join("");
		if(value == "search"){
			$(this).val("");
		}
		searchFocus = true;
	});
	$("#searchBox").blur(function(){
		$(this).css({textIndent:0,fontFamily:'NeuzeitGroTOTBold'});
		$(this).stop(true).animate({backgroundColor:"#393939"},150, function(){
			$(this).animate({width:43},300);	
		});
		$(this).css({color:menuDefaultColor});
		var value = $(this).val().toLowerCase().split(" ").join("");
		//if(value == ""){
			$(this).val("Search");
		//}
		searchFocus = false;
	});
	$("#searchBox").keypress(function(e){
		if(searchFocus){
			if(e.which == 13){
				var value = $("#searchBox").val().toLowerCase().split(" ").join("");
				if(value != ""){
					var keys = $("#searchBox").val().toLowerCase().split(" ").join("+");
					window.location = "#/search/"+keys;
					$(this).val("");
					$(this).blur();
				}	
			}
		}
	});
	$("#searchBox").mouseover(function(){
		if(!searchFocus){
			$(this).stop(true).animate({color:mainColor},menuTransitionTime);	
		}
	});
	$("#searchBox").mouseout(function(){
		if(!searchFocus){
			$(this).stop(true).animate({color:menuDefaultColor},menuTransitionTime);	
		}
	});
}
//---------- FAVORITES ----------
var favData = new Array();
var favProjectCurrentSlug = "";
var favListPosition = 0;
function setFavEvents(){
	$("#menu #fav #menuFav").css({cursor:"pointer"});
	$("#menu #fav #menuFav").mouseover(function(){
		if($.address.pathNames()[0] != "favorites"){
			$(this).stop(true).animate({color:mainColor},menuTransitionTime);
		}
	});
	$("#menu #fav #menuFav").mouseout(function(){
		if($.address.pathNames()[0] != "favorites"){
			$(this).stop(true).animate({color:menuDefaultColor},menuTransitionTime);
		}
	});
	$("#menu #fav #menuFav").click(function(){
		window.location = "#/favorites";
	});
	if($.browser.mozilla){
		//firefox por alguna razon no toma la posicion desde el css
		$("#menu #favArrows").css({right:-68,top:8});//fix firefox margin offset
	}else{
		$("#menu #favArrows").css({right:-48,top:7});
	}
}
function addToFavs(_slug){//agrega/elimina (toggle) items a favoritos
	var lengthprev = favData.length;
	var slug = String(_slug).split("\r").join("");
	slug = slug.split("\n").join("");
	hit = false;
	for(var i=0;i<favData.length;i++){
		if(favData[i] == slug){
			hit = true;
			break;
		}
	}
	if(!hit){
		favData.push(slug);
		updateFavs();
	}else{
		removeFromFavs(slug);
	}
} 
function removeFromFavs(_slug){//elimina Items de Favoritos
	var lengthprev = favData.length;
	var slug = String(_slug).split("\r").join("");
	slug = slug.split("\n").join("");
	var hit = -1;
	for(var i=0;i<favData.length;i++){
		if( favData[i] == slug){
			hit = i;
			favData.splice(hit,1);
			break;
		}
	}
	updateFavs();
}
function removeFavsFromList(slug){
	removeFromFavs(slug);
	reloadFavList();
}
function updateFavs(){	//actualiza la lista de favs
	testMenuFavButton();
	testFavsArrows();
}
function reloadFavList(){
	//carga el php vía ajax
	if(AJAX_LOADING){
		AJAX.abort();
	}
	AJAX_LOADING = true;
	favListPosition = $("#workList #holder").position().left;
	$("#content").animate({opacity:0},100);
	prelaoderVisibility(true);
	AJAX = $.ajax({
		//cms_status le dice al fdata.php si usa los datos publicados o preview
		url: "favorites.php?cms_status="+cms_status+"&url=favorites/"+String(favData),
		success: function(data) {
			//cuando complata la carga le pasa el contenido al div
			loadHTML(data);
			AJAX_LOADING = false;
			prelaoderVisibility(false);
			reposFavList();
		}
	});
}
function reposFavList(){
	var maxScroll = getWorkListMaxScroll(favData.length);//funcion de work.js	
	if(favListPosition < maxScroll && favListPosition < 0){
		favListPosition = maxScroll;
	}
	if(favListPosition > 0){
		favListPosition = 0;
	}
	$("#workList #holder").css({left:favListPosition});
	setWorkListX(favListPosition);//funcion de work.js
}
function getFavStatus(slug){//devuelve si un slug esta o no en favs
	for(var i=0;i<favData.length;i++){
		if(favData[i] == slug){
			return true;
			break;	
		}
	}
}
function testMenuFavButton(){//mouestra/oculta el boton de favoritos del menu
	if(favData.length>0){
		//$("#menu #fav span").html("Favorites ("+favData.length+")");
		$("#menu #fav").stop(true).css({visibility:"visible"});
	}else{
		$("#menu #fav").stop(true).css({visibility:"hidden",opacity:0}).animate({opacity:1},100);
	}	
}
function testFavsArrows(){
	//testea si tiene que meter las flechas de favs si hay mas de un project
	//el contenedor de las flechas se recarga o se vacia para evitar errores de tint en los png (pixastic library)
	if(favData.length>1){
		var html = "";
		html += '<div id="prev">';
		html += '<img src="./assets/arrow_menu_left.png" class="favArrowOn" onload="tintPNG2(this)"/>';
		html += '<img src="./assets/arrow_menu_left_off.png" class="favArrowOff"/>';
		html += '</div>';
		html += '<div id="next">';
		html += '<img src="./assets/arrow_menu_right.png" class="favArrowOn" onload="tintPNG2(this)"/>';
		html += '<img src="./assets/arrow_menu_right_off.png" class="favArrowOff"/>';
		html += '</div>';
		$("#menu #favArrows").html(html);
		$("#menu #favArrows #prev").mouseover(function() {
			$(this).children(".favArrowOff").stop(true).animate({opacity:0},150);
			$(this).children(".favArrowOn").stop(true).animate({opacity:1},150);
		});
		$("#menu #favArrows #prev").mouseout(function() {
			$(this).children(".favArrowOff").stop(true).animate({opacity:1},150);
			$(this).children(".favArrowOn").stop(true).animate({opacity:0},150);
		});
		$("#menu #favArrows #next").mouseover(function() {
			$(this).children(".favArrowOff").stop(true).animate({opacity:0},150);
			$(this).children(".favArrowOn").stop(true).animate({opacity:1},150);
		});
		$("#menu #favArrows #next").mouseout(function() {
			$(this).children(".favArrowOff").stop(true).animate({opacity:1},150);
			$(this).children(".favArrowOn").stop(true).animate({opacity:0},150);
		});
		$("#menu #favArrows #prev").click(function() {
			changeFavProject(-1);
		});
		$("#menu #favArrows #next").click(function() {
			changeFavProject(1);
		});
	}else{
		$("#menu #favArrows").stop(true);
		$("#menu #favArrows").html("");
	}
}
function favArrowsVisibility(){
	/*
	visibilidad de las flechas para pasar projects en favs, se usa al ir
	de la lista de favs al project o viceversa 
	*/
	var pn = $.address.pathNames();//defino los segmentos de la url del navegador
	var visibility = (pn.length > 1 && pn[0] == "favorites" && favData.length>1) ? "visible" : "hidden";
	var cursor = (pn.length > 1) ? "pointer" : "auto";
	$("#menu #favArrows").css({visibility:visibility,opacity:1});
	$("#menu #favArrows #prev").css({cursor:cursor});
	$("#menu #favArrows #next").css({cursor:cursor});
}
function changeFavProject(value){//entra a un project dentro de favs
	if(favProjectCurrentSlug != ""){
		var url = "";
		for(var i=0;i<favData.length;i++){
			if(favData[i] == favProjectCurrentSlug){
				if(value < 1){
					if(i > 0){
						url = "#/favorites/"+favData[(i-1)];
					}else{
						url = "#/favorites/"+favData[favData.length-1];	
					}
				}else{
					if(i < favData.length-1){
						url = "#/favorites/"+favData[(i+1)];
					}else{
						url = "#/favorites/"+favData[0];	
					}
				}
				break;	
			}
		}
		if(url != ""){
			favProjectCurrentSlug = "";
			window.location = url;
		}
	}
}

