/*
Script: import JS a async javascript loader with ability to provide parallel loads and call back with bindings
License:
	GPLv3  (http://www.gnu.org/licenses/gpl-3.0.txt)
Copyright:
	MaXPert [Zohaib Sibt-e-Hassan] (http://www.gnu.org/licenses/gpl-3.0.txt)
*/
var importJS = function (src, callback, callbackBind, callbackArgs, tarTag)
{
	tarTag = tarTag || 'head';
	
	if( typeof src == 'object' && src.length ){
		var totalDone = 0;
		var loadedCallback = function (){
			if( ++totalDone >= src.length ){
				callback.apply(this, arguments);
				loadedCallBack = null;
			}
		};
		
		for( var i = 0; i < src.length - 1; i++){
			importJS(src[i], loadedCallback, callbackBind, callbackArgs, tarTag);
		}
		importJS( src[ src.length - 1 ], loadedCallback, callbackBind, callbackArgs, tarTag);
		return ;
	}
	
	var tag= document.getElementsByTagName(tarTag)[0];
	var script= document.createElement('script');
	script.type = 'text/javascript';
	script.src = src;
	
	if(callback)
	{
		script.onload = script.onreadystatechange = function () {
			if (script.readyState && script.readyState!=="complete" && script.readyState!=="loaded" && script.readyState != 4) return;
			
			scope = callbackBind || document;
			args = callbackArgs || [];
			
			if( typeof args !== 'object')
				args = [args];
				
			setTimeout(function(){ callback.apply( scope, args ); }, 1);
			
			script.onload = script.onreadystatechange = null;
		}
	}
	
	tag.appendChild(script);
};