var globalEvents = new EventPublisher();
var	lastOperationId;
var	JS_TXT_FORM_MANDATORY;
 
/*****************************************************************
 FUNCTIONS A MIGRER DANS LA VERSION DE GESTIONS DES EVENEMENTS
 *****************************************************************/
// fonction permettant d'appeler une autre page
function nextPage(action,titleModal,id) {	
	alert("[nextPage] MIGRATION A FAIRE ("+action+")");
	// Mise a jour du nom de l'action dans le formulaire NextPage
		$('nextPage').elements['action'].value = action;
		if(arguments.length == 3)
			$('nextPage').elements['id'].value = id;
		else
			$('nextPage').elements['id'].value = "-1";
			
		if (titleModal.empty()) {
			// TEST EN DUR POUR LE MOMENT
				$('nextPage').elements['control'].value = 0;
				$('home').hide();
				$('NC_up').hide();
				$('homeButton').show();	
				new Effect.Appear('detail');
				$('imgmodule6').src = "img/spinner.gif";
				$('imgmodule7').src = "img/spinner.gif";
				$('imgmodule8').src = "img/spinner.gif";
				$('imgmodule9').src = "img/spinner.gif";
				
				new Ajax.Updater('module6', 'grtsous.php', {
									parameters: { action: 'viewdashboardAllOperations', id: $('nextPage').elements['id'].value },
									evalScripts: true
								});
				new Ajax.Updater('module7', 'grtsous.php', {
									parameters: { action: 'viewdashboardPendingOperations', id: $('nextPage').elements['id'].value  }
								});
				new Ajax.Updater('module8', 'grtsous.php', {
									parameters: { action: 'viewdashboardAccountPrevisions', id: $('nextPage').elements['id'].value }
								});
				new Ajax.Updater('module9', 'grtsous.php', {
									parameters: { action: 'viewdashboardLastOperations' }
								});
								
				$('imgmodule6').src = "img/transparent.gif";
				$('imgmodule7').src = "img/transparent.gif";
				$('imgmodule8').src = "img/transparent.gif";
				$('imgmodule9').src = "img/transparent.gif";
		} else {
			// Affichage de la popup
				Modalbox.show('grtsous.php', {title: titleModal, width: 600, method: 'post', params: Form.serialize('nextPage')});
		}
}

/*****************************************************************
 FUNCTIONS A MIGRER DANS LA VERSION DE GESTIONS DES EVENEMENTS
 *****************************************************************/
 
 
 

/*******
	DEFINITION DES FONCTIONS PERMETTANT DE METTRE A JOUR LES PAGES
 *******/
function indexPage() {
	if(Prototype.Browser.IE){
		alert("Votre Navigateur IE, n'a pas ete completement valide pour le site !! Nous vous conseillons Safari ou Firefox");	
	}
		new Ajax.Updater('formNavigation', 'grtsous.php', {
							parameters: { action: 'formNavigation' }
						});
				
		$('imgindex1').src = "img/spinner.gif";
		new Ajax.Updater('index1', 'grtsous.php', {
							parameters: { action: 'viewIndexFonctions' },
							onComplete: function() { $('imgindex1').src = "img/transparent.gif"; }
						});		
		
		$('imgindex2').src = "img/spinner.gif";
		new Ajax.Updater('index2', 'grtsous.php', {
							parameters: { action: 'viewIndexConfidentialite' },
							onComplete: function() { $('imgindex2').src = "img/transparent.gif"; }
						});		
		
		$('imgindex4').src = "img/spinner.gif";
		new Ajax.Updater('index4', 'grtsous.php', {
							parameters: { action: 'viewIndexPresentation' },
							onComplete: function() { $('imgindex4').src = "img/transparent.gif"; }
						});		
}

/* ======================= premiere page apres la connexion */
function initGrtsous() {	
		$('index').hide();
		$('homeButton').hide();
		$('navBarIndex').hide();
		new Effect.Appear('home');
		new Effect.Appear('nabBarGrtsous');					
		$('GRT_footer').show();
		new PeriodicalExecuter(displayPeriodicMessage, 120);
		displayPeriodicMessage.delay(5);
}

function displayPeriodicMessage(pe) {
	if(!$('nabBarGrtsous').visible()) {
		pe.stop();
	} else {
		new Ajax.Updater('message', 'grtsous.php', {
							parameters: { action: 'actionPeriodicMessage' },
							onComplete: function() { 	new Effect.Grow('message');	
														hidePeriodicMessage.delay(5); }
						});
	}
}

function hidePeriodicMessage() {
	new Effect.Fold('message');
}

// Affichage des bulles d'aides
function createToolTips() {	
	//alert("createToolTips");
	// Mise a jour des bulles d'aides
		$$(".help").each( function(input) {
			new Tooltip(input, {backgroundColor: "#D4F144", borderColor: "#040403", textColor: "#040403"});
		});
}



/*DEBUT**************************************************************************************************************
 ************  AFFICHAGE DES DIFFERENTES PAGES
 *********************************************************************************************************************/ 
/* ======================= fonction permettant d'afficher la homepage */
function homePage() {	
	$('detail').hide();
	$('homeButton').hide();
	$('search').hide();
	$('tva').hide();
	$('iframe').hide();
	$('upload').hide();
	$('forum').hide();
	$('loading').hide();
	$('arretes').hide();
	new Effect.Appear('home');
}

/* ======================= fonction permettant d'afficher l'historique */
function displayAccount(args) {
	$('nextPage').elements['control'].value = 0;
	$('nextPage').elements['id'].value = args.id;
	$('home').hide();
	$('search').hide();
	$('NC_up').hide();
	$('tva').hide();
	$('iframe').hide();
	$('upload').hide();
	$('forum').hide();
	$('loading').hide();
	$('arretes').hide();
		
	$('homeButton').show();
	new Effect.Appear('detail');
		
	globalEvents.fireEvent('evtDisplayAccount');
}

