/////////////////////////////////////////
// rel. 1.11 - 28/12/2004 - by R. Poli //
/////////////////////////////////////////

function CrossBrowserManager()
{
	this.msie = document.all != null;
	this.ns7  = !this.msie && document.getElementById != null;
	this.ns4  = !this.ns7  && document.layers         != null;

	this.isMSIE = function() { return this.msie; }
	this.isNS7  = function() { return this.ns7;  }
	this.isNS4  = function() { return this.ns4;  }
	this.isNS   = function() { return this.ns4 || this.ns7; }
}

//--------------------------------------------------------------------------------------//

CrossBrowserManager.prototype.removeCssClass = function(oElement, sClassName)
{
    if(!(oElement && oElement.className))
        return;

    var oCls = oElement.className.split(" ");
    var oAr = new Array();
    for(var i = oCls.length; i > 0;)
    {
        if(oCls[--i] != sClassName)
            oAr[oAr.length] = oCls[i];
    }
    
    oElement.className = oAr.join(" ");
}

CrossBrowserManager.prototype.addCssClass = function(oElement, sClassName)
{
    this.removeCssClass(oElement, sClassName);
    oElement.className += " " + sClassName;
}


///////////////////////////////////////////////////////////////

CrossBrowserManager.prototype.addEvent = function(oElement, sEventName, oProcedure)
{
    if(     oElement.attachEvent) 		oElement.attachEvent("on" + sEventName, oProcedure);		// MSIE
    else if(oElement.addEventListener) 	oElement.addEventListener(sEventName, oProcedure, true);	// Gecko / W3C
    else        						oElement["on" + sEventName] = oProcedure;
}


CrossBrowserManager.prototype.removeEvent = function(oElement, sEventName, oProcedure)
{
    if(     oElement.detachEvent) 			oElement.detachEvent("on" + sEventName, oProcedure); 		// MSIE
    else if(oElement.removeEventListener) 	oElement.removeEventListener(sEventName, oProcedure, true); // Gecko / W3C
    else        							oElement["on" + sEventName] = null;
}


CrossBrowserManager.prototype.getElement = function(oEvent)
{
    if(this.msie)	return window.event.srcElement;
    else			return oEvent.currentTarget;
}

CrossBrowserManager.prototype.getTargetElement = function(oEvent)
{
	if(this.msie)	return window.event.srcElement;
    else			return oEvent.target;
}

CrossBrowserManager.prototype.stopEvent = function(oEvent)
{
    oEvent || (oEvent = window.event);
    if(this.msie)
    {
        oEvent.cancelBubble = true;
        oEvent.returnValue = false;
    }
    else
    {
        oEvent.preventDefault();
        oEvent.stopPropagation();
    }

    return false;
}

CrossBrowserManager.prototype.fireEvent = function(oElement, sEventName)
{
	var bResult;

	if(document.createEventObject)
	{
		var oEvent = document.createEventObject();
		bResult = oElement.fireEvent("on" + sEventName, oEvent)
	}
	else
	{
		var oEvent = document.createEvent("MouseEvents");
		oEvent.initEvent(sEventName, true, false);
		bResult = oElement.dispatchEvent(oEvent);
	}
	
	return bResult;
}

CrossBrowserManager.prototype.createElement = function(sType, oParent, bUseNameSpace)
{
    var oElement = null;

    if(document.createElementNS && bUseNameSpace == true)
    {
        // use the XHTML namespace; IE won't normally get here unless
        // _they_ "fix" the DOM2 implementation.
        oElement = document.createElementNS("http://www.w3.org/1999/xhtml", sType);
    }
    else
    {
        oElement = document.createElement(sType);
    }
    
    if(typeof oParent != "undefined")
        oParent.appendChild(oElement);

    return oElement;
}


///////////////////////////////////////////////////////////////

var CrossBrowser = new CrossBrowserManager();

///////////////////////////////////////////////////////////////

