// Sergi Meseguer http://www.zigotica.com/ 


var AJAX = {
		
/*::::::::::::::::::::::::::::::::: AJAX STUFF :::::::::::::::::::::::::::::::::*/
		ajaxify : function() {
			// sends vote-like or add_to_favs ajax forms
			$(".to_faves, .i_like_it").livequery(function(i){

				$(this).submit( function() {
					var vars = $(this).serialize() || null; 
					var myF = this;
					
					// add ajax loader div to actions:
					$('.link_actions').prepend("<div id='actions_spinner'></div>");
					$('#actions_spinner').fadeIn();
					
		 		 	$.ajax({
				 		type: $(myF).attr("method"),
				 		url: $(myF).attr("action"),							
						data : vars, 
						dataType: "html",						

						error: function(data, msg, err){
				 			alert("Por favor, prueba a realizar la acción más tarde, el servidor devuelve un error");
							$('#actions_spinner').remove();
				 		},
											
					 	success: function(data){
								$(".resource_detail_ratings, .coolsite_detail_data, .project_detail_ratings").replaceWith(data);
								$('#actions_spinner').remove();
				 		}
				 	});
					 	
					return false;
		    	} );
			});
		},

		doAcceptDelete : function() {
			// accepts or rejects friend requests + deletes favourites from profile 
			$("#profile_contacts .friend_request_actions a, #profile_contacts .tooltip_users_list a.remove, #profile_faves .result_list a.remove, #profile_faves .result_list a.delete_coolsite").livequery(function(i){
				$(this).click( function() {
					if (!confirm("¿Estás seguro?")) return false;
					
					var linc = this;
					var splitted = $(this).attr("href").split("/");

					var myReqID = splitted[splitted.length - 2];
					var myAction = splitted[splitted.length - 1]; 
					var URLaction = ""; 
						if(myAction == "confirmar_aceptar") URLaction = "aceptar";
						if (myAction == "confirmar_eliminar" || myAction == "confirmar_borrar") var actionParams = "_method=delete";


					var parentLI = this;
					while (parentLI.tagName != "LI") parentLI = parentLI.parentNode;
					
					var elmPendientes = $("#contacts_requests strong");
					var elmContactos = $("#accepted_contacts strong");
					var elmCounter = $("#accepted_contacts strong");
					if(elmPendientes != null) url = "/contactos/"+myReqID+"/"+URLaction;
					if(myAction == "confirmar_borrar") url = "/favoritos/"+myReqID+"/";
					
		 		 	$.ajax({
				 		type: "POST",
						url: url,							
						data : actionParams, 
						dataType: "html",						

						error: function(data, msg, err){
				 			alert("Por favor, prueba a realizar la acción más tarde, el servidor devuelve un error");
				 		},
											
					 	success: function(data){							
							// contactos
							if(myAction == "confirmar_aceptar") {
								if ($(".tooltip_users_list").length == 0) $(".friend_request_list").after(data);
								else $(".tooltip_users_list").append(data);
								$(elmContactos).html( $(elmContactos).text() -1 + 2 + '<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
							}
							if($(parentLI).parent().hasClass("friend_request_list")) {
								if($(elmPendientes).text() == "1") $(elmPendientes).html('0<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
								else $(elmPendientes).html( $(elmPendientes).text() - 1  + '<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
							}
							if($(parentLI).parent().hasClass("tooltip_users_list")) {
								if($(elmContactos).text() == "1") $(elmContactos).html('0<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
								else $(elmContactos).html( $(elmContactos).text() - 1  + '<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
							}
							
							// favoritos	
							if($(linc).hasClass("delete_coolsite")) {
								var c = $(parentLI).parent().parent().find("strong:first");
								if($(c).text() == "1") $(c).html('0<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
								else $(c).html( $(c).text() - 1  + '<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
							}
							if($(parentLI).parent().parent().hasClass("result_list")) {
								var c = $(parentLI).parent().parent().prev().find("strong");
								if($(c).text() == "1") $(c).html('0<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
								else $(c).html( $(c).text() - 1  + '<span class="rc ne"/><span class="rc nw"/><span class="rc se"/><span class="rc sw"/>');
							}
														
							$(parentLI).fadeOut(1000).end().remove();
				 		}
				 	});
					 	
					return false;
		    	} );
			});
		},

		// copypaste ajax proyectos home a partir de coolsites
		loadProjectsLinks : function() {
			$(".home_projects_list a.next_items ").click( function(){
				AJAX.showNextProjects();
				return false;
			});
			$(".home_projects_list a.previous_items ").click( function(){
				AJAX.showPrevProjects();
				return false;
			});			
			AJAX.onscreenProjects = AJAX.projectsStartAt = 4;
			$("#home_projects_list li").addClass("csvisible");

			$(".cscargando").removeClass("cscargando");
			$(".cslicargando").removeClass("cslicargando");
		},
		
		loadProjects : function(dir) {
			AJAX.csLoading = 1;
			AJAX.csBufferLoaded = 0;
			//alert("AJAX.projectsStartAt: " + AJAX.projectsStartAt + " LIs: " + $('#home_projects_list li').length);
			if(!dir) st = AJAX.projectsStartAt; 			// next
			else st = $("#home_projects_list li").length; 	// prev
			//alert("st at " + st);

			$("#home_projects_list li.csvisible").fadeOut(1000);
			$("#home_projects_list").css("background", "#282829 url(../graphic/common/ajax-loader.gif) no-repeat center center");
								
			 $.ajax({
			 	type: "POST",
				url: "/",							
				data : "projects_page=" + st, 
				dataType: "html",						
						
				error: function(data, msg, err){
				 			alert("Por favor, prueba a realizar la acción más tarde, el servidor devuelve un error");
					AJAX.csLoading = 0;
					$("#home_projects_list li.csvisible").fadeIn(1000);
					$("#home_projects_list").css("background", "#282829");
				},
												
				success: function(data){
					if(!dir) AJAX.projectsStartAt += 4; // next
					else AJAX.projectsStartAt = st + 4; // prev
							
					//$("#home_projects_list li.csvisible").removeClass("csvisible");
					$("#home_projects_list").append(data);
					//$(".cslicargando").hide();
					
					$("#home_projects_list a.cscargando img").bind("load error", function(e) {						
							AJAX.csBufferLoaded++;
							
							//$(this).parent().fadeOut(600).removeClass("cscargando");
							//$(this).parent().parent().parent().removeClass("cslicargando").fadeIn(1000).addClass("csvisible");
							
							
							if (AJAX.csBufferLoaded == $(".cscargando").length) { // not always AJAX.onscreenProjects
								AJAX.csLoading = 0;
								$("#home_projects_list").css("background", "#282829");
								
								$("#home_projects_list li.csvisible").hide().removeClass("csvisible");
								$(".cscargando").removeClass("cscargando");
								$(".cslicargando").fadeIn(1000).removeClass("cslicargando").addClass("csvisible");
							}
							
				    }); 

				 }
			});	

		},


		showPrevProjects : function() {		
			if(AJAX.csLoading == 1) return;
			//alert("LIs: " + $("#home_projects_list li").length + " st: " + AJAX.projectsStartAt + " visibleLI: " + $("#home_projects_list li.csvisible").length + " onscreenProjects: " + AJAX.onscreenProjects)

			if(AJAX.projectsStartAt <= 4) { 
				//alert("dont have these images yet, load them");
				AJAX.loadProjects(1);				
			}
			else if($("#home_projects_list li.csvisible").length <= AJAX.onscreenProjects) {
				//alert("already loaded previous stuff, slide right");
				$("#home_projects_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = AJAX.projectsStartAt - 5; a > AJAX.projectsStartAt - 9; a--)  {
						$("#home_projects_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.projectsStartAt -= 4;			
				}, 1200);
			}
			else if($("#home_projects_list li").length > AJAX.projectsStartAt) {
				//alert("cannot load more stuff, move on to beginning");
				$("#home_projects_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = 0; a < AJAX.onscreenProjects ; a++)  {
						$("#home_projects_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.projectsStartAt = 4;			
				}, 1200);
			}

		},
		
		showNextProjects : function() {
			if(AJAX.csLoading == 1) return;
			//alert("LIs: " + $("#home_projects_list li").length + " st: " + AJAX.projectsStartAt + " visibleLI: " + $("#home_projects_list li.csvisible").length + " onscreenProjects: " + AJAX.onscreenProjects)
			
			if($("#home_projects_list li").length <= AJAX.projectsStartAt && $("#home_projects_list li.csvisible").length == AJAX.onscreenProjects) { 
				//alert("dont have these images yet, load them");
				AJAX.loadProjects();
			}

			else if($("#home_projects_list li").length <= AJAX.projectsStartAt) {
				//alert("cannot load more stuff, move on to beginning");
				$("#home_projects_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = 0; a < AJAX.onscreenProjects ; a++)  {
						$("#home_projects_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.projectsStartAt = 4;			
				}, 1200);
			}
			else if($("#home_projects_list li.csvisible").length == AJAX.onscreenCoolsites) {
				//alert("already loaded next stuff, slide left");
				$("#home_projects_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = AJAX.projectsStartAt + 3; a > AJAX.projectsStartAt -1; a--)  {
						$("#home_projects_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.projectsStartAt += 4;			
				}, 1200);
			}
		},
		// fin copypaste ajax proyectos home a partir de coolsites

		loadCoolsitesLinks : function() {
			$(".home_coolsites_list a.next_items ").click( function(){
				AJAX.showNextCoolsites();
				return false;
			});
			$(".home_coolsites_list a.previous_items ").click( function(){
				AJAX.showPrevCoolsites();
				return false;
			});			
			AJAX.onscreenCoolsites = AJAX.coolsitesStartAt = 4;
			$("#home_coolsites_list li").addClass("csvisible");

			$(".cscargando").removeClass("cscargando");
			$(".cslicargando").removeClass("cslicargando");
		},
		
		loadCoolsites : function(dir) {
			AJAX.csLoading = 1;
			AJAX.csBufferLoaded = 0;
			//alert("AJAX.coolsitesStartAt: " + AJAX.coolsitesStartAt + " LIs: " + $('#home_coolsites_list li').length);
			if(!dir) st = AJAX.coolsitesStartAt; 			// next
			else st = $("#home_coolsites_list li").length; 	// prev
			//alert("st at " + st);

			$("#home_coolsites_list li.csvisible").fadeOut(1000);
			$("#home_coolsites_list").css("background", "#282829 url(../graphic/common/ajax-loader.gif) no-repeat center center");
								
			 $.ajax({
			 	type: "POST",
				url: "/",							
				data : "coolsites_page=" + st, 
				dataType: "html",						
						
				error: function(data, msg, err){
				 			alert("Por favor, prueba a realizar la acción más tarde, el servidor devuelve un error");
					AJAX.csLoading = 0;
					$("#home_coolsites_list li.csvisible").fadeIn(1000);
					$("#home_coolsites_list").css("background", "#282829");
				},
												
				success: function(data){
					if(!dir) AJAX.coolsitesStartAt += 4; // next
					else AJAX.coolsitesStartAt = st + 4; // prev
							
					//$("#home_coolsites_list li.csvisible").removeClass("csvisible");
					$("#home_coolsites_list").append(data);
					//$(".cslicargando").hide();
					
					$("#home_coolsites_list a.cscargando img").bind("load error", function(e) {						
							AJAX.csBufferLoaded++;
							
							//$(this).parent().fadeOut(600).removeClass("cscargando");
							//$(this).parent().parent().parent().removeClass("cslicargando").fadeIn(1000).addClass("csvisible");
							
							
							if (AJAX.csBufferLoaded == $(".cscargando").length) { // not always AJAX.onscreenCoolsites
								AJAX.csLoading = 0;
								$("#home_coolsites_list").css("background", "#282829");
								
								$("#home_coolsites_list li.csvisible").hide().removeClass("csvisible");
								$(".cscargando").removeClass("cscargando");
								$(".cslicargando").fadeIn(1000).removeClass("cslicargando").addClass("csvisible");
							}
							
				    }); 

				 }
			});	

		},


		showPrevCoolsites : function() {		
			if(AJAX.csLoading == 1) return;
			//alert("LIs: " + $("#home_coolsites_list li").length + " st: " + AJAX.coolsitesStartAt + " visibleLI: " + $("#home_coolsites_list li.csvisible").length + " onscreenCoolsites: " + AJAX.onscreenCoolsites)

			if(AJAX.coolsitesStartAt <= 4) { 
				//alert("dont have these images yet, load them");
				AJAX.loadCoolsites(1);				
			}
			else if($("#home_coolsites_list li.csvisible").length <= AJAX.onscreenCoolsites) {
				//alert("already loaded previous stuff, slide right");
				$("#home_coolsites_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = AJAX.coolsitesStartAt - 5; a > AJAX.coolsitesStartAt - 9; a--)  {
						$("#home_coolsites_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.coolsitesStartAt -= 4;			
				}, 1200);
			}
			else if($("#home_coolsites_list li").length > AJAX.coolsitesStartAt) {
				//alert("cannot load more stuff, move on to beginning");
				$("#home_coolsites_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = 0; a < AJAX.onscreenCoolsites ; a++)  {
						$("#home_coolsites_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.coolsitesStartAt = 4;			
				}, 1200);
			}

		},
		
		showNextCoolsites : function() {
			if(AJAX.csLoading == 1) return;
			//alert("LIs: " + $("#home_coolsites_list li").length + " st: " + AJAX.coolsitesStartAt + " visibleLI: " + $("#home_coolsites_list li.csvisible").length + " onscreenCoolsites: " + AJAX.onscreenCoolsites)
			
			if($("#home_coolsites_list li").length <= AJAX.coolsitesStartAt && $("#home_coolsites_list li.csvisible").length == AJAX.onscreenCoolsites) { 
				//alert("dont have these images yet, load them");
				AJAX.loadCoolsites();
			}

			else if($("#home_coolsites_list li").length <= AJAX.coolsitesStartAt) {
				//alert("cannot load more stuff, move on to beginning");
				$("#home_coolsites_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = 0; a < AJAX.onscreenCoolsites ; a++)  {
						$("#home_coolsites_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.coolsitesStartAt = 4;			
				}, 1200);
			}
			else if($("#home_coolsites_list li.csvisible").length == AJAX.onscreenCoolsites) {
				//alert("already loaded next stuff, slide left");
				$("#home_coolsites_list li.csvisible").fadeOut(1000).removeClass("csvisible");
	
				window.setTimeout(function(){
					for(var a = AJAX.coolsitesStartAt + 3; a > AJAX.coolsitesStartAt -1; a--)  {
						$("#home_coolsites_list li").eq(a).fadeIn(1000).addClass("csvisible");
					}	
					AJAX.coolsitesStartAt += 4;			
				}, 1200);
			}
		},


		loadPeopleLinks : function() {
			$(".home_people_list a.next_items ").click( function(){
				AJAX.showNextPeople();
				return false;
			});
			$(".home_people_list a.previous_items ").click( function(){
				AJAX.showPrevPeople();
				return false;
			});			
			AJAX.onscreenPeople = AJAX.peopleStartAt = 22;
			$("#home_people_list li.pplicargando").addClass("ppvisible");

			$(".ppcargando").removeClass("ppcargando");
			$(".pplicargando").removeClass("pplicargando");
		},
		
		loadPeople : function(dir) {
			AJAX.ppLoading = 1;
			AJAX.ppBufferLoaded = 0;
			//alert("AJAX.peopleStartAt: " + AJAX.peopleStartAt + " LIs: " + $('#home_people_list li').length);
			if(!dir) st = AJAX.peopleStartAt; 			// next
			else st = $("#home_people_list li").length; 	// prev
			//alert("st at " + st);

			$("#home_people_list li.ppvisible").fadeOut(1000);
			$("#home_people_list").css("background", "#282829 url(../graphic/common/ajax-loader.gif) no-repeat center center");
								
			 $.ajax({
			 	type: "POST",
				url: "/",							
				data : "people_page=" + st, 
				dataType: "html",						
						
				error: function(data, msg, err){
				 			alert("Por favor, prueba a realizar la acción más tarde, el servidor devuelve un error");
					AJAX.ppLoading = 0;
					$("#home_people_list li.ppvisible").fadeIn(1000);
					$("#home_people_list").css("background", "#282829");
				},
												
				success: function(data){
					if(!dir) AJAX.peopleStartAt += 22; // next
					else AJAX.peopleStartAt = st + 22; // prev
							
					//$("#home_people_list li.ppvisible").removeClass("ppvisible");
					$("#home_people_list").append(data);
					//$(".pplicargando").hide();
					
					$("#home_people_list a.ppcargando img").bind("load error", function(e) {						
							AJAX.ppBufferLoaded++;
							
							//$(this).parent().fadeOut(600).removeClass("ppcargando");
							//$(this).parent().parent().parent().removeClass("pplicargando").fadeIn(1000).addClass("ppvisible");
							
							
							if (AJAX.ppBufferLoaded == $(".ppcargando").length) { // not always AJAX.onscreenPeople
								AJAX.ppLoading = 0;
								$("#home_people_list").css("background", "#282829");
								
								$("#home_people_list li.ppvisible").hide().removeClass("ppvisible");
								$(".ppcargando").removeClass("ppcargando");
								$(".pplicargando").fadeIn(1000).removeClass("pplicargando").addClass("ppvisible");
							}
							
				    }); 

				 }
			});	

		},


		showPrevPeople : function() {		
			if(AJAX.ppLoading == 1) return;
			// BEWARE, all parent LI's include other 2 LIs: divide by 3
			//alert("LIs: " + parseInt($("#home_people_list li").length / 3) + " st: " + AJAX.peopleStartAt + " visibleLI: " + $("#home_people_list li.ppvisible").length + " onscreenPeople: " + AJAX.onscreenPeople)

			if(AJAX.peopleStartAt <= 22) { 
				//alert("dont have these images yet, load them");
				AJAX.loadPeople(1);				
			}
			else if($("#home_people_list li.ppvisible").length <= AJAX.onscreenPeople) {
				//alert("already loaded previous stuff, slide right");
				$("#home_people_list li.ppvisible").fadeOut(1000).removeClass("ppvisible");
	
				window.setTimeout(function(){
					for(var a = AJAX.peopleStartAt - 23; a > AJAX.peopleStartAt - 45; a--)  {
						$("#home_people_list li").eq(parseInt(a*3)).fadeIn(1000).addClass("ppvisible");
					}	
					AJAX.peopleStartAt -= 22;			
				}, 1200);
			}
			else if(parseInt($("#home_people_list li").length / 3)  > AJAX.peopleStartAt) {
				//alert("cannot load more stuff, move on to beginning");
				$("#home_people_list li.ppvisible").fadeOut(1000).removeClass("ppvisible");
	
				window.setTimeout(function(){
					for(var a = 0; a < AJAX.onscreenPeople ; a++)  {
						$("#home_people_list li").eq(parseInt(a*3)).fadeIn(1000).addClass("ppvisible");
					}	
					AJAX.peopleStartAt = 22;			
				}, 1200);
			}
			//else {alert("falta alguna opcion")}

		},
		
		showNextPeople : function() {
			if(AJAX.ppLoading == 1) return;
			// BEWARE, all parent LI's include other 2 LIs: divide by 3
			//alert("LIs: " + parseInt($("#home_people_list li").length / 3)  + " st: " + AJAX.peopleStartAt + " visibleLI: " + $("#home_people_list li.ppvisible").length + " onscreenPeople: " + AJAX.onscreenPeople)
			
			if(parseInt($("#home_people_list li").length / 3) <= AJAX.peopleStartAt && $("#home_people_list li.ppvisible").length == AJAX.onscreenPeople) { 
				//alert("dont have these images yet, load them");
				AJAX.loadPeople();
			}

			else if(parseInt($("#home_people_list li").length / 3)  <= AJAX.peopleStartAt) {
				//alert("cannot load more stuff, move on to beginning");
				$("#home_people_list li.ppvisible").fadeOut(1000).removeClass("ppvisible");
	
				window.setTimeout(function(){
					for(var a = 0; a < AJAX.onscreenPeople ; a++)  {
						$("#home_people_list li").eq(parseInt(a*3)).fadeIn(1000).addClass("ppvisible");
					}	
					AJAX.peopleStartAt = 22;			
				}, 1200);
			}
			else if($("#home_people_list li.ppvisible").length == AJAX.onscreenPeople) {
				//alert("already loaded next stuff, slide left");
				$("#home_people_list li.ppvisible").fadeOut(1000).removeClass("ppvisible");
	
				window.setTimeout(function(){
					for(var a = AJAX.peopleStartAt + 21; a > AJAX.peopleStartAt -1; a--)  {
						$("#home_people_list li").eq(parseInt(a*3)).fadeIn(1000).addClass("ppvisible");
					}	
					AJAX.peopleStartAt += 22;			
				}, 1200);
			}
			//else {alert("falta alguna opcion")}

		}
		

}



$(document).ready(function() {
	if (document.getElementById) {
		AJAX.ajaxify();
		AJAX.loadProjectsLinks();
		AJAX.loadCoolsitesLinks();
		AJAX.loadPeopleLinks();
		AJAX.doAcceptDelete();
								
		// add ajax loader div to actions:
		$('.link_actions').prepend("<div id='actions_spinner'></div>");
		$('#actions_spinner').hide();

	}
});

