var includedSources = new Array();
//var ajaxBuscRapido;

if (buscRapidoHorizontalCargado == undefined) {
   var buscRapidoHorizontalCargado = false;
}

function in_array(needle, haystack) {
	for (var i = 0; i < haystack.length; i++) {
		if (haystack[i] == needle)
			return true;
	}
	return false;
}
function partial(func /*, 0..n args */) {
    var args = Array.prototype.slice.call(arguments).splice(1, arguments.length - 1);
    
	return function() {
		var allArguments = args.concat(Array.prototype.slice.call(arguments));
		return func.apply(this, allArguments);
	};
}
function loadHeaderOnce(currentSource, arraySource, finalCallback) {
  
	var oSource = arraySource[currentSource];
	if (!in_array(oSource, includedSources)) {
		includedSources[includedSources.length] = oSource;
		
		return loadHeader(currentSource, arraySource, finalCallback);
	} else if (currentSource == (arraySource.length - 1)) {
	
		return finalCallback();
	} else {
	
		return loadHeaderOnce(currentSource+1, arraySource, finalCallback);
	}
}

function loadHeaderCSS(source, oCallback) {
    var oHead;
    var oFile;

    if (source == "") {
        if (oCallback != null) {
            oCallback();
        }
        return;
    }
    	
    oHead = document.getElementsByTagName('head').item(0);
	oFile = document.createElement('link');
	oFile.setAttribute('rel', 'stylesheet');
	oFile.setAttribute('type', 'text/css');
	oFile.setAttribute('href', source);
	if (oCallback != null)
	    oCallback();
	oHead.appendChild(oFile);
}

function loadHeaderJS(source, oCallback) {
    var oHead;
    var oFile;

    if (source == "") {
        if (oCallback != null) {
            oCallback();
        }
        return;
    }

    oHead = document.getElementsByTagName('head').item(0);
    oFile = document.createElement('script');
    oFile.setAttribute('language', 'javascript');
    oFile.setAttribute('type', 'text/javascript');
    oFile.setAttribute('src', source);
    // Todos
    if (oCallback != null)
        oFile.onload = oCallback;
    // IE 6 & 7
    if (oCallback != null) {
        oFile.onreadystatechange = function() {
            if (this.readyState == 'loaded' || this.readyState == 'complete') {
                oCallback();
            }
        }
    }
    oHead.appendChild(oFile);
}

function loadHeader(currentSource, arraySource, finalCallback) {
   
	var oHead;
	var oFile;
	var oCallback;
	var oSource = arraySource[currentSource];
	
	var extension = oSource.substring(oSource.lastIndexOf('.') + 1);
	if (extension.lastIndexOf('?') != -1)
	    extension = extension.substring(0, extension.lastIndexOf('?'));
		
	if (currentSource < arraySource.length - 1)
		oCallback = partial(loadHeaderOnce, (currentSource + 1), arraySource, finalCallback);
	else
	    oCallback = finalCallback;

	switch (extension) {
	    case "css":
	        loadHeaderCSS(oSource, oCallback);
	        break;
		default:
		    loadHeaderJS(oSource, oCallback);
			break;
		}
}
function cargarBuscadorAjax(urlBuscador, paramsBuscador, divLoader) {
  
	var oURL = GetUrlAjax(urlBuscador, paramsBuscador);
		
// lo comentamos pq en la home de logi (el buscador rapido) no funciona el 100% de las veces, a veces no carga
//	if (ajaxBuscRapido != undefined) {
//	    ajaxBuscRapido.abort();
//	}

//	ajaxBuscRapido =
	$.ajax({
	    type: "POST",
	    url: oURL.url,
	    data: oURL.qstring,
	    contentType: "application/x-www-form-urlencoded;charset=UTF-8",
	    beforeSend: function(XMLHttpRequest) { },
	    success: function(msg) {
	        $("#" + divLoader).html(msg);

	        if (buscRapidoHorizontalCargado == true) {
	            $("#divBrEspera").hide();
	            $("#" + divLoader).show();
	            updateListaOpcionesCargadas(divLoader);
	        }
	    },
	    error: function(objeto, error, objeto2) { }
	});
}
function cargarBuscador(url, params, includes, divBuscador) {
    urlBuscador = url;
   
	paramsBuscador = params;
	divLoader = divBuscador;
	
	var a_incluir = includes.split("#");
	
	loadHeaderOnce(0, a_incluir, partial(cargarBuscadorAjax, url, params, divBuscador));
	
}


