Novasol = window.Novasol || {};

(function(undefined){

	var urls=[], readyfns = [], loaded=false;

	function register() {
		Array.prototype.push.apply(urls, arguments);
	}

	function load() {
		if(loaded) {return;}
		loaded=true;
		if(urls.length) {
			jQuery(function(){
				for(var i=0, script, url; url = urls[i]; i++) {
					script = document.createElement('SCRIPT')
					script.setAttribute('type','text/javascript');
					script.setAttribute('src',url);
					document.body.appendChild(script);
				}
			});
		}
	};

	function runReadyFunctions() {
		for(var i=0,fn;fn=readyfns[i];i++) {
			fn();
		}

	}


	function onReadyStateChange() {
		if ( document.readyState === "complete" ) {
			document.onreadystatechange = null;
			runReadyFunctions();
		}
	}

	function onFirefox3DOMContentLoaded() {
		if ( document.readyState !== "complete" ) {
			setTimeout(onFirefox3DOMContentLoaded,50);
		}
		else {
			runReadyFunctions();
		}
	}

	Novasol.Lazyload = {
		register: register,
		load: load
	};

	Novasol.ready = function(fn) {
		if(typeof fn === 'function') {
			readyfns.push(fn);
		}
	}

	document.onreadystatechange = onReadyStateChange;
	if(/Firefox\/3|Mobile\/8[^ ]* Safari/.test(navigator.userAgent)) {
		window.addEventListener("DOMContentLoaded", onFirefox3DOMContentLoaded, false);
	}
})();
