//set, get, check INPUT items
function clearValue(obj,defval) {
	if (getValue(obj)==defval) {
		setValue(obj,'',defval);
	}
}
function unClearValue(obj) {
	if (getValue(obj)=='' && obj.o_value && typeof obj.o_value!="undefined") {
		obj.value=obj.o_value;
	}
}
function incValue(obj,value)
{
    var obj=getObjfromIdorObj(obj);
    if (obj)obj.value=parseInt(obj.value)+(isNaN(value)?1:parseInt(value));
}
function decValue(obj,value)
{
    var obj=getObjfromIdorObj(obj);
    if (obj)obj.value=parseInt(obj.value)-(isNaN(value)?1:parseInt(value));
}
function getValue(obj)
{
    var obj=getObjfromIdorObj(obj);
    if (obj) {
        return obj.value;
    }
    return false;
}
function copyValue(from,to) {
	setValue(to,getValue(from));
}
function getSelectIndex(obj)
{
    var obj=getObjfromIdorObj(obj);
    if (obj && obj.type=="select-one")  {
        return obj.selectedIndex;
    }
    return false;
}
function getSelectText(obj)
{
    var obj=getObjfromIdorObj(obj);
    if (obj && obj.type=="select-one")  {
        return obj.options[getSelectIndex(obj)].text;
    }
    return false;
}
function setValue(id,val)
{
    var obj=getObjfromIdorObj(id);
    //if (!obj)alert("setValue - Nics ilyen objektum: "+id,1);
    if (obj.tagName=="INPUT" || obj.tagName=="TEXTAREA"){setInputValue(obj,val);}
    else if (obj.tagName=="SELECT"){setSelectOneValue(obj,val);}
    else {setInnerHTML(obj,val);}
}

function resetForm(formid){
	formobj=getObjfromIdorObj(formid);
	if (formobj) {
        formobj.reset();
        return true;
    }
}
function submitForm(formid){
	var formobj=getObjfromIdorObj(formid);
    var func="";
    var retval="";
    FormValidateAllElement(formobj);
	if(typeof formobj.onsubmit=="undefined" || !formobj.onsubmit){
        func="FormSubmit";
        retval=FormSubmit(formobj);
    	if (retval) {
           formobj.submit();
           return true;
        }
    } else if (typeof formobj.onsubmit=="function") {
        func=formobj.onsubmit
        retval=formobj.onsubmit();
    	if (retval) {
           formobj.submit();
           return true;
        }
    } else {
       formobj.submit();
       return true;
    }

    if (typeof retval=='undefined') { // ha semmi, vagy értelmetlen jön vissza ellenőrzés után
        var Errors = new Array();
        Errors[0]=new Array();
        Errors[1]=new Array();
        Errors[2]=new Array();
        Errors[0]['text']="Ismeretlen hiba az űrlap mentésekor. ";
        Errors[1]['text']="Függvény: "+func;
        Errors[2]['text']="Visszatérési érték: "+retval;
        FormDisplayFormError(Errors);
    }
}

function setShowOverlib(id,val){
    var obj=getObjfromIdorObj(id);
    obj.onmouseover=function onmouseover(event) {
    	return showoverlib(this.value);
	}
    obj.onmouseout=nd();
}

function setInnerHTML(obj,val)
{
    var obj=getObjfromIdorObj(obj);
    if (obj.nodeName=='TD')val=(val!="null" && val) ? val : '&nbsp;'
    if (obj) obj.innerHTML = val;
}
function setInputValue(obj,val)
{
    var obj=getObjfromIdorObj(obj);
    if (obj) {
		obj.o_value=obj.value;
		obj.value=(val!="null")?val:'';
	}
}
function setSelectOneValue(obj,val)
{
    var obj=getObjfromIdorObj(obj);
    if (val=="null" || typeof val=='undefined')val=false;
    if (obj) {
		obj.selectedIndex=val;
	}
}

function setLink(obj,href)
{
    var obj=getObjfromIdorObj(obj);
    if (obj)
    {
        obj.href=href;
    }
	return true;
}
function setAction(obj,action2,dontsubmit)
{
    var obj=getObjfromIdorObj(obj);
    if (obj)
    {
        obj.action=action2;
        if (dontsubmit===false || dontsubmit===0) obj.submit();
    }
	return true;
}