/* ======================= fonction permettant d'afficher le resultat de la recherche */
function displaySearchPage(args) {
	Modalbox.hide(); // fermer la popup ouverte pour la recherche
	$('detail').hide();
	$('home').hide();
	$('tva').hide();
	$('iframe').hide();
	$('upload').hide();
	$('forum').hide();
	$('loading').hide();
	$('arretes').hide();
	$('homeButton').show();
	new Effect.Appear('search');
	globalEvents.fireEvent('evtDisplaySearchResult',args);
	globalEvents.fireEvent('evtDisplaySearchStat',args);
}

/* ======================= fonction permettant d'afficher la gestion de la TVA */
function dashboardTVA(args) {
	$('detail').hide();
	$('home').hide();
	$('NC_up').hide();
	$('search').hide();
	$('iframe').hide();
	$('upload').hide();
	$('homeButton').show();
	$('forum').hide();
	$('arretes').hide();
	new Effect.Appear('tva');
	globalEvents.fireEvent('evtHistoryTVA',args);
}

/* ======================= fonction permettant de pointer ses comptes avec sa banque */
function displayBank(args) {
	$('detail').hide();
	$('home').hide();
	$('NC_up').hide();
	$('search').hide();
	$('homeButton').show();
	$('tva').hide();
	$('upload').hide();
	$('forum').hide();
	$('loading').hide();
	$('arretes').hide();
	new Effect.Appear('iframe');
	$('content_iframe').src =  args.action;
	//alert( args.id);
}

/* ======================= fonction permettant d'uploader des donnees */
function displayUploadData(args) {
	$('detail').hide();
	$('home').hide();
	$('NC_up').hide();
	$('search').hide();
	$('homeButton').show();
	$('tva').hide();
	$('iframe').hide();
	$('forum').hide();
	$('loading').hide();
	$('arretes').hide();
	new Effect.Appear('upload');
	
	globalEvents.fireEvent('evtUploadPending',args);
	globalEvents.fireEvent('evtUploadDico',args);
	globalEvents.fireEvent('evtUploadOperation',args);
}

/* ======================= fonction permettant d'afficher le forum */
function displayForum(args) {
	$('detail').hide();
	$('home').hide();
	$('NC_up').hide();
	$('search').hide();
	$('homeButton').show();
	$('tva').hide();
	$('iframe').hide();
	$('upload').hide();
	$('loading').hide();
	$('arretes').hide();
	new Effect.Appear('forum');
	
	globalEvents.fireEvent('evtUserBugs',args);
	globalEvents.fireEvent('evtForumTheme',args);
	globalEvents.fireEvent('evtForumDiscussion',args);
}

/* ======================= fonction permettant de se deconnecter */	
function logout() {	
		new Ajax.Request('grtsous.php', {
				parameters: { action: 'actionLogout' },
  				onComplete: function(transport) {
  					returnString = transport.responseText.strip();
  					if(returnString.startsWith("KO - ")) {
  						alert(returnString.substring(5).stripScripts().toUpperCase());
  					} else {
  						$('homeButton').hide();
						$('home').hide();
						$('nabBarGrtsous').hide();
						$('detail').hide();
						$('tva').hide();
						$('GRT_footer').hide();
						$('iframe').hide();
						$('upload').hide();
						$('forum').hide();
						$('loading').hide();
						$('search').hide();
						$('arretes').hide();
						new Effect.Appear('index');
						new Effect.Appear('navBarIndex');
					}
				}
			});
}

/* ======================= fonction permettant d'afficher les arretes */
function displayArretes(args) {
	$('detail').hide();
	$('home').hide();
	$('NC_up').hide();
	$('search').hide();
	$('iframe').hide();
	$('upload').hide();
	$('homeButton').show();
	$('forum').hide();
	$('tva').hide();
	new Effect.Appear('arretes');
	globalEvents.fireEvent('evtListArretes',args);
}


/*FIN*****************************************************************************************************************
 ************  AFFICHAGE DES DIFFERENTES PAGES
 *********************************************************************************************************************/

  
function cardModuleUpdate() {
		$('imgmodule1').src = "img/spinner.gif";
		new Ajax.Updater('module1', 'grtsous.php', {
							parameters: { action: 'viewdashboardCarte' },
							onComplete: function() { $('imgmodule1').src = "img/transparent.gif"; }
						});					
}
				
function accountModuleUpdate() {
		$('imgmodule3').src = "img/spinner.gif";
		new Ajax.Updater('module3', 'grtsous.php', {
							parameters: { action: 'viewdashboardDav' },
							onComplete: function() { $('imgmodule3').src = "img/transparent.gif"; }
						});					
}
				
function cashModuleUpdate() {
		$('imgmodule5').src = "img/spinner.gif";
		new Ajax.Updater('module5', 'grtsous.php', {
							parameters: { action: 'viewdashboardLivret' },
							onComplete: function() { $('imgmodule5').src = "img/transparent.gif"; }
						});					
}
				
function scheduleModuleUpdate() {
		$('imgmodule4').src = "img/spinner.gif";
		new Ajax.Updater('module4', 'grtsous.php', {
							parameters: { action: 'viewdashboardAllPrevisions' },
							onComplete: function() { $('imgmodule4').src = "img/transparent.gif"; }
						});					
}
				
function lastTransacModuleUpdate() {
		$('imgmodule2').src = "img/spinner.gif";
		new Ajax.Updater('module2', 'grtsous.php', {
							parameters: { action: 'viewdashboardLastOperations' },
							onComplete: function() { $('imgmodule2').src = "img/transparent.gif"; }
						});					
}

