var Form_id = new Array();
i=0;
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
Form_id[i++] = "";
var Form_layer = new Array();
var Form_item_max = new Array();
var Form_popup = new Array();
var Form_data = new Array();
var Form_ok_type = new Array();
var Form_ok_target = new Array();
var Form_ok_file = new Array();
var Form_ok_parameter = new Array();
var Form_in_parameter = new Array();
var Form_out_parameter = new Array();
var Form_valid_type = new Array();
var Form_valid_target = new Array();
var Form_valid_data = new Array();

	
function Get_Form_num(Id) {
	var i=0;
	while (Form_id[i]!=Id) { i++; }
	return i;
	}

function Form_start(Id,Layer,Parameter_in,Parameter_out) {
	var i=0;
	while (i<10 && Form_id[i] != Id ) { i++; }
	if (i!=10) { return; }
	var Window_num = Free_layer();
	Form_popup[Window_num] = false;
	Form_in_parameter[Window_num] = Parameter_in;
	Form_out_parameter[Window_num] = Parameter_out;  
	Form_item_max[Window_num] = 0;
	Form_id[Window_num] = Id;
	Form_layer[Window_num] = Layer;
	AjaxFORM(Window_num);
}

function All_valid(Form) {
	var i;
	var Id = Get_Form_num(Form);
	for (i=0;i<Form_item_max[Id];i++) {
		if (document.getElementById(Get_item(Id,i)).valid_need) {
			document.getElementById(Get_item(Id,i)).onblur(); 
		}	
	}
}

function Form_ok(Form) {
	
	var Id = Get_Form_num(Form);
	var i;
	var Form_ok_Timer_var;
	All_valid(Form);

	Form_ok_Timer_func = function() {
		var Valid_form=true;
		var Request_form=true;
		for (i=0;i<Form_item_max[Id];i++) {
			if (document.getElementById(Get_item(Id,i)).valid_need && !document.getElementById(Get_item(Id,i)).Request_OK) { Request_form = false; }
		}
		if (!Request_form) { Form_ok_Timer_var = setTimeout("Form_ok_Timer_func()",100); }
		else {
			var error_string="";
			for (i=0;i<Form_item_max[Id];i++) {
				if (document.getElementById(Get_item(Id,i)).valid_need && !document.getElementById(Get_item(Id,i)).valid) { 
					Valid_form = false; 
					error_string = error_string + document.getElementById(Get_item(Id,i)).tag_name + " - " + document.getElementById(Get_item(Id,i)).Message + "!\r\n";
				}
			}			
 			if (!Valid_form) { 
			alert(error_string); 
			}
			else { 
				var Parameter = fuckie();
				if (Form_ok_parameter[Id]!="") { 
					//alert(Form_ok_parameter[Id]);
					var Temp1 = Form_ok_parameter[Id].split(",");
					for (i in Temp1) {
					var Temp2 = Temp1[i].split("=");
					var Temp3 = Temp2[1].split(".");
					Parameter += "&";
					Parameter += Temp2[0] + "=";
					switch (Temp3[1]) {
						case "value":
							Parameter +=  document.getElementById(Temp3[0]).value;
						break;
						case "valid":
							Parameter +=  document.getElementById(Temp3[0]).valid;
						break;
						case "d":
							Parameter +=  Temp3[0];
						break;
						default:
							alert("Szintaktikai hiba: " + Temp_Array4[1]);
							Halt("UNKNOWN FORM_DATA_HEADER_PARAMETER_EXTENSION","Form_id: "+Form_id[Id]+"<br>Parameter: " + Form_ok_parameter[Id]);
						}
					} 

				}
				if (Form_in_parameter[Id]!="") { Parameter = Parameter + "&" +  Form_in_parameter[Id]; }
				for (i=0;i<Form_item_max[Id];i++) {
					if (document.getElementById(Get_item(Id,i)).param_need == "Y" ) { 
						if (document.getElementById(Get_item(Id,i)).type=="checkbox") 
							if (document.getElementById(Get_item(Id,i)).checked!=true) document.getElementById(Get_item(Id,i)).value="N";
						Parameter += "&" + document.getElementById(Get_item(Id,i)).id + "=" + document.getElementById(Get_item(Id,i)).value; 
					}
				}	
//alert(Parameter);
				if (Form_valid_type[Id]=="none") { AjaxPHP(Form_ok_target[Id],Form_ok_file[Id],Parameter); }
					else {
						var Request_FormOk = Form_valid_target[Id] + "?" + Parameter;
						var Answer_FormOK = Ajax(Request_FormOk);
				
						Answer_FormOK.onreadystatechange=function()	{
							if (Answer_FormOK.readyState==4)  {
								var Answer = Answer_FormOK.responseText.split("|");
								if (Answer[0]=="OK") { 
									if (Form_ok_target[Id]=="refresh") window.location=PCT_url;

//									AjaxPHP(Form_ok_target[Id],Form_ok_file[Id],Parameter); 
									} else alert(Answer[1]);
								}
							}
					}
			}
		}

	}
	Form_ok_Timer_var = setTimeout("Form_ok_Timer_func()",100);
}
	
