String.prototype.stripTags = function() {
    return this.replace(/<\/?[^>]+>/gi, '');
  };

String.prototype.escapeHTML = function() {
    var div = document.createElement('div');
    var text = document.createTextNode(this);
    div.appendChild(text);
    return div.innerHTML;
  };

String.prototype.unescapeHTML = function() {
    var div = document.createElement('div');
    div.innerHTML = this.stripTags();
    return div.childNodes[0].nodeValue;
  };

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}


function addEvent(obj, evType, fn) {
  if( ! obj ) 
	  alert( "Hibás objektum" );
  if (obj.addEventListener) {
    obj.addEventListener(evType, fn, false);
    return true;
  } else if (obj.attachEvent) {
    var r = obj.attachEvent("on"+evType, fn);
    return r;
  } else {
    return false;
  }
}

//**********************************
// Segédfüggvények a vezérlőkgöz
//**********************************
// select vezérlő értékének lekérdezése
function selectctrlobj_value( sel ) {
	if( ! sel ) alert( "nincs ilyen vezérlő " );
	if( sel.options.length == 0 ) return null;
	return sel.options[ sel.selectedIndex ].value;
}

function selectobj_value( formid, selname, value ) {
	var sel = document.forms[ formid ].elements[ selname ];
	if( ! sel ) alert( "nincs ilyen vezérlő: " + selname );
	return selectctrlobj_value( sel );
}

function selectctrlobj_text( sel ) {
	if( ! sel ) alert( "nincs ilyen vezérlő " );
	if( sel.options.length == 0 ) return null;
	return sel.options[ sel.selectedIndex ].text;
}

function selectobj_text( formid, selname, value ) {
	var sel = document.forms[ formid ].elements[ selname ];
	if( ! sel ) alert( "nincs ilyen vezérlő: " + selname );
	return selectctrlobj_text( sel, value );
}

function get_selectobj_text( sel, value ) {
	var obj = sel.options;
	var idx = 0;
	while( idx < obj.length && obj[ idx ].value != value ) idx++;
	if( idx < sel.options.length )
	{
		return obj[ idx ].text;
	}
	return "";
}

function get_select_text( formid, selname, value ) {
	var sel = document.forms[ formid ].elements[ selname ];
	if( ! sel ) alert( "nincs ilyen vezérlő: " + selname );
	return get_selectobj_text( sel, value );
}

function set_selectobj_value( sel, value ) {
	var debug = true;
	var obj = sel.options;
	var idx = 0;
	while( idx < obj.length && obj[ idx ].value != value ) 
	{
		idx++;
	}
	if( idx < sel.options.length )
	{
		sel.selectedIndex = idx;
		return true;
	}
	
	return false;
}

function set_select_value( formid, selname, value ) {
	var sel = document.forms[ formid ].elements[ selname ];
	if( ! sel ) alert( "nincs ilyen vezérlő: " + selname );
	set_selectobj_value( sel, value );
}

// radio vezérlőcsoport értékének lekérdezése
function radiogrp_value( formid, radname ) {
	var rad = document.forms[ formid ].elements[ radname ];
	var z = 0;
	if( rad.length )
	{
		while( rad[z] && ! rad[z].checked ) z++;
		if( ! rad[z] ) return null;
		return rad[z].value;
	} else
	{
		return rad.value;
	}
}

// radio vezérlőcsoport értékének beállítása 
function radiogrp_check( formid, radname, value ) {
	var rad = document.forms[ formid ].elements[ radname ];
	var z = 0;
	while( rad[z].value != value ) z++;
	if( z < rad.length )
		rad[z].checked = true;
}

// megadott nevő jelölőnégyzet csoport összes elemét kiválasztja
function checkgrp_selectall( formid, chkname )
{
	oChkexp = new RegExp( "^"+chkname );
	aChk = document.getElementsByTagName( "input" );
	maxctrl = aChk.length;
	for( ix = 0; ix < maxctrl; ix++ )
	{
		if( aChk[ ix ].getAttribute( "type" ) == "checkbox" )
		{
			if( oChkexp.exec( aChk[ ix ].getAttribute( "name" ) ) )
			{
				aChk[ ix ].checked = true;
			}
		}
	}
}

