var jsaf = {}

jsaf.version = "0.2";
jsaf.uriBase = _getURIBase();

jsaf.start = _initPage;
jsaf.startFunc = null;

importNameSpace("system.jquery")


//TODO: verificare l'inclusione unica di script e namespace

//Include uno script identificato tramite l'URL
//Lo script deve contenere istruzioni operative e non dichiarazioni di variabili o funzioni
function includeScript(url) {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = url;
  document.getElementsByTagName('head')[0].appendChild(script);  
}


//Include uno script identificato tramite namespace
function importNameSpace(namespace) {
  var script = document.createElement('script');
  script.type = 'text/javascript';
  script.src = jsaf.uriBase + namespace.replace(/\./g,"/") + "/default.js";
  document.getElementsByTagName('head')[0].appendChild(script);
}

function _getURIBase() {
  var scripts = document.getElementsByTagName("script");
  var re_jsaf=/(jsaf)\.js$/i;
  var result = "";

  for(var i=0; i<scripts.length;i++){
    var src=scripts[i].getAttribute("src");
    if(re_jsaf.test(src)){
      result=src.replace(re_jsaf,"");
      break;
    }
  }
  return(result);
}

function DOMElement(selector) {
  var DOMElem = $("#"+selector).get()
  
  if (DOMElem) {
     return DOMElem[0]
  } else {
     return null
  }
}

function DOMElements(selector) {
  return DOMElems = $(selector).get()
}


//--- Funzioni per la corretta inizializzazione della pagina
//--- Lanciano la funzione specificata al caricamento della pagina
//--- solo dopo che tutti gli script sono stati caricati
function _initPage(f) {

//$(document).ready(function() {
//	document.body.style.visibility = "hidden"
//	_runAfterScriptsLoaded(f)
//	document.body.style.visibility = "visible"
//	})
	
window.onload = function() {
	document.body.style.visibility = "hidden"
	_runAfterScriptsLoaded(f)
	document.body.style.visibility = "visible"
	}
}

function _runAfterScriptsLoaded(f) {
var isIE = document.all

if (isIE) {
	if (f != null) {
		jsaf.startFunc = f
	} else {
		f = jsaf.startFunc
	}
	if (_scriptsLoaded()) {
		f()
	} else {
		setTimeout("_runAfterScriptsLoaded()", 100)
	}
} else {
	f()
}
}

function _scriptsLoaded() {
	var scripts = document.getElementsByTagName('script')
	var scriptToLoad = scripts.length
	var scriptLoaded = 0
	//alert(scriptToLoad)
	for (i=0;i<scriptToLoad;i++) {
		if ((scripts[i].readyState == "complete") || (scripts[i].readyState == "loaded")) {
			scriptLoaded = scriptLoaded +1
		}
	}
	return (scriptLoaded == scriptToLoad)
}

