if (!(navigator.userAgent.indexOf("AdobeAIR") > 0)) {
    (function() {
        // Load the script
        var script = document.createElement("SCRIPT");
        script.type = "application/javascript";
        script.charset = "UTF-8";
        script.src = 'https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js';
        document.getElementsByTagName("head")[0].appendChild(script);
        script.onload = function() {
            var $ = window.jQuery;
            (function($) {
                Widget_Loader = function(host) {
                    if (!window.widget_instanced) {
                        this._url = '';
                        this._services = {
                            'autonomicas-tabla': host + '/autonomicas/{year}/{aut}/widget/{widget}/{mode}/{view}',
                            'autonomicas-prov': host + '/autonomicas/{year}/{aut}/widget/{widget}/{prov}',
                            'autonomicas-mun': host + '/autonomicas/{year}/{aut}/widget/{widget}/{prov}/{mun}',
                            'autonomicas-dist': host + '/autonomicas/{year}/{aut}/widget/{widget}/{prov}/{mun}/{dist}',
                            'autonomicas-mapa': host + '/autonomicas/{year}/widget/{widget}',
                            'autonomicas': host + '/autonomicas/{year}/{aut}/widget/{widget}',
                            'municipales': host + '/municipales/{year}/widget/{widget}',
                            'municipales-tabla': host + '/municipales/{year}/widget/{widget}/{aut}/{prov}/{mun}/{mode}/{view}',
                            'municipales-aut': host + '/municipales/{year}/widget/{widget}/{aut}',
                            'municipales-mun': host + '/municipales/{year}/widget/{widget}/{aut}/{prov}/{mun}',
                            'municipales-dist': host + '/municipales/{year}/widget/{widget}/{aut}/{prov}/{mun}/{dist}',
                            'municipales-prov': host + '/municipales/{year}/widget/{widget}/{aut}/{prov}',
                            'congreso': host + '/generales/{year}/congreso/widget/{widget}',
                            'congreso-aut': host + '/generales/{year}/congreso/widget/{widget}/{aut}',
                            'congreso-prov': host + '/generales/{year}/congreso/widget/{widget}/{aut}/{prov}',
                            'congreso-mun': host + '/generales/{year}/congreso/widget/{widget}/{aut}/{prov}/{mun}',
                            'congreso-tabla': host + '/generales/{year}/congreso/widget/{widget}/{mode}/{view}',
                            'senado': host + '/generales/{year}/senado/widget/{widget}',
                            'europeas': host + '/europeas/{year}/widget/{widget}',
                            'europeas-tabla': host + '/europeas/{year}/widget/{widget}/{mode}/{view}',
                            'europeas-aut': host + '/europeas/{year}/widget/{widget}/{aut}',
                            'europeas-prov': host + '/europeas/{year}/widget/{widget}/{aut}/{prov}',
                            'europeas-mun': host + '/europeas/{year}/widget/{widget}/{aut}/{prov}/{mun}',
                            'europeas-dist': host + '/europeas/{year}/widget/{widget}/{aut}/{prov}/{mun}/{dist}'
                        };
                        this._patternAut = '{aut}';
                        this._patternMod = '{mode}';
                        this._patternView = '{view}';
                        this._patternWidget = '{widget}';
                        this._patternYear = '{year}';
                        this._patternProv = '{prov}';
                        this._patternMun = '{mun}';
                        this._patternDist = '{dist}';
                        this._htmlPromises = [];
                        this._scripts = [
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/libs/underscore-min.js',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/libs/underscore.string.min.js',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/libs/jquery-ui-1.12.1.custom.js',
                            'https://cdnjs.cloudflare.com/ajax/libs/jqueryui-touch-punch/0.2.3/jquery.ui.touch-punch.min.js',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/libs/ol.custom.js',
                            'https://cdnjs.cloudflare.com/ajax/libs/nunjucks/2.4.3/nunjucks.js',
                            'http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.9.9/backbone-min.js',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/utils.js?v=23',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/templates.js?v=23',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/UpdaterView.js?v=23',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/TableViews.js?v=23',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/PopupViews.js?v=23',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/OLMapViewData.js?v=23',
                            'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/OLMapView.js?v=23'
                        ]
                        this._searchScriptUrl = 'http://resultados-elecciones.rtve.es/generales/abril-2019/congreso/multimedia/js/search.js?v=23';
                        this._linkWidgets = 'http://css2.rtve.es/css/rtve.elecciones/rtve.elecciones.commons/rtve.elecciones.widgets/rtve.elecciones.widgets2019.css';
                        this.init();
                        window.widget_instanced = true;
                    } else {
                        console.warn("¡OJO! Widget_Loader ya fue instanciado.");
                    }
                };

                Widget_Loader.prototype.load = function(id, iframe, searcher, comparator, type, aut, prov, mun, dist, year, widget, mode, view, num) {
                    iframe = iframe || false;
                    searcher = searcher || false;
                    comparator = comparator || true;
                    $('#'+id).parent().closest('.container').addClass(widget);
                    var url = this._services[type] + '?iframe=' + iframe + '&id=' + id + '&searcher=' + searcher + '&comparator=' + comparator;
                    if(num){
                        url += '&num=' + num;
                    }
                    this.get(this.buildUrl(url, aut, prov, mun, dist, year, widget, mode, view), this.add, id);    
                };

                Widget_Loader.prototype.add = function(data, id) {
                    $('#' + id + '.widget-elecc').html(data);
                };

                Widget_Loader.prototype.get = function(url, callback, id) {
                    this._htmlPromises.push(new Promise(function(resolve, rejected) {
                        $.get(url, function(data, status) {
                            callback(data, id);
                            console.info("Widget: " + url + " cargado.")
                            resolve(true);
                        }).fail(function() {
                            resolve(true);
                            console.warn("Widget no disponible.");
                        });
                    }));
                };

                Widget_Loader.prototype.buildUrl = function(url, aut, prov, mun, dist, year, widget, mode, view) {
                    return url.replace(this._patternAut, aut).
                    replace(this._patternProv, prov).
                    replace(this._patternMun, mun).
                    replace(this._patternDist, dist).
                    replace(this._patternYear, year).
                    replace(this._patternMod, mode).
                    replace(this._patternView, view).
                    replace(this._patternWidget, widget);
                };

                Widget_Loader.prototype.start = function() {
                    var widgets = $('.widget-elecc'),
                        that = this;
                    widgets.map(function() {
                        var data = $(this).data();
                        that.load($(this).attr('id'), data.iframe, data.searcher, data.comparator, data.type, data.aut, data.prov, data.mun, data.dist, data.year, data.widget, data.mode, data.view, data.num);
                    });
                    Promise.all(this._htmlPromises).then(function(values) {
                        var url = that._searchScriptUrl,
                            script = document.createElement('script');
                        script.type = "application/javascript";
                        script.charset = "UTF-8";
                        script.src = url;
                        document.querySelector('head').appendChild(script);
                        script.addEventListener('load', function() {
                            console.info("Cargado: " + url);
                        }, false);
                    });
                };

                Widget_Loader.prototype.init = function() {
                    var cssId = 'myCss'; // you could encode the css path itself to generate id..
                    if (!document.getElementById(cssId)) {
                        var head = document.getElementsByTagName('head')[0];
                        var link = document.createElement('link');
                        link.id = cssId;
                        link.rel = 'stylesheet';
                        link.type = 'text/css';
                        link.href = this._linkWidgets;
                        link.media = 'all';
                        head.appendChild(link);
                    }
                    var loadScr;
                    loadScr = function() {
                        if (this._scripts == 0) {
                            this.start();
                            return;
                        }
                        var url = this._scripts.shift(),
                            script = document.createElement('script');
                        script.type = "application/javascript";
                        script.charset = "UTF-8";
                        script.src = url;
                        document.querySelector('head').appendChild(script);
                        script.addEventListener('load', function() {
                            console.info("Cargado: " + url);
                            if (url.indexOf('backbone') !== -1) {
                                console.log(window.Backbone);
                            } else if (url.indexOf('jquery-ui') !== -1) {
                                console.log(window.jQuery.ui);
                            } else if (url.indexOf('underscore') !== -1) {
                                console.log(window._);
                            } else if (url.indexOf('nunjucks') !== -1) {
                                console.log(window.nunjucks);
                            } else if (url.indexOf('ol.custom.js') !== -1) {
                                console.log(window.ol);
                            } else if (url.indexOf('raphael') !== -1) {
                                console.log(window.Raphael);
                            } else if (url.indexOf('TableViews') !== -1) {
                                console.log(window.tableComp);
                            } else if (url.indexOf('UpdaterView') !== -1) {
                                console.log(window.UpdaterView);
                            }
                            loadScr();
                        }, false);
                    }.bind(this);
                    loadScr()
                };

                return Widget_Loader;

            })(jQuery);
            var widget_loader = new Widget_Loader('http://resultados-elecciones.rtve.es');
        };
    })();
}