Tovo=new Object();

Tovo.FormSubmit = function (form,eventListener)
{
	if (!form.action) return false;
	if (eventListener)
		eventListener.form = form;
	if (eventListener && eventListener.onPrepare && (typeof(eventListener.onPrepare)=='function'))
		eventListener.onPrepare();
	new FSite2.sendForm(form,function(){
			if (eventListener)
			{
				eventListener.responseText=this.httpRequest.responseText;
				eventListener.objectHttpRequest=this.httpRequest;
			}
			
			if (eventListener && eventListener.onComplete && (typeof(eventListener.onComplete)=='function'))
			{
				eventListener.onComplete();
			}
			
			if (this.httpRequest.getResponseHeader('X-Form-Eval'))
			{
				if (eventListener && eventListener.onEval && (typeof(eventListener.onEval)=='function') && !eventListener.stopEval)
					eventListener.onEval();
				eval(this.httpRequest.responseText);
			}
			else if (this.httpRequest.getResponseHeader('X-Form-Errors'))
			{
				if (eventListener && eventListener.onErrors && (typeof(eventListener.onErrors)=='function'))
					eventListener.onErrors();
			}
			else if (eventListener && eventListener.onSuccess && (typeof(eventListener.onSuccess)=='function'))
			{
				eventListener.onSuccess();
			}
	},((form.method=='post')?true:false),form.action);	
}

Tovo.ContentLoad = function(link,eventListener)
{
	if (eventListener && eventListener.onPrepare && (typeof(eventListener.onPrepare)=='function'))
		eventListener.onPrepare();

	new FSite2.HTTPRequest(link,function(){
		if (eventListener && eventListener.onComplete && (typeof(eventListener.onComplete)=='function'))
		{
			eventListener.responseText=this.httpRequest.responseText;
			eventListener.onComplete();
		}
	});
} 

/*Obiekt Listenera*/
Tovo.eventListener=function()
{
	return this;
}
/*---------------------------------*/
/*Listeners - po wczytaniu AJAX ---*/
/*---------------------------------*/

/*Dowolna obsługa z funkcji submitFormAjax*/
Tovo.eventListener.prototype.submitFormAfterAjax = function()
{
	$(this.ref_idcontent).innerHTML=this.responseText;
	var forms=$(this.ref_idcontent).getElementsByTagName('form');
	for (var i=0;i<forms.length;i++)
	{
		extendForms(forms[i]);
	}
}

/*Dowolna obsługa z funkcji sukces -> wywołanie opóznionej funckji submitFormAjax*/
Tovo.eventListener.prototype.submitFormAfterSuccessAjax = function()
{
	var afterAction=this.ref_afterAction;
	if (this.ref_timeout && afterAction && (typeof(afterAction)=='function'))
		setTimeout(afterAction,this.ref_timeout);
}

/*podmienia zawartosc obiektu ktory byl wyslany na to co dostaje w odpowiedzi*/
Tovo.eventListener.prototype.swapForm = function ()
{
	old_cont=this.content;
	FSite2.removeCalendars(old_cont);
	//Formularz jako element DOM
	container=document.createElement('div');
	container.innerHTML=this.responseText;
	for (var c=container.firstChild;c.nodeType!=1;c=c.nextSibling);
	old_cont.parentNode.replaceChild(c,old_cont);
	initblock(c);
	extendForms(c);
}

/*wstawia w podana zawartosc obiektu ktory byl wyslany */
Tovo.eventListener.prototype.insertContent = function ()
{
	var cont=this.content;
	FSite2.removeCalendars(cont);
	cont.innerHTML=this.responseText;
	
	for (var c=cont.firstChild;c.nodeType!=1;c=c.nextSibling);
	initblock(c);
	extendForms(c);
}

/*wstawieanie tresci do zawartosci warstwy */
Tovo.eventListener.prototype.insertContentLayer = function ()
{
	var cont=l1.object;
	FSite2.removeCalendars(cont);
	cont.innerHTML=this.responseText;
	
	for (var c=cont.firstChild;c.nodeType!=1;c=c.nextSibling);
	initblock(c);
	extendForms(c);

	l1.show();
	loader.remove();
	bg.object.onclick = function ()
	{
		closeAbsoluteLayer()
	}
}

/*wstawia w podana zawartosc obiektu ktory byl wyslany */
Tovo.eventListener.prototype.insertSimpleContent = function ()
{
	cont=$(this.content);
	FSite2.removeCalendars(cont);
	cont.innerHTML=this.responseText;
	extend=false;
	var f;
	if (f=cont.getElementsByTagName('form'))
	{
		for (var k=0;k<f.length;k++)
		{
			extendForms(f[k]);
			extend=true;
		}
	}
	
	if (!extend)
		extendForms(cont);
	
	cont.style.visibility='visible';
	cont.style.display='';
}

