var abc = 'aábcdeéfghiíjklmnoóöőpqrstuúüűvwxyz' +
					'AÁBCDEÉFGHIÍJKLMNOÓÖŐPQRSTUÚÜŰVWXYZ';
var szamok = '0123456789';

var cimPlus = ' -.,' + szamok;
var nevPlus = ' .';
var tlpPlus = ' -';
var hszPlus = ' ./' + abc;
var webPlus = abc + szamok + '~_?#&:/';

function strLTrim(str) {
	while(str.length && str.indexOf(' ') == 0){
		if(str.length == 1) str = '';
		else str = str.substring(1);
	}
	return str;
}
function strRTrim(str) {
	while(str.length && str.lastIndexOf(' ') == str.length - 1){
		if(str.length == 1) str = '';
		else str = str.substring(0, str.length - 1);
	}
	return str;
}
function strTrim(str) {
	return strLTrim(strRTrim(str));
}

// str elé beteszi fillChar - t annyiszor, hogy str hossza wantedCharCount legyen.
// használható pl. 1 karakteres szám két karakteressé alakítására: nullaEgy = fillXCharacter('1', 2, '0');
function fillXCharacter(str, wantedCharCount, fillChar) {
	while(str.length < wantedCharCount) str = fillChar + str;
	return str;
}

// Csak egész számot enged beütni az adott input mezőbe
// Pl: <input type="text" name="myField" onKeyPress="return csakSzamInput(this, event);" maxlength="10">
function csakSzamInput(fld, evt){
  var code = evt.keyCode;
  if (!evt) { //IE
    evt = window.event;
  } else if (!evt.keyCode) { //Netscape
    code = evt.which;
  }
  if(code == 8) return true;  // BKPS -> OK
  if(code < 48 || code > 58) return false; // Ha nem szám -> NEM OK
  return true;
}

// Visszaadja, hogy a val érték egész szám-e
function egeszSzam(val){
  for(i = 0; i < val.length; i++){
    var ch = val.charAt(i);
    if( ch < '0' || ch > '9' ) return false;
  }
  return true;
}

// A fentit meghívja és hibaüzenetet ír ki. Kényelmesebb.
function egeszSzamAlert(val){
  if(!egeszSzam(val)){
    alert('A mezőbe csak számot írhat:' + val);
    return false;
  }
  return true;
}

// Fokuszálja a form első input elemét
function azEnFocusom(w)
{
 for (var f = 0; f < w.document.forms.length; f++)
   for (var i = 0; i < w.document.forms[f].length; i++)
     if ((w.document.forms[f].elements[i].type == "text") || (w.document.forms[f].elements[i].type == "password") || (w.document.forms[f].elements[i].type == "textarea") || (w.document.forms[f].elements[i].type == "file"))
       {
        w.document.forms[f].elements[i].focus();
        return 1;
       }
}

// Minden szó első betűjét naggyá teszi, a többit meg kicsivé
function nagyKezdoBetusito(obj)
{
 var r = t = s = f = "";
 var c = eval(obj);
 if (c.indexOf("-") > -1)
   {
    t = c.split("-");
    s = "-";
   }
  else
   {
    t = c.split(" ");
    s = " ";
   }
 for (var i = 0; i < t.length; i++)
   {
    c = t[i];
    c = c.toLowerCase();
    f = c.substring(0,1);
    c = f.toUpperCase() + c.substring(1, c.length);
    r = r + ((r) ? s : "") + c;
   }
 eval(obj + "=\'" + r + "\'");
}

// Leellenőrzi a paraméterként kapott számot, hogy az e
function szamEllenoriz(obj, plus)
{
 var c = eval(obj);
 var ok = "0123456789";
 var r = "";
 for (var i = 0; i < c.length; i++)
   r += (ok.indexOf(c.substr(i,1)) == -1) ? "" : c.substr(i,1);
 if ((plus) && (r) && (r.substring(1, 1) != "+")) r = "+" + r;
 eval(obj + "=\'" + r + "\'");
}


