/** begin of code **/

var _onDemandLoadingScripts = 0;

_OnDemandLoadByAjax = function() {
    loadComponent = function(component, type) {
        var sURL = null;
        var sCALLBACK = null;

        if (typeof component === "string") {
            sURL = component;
        } else if (typeof component === "object") {
            sURL = component[0];
            sCALLBACK = component[1];
        }
        
        handleSuccess = function(response, callback) {
            var head = document.getElementsByTagName("head")[0];
        	var newChild = document.createElement('script');
        	newChild.setAttribute("type", "text/javascript");
        	
            newChild.text = response.responseText;
            if (!document.all) {
            	newChild.innerHTML = response.responseText;
            }

            head.appendChild(newChild);
            if (typeof callback == "function") {
                if (document.all) {
                	callback();
                } else {
                	callback.defer(50);
                }
            }
            _onDemandLoadingScripts--;
        }

        handleFailure = function(response, options) {
            alert('Dynamic load script: [' + sURL + '] failed!');
        }
        
        if(type == 'script') {
        	_onDemandLoadingScripts++;
        	
        	try {
        		  var objXHR = new XMLHttpRequest();
        	} catch (e) {
        		try {
        			try { var objXHR = ActiveXObject("Msxml2.XMLHTTP.6.0"); }
        		      catch (e) {
        		    	  try { var objXHR = ActiveXObject("Msxml2.XMLHTTP.3.0"); }
        		    	  catch (e) {
        		    		  try { var objXHR = ActiveXObject("Msxml2.XMLHTTP"); }
        		    		  	catch (e) {
        		    		  		
        		    		  	}
        		    	  }
        		      }
        		} catch (e) {
        			try {
        				var objXHR = new ActiveXObject('Microsoft.XMLHTTP');
        			} catch (e) {
        			alert('XMLHttpRequest not supported'); }
        		}
        	}
        		
        	objXHR.open('get', sURL);
        	objXHR.onreadystatechange = function() {
        		if ( objXHR.readyState == 4 ) {
        			handleSuccess(objXHR, sCALLBACK);
        	    }        		
        	};
        	objXHR.send(null);
        	
        } else {
            var head = document.getElementsByTagName("head")[0];
           	newChild = document.createElement('link');
           	newChild.setAttribute("rel", "stylesheet");
           	newChild.setAttribute("type", "text/css");
           	newChild.setAttribute("href", sURL);
           	head.appendChild(newChild);
        }

    }
    
    return {
        loadScripts: function(components) {
            for(i=0; i < components.length; i++) {
            	var component = components[i];
                loadComponent(component, 'script');
            }
        },
        loadStylesheets: function(components) {
            for(i=0; i < components.length; i++) {
            	var component = components[i];
                loadComponent(component, 'css');
            }
        }
    }
}();

try {
	var extJSloaded = (Ext ? true : false);
} catch(e) {
	var extJSloaded = false;
}

var _baseUrl = '/contentbrowser/web';

/** example of use, one callback only **/
var oContentBrowserScripts = [[_baseUrl+'/javascript/Ext.ux.form.FileUploadField.js?d='+new Date().getTime(), function() {
	_OnDemandLoadByAjax.loadScripts([[_baseUrl+'/locationbar/Ext.ux.LocationBar.js?d='+new Date().getTime(), function(){
		_OnDemandLoadByAjax.loadScripts([[_baseUrl+'/javascript/contentsourcebrowser.js?d='+new Date().getTime(), function(){
			_OnDemandLoadByAjax.loadScripts([[_baseUrl+'/javascript/lang.js?d='+new Date().getTime(), function(){
				contentSourceBaseURL = _baseUrl;
			}]]);
		}]]);
	}]]);
}]];

var extJSStyles = [ '/ext/resources/css/ext-all.css' ];

var extJSscripts = [[ '/ext/adapter/ext/ext-base.js', function() {
	_OnDemandLoadByAjax.loadScripts([[ '/ext/ext-all.js', function() {
			_OnDemandLoadByAjax.loadScripts(oContentBrowserScripts);
			_OnDemandLoadByAjax.loadStylesheets(extJSStyles);
    	}
	]]);
	}
]];

var oContentBrowserStyles = [ _baseUrl+'/css/Ext.ux.form.FileUploadField.css',_baseUrl+'/css/contentsourcebrowser.css', _baseUrl+'/locationbar/LocationBar.css'];

delete _baseUrl;

if(extJSloaded) {
	_OnDemandLoadByAjax.loadScripts(oContentBrowserScripts);
} else {
	_OnDemandLoadByAjax.loadScripts(extJSscripts);
	
}
_OnDemandLoadByAjax.loadStylesheets(oContentBrowserStyles);


var contentSourceParams = new Array();

function showContentSourceBrowser(params, renderTo) {

    if(_onDemandLoadingScripts > 0) {
		window.setTimeout(showContentSourceBrowser(params, renderTo), 50);
	} else {
		try {
			var test = _showContentSourceBrowser;
			var baseUrl = contentSourceBaseURL;
			if(baseUrl == undefined) {
				window.setTimeout(showContentSourceBrowser(params, renderTo), 50);
				return;
			}
		} catch(e) {
			window.setTimeout(showContentSourceBrowser(params, renderTo), 50);
			return;
		}
		_showContentSourceBrowser(params, renderTo);
	}
}

