/************************************************************************/
/* PatroNet Content Management System 	    		                    */
/* ==================================                                   */
/* Version 5.0                                                          */
/* Copyright (c) 2002-2010 PatroNet Ltd., CMS project                   */
/* http://www.PatroNet.hu                                               */
/************************************************************************/

try {
	$(document).ready(function() {
		emailCorrectorStrChange();
		//Milonic auto show, BUGFIX!!!
		if(window.drawMenus){
			drawMenus();
		}
	});
} catch(e) {}

// popup windows stuff include 
// 2010 04 10 by PSz
var urlvars = getUrlVars();
try{if(CurSH){}} catch(e){CurSH='';}
if(!urlvars['ispopup']){
	document.write("<scr"+"ipt language='JavaScript' src='/javascript/cookie_functions.js'><\/scr"+"ipt>");
	document.write("<scr"+"ipt language='JavaScript' src='admin.php?op=tool&tool=popupsjs&CurSH="+CurSH+"'><\/scr"+"ipt>"); 
	// community share scripts
	document.write("<scr"+"ipt language='JavaScript' src='/javascript/share_scripts.js'><\/scr"+"ipt>");
} 
// get variables from url
function getUrlVars(){
	var vars = [], hash;
	var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
	for(var i = 0; i < hashes.length; i++){
		hash = hashes[i].split('=');
		vars.push(hash[0]);
		vars[hash[0]] = hash[1];
	}
	return vars;
}		
   
   
function MM_swapImgRestore() { //v3.0
	var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_findObj(n, d) { //v4.0
	var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
	d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
	if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
	for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
	if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
	var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
	if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function MM_displayStatusMsg(msgStr) { //v1.0
  status=msgStr;
  document.MM_returnValue = true;
}

function MM_jumpMenu(targ,selObj,restore){ //v3.0
  eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
  if (restore) selObj.selectedIndex=0;
}

// this method is used instead of getElementById() in order it should work for all browsers 
function getElementRefs(id)
{
	var elm = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	//if (elm) elm.css = (elm.style)? elm.style: elm;
	return elm;
}

// browser
var browserType = "IE";	//Variable used to hold the browser name
BrowserSniffer();
//detects the capabilities of the browser
function BrowserSniffer() {
	if (navigator.userAgent.indexOf("Opera")!=-1 && document.getElementById) browserType="OP";		//Opera
	else if (navigator.userAgent.indexOf("Safari")!=-1) browserType="SF";		                    //Safari
	else if (document.all) browserType="IE";														//Internet Explorer e.g. IE4 upwards
	else if (document.layers) browserType="NN";													//Netscape Communicator 4
	else if (!document.all && document.getElementById) browserType="MO";							//Mozila e.g. Netscape 6 upwards
	else type = "IE";		//I assume it will not get here
}



//**************************
// restore email-addreses
//**************************

function is_array_value(element,array) {
    for (var i=0; i<array.length; i++) {
        if (array[i]==element) {
            return true;
        }
    }
    return false;
}

function textRestoreAtChars(text) {
    return text.replace(/\{\.\}/g,"@").replace(/%7B\.%7D/g,"@");
}

function elementRestoreAtCharsInText(obj) {
    if (document.getElementsByClassName) {
        var elements = document.getElementsByClassName("disp_content_text");
        for (var i=0; i<elements.length; i++) {
            elements[i].innerHTML = textRestoreAtChars(elements[i].innerHTML);
        }
    } else {
        var j_elements = $(".disp_content_text");
        j_elements.each(function(){
                this.innerHTML = textRestoreAtChars(this.innerHTML);
            });
    }
}

function emailCorrectorStrChange() {
    elementRestoreAtCharsInText(document.body);
}


//**************************
// popUp window method
//**************************
function popWindow() {
    if (arguments.length < 1) {
        alert("function  popWindow called with " + arguments.length +
              " arguments, but it expects at least 1 arguments.");
        return null;
    }
    var heightval = arguments[1] != null ? arguments[1] : 480;
    var widthval = arguments[2] != null ? arguments[2] : 640;
    var filename = arguments[3] != null ? arguments[3] : "";
		var dimensions = "directory=0,height="+heightval+",width="+widthval+
                     ",left=30,top=80,resizable=1,statusbar=0,hotkeys=0,menubar=0,scrollbars=1,status=0,toolbar=0";
    var newWindow = window.open(filename,arguments[0],dimensions);
    if (!filename) {
    	newWindow.document.write("<title>- loading / bet&ouml;lt&eacute;s</title><center><font size=2 face=system color='gray'>Kis türelmet, betöltés...</font></center>")
    	newWindow.focus();
	}
    return newWindow;
}

//*********************************
// 3 esc login
//*********************************
/*
kys="";key="272727"
document.onkeypress=katch
function katch(){
	kys+=event.keyCode
	if(kys.indexOf(key)!=-1){kys="";patronetLogin()}
}
QS="/user.php?op=popuplogin";
function patronetLogin(){
	answer = window.showModalDialog(QS,window,"dialogHeight: 290px; dialogWidth: 320px; edge: Raised; center: Yes; help: No; resizable: No; status: No;");
	alert(answer);
	if(answer){
	if(answer == "L_OK"){location="/administrator.php"}
	if(answer.indexOf("AOK")==0){AOK=answer.split("X");location=AOK[1]}
	if(answer.indexOf("ARX")==0){ARX=answer.split("X");location=ARX[1]}
	}
}
*/
//---------------------------------



// ****************************************************************************************
// ------------------------------ ABLAKKAL KAPCSOLATOS FÜGGVÉNYEK -------------------------
// ****************************************************************************************

// Ablak átméretezése
function WindowResize(xx,yy) {
	 var win_top, win_left;
	 var screen_width, screen_height;
	 
	 screen_width = screen.width;
	 screen_height = screen.height;
	  
	 win_left = screen_width / 2 - (xx / 2);
	 win_top  = screen_height / 2 - (yy / 2) - 30;
   //alert(xx+","+yy);
	 window.resizeTo(xx,yy);
	 //this.window.resizeTo("200","550");
	
	 window.moveTo(win_left, win_top);
}

/// ablak nyitas
function open_window(popURL,objT,popWidth,popHeight){

	 screen_width = screen.width;
	 screen_height = screen.height;
	 win_left = screen_width / 2 - (popWidth / 2);
	 win_top  = screen_height / 2 - (popHeight / 2) - 3;
	 
	/*	*/
	var newWin = window.open(popURL,objT,"height="+popHeight+", width="+popWidth+",left="+win_left+", top="+win_top+",resizable=yes");
	return newWin;

}


// **********************************************************************************
// ------------------------------ ÁLTALÁNOS FÜGGVÉNYEK ------------------------------
// **********************************************************************************

// Az ablakot átirányítja a megadott URL-re
function goToURL(url,targetWin) {
	if(targetWin > ""){
		var newWin = window.open(url,targetWin,"location=yes,resizable=yes,toolbar=yes,menubar=yes,scollbars=auto,titlebar=yes,status=yes,scroll=yes");
	} else {
	  document.location=url;
	}
} 





// ****************************************************************************************************
// ----------------------------------- ELLENÖRZÕ FÜGGVÉNYEK -------------------------------------------
// ****************************************************************************************************

// Leellenõrzi, hogy az adott mezõ értéke megfelel-e a type-ben megadott feltételnek
//  - obj: az ELEM REFERENCIÁJA vagy a VÁLTOZÓ NEVE
//	- type : shortlink (a-z,A-Z,0-9,_,-)
//					 email (x@x.x)
//					 int (0-9)
//					 float (0-9, . , ,)
//					 hexa (#,0-9,a-f,A-F)

function CheckValue(obj, type) {
  var obj_type = obj.type;
	text = (obj_type == undefined) ? obj : obj.value;
	switch (type) {
		case "shortlink" :
			return (/^[a-zA-Z0-9_-]+$/.test(text));
		break;
		case "email" :
			return (/^([a-zA-Z0-9_.-]+)@([a-zA-Z0-9_.-]{2,}).([a-zA-Z]{2,3})$/.test(text));
		break;		
		case "int" :
			return (/^\d+$/.test(text));
		break;
		case "float" :
			return (/^(\d+).{0,1}(\d*)$/.test(text));
		break;
		case "hexa" :
			return (/^#{0,1}[0-9a-fA-F]{0,6}$/.test(text));
		break;		
	}
}

// Leellenõrzi, hogy az adott mezõ értéke megfelel-e a type-ben megadott feltételnek, 
// és ha nem, akkor az érvénytelen karaktert kitörli
//  - obj: az ELEM REFERENCIÁJA
//	- type : shortlink (a-z,A-Z,0-9,_,-)
//					 int (0-9)
//					 float (0-9, . , ,)
//					 hexa (#,0-9,a-f,A-F)
//                   regexchar: karakterek szűrése
function CheckKeyPressValue(obj, type, regex) {
	var vissza = "";
	var helyes = true;
	var text = obj.value;
	switch (type) {
		case "shortlink" :
			if(SHtype=='utf'){
				vissza = text.replace(/ /g,"_").replace(/[\/]/gi,"-").replace(/[&?]/gi,"");
				helyes = false;
			} else {
				vissza = text.replace(/[áàâãäå]/gi,"a");
				vissza = vissza.replace(/[éèêë]/gi,"e");
				vissza = vissza.replace(/[íìîï]/gi,"i");
				vissza = vissza.replace(/[óòôõöő]/gi,"o");
				vissza = vissza.replace(/[úùûüű]/gi,"u");
				vissza = vissza.replace(/ /g,"_").replace(/[\/]/gi,"-").replace(/[^a-z0-9_-]/gi,"").replace(/[&?]/gi,"");
				helyes = false;
				/*if (! /^[a-zA-Z0-9_-]+$/.test(text)) {
					for (i=0; i < text.length; i++) {
						betu = text.charAt(i);
						if (/^[a-zA-Z0-9_-]$/.test(betu) ) vissza += betu;
						else helyes = false;
					} 
				}*/
			}
		break;
		case "int" :
			if (! /^\d+$/.test(text)) {
				for (i=0; i < text.length; i++) {
					betu = text.charAt(i);
					if (/^\d+$/.test(betu) ) vissza += betu;
					else helyes = false;
				} 
			}
		break;
		case "float" :
			if (! /^(\d+).{0,1}(\d*)$/.test(text)){
				var pont = false;
				for (i=0; i < text.length; i++) {
					betu = text.charAt(i);
					if (! pont) {
						if (/^[0-9.]$/.test(betu) ) {
							if (betu == ".") pont = true;
							vissza += betu;
						}
						else helyes = false;
					}
					else {
						if (/^\d+$/.test(betu) ) vissza += betu;
						else helyes = false;
					}	
				} 
			}
		break;
		case "hexa" :
			if (! /^#{0,1}[0-9a-fA-F]$/.test(text)) {
				for (i=0; i < text.length; i++) {
					betu = text.charAt(i);
					if (/^[0-9a-fA-F]+$/.test(betu) ) vissza += betu;
					else if (i == 0 && betu == "#") vissza += betu;
					else helyes = false;
				} 
			}
		break;
        case "regexchar":
            var regexp_obj = new RegExp("^"+regex+"+$");
            var regexp_obj_char = new RegExp(regex);
			if (!regexp_obj.test(text)) {
				for (i=0; i < text.length; i++) {
					betu = text.charAt(i);
					if (regexp_obj_char.test(betu) ) vissza += betu;
					else if (i == 0 && betu == "#") vissza += betu;
					else helyes = false;
				} 
			}
        break;
	}
	if (! helyes) obj.value = vissza;
}

// Kicseréli a 'text'-ben a 'mit' karaktereket 'mire' karakterekre
function oeStrReplace(text, mit, mire) {
	var ret = text.replace(new RegExp(mit,"g"),mire);
	return ret;
}


//
// szoveg atmeretezo fuggvenyek
//
function setContentSize(){
	lineHeight = fontSize + Math.round(.3*fontSize);
	for (i = 0; i < 2; i++) {
		obj = document.getElementById("articleBody" + i);
		if (obj){
			obj.style.fontSize = fontSize+"px";
			obj.style.lineHeight = lineHeight+"px"
		}
	}
} 

function contentSize(param){
	switch ( param ){
		case "minus" :
		case "smaller" :
		case "lower" :
			fontSize = fontSize-2
			if (fontSize < 9) fontSize = 9;
			break;
		case "plus" :
		case "greater" :
		case "higher" :
			fontSize = fontSize+2;
			if (fontSize > 18) {fontSize = 18;}
			break;
	}
	setContentSize()
}


// ******************************************************************************
// ------------------------------- MODULOK FÜGGVÉNYEI ---------------------------
// ******************************************************************************

// ********** OE-Forum **********
// OldName - showimage()
function showAvatarImage()
{
	if (!document.images)
		return document.images.avatar.src= 'images/avatar/' + document.Register.user_avatar.options[document.Register.user_avatar.selectedIndex].value
}


// ********** Ajanlo **********

//  tipus - Az ajanlas tipusa ("News", "")
//  param - A tipus parametere (news_id, "")
function AjanloPopUp(tipus, param){
	var popType = "";
	var popHeight = 400;
	var popWidth = 400;
	var popURL = "/index.php?name=Ajanlo&file=index&tipus="+tipus+"&params="+param;
	  // Itt eldontjuk, hogy a bongeszo MSIE es nagyobb-e mint 5.5, ha igen: OK, ha nem: logout
  msie= navigator.appName.indexOf("Microsoft")>=0; 
  ver= navigator.appVersion;
  re= /MSIE\s+([0-9\.]*)/;
  ver.match(re);
  verok= (RegExp.$1>5.5) && msie;
  // ---------------------------------------------------------------------------------------
  
  //verok= ver.indexOf("MSIE 5.5")>=0 || ver.indexOf("MSIE 6.0")>=0;
  if (!verok) { 
		popType = "window";
  };
	
	switch(popType) {
		case "modal" :
			window.showModalDialog(popURL,window,"dialogHeight: "+popHeight+"px; dialogWidth: "+popWidth+"px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll: No");
			return false;
			break;
		case "modeless" :
			window.showModelessDialog(popURL,window,"dialogHeight: "+popHeight+"px; dialogWidth: "+popWidth+"px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll: No");
			return false;
			break;
		case "window" :
			var newWin = window.open(popURL,null,"height="+popHeight+", width="+popWidth+", resizable: No; status: No; scroll: No");
			return newWin;
			break;
		default : 
			window.showModalDialog(popURL,window,"dialogHeight: "+popHeight+"px; dialogWidth: "+popWidth+"px; dialogTop: px; dialogLeft: px; edge: Raised; center: Yes; help: No; resizable: No; status: No; scroll: No");
			return false;
			break;		
	}
}


function sprintf()
{
	if (!arguments || arguments.length < 1 || !RegExp)
	{
		return;
	}
	var str = arguments[0];
	var re = /([^%]*)%('.|0|\x20)?(-)?(\d+)?(\.\d+)?(%|b|c|d|u|f|o|s|x|X)(.*)/;
	var a = b = [], numSubstitutions = 0, numMatches = 0;
	while (a = re.exec(str))
	{
		var leftpart = a[1], pPad = a[2], pJustify = a[3], pMinLength = a[4];
		var pPrecision = a[5], pType = a[6], rightPart = a[7];
		
		//alert(a + '\n' + [a[0], leftpart, pPad, pJustify, pMinLength, pPrecision);

		numMatches++;
		if (pType == '%')
		{
			subst = '%';
		}
		else
		{
			numSubstitutions++;
			if (numSubstitutions >= arguments.length)
			{
				alert('Error! Not enough function arguments (' + (arguments.length - 1) + ', excluding the string)\nfor the number of substitution parameters in string (' + numSubstitutions + ' so far).');
			}
			var param = arguments[numSubstitutions];
			var pad = '';
				   if (pPad && pPad.substr(0,1) == "'") pad = leftpart.substr(1,1);
			  else if (pPad) pad = pPad;
			var justifyRight = true;
				   if (pJustify && pJustify === "-") justifyRight = false;
			var minLength = -1;
				   if (pMinLength) minLength = parseInt(pMinLength);
			var precision = -1;
				   if (pPrecision && pType == 'f') precision = parseInt(pPrecision.substring(1));
			var subst = param;
				   if (pType == 'b') subst = parseInt(param).toString(2);
			  else if (pType == 'c') subst = String.fromCharCode(parseInt(param));
			  else if (pType == 'd') subst = parseInt(param) ? parseInt(param) : 0;
			  else if (pType == 'u') subst = Math.abs(param);
			  else if (pType == 'f') subst = (precision > -1) ? Math.round(parseFloat(param) * Math.pow(10, precision)) / Math.pow(10, precision): parseFloat(param);
			  else if (pType == 'o') subst = parseInt(param).toString(8);
			  else if (pType == 's') subst = param;
			  else if (pType == 'x') subst = ('' + parseInt(param).toString(16)).toLowerCase();
			  else if (pType == 'X') subst = ('' + parseInt(param).toString(16)).toUpperCase();
		}
		str = leftpart + subst + rightPart;
	}
	return str;
}


// css, screen

function setElementOpacity(obj,opacity) {
    obj = (typeof obj=="string")?document.getElementById(obj):obj;
    if (document.all) {
        obj.style.filter = "alpha(opacity="+(opacity*100)+")";
    } else if (typeof obj.style.opacity!="undefined") {
        obj.style.opacity = opacity;
    } else if (typeof obj.style.MozOpacity!="undefined") {
        obj.style.MozOpacity = opacity;
    }
}

function getWindowSize() {
    var result = { width: 0, height: 0 };
    if (typeof window.innerWidth=='number') {
        result.width = window.innerWidth;
        result.height = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth||document.documentElement.clientHeight)) {
        result.width = document.documentElement.clientWidth;
        result.height = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth||document.body.clientHeight)) {
        result.width = document.body.clientWidth;
        result.height = document.body.clientHeight;
    }
    return result;
}

function forceClass(obj,className) {
    obj = (typeof obj=="string")?document.getElementById(obj):obj;
    var cn = obj.className;
    var regex = new RegExp("( "+className+"|"+className+" )");
    cn = cn.replace(regex,"");
    obj.className = cn+" "+className;
}

function moveElement(obj,obj_to){
    obj = (typeof obj=="string")?document.getElementById(obj):obj;
    obj_to = (typeof obj_to=="string")?document.getElementById(obj_to):obj_to;
    obj_to.appendChild(obj.parentNode.removeChild(obj));
}


// depends on moveElement(), getTrueOffset()
function stickTo(obj,obj_to,type,offset,outer) {
    obj = (typeof obj=="string")?document.getElementById(obj):obj;
    obj_to = (typeof obj_to=="string")?document.getElementById(obj_to):obj_to;
    outer = outer?((typeof outer=="string")?document.getElementById(outer):outer):document.body;
    type = type?type:"tl";
    offset = offset?offset:[0,0];
    offsets = getTrueOffset(obj_to,outer);
    switch (type) {
        case "tr":
            offsets.left = offsets.left+obj_to.offsetWidth-obj.offsetWidth;
        break;
        case "bl":
            offsets.top = offsets.top+obj_to.offsetHeight-obj.offsetHeight;
        break;
        case "br":
            offsets.top = offsets.top+obj_to.offsetHeight-obj.offsetHeight;
            offsets.left = offsets.left+obj_to.offsetWidth-obj.offsetWidth;
        break;
    }
    offsets.top += offset[0];
    offsets.left += offset[1];
    moveElement(obj,outer);
    obj.style.display = "block";
    obj.style.position = "absolute";
    obj.style.top = offsets.top+"px";
    obj.style.left = offsets.left+"px";
}

// depends on getTrueOffset() and getWindowSize()
function resizeToWindow(obj,padding) {
    padding = padding?padding:15;
    obj = (typeof obj=="string")?document.getElementById(obj):obj;
    offsets = getTrueOffset(obj);
    winsize = getWindowSize();
    document.body.style.overflow = "hidden";
    obj.style.marginBottom = "0px";
    obj.style.marginRight = "0px";
    obj.style.height = (winsize.height-offsets.top-padding)+"px";
    obj.style.width = (winsize.width-offsets.left-padding)+"px";
}

function popup_box(html_text,box_width,box_height,bgcolor,overflow) {
    var last_overflow = document.body.style.overflow;
    box_width = box_width?box_width:400;
    box_height = box_height?box_height:300;
    bgcolor = bgcolor?bgcolor:"#F0F0F0";
    overflow = overflow?overflow:"auto";
    document.body.style.overflow = "hidden";
    var window_sizes = getWindowSize();

    // cover
    var cover = document.createElement("DIV");
    cover.id = "din_popup_box_cover";
    cover.style.display = "block";
    cover.style.visibility = "visible";
    cover.style.position = "absolute";
    cover.style.zIndex = 1000;
    cover.style.top = document.body.scrollTop+"px";
    cover.style.left = document.body.scrollLeft+"px";
    cover.style.width = window_sizes.width+"px";
    cover.style.height = window_sizes.height+"px";
    cover.style.backgroundColor = "#777777";
    cover.innerHTML = "&nbsp;";
    setElementOpacity(cover,0.5);
    document.body.appendChild(cover);
    
    // box
    var box = document.createElement("DIV");
    box.id = "din_popup_box";
    box.style.display = "block";
    box.style.visibility = "visible";
    box.style.position = "absolute";
    box.style.zIndex = 1100;
    box.style.top = (document.body.scrollTop+(window_sizes.height-box_height)/2)+"px";
    box.style.left = (document.body.scrollLeft+(window_sizes.width-box_width)/2)+"px";
    box.style.width = box_width+"px";
    box.style.height = box_height+"px";
    box.style.border = "1.5pt solid #999999";
    document.body.appendChild(box);
    
    // inner
    var inner = document.createElement("DIV");
    inner.id = "din_popup_box_inner";
    inner.style.display = "block";
    inner.style.position = "relative";
    inner.style.width = box_width+"px";
    inner.style.height = box_height+"px";
    inner.style.backgroundColor = bgcolor;
    inner.style.overflow = overflow;
    box.appendChild(inner);
    
    // container
    var container = document.createElement("DIV");
    container.id = "din_popup_box_container";
    container.style.display = "block";
    container.style.margin = "5px";
    container.innerHTML = html_text;
    inner.appendChild(container);
    
    // closer
    var closer = document.createElement("DIV");
    closer.id = "din_popup_box_closer";
    closer.style.display = "block";
    closer.style.visibility = "visible";
    closer.style.position = "absolute";
    closer.style.border = "1pt solid #770000";
    closer.style.backgroundColor = "#FFF0DD";
    closer.style.padding = "2px";
    closer.style.fontWeight = "bold";
    closer.style.color = "#770000";
    closer.style.top = "0px";
    closer.style.right = "20px";
    closer.style.cursor = "pointer";
    closer.onclick = new Function("popup_box_remove('"+last_overflow+"')");
    closer.innerHTML = "Bezár";
    box.appendChild(closer);
}

function popup_box_remove(body_scroll) {
    body_scroll = body_scroll?body_scroll:"auto";
    var obj;
    if (obj=document.getElementById("din_popup_box_cover")) {
        obj.parentNode.removeChild(obj);
    }
    if (obj=document.getElementById("din_popup_box")) {
        obj.parentNode.removeChild(obj);
    }
    document.body.style.overflow = body_scroll;
}

// data structure

function getObjarrColumns(objarr) {
    result = new Object();
    if (objarr.length) {
        for (var index in objarr[0]) {
            result[index] = [];
            for (var i=0; i<objarr.length; i++) {
                result[index][i] = objarr[i][index];
            }
        }
    }
    return result;
}

function getByColumn(arr,colname,value) {
    for (var i=0; i<arr.length; i++) {
        if (arr[i][colname]==value) {
            return arr[i];
        }
    }
    return null;
}

function is_empty(value) {
    return (!value||value=="0");
}

function getDataStructureText(data,maxdepth,depth) {
    var temp=[],str="",pre="",tab="       ";
    maxdepth = maxdepth?maxdepth:3;
    depth = depth?depth:0;
    for (var i=0; i<depth; i++) {
        pre += tab;
    }
    switch (typeof data) {
        case "boolean":
            str += data?"true":"false";
        break;
        case "number":
            str += data;
        break;
        case "string":
            str += "'"+data.replace(/'/g,"\\'").replace(/\\/g,"\\\\")+"'";
        break;
        case "object":
            if (data===null) {
                str += "null";
            } else if (typeof data==='object' && typeof data.length==='number' && typeof data.splice==='function') {
                str += "/*array*/ ["+"\n";
                temp = [];
                for (var i=0; i<data.length; i++) {
                    temp[temp.length] = "\n"+pre+tab+"/* "+i+" => */ "+getDataStructureText(data[i],maxdepth,depth+1);
                }
                str += temp.join(",");
                str += "\n"+pre+"]";
            } else if (maxdepth>=depth) {
                str += "/*object*/ {"+"\n";
                temp = [];
                for (var index in data) {
                    temp[temp.length] = "\n"+pre+tab+"'"+index+"': "+getDataStructureText(data[index],maxdepth,depth+1);
                }
                str += temp.join(",");
                str += "\n"+pre+"}";
            } else {
                str += "/*object*/ 'rec!'";
            }
        break;
        default:
            str += "null";
    }
    return str;
}

// DOM

function getChildsByTagName(parent,tagname) {
    var childs = parent.childNodes;
    var result = [];
    for (var i=0; i<childs.length; i++) {
        if (childs[i].nodeName.toLowerCase()==tagname.toLowerCase()) {
            result[result.length] = childs[i];
        }
    }
    return result;
}

function getNextElement(element) {
    for (var next=element.nextSibling; next; next=next.nextSibling) {
        if (next.nodeName.substr(0,1)!="#") {
            return next;
        }
    }
    return null;
}

function getPrevElement(element) {
    for (var prev=element.previousSibling; prev; prev=prev.previousSibling) {
        if (prev.nodeName.substr(0,1)!="#") {
            return prev;
        }
    }
    return null;
}

function getEventHandler(element,event) {
    event = event.toLowerCase();
    if (event.substr(0,2)!="on") {
        event = "on"+event;
    }
    return element[event].toString().replace(/^\s*function\s*\w+\s*\([^\(]*\)\s*\{/,"").replace(/\}\s*$/,"");
}

function setEventHandler(element,event,code) {
    event = event.toLowerCase();
    if (event.substr(0,2)!="on") {
        event = "on"+event;
    }
    element[event] = new Function(code);
}


// etc

function htmlspecialchars(str) {
    if (typeof str!="string") {
        return "";
    }
    return str.replace("&","&amp;").replace("<","&lt;").replace(">","&gt;").replace('"',"&quot;");
}

function force_number(variable) {
    var str = variable.toString();
    if (/^([1-9][0-9]*)?[0-9]$/.test(str)) {
        return variable*1;
    }
    return 0;
}