// Datum ellenorzes. A datumot YYYY-MM-DD formatumban kell megadni, a fv visszaadja a hibauzenetet
// vagy 0-t.
function datumEllenoriz(d) {
	var ret = "0";
	
	if (d.length != 10) {
    ret = "A dátum hossza nem jó.";
  } else {
		var ev = d.substring(0,4);
		var ho = d.substring(5,7);
		var nap = d.substring(8,10);
    
    if ((d.substring(4,5) != '-') || (d.substring(7,8) != '-')) {
      ret = "A dátum elválasztó karaktere a kötőjel (-).";
    } else {
      if ((isNaN(ev)) || (isNaN(ho)) || (isNaN(nap))) {
        ret = "A dátumban csak számok lehetnek.";
      } else {		
        if (ev < 1970) {
          ret = "Hibás évszám.";
        } else {
          if ((ho <= 0) || (ho > 12)) {
            ret = "Hibás hónap.";
          } else {
            if ((ho == 1) || (ho == 3) || (ho == 5) || (ho == 7) || (ho == 8) || (ho == 10) || (ho == 12)) {
              if ((nap < 1) || (nap > 31)) {
                ret = "Hibás nap.";
              }
            } else {
              if ((ho == 4) || (ho == 6) || (ho == 9) || (ho == 11)) {
                if ((nap < 1) || (nap > 30)) {
                  ret = "Hibás nap.";
                }
              } else  {
              	// Ha 100 - zal osztható, akkor csak akkor szökőév, ha 400 - zal is:
                if (    ( (ev % 4) == 0 ) && ( ! ( (ev % 100 == 0) && (ev % 400 != 0) )  )    ) {
                  if ((nap < 1) || (nap > 29)) {
                    ret = "Hibás nap.";
                  }
                } else {
                  if ((nap < 1) || (nap > 28)) {
                    ret = "Hibás nap.";
                  }
                }
              }
            }
          }
        }
      }    
		}
	}

  if (ret != "0") {
    ret += 	"\n A lehetséges formátumok:" +
    				"\n  - éééé-hh-nn (például 1993-11-07)" +
    				"\n  - éééé-hh-nn óó:pp (például 2004-05-01 15:32)" +
    				"\n  - éééé-hh-nn óó:pp:ss (például 2001-01-01 03:20:11)";
  }
	return ret;
}

// Datum ellenorzes. A szerkesztomezot varja parameterkent, 
// es ha tudja, megvaltoztatja jo formatumuva (eeee-hh-nn)
// Jó formátumok: 040512 04?05?12 20040512 2004?05?12
function datumEllenorizObject(dObject) {
  if(dObject.value.length == 6){
  //040512
    dObject.value = '20' + dObject.value.substr(0, 2) + '-' + dObject.value.substr(2, 2) + '-' + dObject.value.substr(4, 2); 
  }else if(dObject.value.length == 8){
    if(dObject.value.charAt(2) >= '0' && dObject.value.charAt(2) <= '9'){
    // 20040512
      dObject.value = dObject.value.substr(0, 4) + '-' + dObject.value.substr(4, 2) + '-' + dObject.value.substr(6, 2); 
    }else{
    // 04.05.12
      dObject.value = '20' + dObject.value.substr(0, 2) + '-' + dObject.value.substr(3, 2) + '-' + dObject.value.substr(6, 2);     	
    }
  }else
  if(dObject.value.length == 10){
  //2004?05?12
    dObject.value = dObject.value.substr(0, 4) + '-' + dObject.value.substr(5, 2) + '-' + dObject.value.substr(8, 2); 
  }else
 
	if(dObject.value.length == 16) dObject.value += ':00';
  if(dObject.value.length == 19){
  //2004?05?12 23?34?55
    dObject.value = dObject.value.substr(0, 4) + '-' + dObject.value.substr(5, 2) + '-' + dObject.value.substr(8, 2) + ' ' +
    								dObject.value.substr(11, 2) + ':' + dObject.value.substr(14, 2) + ':' + dObject.value.substr(17, 2);
    var dEll = datumEllenoriz(dObject.value.substr(0, 10));
    if(dEll != 0) return dEll;
    return idoEllenoriz(dObject.value.substr(11, 8));
  }
	
  return datumEllenoriz(dObject.value);
}
  
