/*
	Forms util függvények
	===============
*/

//_formName nevű formot tölti ki a _formArray tömb elemeivel
function fillForm(_formName)
{
	var formArray = eval(_formName+"Array[\""+_formName+"\"];");

	//ennek a formnak minden elemét betöltjük a megfelelő mezőbe
	for(var key in formArray)
		fillElements(_formName,formArray[key],key);
}


//Mezők illesztési függvénye. _objch objektumlánc-ra illeszti az _element elemet
function fillElements(_objch,_array,_key)
{

try
{
	//a rekurzió végső állomása, amikor egy adott elemnek már értéket kell adni
	if(!isArray(_array))
	{


		if(isNaN(_key))
		{
			var element=eval("document."+_objch+"."+_key+";");
			
		}
		else
		{
			var tempElement=eval("document."+_objch+"["+_key+"];");			
			if(tempElement != undefined && tempElement != null &&tempElement.type != undefined && tempElement.type != null)
			{
				var element=tempElement;
			}
			else
			{
				var element=eval("document."+_objch+";");
			}

		}
		
		switch(element.type)
		{
			case "text":
			{
				element.value=stripslashes(unescape(_array));
				break;
			}

			case "radio":
			{
				if(_array=="true")element.checked=_array;
				else element.checked=false;
				break;
			}

			case "select-one":
			{

				for(x=0;x<element.options.length;x++)
				{

					if(element.options[x].value==stripslashes(_array.toString()))
					{
						element.options[x].selected=true;
					}
					else
						element.options[x].selected=false;

				}
				break;
			}

			case "select-multiple":
			{

				//ha azt első elemmel találkozunk akkor kipucoljuk a multi selectet alapértelmezetten false mindegyik
				if(_key==0)
				{
					for(x=0;x<element.options.length;x++)
						element.options[x].selected=false;
				}
				//amelyik szerepel a tömbünkben azt beállítjuk true-ra
				for(x=0;x<element.options.length;x++)
				{

					if(element.options[x].value.toString()==stripslashes(_array.toString()))
					{
						element.options[x].selected=true;
					}


				}

				break;
			}

			case "checkbox":
			{
				if(_array=="true")element.checked=_array;
				else element.checked=false;
				break;
			}

			default :
			{
				element.value=stripslashes(unescape(_array.toString()));
				break;
			}



		}



	}


	//a rekurzió folytatása: összetett elemek esetén
	else
	{
		
		for(var key in _array)
		{

			if(_key.indexOf("%5B%5D")!=-1)
				fillElements(_objch+".elements[\""+unescape(_key)+"\"]",_array[key],key);
			else	
				fillElements(_objch+"."+_key,_array[key],key);

		}
	}
}
catch(error){;}

}

// Űrlap törlésére
function clear_form(_form)
{
	for(i = 0; i <_form.elements.length; i++)
	{
		element = _form.elements[i];
		switch(element.type)
		{
			case "text": case "password": case "textarea":
			{
				element.value = "";
				break;
			}

			case "radio":
			{
				if(!element.defaultChecked)
					element.checked = false;
				break;
			}

			case "select-one":
			{
				element.options[1].selected = true;
				break;
			}

			case "select-multiple":
			{
				for(x=0; x<element.options.length; x++)
					element.options[x].selected = false;
				break;
			}

			case "checkbox":
			{
				element.checked = false;
				break;
			}

			default :
			{
				break;
			}
		}
	}
}

// Select beállítása
function set_select(id, value)
{
	s = document.getElementById(id);
	cn = s.childNodes;

	for(i = 0; i < cn.length; i++)
	{
		if(cn[i].value == value)
		{
			cn[i].selected = true;
			break;
		}
	}
}


//minden form minden elemét lekérő fv