// megadott nevő jelölőnégyzet csoport kiválasztását ellenkezőjére állítja
function checkgrp_selectinvert( formid, chkname )
{
	oChkexp = new RegExp( "^"+chkname );
	aChk = document.getElementsByTagName( "input" );
	maxctrl = aChk.length;
	for( ix = 0; ix < maxctrl; ix++ )
	{
		if( aChk[ ix ].getAttribute( "type" ) == "checkbox" )
		{
			if( oChkexp.exec( aChk[ ix ].getAttribute( "name" ) ) )
			{
				aChk[ ix ].checked = ! aChk[ ix ].checked;
			}
		}
	}
}

//selectet feltölti optarray elemeivel és value-ra állítja
//  optarray=new Array( Array(value, text), Array(value, text))
function create_select_assocarray( formid, selname, optarray, value ) {
  var idx = 0;
  var obj = document.forms[ formid ].elements[ selname ];
  var sel = false;
  //törlés
  while( idx < obj.length ) {
    obj.options[ idx ] = null;
    idx++;
  }

  idx = 0;
  for( key in optarray ){
	if( typeof optarray[ key ] == "function" ) continue;
    if ( optarray[ key ] == value )
      sel = true;
    else
      sel = false;

    obj.options[ idx ] = new Option ( optarray[ key ], key, false, sel );

    idx++;
  }
  //selectet inicializálni kell
  obj.length=idx;//js hiba???
  //window.opener.history.go(0); ez is lehetne a fenti helyett
}

//selectet feltölti optarray elemeivel és value-ra állítja
//  optarray=new Array( Array(value, text), Array(value, text))
function create_select_array( formid, selname, optarray, value ) {
  var idx = 0;
  var obj = document.forms[ formid ].elements[ selname ];
  var sel = false;

  //törlés
  while( idx < obj.length ) {
    obj.options[ idx ] = null;
    idx++;
  }

  idx = 0;
  while( idx < optarray.length ) {
	if( typeof optarray[ idx ] == "function" ) continue;
    if ( optarray[ idx ][ 0 ] == value )
      sel = true;
    else
      sel = false;

    obj.options[ idx ] = new Option ( optarray[ idx ][ 1 ], optarray[ idx ][ 0 ], false, sel );

    idx++;
  }
  //selectet inicializálni kell
  obj.length=idx;//js hiba???
  //window.opener.history.go(0); ez is lehetne a fenti helyett
}

// változó hosszúságú paraméterlistát kezel
function textobjs_clear( formid )
{
	var argv = textobjs_clear.arguments;
	var argc = argv.length;
	var elems = document.forms[ formid ].elements;
	// a formid-t ne vegye figyelembe
	for( i = 1; i < argc; i++ )
	{
		// ha létezik
		if( elems[ argv[ i ] ] )
			elems[ argv[ i ] ].value = '';
	}
}

// változó hosszúságú paraméterlistát kezel
function onclick_clear( obj, deftext )
{
	if( obj.value == deftext )
		obj.value = '';
}


function check_checklist( formid, checkobj ) {
	var obj = document.forms[ formid ];
	var ischeck = new RegExp( checkobj )
	var bvan = false;
	for( var och = 0; och < obj.elements.length; och++ )
	{
//		if( ismintaid.exec( och  ) )
		if( ischeck.exec( obj.elements[ och ].name ) )
		{
			if( obj.elements[ och ].checked == true )
			{
				bvan = true;
				break;
			}
		}
	}
	return bvan;
}

function exec_onlist( formid, checkobj, fgv ) {
	var obj = document.forms[ formid ];
	var ischeck = new RegExp( checkobj );
	msg = "fgv: " + typeof( fgv ) + "\n";
	for( var och = 0; och < obj.elements.length; och++ )
	{
//		if( ismintaid.exec( och  ) )
		if( ischeck.exec( obj.elements[ och ].name ) )
		{
			msg += "found: " + obj.elements[ och ].value + "\n";
			if( ! fgv( obj.elements[ och ] ) )
			{
				break;
			}
		}
	}
//	alert( msg );
}