function getObjfromIdorObj(obj)
{
    if (typeof obj=="object")return obj;
    else if (typeof obj=="string") {
        if (document.getElementById(obj))return document.getElementById(obj);
        var names=document.getElementsByName(obj);
        if (names.length==1 && names[0])return names[0];
    }
    return false;
}
function setObjOverflow(objo,type,size)
{ 
    var obj=getObjfromIdorObj(objo);
    if (obj && obj.style) {
        if (typeof size=='undefined') {
            var width=getMaxWidth(true);
            var height=document.body.clientHeight;
            obj.style.border=' 1px solid #333333';
            obj.style.paddingLeft='4';
            obj.style.paddingRight='4';
        } else {
            var width=size.width;
            var height=size.height;
        }
        switch (getBrowserType())
        {
            case 'ff':
                switch (type)
                {
                    case 'xy':
						if  (height>12){
							obj.style.height=(height-12)+'px';
							obj.height=(height-12)+'px';
						}
						if  (width>12){
							obj.style.width=(width-12)+'px';
							obj.width=(width-12)+'px';
						}
                       obj.style.overflow='-moz-scrollbars-horizontal';
                       obj.style.overflowY='scroll';
                       obj.style.overflowX='scroll';
					break;
                    case 'y':
						if  (height>0){
							obj.style.height=(height)+'px';
							obj.height=(height)+'px';
						}
                       obj.style.overflow='-moz-scrollbars-vertical';
	                   obj.style.overflowX='hidden';
                       obj.style.overflowY='scroll';
                    break;

                    case 'x':
						if  (width>0){
							obj.style.width=(width)+'px';
							obj.width=(width)+'px';
						}
                       obj.style.overflow='moz-scrollbars-horizontal';
                       obj.style.overflowY='hidden';
                       obj.style.overflowX='scroll';
                    break;
                }
            break;

            default:
				switch (type)
				{
					case 'xy':
						if (height>20 && !obj.style.height.match(/%/)) {
							obj.style.height=height-20;
							obj.height=height-20;
						}
						if  (width>20){
							obj.style.width=width-20;
							obj.width=width-20;
						}
						obj.style.overflow='auto';
					break;

					case 'y':
						if (height>0 && !obj.style.height.match(/%/)) {
							obj.style.height=height;
							obj.height=height;
						}
						obj.style.overflowY='auto';
					break;

					case 'x':
						if  (width>0){
							obj.style.width=width;
							obj.width=width;
						}
						obj.style.overflowX='scroll';
					break;
				}
            break;
		}        
    }
}

function getMaxWidth(resolution)
{
    var width=getObjfromIdorObj('container') ? getObjfromIdorObj('container').offsetWidth : 0;
    var realwidth=(typeof document.body.clientWidth!="undefined"?document.body.clientWidth:document.width);
    if (typeof resolution!='undefined' && resolution)width=realwidth;
    else width = realwidth>width ? realwidth : width;
    return width;
}
function getMaxHeight()
{
    var docheight=(typeof document.body.clientHeight!="undefined"?document.body.clientHeight:document.height);
    return docheight;
}
function getScrollTop()
{
    if (document.documentElement && document.documentElement.scrollTop>0)var scrt=document.documentElement.scrollTop;
    else if (document.body && document.body.scrollTop>0) var scrt=document.body.scrollTop;
    else var scrt=0;
    return parseInt(scrt);
}

function getBrowserType(isbrowser)
{
    var browser;
        if (navigator.appName=='Netscape')browser="ff";
        else browser="ie";
        if (typeof isbrowser=='undefined')return browser;
        else return (isbrowser===browser?true:false);
}


function checkedShowObj(checkid,hideid,id,justhide){
	if (isCheckedObj(checkid)){
		if(!justhide){
            checkObj(hideid);
            showObj(id);
		}
	}
	else{
		hideObj(id);
		if(justhide)unCheckObj(hideid);
	}
}



function disableObj(id,to){
	var obj=getObjfromIdorObj(id);
	if (typeof to=='undefined')to=true;
	if(obj){
		obj.disabled=to;
		setClassDisabled(obj,to);
	}
}

