/** 
 * @class modalFrame
 * @package ModalFrame
 * @version 1.1
 * @author Frédéric LECOINTRE<frederic.lecointre@burnweb.net>
 * 
 */
ModalFrame = new Object();
ModalFrame.callbackObject = null;

ModalFrame.wait = function(sMessage){

	ModalFrame.show();
	var oDialog = window.document.getElementById('waitingDialog');
	oDialog.style.display = 'block';
	
	if(sMessage && window.document.getElementById('waitingDialogMessage')){
		window.document.getElementById('waitingDialogMessage').innerHTML = sMessage;
	}//end if

	oScrollBar = document.getElementById("waitingDialogScrollBar");
	
	if(oScrollBar){
	
		if(!ModalFrame.waiting){
		
			var fHandler = function(){
				with(ModalFrame.waiting.scrollBar){
					if (position + sens > ((scrollBarSize - barSize) / increment)){
						sens = -1;
					}//end if
					if (position + sens < 0){
						sens = 1;
					}//end if
					
					position += sens;

					bar.style.left =  position * increment + 'px';
					
				}//end with
			};

			ModalFrame.waiting = new Object();
			ModalFrame.waiting.scrollBar = {
								'scrollBar' 	: oScrollBar,
								'bar'			: oScrollBar.getElementsByTagName('div')[0],
								'scrollBarSize' : 260,
								'barSize' 		: 100,
								'increment' 	: 5,
								'delay'			: 10,
								'position'		: 0,
								'sens'			: 1,
								'timer'			: null,
								'handler'		: fHandler,
								'active'		: false
								}//end
		}//end if
		
		if(ModalFrame.waiting.active){
			return;
		}//end if
		else{
			ModalFrame.waiting.scrollBar.timer = setInterval("ModalFrame.waiting.scrollBar.handler()", ModalFrame.waiting.scrollBar.delay);
			ModalFrame.waiting.active = true;
		}//end else
	
		
	}//end if
	
}//end function

ModalFrame.stopWait = function(){

	var oDialog = window.document.getElementById('waitingDialog');
	oDialog.style.display = 'none';
	ModalFrame.waiting.active = false;
	
	if(ModalFrame.waiting){
		ModalFrame.waiting.active = false;
		clearInterval(ModalFrame.waiting.scrollBar.timer);
		ModalFrame.waiting.scrollBar.timer = null;
	}//end if
	
	ModalFrame.hide();

}//end function

ModalFrame.show = function(){
	var oFrame = window.document.getElementById('modalFrame');
	oFrame.style.height = '100%';
	oFrame.style.display = 'block';
}//end function

ModalFrame.hide = function(){
	var oWaiting = window.document.getElementById('modalFrame');
	oWaiting.style.height = '0%';
}//end function


ModalFrame.callback = function(aCallback, iTimeout){

	this.callbackObject = aCallback;
	
	if(iTimeout == undefined){
		iTimeout = 100;
	}//end if
	
	window.setTimeout('ModalFrame.threadedCallback()', iTimeout);
	
}//end function

ModalFrame.waitAndCallback = function(aCallback, sMessage, iTimeout){
	ModalFrame.wait(sMessage);
	ModalFrame.callback(aCallback, sMessage, iTimeout);
}//end function

ModalFrame.threadedCallback = function(){

	if(this.callbackObject){
	
		oObject = this.callbackObject[0];
		sFunction = this.callbackObject[1];
		
		this.callbackObject = null;
		
		callFunction(sFunction, oObject, Array(true));// TODO should be try/catched

	}//end if
	
}//end function
//