// Idopont ellenorzes. A datumot hh:mm formatumban kell megadni, a fv visszaadja a hibauzenetet
// vagy 0-t.

function idoEllenoriz(t) {
  var ret = "0";
	if(t.length == 5) t = t + ':00';
	if (t.length != 8) {
	  ret = "Az időpont hossza nem jó.";
  } else {
		var ora = t.substr(0,2);
		var perc = t.substr(3,2);
		var mperc = t.substr(6,2);

    if (t.substr(2,1) != ':' || t.substr(5,1) != ':') {
      ret = "Az időpont elválasztó karaktere a kettőspont (:).";
    } else {				
      if (  isNaN(ora) || isNaN(perc) || isNaN(mperc)  ) {
        ret = "Az időpontban csak számok lehetnek.";
      } else {		
        if ((ora < 0) || (ora > 23)) {
          ret = "Hibás óra.";
        } else {
          if ((perc < 0) || (perc > 59)) {
            ret = "Hibás perc.";
          } else {
	          if ((mperc < 0) || (mperc > 59)) {
	            ret = "Hibás másodperc.";
	          }
          }
        }
      }
    }
	}

  if (ret != "0") {
    ret += " A helyes formátum: óó:pp (például 17:58 vagy 17:58:44) !";
  }
	return ret;
}


// Idopont ellenorzes. A szerkesztomezot varja parameterkent, 
// es ha tudja, megvaltoztatja jo formatumuva (oo:pp)
// Jó formátumok: oopp; oo?pp
function idoEllenorizObject(tObject) {
  if(tObject.value.length == 4){
    tObject.value = tObject.value.substr(0, 2) + ':' + tObject.value.substr(2, 2); 
  }else if(tObject.value.length == 5){
    tObject.value = tObject.value.substr(0, 2) + ':' + tObject.value.substr(3, 2); 
  }
  return idoEllenoriz(tObject.value);
}

// Nyit egy ablakot
function ablak(w, h, php, par, t, s)
{
 most = new Date();
 php += par + ((par=="") ? "?" :"&") + "next=" + Date.UTC(most);
 x = (screen.availWidth - w) / 2;
 y = (screen.availHeight - h) / 2;
 window.open(php, t, "width=" + w + ",height=" + h + ",status=1,left=" + x + ",top=" + y + ",resizable=1,scrollbars=" + s);
}
function min(a, b){
	return (a < b)? a : b;
}
function max(a, b){
	return (a > b)? a : b;
}

function ablakMax(w, h, php, par, maxWidth, maxHeight){
	most = new Date();
	php += par + ((par=="") ? "?" :"&") + "next=" + Date.UTC(most);
	// Ha nem lóg ki a kép, akkor ne scroll-ozhasson
	var plusParams = ',resizable=1';
	if(w < maxWidth && h < maxHeight) plusParams += ',scrollbars=0';
	else plusParams += ",scrollbars=1,status=1";
	if(maxWidth) w = min(maxWidth, max(100, w));
	if(maxHeight) h = min(maxHeight, max(100, h));
	x = (screen.availWidth - w) / 2;
	y = (screen.availHeight - h) / 2;
	var harmadik = "width=" + w + ",height=" + h + ",left=" + x + ",top=" + y + plusParams;
	//alert(harmadik);
	window.open(php, "nagyGaleriaKep", harmadik);
}