/* ======================= fonction permettant d'afficher les cartes arrivant a echeances mais aussi les messages internes à afficher*/				
function checkEcheanceCarteOrInternalMessage() {
		new Ajax.Request('grtsous.php', {
							parameters: { action: 'actionExisteEcheanceCarte' },
			  				onComplete: function(transport) {
				  					returnString = transport.responseText.strip();
		  							if(returnString.startsWith("OK")) {		
		  								// L'appel a la fonction est decalle de 2 secondes pour permettre a la fenetre de connexion de se fermer
		  								globalEvents.fireEvent.delay(1,'evtCardToCheck', {title : 'ECHEANCES : Cartes',action : 'formCheckCartes'});
		  							} else {
		  								new Ajax.Request('grtsous.php', {
													parameters: { action: 'actionExisteMessageInterne' },
			  										onComplete: function(transport) {
				  												returnString = transport.responseText.strip();
		  														if(returnString.startsWith("OK")) {		
		  																globalEvents.fireEvent.delay(1,'evtInternalMessage', {title : 'MESSAGERIE',action : 'viewInternalMessage'});
		  														}
													}
											});
									}		
							}
					});				
}


/* ======================= fonction permettant d'afficher une fenetre centree */			
function displayGenericCenterBox(args) {
	Centerbox.show('grtsous.php',{title: args.title, width: 400, height: 200, method: 'post', params : {action : args.action, id : args.id , control : args.type}});	
}
	
/* ======================= fonction permettant d'affciher une popup */			
function displayGenericPopup(args) {
	//alert("displayGenericPopup");
		Modalbox.show('grtsous.php', {title: args.title, width: 600, method: 'post', params: {action : args.action, id : args.id , control : args.type} });
}

/* ======================= fonction permettant d'executer une action associe a un formulaire */
function executeGenericActionFromPopup(args) {
		$('errmsg2').hide();
		$('errmsg').hide();
	
		new Ajax.Request('grtsous.php', {
				parameters: args,
  				onComplete: function(transport) {
  					returnString = transport.responseText.strip();
 					
  					if(returnString.startsWith("OK - ")) {
  						$('img-errmsg').src = 'img/check.png';
  						$('errmsg').removeClassName('confirm');
  						$('errmsg').addClassName('actiondone');
  					} else {
  						$('img-errmsg').src = 'img/uncheck.png';
  						$('errmsg').removeClassName('actiondone');
  						$('errmsg').addClassName('confirm');
  					}
		
  					$('errtext').update(returnString.substring(5).stripScripts());
  					// On reactive les boutons
	  					$('loading').hide();
	  					var form = $('ModalNextPage');
						var buttons = form.getInputs('image');
						
						for (var index = 0, len = buttons.length; index < len; ++index) {
							var item = buttons[index];
							item.enable(); 
						}
 					//if(returnString.startsWith("KO - ")) {
  						arrayEvtToFire	= returnString.substring(5).extractScripts();
  						arrayEvtToFire.each(function(evtToFire) {
							globalEvents.fireEvent(evtToFire);
							//alert(evtToFire);
						});
  					//}
  						  						
  					$('errmsg').hide();
  					$('errmsg').show();
  					Modalbox.resizeToContent();
  					
  					/*Modalbox.resizeToInclude('errmsg', {
  						afterResize: function(){ 
  							$('errmsg').hide();
  							new Effect.Appear('errmsg');
  							}
  						});
  					*/
  				}
			});
}

/* ======================= fonction permettant de valider les formulaires des popup */
function genericModalFormValidation(args) {
	//alert("genericModalFormValidation");
		ok = true;
		
		if($('errmsg').visible()) {
			$('errmsg').hide();
			Modalbox.resizeToContent();
		}
		if($('errmsg2').visible()) {
			$('errmsg2').hide();
			Modalbox.resizeToContent();
		}
	
		$$(".mandatory").each(  
			function(input) { 
				if (!input.present()) {
					//alert(input.type);
					if (ok)
						input.focus();
					ok = false;
					$(input).setStyle({
  						borderColor: '#7E0105'  						
						});
					}
			});

		if (ok)
			globalEvents.fireEvent(args.evtName,args);
		else {
			$('errmsg').hide();
			$('loading').hide();
  			$('img-errmsg').src = 'img/info.png';
  			$('errmsg').removeClassName('actiondone');
  			$('errmsg').addClassName('confirm');
			$('errtext').update(JS_TXT_FORM_MANDATORY);
			
			if(Prototype.Browser.IE){
				alert("GRTSOUS n'a pas ete encore valide pour votre navigateur(IE). Nous vous conseillons Safari d'Apple ou Firefox");	
			}
			
			$('errmsg').show();
			Modalbox.resizeToContent();
		}
}

/* ======================= fonction permettant de valider les formulaires des popup */
function genericModalDisplayRemoveConfirmation(args) {
		$('errmsg').hide();
		$('errmsg2').show();
		Modalbox.resizeToContent();
}

function checkOperation(args) {
	//lastOperationId = args.id;
	new Ajax.Request('grtsous.php', {
		parameters: { action: args.action, id : args.id },
		onComplete: function(transport) {
				returnString = transport.responseText.strip();
				//alert("checkOperation " +returnString);
				arrayEvtToFire	= returnString.substring(5).extractScripts();
  				arrayEvtToFire.each(function(evtToFire) {
					globalEvents.fireEvent(evtToFire); //,{id : lastOperationId }
				});
		  							
			}
		});
}

