// wlasnosc elrafal@o2.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;
var PESEL		= 9;
var WIELKALITERA = 10;

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)) || 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: osoba@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;
		//PESEL
		case 9: {
			ok = 1;
			for (i=0; i<wartosc.length; i++) 
				if ( isNaN(wartosc.charAt(i))) 
					ok = 0;
			if ( (ok == 1) && (wartosc.length == 11) && (js_kontrola_pesel(wartosc)))
				return(false);
			eval('try{' + pole + '.focus()}catch(e){}');
			window.alert("Niepoprawny PESEL w polu: \"" + nazwa + "\".");
			return(true);
			}			
			break;
		//WIELKALITERA
		case 10: {
			if (wartosc.length > 0) {
				pierwszaLitera = wartosc.charAt(0);
				wartosc = pierwszaLitera.toUpperCase() + wartosc.substr(1,300);
				re = /\'/i;
				wartosc = wartosc.replace(re, "\\\'");
				eval(pole + ".value='" + wartosc + "'");
				return(false);
				}
			}			
			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);

	re = /\./i;
	dd_mm_yyyy = dd_mm_yyyy.replace(re, "x");
	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 < 1910 || miesiac > 12 || rok > 2079) 
		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);
}

function sprDataTylkoZPrzeszlosci(yyyy_mm_dd) {
	var wartosc;
	wartosc = eval(yyyy_mm_dd + '.value');
	var dtNow = new Date();
	nY = dtNow.getFullYear();
	nM = dtNow.getMonth();
	nD = dtNow.getDate();
	if (nM == 0)
		nM = 12;
	else
		nM = nM + 1;
	iY = parseInt(wartosc.substr(0,4));
	iM = parseInt(wartosc.substr(5,2));
	iD = parseInt(wartosc.substr(8,2));
	
	bResult = true;
	if (iY > nY)
		bResult = false;
	if ((iM > nM) && (iY == nY))
		bResult = false;
	if ((iD > nD) && (iM == nM) && (iY == nY))
		bResult = false;
		
	if (!bResult ){
		alert("Błąd: podano datę z przyszłości.");
		return true; //error;
		}
	else
		return false; // data wpisana przez usera jest wczesniejsza lub rowna dacie dzisiejszej
}


/***********************************************
*  SPRAWDZENIE WYRAZENIA REGULARNEGO    *
************************************************/
function js_kontrola_wyrazenie(wyrazenie,wartosc)
{
  /*przyklad
  /^([a-z]{1,}|[a-z]{1,}[.]{1}[a-z]{1,})\D@{1}([a-z]{1,}[.]{1}[a-z]{2}|[a-z]{1,}[.]{1}[a-z]{1,}[.]{1}[a-z]{2})$/
  */
  re =new RegExp()
  var re = eval(wyrazenie)
  var x =  re.exec(wartosc)
  
  if(!x)
	return(false);

  return(true);
}

/***********************************************
*     PESEL        *
************************************************/
function js_kontrola_pesel(wartosc)
{
	//przyklad przekazanego peslu 49040501580

	var regExp_String
	regExp_String = "/^([0-9]{11})$/";
	if(js_kontrola_wyrazenie(regExp_String,wartosc))
	{
  
  
		var wagi = new Array(1,3,7,9,1,3,7,9,1,3);  
		var dlugosc_wyrazenia = wartosc.length;
		var cyfra_kontrolna  = wartosc.substr(dlugosc_wyrazenia-1,1);
		var znak;
		var suma = 0;
		for(i=0; i<dlugosc_wyrazenia-1; i++)
		{
			znak = wartosc.substr(i,1);
			suma += wagi[i] *  parseInt(znak);
		}
	    var wynik = suma % 10;
		wynik = 10 - wynik;
		if(wynik != 10)
		{
//			alert(cyfra_kontrolna);
//			alert(wynik);
			if(wynik != cyfra_kontrolna)
			return(false);
		}
	}
	else
	{
		return(false);
	}
	return(true);
}

