var Daon;

if (!Daon) 
{
	Daon = {};
}

if (!Daon.System)
{
    Daon.System = {};
}

Daon.System.submitForm = function(frm, action, vals)
{
	var formobj = Daon.System.getElement(frm);
	var act = formobj.frmact;
	if (act)
	{
		act.value = action;
	}
	if (vals)
	{
	    for(var name in vals)
	    {
	        var input = document.createElement("input");
	        input.type = 'hidden';
	        input.name = name;
	        input.value = vals[name];
	        formobj.appendChild(input);
	    }
	}
	formobj.submit();
}

Daon.System.hasClassName = function(ele, className)
{
	if (!ele || !className || !ele.className || ele.className.search(new RegExp("\\b" + className + "\\b")) == -1)
	{
		return false;
	}
	return true;
};

Daon.System.addClassName = function(ele, className)
{
	if (!ele || !className || Daon.System.hasClassName(ele, className))
		return;
	ele.className += (ele.className ? " " : "") + className;
};

Daon.System.removeClassName = function(ele, className)
{
	if (!ele || !className || !Daon.System.hasClassName(ele, className))
		return;
	ele.className = ele.className.replace(new RegExp("\\s*\\b" + className + "\\b", "g"), "");
};

Daon.System.getElement = function(ele)
{
	if (ele && typeof ele == "string")
		return document.getElementById(ele);
	return ele;
};


Daon.System.addEventListener = function(element, eventType, handler, capture)
{
	try
	{
		if (element.addEventListener)
		{
			element.addEventListener(eventType, handler, capture);
		}
		else if (element.attachEvent)
		{
			element.attachEvent('on' + eventType, handler);
		}
	}
	catch (e) {}
};

Daon.System.offset = function(e)
{
    var offsetslt = function(e)
    {
        var result = {};
        if (e.offsetParent)
        {
            result = offsetslt(e.offsetParent);
        }
        else
        {
            result.left = 0;
            result.top = 0;
        }
        result.left += e.offsetLeft;
        result.top += e.offsetTop;
        return result;
    }

    var result = offsetslt(e);
    result.width = e.offsetWidth;
    result.height = e.offsetHeight;
    result.right = result.left + result.width;
    result.bottom = result.top + result.height;
    return result;
}

Daon.System.offsets = function(ea)
{
    var result = Daon.System.offset(ea[0]);
    for(var i = 1 ; i < ea.length; i++)
    {
        var ir = Daon.System.offset(ea[i]);
        if (result.left > ir.left) result.left = ir.left;
        if (result.top > ir.top) result.top = ir.top;
        if (result.rigth < ir.rigth) result.rigth = ir.rigth;
        if (result.bottom < ir.bottom) result.bottom = ir.bottom;
    }
    result.width = result.right - result.left;
    result.height = result.bottom - result.top;
    return result;
}


// bubbledTextEvent for Menu Bar
// identify bubbled up text events in Safari so we can ignore them
Daon.System.bubbledTextEvent = function()
{
	return (navigator.vendor == 'Apple Computer, Inc.' && (event.target == event.relatedTarget.parentNode || (event.eventPhase == 3 && event.target.parentNode == event.relatedTarget)));
};
