/**
 * Exécute un lot de fonctions au démarrage de la page
 */
var intervalFunction;
var tagsH2 = {
	'display' : 'none',
	'font-size' : '24px',
	'background-color' : '#FFD501',
	'margin' : '0',
	'width': '246px',
	'text-align' : 'center',
	'opacity' : 0.75
};
var tempo = 15000;
var i = 1;
var firstTime = true;
//error console is undefined
	var debugging = true;
	if (typeof console == "undefined") 
		var console = {
			log: function() {} 
	};
	else if (!debugging || typeof console.log == "undefined")
	console.log = function() {};
	
$(document).ready(function(){
	//parents is array
	var parents = getTagsParentId();
	changeDisplay(parents);
	
	//fonction qui change l'objet rpc
	function changeRPCOptions(parent)
	{
		console.log("RPC:"+parent);
		var rpcOptions = {
			"host":"http://www.modx.dev:8080",
			"service":"?id=47",          
			"rpc":{
				"jsonrpc":"2.0",
				"id":"1",
				"method":"getResources",
				"params":{
					"parents":parent,
					"includeContent":"1",
					"tpl":"getResources_json_item",
					"tplFirst":"getResources_json_first",
					"tplLast":"getResources_json_last",
					"outputSeparator":","
				}
			}
		};
		return rpcOptions;
	}
	//Recupere les id des resources parentes contenant les liens.
	function getTagsParentId()
	{
		var Ids = new Array();
		var i = 0;
		$("ul.navigation > li").each(function() {
			i = i+1
			var id = $(this).children("a").children("img").attr('id');
			id = id.substring(1,id.length);
			console.log("substring :"+id);
			Ids[i] = id;	
		});
		return Ids;
	}
	
	//changeTagscontent 
	function changeRPCObject(rpcOptions)
	{
		simplxRPCObject = new simplx.jsonrpc();      
		simplxRPCObject.init(rpcOptions);// Call the init method passing the rpcOptions json
		simplxRPCObject.callback = parseResponse; // Assign the function reference for success responses
		simplxRPCObject.errorcallback=parseErrorResponse; // Assign the function reference for error responses
		simplxRPCObject.execute();		
	}
	
	//add parentClass
	function addClass(id)
	{
		$("#m"+id).addClass("currentImg");		
	}
	//remove parentClass
	function removeClass(id)
	{
		$("#m"+id).removeClass("currentImg");
	}
	//fonction setInterval
	function changeDisplay(parents)
	{		
		var last = parents[i];
		if(firstTime === true) 
		{
			addClass(parents[i]);
			var title = $("#m"+parents[i]).parent("a").attr("title");
			$('<h3>'+title+'</h3>').appendTo("#tags").css(tagsH2).slideDown(1500).delay(12000).slideUp(1500);
			rpcOptions = changeRPCOptions(parents[i]);
			changeRPCObject(rpcOptions);
			$("#tags").append(); 
			firstTime = false;
			i++
		}
		intervalFunction =  setInterval(function(){           
			removeClass(last);//attention au prefix #m !!
			last = parents[i];
			$("#tags").html('');   
			addClass(parents[i]);
			var title = $("#m"+parents[i]).parent("a").attr("title");
			$('<h3>'+title+'</h3>').appendTo("#tags").css(tagsH2).slideDown(1500).delay(12000).slideUp(1500);
			rpcOptions = changeRPCOptions(parents[i]);
			changeRPCObject(rpcOptions);
			$("#tags").append(); 
		   if(i<parents.length - 1)
		   {
				i++;
		   } else
		   {
				i=1
			}	
		}, 15000);
	}

//////////////////////////////////////////////////////////////////////////////////////////	
	// Set up the template object
	var modDocumentTemplate ="<span class=\"typoTags\"><a href=\"${lien}\" title=\"${pagetitle}\">${pagetitle}</a></span><br />";
	//var modDocumentTemplate ="<span>${pagetitle}</span><br />";
	//$.template("modDocument", $("#modDocumentTemplate"));
	$.template("modDocument", modDocumentTemplate);

	// This function is sent as a callback parameter in the config.
	function parseResponse(jsobject){
		try{ 
			 $.tmpl("modDocument",jsobject.result)
			.appendTo("#tags");
			$("#tags > span").each(function(){
				/*var x= Math.floor(Math.random()*($("#tags").width()-50));
				var y= Math.floor(Math.random()*($("#tags").height()-50));*/
				var x= Math.floor(Math.random()*20);
				var y= Math.floor(Math.random()*10);
				var z= Math.floor(Math.random()*10);
				var cssObject = {
					'color' : '#444444',
					//'font-size' : Math.floor( Math.random() * (28 - 10) ) + 12,
					'font-size' : '18px',
					/*'top' : -100,
					'left' : -100*/	
					//'top' : 0 + y,
					//'left' : 0 + x,
					'display': 'none',
				}
				$(this).css(cssObject);
				var animation = {
					opacity: 0,
					/*top : y + 50,
					left : x + 50*/
				}
				$(this).fadeIn(1500).slideDown(1500).delay(11000).fadeOut(1500).slideUp(1500); 

				// $(this).delay(3000).animate(animation,15000);
				
			});
			}catch(e){
			// Probably empty response...      
			alert('Exception ' + e.description);
		} 
	}                   

	// This function is sent as a error callback parameter in the config.
	function parseErrorResponse(jsobject){
		try{        
			$.tmpl("modDocument",jsobject.result)
			.appendTo("#tags");
			
		}catch(e){
			// Probably empty response...      
			alert('Exception ' + e.description);
		}
	}                 

	//Survol de la souris sur un item du menu
	$("ul.navigation img").mouseover(function(){
		$("ul.navigation img").removeClass("currentImg");
		clearInterval(intervalFunction);
		$("#tags").html('');
		$(this).addClass("currentImg").delay(15000).queue(function()
			{
				$(this).removeClass("currentImg")
			});
		var title = $(this).parent("a").attr("title");
		$('<h3>'+title+'</h3>').appendTo("#tags").css(tagsH2).slideDown(1500).delay(12000).slideUp(1500);
		var id = $(this).attr('id');
		id = id.substring(1,id.length);
		var rpcOptions = changeRPCOptions(id);
		simplxRPCObject = new simplx.jsonrpc();      
		simplxRPCObject.init(rpcOptions); // Call the init method passing the rpcOptions json
		simplxRPCObject.callback = parseResponse; // Assign the function reference for success responses
		simplxRPCObject.errorcallback=parseResponse; // Assign the function reference for error responses
		simplxRPCObject.execute();
	   	});
	$("ul.navigation img").mouseout(function(){
		changeDisplay(parents);
	});
	//getTagsParentId();
	
	$(".actualites").CarouSlide({
	animType:"slide",
	animTime:1200,
	navContainer:".controls"
	});
});

