var autorefresh = true;
var t;
var last_id = 0;

function wyslijshout()
{
  	savereq = new Request(
	  {url: 'http://' + location.host +'/shoutbox/save_shout',
	  onComplete: function(response)
	   {
	     clearTimeout(t); 
		 odswiezbox(true); 
	   }
	  }
	  );
	 savereq.send( $('shout_form') );	// wysylamy POST z wiadomoscia
	
	$('shout_form').reset(); //czyscimy pole tekstowe pod shoutboxem
return false;
}

//dodajemy event do formularza shoutboxa
var formularz = $('shout_form');

if(formularz!= null) {formularz.addEvent('submit', function() { wyslijshout();} );}


//funkcja odswiezajaca shoutbox
//parametr [true|false] okresla czy przy odswiezaniu
//ma byc oznaczany najnowszy msg przez kolorowe miganie ramki

function odswiezbox(mark_new)
{
	
	data = new Request.HTML(
	  {url: 'http://' + location.host +'/shoutbox',
	  onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
		{   
		 // dostajemy odrazu gotowy kod html
		 // wiec wystarczy tylko wkleic do odpowiedniego div-a 
		
		 $('cfcshout').set('html', responseHTML);

		
		// teoretycznie wystarczy brac tylko ostatni div z wiadomoscia
		// ale moze sie zdazyc ze wiecej niz jedna wiadomosc przyjdzie 
		// w czasie przerwy miedzy odswiezeniami
		// wiec wypada mignac na wszystkie
	
		for(i = 1; i<responseTree.length; i++)
			{
			var tmp = responseTree[i];
				if(mark_new) //jesli mamy migac na nowe msgi
				{
				if( parseInt(tmp.id) > last_id)
				  {
					//nowy efekt, ustawiamy opcje link na 'chain' aby kazdy nowo dodany efekt czekal
					// az poprzedni sie zakonczy
				     var migniecie = new Fx.Morph( tmp.id, {duration: 650, link:'chain'});
										
					//dodajemy kolejno: zmiane tla na czerwono i z powrotem na takie jak bylo
					// dzieki 'chain' wykonaja sie po kolei
						migniecie.start({'background-color': '#FF3737'});	
						migniecie.start({'background-color': '#3674BE'});
					
						//auto przewiniecie na dol
						$('cfcshout').scrollTop = 0;
						$('cfcshout').scrollTop = $('cfcshout').scrollHeight;
					
					last_id = parseInt(tmp.id);
				  }
				}
				else //jesli ma nie migac (np po pierwszym wczytaniu strony)
				{
				//tylko przypisujemy do last_id id ostatniej wiadomosci
				  if( parseInt(tmp.id) > last_id) last_id = parseInt(tmp.id);
				  	//auto przewiniecie na dol
					$('cfcshout').scrollTop = 0;
					$('cfcshout').scrollTop = $('cfcshout').scrollHeight;
				}
				
				
			}
			
		}
	  }
	  );
    data.send(); 

	if(autorefresh)
    {	
	t = setTimeout('odswiezbox(true)',30000);
	}
}

//funkcja odswiezajaca liste zalogowanych osob pod shoutboxem
function OdswiezListeZalogowanych()
{
	list_req = new Request.HTML( {url: 'http://' + location.host +'/shoutbox/lista_zalogowanych',
	  onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript)
		{   
		var migniecie2 = new Fx.Morph( $('zalogowani'), {duration: 450, link:'chain'});
		var body_color = '#5290CA'; //document.body.getStyle('background-color');
		var org_color ='#3674AE'; //$('zalogowani').getStyle('background-color');
		
		migniecie2.start({'background-color': body_color});	
		$('zalogowani').set('html','<span>Osoby zalogowane: </span>' + responseHTML);
		migniecie2.start({'background-color': org_color});
	    },
		onFailure: function(xhr)
		 {
		 $('zalogowani').innerHTML = 'błąd odświeżania'; 
		 }
	  }
	  );
	 list_req.send();	
	 setTimeout('OdswiezListeZalogowanych()',120000);
}



function switchSbAutoRefresh()
	{
	
	if(autorefresh) //jesli wlaczone
	{
	autorefresh=!autorefresh; 
	clearTimeout(t); 
	$('sbrefreshlink').innerHTML = 'włącz';
	}
	else //jesli wylaczone
	{
	autorefresh=!autorefresh; 
	odswiezbox(true);
	$('sbrefreshlink').innerHTML = 'wyłącz';
	}
		
	 
	 
	}


odswiezbox(false);
window.addEvent('domready', function() { OdswiezListeZalogowanych();});