function enableObj(id){
    disableObj(id,false);
}
function disableBlockItems(id,to,allowedInputTypes) {
    if (typeof allowedInputTypes=='undefined')allowedInputTypes=Array('radio','checkbox','text','submit');
    var allowedFromTags=Array('select','input','textarea');
	var obj=getObjfromIdorObj(id);
	if (typeof to=='undefined')to=true;
	var items=new Array();
	var free=1;
	for (var i=0;i<allowedFromTags.length;i++) {
        var curritems=obj.getElementsByTagName(allowedFromTags[i]);
        for (var j=0;j<curritems.length;j++) {
            free=1
            if (allowedFromTags[i]=='input' && !allowedInputTypes.in_array(curritems[j].type)) {
                free=0;
            }
            if (free) {
                curritems[j].disabled=to;
        		setClassDisabled(curritems[j],to);
            }
        }
    }
}

function enableBlockItems(id) {
    disableBlockItems(id,false);
}

function checkObj(id,to){
    if (typeof to=="undefined") to=true;
	var obj=getObjfromIdorObj(id);
	if(obj){
		obj.checked=to;
	}
}
function unCheckObj(id){
	checkObj(id,false);
}
function isCheckedObj(id){
	var obj=getObjfromIdorObj(id);
	if(obj){
        if (obj.tagName=='OPTION')return obj.selected;
		else return obj.checked;
	}
	return false;
}



Array.prototype.inArray = function (value,type)
{
	if(typeof type =="undefined" || type==true){
	    for (var i=0; i < this.length; i++)
		{   
	        if (this[i] === value)
			{
	            return true;
	        }
	    }
	}
	else{
		for (var i=0; i < this.length; i++)
		{   
	        if (this[i] == value)
			{
	            return true;
	        }
	    }
	}
    return false;
}
Array.prototype.in_array = Array.prototype.inArray; //alias only


function getFormData(formid,getdisabled,exception) {
    if (typeof exception=='undefined')exception=new Array('dummy');
    if (typeof getdisabled=='undefined')getdisabled=true;//viszi azt is, ami disabled!!!
	var postvars='';
	formobj=getObjfromIdorObj(formid);
	formElements = formobj.elements;
	if (formElements) {
    	for (i = 0; i < formElements.length; i++) {
            if (
    			( typeof exception=='undefined' || !exception.inArray(formElements[i].name) ) &&
    			((formElements[i].disabled==false) || (getdisabled==true && formElements[i].disabled==true))
    		) {
    			switch(formElements[i].type) {
    				case "checkbox":
    				case "radio":
    					if (formElements[i].checked) {
    						postvars += (postvars=='' ? '' : '&') + formElements[i].name + '=' + formElements[i].value;
    					}
    				break;
    				case "select-multiple":
  				        if (formElements[i].name.match(/\[\]$/)) {//multiple select, able to send all selected items
      				        var items=formElements[i].options;
      				        for (var it=0;it<items.length;it++) {
                                if (items[it].selected==true) {
                					postvars += (postvars=='' ? '' : '&') + formElements[i].name.replace(/\[\]$/,"["+it+"]") + '=' + items[it].value;
                				}
                            }
                        } else {//multiple select, but only can send last option, bacause of "wrong" name
        					postvars += (postvars=='' ? '' : '&') + formElements[i].name + '=' + formElements[i].value;
                        }
    				break;
    				default:
    					postvars += (postvars=='' ? '' : '&') + formElements[i].name + '=' + formElements[i].value;
    				break;
    			}
            }
    	}
    } else alert('nincs ilyen form: '+formid);
	return postvars;
}

function clearFormData(formobj,exception) {
    if (typeof exception=='undefined')exception=new Array('dummy');
	var postvars='';
	formobj=getObjfromIdorObj(formobj);
	formElements = formobj.elements;
	for (i = 0; i < formElements.length; i++) {
        if (
			( typeof exception=='undefined' || !exception.inArray(formElements[i].name) ) &&
			formElements[i].disabled==false
		) {
			switch(formElements[i].type) {
				case "checkbox":
				case "radio":
					if (formElements[i].checked) {
						formElements[i].checked=false;
					}
				break;
				
				default:
					formElements[i].value="";
				break;
			}
        }
	}
}


/**
 * Selects All the options of a <select>
 */