function getFormValues()
{
	var avp="";
	var forms = document.getElementsByTagName("form");
	var post_request ="";

	//minden formra
	for(i=0;i<forms.length;i++)
	{
		var counterArr = new Array();
	   	

		//minden elemére
		for(j=0;j<forms[i].elements.length;j++)
		{
			//attributum-value pairs
			avp="";

			//a sokféle form objektum miatt elágazunk
			switch(forms[i].elements[j].type)
			{
				case "checkbox":
				{

					try{
						var element_name=forms[i].elements[j].name
						
						var separator_index=forms[i].elements[j].name.indexOf("[");
						if(separator_index!=-1)
							element_name=forms[i].elements[j].name.substring(0,separator_index);

																	
						
						var element=eval("document."+forms[i].name+".elements[\""+forms[i].elements[j].name+"\"]");
						
						
						if(element.length!=null && element.length!=undefined)
						{

							
							//megnézzük hogy volt e már ilyen tömbösített elem
							var preCount=counterArr[element_name];

							//kov elem indexe
							var next=0;
							//ha nem volt akkor beszúrunk egyet és 0-ás indexxel fűzzük a post_requestek közé
							if(preCount==null)
							{
								counterArr[element_name]=0;
							}
							else
							{
								//növeljük majd beszúrjuk a nyilvántartó tömbe
								next=parseInt(preCount)+1;
								counterArr[element_name]=next;
							}

							//végül befűzzük a megfelelő indexxel
							cont=escape(escape("[]"));
							avp=forms[i].name+"["+element_name+cont+"]["+counterArr[element_name]+"]="+forms[i].elements[j].checked;
							
						}
						else
						{
							avp=forms[i].name+"["+element_name+"]="+forms[i].elements[j].checked;
						}
					}catch(e)
					{
							
						avp="";
					}

					break;
				}
				case "radio":
				{
					
					try
					{
						var element=eval("document."+forms[i].name+"."+forms[i].elements[j].name);
						if(element.length!=null && element.length!=undefined)
						{

							//megnézzük hogy volt e már ilyen tömbösített elem
							var preCount=counterArr[forms[i].elements[j].name];

							//kov elem indexe
							var next=0;
							//ha nem volt akkor beszúrunk egyet és 0-ás indexxel fűzzük a post_requestek közé
							if(preCount==null)
							{
								counterArr[forms[i].elements[j].name]=0;
							}
							else
							{
								//növeljük majd beszúrjuk a nyilvántartó tömbe
								next=parseInt(preCount)+1;
								counterArr[forms[i].elements[j].name]=next;
							}

							//végül befűzzük a megfelelő indexxel
							avp=forms[i].name+"["+forms[i].elements[j].name+"]["+next+"]="+forms[i].elements[j].checked;
						}
						else
						{
							avp=forms[i].name+"["+forms[i].elements[j].name+"]="+forms[i].elements[j].checked;
						}
					}catch(e)
					{
						avp="";
					}
					break;
				}
				case "button":
				{
					//nem írunk be semmit a paraméterek közé - hiszen a gombokat nem akarjuk átadni
					break;
				}
				case "hidden":
				{
					//nem írunk be semmit a paraméterek közé - hiszen a rejtett paramétereket nem akarjuk átadni
					break;
				}
				case "password":
				{
					//nem írunk be semmit a paraméterek közé - hiszen a jelszavakat nem akarjuk átadni
					break;
				}
				case "reset":
				{
					//nem írunk be semmit a paraméterek közé - hiszen a jelszavakat nem akarjuk átadni
					break;
				}
				case "submit":
				{
					//nem írunk be semmit a paraméterek közé - hiszen a jelszavakat nem akarjuk átadni
					break;
				}
				default :
				{	//A selectet itt kell vizsgálnunk, mivel ő nem input tagként jelenik meg
					//multi-select. A select tag neve nagy betűkkel kerül visszaadásra függetlenül attól, hogy mit írunk a kódba.
					try
					{
						if(forms[i].elements[j].tagName=="SELECT" && forms[i].elements[j].multiple)
						{

							var counter=0;
							for(k=0;k<forms[i].elements[j].options.length;k++)
							{
								if(forms[i].elements[j].options[k].selected)
								{

									avp+=forms[i].name+"["+escape(escape(forms[i].elements[j].name))+"]["+counter+"]="+escape(forms[i].elements[j].options[k].value)+"&";
									counter++;

								}

							}
							if(avp=="")
							{
								avp+=forms[i].name+"["+escape(escape(forms[i].elements[j].name))+"]["+counter+"]=&";
							}

						}
						else if(forms[i].elements[j].tagName=="SELECT")
						{
							selected_index=forms[i].elements[j].selectedIndex;
							avp=forms[i].name+"["+forms[i].elements[j].name+"]="+escape(forms[i].elements[j].options[selected_index].value);
						}
						//textarea
						else if(forms[i].elements[j].tagName=="TEXTAREA")
						{
							avp=forms[i].name+"["+forms[i].elements[j].name+"]="+escape(addslashes(forms[i].elements[j].value));

						}
						//textfield
						else
						{
							avp=forms[i].name+"["+forms[i].elements[j].name+"]="+escape(forms[i].elements[j].value);
						}
					}catch(e)
					{

						avp="";
					}
					break;
				}
			}
			//ha gomb/ures/disabled/readOnly volt a vizsgált elem, akkor ne füzzünk hozzá feleslegesen ures mezőt
			if(avp.indexOf("=")!=-1 && !forms[i].elements[j].disabled && !forms[i].elements[j].readOnly && forms[i].elements[j].id!="do_not_save" )
			{
				//ha nem tartunk a végénél és még nem került szeparátor a kifejezés végére - > teszünk
				if(avp!="&" && avp!="")
				{
					post_request+="&"+avp;
				}
				
			}
		}
	}
	return post_request;
}