function AjaxFORM(Id)	{
	//document.body.style.cursor = "wait";
//	var Form_Request_String = PCT_url + "source/pct_form.php?form_type=html&" + fuckie() + "&form_id=" + Form_id[Id] + '&screen_width=' + Screen_width + '&screen_height=' + Screen_height + '&margin_top=' + Margin_Top;
	var Data_Request_String = PCT_url + "source/pct_form.php?form_type=data&" + fuckie() + "&form_id=" + Form_id[Id] + '&screen_width=' + Screen_width + '&screen_height=' + Screen_height + '&margin_top=' + Margin_Top;
	if (Form_out_parameter[Id]!=undefined) { 
//		Form_Request_String = Form_Request_String + "&" + Form_out_parameter[Id]; 
		Data_Request_String = Data_Request_String + "&" + Form_out_parameter[Id]; 
		}
//	var Form_Request_OK = false;
	var Data_Request_OK = false;
//	var Form_Request = Ajax(Form_Request_String);
	var Data_Request = Ajax(Data_Request_String);
/*
	Form_Request.onreadystatechange=function()	{
		if (Form_Request.readyState==4)  {
			//alert(Form_Request.responseText);
			document.getElementById(Form_layer[Id]).innerHTML = Form_Request.responseText;
			Form_Request_OK = true;
		}
	}
*/
	Data_Request.onreadystatechange=function()	{
		if (Data_Request.readyState==4)  {
			//alert(Data_Request.responseText);
			Form_data[Id] = Data_Request.responseText;
			Data_Request_OK = true;
		}
	}
	var Timer_Function;
	AjaxFORMtimer = function() {
		var Form_OK = true;
//		if (!Form_Request_OK) { Form_OK = false; }
		if (!Data_Request_OK) { Form_OK = false; }
		if (Form_OK) { 
			//alert(Form_data[Id]);
			var Temp_Array = new Array();
			var Temp_Array2 = new Array();
			//bela="";
			Temp_Array = Form_data[Id].split(String.fromCharCode(13,10));
			//document.getElementById(Form_layer[Id]).innerHTML = Form_data[Id].split(String.fromCharCode(13,10));
			//alert(Temp_Array[3]);
			for (i in Temp_Array) {
				
				if (Temp_Array[i]!="") {
					Temp_Array2 = Temp_Array[i].split("|");
					
					if (i==0) {	
						var ii=0;
						Window_on(Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++],Temp_Array2[ii++]);
						Form_item_max[Id]=0;
						Form_ok_type[Id] = Temp_Array2[ii++];
						Form_ok_target[Id] = Temp_Array2[ii++];
						Form_ok_file[Id] = Temp_Array2[ii++];
						Form_ok_parameter[Id] = Temp_Array2[ii++];
						if (Form_ok_target[Id]=='this') { Form_ok_target[Id] = Form_layer[Id]; }
						if (Form_ok_parameter[Id]==undefined) { Form_ok_parameter[Id]=""; }
					 	Form_valid_type[Id]='none';
						if (Temp_Array2[ii++]=="VALID") {
						 	Form_valid_type[Id]=Temp_Array2[ii++];
							Form_valid_target[Id]=Temp_Array2[ii++];
							Form_valid_data[Id]=Temp_Array2[ii++];
							}
					} else { 
						var ii=0;
						var act_item = Temp_Array2[ii++];
						Put_item(Id,i-1,act_item);

						document.getElementById(act_item).Message = "";
						document.getElementById(act_item).value = "";
						document.getElementById(act_item).Request_OK=true;
						document.getElementById(act_item).valid=true; 
						document.getElementById(act_item).valid_need=false;
						document.getElementById(act_item).tag_name = Temp_Array2[ii++];
						document.getElementById(act_item).Field_type = Temp_Array2[ii++];
						document.getElementById(act_item).param_need = Temp_Array2[ii++];
						document.getElementById(act_item).normal_class = Temp_Array2[ii++];
						document.getElementById(act_item).error_class = Temp_Array2[ii++];
						document.getElementById(act_item).comment = document.getElementById(act_item).title;
						Parameter_command=Temp_Array2[ii++];
						
						while (Parameter_command!=undefined) {
						switch (Parameter_command) {
						case "VALID":
							
							document.getElementById(act_item).valid_type=Temp_Array2[ii++];
							document.getElementById(act_item).valid_value=Temp_Array2[ii++];
							document.getElementById(act_item).valid_parameter=Temp_Array2[ii++];
							document.getElementById(act_item).valid=false; 
							document.getElementById(act_item).valid_need=true; 
							document.getElementById(act_item).onblur=function() { 
								this.Request_Filed_String = this.valid_value + "?" + fuckie();
								var Parameters = this.valid_parameter.split(",");
								for (iii in Parameters) {
									var Temp_Array3 = Parameters[iii].split("=");
									var Temp_Array4 = Temp_Array3[1].split(".");
									this.Request_Filed_String = this.Request_Filed_String + "&" + Temp_Array3[0] + "=";
									//alert(Temp_Array4[0]);
									switch (Temp_Array4[1]) {
									case "value":
										this.Request_Filed_String = this.Request_Filed_String + document.getElementById(Temp_Array4[0]).value;
									break;
									case "valid":
										this.Request_Filed_String = this.Request_Filed_String + document.getElementById(Temp_Array4[0]).valid;
									break;
									case "d":
										this.Request_Filed_String = this.Request_Filed_String + Temp_Array4[0];
									break;
									default:
										alert("Szintaktikai hiba: " + Temp_Array4[1]);
										Halt("UNKNOWN FORM_DATA_VALID_PARAMETER_EXTENSION","Object_id: "+this.id+"<br>File: " + this.valid_value+"<br>Parameter: " + this.valid_parameter);
									}
								} 
								//alert(this.Request_Filed_String);
								this.Request_Field = Ajax(this.Request_Filed_String);
								this.Request_OK=false;
								var Timer_field_function;
								var Timer_count=0;
								AjaxFIELDTimer = function(Id) {
									
									//alert(document.getElementById(Id).Request_Field.readyState);
									if (document.getElementById(Id).Request_Field.readyState==4) {
										document.getElementById(Id).Request_OK=true;
										var Respond_valid = document.getElementById(Id).Request_Field.responseText.split("|");
										document.getElementById(Id).Error = Respond_valid[0];
										switch (document.getElementById(Id).Error) {
										case "ERR": 
											//alert(document.getElementById(Id).error_class);
											
											
											document.getElementById(Id).valid = false;
											document.getElementById(Id).Message = Respond_valid[1];
											//document.getElementById(Id).comment = document.getElementById(Id).title;
											document.getElementById(Id).alt = Respond_valid[1];
											document.getElementById(Id).title = Respond_valid[1];
											document.getElementById(Id).className=document.getElementById(Id).error_class;
										break;
										case "OK":
											document.getElementById(Id).Message = Respond_valid[1];
											document.getElementById(Id).alt = document.getElementById(Id).comment;
											document.getElementById(Id).title = document.getElementById(Id).comment;											
											document.getElementById(Id).className=document.getElementById(Id).normal_class;
											document.getElementById(Id).valid = true;
										break;
										default:
											alert("Hibás válasz a szervertől!");
											Halt("AJAX_PHP_VALID","Object_id: "+document.getElementById(Id).id+"<br>Request: " + document.getElementById(Id).Request_Filed_String + "<br>Respond:" + document.getElementById(Id).Error)
										}
								//		alert(document.getElementById(Id).Error);
									} else {
										Timer_count++;
										if (Timer_count==30) { Alert("Timeout!"); }
										Timer_field_function = setTimeout("AjaxFIELDTimer('" + Id + "')",100);
									}
								}
								Timer_field_function = setTimeout("AjaxFIELDTimer('" + this.id + "')",100);
								//alert("AjaxFIELDTimer(" + this.window + ",'" + this.id + "')");

							}
						break;
						case "VALUE":
							document.getElementById(act_item).value = Temp_Array2[ii++];
						break;
						default:
						alert("Hibás válasz a szervertől!"); 
						Halt("UNKNOWN FORM_DATA_PARAMETER","Object_id: "+document.getElementById(act_item).id+"<br>Parameter: " + Parameter_command);
						} 
						Parameter_command=Temp_Array2[ii++];
						}
						Form_item_max[Id]++;
					}
				
				}
			
			}
			
			//All_valid(Form_id[Id]);
			
			//document.getElementById('test').innerHTML = bela;
			} else {
			Timer_Function = setTimeout("AjaxFORMtimer()",100);
			}
		}
	Timer_Function = setTimeout("AjaxFORMtimer()",100);
	
}
