// Klasa definiujaca komunikat nad trescia strony
function flyMessage(el,msg){   
	var msgDiv;			// Warstwa na komunikat
	var body;			// Zmienna przechowuje body
	var message;		// Wiadomosc
	var clsName;		// Klasa dla warstwy z komunikatem
	var timeDelay;		// Czas w sekundach po ilu ma sie wylaczyc komunikat, -1 nie wylancza sie w ogole
	var left;			// Polozenie warstwy od lewej strony
	var top;			// Polozenie warstwy od gory strony
	var topOffset;		// Przesuniecie warstwy od top
	
	var removeElement;
	var setMessage;
	var setClassname;
	var setDelay;
	var setTop;
	var setTopOffset;
	
	// Ustawienie domyslnych danych dla zmiennych
	this.clsName 	= 'flymessagediv';
	this.timeDelay	= 5;
	
	// Tworzenie warstwy w DOM
	el = document.getElementById('flymessagediv');
	if(el)
		this.msgDiv 	= el;
	else
		this.msgDiv 	= document.createElement('div');
		
	// Pobieranie body dokumentu
	this.body 		= document.body;
	
	/*
	 * Funkcje wewnetrzne
	 */
	// Funkcja usuwa element o podanym ID z DOM
	function removeElement(id){
		if(!id)
			return false;
		var el = getObject(id);
		if(!el)
			return false;
		el.parentNode.removeChild(el);
	}
	this.removeElement = removeElement;
	/*
	 * Funkcje zewnetrzne
	 */
	// Funkcja ustawia tresc wiadomosci
	function setMessage(msg){
		this.message = msg;
	}
	this.setMessage = setMessage;
	// Funkcja ustawia clase dla warstwy z komunikatem
	function setClassName(cls){
		this.clsName = cls;
	}
	this.setClassName = setClassName;
	// Funkcja ustawia po jakim czasie (w sekundach) ma sie komunikat zamknac
	function setDelay(time){
		this.timeDelay = time;
	}
	this.setDelay = setDelay;
	// Funkcja ustawia polozenie od gory
	function setTop(top){
		this.top = top;
	}
	// Funkcja ustawia przesuniecie wzgledem podanego polozenia top
	function setTopOffset(topoff){
		this.topOffset = topoff;
	}
	
	// Funkcja generujaca warstwe
	function draw2(){
		if(!this.message)
			return false;
		
		this.msgDiv.id 			= 'flymessagediv';
		this.msgDiv.className 	= this.clsName;
		
		// Dolnaczanie warstwy z wiadomoscia do body
		window.document.body.appendChild(this.msgDiv);
		
		// Dolanczanie wiadomosci do warstwy
		this.msgDiv.innerHTML = this.message;
		
		// Ustawianie styli dla warstwy z komunikatem
		this.msgDiv.style.position 		= 'absolute';
		
		// Wyliczenie potrzebnych danych do pozycjonowania warstwy
		if(!this.left)
			this.left = Math.round((this.body.clientWidth / 2) - (this.msgDiv.offsetWidth / 2));
		if(!this.top)
			this.top = Math.round((this.body.parentNode.clientHeight / 2) - (this.msgDiv.clientHeight / 2) + (document.documentElement || document.body).scrollTop);
		if(this.topOffset)
			this.top += this.topOffset;
		
		// Ustawianie styli pozycjonujacych dla warstwy z komunikatem
		this.msgDiv.style.left	= this.left + 'px';
		this.msgDiv.style.top	= this.top + 'px';
		
		// Wylaczenie warstwy jezeli jest ustawiony czas
		if(this.timeDelay > 0){
			window.clearTimeout();
			window.setTimeout("this.removeElement('flymessagediv')",this.timeDelay * 1000);
		}
	}
	this.draw2 = draw2;
	
	function draw(){
		if(window.attachEvent) {
			window.attachEvent('onload', this.draw2());
		}else{
			this.draw2();
		}
	}
	this.draw = draw;
}