var RE_NUM = /^\-?\d+$/;

function wyczyscForme(AForm)
{
    for (i = 0; i < AForm.elements.length; i++) {
        if (AForm.elements[i].type == "radio") {
            AForm.elements[i].checked = false;
        } else if (AForm.elements[i].type == "checkbox") {
            AForm.elements[i].checked = false;
        } else if (AForm.elements[i].type == "text") {
            AForm.elements[i].value = '';
        } else if (AForm.elements[i].type == "textarea") {
            AForm.elements[i].value = '';
        } else if (AForm.elements[i].type == "select-one") {
            AForm.elements[i].selectedIndex = 0;
        }
    }
    return true;
}

function parsujdate (str_date) {

	var arr_date = str_date.split('-');

	if (arr_date.length != 3) return cal_error ("Błędny format daty: '" + str_date + "'.\nAkceptowany format to dd-mm-rrrr.\nOba pola daty są wymagane. Popraw datę lub wyczyść pole i skorzystaj z kalenarza (ikona obok pola).");
	if (!arr_date[0]) return cal_error ("Błędny format daty: '" + str_date + "'.\nWpisz dzień w miesiącu.\nOba pola daty są wymagane. Popraw datę lub wyczyść pole i skorzystaj z kalenarza (ikona obok pola).");
	if (!RE_NUM.exec(arr_date[0])) return cal_error ("Zła wartość dnia w miesiącu: '" + arr_date[0] + "'.\nTylko liczby całkowite.\nPopraw datę lub wyczyść pole i skorzystaj z kalenarza.");
	if (!arr_date[1]) return cal_error ("Błędny format daty: '" + str_date + "'.\nWpisz miesiąc.\nPopraw datę lub wyczyść pole i skorzystaj z kalenarza.");
	if (!RE_NUM.exec(arr_date[1])) return cal_error ("Zła wartość miesiąca: '" + arr_date[1] + "'.\nTylko liczby całkowite.\nPopraw datę lub wyczyść pole i skorzystaj z kalenarza.");
	if (!arr_date[2]) return cal_error ("Błędny format daty: '" + str_date + "'.\nWpisz rok.\nPopraw datę lub wyczyść pole i skorzystaj z kalenarza.");
	if (!RE_NUM.exec(arr_date[2])) return cal_error ("Invalid year value: '" + arr_date[2] + "'.\nTylko liczby całkowite.\nPopraw datę lub wyczyść pole i skorzystaj z kalenarza.");

	var dt_date = new Date();
	dt_date.setDate(1);

	if (arr_date[1] < 1 || arr_date[1] > 12) return cal_error ("Zła wartość dla miesiąca: '" + arr_date[1] + "'.\nDozwolona wartość to 01-12.");
	dt_date.setMonth(arr_date[1]-1);
	 
	if (arr_date[2] < 100) arr_date[2] = Number(arr_date[2]) + (arr_date[2] < NUM_CENTYEAR ? 2000 : 1900);
	dt_date.setFullYear(arr_date[2]);

	var dt_numdays = new Date(arr_date[2], arr_date[1], 0);
	dt_date.setDate(arr_date[0]);
	if (dt_date.getMonth() != (arr_date[1]-1)) return cal_error ("Zła wartość dla dnia w miesiącu: '" + arr_date[0] + "'.\nDozwolona wartość is 01-"+dt_numdays.getDate()+".");

	return (dt_date);
	
}

function walidujRezerwacje()
{
    var f = document.getElementById('rezerwacja');
//3. Daty
	var data1 =  f.przyjazd.value;
	var data2 =  f.wyjazd.value;
	
	
	if ( parsujdate(data1) == '') {
		return false;
		}
	
	if ( parsujdate(data2) == '') {
		return false;
		}
	var d1 = parsujdate(data1);
	var d2 = parsujdate(data2);
	
	if (d1 >= d2) {
		alert("Data wyjazdu powinna być późniejsza od daty przyjazdu.");
        return false;
    }
	
    //1. Imię i nazwisko
    reg = /^[a-zA-ZąćęłńóśżźĄĆĘŁŃÓŚŻŹ ]{2,50}$/;
    wyn = f.nazwisko.value.match(reg);
    if (wyn == null) {
        alert("Proszę podać poprawne imię i nazwisko. " +
              "\nPowinno zawierać od 2 do 50 liter. " +
              "Żadne znaki poza literami nie są dozwolone.");
        return false;
    }

    //2. Email /^[a-zA-Z0-9]{1,30}@[a-zA-Z0-9]+(\.[a-zA-Z0-9]+)+$/
    reg = /^[_A-Za-z0-9-]+(\.[_A-Za-z0-9-]+)*@([A-Za-z0-9-])+(\.[A-Za-z0-9-]+)*((\.[A-Za-z0-9]{2,})|(\.[A-Za-z0-9]{2,}\.[A-Za-z0-9]{2,}))$/;
    wyn = f.email.value.match(reg);
    if (wyn == null) {
        alert("Proszę podać poprawny adres email. Poprawny adres musi zawierać \"małpę\" (@) oraz co najmniej dwa człony nazwy serwera.\nNp.: aaa.bbb_ccc@ddd-eee.com lub name@domain.server.com");
        return false;
    }
	
    return true;
}

function cal_error (str_message) {
	alert (str_message);
	return false;
}