function keycodeHandler( evnt, string )
{
	if( evnt.altKey || evnt.ctrlKey ) return string;
	switch( evnt.keyCode )
	{
		case 192:	string += evnt.shiftKey ? "Ö" : "ö"; break;
		case 191:	string += evnt.shiftKey ? "Ü" : "ü"; break;
		case 61:	string += evnt.shiftKey ? "Ó" : "ó"; break;
		case 219:	string += evnt.shiftKey ? "Ő" : "ő"; break;
		case 221:	string += evnt.shiftKey ? "Ú" : "ú"; break;
		case 59:	string += evnt.shiftKey ? "É" : "é"; break;
		case 222:	string += evnt.shiftKey ? "Á" : "á"; break;
		case 220:	string += evnt.shiftKey ? "Ű" : "ű"; break;
		case 226:	string += evnt.shiftKey ? "Í" : "í"; break;
        case 8:
					if( string.length > 0 )
						string = string.substr( 0, string.length - 1 ); 
					break;  

        case 37: //left arrow
        case 39: //right arrow
        case 33: //page up  
        case 34: //page down  
        case 36: //home  
        case 35: //end
        case 13: //enter
        case 9: //tab
        case 27: //esc
        case 16: //shift  
        case 17: //ctrl  
        case 18: //alt  
        case 20: //caps lock
        case 46: //delete 
        case 38: //up arrow 
        case 40: //down arrow
			break;
		default:
			string += String.fromCharCode( evnt.shiftKey ? evnt.keyCode : evnt.keyCode + 32 );
	}
	return string;
}

//**********************************
// 2005.04.11. 16:33:32
// ha van megadva beállítja a stílist, visszaadja az előzőt.
function currentStyle( win, stylename, fullpath )
{
	var styles = [ "_publikus", "_admin_megoldas", "_admin" ];
	var prevstyle = '';
	links = win.document.getElementsByTagName("link");
	for( i = 0; links[i]; i++ )
	{
		var lnk = links[i];
		if( lnk.getAttribute('rel').indexOf('style') != -1 &&
			lnk.getAttribute('media').indexOf('screen') != -1 )
		{
			prevstyle = lnk.getAttribute('href' );
			if( stylename )
			{
				if( fullpath )
				{
					lnk.setAttribute('href', stylename  );
				} else {
					lnk.setAttribute('href', 'css/'+ stylename +'.css' );
				}
			}
    	}
	}
	return prevstyle;
}


//**********************************
// 2006.02.13.
// id-vel azonosított tag kinyitása, bezárása
function openclose( menuid )
{
	obj = document.getElementById(  menuid );
	if( obj.style.display != "none" )
	{
		obj.style.display = "none";
	} else 
	{
		obj.style.display = "";
	}
}

function inputAddEvent( form, name, type, handler )
{
	alert( 'ver 4' );
	if( ! document.forms[ form ] ) { alert( "Nincs ilyen form: " + form ); return false }
	if( ! document.forms[ form ].elements[ name ] ) { alert( "Nincs ilyen vezérlő: " + name ); return false }
	var ctrl = document.forms[ form ].elements[ name ];
	if( ctrl.length )
	{
		for( i in ctrl )
		{
			addEvent( ctrl[i], 	type, handler );
		}
	} else
	{
		addEvent( ctrl, 	type, handler );
	}
	return true;
}

function getElem( id )
{
	var ret = document.getElementById( id );
	if( ! ret )
		alert( 'Nincs ' + id );
	return ret;
}

function forallinClass( tag, classname, iterator )
{
	
	alltags = document.getElementsByTagName( tag );
	for( obj in alltags )
	{
		if( alltags[ obj ] && alltags[ obj ].className == classname )
		{
			iterator( alltags[ obj ], obj );
		}
	}
}

