// EL INCREIBLE CARGADOR DINAMICO DE CARCASAS
usingCD = true;
// console.log( "main" );
requirejs.config({
   	waitSeconds: 60,
   	urlArgs: "noCache="+ ( new Date() ).getTime()
});

// CHECK config VAR injected
if ( typeof datosConfiguracion !== "undefined" ){
	datosConfiguracion.isSGO = true;	
	if( !!!datosConfiguracion.interfaz ) {
		console.log( "NO sgo.interfaz >>> ERROR: not foundable interfaz" );
	}
	// else if ( datosConfiguracion.rutaInterfaz == "infantil" ) {
	// }
	// else {
	// 	datosConfiguracion.interfaz = "primaria";
	// }
	datosConfiguracion.subtipo = getTipoRecurso( datosConfiguracion.idRecurso );
}
else {
	var datosConfiguracion =  {};
	datosConfiguracion.isSGO = false;
	datosConfiguracion.interfaz = "primaria";
	datosConfiguracion.subtipo = "tiposopaletras";
}

// CHECK config URL-PARAM
var uriParams = new getGET();
if ( !!uriParams.url && !datosConfiguracion.isSGO ){
	uriParams.url = uriParams.url.replace( "index.html", "" );
	var rutaURL = uriParams.url;
	if( rutaURL.substr( -1, 1 ) == "/" ){
		rutaURL = rutaURL.substr( 0, rutaURL.length - 1 );
	}
	var _rutaURL = rutaURL.split( "/" );
	for ( var i = _rutaURL.length - 1; i >= 0; i-- ){
		var tempAV = _rutaURL[i];
		if ( tempAV ){
			var _subtipo = getTipoRecurso( tempAV );
			if ( _subtipo ){
				datosConfiguracion.idRecurso = tempAV;
				datosConfiguracion.subtipo = _subtipo;
				datosConfiguracion.url = rutaURL;
				i = -1;
			}
		}
	}
	if ( !datosConfiguracion.url ){
		console.log( "nrd.tipo NOT FOUND >>> ERROR: malformed URI" );
	}
}
else {
	console.log( "NO getGET().url >>> SUPOSSED isSGO" );
}

if ( !!uriParams.interfaz ){
	datosConfiguracion.interfaz = uriParams.interfaz;
}

// loadCss();
loadXml();

//###################################################

// ------------------------------------------------------------------------------------------------------------------------------------------------------
var urlFiles;
var base_url_files = "";
// ------------------------------------------------------------------------------------------------------------------------------------------------------

