/*
	IFW - obsługa formuarzy AJAX bazowanych na JQUERY
	Ostatnia modyfikacja: 23.03.2008	
	//TODO Obsługa separatorów
*/
var afconfig_arr = new Array();

$(document).ready(function() 
{ 
	Attach_ajaxForm();

	$().ajaxSend(function(r,s){ 		
 		$("#LoadingInfo").show();
	});

	$().ajaxComplete(function(r,s){
 		$("#LoadingInfo").fadeOut("fast");
	}); 		
});

$().ajaxError(function(ev,xhr,o,err) {
    //console.log(err);
    //alert (err);
});

function Attach_ajaxForm()
{
	$('.ajaxform').ajaxForm({ 
        dataType:  'json',  
        type:	   'post',
        beforeSubmit: h_frmbsbt,
        success:   h_frmsc 
    });             

}
/*
 * Funkcja wywoływana w momencie submitu formularza
 */
function h_frmbsbt(formData, jqForm, options)
{
	
	frmname = jqForm[0].id;
		
	/* Konfiguracja formularza */
	GetAFConfig();
					
	//oPrgIndi = frmGetPrgIndi(frmname);

	/* Nazwa formularza podawana do serwera*/	
	obj = new Object();	
	obj.name = 'frmname';
	obj.value = frmname;
	formData.push(obj);


		
	/* Włączenie paska postępu, wyłączenie klawisza submit*/
	$('#'+frmname+' :submit').hide();	
/*
	if (oPrgIndi != null)
	{
		$('#'+frmname+' :submit').hide();
		oPrgIndi.show();
	}
*/	
}

/*
 * Funkcja interpretująca odpowiedź z serwera
 */
function h_frmsc(data)
{

	/* Konfiguracja formularza */
	GetAFConfig();

	frmname = data.frmname;	
		
	/* Czyszczenie formularzy */
	
	// usunięcie klasy wizualizacji komunikatu błedu z pól formularza
	$('#'+frmname+' :input').removeClass (afconfig_arr['csserrfld_class']);
	
	// usunięcie kontenerów (dodanych automatycznie) na komunikaty błędów 	
	$('#'+frmname+' '+'.'+afconfig_arr['csserrmsg_class']).remove();
		
	// czyszczenie kontenerów dla błędów indywidualnie zdefiniowanych dla pól
	for (field in data.msg_containers_arr)
	{		
		$('#'+frmname+' #' + data.msg_containers_arr[field]).empty();			
		$('#'+frmname+' #' + data.msg_containers_arr[field]).hide();
	}

	/* Obsługa błędów walidacji*/	
	
	var field_no  = 0;
	var msg_no = 0;
	for (field in data.errors_arr)
	{
		
		var err_container = null;
		var err_separator = null;
				
		field_no ++;
		msg_no = 0;
		
		var field_msg = '';
		
		// czy dla tego pola zdefiniowano indywidualny kontener na komunikaty o błędach ?	    		
		if (data.msg_containers_arr[field])
		{
			err_container = data.msg_containers_arr[field];				
		}
			
		// czy dla tego pola zdefiniowano indywidualny separator dla komunikatów błędów
		if (data.msg_separators_arr[field])
		{
			err_separator = data.msg_separators_arr[field][0];				
		}
											
		error_item = data.errors_arr[field];
		
		for (msg in error_item)
		{
			msg_no++;
			msg_item = error_item[msg];
											
				/* Komunikaty o błędach */
								
				if (err_container == null)
				{					 
					/*Bez kontenera, wstaw za polem, automatycznie*/				
					$('#'+frmname+' #'+field).after('<span class="'+afconfig_arr['csserrmsg_class']+'">'+msg_item+'</span>');			
					$('#'+frmname+' #'+field + ' + .' + afconfig_arr['csserrmsg_class'] ).hide();	
					$('#'+frmname+' #'+field + ' + .' + afconfig_arr['csserrmsg_class'] ).fadeIn('slow');
				}
				else
				{
					/*Jest kontener, wstaw do niego */					
					$('#'+frmname+' #' + err_container).html(msg_item);					
					$('#'+frmname+' #' + err_container).fadeIn('slow');					
				}

				/* Klasa wizualiacji błędu dla pól formularza */				
				$('#'+frmname+' #'+field).addClass (afconfig_arr['csserrfld_class']);																						
		}
		
		//$('#'+frmname+'>'+'#'+afconfig_arr['csserrmsg_cont_prefix_id']+field).text (field_msg);
		if (field_no == 1)
		{
			$('#'+frmname+' '+'#'+field).focus();
		}
	}
	
	
	/* Wykonanie dodatkowego, opcjonalnego kodu */
	if (data.code != null)
	{
		eval (data.code);
	}

	/* Wykonanie dodatkowego, opcjonalnego alertu */
	if (data.alert != null)
	{
		alert (data.alert);		
	}
	
	/* Wykonanie opcjonalnego przekierowania */
	if (data.redir != null)
	{
		
		location.href = data.redir;
	}
	
	/* Pokaż klawisz submit tylko jesli nie ma polecania przekierowania */
	if (data.redir == null)
	{
		$('#'+frmname+' :submit').show();		
	}	
}

function GetAFConfig()
{
	/* Konfiguracja formularza */
	afconfig_arr = eval('(' + $('#'+frmname+' #af_cfg').val() + ')');
}
