Ext.namespace ('fcbm.component');

fcbm.component.Loader = function (info, varArray) {
	this.checkDelay = 200; // in ms
	this.toCheck = [];
	this.interval = null;
	
	for (var i=0; i<varArray.length; i++) {
		this.toCheck.push ({variable: varArray[i], ok: false});
	}
	
	this.pBar = new Ext.ProgressBar({
		xtype: 'progress',
		text: 'Chargement en cours...',
		id: 'pbar',
		cls: 'left-align'
	});
	
	this.win = new Ext.Window({
		title: "Chargement",
		id: 'winLoader',
		width: 300,
		height: 150,
		modal: true,
		bodyStyle: 'background-color: #ffffff; padding: 12px;',
		maximizable: false,
		resizable: false,
		closable: false,
		autoScroll: false,
		plain: true,
		items: [
			{
				xtype: 'panel',
				html: "<div class=\"msgChargement\">" + info + "</div>",
				border: false
			},
			this.pBar
		]
	});
	
	this.checkReady = function () {
		var nbOk = 0;
		var nb = document.loader.toCheck.length;
		var msg = "";
		for (var i=0; i<nb; i++) {
			if (! document.loader.toCheck[i].ok) {
				if (eval(document.loader.toCheck[i].variable) == true) {
					this.toCheck[i].ok = true;
					nbOk++;
				}
			} else {
				nbOk++;
			}
		}
		if (nbOk == nb)
			msg = "Terminé";
		else
			msg = "Chargement de l'objet " + (nbOk + 1) + " sur " + nb + "...";
		
		document.loader.pBar.updateProgress(nbOk/nb, msg);
		if (nbOk == nb) {
			clearInterval(document.loader.interval);
			document.loader.win.close();
		}
	};
	
	this.abortLoading = function () {
		clearInterval(document.loader.interval);
		document.loader.win.close();
	};

	this.win.show();
	
	this.interval = setInterval("document.loader.checkReady()", this.checkDelay);

	
}

