var Daon;

if (!Daon) 
{
	Daon = {};
}

Daon.Rollover = function(listenelements)
{
	var args = Daon.Rollover.arguments;
	this.elements = new Array();
	this.actions = new Array();
	this.originals = new Array();
	for(var i = 0; i < args.length; i++)
	{
		this.init(args[i]);
	}
};

Daon.Rollover.prototype.init = function(element)
{
	var listener = Daon.System.getElement(element);

	var isie = (typeof document.all != 'undefined' && typeof window.opera == 'undefined' && navigator.vendor != 'KDE');
	if(typeof document.getElementById == 'undefined' || (navigator.vendor == 'Apple Computer, Inc.' && typeof window.XMLHttpRequest == 'undefined') || (isie && typeof document.uniqueID == 'undefined'))
	{
		// bail on older unsupported browsers
		return;
	}

	// need to save this for scope further down
	var self = this;

	Daon.System.addEventListener(listener, 'mouseover', function(e)
	{
	    Daon.Rollover.hoverState(self.actions, self.originals);
	}, false);

	Daon.System.addEventListener(listener, 'mouseout', function(e)
	{
	    Daon.Rollover.outState(self.actions, self.originals);
	}, false);
};

Daon.Rollover.Simple = function(element, rolloversrc, preload)
{
	var listener = Daon.System.getElement(element);

	var self = this;
	
    if (preload)
    {
	    var rollover = new Image;
	    rollover.src = rolloversrc;
	}

	var acts = new Array();
	acts[element] = { type:0, value:rolloversrc };
	var orig = Array();

	Daon.System.addEventListener(listener, 'mouseover', function(e)
	{
	    self.hoverState(acts, orig);
	}, false);

	Daon.System.addEventListener(listener, 'mouseout', function(e)
	{
	    self.outState(acts, orig);
	}, false);
}

Daon.Rollover.prototype.addImage = function(element, rolloversrc, preload)
{
    if (preload)
    {
	    var rollover = new Image;
	    rollover.src = rolloversrc;
	}
	this.actions[element] = { type:0, value:rolloversrc };
}

// showSubmenu for Menu Bar
// set the proper CSS class on this menu to show it
Daon.Rollover.hoverState = function(acts, orig)
{
    if (acts)
    {
        for(var act in acts)
        {
            var element = Daon.System.getElement(act);
            if (acts[act].type == 0)
            {
                orig[act] = element.src;
                element.src = acts[act].value;
            }
            else if(acts[act].type == 1)
            {
                Daon.System.addClassName(element, acts[act].value);
            }
        }
    }
};

// hideSubmenu for Menu Bar
// remove the proper CSS class on this menu to hide it
Daon.Rollover.outState = function(acts, orig)
{
    if (acts)
    {
        for(var act in acts)
        {
            var element = Daon.System.getElement(act);
            if (acts[act].type == 0 && orig && orig[act])
            {
                element.src = orig[act];
            }
            else if(acts[act].type == 1)
            {
                Daon.System.removeClassName(element, acts[act].value);
            }
        }
    }
};