function uncheckOperation(args) {
	var options = Object.extend({
						setWidth:false,
						setHeight:false,
						offsetLeft: -63,			
						offsetTop: -40
					}); 				
	new Element.clonePosition($('dpop'),$(args.id),options);
	
	var array_ids = [];
	args.id.scan(/\w+/, function(match){ array_ids.push(match[0])});
							
	new Ajax.Updater('popupText','grtsous.php', {
		parameters: { action: 'viewConfirmation', id : array_ids[1], control : args.action },
		onComplete: function(transport) {				
					new Effect.Appear($('dpop'));		  							
			}
		});	
}

function actionConfirmed(args) {
	//alert("actionConfirmed :"+args.id+"-"+args.action);
	new Ajax.Request('grtsous.php', {
				parameters: { action:  args.action, id : args.id },
  				onComplete: function(transport) {
  					$('dpop').hide();
  					returnString = transport.responseText.strip();
  						arrayEvtToFire	= returnString.substring(5).extractScripts();
  						arrayEvtToFire.each(function(evtToFire) {
							globalEvents.fireEvent(evtToFire);
						});
  				}
			});
}


function hideModal(args) {
	Modalbox.hide();
	$('loading').hide();
}

/* ======================= fonction permettant d'afficher l'historique de la TVA */
function displayHistoryTVA(args) {
	$('imgmodule12').src = "img/spinner.gif";
	new Ajax.Updater('module12', 'grtsous.php', {
		parameters: { action: 'viewdashboardAllTVAOperations', id: $('nextPage').elements['id'].value },
		onComplete: function() { $('imgmodule12').src = "img/transparent.gif"; }
	});
}

function displayAccountOperation(args) {
	$('imgmodule6').src = "img/spinner.gif";
	new Ajax.Updater('module6', 'grtsous.php', {
		parameters: { action: 'viewdashboardAllOperations', id: $('nextPage').elements['id'].value },
		onComplete: function() { $('imgmodule6').src = "img/transparent.gif"; },
        evalScripts: true
	});
}

function displayAccountPendingOperation(args) {	
	$('imgmodule7').src = "img/spinner.gif";
	new Ajax.Updater('module7', 'grtsous.php', {
		parameters: { action: 'viewdashboardPendingOperations', id: $('nextPage').elements['id'].value  },
		onComplete: function() { $('imgmodule7').src = "img/transparent.gif"; }
	});
}

function displayAccountPrevisions(args) {	
	$('imgmodule8').src = "img/spinner.gif";
	new Ajax.Updater('module8', 'grtsous.php', {
		parameters: { action: 'viewdashboardAccountPrevisions', id: $('nextPage').elements['id'].value },
		onComplete: function() { $('imgmodule8').src = "img/transparent.gif"; }
	});
}

/* ======================= fonction permettant d'afficher le budget d'un compte*/
function displayAccountBudget(args) {	
	$('imgmodule9').src = "img/spinner.gif";
	new Ajax.Updater('module9', 'grtsous.php', {
		parameters: { action: 'viewdashboardAccountBudget', id: $('nextPage').elements['id'].value },
		onComplete: function() { $('imgmodule9').src = "img/transparent.gif"; }
	});
}


/* ============================================================= fonctions permettant de gérer les statistiques */
function statsMonthlyUpdate(args) {
	$('formType').hide();
	new Effect.Appear('formComptes');
	Modalbox.resizeToContent()
	var form = $('ModalNextPage');
	form.elements['Comptes'].observe('change', updateAccountForStats);
	form.elements['actionName'].value = 'statMensuel';
	updateAccountForStats();
}

function statsMoyenneUpdate(args) {
	$('formType').hide();
	new Effect.Appear('formComptes');
	Modalbox.resizeToContent()
	var form = $('ModalNextPage');
	form.elements['Comptes'].observe('change', updateAccountForStats);
	form.elements['actionName'].value = 'statMoyenne';	
	updateAccountForStats();				
}

function statsHisto6Update(args) {
	$('formType').hide();
	new Effect.Appear('formComptes');
	Modalbox.resizeToContent()
	var form = $('ModalNextPage');
	form.elements['Comptes'].observe('change', updateAccountForStats);
	form.elements['actionName'].value = 'statHisto6';
	updateAccountForStats();					
}

function statsBilanUpdate(args) {
	$('formType').hide();
	new Effect.Appear('formComptes');
	Modalbox.resizeToContent()
	var form = $('ModalNextPage');
	form.elements['Comptes'].observe('change', updateAccountForStats);
	form.elements['actionName'].value = 'statBilan';
	updateAccountForStats();
}

function statsPosteUpdate(args) {
	$('formComptes').hide();
	new Effect.Appear('formType');
	Modalbox.resizeToContent()
	var form = $('ModalNextPage');
	form.elements['Type'].observe('change', updatePosteForStats);
	form.elements['actionName'].value = 'statEvolPoste';
	updatePosteForStats();
}

function statsBudgetUpdate(args) {
	$('formType').hide();
	new Effect.Appear('formComptes');
	Modalbox.resizeToContent()
	var form = $('ModalNextPage');
	form.elements['Comptes'].observe('change', updateAccountForStats);
	form.elements['actionName'].value = 'statBudget';
	updateAccountForStats();
}

function updateAccountForStats() {
	var form = $('ModalNextPage');
	new Ajax.Request('grtsous.php', {
			parameters: { 	action: form.elements['actionName'].value, 
							id : form.elements['Comptes'].value, 
							month : form.elements['month'].value, 
							year :  form.elements['year'].value },
			onComplete: function(transport) {
							xmlData = transport.responseText.strip();						
							chart = AC_FL_RunContent(
									'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
									'width', '500',
									'height', '400',
									'scale', 'noscale',
									'salign', 'TL',
									'bgcolor', '#777788',
									'wmode', 'transparent',
									'movie', 'img/charts/charts',
									'src', 'img/charts/charts',
									'FlashVars', 'library_path=img/charts/charts_library&xml_data='+xmlData,
									'id', 'my_chart',
									'name', 'my_chart',
									'menu', 'true',
									'allowFullScreen', 'true',
									'allowScriptAccess','sameDomain',
									'quality', 'high',
									'align', 'middle',
									'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
									'play', 'true',
									'devicefont', 'false');	
							$(mycharts).update(chart);
						}
			});					
}