// Leellenorzi a parameterkent kapott emailt (uj)
  function emailEllenorizSimple(val){
    var ok = "0123456789qwertzuiopasdfghjklyxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM@_-.";
   // 1. Ne legyen benne hibás karakter:
     for (var i = 0; i < val.length; i++)
       if ( ok.indexOf(val.substr(i,1)) == -1 ) return 0;
   
   // 2. Szétszedés user - re és domain - re az "első" kukac segítségével
     var kukacIndex = val.indexOf('@');
     if(kukacIndex < 1) return 0;
     var user = val.substring(0, kukacIndex);
     var domain = val.substring(kukacIndex + 1);
   
   // 3. Karaktersorozatok ellenőrzése
     // Több kukac nem lehet benne:
     if(domain.indexOf('@') >= 0) return 0;
     // Legalább egy '.' karakter:
     if(domain.indexOf('.') < 0) return 0;
     // Első és utolsó karakter nem lehet pont:
     if(domain.charAt(0) == '.' || domain.charAt(domain.length - 1) == '.') return 0;
     // Szerintem a felh. név első karakter csak betű lehet:
     var firstChar = user.charAt(0).toLowerCase();
     if(firstChar < 'a' || firstChar > 'z') return 0;
     return val;
  }

// Leellenorzi a parameterkent kapott emailt, lehet benne több is, vesszővel elválasztva
  function emailEllenorizSpec(val, canMultiple) {
  	 var ret = '';
     if(canMultiple){
     	 var index = val.indexOf(',');
     	 var startIndex = 0;
     	 var actual = '';
     	 while(index != -1){
     	 	 actual = strTrim(val.substring(startIndex, index));
     	 	 //alert('[' + actual + ']');
     	 	 startIndex = index + 1;
     	 	 index = val.indexOf(',', startIndex);
     	 	 if(  emailEllenorizSimple(actual) == 0  )
     	 	   return 0;
     	 	 else
     	 	   ret += actual + ',';
     	 }
     	 actual = strTrim(val.substring(startIndex));
     	 
   	 	 //alert('[' + actual + ']');
   	 	 if(  emailEllenorizSimple(actual) == 0  )
   	 	   return 0;
   	 	 else
     	 	 ret += actual;
     }else{
       ret = emailEllenorizSimple(val);
     }
     return ret;
  }
// Leellenorzi a parameterkent kapott emailt (új)
  function emailEllenoriz(val) {
     return emailEllenorizSpec(val, false);
  }


function elemEltavolito(array, index){
    for(i=index; i<array.length-1;i++){
        array[i].value = array[i+1].value;
        array[i].text = array[i+1].text;
    }
    array.length-=1;
}

function elemHozzaado(array, value, text) {
    array.length+=1;
    array[array.length-1].value = value;
    array[array.length-1].text = text;
}

function telefonszamEllenoriz(szam) {
  var validChars = '01234356789-/ ,;()';

  for (var i = 0; i < szam.length; i++) {
    if (validChars.indexOf(szam.substr(i,1)) == -1) {
      return false;
    }
  }

  return true;
}
function iranyitoszamEllenoriz(szam) {
  var validChars = '01234356789';

  for (var i = 0; i < szam.length; i++) {
    if (validChars.indexOf(szam.substr(i,1)) == -1) {
      return false;
    }
  }
  
  if (szam.length != 4) {
    return false;
  }
// 0 - val nem kezdődhet:
  if(szam.charAt(0) == '0') return false;
  return true;
}

// A kapott form összes gombját disabled-re állítja, kivéve a Mégse feliratút

function disableGombokKiveveMegse(f) {
	for(var i = 0; i < f.elements.length; i++){
		var e = f.elements[i];
		if( e.type == 'button' || e.type == 'submit' ){
			if( e.value.indexOf('Mégse') == -1 && e.value.indexOf('Mutat') == -1 ) {
				e.disabled = true;
			}
		} else {
			e.disabled = true;			
		}		
	}
}

