var infoCompletesOuvertes = false;

var delayAjaxIds = new Array();
var inCacheIds = new Array();
var inChargementIds = new Array();

function montrerInfosAcademieCompletes(event, academieId, academieDomain){
	if (!infoCompletesOuvertes){
		infoCompletesOuvertes = true;

		cacherInfosAcademie();
		
		Dialog.info('<div id="infosCompletes"><div class="infos chargement complete"><span class="chargement">Chargement...</span></div></div>',
			{
				className: "alphacube", 
				width: 900,
				height: 600,
				okLabel: "Fermer"
			});

		new Ajax.Updater({success : 'infosCompletes'}, 'academie?avoidIEcache=' + new Date().getTime(), {
			requestHeaders: { 
				'Cache-Control': 'no-cache, must-revalidate',
				'Pragma': 'no-cache' 
			},
			parameters: {
				complete: true,
				academieId : academieId,
				academieDomain : academieDomain
			},
			onComplete: function (transport){
			},
			onException: function (){
				debug('Exception AJAX -> fermeture des informations complètes');
				cacherInfosAcademieCompletes()				
			},
			onFailure: function(){
				debug('Failure AJAX -> fermeture des informations complètes');
				cacherInfosAcademieCompletes()				
			}
		});
	}
}

function cacherInfosAcademieCompletes(){
	//$('infosCompletes').shrink( { direction: 'top-right' } );
	Dialog.closeInfo();
	infoCompletesOuvertes = false;
	//removeOverlay();
}

function montrerInfosAcademie(event, academieName, academieId, academieDomain) {
	debug('montrerInfosAcademie [id = ' + academieId + ']');
	
	if (!infoCompletesOuvertes){
		var div = $('infos-' + academieId);
		
		//debug('delayClearIds[' + academieId + '] = ' + delayClearIds[academieId]);
		
		if (Object.isUndefined(inCacheIds[academieId]) && Object.isUndefined(inChargementIds[academieId])){
			div.update('<div class=\"infos chargement minimale\"><span>Chargement des donn&eacute;es de l\'acad&eacute;mie de ' + academieName + ' ...</span></div>');

			delayAjaxIds[academieId] = montrerInfosAcademieAjax.delay(1, event, academieId, academieDomain);
		}
		
		div.style.top = (Event.pointerY(event)+5) + 'px';
		div.style.left = (Event.pointerX(event)+5) + 'px';
		div.show();
	}
}

function montrerInfosAcademieAjax(event, academieId, academieDomain) {
	debug('montrerInfosAcademiePopup [id = ' + academieId + ']');
	
	inChargementIds[academieId] = true;
	
	new Ajax.Updater('infos-' + academieId, 'academie?avoidIEcache=' + new Date().getTime(), {
		method: 'get',
		evalScripts: true,
		requestHeaders: { 
			'Cache-Control': 'no-cache, must-revalidate',
			'Pragma': 'no-cache'
		},
		parameters: {
			academieId : academieId,
			academieDomain : academieDomain,
			complete: false
		},
		onComplete: function (transport){
			inCacheIds[academieId] = clearInfosAcademie.delay(10, academieId);
			inChargementIds[academieId] = undefined;
		},
		onException: function (){
			clearInfosAcademie(academieId);
			inChargementIds[academieId] = undefined;
		},
		onFailure: function(){
			clearInfosAcademie(academieId);
			inChargementIds[academieId] = undefined;
		}
	});
}

function clearInfosAcademie(academieId){
	debug('clearInfosAcademie [id = ' + academieId + ']');
	
	window.clearTimeout(inCacheIds[academieId]);
	inCacheIds[academieId] = undefined;
}

function cacherInfosAcademie(academieId) {
	if ($('infos-' + academieId)){
		$('infos-' + academieId).hide();
	}
	window.clearTimeout(delayAjaxIds[academieId]);
}

// Callback chargement

function academieSucces(academieId) {
	debug('academieSucces');
	$('span-' + academieId).style.color = 'green';
	$('statut-' + academieId).style.backgroundColor = 'green';
}

function academieError(academieId, codeError) {
	$('span-' + academieId).style.color = 'red';
	$('statut-' + academieId).style.backgroundColor = 'red';
}

// Login / logout

function doLogin() {
	var div = $('overlay_login');
	
	new Effect.Appear(div, Object.extend({from: 0, to: 0.6}));
	
	var form = $('formLogin');
	new Ajax.Updater('dLogin', 'login', {
		method: 'post',
		evalScripts: true,
		parameters: {
			user: $F(form['login']),
			password: $F(form['password'])
		},
		onComplete: function (transport){
			new Effect.Fade(div, Object.extend({from: 0.6, to: 0}));
		} 
	});
}

function doLogout() {
	new Ajax.Updater('dLogin', 'logout', {
		method: 'post',
		evalScripts: true
	});
}

function createOverlay(){
	WindowUtilities.disableScreen('dialog', 'dialog', 0.6, 'infosCompletes');
}

function removeOverlay(){
	WindowUtilities.enableScreen('dialog');
}
