/**
 * fileLoader.js version 1.0.0
 */
var FileLoader = Class.create();

FileLoader.prototype = {
  initialize: function(_fileList,_nextFunction) 
  {
    	this.fileList = _fileList;
    	this.nextFunction = _nextFunction;
    	this.loadedFile = 0;
    	this.isActif=false;
  },
  loadFiles:function()
  {
  	this.isActif=true;
  	for (var i=0;i<this.fileList.length;i++)
	{
        	var aFile = this.fileList[i];
		aFile = aFile.substring(0,aFile.indexOf(";")!=-1?aFile.indexOf(";"):aFile.length);

            var type = aFile.substring(aFile.lastIndexOf(".")+1,aFile.length);
            if (!this.existFile(aFile,type))
                this.loadSingleFile(aFile,type);
            else
                this.fileLoaded();
	}
	this.timerID = setInterval(this.areFilesLoaded.bind(this), 200);
  },
  areFilesLoaded:function()
  {
	if (this.loadedFile==this.fileList.length)
	{
		clearInterval(this.timerID);
		eval(this.nextFunction);
		this.isActif=false;
	}
  },
  cancelLoading:function()
  {
  	if (this.isActif==true)
  		clearInterval(this.timerID);
  },
  loadSingleFile:function(file,_type)
  {
  	this.eventLoad = this.fileLoaded.bindAsEventListener(this);
  	this.eventLoadIE = this.fileLoadedIE.bindAsEventListener(this);
  	
  	var e;
  	if (_type=="js")
  	{
  		e = document.createElement("script");
    		
        	if (typeof(e.onreadystatechange)!='undefined')
        	{
			Event.observe(e, "readystatechange", this.eventLoadIE);
		}
		else
		{
			Event.observe(e, "load", this.eventLoad);
		}
		e.src = file;
		e.type="text/javascript";
	}
	else
	{
		e = document.createElement("link");
        	if (typeof(e.onreadystatechange)!='undefined')
        	{
			Event.observe(e, "readystatechange", this.eventLoadIE);
		}
		else
		{
			this.loadedFile++;
		}
		e.href = file;
		e.type="text/css";
		e.rel="stylesheet";
	}
	document.getElementsByTagName("head")[0].appendChild(e);

  },
  existFile:function(file,_type)
  {
    var list = document.getElementsByTagName(_type=="js"?"script":"link");
    
    for (var i=0; i<list.length; i++)
    {
        var fileName = _type=="js"?list[i].src:list[i].href;
        if (fileName!="undefined" && fileName.include(file))
            return true;
    }
    return false;
  },
  fileLoadedIE:function(evt)
  {
  	if (evt.srcElement.readyState=="complete" || evt.srcElement.readyState=="loaded")
        {
        	this.loadedFile++;
	}
  },
  fileLoaded:function()
  {
       	this.loadedFile++;
  }
}
      