/*wyswielenie wyszukiawrki na stronie glownej*/
Tovo.eventListener.prototype.showSearchMainPage = function()
{
	$((this.contentsearchload)?this.contentsearchload:'contentsearchload').style.display='none';
	$((this.contentsearch)?this.contentsearch:'contentsearch').style.display='block';
}

Tovo.eventListener.prototype.afterSearchMaingPage = function()
{
	this.swapForm();
	this.showSearchMainPage();
}

Tovo.eventListener.prototype.afterLoadSearchMainPage = function ()
{
	if (!window._searcherLayer)
	{
		this.insertContent()
		this.showSearchMainPage();
	}
}

Tovo.eventListener.prototype.swapLayerForm = function ()
{
	if (this.content && l1 && l1.object)
	{
		var cont_old=$(this.content);
		FSite2.removeCalendars(cont_old);
		l1.object.innerHTML=this.responseText;
		var cont=$(this.content);
		initblock(cont);
		extendForms(cont);
		extendLoadImg(cont);
		loader.remove();
		l1.show();
	}
}

Tovo.eventListener.prototype.swapContent = function()
{
	if (this.content)
	{
		var cont=$(this.content);
		FSite2.removeCalendars(cont);
		cont.innerHTML=this.responseText;
		initblock(cont);
		extendForms(cont);
		extendLoadImg(cont);
	}
}

Tovo.eventListener.prototype.loadLayerFollupSuccess=function()
{
	var cont=$(this.contentPage);
	cont.innerHTML=this.responseText;
	initblock(cont);
	extendForms(cont);
	extendLoadImg(cont);
	loader.remove();
	bg.object.onclick();
}

/*wczytanie warstwy dla dostosuj -> tylko AJAXowe wyszukiwarki*/
Tovo.eventListener.prototype.afterNewLayerFollup = function ()
{
	this.convertForm();
	if (this.actionafter) this.actionafter();
	this.convertFormFollup();
	this.convertFormFinish();
}

/*wczytywanie warstwy dla wyszukiwarek + zmiana przez JS wyszukiwarki normalnej na warstwe*/
Tovo.eventListener.prototype.afterLoadPageSearchLayer = function ()
{
	this.convertForm();
	this.convertFormSearch();
	this.convertFormFinish();
}

/*Standordowa obroka po wcztaniu formularza na warstwe*/
Tovo.eventListener.prototype.convertFormFinish=function()
{
	l1.object.appendChild(newLayer(this.nazwaStr,function ()
		{
			FSite2.removeCalendars(l1.object);
			l1.remove();
			bg.remove();
		},div));
	
	initblock(l1.object);
	for (var c=l1.object.firstChild;c.nodeType!=1;c=c.nextSibling);
	extendForms(form_content);
	l1.show();
	loader.remove();
	bg.object.onclick = function ()
	{
		closeAbsoluteLayer();
	}
}

/*Standardowa obrobka przed wczytaniem formularza na warstwe*/
Tovo.eventListener.prototype.convertForm=function()
{
	div=document.createElement('div');
	div.className='width310 searcher';
	this.tmp=document.createElement('div');
	this.tmp.innerHTML=this.responseText;
	
	var forms=this.tmp.getElementsByTagName('form');
	if (forms && (forms.length>=1))
	{
		div.innerHTML='<form'+((forms[0].name)?(' name="'+forms[0].name+'"'):'')+((forms[0].method)?(' method="'+forms[0].method+'"'):'')+((forms[0].action)?(' action="'+forms[0].action+'"'):'')+((forms[0].id)?(' id="'+forms[0].id+'"'):'')+'></form>';
		form_content=div.getElementsByTagName('form')[0];
	}
}

Tovo.eventListener.prototype.convertFormSearch=function()
{
	for(i=0;i<this.tmp.getElementsByTagName('div')[0].getElementsByTagName('div').length;i++)
	{
		if (i==0)
		{
			
			tmpName=this.tmp.getElementsByTagName('td');
			clear=tmpName[0].getElementsByTagName('*');
			span=document.createElement('span');
			span.innerHTML=' - ';
			for (i=0;i<clear.length;i++)
				tmpName[0].replaceChild(span, clear[i]); 
			this.nazwaStr=tmpName[0].innerHTML;
		}
		if (this.tmp.getElementsByTagName('div')[0].getElementsByTagName('div')[i].className=='main')
		{
			this.tmp.getElementsByTagName('div')[0].getElementsByTagName('div')[i].style.backgroundImage='none';
			form_content.appendChild(this.tmp.getElementsByTagName('div')[0].getElementsByTagName('div')[i]);
			break;
		}
	}
}

Tovo.eventListener.prototype.convertFormFollup=function()
{
	for(i=0;i<this.tmp.getElementsByTagName('div').length;i++)
	{
		if (i==0)
		{
			
			this.nazwaStr=this.tmp.getElementsByTagName('div')[0].innerHTML;
		}
		if (this.tmp.getElementsByTagName('div')[i].className=='main')
		{
			this.tmp.getElementsByTagName('div')[i].style.backgroundImage='none';
			form_content.appendChild(this.tmp.getElementsByTagName('div')[i]);
			break;
		}
	}
}