function getTipoRecurso( idRecurso ){

	// a partir del idRecuros se obtine el tipo y el subtipo
	// var _idRecurso = parseInt( idRecurso.split("").reverse().join(""), 10 );
	// _idRecurso = ""+_idRecurso;
	// var tipoId = idRecurso.replace( _idRecurso.split("").reverse().join(""), "" );

	var tipoId = idRecurso.split('0')[0];

	switch( tipoId ){
		//********** ACTIVIDADES **********//
		case "ERROR":
			datosConfiguracion.tipo = "error";
			return "error";			
		case "ESJD":
			datosConfiguracion.tipo = "actividad";
			return "juegodiferencias";
		// case "ES???"  // esta está en desarrollo...
			// return"juegodiferencias";
		case "ESTS":
			datosConfiguracion.tipo = "actividad";
			return "tipotest"; 
		case "ESTM":
			datosConfiguracion.tipo = "actividad";
			return "tipotestmulti";
		case "ESSL":
			datosConfiguracion.tipo = "actividad";
			return "tiposopaletras";
		case "ESSLM":
			datosConfiguracion.tipo = "actividad";
			return "sopaletrasmanual";
		case "ESFL":
			datosConfiguracion.tipo = "actividad";
			return "tipoflechas";
		case "ESCG":
			datosConfiguracion.tipo = "actividad";
			return "tipocrucigrama";
		case "ESTL":
			datosConfiguracion.tipo = "actividad";
			return "textolibre";
		case "ESTMP":
			datosConfiguracion.tipo = "actividad";
			return "testmultipregunta";
		case "ESDP":
			datosConfiguracion.tipo = "actividad";
			return "tipodesplegable";
		case "ESAR":
			datosConfiguracion.tipo = "actividad";
			return "arrastrarsoltar";
		case "ESMA":
			datosConfiguracion.tipo = "actividad";
			return "rotulacionmarcar";
		case "ESSL":
			datosConfiguracion.tipo = "actividad";
			return "tiposopaletras";
		case "ESRD":
			datosConfiguracion.tipo = "actividad";
			return "rotulaciondesplegable";
		case "ESRO":
			datosConfiguracion.tipo = "actividad";
			return "rotulacion";
			// 'rotulacionFlechas';
			// 'rotulacionTextoLibre';
			// 'rotulacionArrastrarSoltar';
		case "ESRA":
			datosConfiguracion.tipo = "actividad";
			//return "multiActividad";
			return "rotulacionaleatorio";

		//********** RECURSOS **********//
		case "ESARC":
			var _ruta = uriParams.url;
			if ( ( _ruta.indexOf( "index.html" ) < 0 ) ){
				if ( _ruta.lastIndexOf("/") != _ruta.length-1 ){
					_ruta = _ruta + "/";
				}
				_ruta =  _ruta+"index.html";
				return "noLoad";
			}
			try {
				var _now = new Date();
				_now = _now.getTime();
				requirejs( ["../core/common/js/jquery"], function( jQuery ){
					$.ajax({
			            type: 'get',
			            url: _ruta+"?nC="+_now,
			            success: function(data) {
							window.location.assign( _ruta );
							return "noLoad";
			            },
			            error: function(jqXHR, textStatus, errorThrown) {
			            	return "ERROR";
			            }
			        });
			    });
			}
			catch( error ){
				return "ERROR";
			}
		case "ESHS":
			datosConfiguracion.tipo = "recurso";
			return "hotspot";
		case "ESAQS":
			datosConfiguracion.tipo = "recurso";
			return "aquetesuena";
		case "ESAD":
			datosConfiguracion.tipo = "recurso";
			return "adivinanza";
		case "ESAM":
			datosConfiguracion.tipo = "recurso";
			return "analisismorfologico";
		case "ESPA":
			datosConfiguracion.tipo = "recurso";
			return "presentacion_avanzada";
		case "ESAT": 
			datosConfiguracion.tipo = "recurso";
			return 'atlas';
		//case "ESBI": // ESTA ES FLASH
			//return 'biblioteca';
		case "ESCL":
			datosConfiguracion.tipo = "recurso";
			return 'cronometro';
		case "ESDI": 
			datosConfiguracion.tipo = "recurso";
			return 'dictado';
		//case "ESCCR": // ESTA ES FLASH
			//return 'claseConRitmo' 
		case "ESCOV":
			datosConfiguracion.tipo = "recurso";
 			return 'complementosverbo';
 		case "ESCV": 
 			datosConfiguracion.tipo = "recurso";
 			return 'conjugador';
 		case "ESCVE": 
 			datosConfiguracion.tipo = "recurso";
 			return 'conjugador_euskera';
		case "ESDO": 
			datosConfiguracion.tipo = "recurso";
			return 'dictadooraciones';
		case "ESEH": 
			datosConfiguracion.tipo = "recurso";
			return 'escenas';
		case "ESEYO": 
			datosConfiguracion.tipo = "recurso";
			return 'escuchayobserva';
		case "ESEE": 
			datosConfiguracion.tipo = "recurso";
			return 'escuchoyescribo';
        case "ESFP": 
        	datosConfiguracion.tipo = "recurso";
        	//return 'formacionPalabras';
        	return 'palabras';
		case "ESFPS": 
			datosConfiguracion.tipo = "recurso";
			return 'palabrassilabas';
		case "ESGA":
			datosConfiguracion.tipo = "recurso";
			return 'galeria';
		case "ESGAR": 
			datosConfiguracion.tipo = "recurso";
			return 'generadorarrastrar';
		case "ESGP": 
			datosConfiguracion.tipo = "recurso";
			return 'generadorpuntuacion';
		case "ESGE": 
			datosConfiguracion.tipo = "recurso";
			return 'generadorescritura';
		case "ESGM": 
			datosConfiguracion.tipo = "recurso";
			return 'generadormarcar';
		case "ESGO": 
			datosConfiguracion.tipo = "recurso";
			return 'generadorortografico';
		case "ESGV": 
			datosConfiguracion.tipo = "recurso";
			return 'generadorverbal';
		case "ESGC": 
			datosConfiguracion.tipo = "recurso";
			return 'gestordecapas';
		case "ESGU": 
			datosConfiguracion.tipo = "recurso";
			return 'generadorunir';
		case "ESGL": 
			datosConfiguracion.tipo = "recurso";
			return 'glosarios';
		case "ESKM": 
			datosConfiguracion.tipo = "recurso";
			return 'karaokemultiple';
		case "ESLT": 
			datosConfiguracion.tipo = "recurso";
			return 'lineatiempo'; 
		case "ESLLP": 
			datosConfiguracion.tipo = "recurso";
			return 'lluviapalabras';
		case "ESOC": 
			datosConfiguracion.tipo = "recurso";
			return 'operacionescombinadas';
		case "ESOL": 
			datosConfiguracion.tipo = "recurso";
			return 'ordenacionletras';
		case "ESOP": 
			datosConfiguracion.tipo = "recurso";
			return 'ordenacionpalabras';
		case "ESPS": 
			datosConfiguracion.tipo = "recurso";
			return 'palabrassobre';
		case "ESPM": 
			datosConfiguracion.tipo = "recurso";
			return 'playermultimedia';
		case "ESPR": 
			datosConfiguracion.tipo = "recurso";
			return 'presentacion';
		case "ESPA": 
			datosConfiguracion.tipo = "recurso";
			return 'presentacion_avanzada';
		case "ESRUP": 
			datosConfiguracion.tipo = "recurso";
			return 'ruedapalabras';
		case "ESTT": 
			datosConfiguracion.tipo = "recurso";
			return 'tematico';
		case "ESTC": 
			datosConfiguracion.tipo = "recurso";
			return 'todoscantan';
		case "ESVP": 
			datosConfiguracion.tipo = "recurso";
			return 'visorpartituras';
		case "ESGFO":
			datosConfiguracion.tipo = "recurso";
			return "gforaciones";
		case "ESR3D":
		 	datosConfiguracion.tipo = "recurso";
		 	return "recurso3d";
		default:
			console.log( "El tipo de recurso no ha podido ser identificado" );
			return false;
	}
}
function showError( objeto ){
	alert( "ERROR > "+objeto ); 
}
function getGET() {
    var get;
    if( typeof get === "undefined" ){
    	get = {};
	    var loc = document.location.href;
	    if(loc.indexOf('?')>0)
	    {
	        var getString = loc.split('?')[1];
	        var GET = getString.split('&');
	        for(var i = 0, l = GET.length; i < l; i++){
	            var tmp = GET[i].split('=');
	            get[ tmp[0] ] = unescape( decodeURI(tmp[1]) );
	        }
	    }
	    return get;
    }
    else{
    	return get;
    }
}
function recursiveLoad( deps ){
	
	var total = deps.length;
	var index = 0;

	var doLoad = function(){
		if ( !!deps[index] ){
			console.log( "load: "+deps[index] );
			if ( !!deps[index+1] ){
				return require( [ deps[index] ], function(){
					index++;
					doLoad();
				});
			}
			else {
				return require( [ deps[index] ], function(){
					$(document).ready(function(){
					    initNRD();
					});
				});	
			}
		}
	}

	return {
		doLoad: doLoad()
	};
}

