GBS.net = { VERSION: 1.0 };

GBS.net.getScript = function(src){

	src = GBS.net.cleanUrl(src);
	//io.log("Searching for: " + src);

	var head= document.getElementsByTagName('head')[0];
	var res = GBS.Selector.query("script", head);
	//io.log(res);
	var found = [];
	
	var q_src = "";
	for(var n=0; n<res.length; n++){
		//io.log(res[n].src);
		q_src = GBS.net.cleanUrl(res[n].src);	
		//io.log("Checking: " +q_src + " == " + src);
		if(q_src == src) found.push(res[n]);
	}
	return found;
}


GBS.net.getStylesheet = function(src){

	src = GBS.net.cleanUrl(src);
	//io.log("Searching for: " + src);

	var head= document.getElementsByTagName('head')[0];
	var res = GBS.Selector.query("link", head);
	//io.log(res);
	var found = [];
	
	var q_src = "";
	for(var n=0; n<res.length; n++){
		//io.log(res[n].src);
		q_src = GBS.net.cleanUrl(res[n].href);	
		io.log("Checking: " +q_src + " == " + src);
		if(q_src == src) found.push(res[n]);
	}
	return found;
}

GBS.net.cleanUrl = function(url){
	
	var href = window.location.href;
	var str = new String(url);
	
	if ((str.indexOf("?") != -1)) { // jump ref
		str = str.substr(0, (str.indexOf("?")));
	}
	
	if((str.indexOf(href) != -1)) { // jump ref
		str = str.substr(href.length);
	}
	
	return str;
	
}
GBS.net.removeNode = function(scr){
	
	io.log("removing script: " + scr);
	//var scr = GBS.net.getScript(src);
	//io.log(scr);	
	scr.parentNode.removeChild(scr);	
}
GBS.net.createScript = function(src, cb){
	
	var script = document.createElement("script");
	script.className = "file";
	
	script.setAttribute("type","text/javascript");
	script.setAttribute("src",src + '?' + GBS.util.randomNumber(0, 9999));
	document.getElementsByTagName('head')[0].appendChild(script);
	
	script.onload = function(){
	
		try{
			if(typeof(cb.success)=="function"){
				cb.success();
			}
		} catch(err){
			
		}
		//var file = JSdocs[i];
		io.log("loaded script: " + src);
	}	
}

GBS.net.loadScript = function(src, cb, _reload){
	
	try {
		io.log("loading script: " + src);
		
		var found = GBS.net.getScript(src);
		
		if(found.length>0){

			io.log("SCRIPT ALREADY EXISTS");
			io.log(found);
		
			if(true) { //if(confirm(src + "\n\nScript Already Loaded, reload?")){
				
				for(var n=0; n<found.length; n++){
					GBS.net.removeNode(found[n]);
				}
				GBS.net.createScript(src, cb);
			}
			
			
		} else {
		
			//io.log("DOES NOT EXIST");
			GBS.net.createScript(src, cb);
		
		
		}
	} catch(err){
		
		io.error(err);	
	}
}




GBS.net.loadStylesheet = function(src, cb){
	
	try {
		io.log("loading stylesheet: " + src);
		
		var found = GBS.net.getStylesheet(src);
		
		if(found.length>0){

			io.log("EXISTS");
			io.log(found);
		
			if(confirm(src + "\n\nStylesheet Already Loaded, reload?")){
				
				for(var n=0; n<found.length; n++){
					GBS.net.removeNode(found[n]);
				}
				GBS.net.createStylesheet(src, cb);
			}
			
			
		} else {
		
			io.log("DOES NOT EXIST");
			GBS.net.createStylesheet(src, cb);
		
		
		}
	} catch(err){
		
		io.error(err);	
	}
}

GBS.net.createStylesheet = function(src, cb){
	
	var lnk = document.createElement("link");
	lnk.className = "css";
	
	lnk.setAttribute("type","text/css");
	lnk.setAttribute("rel","stylesheet");
	lnk.setAttribute("href",src + '?' +GBS.util.randomNumber(0, 9999));
	document.getElementsByTagName('head')[0].appendChild(lnk);
	
	lnk.onload = function(){
	
		try{
			if(typeof(cb.success)=="function"){
				cb.success();
			}
		} catch(err){
			
		}
		//var file = JSdocs[i];
		io.log("loaded script: " + src);
	}	
}

GBS.net.loadScripts = function(collection, cb){
	for(var n=0; n<collection.length; n++){
	        GBS.net.loadScript(collection[n], cb);
	}
}

GBS.net.loadStylesheets = function(collection, cb){
	for(var n=0; n<collection.length; n++){
	        GBS.net.loadStylesheet(collection[n], cb);
	}
}