/*podmiana tresci i zlikwidowanie warstw wait i bg*/
Tovo.eventListener.prototype.afterSearchLayerPage = function ()
{
	this.swapContent();
	loader.remove();
	bg.object.onclick();
}

/*wyswietlenie ponownie warstwy z wyszukiwarka lub z dostosuj*/
Tovo.eventListener.prototype.afterSearchLayerPageError = function()
{
	var content=window.l1.object.getElementsByTagName('form');
	if (content && (content.length>=1))
	{
		divtmp=document.createElement('div');
		divtmp.innerHTML=this.responseText;
		divs=divtmp.getElementsByTagName('div');
		for (x=0;x<divs.length;x++)
		{
			if (divs[x].className && (divs[x].className=='main'))
				{
					content[0].innerHTML='';
					divs[x].style.backgroundImage='none';
					divs[x].id='searcherbox';
					content[0].appendChild(divs[x]);
				}
		}
		FSite2.removeCalendars(content[0]);
		initblock(content[0]);
		extendForms(content[0],1);
		window.l1.object.style.display='block';
	}
	if (loader) loader.remove();
}

/*---------------------------------*/
/*Listeners - przed wywolaniem AJAX*/
/*---------------------------------*/

/*Dowolna obsługa z funkcji submitFormAjax*/
Tovo.eventListener.prototype.submitFormBeforeAjax = function()
{
	if (this.ref_idform && $(this.ref_idform))
		$(this.ref_idform).style.display='none';
	if (this.ref_idloader && $(this.ref_idloader))
		$(this.ref_idloader).style.display='';
}

/*waiting dla followup*/
Tovo.eventListener.prototype.beforeLoadFollup = function()
{
	if (this.content)
	{
		var addoption=FSite2.getElementsByClassName('addoption',$(this.content));
		for (i=0;i<addoption.length;i++)
		addoption[i].parentNode.removeChild(addoption[i]);
		
		var loader=FSite2.getElementsByClassName('followup_loader',$(this.content));
		for (i=0;i<loader.length;i++)
		loader[i].style.display='block';
	}
}

/*ladnowanie rezultatu wyszukiwania po wcisnieciu szukaj na warstwie*/
Tovo.eventListener.prototype.beforeSearchLayerPage = function()
{
	window.l1.object.style.display='none';
//	img=document.createElement('img');
//	img.src='/static/img/ajax/loading_white.gif';
	loader = new FSite2.Layer('backgroundformloader');
//	loader.object.appendChild(img);
	loader.center();
}

/*ukrycie wyszukiwarki na stronie glownej*/
Tovo.eventListener.prototype.beforeSearchMainPage = function()
{
	$((this.contentsearch)?this.contentsearch:'contentsearch').style.display='none';
	$((this.contentsearchload)?this.contentsearchload:'contentsearchload').style.display='block';
}

/*wlaczenie ciemnej warstwy i ladowania - dla wyszukiwarki, dla innych (wymagane przekazanie klasy dla warstwy)*/
Tovo.eventListener.prototype.beforeLoadPageSearchLayer = function()
{
	bg = new FSite2.Layer('background',null,'background_layer');
	bg.fullScreen();
//	img=document.createElement('img');
//	img.src='/static/img/ajax/loading_white.gif';
	loader = new FSite2.Layer('backgroundformloader');
//	loader.object.appendChild(img);
	loader.center();
	window.l1 = new FSite2.Layer((this.classFormLayer)?this.classFormLayer:'backgroundform',true);
}

/* proste ukrycie tresci $(this.content) oraz pokazanie loadera $(this.loader) */
Tovo.eventListener.prototype.beforeLoadContent = function()
{
	var contentElement;
	var loaderElement;
	if (this.loader)
		loaderElement = $(this.loader);
	if (this.content)
	{
		contentElement = $(this.content);
		if (loaderElement && contentElement.clientWidth && contentElement.clientHeight)
		{
			loaderElement.style.width = contentElement.clientWidth + 'px';
			loaderElement.style.height = contentElement.clientHeight + 'px';
		}
		if (contentElement)
			contentElement.style.display = 'none';
	}
	if (loaderElement)
	{
		loaderElement.style.display = 'block';
	}
}

/* prosta podmiana tresci w $(this.content) oraz ukrycie loadera $(this.loader) */
Tovo.eventListener.prototype.afterLoadContent = function()
{
	if (this.content)
	{
		$(this.content).style.display = 'block';
		if (!this.target)
			this.target = this.content;
		var cont=$(this.target);
		FSite2.removeCalendars(cont);
		cont.innerHTML=this.responseText;
		initblock(cont);
		extendForms(cont);
		extendLoadImg(cont);
	}
	if (this.loader && $(this.loader))
		$(this.loader).style.display = 'none';
}
