// EL INCREIBLE CARGADOR DINAMICO DE CARCASAS
usingCD = true;
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 = "aquetesuena";
}

// CHECK config URL-PARAM
var uriParams = new getGET();
//CD loaded externally
if ( !datosConfiguracion.isSGO ){

	if(typeof uriParams.url !== "undefined"){
		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{
		//CD loaded from Repository

		console.log( "NO getGET().url >>> SUPOSSED isSGO" );
	}

}

//CD loaded from develop view...do nothing
	// loadCss();
	loadXml();
//###################################################

// ------------------------------------------------------------------------------------------------------------------------------------------------------
var urlFiles;
// ------------------------------------------------------------------------------------------------------------------------------------------------------

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 || '/no_route';
			var _showHeader = uriParams.showHeader || true;

			if ( ( _ruta.indexOf( "index.html" ) === -1 ) ){
				var _isFile = fileExtensionValidator(_ruta);
				//Verificamos que sea archivo multimedia, si no lo es entonces agregamos el index.html si fuera necesario
				if(_isFile === null){
					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+"&showHeader="+_showHeader,
			            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";
		case "ESPP":
			datosConfiguracion.tipo = "recurso";
			return "pasoapaso";
		case "ESSI":
		 	datosConfiguracion.tipo = "recurso";
		 	return "sliderimagenes";
		case "ESR4D":
		 	datosConfiguracion.tipo = "recurso";
		 	return "recurso4d";
		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('?') !== -1)
	    {
	        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(){

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

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

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

	if ( datosConfiguracion.subtipo && datosConfiguracion.subtipo == "noLoad" ){
		try {
			$.get( datosConfiguracion.url+"/index.html", function( data ) {
				window.location.assign( datosConfiguracion.url+"/index.html" );
			});
			return;
		}
		catch( error ){
			loadVisorError();
			return;
		}
	}

	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" );
		if(!datosConfiguracion.url){
			var _rutaURL = window.location.pathname;

			if(_rutaURL.indexOf("index.html") !== -1){
				_rutaURL = _rutaURL.replace( "index.html", "" );
			}

			datosConfiguracion.url = _rutaURL;
			datosConfiguracion.isRepository = true;

			var _idRecurso = _rutaURL.match(/\b((ES[A-Z]{2,3}0*\d{1,9}[0-9])+?)\b/g);
			if(_idRecurso && _idRecurso.length){
				datosConfiguracion.idRecurso = _idRecurso[0];
				datosConfiguracion.subtipo = getTipoRecurso( datosConfiguracion.idRecurso );
			}
		}

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

		if ( datosConfiguracion.url.indexOf( "library" ) === -1 || datosConfiguracion.isRepository){

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

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

	// rutaXml = "kk" + rutaXml ;
	requirejs( ["../core/common/js/jquery"], function( jQuery ){
		rutaXml = replaceMultipleSlashes(rutaXml);
		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;
				}
			}

			rutaPathAzure = replaceMultipleSlashes(rutaPathAzure);
			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 );

					if(objetodigital.idRecurso){
						datosConfiguracion.idRecurso = objetodigital.idRecurso;
						datosConfiguracion.subtipo = getTipoRecurso( datosConfiguracion.idRecurso );
					}
					if(objetodigital.logo) datosConfiguracion.logo = objetodigital.logo;
					if(objetodigital.interfaz) datosConfiguracion.interfaz = objetodigital.interfaz;

					var rutaExternaFiles = rutaPathAzure.replace( "js/objetodigital.js", "" );
					fixFilesPath(rutaExternaFiles);
				}

				loadCss();
			    loadJs();

			}, function(){

				console.log( "NO hay path");

				if ( document.location.href.indexOf( "santillanago.com" ) !== -1 ){
				// if ( document.location.href.indexOf( "192.168.4.210" ) !== -1 ){ // NO ME BORRES QUE ESTOY PARA DEBUG REMOTO DE IPAD

					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 ){
                        _baseRoute = replaceMultipleSlashes(_baseRoute);
						var base_url_files = _baseRoute;
						if( base_url_files.indexOf( "files" ) === -1 ){
							base_url_files = base_url_files + "files/";
						}

						fixFilesPath(base_url_files);

					}
				}
				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" ) === -1 ){
						_baseRoute = datosConfiguracion.url+ "/files/";
					}
					else {
						_baseRoute = datosConfiguracion.url+ "/";
					}

					fixFilesPath(_baseRoute);
				}

				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 = getBaseUrl();
	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",
						 "jquery-ui-widget.min",
						 "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 );
    }

    setLogo();
    return;
}

