//tells you whether you got an obj., or only the id of the obj.; and gives the obj reference
function getObjfromIdorObj(obj)
{
	if (typeof obj=="object")return obj;
	else if (typeof obj=="string" && document.getElementById(obj))return document.getElementById(obj);
	return false;
}
function getId(doc, id)
{
    return doc.getElementById(id);
}


//set, get, check INPUT items
function getValue(obj)
{
    var obj=getObjfromIdorObj(obj);
    if (obj)return obj.value;
    return false;
}
function setValue(id,val)
{
    var obj=getObjfromIdorObj(id);
    //if (!obj)alert("setValue - Nics ilyen objektum: "+id,1);
    if (obj.tagName=="INPUT"){setInputValue(obj,val);}
    else {setInnerHTML(obj,val);}
}
function setInnerHTML(obj,val)
{
    var obj=getObjfromIdorObj(obj);
    if (obj) obj.innerHTML = (val!="null" && val) ? val : '&nbsp;';
}
function setInputValue(obj,val)
{
    var obj=getObjfromIdorObj(obj);
    if (obj)obj.value=(val!="null")?val:'';
}
function checkInObject(id,check)
{
    var obj=getObjfromIdorObj(id);
    if (obj)
    {
        var elems=obj.getElementsByTagName('INPUT');
        if (elems)
        {
            for (var i=0;i<elems.length;i++)
            {
                if (elems[i].type=='checkbox') elems[i].checked = (check=='togle' ? (elems[i].checked?false:true) : check);
            }
        }
    }
	return true;
}




function enableDivContents(obj)
{
    disableDivContents(obj,false);
}
function disableDivContents(obj,value)
{
    var obj=getObjfromIdorObj(obj);
    value=(typeof value!='undefined')?value:true;
    if (obj)
    {
        var inputs=obj.getElementsByTagName('input');
        if (inputs)
        {
            for (var i=0;i<inputs.length;i++)
            {
                disable(inputs[i],value);//set disabled on default
            }
        }
        setClassDisabled(obj,value);
        obj.style.display=value?'none':'block';
    }
}
function disable(id, value)
{
    elem = getObjfromIdorObj(id);
    if (elem)
    {
    	elem.disabled = value;
    	setClassDisabled(id,value);
    }
}

//CLASS concatenating, and original/base
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;
		elem.className=getClass2Something(elem.className,setto);
	}
}
function getClass2Something(str,setto) {
	if (setto=="" || typeof setto=="undefined")return getClassBaseRoot(str);
	else return getClassBaseRoot(str)+"-"+setto;
}

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 getElementByTagNameAndName(root, tag_name, re_name)
{
    var list = new Array();

    if (root)
    {
	re = new RegExp(re_name);
	tags = root.getElementsByTagName(tag_name);
	for (var i=0; i < tags.length; i++)
	{
	    if (re.test(tags[i].name))
	    {
		list.push(tags[i]);
	    }
	}

    }
    return list;
}










function openNewWindow(src,target,prop)
{
    return window.open(src,target, (typeof prop!="undefined") ? prop : '' );
}





/*custom javascript DOM and Object handling*/
function objEqual(objA,objB) {
	if (typeof objA=="object" && typeof objB=="object" && objA===objB) {
		return true;
	}
	return false;
}

function makeRegExpFromString(str) {
	str=str.replace(/[\d]/g,'c?\\d+');
	str=str.replace(/\[/g,'\\[');
	str=str.replace(/\]/g,'\\]');
	return new RegExp("^"+str+"$");
}
Array.prototype.inArray = function (value)
{
    for (var i=0; i < this.length; i++)
	{
        if (this[i] === value)
		{
            return true;
        }
    }
    return false;
}