function updatePosteForStats() {
	var form = $('ModalNextPage');
	new Ajax.Request('grtsous.php', {
			parameters: { action: form.elements['actionName'].value, id : form.elements['Type'].value },
			onComplete: function(transport) {
							xmlData = transport.responseText.strip();						
							chart = AC_FL_RunContent(
									'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,45,0',
									'width', '500',
									'height', '400',
									'scale', 'noscale',
									'salign', 'TL',
									'bgcolor', '#777788',
									'wmode', 'transparent',
									'movie', 'img/charts/charts',
									'src', 'img/charts/charts',
									'FlashVars', 'library_path=img/charts/charts_library&xml_data='+xmlData,
									'id', 'my_chart',
									'name', 'my_chart',
									'menu', 'true',
									'allowFullScreen', 'true',
									'allowScriptAccess','sameDomain',
									'quality', 'high',
									'align', 'middle',
									'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
									'play', 'true',
									'devicefont', 'false');	
							$(mycharts).update(chart);
						}
			});					
}

// Fonction appelé lors d'un click dans le statistiques
function statsSearchDisplay(clickValue, clickCategory) {
	var laCurrentMonth 		= new Date().getMonth() +1;
	var laCurrentYear 		= new Date().getFullYear();
	// Liste des mois. Le NULL a ete rajoute car en JS le premier element d'un tableau est 0
		var	laMonthName	 	= new Array('NULL','January','February','March','April','May','June','July','August','September','October','November','December');
	// Recuperation du formulaire
		var form = $('ModalNextPage');
	// Variables necessaire a la rechercher
		var lsComptes		= '*';
		var lsType			= form.elements['Type'].value;
		var lsAction		= 'viewSearchResults';
		var lsFromDay		= '01';
		var lsFromMonth		= laMonthName.indexOf(String(clickCategory).capitalize());
		var lsFromYear		= laCurrentYear;
		var lsToDay			= '31';
		var lsToMonth		= laMonthName.indexOf(String(clickCategory).capitalize());
		if (laCurrentMonth < lsFromMonth) 
			lsFromYear		= laCurrentYear - 1;
		var lsToYear		= lsFromYear;
	// Appel de la recherche	
		globalEvents.fireEvent('evtSearchResult',	{	action : lsAction, 
														comptes : lsComptes,
														Types : lsType,
														day : lsFromDay,
														month : lsFromMonth,
														year : lsFromYear,
														DateJa : lsToDay,
														DateMa : lsToMonth,
														DateAa : lsToYear
													}
								);	
}	

// fonction appele sur le click de l'image dans la stats monthly
function statsMonthlyPreviousMonth() {
	var form = $('ModalNextPage');
	form.elements['month'].value	= parseInt(form.elements['month'].value) -1;
	if (parseInt(form.elements['month'].value) < 1) {
		form.elements['month'].value	= 12;
		form.elements['year'].value	= parseInt(form.elements['year'].value) -1;
	}
	updateAccountForStats();
}

function statsMonthlyNextMonth() {	
	var form = $('ModalNextPage');
	form.elements['month'].value	= parseInt(form.elements['month'].value) +1;
	if (parseInt(form.elements['month'].value) > 12) {
		form.elements['month'].value	= 1;
		form.elements['year'].value	= parseInt(form.elements['year'].value) +1;
	}
	updateAccountForStats();
}

/* ======================= fonction permettant d'afficher le resultat de la recherche */
function displaySearchResult(args) {
		$('imgmodule10').src = "img/spinner.gif";
		new Ajax.Updater('module10', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule10').src = "img/transparent.gif"; }
			});
}

/* ======================= fonction permettant d'afficher le resume de la recherche */
function displaySearchStat(args) {
		args.action = 'viewSearchSummary';
		$('imgmodule11').src = "img/spinner.gif";
		new Ajax.Updater('module11', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule11').src = "img/transparent.gif"; $('loading').hide();}
			});
}

/******************************************************************************************************** UPLOAD ****/
/* ======================= fonction permettant d'afficher les fichiers en attente d'analyse UPLOAD */
function displayUploadPendingFiles(args) {
		if(Object.isUndefined(args))
			args = {action: 'vide'};
			
		args.action = 'viewUploadPending';
		$('imgmodule16').src = "img/spinner.gif";
		new Ajax.Updater('module16', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule16').src = "img/transparent.gif"; }
			});
}

/* ======================= fonction permettant d'afficher le dictionnaire utilisé pour UPLOAD */
function displayUploadDitionary(args) {
		if(Object.isUndefined(args))
			args = {action: 'vide'};

		args.action = 'viewUploadDico';
		$('imgmodule17').src = "img/spinner.gif";
		new Ajax.Updater('module17', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule17').src = "img/transparent.gif"; }
			});
}

/* ======================= fonction permettant d'afficher les operations classees */
function displayUploadOperation(args) {
		if(Object.isUndefined(args))
			args = {action: 'vide'};

		args.action = 'viewUploadOperation';
		$('imgmodule15').src = "img/spinner.gif";
		new Ajax.Updater('module15', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule15').src = "img/transparent.gif"; }
			});
}
/***** FIN ********************************************************************************************** UPLOAD ****/