function loadJs(){

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

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

	var _baseURL = getBaseUrl("../");

	//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("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( "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 "recurso4d":
			listaJS.push( "three" );
            listaJS.push( "hand" );
            listaJS.push( "babylon" );
			listaJSpropio.push( "threeCollada" );
			listaJS.push( "jquery.xml2json" );
			break;
		case "recurso3d":
			listaJS.push( "three" );
			listaJSpropio.push( "threeCollada" );
			listaJS.push( "jquery.xml2json" );
			break;
		case "tiposopaletras":
		case "sopaletrasmanual":
			listaJS.push( "jquery.xml2json" );
			listaJS.push( "ims.traza" );
			break;
//		case "hotspot"://v2
//			listaJS.push( "ims.traza" );
//			listaJS.push("jquery-ui-widget.min");
//			listaJS.push("jquery.connectingLine");
//			listaJS.push("classes/objectManager");
//			break;
		case "pasoapaso":
		case "sliderimagenes":
			listaJS.push("jquery-ui-widget.min");
			break;
		case "testSimple":
		case "testMultiple":
		case "crucigrama":
		case "textoLibre":
		case "multiplesPreguntas":
		case "desplegable":
		case "arrastrarsoltar":
		case "rotulacionmarcar":
		case "rotulaciondesplegable":
		default:
			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 = getBaseUrl();

	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();
}

function setLogo(){
	if ( typeof datosConfiguracion.logo !== "undefined" ){
		var style = document.createElement( 'style' );
		style.type = 'text/css';
		var rutaLogos = datosConfiguracion.url+"/core/common/images/logos/"+datosConfiguracion.logo;
		rutaLogos = replaceMultipleSlashes(rutaLogos);
		if ( datosConfiguracion.isSGO || uriParams.logo ){
			var _location = window.location.host;
			var _pais = _location.split( "." )[0];
			rutaLogos = "http://"+_pais+".santillanago.com/"+_pais+"/uploads/logos/"+datosConfiguracion.logo;
		}
		var _myCSS = ".logo { background: url('"+rutaLogos+".png') no-repeat scroll right top transparent !important; }";
			_myCSS += ".logo { background-size: auto !important; }";
		style.innerHTML = _myCSS;
		document.getElementsByTagName( 'head' )[0].appendChild( style );
    }
}

function fixFilesPath(_filesPath){

	if( !_filesPath.match(/files(?=[^files]*$)/g)){
		if ( _filesPath.lastIndexOf("/") != _filesPath.length - 1 ){
			_filesPath += "/";
		}
		_filesPath += "files/";
	}
	var _toFind = 'files\/(?=[^files\/]*$)';
	var _regExp = new RegExp( _toFind, 'g' );
	var _path = _filesPath.replace( _regExp, '' );

	console.log( "el path a los ficheros se corrige" );

	if ( typeof config_xml != "undefined" ){
		console.log( "tipo: 463" );
		config_xml = replacePath(config_xml, _path, _filesPath);
		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 = replacePath(data_xml, _path, _filesPath);
		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 = replacePath(master_xml, _path, _filesPath);
		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 = replacePath(data, _path, _filesPath);
		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 = _filesPath;
		}
		else {
			// ojo con los slashes
			config_json = config_json.replace( '"path":"', '"path":"'+_path );
		}
	}
	else if ( typeof json != "undefined" ){
		console.log( "tipo: 487" );
		json = json.replace( '"path":"', '"path":"'+_path );
	}
	else if ( typeof jsonp != "undefined" ){ // resulta que generador unir es jsonp
		console.log( "tipo: 492" );
		// ADDLASHES
		jsonp = jsonp.replace( '"path":"', '"path":"'+_path );
	}
	else if ( typeof storyjs_jsonp_data != "undefined" ){
		console.log( "tipo: 496" );
		storyjs_jsonp_data = storyjs_jsonp_data.replace( '"path":"', '"path":"'+_path );
	}
	else if ( typeof config_nrd != "undefined" ){
		console.log( "tipo: 499" );
		// ADDLASHES
		config_nrd = config_nrd.replace( '"path":"', '"path":"'+_path );
	}
}

function replacePath(_obj, _path, _filesPath){
console.log('document_path', _path, 'files_path', _filesPath);
	_obj = _obj.replace( /src=\"http:\/\/.*?.santillanago.com\/.*?\/archivos\/archivos\/.*?\/files\//gi, 'src="'+_filesPath );
	//atlas
	_obj = _obj.replace( /\[CDATA\[http:\/\/.*?.santillanago.com\/.*?\/archivos\/archivos\/.*?\/files\//gi, '\[CDATA\['+_filesPath );
	_obj = _obj.replace( "<path>", "<path>"+_path );
	var _toFind = 'src="files/';
	var _regExp = new RegExp( _toFind, 'g' );
	_obj = _obj.replace( _regExp, 'src="'+_filesPath );
	var _toFind = 'files//';
	var _regExp = new RegExp( _toFind, 'g' );
	_obj = _obj.replace( _regExp, 'files/' );
	return _obj;
}

function replaceMultipleSlashes(_content){
	return _content.replace(/\b(\/[\/]*\/)\b/g, "/");
}

function getBaseUrl(_baseUrl){
	if(!_baseUrl){
		_baseUrl = "";
	}
	if ( datosConfiguracion.isSGO ){
		_baseUrl = "../../../../../../application/views/go/visores/carcasadinamica/";
	}
	return _baseUrl;
}

function fileExtensionValidator(_content){
	return _content.toLowerCase().match(/^.*\.(mp3|mp4|m4a|flv|f4v|avi|jpg|png|gif|doc|docx|pdf)$/);
}
