/*
	THIS SCRIPT IS USED TO LOAD SCRIPT LIBRARIES AUTOMATICALLY
	SIMPLY INCLUDE THIS SCRIPT TAG IN YOUR HEAD:
		<script type="text/javascript" src="lib/index.js"></script>
	
	AUTOMATICALLY LOADS THE FOLLOWING LIBRARIES BY DEFAULT:
		prototype.js, lib_browser.js, lib_constant.js, lib_date.js, lib_number.js, lib_string.js, lib_encrypt.js
	
	TO LOAD ADDITIONAL SCRIPTS:
		<script type="text/javascript" src="lib/index.js?include=lib_validate,lib_form,prototype"></script>
		
	TO SPECIFY WHICH SCRIPTS TO LOAD:
		<script type="text/javascript" src="lib/index.js?load=jsonpath,prototype"></script>

*/

var myJSLoader = {
	defaultLibs: ['prototype','lib_constant','lib_browser','lib_date','lib_number','lib_string','lib_encrypt'],
	
	require: function(libraryName) {
		// inserting via DOM fails in Safari 2.0, so brute force approach
		document.write('\n<script type="text/javascript" src="'+libraryName+'"><\/script>');
	},
	
	inArray: function(array, val) {
		/* returns the first index of item if it matches val */
		var itemFound = -1;
		var n = array.length-1;
		var i;
		for(i = n; i >= 0; i--) {
			if(array[i] == val) {
				itemFound = i;
				break;
			}
		}
		return itemFound;
	},
	
	load: function() {
		var scriptElems = document.getElementsByTagName("script");
		var src;
		for(var j = scriptElems.length-1; j >= 0; j--) {
			src = scriptElems[j].src;
			if(src && src.indexOf('lib/index.js') > -1) {
				
				var path = src.replace(/index\.js(\?.*)?$/,'');
				
				var inc = src.match(/\?.*include=([\w,]*)/);
					inc = (inc ? inc[1].split(',') : []);
					
				var req = src.match(/\?.*load=([\w,]*)/);
					req = (req ? req[1].split(',') : []);
					
				if(req.length > 0) {
					this.defaultLibs = req;
				} else if(inc.length > 0) {
					for(var i = inc.length-1; i >= 0; i--) {
						//don't include it if it is already present
						if(this.inArray(this.defaultLibs, inc[i]) == -1) {
							this.defaultLibs.push(inc[i]);	
						}
					}
				}
				
				for(var i = this.defaultLibs.length-1; i >= 0; i--) {
					this.require(path + this.defaultLibs[i] + '.js');
				}
				
				return true;
			}
		}
		return false;
	}

};

myJSLoader.load();