/******************************************************************************************************** FORUM *****/
function displayForumDiscussion(args) {		
		if(Object.isUndefined(args))
			args = {action: 'vide'};

		args.action = 'viewForumDiscussion';
		$('imgmodule18').src = "img/spinner.gif";
		new Ajax.Updater('module18', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule18').src = "img/transparent.gif"; }
			});
}

function displayForumBug(args) {		
		if(Object.isUndefined(args))
			args = {action: 'vide'};

		args.action = 'viewForumBug';
		$('imgmodule19').src = "img/spinner.gif";
		new Ajax.Updater('module19', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule19').src = "img/transparent.gif"; }
			});
}

function displayForumTheme(args) {		
		if(Object.isUndefined(args))
			args = {action: 'vide'};

		args.action = 'viewForumTheme';
		$('imgmodule20').src = "img/spinner.gif";
		new Ajax.Updater('module20', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule20').src = "img/transparent.gif"; }
			});
}

function displayForumMessage(args) {
	if(Object.isUndefined(args))
		args = {action: 'vide'};
	globalEvents.fireEvent('evtInternalMessage', {id : args.id , title : 'FORUM',action : 'viewForumDetail'});
}
/***** FIN ********************************************************************************************** FORUM *****/



/***************************************************************************************************** CONCOURS *****/
function displayConcoursInscriptionValidated(args) {
	var form = $('ModalNextPage');var buttons = form.getInputs('image');
  	for (var index = 0, len = buttons.length; index < len; ++index) {
		var item = buttons[index];
		item.disable();
	}
	//$('Submit').hide();
}


/***** FIN ******************************************************************************************* CONCOURS *****/



/******************************************************************************************************** ARRETES *****/
function displayListArretes(args) {		
		if(Object.isUndefined(args))
			args = {action: 'vide'};

		args.action = 'viewArretes';
		$('imgmodule21').src = "img/spinner.gif";
		new Ajax.Updater('module21', 'grtsous.php', {
			parameters: args,
			onComplete: function() { $('imgmodule21').src = "img/transparent.gif"; }
			});
}
/***** FIN ********************************************************************************************** ARRETES *****/




/* ======================= fonction d'initialisation de l'interface lors de la creation d'un compte */
function userCreated() {
		$('ModalNextPage').elements['action'].value = 'actionLogin';
		globalEvents.fireEvent('evtCheckLogin',Form.serialize('ModalNextPage',true));
}


/* ======================= navigation dans le multipage */
function previousPage(args) {
	$('nextPage').elements['control'].value--;
	$('imgmodule6').src = "img/spinner.gif";
	new Ajax.Updater('module6', 'grtsous.php', { parameters: { action: 'viewdashboardAllOperations', id: $('nextPage').elements['id'].value,control: $('nextPage').elements['control'].value} , evalScripts: true,
		onComplete: function() { $('imgmodule6').src = "img/transparent.gif"; }
	});
	
	// Masquer le bouton
	if ($('nextPage').elements['control'].value == 0)
		$('NC_up').hide();
}

function nextPage(args) {
	$('nextPage').elements['control'].value++;
	$('imgmodule6').src = "img/spinner.gif";
	new Ajax.Updater('module6', 'grtsous.php', { parameters: { action: 'viewdashboardAllOperations', id: $('nextPage').elements['id'].value,control: $('nextPage').elements['control'].value} , evalScripts: true,
		onComplete: function() { $('imgmodule6').src = "img/transparent.gif"; }
	});
	$('NC_up').show();
}

function hasNextPage(YesOrNo) {
    if(YesOrNo)
        $('NC_down').show();
    else
        $('NC_down').hide();
}
/**************************************************************************************************************
	ATTACHER LES EVTS AUX FONCTIONS
**************************************************************************************************************/	
	/****** Affichage du dashboad *********/
globalEvents.attachEventHandler( "evtDisplayHome", 				homePage );
globalEvents.attachEventHandler( "evtLogon",					initGrtsous );

	/****** Affcihage du dashboad *********/			
globalEvents.attachEventHandler( "evtLogon", 					cardModuleUpdate );
globalEvents.attachEventHandler( "evtLogon", 					accountModuleUpdate );
globalEvents.attachEventHandler( "evtLogon", 					cashModuleUpdate );
globalEvents.attachEventHandler( "evtLogon", 					scheduleModuleUpdate );
globalEvents.attachEventHandler( "evtLogon", 					lastTransacModuleUpdate );
globalEvents.attachEventHandler( "evtLogon", 					checkEcheanceCarteOrInternalMessage );
globalEvents.attachEventHandler( "evtLogon", 					hideModal );

globalEvents.attachEventHandler( "evtCardChecked", 				cardModuleUpdate );
globalEvents.attachEventHandler( "evtCardChecked", 				accountModuleUpdate );
globalEvents.attachEventHandler( "evtCardChecked", 				cashModuleUpdate );
globalEvents.attachEventHandler( "evtCardChecked", 				lastTransacModuleUpdate );
globalEvents.attachEventHandler( "evtCardChecked", 				hideModal );
	/****** Affcihage du detail d'un compte *********/	
globalEvents.attachEventHandler( "evtAccountDetail", 			displayAccount );
globalEvents.attachEventHandler( "evtDisplayAccount", 			displayAccountOperation );
globalEvents.attachEventHandler( "evtDisplayAccount", 			displayAccountPrevisions );
globalEvents.attachEventHandler( "evtDisplayAccount", 			displayAccountPendingOperation );
globalEvents.attachEventHandler( "evtDisplayAccount", 			displayAccountBudget );
	/****** Operation cree *********/
