/**
 * Do obsługi formularzy. Sprawdza czy zostały wypełnione pola oraz czyści pola przy pierwszym kliknieciu.
 * Narazie wersja wczesna alfa :)
 * 
 * <form class="formbox" ...
 *     <input type="text" rel="off" ... (tak się wyłącza, aby nie sprawdzało danego pola)
 * </form>
 * 
 * @author Paweł Macander
 */

/******************************************** F O R M B O X ® *****************************************start**/
/**
 * Zapisuje, które pola formularza zostały wyczyszczone przez klikniecie
 */
var czyscFormularz = new Array();

/**
 * Zappisuje wartości startowe pól
 */
var wartoscStartowa =new Array();

/**
 * Dane o polach formularzy
 */
var polaFormularza = new Array();

/**
 * Czy dany formularz jest z wcześniejszą treścia
 */
var reloaded = new Array();

/**
 * Wyszukanie formularzy formBox® i obsługa ich
 */ 
$(document).ready(function(){
	var pola; 
	
	// załadowanie wszystkich formularzy formBox®
	var forms = $('form.formbox');
	
	// przelecenie :) wszystkich formularzy
	for(var i=0 ; i<forms.length ; i++) {
		wartoscStartowa[i] = new Array();
		polaFormularza[i] = new Array();
		reloaded[i] = forms.eq(i).attr('rel')=='reloaded'?true:false;
		
		// zapisanie pól tekstowych
		pola = $('input[@type=text]', forms.eq(i));
		for(var j=0 ; j<pola.length ; j++) {
			wartoscStartowa[i][pola.eq(j).attr('name')] = reloaded[i]?'':pola.eq(j).val();		
			if (pola.eq(j).attr('rel') != 'off')
				polaFormularza[i][pola.eq(j).attr('name')] = 'text';
		}
		
		// zapisanie obszarów tekstowych
		pola = $('textarea', forms.eq(i));
		for(var j=0 ; j<pola.length ; j++) {
			wartoscStartowa[i][pola.eq(j).attr('name')] = reloaded[i]?'':pola.eq(j).val();			
			if (pola.eq(j).attr('rel') != 'off')
				polaFormularza[i][pola.eq(j).attr('name')] = 'textarea';
		}

		// zapisanie selectów
		pola = $('select', forms.eq(i));
		for(var j=0 ; j<pola.length ; j++) {
			if (pola.eq(j).attr('rel') != 'off')
				polaFormularza[i][pola.eq(j).attr('name')] = 'select';
		}

		// obsługa czyszczenia tekstów, czyści tylko za pierwszym klikiem  / można potem zrobić na .one('click', ... )
		$('textarea, input[@type=text]', forms.eq(i)).click(function(){			
		if (!(czyscFormularz[i] instanceof Array)) czyscFormularz[i] = new Array();	
			if (!(czyscFormularz[i] instanceof Array)) czyscFormularz[i] = new Array();	
			
			if (czyscFormularz[i][$(this).attr('name')] != true) {
				czyscFormularz[i][$(this).attr('name')] = true;
				$(this).val('');
			}
		});	
		
		// obsługa onsubmit, gdzie sprawdza czy wypełnione są pola
		forms.eq(i).bind('submit', {nb: i}, function(event){
			return obsluzFormularz(event.data.nb);
		});	
			
	}
});

/**
 * sprawdza formularz formularz czy jest wypelniony 
 * @param {Integer} i - id formularza
 */
function obsluzFormularz(i) {
	var niepoprawne = 0;
	var formus = $('form.formbox:eq('+i+')');
	
	for(var name in polaFormularza[i]) {
		//alert(polaFormularza[i][name]+', '+wartoscStartowa[i][name]+', '+$("[@name='"+name+"']", formus).val()+', '+"select[@name='"+name+"']");
		if (polaFormularza[i][name] == 'select' && $("select[@name='"+name+"']", formus).val() == 0) niepoprawne++;
		else if (polaFormularza[i][name] == 'text' && ($("input[@name='"+name+"']", formus).val() == '' || $("input[@name='"+name+"']", formus).val() == wartoscStartowa[i][name])) niepoprawne++;
		else if (polaFormularza[i][name] == 'textarea' && ($("textarea[@name='"+name+"']", formus).val() == '' || $("textarea[@name='"+name+"']", formus).val() == wartoscStartowa[i][name])) niepoprawne++;
	}
	
	// można dołożyć htmlowy komunikat
	if (niepoprawne) {
		alert('Liczna pól niewypełnionych poprawnie: '+niepoprawne);
		return false;
	}
	else return true;
}

/******************************************** F O R M B O X ® ******************************************end***/