function selectAllOption(selectObj){
	selectObj=getObjfromIdorObj(selectObj);
	if(selectObj.tagName!='SELECT'){
        var Errors = new Array();
        Errors[0]=new Array();
        Errors[0]['text']="selectObj === "+selectObj.tagName;
        FormDisplayFormError(Errors);
	    return false;
	 }
	for (i=0;i<selectObj.options.length;i++) {
		selectObj.options[i].selected=true;
	}
	return true;
}

/**
 * Moves an option between the <select>-s
 */
function moveOptionFromTo(from,to){
	  parentNode=getObjfromIdorObj(from);
	  toObj=getObjfromIdorObj(to);
	  var childs=parentNode.childNodes;
	  var end=new Number(childs.length);
	  if (parentNode.type=='select-one') {
          if (parentNode.options.length) {
              var thischild=parentNode.options[parentNode.selectedIndex];
    		  toObj.appendChild(thischild);
    		  toObj.appendChild(document.createTextNode('\n'));
          }
      } else {
    	  for(i=0;i<end;i++){
    	  	if(typeof childs[i]!="undefined")
    	  	if(childs[i] && childs[i].selected){
    			childs[i].selected=false;
    			toObj.appendChild(childs[i]);
    			toObj.appendChild(document.createTextNode('\n'));
    	  	}
    	  }
      }
}
/**
 * Check Select's options Length
 */
function checkSelect(objfrom,objto,len){
	objto=getObjfromIdorObj(objto);
	objfrom=getObjfromIdorObj(objfrom);
	j=objto.options.length;
	if(objfrom.type=='select-multiple'){
		for(i=0;i<objfrom.options.length;i++){
			if(objfrom.options[i].selected) j++;
			if(j>len){
				objfrom.options[i].selected=false;
			}
		}
	}
	if (objto.type=='select-one' || objto.type=='select-multiple') {
		if(objto.options.length<len+1){
			return true;
		}else{
			return false;			
		}
	}
	else return false;
}

/**
 * dontshow elements (used for selects) during popup
 */
function showHideElementsInObj(type,rootObj,setto)
{
    if (!rootObj) rootObj=document.body;
    rootObj=getObjfromIdorObj(rootObj);
    var elems = rootObj.getElementsByTagName(type);
    for(var i=0; i<elems.length; i++)
    {
        if (setto && typeof setto!='undefined') elems[i].style.visibility==setto;
        else elems[i].style.visibility = ((elems[i].style.visibility=='hidden') ? 'visible' : 'hidden');
    }
}




function showObj(obj,show)
{
    if (typeof show=='undefined') show='';
    closeObj(obj,show);
}
function isShownObj(obj) {
    var obj=getObjfromIdorObj(obj);
    if (!obj)return obj;
    return obj.style.display!='none';
}

function closeObj(obj,show)
{
    if (typeof show=='undefined') show='none';
    var obj=getObjfromIdorObj(obj);
    if (obj)
    {
        //if (obj.className=='popupdiv')//TODO FIXME:ha popup divről van szó,akkor ki kapcsolni minden SELECT-et!
        obj.style.display=show;
    }
}
function showObj2(id){
    showObj();
}

function hideObj(id){
    closeObj(id);
}



//CLASS concatenating, and original/base
function setClass(obj,classname) {
	obj=getObjfromIdorObj(obj);
	if (obj && classname) obj.className=classname;
}
function setClassOld(id,to,time)
{
	elem=getObjfromIdorObj(id);
	if (id && elem)
	{
        if (!elem.origClassName)elem.origClassName=(typeof to!="undefined")?to:elem.className
	}
}
function setClassBaseRoot(id) {
	elem=getObjfromIdorObj(id);
	if (id && elem)
	{
		elem.className=elem.origClassName?elem.origClassName:getClassBaseRoot(elem.className);
		inputClassBeingErrored[elem.name]=null;
	}
}
function getClassBaseRoot(str) {
	if (typeof str!="string") return null;
        var dash=str.indexOf('-');
        if (dash!=-1)
        {
            str=str.substring(0, dash);
        }
        else
        {
            str=str;
        }
		return str;
}
function setClass2Something(id,setto,checkifclasswereset) {
	elem=getObjfromIdorObj(id);
	if (id && elem)
	{
		if (checkifclasswereset==1 && elem.className!=getClassBaseRoot(elem.className))return false;
		else if (checkifclasswereset==-1 && elem.className!=getClassBaseRoot(elem.className))setClassBaseRoot(elem);
		else elem.className=getClass2Something(elem.className,setto);
	}
}
function getClass2Something(str,setto) {
	if (setto=="" || typeof setto=="undefined")return getClassBaseRoot(str);
	else return getClassBaseRoot(str)+"-"+setto;
}