globalEvents.attachEventHandler( "evtOperationInserted", 		cardModuleUpdate );
globalEvents.attachEventHandler( "evtOperationInserted", 		accountModuleUpdate );
globalEvents.attachEventHandler( "evtOperationInserted", 		cashModuleUpdate );
globalEvents.attachEventHandler( "evtOperationInserted", 		lastTransacModuleUpdate );
globalEvents.attachEventHandler( "evtOperationInserted", 		displayAccountOperation );
globalEvents.attachEventHandler( "evtOperationInserted", 		displayAccountPrevisions );
globalEvents.attachEventHandler( "evtOperationInserted", 		displayAccountPendingOperation );
globalEvents.attachEventHandler( "evtOperationInserted", 		displayAccountBudget );
	/****** Compte cree *********/
globalEvents.attachEventHandler( "evtCardCreated", 				cardModuleUpdate );
globalEvents.attachEventHandler( "evtCardRemoved", 				cardModuleUpdate );
globalEvents.attachEventHandler( "evtCardUpdated", 				cardModuleUpdate );
globalEvents.attachEventHandler( "evtDavCreated", 				accountModuleUpdate );
globalEvents.attachEventHandler( "evtDavRemoved", 				accountModuleUpdate );
globalEvents.attachEventHandler( "evtDavUpdated", 				accountModuleUpdate );
globalEvents.attachEventHandler( "evtCashCreated", 				cashModuleUpdate );
globalEvents.attachEventHandler( "evtCashRemoved", 				cashModuleUpdate );
globalEvents.attachEventHandler( "evtCashUpdated", 				cashModuleUpdate );
globalEvents.attachEventHandler( "evtCardRemoved", 				hideModal );
globalEvents.attachEventHandler( "evtDavRemoved", 				hideModal );
globalEvents.attachEventHandler( "evtCashRemoved", 				hideModal );
	/****** Prevision cree, valide, supprimee, mise ˆ jour  *********/
globalEvents.attachEventHandler( "evtScheduleCreated", 			scheduleModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleCreated", 			displayAccountBudget );
globalEvents.attachEventHandler( "evtScheduleChecked", 			scheduleModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleChecked", 			cardModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleChecked", 			accountModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleChecked", 			cashModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleChecked", 			lastTransacModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleChecked", 			hideModal );
globalEvents.attachEventHandler( "evtScheduleChecked", 			displayAccountOperation );
globalEvents.attachEventHandler( "evtScheduleChecked", 			displayAccountPrevisions );
globalEvents.attachEventHandler( "evtScheduleChecked", 			displayAccountPendingOperation );
globalEvents.attachEventHandler( "evtScheduleChecked", 			displayAccountBudget );
globalEvents.attachEventHandler( "evtScheduleRemoved", 			hideModal );
globalEvents.attachEventHandler( "evtScheduleRemoved", 			scheduleModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleRemoved", 			displayAccountBudget );
globalEvents.attachEventHandler( "evtScheduleUpdated", 			scheduleModuleUpdate );
globalEvents.attachEventHandler( "evtScheduleUpdated", 			displayAccountBudget );

globalEvents.attachEventHandler( "evtOperationChecked", 		lastTransacModuleUpdate );
globalEvents.attachEventHandler( "evtOperationChecked", 		cardModuleUpdate );
globalEvents.attachEventHandler( "evtOperationChecked", 		accountModuleUpdate );
globalEvents.attachEventHandler( "evtOperationChecked", 		cashModuleUpdate );
globalEvents.attachEventHandler( "evtOperationChecked", 		displayAccountOperation );
globalEvents.attachEventHandler( "evtOperationChecked", 		displayAccountPrevisions );
globalEvents.attachEventHandler( "evtOperationChecked", 		displayAccountPendingOperation );
globalEvents.attachEventHandler( "evtOperationChecked", 		displayAccountBudget );

globalEvents.attachEventHandler( "evtOperationUnchecked", 		lastTransacModuleUpdate );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		cardModuleUpdate );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		accountModuleUpdate );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		cashModuleUpdate );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		displayAccountOperation );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		displayAccountPrevisions );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		displayAccountPendingOperation );
globalEvents.attachEventHandler( "evtOperationUnchecked", 		displayAccountBudget );
	/****** Affichage d'une popup *********/
globalEvents.attachEventHandler( "evtNewcompte", 				displayGenericPopup );
globalEvents.attachEventHandler( "evtNewoperation", 			displayGenericPopup );
globalEvents.attachEventHandler( "evtNewoperationForCompte", 	displayGenericPopup );
globalEvents.attachEventHandler( "evtNewprevision", 			displayGenericPopup );
globalEvents.attachEventHandler( "evtHelp", 					displayGenericPopup );
globalEvents.attachEventHandler( "evtCheckSchedule",			displayGenericPopup );
globalEvents.attachEventHandler( "evtUpdateCard",				displayGenericPopup );
globalEvents.attachEventHandler( "evtUpdateDav",				displayGenericPopup );
globalEvents.attachEventHandler( "evtUpdateCash",				displayGenericPopup );
globalEvents.attachEventHandler( "evtLogin",					displayGenericPopup );
globalEvents.attachEventHandler( "evtCreateUser",				displayGenericPopup );
globalEvents.attachEventHandler( "evtGrtsousVersion",			displayGenericPopup );
globalEvents.attachEventHandler( "evtUserInfo",					displayGenericPopup );
globalEvents.attachEventHandler( "evtUpload",					displayGenericPopup );
globalEvents.attachEventHandler( "evtSearch",					displayGenericPopup );
globalEvents.attachEventHandler( "evtCardToCheck",				displayGenericPopup );
globalEvents.attachEventHandler( "evtUpdateSchedule",			displayGenericPopup );
globalEvents.attachEventHandler( "evtGenericPopup",				displayGenericPopup );
globalEvents.attachEventHandler( "evtUploadUpateOperation",		displayGenericPopup );
globalEvents.attachEventHandler( "evtConcours",					displayGenericPopup );
	/****** Affichage d'une fenetre centrale *********/
