﻿var LibraryManager = Class.create({
    initialize: function() {
        var carpetaBase = "/";
        this._rutaArchivos = new Array(); // ruta según tipo de archivo (manejado por extensión)
        this._rutaArchivos["css"] = carpetaBase + "";
        this._rutaArchivos["js"] = carpetaBase + "";
        this._archivosCargandose = new Array(); // archivos que actualmente se están cargando
        this._archivosCargados = new Array(); // archivos que ya se han cargado
    },
    /**
    * Método reiterativo. Carga un archivo por cada llamada.
    * @param {Object} libreria (Array) 	-> Listado de archivos a cagar
    * @param {Object} callback (Function) 	-> Se llamará esta función al terminar la carga de todos los archivos
    */
    cargar: function(libreria, callback) {
    if (libreria.length == 0)
        callback.call();
    else {
        // si no se ha cargado
        if (!this._archivosCargados[libreria.first()]) {
            var scope = this;
            // si ya se está cargando, esperar a que esté listo antes de continuar
            // (ésto es útil en caso de cargar múltiples librerías a la vez que requieran ese mismo archivo)
            if (this._archivosCargandose[libreria.first()]) {
                var interval = setInterval(function() {
                    if (scope._archivosCargados[libreria.first()]) {
                        libreria.shift();
                        clearInterval(interval);
                        scope.cargar(libreria, callback);
                    }
                }, 10);
            }
            else {
                var tipo = libreria.first().split(".").last();
                this._archivosCargandose[libreria.first()] = true;
                switch (tipo) {
                    case "css":
                        var nodoCss = document.createElement('link');
                        with (nodoCss) {
                            type = 'text/css';
                            rel = 'stylesheet';
                            media = 'screen';
                        }
                        nodoCss.href = this._rutaArchivos[tipo] + libreria.first();
                        document.getElementsByTagName("head")[0].appendChild(nodoCss);
                        this._archivosCargados[libreria.first()] = true;
                        libreria.shift();
                        this.cargar(libreria, callback);
                        break;
                    case "js":
                        new Ajax.Request(this._rutaArchivos[tipo] + libreria.first(), {
                            method: 'get',
                            onComplete: function() {
                                scope._archivosCargados[libreria.first()] = true;
                                libreria.shift();
                                scope.cargar(libreria, callback);
                            }
                        });
                        break;
                    default:
                        libreria.shift();
                        this.cargar(libreria, callback);
                }
            }
        }
        // si ya se ha cargado
        else {
            libreria.shift();
            this.cargar(libreria, callback);
        }
    }
}
});
var libraryManager = new LibraryManager();

function RecuperarUTMs() {
    var utm_medium = '';
    var utm_source = '';
    var utm_campaign = '';
    var utm_content = '';

    utm_medium = querySt('utm_medium');
    alert(utm_medium);
    utm_source = querySt('utm_source');
    alert(utm_source);
    utm_campaign = querySt('utm_campaign');

    utm_content = querySt('utm_content');


    if (utm_medium != '')
        document.getElementById('utm_medium').value= utm_medium;
    if (utm_source != '')
        document.getElementById('utm_source').value = utm_source;
    if (utm_campaign != '')
        document.getElementById('utm_campaign').value = utm_campaign;
    if (utm_content != '')
        document.getElementById('utm_content').value = utm_content;

};

function RegistrarVisita() {
    if (window.XMLHttpRequest) //Non-IE Browsers
        GlobalAjaxObjectVal = new XMLHttpRequest(); //Global Variable
    else if (window.ActiveXObject) //IE Browsers
        GlobalAjaxObjectVal = new ActiveXObject("Msxml2.XMLHTTP");  //Global Variable
    else { //Your browsers is not compatible with AJAX
        alert('Your browser is not supported.')
        return; //exit
    }

    var url;
    url = "/funcionalidad-ajax.aspx?modo=RegistrarVisitas&referer=" + document.referrer + "&url_entrada=" + parent.location.href + "&ip_cliente=" + querySt('REMOTE_ADDR') + "&ip_proxy=" + querySt('HTTP_X_FORWARDED_FOR') + "&idioma=" + navigator.language + "&navegador=" + navigator.userAgent;

	var url_encode= encodeURI(url);

	GlobalAjaxObjectVal.open("GET", url_encode );
	//GlobalAjaxObject.open("POST", document.formulariohome);
	//Sets the function that is run many times.
    GlobalAjaxObjectVal.onreadystatechange = nada;
	//Executes the request
	GlobalAjaxObjectVal.send(null);

};

function nada(){
    return; 
};

function querySt(ji) {
    hu = window.location.search.substring(1);
    gy = hu.split("&");
    for (i = 0; i < gy.length; i++) {
        ft = gy[i].split("=");
        if (ft[0] == ji) {
            return ft[1];
        }
    }
}

