//----------------------------------//
// The ThreeFifteen Global Namespace
//----------------------------------//

/*
	Compatible Browsers
	- Internet Explorer 5.01, 5.5, 6.0.3
	- Mozilla Firebird 0.6.1, 0.7
	- Mozilla Firefox 1.0.1, 1.5.0
	- Opera 7.10, 8.54
*/


var ThreeFifteen = {

	// @Summary	: The version of the 3fifteen JavaScript Library
	version: '2.0.0',
	
	// @Summary	: The Domain Namespace
	//			  Includes common JavaScript functionality that will be
	//			  used in UI Controls and Websites.
	Domain: {},
	
	// @Summary : The Controls Namespace
	//			  Includes controls like: TreeView, Calendar, Slider,
	//			  Rotator, Progressbar, etc.
	Control: {},
	
	// @Summary	: Returns the namespace specified and creates it if it doesn't exist
	// @Param	: String representation of the desired namespace.
    // @Examples: ThreeFifteen.namespace('property.package');
    //			  ThreeFifteen.namespace('ThreeFifteen.property.package');
    //
    //			  Either of the above would create ThreeFifteen.property, then
    //			  ThreeFifteen.property.package
	namespace: function(nameSpace) {
        if (!nameSpace || !nameSpace.length) {
            return null;
        }

        var levels = nameSpace.split('.');

        var currentNS = ThreeFifteen;

        // ThreeFifteen is implied, so it is ignored if it is included
        for (var i=(levels[0] == 'ThreeFifteen') ? 1 : 0; i<levels.length; ++i) {
            currentNS[levels[i]] = currentNS[levels[i]] || {};
            currentNS = currentNS[levels[i]];
        }

        return currentNS;

    },

	// @Summary : Registers script tags for the domain namespaces.
	// @Param	: The file name of the script.
    registerScript: function(scriptName) {
		var path = '';
		var scriptTags = document.getElementsByTagName('script');
		var classRegEx = /ThreeFifteen\.js(\?.*)?$/;
		
		for (var i=0; i<scriptTags.length; i++) {
			if (scriptTags[i].src && scriptTags[i].src.match(classRegEx))
				path = scriptTags[i].src.replace(classRegEx,'');
		}
		
		path += 'Domain/';
		document.write('<script type="text/javascript" src="' + path + scriptName + '"></script>');
	},
	
	// @Summary : Returns a messages about the object.
	toString: function() {
		return 'JavaScript Library \nCopyright 3fifteen \nVersion: ' + this.version;
	}
};


// Register the scripts for the domain namespaces
ThreeFifteen.registerScript('Event.js');
ThreeFifteen.registerScript('String.js');
ThreeFifteen.registerScript('Browser.js');
ThreeFifteen.registerScript('Cookie.js');
ThreeFifteen.registerScript('Region.js');
ThreeFifteen.registerScript('Html.js');
ThreeFifteen.registerScript('DateTime.js');
ThreeFifteen.registerScript('Validate.js');
ThreeFifteen.registerScript('Ajax.js');

