// rgajewski@confido.pl
// ver 1.0

var PUSTE_ERR	= 1;
var PUSTE_OK	= 0;
var STRING		= 0;
var LICZBA		= 1;
var DATA		= 2;
var GODZINA		= 3;
var ZIPKOD		= 4;
var DATAGODZINA = 5;
var CALKOWITA	= 6;
var EMAIL		= 7;
var DATAYMD		= 8;

function sprPole(pole, puste, typDanych, nazwa) {
	wartosc = eval(pole + '.value')
	if (puste == PUSTE_ERR && wartosc == "") {
		eval('try{' + pole + '.focus()}catch(e){}');
		window.alert("Nie wypełnione pole: \"" + nazwa + "\".");
		return(true);
	}
	if (wartosc == "")
		return(false);

	switch (typDanych) {
		//LICZBA
		case 1: 
			re = /\./i;
			wartosc = wartosc.replace(re, ",");
			eval(pole + '.value="' + wartosc + '"');
			if (isNaN(wartosc)) {
			ok = 1;
			for (i=0; i<wartosc.length; i++) 
				if ( (wartosc.charAt(i) != ",") && (isNaN(wartosc.charAt(i))) )
					ok = 0;
			if (ok == 1)
				return(false);
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\". Powinna być liczba.");
			return(true);
			}
			break;
		//DATA
		case 2: if (!checkDate(wartosc)) {
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\". Format daty: 30-12-2003");
			return(true);
			}
			break;
		//GODZINA
		case 3: if (!checkTime(wartosc)) {
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\". Format czasu: 12:00");
			return(true);
			}
			break;
		//ZIPKOD
		case 4: if (!checkZipCode(wartosc)) {
			eval('try{' + pole + '.focus()}catch(e){}');
			alert("Błędnie wypełnione pole: \"" + nazwa + "\". Format kodu: 01-234");
			return(true);
			}
			break;
		//DATAGODZINA
		case 5: if (!checkDateTime(wartosc)) {
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\". \nFormaty:\n 30-12-2001\n 30-12-2003 12:05");
			return(true);
			}
			break;
		//CALKOWITA
		case 6: {
			ok = 1;
			for (i=0; i<wartosc.length; i++) 
				if ( isNaN(wartosc.charAt(i))) 
					ok = 0;
			if (ok == 1)
				return(false);
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\". Powinna być liczba całkowita.");
			return(true);
			}			
			break;
		//EMAIL
		case 7:	if ( (wartosc.indexOf("@") == -1 ) || (wartosc.indexOf(".") == -1) || (wartosc.indexOf(' ') > -1) ){
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\".\nFormat: klient@firma.pl");
			return(true);
			}
			break;
		//DATAYMD
		case 8: if (!checkDateYMD(wartosc)) {
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Błędnie wypełnione pole: \"" + nazwa + "\". Format daty: 2003-12-31");
			return(true);
			}
			break;

	}
	return(false);
}

function checkDateTime(date_time) {
	if (date_time.length == 10)
		return checkDate(date_time);
	if (date_time.length == 16) {
		if ( checkDate(date_time.substr(0,10)) && checkTime(date_time.substr(11,5)) )
			return(true);
		else
			return(false);
		}
	return(false);
}


function checkZipCode(cc_ccc) {
	if (cc_ccc.length != 6) 
		return(false);
	if (cc_ccc.substr(2,1) != "-")
		return(false);
	cc = cc_ccc.substr(0,2);
	ccc = cc_ccc.substr(3,3);
	if (isNaN(cc) || isNaN(ccc)) 
		return(false);
	return(true);
}

function checkTime(hh_mm) {
	if (hh_mm.length != 5) 
		return(false);
	if (hh_mm.substr(2,1) != ":")
		return(false);
	godzina = hh_mm.substr(0,2);
	minuty = hh_mm.substr(3,2);
	if (isNaN(godzina) || isNaN(minuty)) 
		return(false);
	godzina = parseInt(godzina, 10);
	minuty = parseInt(minuty, 10);
	if (godzina < 0 || minuty < 0 || godzina > 23 || minuty > 59) 
		return(false);
	
	return(true);
}


function checkDate(dd_mm_yyyy){
	if (dd_mm_yyyy.length != 10) 
		return(false);
	if (dd_mm_yyyy.substr(2,1) != "-" || dd_mm_yyyy.substr(5,1) != "-")
		return(false);
	dzien = dd_mm_yyyy.substr(0,2)
	miesiac = dd_mm_yyyy.substr(3,2)
	rok = dd_mm_yyyy.substr(6,4)
	if (isNaN(dzien) || isNaN(miesiac) || isNaN(rok)) 
		return(false);
	dzien = parseInt(dzien, 10);
	miesiac = parseInt(miesiac, 10);
	rok = parseInt(rok, 10)
	if (dzien < 1 || miesiac < 1 || rok < 1 || miesiac > 12) 
		return(false);
	if (miesiac == 2) {
		dzienPrzestepny = 0;  
		if(rok % 4 != 0) 
			dzienPrzestepny = 0;
		else {
			if (rok % 400 == 0) dzienPrzestepny = 1;
			else if (rok % 100 != 0) dzienPrzestepny = 1;
		}
		maxDni = 28 + dzienPrzestepny;
	}
	else
		if (miesiac == 4 || miesiac == 6 || miesiac == 9 || miesiac == 11) 
			maxDni = 30;
		else 
			maxDni = 31;
	if (dzien <= maxDni) 
		return(true);
	else 
		return(false);
}

function checkDateYMD(yyyy_mm_dd){
	if (yyyy_mm_dd.length != 10) 
		return(false);
	dd_mm_yyyy = yyyy_mm_dd.substr(8,2) + yyyy_mm_dd.substr(4,4) + yyyy_mm_dd.substr(0,4);
	return checkDate(dd_mm_yyyy);
}