function setClassHover(id) {
	elem=getObjfromIdorObj(id);
	if (id && elem)
	{
		elem.className=getClassHover(elem.className);
	}
}
function getClassHover(str) {
	return getClassBaseRoot(str)+"-hover";
}

function setClassDisabled(id,disabled) {
	elem=getObjfromIdorObj(id);
	if (id && elem)
	{
		elem.className=getClassDisabled(elem.className,disabled);
	}
}
function getClassDisabled(str,disabled) {
	if (disabled=="switchingback" && str.indexOf("disabled")!=-1)return getClassBaseRoot(str);
	else if (disabled=="switchingback" && str.indexOf("disabled")==-1)return getClassBaseRoot(str);
	else if (disabled==false)return getClassBaseRoot(str);
	else return getClassBaseRoot(str)+"-disabled";
}

var inputClassBeingErrored=new Array();
function setClassError(id) {
	//FIXME: make an Array with all the current *-error CSS classes, and refer from isitValidating()
	elem=getObjfromIdorObj(id);
	if (id && elem)
	{
		inputClassBeingErrored[elem.name]=true;
		elem.className=getClassError(elem.className);
	}
}
function isitClassError(obj) {
	obj=getObjfromIdorObj(obj);
	if (!obj)return false;
	return (inputClassBeingErrored[obj.name]===true)?true:false;
}
function getClassError(str) {
	return getClassBaseRoot(str)+"-error";
}

function showoverlib(overlibtext){
	if(overlibtext!='') return overlib(overlibtext,BGCOLOR,"#138988",FGCOLOR,'#EAF3F3',VAUTO);
}

function setHighlighted(obj,setval){
	if(typeof obj.oldclassName=="undefined" || obj.oldclassName==""){
		obj.oldclassName=obj.className;
		obj.className=setval;
	}else{
		obj.className=obj.oldclassName;
		obj.oldclassName="";
	}
}


function openNewWindow(src,target,prop)
{
    //return 
    window.open(src,target, (typeof prop!="undefined") ? prop : 'statusbar=yes, menubar=yes, scrollbars=yes, status=yes, location=yes, toolbar=yes, resizable=yes, height='+getMaxHeight(true)+',width='+getMaxWidth(true)+',left=0,top=0');
}

function CloseDiv(evt)
{
	document.all?div=evt.srcElement:div=evt.currentTarget;
	div.style.display='none';
}


function IExploreTimeHack(evalstr)
{
    setTimeout(evalstr,1);
	return true;
}


function showBlockForLabel(prefix,active,postfix)
{
    for (var i=0;i<10;i++) {
        var obj=getObjfromIdorObj(prefix+''+i+''+(typeof postfix!='undefined'?postfix:''));
        if (obj) {
            if (i==active)obj.style.display='block';
            else obj.style.display='none';
        }
    }
	return true;
}

function removeAllChildFromObj(id)
{
    var clearobj=getObjfromIdorObj(id);
    if (clearobj) {
        switch(clearobj.tagName) {
            case "SELECT":
                var items=clearobj.options;
            break;

            default:
                var items=clearobj.childNodes;
//                var items=clearobj.elements;
            break;
        }
        var len=items.length;
        while(items.length) {
            clearobj.removeChild(items[0]);
        }
    }
}

function insertAtCursor(myField, myValue) {
    //IE support
    if (document.selection) {
        myField.focus();
        sel = document.selection.createRange();
        sel.text = myValue;
    }
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
        var startPos = myField.selectionStart;
        var endPos = myField.selectionEnd;
        myField.value = myField.value.substring(0, startPos)
        + myValue
        + myField.value.substring(endPos, myField.value.length);
    } else {
        myField.value += myValue;
    }
}

