/******************************************************

uzenet(): a paraméterben megadott hibaüzenet
megjelenítése
alapértelmezésben ez egy javascript alert, de bármire
megváltoztatható, projekttől függően

Minden hibakezelő függvény ezt használja!

******************************************************/


function uzenet(str) {
	alert(str);
}


/******************************************************

ert_ell(): a paraméterben megkapott értékek ellenőr-
zése különböző módszerekkel
nem kötelező minden paramétert megadni
'szam': az érték szám
'egyszam': a stringben legalább egy számnak szerepelnie
kell, ez jó pl. jelszavak ellenőrzéséhez
'egybetu': a stringben legalább egy betűnek szerepelnie
kell
'minhossz': a stringnek legalább ilyen hosszúnak kell
lennie
'maxhossz': a string maximális hossza ennyi lehet
'minmax': a string hosszának minimuma és maximuma, meg
kell adni a _length1 és _length2 paramétert
'emailcím': valós emailcím ellenőrzése

Visszatérési érték: true, ha megfelelt a feltételeknek

példa:
function ellenoriz() {
	var df = document.forms['form1'];
	if (!ell2(ert_ell(df.jelszo.value,'egyszam'),df.jelszo,'A jelszóban legalább egy számnak szerepelnie kell.')) return false;
	return true;
}

******************************************************/


function ert_ell(_val, _type, _length1, _length2) {
	switch (_type.toLowerCase()) {
		case 'szam':
				x = parseInt(_val, 10);
				if (!isNaN(x)) {
					if (x == _val) return true;
				}
				return false;
			break;
		case 'egyszam':
				zz = _val;
				for (x = 0;x < zz.length;x++) if (!isNaN(parseInt(zz.charAt(x)))) return true;
				return false;
			break;
		case 'egybetu':
				zz = _val;
				for (x = 0;x < zz.length;x++) if (isNaN(parseInt(zz.charAt(x)))) return true;
				return false;
			break;
		case 'minhossz':
				x = "_" + _val;
				if (x.length >= _length1 + 1) return true;
				return false;
			break;
		case 'maxhossz':
				x = "_" + _val;
				if (x.length <= _length1 + 1) return true;
				return false;
			break;
		case 'minmax':
				x = "_" + _val;
				if ((x.length >= _length1 + 1) && (x.length <= _length2 + 1)) return true;
				return false;
			break;
		case 'emailcim':
				var kukac = _val.indexOf('@');
				if (kukac < 1) return false;
				if (_val.length < kukac+3) return false;
				var vege = _val.substr(kukac+1);
				var vanbenne = false;
				if (kukac+1 == _val.length) return false;
				for (i=kukac+1;i<_val.length;i++)
					if (_val.charAt(i) == '.')
						vanbenne = i;
				if (!vanbenne) return false;
				if (_val.length-vanbenne < 3) return false;
				return true;
			break;
	}
}


/******************************************************

ell(): a megadott [form]elem ellenőrzése, ha nincs
értéke, uzenetboxban megjelenik a szöveg, majd fókuszál
a beviteli mezőre

példa:

function ellenoriz() {
	var df = document.forms['form1'];
	if (!ell(df.jelszo,'Kérjük, adja meg a jelszavát.')) return false;
	return true;
}

******************************************************/


function ell(miben, szoveg) {
	if (miben.value == '') {
		miben.focus();
		window.scrollBy(0,-10);
		uzenet(szoveg);
		return false;
	}
	return true;
}


/******************************************************

ell2(): ha az első paraméterben megadott érték false,
akkor a második paraméterben megadott mezőre fókoszál
és kiírja a szöveget.
Ha a negyedik paraméter értéke false vagy nem adjuk
meg, akkor a második paraméterben megadott objektum
kapja a fókuszt.
Ha a negyedik paraméter értéke true, a megfelelő
helyre scrollozunk:
ha a második paraméter típusa objektum, akkor hozzá
scrollozunk, ha string és # jellel kezdődik, akkor
pedig ehhez a linkhez (pl. #top)
példa a radio_ell() függvénynél található. Ha a második
paraméter üres karakterlánc, nem történik semmi.

példa:
var df = document.forms['form1'];
if (!ell2(ert_ell(df.jelszo.value,'minmax',5,8),df.jelszo,'A jelszó hossza 5 és 8 karakter között lehet.')) return false;
return true;

******************************************************/


function ell2(bool, miben, szoveg, scroll) {
	if (ell2.arguments[3] == undefined)
		scroll = false;
  if (bool == false) {
		if (!scroll) {
			miben.focus();
			window.scrollBy(0,-10);
		}
		else {
			if (typeof(miben) == 'string' && miben.charAt(0) == '#')
				window.location = miben;
			else {
				miben.scrollIntoView();
				window.scrollBy(0,-10);
			}
		}
    uzenet(szoveg);
    return false;
  }
  return true;
}


/******************************************************

radio_ell(): a paraméterben megadott radio mezőkön
végighalad, és visszaadja, hogy be van-e bármi is
jelölve vagy sem.

példa:
var df = document.forms['form1'];
if (!ell2(radio_ell(df.jelszo),'#radio','Kérjük, jelölje be a választ',true)) return false;
return true;

******************************************************/


function radio_ell(radio) {
	var checked = false;
	for (i=0;i<radio.length;i++)
		if (radio[i].checked)
			checked = true;
	return checked;
}


/******************************************************

csakszam(): a megadott beviteli mezőbe csak számokat
lehet bevinni (csak IE alatt működik)

példa:
<input name="irsz" type="text" id="irsz" onkeypress="return csakszam(event);">

******************************************************/


function csakszam(event) {
	event = event ? event : (window.event ? window.event : null);
	if (event) {
		var _key = event.charCode ? event.charCode : (event.keyCode ? event.keyCode : event.which);
		if ((_key != 8) && (_key != 9) &&
		 (_key != 37) && (_key != 39) &&
		 (_key != 17) && (_key != 16) &&
		 (_key != 46) && (_key != 13) &&
		 (_key != 109) && (_key != 107) && ((_key < 47) || (_key > 58))
		) {
			if (event.returnValue) {
				event.returnValue = false;
			} else if (event.preventDefault) {
				event.preventDefault();
			} else {
				return false;
			}
		}
	}
}


/******************************************************

kugras(): amennyiben a megadott form beviteli mezőjébe
beütöttünk x karaktert, a következő mezőre ugrik
pl. irányítószám, telefonszám mezőknél hasznos

példa:
<input name="irsz" type="text" id="irsz" onkeyup="kugras('form','irsz',4,'cim');">

******************************************************/


function kugras(form,hol,hanykarakter,hova) {
	var _key = (document.all) ? window.event.keyCode : 0;

	if ((_key == 8) || (_key == 9) ||
		 (_key == 37) || (_key == 39) ||
		 (_key == 17) || (_key == 16) ||
		 (_key == 46) || (_key == 13))
		return true;
	if (form && hanykarakter && hova) {
		var df = document.forms[form];
		if (df[hol].value.length == hanykarakter)
			df[hova].focus();
	}
	return true;
}
