﻿/*
*    xSys
*/

var xSys = new Object;


// Get browser info
xSys._InitBrowserInfo = function()
{
	xSys.BrowserInfo = new Object() ;

	var sAgent = navigator.userAgent.toLowerCase() ;

	xSys.BrowserInfo.IsOpera		= ( sAgent.indexOf("opera") != -1 ) ;
	xSys.BrowserInfo.IsIE			= !xSys.BrowserInfo.IsOpera && ( sAgent.indexOf("msie") != -1 ) ;
	xSys.BrowserInfo.IsGecko		= !xSys.BrowserInfo.IsIE && !xSys.BrowserInfo.IsOpera;
	xSys.BrowserInfo.IsSafari		= ( sAgent.indexOf("safari") != -1 ) ;
	xSys.BrowserInfo.IsNetscape	= ( sAgent.indexOf("netscape") != -1 ) ;

	if ( xSys.BrowserInfo.IsIE )
	{
    var rv = -1;
    var ua = navigator.userAgent;
    var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
    if (re.exec(ua) != null)
      rv = parseFloat( RegExp.$1 );

		xSys.BrowserInfo.IEVer = rv;
	}
}

xSys._InitBrowserInfo();

// Event object
xSys.Events = new Object;
xSys.Events.RegisteredEvents = new Object() ;

xSys.Events.AttachEvent = function( eventName, functionPointer )
{
//	if ( ! this.RegisteredEvents ) this.RegisteredEvents = new Object() ;
	if ( ! this.RegisteredEvents[ eventName ] ) this.RegisteredEvents[ eventName ] = new Array() ;

	this.RegisteredEvents[ eventName ][ this.RegisteredEvents[ eventName ].length ] = functionPointer ;
}

xSys.Events.FireEvent = function( eventName, params )
{
	var bReturnValue = true ;

	var oCalls = this.RegisteredEvents[ eventName ] ;
	if ( oCalls )
	{
		for ( var i = 0 ; i < oCalls.length ; i++ )
			bReturnValue = ( oCalls[ i ]( this.Owner, params ) && bReturnValue ) ;
	}

	return bReturnValue ;
}


// Init DOMContentLoaded event
xSys._isDOMContentLoadedHandlerFired = false;
xSys._OnDOMContentLoadedHandler = function()
{
	if ( ! xSys._isDOMContentLoadedHandlerFired )
		xSys.Events.FireEvent('DOMContentLoaded');
	xSys._isDOMContentLoadedHandlerFired = true;
}

xSys._InitOnDOMContentLoadedHandler = function()
{
	if ( xSys.BrowserInfo.IsIE )
		document.write('<script type="text/javascript" defer="defer" src="scripts/xsys._ondomload.js"></script>')
	else if ( document.addEventListener && ! xSys.BrowserInfo.IsOpera && ! xSys.BrowserInfo.IsSafari )
		document.addEventListener("DOMContentLoaded", xSys._OnDOMContentLoadedHandler, null);
	else
	{
		var root = window.addEventListener || window.attachEvent ? window : document.addEventListener ? document : null;
		if (root)
		{
			if (root.addEventListener) root.addEventListener("load", xSys._OnDOMContentLoadedHandler, false);
			else if (root.attachEvent) root.attachEvent("onload", xSys._OnDOMContentLoadedHandler);
		}
		else
			window.onload = xSys._OnDOMContentLoadedHandler;
	}
}

xSys._InitOnDOMContentLoadedHandler();


xSys.LoadScript = function( sname )
{
	document.write('<script type="text/javascript" src="' + sname + '"></script>')
}

xSys.LoadService = function( srvname, params )
{
	if ( !this.LoadedServices )
		xSys.LoadedServices = new Object;
	if ( !this.LoadedServices[srvname] )
	{
		xSys.LoadedServices[srvname] = new Object;
		if ( params )
			xSys.LoadedServices[srvname].Parameters = params;
		xSys.LoadScript( "scripts/xsys." + srvname.toLowerCase() + ".js" );
	}
	return true;
}