///////
///
/// LOAD XML 
//
///	FASE 0 .-
//  FASE 1 .-
//
//	deprecated on FASE >= 2 .- 
//
///////

function loadXml(){

	var rutaXml;
	var _idRecurso = datosConfiguracion.idRecurso;
	var rutaPathAzure = "unreachableRoute";

	if ( datosConfiguracion.subtipo && datosConfiguracion.subtipo == "noLoad" ){
		try {
			window.location.assign( datosConfiguracion.url+"/index.html" );
			return;
		}
		catch( error ){
			loadVisorError();
			return;
		}
	}
	
	//SE FUERZA datosConfiguracion.isSGO a true para las instancias
	datosConfiguracion.isSGO = true;
	
	if ( datosConfiguracion.isSGO ) {

		console.log( "360: isSGO" );

		var baseRuta = "../../../../../../index.php/";
		var _idXml = datosConfiguracion.idXml;
		var _tipo = datosConfiguracion.tipo;
		var _idioma = "1";
		rutaXml = baseRuta + 'objetos' +"/export_js/"+_tipo+"/"+ _idXml +"/"+ _idioma;
	}
	else {

		console.log( "370: NO isSGO" );

		rutaXml = datosConfiguracion.url;
		switch( _idRecurso ){
			case 'biblioteca': 
			case "palabrassobre":
				rutaXml = rutaXml +"/js/json.js";
				break;
			default:
				rutaXml = rutaXml +"/js/xml.js";
		}

		if ( datosConfiguracion.url.indexOf( "library" ) < 0 ){

			rutaPathAzure = datosConfiguracion.url + "/js/objetodigital.js";
		}
	}

	// console.log( rutaXml );
	// console.log( rutaPathAzure );

	// rutaXml = "kk" + rutaXml ;
	requirejs( ["../core/common/js/jquery"], function( jQuery ){

		requirejs( [ rutaXml ], function(){

			var checkPath;
			if ( typeof config_xml != "undefined" ){
				checkPath = $( config_xml ).find("path").text();
			}
			else if ( typeof data_xml != "undefined" ){
				checkPath = $( data_xml ).find("path").text();
			}
			else if ( typeof master_xml != "undefined" ){
				checkPath = $( master_xml ).find("path").text();
			}
			else if ( typeof data != "undefined" ){
				checkPath = $( data ).find("path").text();
			}
			else if ( typeof config_json != "undefined" ){ // esto viene en rueda de palabras y en escucho escribo...
				try{
					var _json = JSON.parse( config_json );
					checkPath = _json.path || "";
				}
				catch( err ){
					checkPath = config_json.path || "";
				}
			}
			else if ( typeof json != "undefined" ){
				try{
					var _json = JSON.parse( json );
					checkPath = _json.path || "";
				}
				catch( err ){
					checkPath = config_json.path || "";
				}
			}
			else if ( typeof jsonp != "undefined" ){
				try{
					var _json = JSON.parse( jsonp );
					checkPath = _json.path || "";
				}
				catch( err ){
					checkPath = config_json.path || "";
				}
			}
			else if ( typeof storyjs_jsonp_data != "undefined" ){
				var _json = JSON.parse( storyjs_jsonp_data );
				checkPath = _json.path || "";
			}
			else if ( typeof config_nrd != "undefined" ){
				var _json = JSON.parse( config_nrd );
				checkPath = _json.path || "";
			}

			if ( ( !checkPath || checkPath == "" ) && datosConfiguracion.subtipo != "hotspot" ){
				var _ruta = uriParams.url;
				if ( _ruta.lastIndexOf("/") != _ruta.length-1 ){
					_ruta = _ruta + "/";
				}
				_ruta =  _ruta+"index.html";
			
				try {
					window.location.assign( _ruta );
					return;
				}
				catch( error ){
					loadVisorError();
					return;
				}
			}

			requirejs( [rutaPathAzure], function(){
				
				console.log( "HAY path" );
				console.log( "se inicia el proceso de arreglo de rutas" );

				if ( typeof objetodigital != "undefined" ){
					
					console.log( "hay configuracion de rutas" );
					console.log( objetodigital );

//					var rutaExterna = objetodigital.path;
					var rutaExterna = rutaPathAzure.replace( "js/objetodigital.js", "" );
					rutaExterna = rutaExterna.replace( "files/", "" );

					if ( typeof config_xml != "undefined" ){
						console.log( "tipo: 463" );
						config_xml = config_xml.replace( "<path>", "<path>"+rutaExterna );
						var _toFind = 'src="files/';
						var _regExp = new RegExp( _toFind, 'g' );
						config_xml = config_xml.replace( _regExp, 'src="'+rutaExterna +'files/' );
						console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
					}
					else if ( typeof data_xml != "undefined" ){
						console.log( "tipo: 467" );
						data_xml = data_xml.replace( "<path>", "<path>"+rutaExterna );
						var _toFind = 'src="files/';
						var _regExp = new RegExp( _toFind, 'g' );
						data_xml = data_xml.replace( _regExp, 'src="'+rutaExterna +'files/' );
						console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
					}
					else if ( typeof master_xml != "undefined" ){
						console.log( "tipo: 470" );
						master_xml = master_xml.replace( "<path>", "<path>"+rutaExterna );
						var _toFind = 'src="files/';
						var _regExp = new RegExp( _toFind, 'g' );
						master_xml = master_xml.replace( _regExp, 'src="'+rutaExterna +'files/' );
						console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
					}
					else if ( typeof data != "undefined" ){
						console.log( "tipo: 473" );
						data.replace( "<path>", "<path>"+rutaExterna );
						data = data.replace( "<path>", "<path>"+rutaExterna );
						var _toFind = 'src="files/';
						var _regExp = new RegExp( _toFind, 'g' );
						data = data.replace( _regExp, 'src="'+rutaExterna +'files/' );
						console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
					}
					else if ( typeof config_json != "undefined" ){
						console.log( "tipo: 477" );
						if ( typeof config_json.path != "undefined" ){
							config_json.path = rutaExterna+'files/';
						}
						else {
							// ojo con los slashes
							config_json = config_json.replace( '"path":"', '"path":"'+rutaExterna );
						}
					}
					else if ( typeof json != "undefined" ){
						console.log( "tipo: 487" );
						json = json.replace( '"path":"', '"path":"'+rutaExterna );
					}
					else if ( typeof jsonp != "undefined" ){ // resulta que generador unir es jsonp
						console.log( "tipo: 492" );
						// ADDLASHES
						jsonp = jsonp.replace( '"path":"', '"path":"'+rutaExterna );
					}
					else if ( typeof storyjs_jsonp_data != "undefined" ){
						console.log( "tipo: 496" );
						storyjs_jsonp_data = storyjs_jsonp_data.replace( '"path":"', '"path":"'+rutaExterna );
					}
					else if ( typeof config_nrd != "undefined" ){
						console.log( "tipo: 499" );
						// ADDLASHES
						config_nrd = config_nrd.replace( '"path":"', '"path":"'+rutaExterna );
					}
				}
				
				loadCss();
			    loadJs();

			}, function(){

				console.log( "NO hay path");

				if ( document.location.href.indexOf( "santillanago.com" ) != -1 ){
					
					var _baseRoute = false;

					if ( document.location.href.indexOf( "archivos/" ) != -1 ){
						
						_baseRoute = datosConfiguracion.url+"/";
					}
					else if ( document.location.href.indexOf( "nldGeneradorSecundaria") != -1 ){

						var _ruta = uriParams.url;
						_ruta = _ruta.replace( "index.html", "" );
						if ( _ruta.lastIndexOf("/") != _ruta.length-1 ){
							_ruta = _ruta + "/";
						}
						_baseRoute = _ruta;
					}

					if ( _baseRoute != false ){
						
						console.log( "el path a los ficheros se corrige" );
						
						if ( typeof config_xml != "undefined" ){
							console.log( "533" );
							config_xml = config_xml.replace( "<path>", "<path>"+_baseRoute );
							var _toFind = 'src="files/';
							var _regExp = new RegExp( _toFind, 'g' );
							config_xml = config_xml.replace( _regExp, 'src="'+ _baseRoute +'files/' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
						}
						else if ( typeof data_xml != "undefined" ){
							console.log( "537" );
							data_xml = data_xml.replace( "<path>", "<path>"+_baseRoute );
							var _toFind = 'src="files/';
							var _regExp = new RegExp( _toFind, 'g' );
							data_xml = data_xml.replace( _regExp, 'src="'+ _baseRoute +'files/' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
						}
						else if ( typeof master_xml != "undefined" ){
							console.log( "540" );
							master_xml = master_xml.replace( "<path>", "<path>"+_baseRoute );
							var _toFind = 'src="files/';
							var _regExp = new RegExp( _toFind, 'g' );
							master_xml = master_xml.replace( _regExp, 'src="'+ _baseRoute +'files/' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
						}
						else if ( typeof data != "undefined" ){
							console.log( "543" );
							data.replace( "<path>", "<path>"+_baseRoute );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof config_json != "undefined" ){
							if ( typeof config_json.path != "undefined" ){
								console.log( "548" );
								config_json.path = _baseRoute;
							}
							else {
								console.log( "552" );
								// ojo con los slashes
								config_json = config_json.replace( '"path":"', '"path":"'+_baseRoute );
							}
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof json != "undefined" ){
							console.log( "558" );
							json = json.replace( '"path":"', '"path":"'+_baseRoute );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof jsonp != "undefined" ){ // resulta que generador unir es jsonp
							console.log( "562" );
							// ADDLASHES
							jsonp = jsonp.replace( '"path":"', '"path":"'+_baseRoute );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof storyjs_jsonp_data != "undefined" ){
							console.log( "567" );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
							storyjs_jsonp_data = storyjs_jsonp_data.replace( '"path":"', '"path":"'+_baseRoute );
						}
						else if ( typeof config_nrd != "undefined" ){
							console.log( "570" );
							// ADDLASHES
							config_nrd = config_nrd.replace( '"path":"', '"path":"'+_baseRoute );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}

					}
				}
				else if ( datosConfiguracion.url.indexOf( "library" ) != -1 ) {

					console.log( "estoy en AV viendo un recurso descargado" );

					// var _baseCD = window.location.href;
					// console.log( baseCD );
					var _baseRoute;

					if( datosConfiguracion.url.indexOf( "files" ) < 0 ){
						_baseRoute = datosConfiguracion.url+ "/files/";
					} 
					else {
						_baseRoute = datosConfiguracion.url+ "/";
					}

					console.log( "el path a los ficheros se corrige" );
						
						if ( typeof config_xml != "undefined" ){
							
							console.log( "533" );

							var _toFind = '<path>.*</path>';
							var _regExp = new RegExp( _toFind, 'g' );
							config_xml = config_xml.replace( _regExp, "<path>"+_baseRoute+"</path>" );
							
							// _toFind = 'src=".*files/';
							// _regExp = new RegExp( _toFind, 'g' );
							// config_xml = config_xml.replace( _regExp, 'src="'+ _baseRoute +'files/' );
							
							console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
						}
						else if ( typeof data_xml != "undefined" ){
							console.log( "537" );

							var _toFind = '<path>.*</path>';
							var _regExp = new RegExp( _toFind, 'g' );
							data_xml = data_xml.replace( _regExp, "<path>"+_baseRoute+"</path>" );

							// _toFind = 'src=".*files/';
							// _regExp = new RegExp( _toFind, 'g' );
							// data_xml = data_xml.replace( _regExp, 'src="'+ _baseRoute +'files/' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
						}
						else if ( typeof master_xml != "undefined" ){
							console.log( "540" );
												
							var _toFind = '<path>.*</path>';
							var _regExp = new RegExp( _toFind, 'g' );
							master_xml = master_xml.replace( _regExp, "<path>"+_baseRoute+"</path>" );

							// _toFind = 'src=".*files/';
							// _regExp = new RegExp( _toFind, 'g' );
							// master_xml = master_xml.replace( _regExp, 'src="'+ _baseRoute +'files/' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto se corrige" );
						}
						else if ( typeof data != "undefined" ){
							console.log( "543" );
							data.replace( "<path>", "<path>"+_baseRoute );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof config_json != "undefined" ){
							if ( typeof config_json.path != "undefined" ){
								console.log( "548" );
								config_json.path = _baseRoute;
							}
							else {
								console.log( "552" );
								// ojo con los slashes
								config_json = config_json.replace( /\"path\":( )*\".*?\"/g, '"path":"'+_baseRoute+'"' );
							}
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof json != "undefined" ){
							console.log( "558" );
							json = json.replace( /\"path\":( )*\".*?\"/g, '"path":"'+_baseRoute+'"' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof jsonp != "undefined" ){ // resulta que generador unir es jsonp
							console.log( "562" );
							// ADDLASHES
							jsonp = jsonp.replace( /\"path\":( )*\".*?\"/g, '"path":"'+_baseRoute+'"' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}
						else if ( typeof storyjs_jsonp_data != "undefined" ){
							console.log( "567" );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
							storyjs_jsonp_data = storyjs_jsonp_data.replace( /\"path\":( )*\".*?\"/g, '"path":"'+_baseRoute+'"' );
						}
						else if ( typeof config_nrd != "undefined" ){
							console.log( "570" );
							// ADDLASHES
							config_nrd = config_nrd.replace( /\"path\":( )*\".*?\"/g, '"path":"'+_baseRoute+'"' );
							console.log( "el path de las imagenes y otros contenidos introducidos como texto NO ha sido posible corregirlo..." );
						}

				}

				loadCss();
			    loadJs();
			});	


		}, function( error ){
			rutaXml = rutaXml.replace( "/js", "");
			requirejs( [ rutaXml ], function(){
				loadCss();
			    loadJs();
			}, function( error ){
				loadVisorError();
			});
		});
	});	

	return;
}

///////
///
/// LOAD CSS 
//
///	FASE 0 .-
//  FASE 1 .-
//
//	deprecated on FASE >= 2 .- 
//
///////

function loadCss(){

	var _tipoObjeto = datosConfiguracion.subtipo;
	var _interfaz = datosConfiguracion.interfaz;

	if ( _interfaz == "secundaria" ){
		_interfaz = "primaria";
	}
		
	var _baseURL = "";
	if ( datosConfiguracion.isSGO ){
		_baseURL = "../../../../../../application/views/go/visores/carcasadinamica/";
	}
	url_interfaz = _baseURL+"core/common/";

	// var cargandoPlaceholder = document.createElement( "div" );
	// cargandoPlaceholder.id = "url_interfaz";
 	// // cargandoPlaceholder.style = 'display = none;';
 	// cargandoPlaceholder.innerHTML = 'Cargando ... .. .';//_baseURL+"core/common/";
 	// document.getElementsByTagName( "body" )[0].appendChild( cargandoPlaceholder );

 	var link;
	
	var listaCSScomun = ["jquery.jscrollpane",
						 "ims.interfaz.common",
						 "ims.actividad.common"];
	if ( _interfaz === "infantil" ){
		listaCSScomun.push( "ims.interfaz.common.infantil" );
	}
	for( unCSS in listaCSScomun ){
		link = document.createElement( "link" );
		link.href = _baseURL+"core/common/css/"+listaCSScomun[unCSS]+".css";
		link.type = "text/css";	
		link.rel = "stylesheet";
		link.media = "screen";
		document.getElementsByTagName( "head" )[0].appendChild( link );
    }
	
	var listaCSSpropio = ["ims.interfaz",
						  "ims.actividad"];
	if( datosConfiguracion.subtipo == "presentacion_avanzada" || datosConfiguracion.subtipo == "presentacion" ){
		listaCSSpropio.push("presentaciones");
	}
    for( unCSS in listaCSSpropio ){
		link = document.createElement( "link" );
		link.href = _baseURL+"core/"+_interfaz+"/"+_tipoObjeto+"/css/"+listaCSSpropio[unCSS]+".css";
		link.type = "text/css";	
		link.rel = "stylesheet";
		link.media = "screen";
		document.getElementsByTagName( "head" )[0].appendChild( link );
    }
    return;
}

function loadJs(){

	var _tipoObjeto = datosConfiguracion.subtipo;
	var _interfaz = datosConfiguracion.interfaz;

	if ( _interfaz == "secundaria" ){
		_interfaz = "primaria";
	}

	var _baseURL = "../";
	if ( datosConfiguracion.isSGO ){
		_baseURL = "../../../../../../application/views/go/visores/carcasadinamica/";
	}

	//DEPENDENCIAS COMUNES
	var listaJS = ["jquery.mousewheel",
    			   "jquery.jscrollpane.min",
    			   "jquery.tooltip.min",
    			   "common"];
	//DEPENDENCIAS PROPIAS
    var listaJSpropio = [];

	switch( _tipoObjeto ){
		case "tipoflechas":
		case "rotulacion":
			listaJS.push( "ims.traza" );
			listaJS.push( "jsDraw2DX" );
			listaJS.push( "ocanvas" );
			listaJSpropio.push( "my.ocanvas" );
			break;
		case "rotulacionaleatorio":
			listaJS.push( "ims.traza" );
			listaJS.push( "ocanvas" );
			listaJSpropio.push( "my.ocanvas" );
			break;
		case "generadorverbal":
		case "generadorarrastrar":
		case "escuchayobserva":
		case "adivinanza":
			listaJS.push("jquery.easing");
			break;
//		case "playermultimedia":
//			listaJSpropio.push("my.function");
//			break;
		case "gestordecapas":
			listaJS.push("jmobile");
			listaJS.push("jquery.easing");
			break;
		case "glosarios":
			listaJS.push("idangerous.swiper");
			listaJS.push("idangerous.swiper.scrollbar-2.2");
			break;
		case "generadorunir":
			listaJS.push("ocanvas-2.5.1.min");
			listaJS.push("jquery.tooltip.min");
			break;
		case "todoscantan":
		case "karaokemultiple":
			listaJS.push("popcorn-complete");
		case "generadorescritura":
			listaJS.push("modernizr");
			listaJS.push("jquery.easing");
			break;
		case "lineatiempo":
			listaJS.push("jquery.touchSwipe.min");
			listaJS.push("html_entity_decode");
			break;
		case "galeria":
			listaJS.push("jquery.touchSwipe.min");
			break;
		case "palabrassobre":
			listaJS.push("ocanvas-2.5.1.min");
			break;
		case "tematico":
		case "ruedapalabras":
		case "operacionescombinadas":
		case "generadorpuntuacion":
		case "escuchoyescribo":
		case "visorpartituras":
		case "complementosverbo":
		case "gforaciones":
		case "escenas":
		case "aquetesuena":
			//ALERT !!! estos no tienen dependencias !????
			break;
		case "lluviapalabras":
	    	listaJS.push("transit");
			break;
		case "palabras":
			listaJS.push("jquery.easing");
	    	listaJS.push("transit");
			listaJS.push("jquery-ui-1.10.3.custom.min");
		case "cronometro":
			listaJS.push("jquery.stopwatch");
			break;
		case "generadormarcar":
	    	listaJS.push("jquery.easing");
			listaJS.push("jquery-ui-1.10.3.custom.min");
			listaJS.push("SCORM_API_wrapper");
			break;
		case "conjugador_euskera":
	    	listaJS.push("hammer.min");
	    	listaJS.push("transit");
	    	break;
		case "generadorortografico":
		case "dictadoOraciones":
		case "analisisMorfologico":
	    	listaJS.push("transit");
			break;
		case "presentacion":
	    	listaJS.push("jquery.easing");
			listaJS.push("jquery-ui-1.10.3.custom.min");
	    	listaJS.push("cufon-yui");
	    	listaJS.push("Rounded.font");
	    	listaJS.push("Rounded_bold.font");
			break;
		case "presentacion_avanzada":
			listaJS.push("jmobile");
			listaJS.push( "ocanvas" );
		    listaJSpropio.push( "myocanvas" );
			break;
		case "atlas":
	    	listaJS.push("hammer.min");
	    	listaJS.push("jquery.metadata");
	    	listaJS.push("jquery.touchwipe.min");
	    	listaJS.push("mbMenu");
			break;
		case "ordenacionpalabras":
		case "ordenacionletras":
		case "dictado":
		case "conjugador":
			listaJS.push("jquery.easing");
			listaJS.push("modernizr");
			listaJS.push("jquery-ui-1.10.3.custom.min");
		    if(_tipoObjeto === "dictado"){
		    	listaJS.push("popcorn-complete");
		    }
		    if(_tipoObjeto === "ordenacionletras"){
		    	listaJS.push("jquery.stopwatch");
		    	listaJS.push("transit");
		    }
		    if(_tipoObjeto === "ordenacionpalabras"){
		    	listaJS.push("SCORM_API_wrapper");
		    	listaJS.push("transit");
		    }
			break;
		case "recurso3d":
			listaJS.push( "three" );
			listaJSpropio.push( "threeCollada" );
		case "testSimple":
		case "testMultiple":
		case "tiposopaletras":
		case "crucigrama": 
		case "textoLibre":
		case "multiplesPreguntas":
		case "desplegable":
		case "arrastrarsoltar":
		case "sopaLetrasmanual":
		case "rotulacionmarcar": 
		case "rotulaciondesplegable":
		default:
			listaJS.push( "jquery.xml2json" );
			listaJS.push( "ims.traza" );
			break;		    
	}
	
    var listaDEPENDENCIAS = [];
    for( unJS in listaJS ){
    	listaDEPENDENCIAS.push( _baseURL+"core/common/js/"+listaJS[unJS] );
    }		   
    var listaDEPENDENCIASpropias = [];
    for( unJS in listaJSpropio ){
    	listaDEPENDENCIASpropias.push( _baseURL+"core/"+_interfaz+"/"+_tipoObjeto+"/js/"+listaJSpropio[unJS] );
    }

    requirejs(["../core/common/js/jquery"], function( jQuery ){
		requirejs( listaDEPENDENCIAS, function(){
	    	requirejs( listaDEPENDENCIASpropias, function(){
				requirejs( [ _baseURL+"core/"+_interfaz+"/"+_tipoObjeto+"/js/ims.interfaz"], function(){
					var base_url_files = base_url_files;
					requirejs( [ _baseURL+"core/"+_interfaz+"/"+_tipoObjeto+"/js/ims.actividad"] );
				});
			});
	    });
	}); 
}

function loadVisorError(){
	
	console.log( "ERROR: resource can't be loaded" );
	
	datosConfiguracion.subtipo = "sopaletrasmanual";

	var _tipoObjeto = datosConfiguracion.subtipo;
	var _interfaz = datosConfiguracion.interfaz;

	loadCss();


	var _baseURL = "";
	if ( datosConfiguracion.isSGO ){
		_baseURL = "../../../../../../application/views/go/visores/carcasadinamica/";
	}

	requirejs(["../core/common/js/jquery"], function( jQuery ){
		
		config_xml = {};
		// $( "#url_interfaz" ).remove();
		
		requirejs( [ _baseURL+"../core/primaria/tiposopaletras/js/ims.interfaz"], function(){

			$("#url_interfaz").remove();
			ims.interfaz.init();

			var _scrImg = _baseURL +"core/common/images/errorLoader.png";

			$( "#visor" ).css({
				"background-repeat": "no-repeat",
				"background-image": "url("+ _scrImg +")",
				"background-position": "center center",
				"background-size": "inherit"
			});

			addButton( "reiniciar", "right", "reiniciar", "reload" );
    		bindClick2Button( "reiniciar", 'recargarPagina()' );
		});
	}); 
}

function recargarPagina(){
	location.reload();
}