function getDateString(date) {
    return (
        date.getFullYear()+"-"+
        str_pad(date.getMonth()+1,2,'0','STR_PAD_LEFT') + "-"+
        str_pad(date.getDate(),2,'0','STR_PAD_LEFT') + " " +
        str_pad(date.getHours(),2,'0','STR_PAD_LEFT') + ":"+
        str_pad(date.getMinutes(),2,'0','STR_PAD_LEFT') + ":"+
        str_pad(date.getSeconds(),2,'0','STR_PAD_LEFT')
    );

}
function parseDateString(str) {
    str=str.replace(/ /g,"-").replace(/:/g,"-");
    var array=str.split("-");
    return array;
}

function getHourString(millisec) {
    millisec=millisec/1000;
    var hours=Math.floor(millisec/60/60);
    millisec-=hours*60*60
    var minutes=Math.floor(millisec/60);
    millisec-=minutes*60
    var secs=Math.floor(millisec);
    return (
        hours+":"+
        str_pad(minutes,2,'0','STR_PAD_LEFT') + ":"+
        str_pad(secs,2,'0','STR_PAD_LEFT')
    );
}


function setFocus(obj,sureagain) {
	objOk=getObjfromIdorObj(obj);
	if (objOk && objOk.focus && objOk.disabled==false)
	{
		objOk.focus();
		return true;
	}
	return false;
}



function checkNonEmptyFields(array,errors,haserror) {
    if (typeof errors=="undefined")errors = new Array();
    if (typeof haserror=="undefined")haserror = false;
    if (array && array.length) {
        for (var i=0;i<array.length;i++) {
            if (
                (array[i].type=='radio' || (array[i].type!='radio' && getObjfromIdorObj(array[i].id))) &&
                (typeof array[i].ifchecked=="undefined" || isCheckedObj(array[i].ifchecked))
            ) {
                var thiserror = false;
                switch (array[i].type) {
                    case "tbody":
                        var tbody=getObjfromIdorObj(array[i].id);
                        var rows=tbody.childNodes;
                        var isrealrow=0;
                        for (var r=0;r<rows.length;r++) {
                            isrealrow+=rows[r].id?1:0;
                        }
                        if (!isrealrow) {
                            thiserror = haserror = true;
                            errors.push(createErrorItem(array[i].msg, false ));
                        } else if(array[i].tbodyinputmsg) {
                            var inputs=tbody.getElementsByTagName('input');
                            for (var ii=0;ii<inputs.length;ii++) {
                                if (inputs[ii].type=='text' && !getValue(inputs[ii])) {
                                    haserror = true;
                                    setClass2Something(inputs[ii].id,'empty');
                                    var thisid=inputs[ii].id?inputs[ii].id:false;
                                    if (!thisid && inputs[ii].name)thisid=inputs[ii].name;
                                    errors.push(createErrorItem(array[i].tbodyinputmsg, thisid ));
                                }
                            }
                        }
                    break;

                    case "select":
                        var selectobj=getObjfromIdorObj(array[i].id);
                        var option=selectobj.options;
                        if (!option.length) {
                            thiserror = haserror = true;
                            errors.push(createErrorItem(array[i].msg, false ));
                        }
                    break;

                    case "radio":
                        var radios=document.getElementsByName(array[i].id);
                        var ischecked=0;
                        for (var r=0;r<radios.length;r++) {
                            ischecked+=isCheckedObj(radios[r]);
                        }
                        if (!ischecked) {
                            thiserror = haserror = true;
                            errors.push(createErrorItem(array[i].msg, false ));
                        }
                    break;
    
                    default:
                        if (!getValue(array[i].id)) {
                            thiserror = haserror = true;
                            errors.push(createErrorItem(array[i].msg, array[i].id ));
                        } else if (typeof array[i].syntax!="undefined") {
                            if(!getValue(array[i].id).match(array[i].syntax)) {
                                thiserror = haserror = true;
                                errors.push(createErrorItem((typeof array[i].sytaxmsg=="undefined"?array[i].msg:array[i].sytaxmsg), array[i].id ));
                            }
                        }
                    break;
                }
            }
            if (thiserror)setClass2Something(array[i].id,'empty');
            else setClassBaseRoot(array[i].id);
        }
        if(haserror) {
            return errors;
        } else {
            return true;
        }
    }
}


function createErrorItem(text,fieldid){
    return text;
}

