// Statikus valtozok
var cegnev=unescape('Kisalf%F6ld Vol%E1n Zrt.');
var snevjegy='Hungary, Gyor'+String.fromCharCode(13)+'Cseh Attila'+String.fromCharCode(13)+'csap@freemail.hu';
var stypeobj='object', stypestr='string', stypenum='number', stypelog='boolean', stypefunc='function';
var slim1="'", slim2='"', sbsl='\\', scom=',', sdpn=': ', spar='?', sand='&', sequ='=', skotjel='-';
var szokoz=' ', sures='', smind='mind', stab=String.fromCharCode(9);
var slatszik='visible', srejtett='hidden', snbsp='&nbsp;';
var html_soremel='<br/>', txt_soremel=String.fromCharCode(13);
var sfokmeterben={szel: 111000, hossz: 76000};

// objektumot is megjelenít
function Alert(arr, func, level){
	return alert(ShowTxtObjectString(arr,func,level));
}
// toString prototype-hoz
function ObjectToString(){return ToObjectString(this);}
// 3 fele atalakitas kellene: 1 stringhatarolok nelkul, 2 stringhatarolokkal, 3 megjeleniteshez soremelessel
// egy objektum megjelenitheto alakjat adja vissza, ne tegyen stringhatarolokat - function ValueToString(val){return ToObjectString(val,false);}
// ertekbol eval-ban hasznalhato stringet kepez, a "new " alak nem jo mert lehet array, vagy string is
function ToObjectString(val,func,level){ // ha func true akkor azokat is megjeleniti, ha ad szintet, annyit mutat meg
	func = (true==func);
	return ToString(val,func,level);
}
function ObjectInfo(obj){
	var ret='';
	for(var ind in obj){
		if (IsFunction(obj[ind])||ind.substr(0,2)=='on'); // funkciókat nem írja ki
		else if (IsObject(obj[ind])) ret+=ind+'(obj), ';  // objektumok nevét
		else if (IsString(obj[ind])) ret+=obj[ind]+', ';  // stringek tartalmát
	}
	return ret;
}
function IsFunction(val){return (typeof(val)==stypefunc);}
function IsObject(val){return (typeof(val)==stypeobj);}
function IsString(val){return (typeof(val)==stypestr);}
// toString prototype-hoz
function ToString(val,func,level,soremel){
	var ret='';
	func = (true==func);
	if (null!=level) level--; // ha 0-ala csokken leall
	if (null==soremel) soremel = '';

	if (val==null) ret = 'null';
	else if (typeof(val)==stypefunc) ret = 'function()';
	else if (typeof(val)==stypeobj){ // a null-t objektumnak tekinti
		var arr=true;
		for (var ind in val) if (isNaN(ind)){arr = false; break;}   // eldonti, hogy tomb, vagy struktura
		if (arr){
			if (level < 0) ret = 'array';
			else{
				var com = '';
				for(var ind=0;ind<val.length;ind++){
					ret+= com + ToString(val[ind],func,level,soremel); // tombnel csak felsorolja az elemeket
					com = scom; // az elso ele nem tesz vesszot
				}
			}
			ret = '[' + ret + ']';
		}else{
			if (level < 0) ret = 'object';
			else{
				var com = '';
				for(var name in val){
					if (func||typeof(val[name])!=stypefunc){
						var obj='';
						try{obj = ToString(val[name],func,level,soremel);} catch(e){obj = ToObjectString(e);}
						ret+= com + name + ':' + obj; // objektumot nevvel egyutt teszi a stringbe
						com = scom; // az elso ele nem tesz vesszot
					}
				}
			}
			ret = '{' + ret + '}';
		}
	}else if (typeof(val)==stypestr) ret = AddLimesToString(val)+szokoz+soremel;
	else ret = val+szokoz+soremel;

	return ret;
}
// már nem kell egy tömb elemeiből a szeparátorral elválasztott karakterláncot készít(a join a szeparátort a string elején is elhelyezi)
function Join(arr, psep){
	var ret='', sep='';
	for(var ind=0;ind<arr.length;ind++){
		ret+= sep + arr[ind];
		sep = psep; // az elso ele nem tesz szeparátort
	}
	return ret;
}
// levágja a string elejéről és végéről a megadott karaktereket, alapértelmezésben szóközöket
function Trim(str,chars){
	var ret='';
	if (null==chars) chars = szokoz;
	// addig keres a stringben, amig a karakter megtalalhato a levagandok kozott
	for(var ind=0;ind<str.length&&0<=chars.indexOf(str.substr(ind,1));ind++);
	str = str.substr(ind);
	for(var ind=str.length;ind>0&&0<=chars.indexOf(str.substr(ind-1,1));ind--);
	str = str.substr(0,ind);
	return str;
}
// megjeleniteshez hasznalhato format ad vissza, soremelesek kerulnek bele
function ShowTxtObjectString(val,func,level,hossz,vagas){ // ha func true akkor azokat is megjeleniti, ha ad szintet, annyit mutat meg
	return ShowObjectString(val,func,level,hossz,vagas,txt_soremel);
}
function ShowHTMLObjectString(val,func,level,hossz,vagas){ // ha func true akkor azokat is megjeleniti, ha ad szintet, annyit mutat meg
	return ShowObjectString(val,func,level,hossz,vagas,html_soremel);
}
function ShowObjectString(val,func,level,hossz,vagas,soremel){ // ha func true akkor azokat is megjeleniti, ha ad szintet, annyit mutat meg
	if (null==level) level = 4;
	return Szabdal(ToString(val,func,level),vagas,soremel,hossz);
}
//alert(Szabdal('123456789 0123456;1234567.12345678,asdfhsdfeyuwerwefveergfr',txt_soremel,10));
// a megadott karakterrel adott hosszusagra szabdalja a stringet,
function Szabdal(str,vagas,beszur,hossz){
	var ret='';
	if (null==vagas) vagas = ' '; // alapertelmezesben szokoznel vag
	if (null==hossz) hossz = 99;
	if (null!=beszur){
		var str1, poz, also=hossz/2, sor;
		sor = Math.ceil(str.length/hossz); // kiszamolja hany sor lesz
		hossz = Math.ceil(str.length/sor)+1; // kiszamolja milyen hosszu legyen egy sor, hogy egyformak legyenek
		while(str.length > hossz){
			str1 = str.substr(0,hossz);
			// keresi a vagas helyet
			for(poz=str.length-1;poz>also;poz--) if (str1.charAt(poz)==vagas) break;
//				var ch=str1.charAt(poz);			if (' '==ch||','==ch||';'==ch||':'==ch) break; ||'-'==ch||']'==ch||'}'==ch||'/'==ch 		}
			// ha talalt elvago helyet, ott vagja, kulonben a hossznal
			if (poz<=also) poz = hossz; else poz++; // hogy a karakter utan vagja el
			ret+= str.substr(0,poz)+beszur;
			str = str.substr(poz);
		}
	}
	return ret+str;
}
// egy tag lathatosagat allitja be
function Megmutat(obj){obj.style.visibility=slatszik;}
function Elrejt(obj){obj.style.visibility=srejtett;}
function Latszik(obj){return obj.style.visibility==slatszik;}
// sorokra bontja a html formatumot '<BR' '</BR' '<DIV' '<TR'
function HTMLSorokra(str){
	var astr=[], str1='', sor, hossz;
	var pos=str.indexOf('<');
//	parent.Kijelzo(str);
	while(0<=pos){
		str1+= str.substr(0,pos); // halmoznia kell
		str = str.substr(pos); // Alert([str1,str]);
		if ('<BR'==str.substr(0,3).toUpperCase()||'</BR'==str.substr(0,4).toUpperCase()
		|| '<TR'==str.substr(0,3).toUpperCase()||'<DIV'==str.substr(0,4).toUpperCase()
		||'<P'==str.substr(0,2).toUpperCase()){ //4<=str.length&&(
			astr[astr.length] = str1;
			str1 = '';
		}
		pos = str.indexOf('<',2);
	}
	astr[astr.length] = str1 + str; // alert(astr);
	return astr;
}
//var str=snbsp+'12345'+'<a asdjfh'+snbsp+' sdjkfh sjkh>'+snbsp+'12345'+snbsp+'12345</a>'+'12345'+snbsp; Alert([str.length,str,HTMLSorhossz(str)]);
// a html sor tenyleges hosszat szamolja ki
function HTMLSorhossz(str){
	var eleje=str.indexOf('<'), vege=-1, hossz=str.length, szimb=str.indexOf(sand), ind=999;
	while((0<=eleje||0<=szimb)&&0 < ind--){
		// szimbolumok okozta tobblet levonasa
		if ((szimb < eleje||0 > eleje)&&szimb > vege){ // ha szimbolum lehet a TAG-eken kivul
			var pos=str.indexOf(';',szimb);
			if (pos > szimb) hossz-= (pos-szimb); // ha valoban szimbolum, csokkenti a hosszt
			szimb = str.indexOf(sand,szimb+5); // lehet tobb szimbolum is a kovetkezo TAG elott
		}else{ // a TAG-ek hosszanak levonasa
			vege = str.indexOf('>',eleje); // megkeresi az aktualis TAG veget
			if (vege > eleje){
				hossz-= (vege - eleje + 1); // csokkenti a hosszt a tag karaktereinek szamaval Alert([eleje,vege,hossz]);
				// amig a szimbol a TAG-en belul van, tovabb keres
				while(szimb > eleje&&szimb < vege) szimb = str.indexOf(sand,vege);
				eleje = str.indexOf('<',vege); // megkeresi a kovetkezo TAG elejet
			}else{ // ha nem talalta a TAG veget
				parent.Kijelzo(['Nyitott TAG:',str.substr(eleje)]);
				eleje = -1; // ki kell lepni a ciklusbol
			}
		}
	}
	if (ind<=0) parent.Kijelzo('Ciklusban a HTMLSorhossz: '+str);
	return hossz;
}
// szovegbol eltavolitja a tag-eket
function TagEltavolito(str){
//alert(str);
	if (null!=str){
		var eleje=str.indexOf('<'), ind=999; // biztonsagi ciklus hatarertek
		while(0<=eleje&&0 < ind--){
			var str2=str.substr(eleje+1);
			var vege=str2.indexOf('>');
			if (vege < 0) break;
			else str = str.substr(0,eleje)+str2.substr(vege+1);
			eleje = str.indexOf('<');
		}
		if (ind < 0) parent.Kijelzo('Ciklusban a TagEltavolito! '+str);
	}
	return str;
} // */
// elonullazo
function PreZero(szam, hossz){
	szam = Trim(sures+szam); // karakterre alakul
	hossz = hossz-szam.length; // kiszamolja hany nulla kell eleje
	for(var i=0;i<hossz;i++) szam = '0'+szam;
	return szam; // nem vagja rovidebbre, ha a kertnel hosszabb a szam
}
// tizedesre is kerekíto fuggveny
function Round(szam, tizedesig){
	var szorzo=1;
	for(var i=0;i<tizedesig;i++) szorzo = szorzo*10;
	return Math.round(szam*szorzo)/szorzo;
}
// Stringhatarolo koze teszi a karaktersort, ha meg nincs
function AddLimesToString(val){
	var i1, i2, ret;

	// ha hatarolja valamelyik string hatarolo, akkor nem keríti
	if (val.substr(0,1)==slim1&&val.substr(val.length-1,1)==slim1
	||val.substr(0,1)==slim2&&val.substr(val.length-1,1)==slim2) ret = val;
	else if((i1=val.indexOf(slim2))<0) ret = slim2+val+slim2; // ha a 2-es nincs benne, azzal keríti
	else if((i2=val.indexOf(slim2))<0) ret = slim1+val+slim1; // ha az 1-es nincs benne, azzal keríti
	else{ // ha mindket hatarolo karakter elofordul benne
		ret = slim2; // akkor a masodikkal hatarolja
		while ((i1=val.indexOf(slim2))>=0){ // es backslasht tesz az osszes masodik hatarolo ele
			ret+= val.substr(0,i1)+sbsl+slim2; //
			val = val.substr(i1+1);
		}
		ret+= val+slim2;
	}
	return ret;
}
// Vizsgalja, hogy az adott tombben megtalalhato-e egy adott elem
function FirstIndexInArray(array, elem){
	var ret = -1;
	for (var i=0;i < array.length; i++) if (elem==array[i]) {ret = i; break;}
	return ret;
}
// Vizsgalja, hogy a parameterben adott szam paros-e
function Paros(szam){
	return (Math.round(szam/2)*2==szam);
}
// Vizsgalja, hogy az adott tombben megtalalhato-e egy adott elem
function InArray(array, elem){
	return (FirstIndexInArray(array, elem)>=0);
}
//Ket vektorbol egyet allít ossze
function ArrayJoin(arr1,arr2,onlyone){
	if (!Defined(arr1)) arr1 = new Array(); // Pl. ha csak arra hasznalja, hogy kiszurje a dupla elemeket
	for(var i in arr2){
		// ellenorzi, hogy a masodik vektorbol, ne keruljon be ugyanaz az elem megegyszer
		if (true!=onlyone||!InArray(arr1,arr2[i]))
			if (isNaN(i)) arr1[i] = arr2[i]; // ha kozos tulajdonsaguk van a masodikbol felulcsapja
			else arr1[arr1.length] = arr2[i];
	}
}
function Defined(value){return (null!=value);} //&&'undefined'!=value
function Empty(value){ // az objektum meghal a .length tulajdonsagon
	var ret=!Defined(value);
	if (ret); // ha eleve nem definialt ertek
	else if (typeof(value)==stypestr) ret = (0==value.length); // ha ures karakterlanc
	else if (typeof(value)==stypeobj){
		ret = true;
		for(var i in value){ret = false; break;} // ha ures tomb, vagy tulajdonsag nelkuli objektum
	}
	return ret;
}
/*
alert('0 '+Empty(0));
alert('1 '+Empty(1));
alert('{} '+Empty({}));
alert('[] '+Empty([]));
alert("'' "+Empty(''));
alert("'x' "+Empty('x'));
*/
function Semmi(){return false;}
// Az onjektum tulajdonsaglistajaval ter vissza
function ObjectProperties(obj){
	var arr=[];
	for(var i in obj) arr[arr.length] = i;
	return arr;
}
// ez funkcio egy objektun tulajdonsagneveit es erteket irja ki
function ObjectPropertiesValues(obj){
	var str='';
	for(var i in obj) if (typeof(obj[i])==stypefunc) str+= i+': func() | '; else str+= i+': '+obj[i]+' | ';
	alert(str);
}
// ez funkcio egy objektun tulajdonsagneveit es erteket irja ki
function AlertObjectProperties(obj){var str=''; for(var ind in obj) str+= ind+' | '; alert(str);}
function EscClose(e){if (EventProperties(e).keyCode==27) close();}
// egyes elemek ideiglenes megjelenítesere szolgalo DIV kezelese
function ShowHideDivTag(pid,pattrib){ // a DIV tag letrehozasa
	if (Empty(pattrib)) pattrib = ''; // egyedi tulajdonsagok
	return '<div id="'+pid+sdiv+'" '+pattrib+'></div>';
}
function ShowHideDivFind(pid){ // a DIV tag elokeresese
	return document.getElementById(pid+sdiv);
}
function ShowHideDivClear(pid){  // a DIV tag urítese
	var div=ShowHideDivFind(pid);
	if (!Empty(div)) div.outerHTML = ShowHideDivTag(pid);
}
function ShowHideDivFill(pid,pinner){  // a DIV tag kitoltese
	var div=ShowHideDivFind(pid);
	if (!Empty(div)) div.innerHTML = pinner;
}
function Utvonal(){
	var sper='/';
	var ret='', konyvtarak=location.pathname.split(sper);
	for(var ind=0;ind < konyvtarak.length-1;ind++) ret+= konyvtarak[ind]+sper;
	return ret;
}
// az eredeti isNaN null eseten false-t ad vissza
function IsNaN(par){return (null==par||isNaN(par));}
function FileKiterjesztes(fnev){
	var ret='', darabok=fnev.split('.');
	if (darabok.length > 1) ret = darabok[darabok.length-1];
	return ret;
}
/*
function EmptyStatus(){	status = '';}
function ChangeTitle(obj, val){	status = val; this.Title = val;}
function ShowAttribs(obj){
	var msg="", oAttribs = obj.attributes;
	for (var i = 0; i < oAttribs.length; i++){
		var oAttrib = oAttribs[i];
		msg += oAttrib.name+', '; // oAttrib.nodeName + '=' + oAttrib.nodeValue + ' (' + oAttrib.specified + ')';
	}
	alert(msg);
}
*/