// A kapott form összes gombját disabled-re állítja, így nem lehet megnyomni.
// Ez az ujratolt függvények meghívása előtt jön jól, ill. a form onSubmit-jában,
// de vigyázni kell, hogy submit - gombokat csak eltüntetni szabad,
// különben nem kapja meg az utófeldolgozó, ha az lett megnyomva
// Kiüríti a select - eket is, hogy ne tudjon görgetni se a felh!
function disableGombok(f){
	var voltFocus = false;
	for(var i = 0; i < f.elements.length; i++){
		var e = f.elements[i];
		/*if(!voltFocus && e.disabled == false && e.type == "text"){
			e.focus();
			voltFocus = true;
		}
		/*if(e.type == 'button' || e.type == 'reset') {
			e.disabled = true;
		} else */
		if( e.type == 'submit') {
			e.style.display="none";
		} else if(e.type == 'button' || e.type == 'reset') {
			e.disabled = true;
		} else {
			e.readonly = true;
		}
/*
		if(e.options){
			e.style.display="none";
		}*/
	}
}


function alapEllenoriz(val, muszajChars, plusChars) {
	var ret = true;
	var voltMuszaj = false;
	if(strTrim(val).length == 0) {
		ret = false;
	} else {
		var ch;
		for(var i = 0; i < val.length; i++){
			ch = val.charAt(i);
			if(muszajChars.indexOf(ch) == -1){
				if(plusChars.indexOf(ch) == -1){
					ret = false;
					break;
				}
			} else {
				voltMuszaj = true;
			}
		}
	}
	return (ret && voltMuszaj);
}

function telepulesEllenoriz(val) {
	return alapEllenoriz(val, abc, tlpPlus);
}
function cimEllenoriz(val) {
	return alapEllenoriz(val, abc, cimPlus);
}
function nevEllenoriz(val) {
	return alapEllenoriz(val, abc, nevPlus);
}
function hazszamEllenoriz(val) {
	return alapEllenoriz(val, szamok, hszPlus);
}
function webcimEllenoriz(val) {
	return alapEllenoriz(val, '.', webPlus);
}


function isEnterKey(evt) {
	var keyCode = evt.keyCode;
	if (!keyCode) keyCode = evt.which;
	return (keyCode == 13)
}

function enterKeyFormSubmitter(evt){
	if (!evt) evt = window.event;
	var target = (evt.srcElement ? evt.srcElement : evt.target)
	if(isEnterKey(evt)) target.form.submit();
}

function enterKeyFunctionCall(evt, fgv){
	//alert('i1tt');
	if (!evt) evt = window.event;
	if(isEnterKey(evt)) fgv();
}

function convertSelectToString(s) {
	var ret = "";
	for (i = 0; i < s.length; i++) {
		 ret += "," + s.options[i].value;
  }
  return ret;
}


function addOption(to, what) {
	var j, k, berakva = false;
	for (j = 0; j < to.length; j++) {
		if (to.options[j].value == what.value) return;
		// Ha túlmentünk az ABC-ben és még nem volt berakva, akkor berakjuk ide:
		if (to.options[j].text.localeCompare(what.text) > 0 && !berakva ) {
			to.length++;
			for(k = to.length - 1; k > j; k--) {
				to.options[k].text = to.options[k - 1].text;
				to.options[k].value = to.options[k - 1].value;
			}
			to.options[k] = what;
			berakva = true;
		}
  }
	if(!berakva) to.options[j] = what;
}

function moveOption(from, to) {
	for (i = 0; i < from.length; i++) {
		b = true;
		if (from.options[i].selected) {
			addOption(to, new Option(from.options[i].text, from.options[i].value));
			from.remove(i);
			i--;
    }
	}
}	
	
function moveAllOption(from, to) {
	for (i = 0; i < from.length; i++) {
		b = true;
		addOption(to, new Option(from.options[i].text, from.options[i].value));
		from.remove(i);
		i--;
	}
}