globalEvents.attachEventHandler( "evtInternalMessage",			displayGenericCenterBox );
	/****** Actions *********/
globalEvents.attachEventHandler( "evtCheckOperation",			checkOperation );
globalEvents.attachEventHandler( "evtUncheckOperation",			uncheckOperation );
globalEvents.attachEventHandler( "evtPopupAction",				actionConfirmed );
globalEvents.attachEventHandler( "evtUncheckFile",				uncheckOperation );
globalEvents.attachEventHandler( "evtCheckFile",				checkOperation );
globalEvents.attachEventHandler( "evtUncheckDico",				uncheckOperation );
globalEvents.attachEventHandler( "evtUncheck",					uncheckOperation );
globalEvents.attachEventHandler( "evtCheckUploadOperation",		checkOperation );
	/****** Affichage du dashboad *********/
globalEvents.attachEventHandler( "evtLoadIndex", 				indexPage );
	/****** Validation des formulaires *********/
globalEvents.attachEventHandler( "evtCheckModalForm", 			genericModalFormValidation );
globalEvents.attachEventHandler( "evtConfirmModalForm", 		genericModalDisplayRemoveConfirmation );
	/****** Validation des actions associees aux formulaires *********/
globalEvents.attachEventHandler( "evtUpdateAccount", 			executeGenericActionFromPopup );
globalEvents.attachEventHandler( "evtModalFormConfirmed", 		executeGenericActionFromPopup );
globalEvents.attachEventHandler( "evtFormUpdateSchedule", 		executeGenericActionFromPopup );
globalEvents.attachEventHandler( "evtCheckLogin", 				executeGenericActionFromPopup );
globalEvents.attachEventHandler( "evtFormUpdateData",			executeGenericActionFromPopup );
	/****** Affichage des Recherches *********/
globalEvents.attachEventHandler( "evtSearchResult", 			displaySearchPage );
globalEvents.attachEventHandler( "evtDisplaySearchResult", 		displaySearchResult );
globalEvents.attachEventHandler( "evtDisplaySearchStat", 		displaySearchStat );
	/****** Affichage des Statistiques *********/
globalEvents.attachEventHandler( "evtStats", 					displayGenericPopup );
globalEvents.attachEventHandler( "evtStatsMonthly", 			statsMonthlyUpdate );
globalEvents.attachEventHandler( "evtStatsMoyenne", 			statsMoyenneUpdate );
globalEvents.attachEventHandler( "evtStatsHisto6", 				statsHisto6Update );
globalEvents.attachEventHandler( "evtStatsBilan", 				statsBilanUpdate );
globalEvents.attachEventHandler( "evtStatsEvol6", 				statsPosteUpdate );
globalEvents.attachEventHandler( "evtFromStatsToSearch", 		statsSearchDisplay );
globalEvents.attachEventHandler( "evtStatsBudget", 				statsBudgetUpdate );
	/****** Deconnexion de l'application *********/
globalEvents.attachEventHandler( "evtLogout", 					logout );
	/****** Creation d'un nouvel utilisateur *********/
globalEvents.attachEventHandler( "evtUserCreated",				userCreated );
	/****** Gestion du multipage *********/
globalEvents.attachEventHandler( "evtPreviousPage",				previousPage );
globalEvents.attachEventHandler( "evtNextPage",					nextPage );
	/****** Gestion du multipage *********/
globalEvents.attachEventHandler( "evtTVA",						dashboardTVA );
globalEvents.attachEventHandler( "evtHistoryTVA",				displayHistoryTVA );
	/****** Upload de documents *********/
globalEvents.attachEventHandler( "evtUploaded",					displayUploadData );
globalEvents.attachEventHandler( "evtUploadPending",			displayUploadPendingFiles );
globalEvents.attachEventHandler( "evtUploadDico",				displayUploadDitionary );
globalEvents.attachEventHandler( "evtUploadOperation",			displayUploadOperation );
globalEvents.attachEventHandler( "evtRemovedOneOperation",		displayUploadOperation );
globalEvents.attachEventHandler( "evtRemovedOneOperation",		hideModal );
globalEvents.attachEventHandler( "evtUploadFileAnalysed",		displayUploadPendingFiles );
globalEvents.attachEventHandler( "evtUploadFileAnalysed",		displayUploadOperation );
globalEvents.attachEventHandler( "evtFileUploaded",				hideModal );
globalEvents.attachEventHandler( "evtFileUploaded",				displayUploadPendingFiles );
	/****** FORUM *********/
globalEvents.attachEventHandler( "evtForum",					displayForum );
globalEvents.attachEventHandler( "evtUserBugs",					displayForumBug );
globalEvents.attachEventHandler( "evtForumTheme",				displayForumTheme );
globalEvents.attachEventHandler( "evtForumDiscussion",			displayForumDiscussion );
globalEvents.attachEventHandler( "evtForumDiscussionDetail",	displayForumMessage );
	/****** CONCOURS *********/
globalEvents.attachEventHandler( "evtConcoursInscrire",			displayConcoursInscriptionValidated );
	/****** Affichage des Statistiques *********/
globalEvents.attachEventHandler( "evtArretes", 					displayArretes );
globalEvents.attachEventHandler( "evtListArretes", 				displayListArretes );
globalEvents.attachEventHandler( "evtUncheckArrete",			uncheckOperation );


	/****** Raprochement des donnees avec la banque *********/
globalEvents.attachEventHandler( "evtCheckWithBank",			displayBank );