/**
 * Lista elementów + dodatkowe funkcjonalno¶ci
 * 
 * @param	{object} param : Stany obiektu na etapie tworzenia. 
 * @see		TForm_object
 * @return	Uniwersalny obiekt listy
 * @version	0.8
 * @author	Tomasz £ukawski
 * @type	TList
 */
TList	= function( param )
{
	this.obj	= new TForm_object( param );
	this.obj.lista	= new Array();
	this.obj.aktywny_element = undefined;
	this.obj.setParam( param );
	/**
	 * dodaj obiekt formularza do listy;
	 * @param	{object}	element_listy
	 */
	this.obj.add	= function( element_listy )
	{
		var numer = this.lista.length;
		this.lista[ numer ] = element_listy;
		element_listy._numer	= numer;
		this.aktywny_element = element_listy;						
	}
	//-- usuń formularz z listy
	this.obj.remove	= function( element_listy )
	{
		//-- znajd¼ element i usuń z listy;
		for (var i in this.lista)
		{
			if ( typeof(this.lista[i]) == 'function' ) continue; //-- jQery patch
			if ( this.lista[i] == element_listy ) this.lista.splice( i, 1 ); 
		}
	}
	//-- wyszukaj element listy (By) property
	//-- (pierwszy znaleziony element) 
	this.obj.findBy	= function( property, value )
	{		
		//-- znajd¼ element i usuń z listy;
		//var element_listy = undefined;
		for (var i in this.lista)
		{
			if ( typeof(this.lista[i]) == 'function' ) continue; //-- jQery patch
			if ( this.lista[i][property] == value ) return this.lista[i][property];  
		}
		return undefined;
	}
	//-- lista elementów;
	this.obj.count	= function()
	{
		var licznik = this.lista.length
		for (var i in this.lista)
		{
			if ( typeof(this.lista[i]) == 'function' ) licznik--; //-- jQery patch
		}
		return licznik;
	}
	this.obj.firstElement	= function()
	{
		this.aktywny_element = undefined;
		for (var i in this.lista)
		{
			if ( typeof(this.lista[i]) == 'function' ) continue; //-- jQery patch
			this.aktywny_element = this.lista[i]; return this.aktywny_element; 
		}		
		return undefined;
	}
	this.obj.lastElement	= function()
	{
		this.aktywny_element = undefined;
		var i = this.lista.length-1;
		if (i>=0)
		{
			if ( typeof(this.lista[i]) == 'function' ) return undefined; //-- jQery patch
			this.aktywny_element = this.lista[i];
		}
		return this.aktywny_element; 
	}
	this.obj.nextElement	= function()
	{
		if (this.aktywny_element == undefined) {  this.aktywny_element = this.firstElement(); return this.aktywny_element; }
		//--
		var trafiony = false;
		for (var i in this.lista)
		{
			if ( typeof(this.lista[i]) == 'function' ) continue; //-- jQery patch
			if ( trafiony ) { this.aktywny_element = this.lista[i]; return this.aktywny_element; } 
			if ( this.aktywny_element.id == this.lista[i].id ) {trafiony = true; continue;}
		}		
		return this.aktywny_element;
	}
	this.obj.prevElement	= function()
	{
		if (this.aktywny_element == undefined) {  this.aktywny_element = this.lastElement(); return this.aktywny_element; }
		//--
		var trafiony = false;
		for (i=(this.lista.length-1); i>=0; i-- )
		{
			if ( typeof(this.lista[i]) == 'function' ) continue; //-- jQery patch
			if ( trafiony ) { this.aktywny_element = this.lista[i]; return this.aktywny_element; } 
			if ( this.aktywny_element.id == this.lista[i].id ) {trafiony = true; continue;}
		}		
		return this.aktywny_element;
	}

	//--
	return this.obj;	
}

