// --------------------------------------------------------------------------------------------------------------------
// FUNCIONES DE AYUDA
// --------------------------------------------------------------------------------------------------------------------
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 retorno(){
    history.back();
}

$(document).ready(function() {
    if (typeof(config_json) == "undefined") {
        if ($(config_xml).find('primaria').text() == '1') {
            $('body').addClass('infantil');
        }
        else {
            $('body').addClass('secundaria');
        }
    } 
    else {
        if (config_json.primaria == '1') {
            $('body').addClass('infantil');
        }
        else {
            $('body').addClass('secundaria');
        }
    }
});

//funciones comunes a todos los NRD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function initWindowListener(){
    // window.addEventListener( "scroll", function(){ resizeLimit() }, false );
    window.addEventListener( "resize", function(){ resizeLimit() }, false );
    window.addEventListener( "load", function(){ resizeLimit() }, false );
    // if ( isMobile ){
    //     document.addEventListener( "touchmove", preventMove(), false );    
    // }
}
// function preventMove( e ) {
//     e.preventDefault();
//     return false;
// }
function initNRD() {
    document.title = "Santillana";
//    $("body").addClass( NRD.configuracion.interfaz );
    $( "#url_interfaz, .ui-page, .ui-loader" ).remove();
    loadConfigData();
    loadAudioFiles();
    ims.interfaz.init();
    inmediastudio.TRAZA.init();
    // AleD todo... ES.introduccion.texto1... feo...
    if ( typeof editable === "undefined" && typeof configJson.ES.introduccion.texto1 !== "undefined" && configJson.ES.introduccion.texto1 != "" ) {
        loadIntroduccion();
    }
    else {
        loadNRD();
    }
    // añadir funcionalidad de resaltado para dispositivos moviles ....... esto debería de ir al final, o no ir...
    // if ( isMobile ){
    //     $(".disabled").bind( "touchend", function(){
    //         $(this).addClass( "active" );
    //     })
    //     .bind( "touchstart", function() {
    //         $(this).removeClass( "active" );
    //     });
    // }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function reiniciar(){
    if ( !$("#reiniciar").hasClass("disabled") ){
        $("#limit").remove();
        ims.interfaz.init();
        loadNRD();
        if ( !ims.interfaz.sound ) {
            mute();
        }
    }
}
function anterior() {
    if ( !$("#anterior").hasClass("disabled") ){
        $("#limit").remove();
        ims.interfaz.init();
        loadIntroduccion();
    }
}
function siguiente() {
    if ( !$("#siguiente").hasClass("disabled") ){
        $("#limit").remove();
        ims.interfaz.init();
        loadNRD();
    }
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////
function mute(){
    $('.tooltip').remove();
    $('#silenciar').attr('title', $(config_xml).find("silenciar").text());
    $('#silenciar').removeClass('silenciar');
    $('#silenciar').addClass('silenciar_on');
    if ( !isMobile ) {
        $('#silenciar').tooltip();
    }
    bindClick2Button("silenciar", "play()");
    ims.interfaz.disableSound();
}
function play(){
    $('.tooltip').remove();
    $('#silenciar').attr('title', $(config_xml).find("silenciar").text());
    $('#silenciar').removeClass('silenciar_on');
    $('#silenciar').addClass('silenciar');
    if ( !isMobile ) {
        $('#silenciar').tooltip();
    }
    bindClick2Button("silenciar", "mute()");
    ims.interfaz.enableSound();
}
function imprimir() {
    window.open( $(config_xml).find("urlimprimir").text(), "Santillana", 'width=800, height=600' );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function sanitizeXML( text, id ){
    if ( text.indexOf("<"+id+">") == -1 ){
        return text;
    }
    return text.slice( text.indexOf("<"+id+">")+id.length+2, text.indexOf("</"+id+">") );
}
function sanitizeXMLp( text ){
    return sanitizeXML( text, "p" );
}
function sanitizeXMLb( text ){
    return sanitizeXML( text, "b" );
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function addButton( idBoton, posicionBoton, botonCSS, textoTooltip ) {
    if ( textoTooltip == '' || !textoTooltip ) {
        console.log( "Especifique el textoTooltip" );
        console.log( "textoTooltip no valida" );
        return;
        //textoTooltip = idBoton;
    } 
    if ( posicionBoton != "left" && posicionBoton != "right" ) {
        console.log( "Especifique la capa" );
        console.log( "Capa no válida" );
        return;
    }
    if ( isAndroid && showHeader ){
        posicionBoton = "left";
    }
    var _boton = '<div id="'+ idBoton +'" class="boton '+ posicionBoton +' sprite '+ botonCSS +' tool" title="'+ textoTooltip +'"></div>';
    $( "#"+ posicionBoton ).append( _boton );
}
function enableButton( idBoton ) {
    $( "#"+ idBoton ).removeClass( "disabled" );
}
function disableButton( idBoton ) {
    $( "#"+ idBoton ).addClass( "disabled" );
}
function bindClick2Button( idBoton, funcion ) {
    $( "#"+ idBoton ).unbind();
    $( "#"+ idBoton ).bind( "click", function(){
        eval( funcion );
    });
}
function addPopup( id, titulo, texto ) {
    var c = '<div id="pop_up_'+ id +'" class="pop_up" ><div class="pop_up_top"><div class="pop_up_title">'+ titulo +'</div><div id="pop_up_close_'+ id +'" class="pop_up_close sprite"></div></div><div id="pop_up_content_'+ id + '" class="pop_up_content">'+ texto +'</div></div>';
    $("#overall").append( c );
    $( '#pop_up_close_'+ id ).bind( "click" , function(){
        $("#pop_up_"+ id).hide();
    });
}
function showPopUp( a ){
    if ( !$("#"+a).hasClass("disabled") ){
        $("#pop_up_"+ a ).show();
    }
}
//###funciones comunes a todos los NRD %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function loadAudioFiles(){
    ims.interfaz.setSound('good', url_interfaz+'audio/good.mp3');
    ims.interfaz.setSound('rBad', url_interfaz+'audio/result_bad.mp3');
    ims.interfaz.setSound('rGood', url_interfaz+'audio/result_good.mp3');
    ims.interfaz.setSound('beep_select', url_interfaz+'audio/beep_select.mp3');
}
function loadConfigData(){
    configJson = $.extend( configJson, $.xml2json( config_xml ) );
    config_xml = $.parseXML( config_xml );
    url_files = configJson.path;
    NRD.configuracion.rutaFiles = url_files;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function loadHeader() {
    var tituloIntroduccion = configJson.ES.introduccion.titulo;
    $( "#headerText" ).append( tituloIntroduccion );
}
function loadFondo(){
    var ALTO_HEADER = 82;
    var foto = configJson.ES.pregunta.foto;
    if ( !foto || foto == "" ){
        return;
    }
    var width = foto.width+"px" || "100%";
    var height = foto.height+"px" || "100%";
    var x = foto.x || 0 ;
    var y = foto.y || 0;
    var rotation = foto.rotation || 0;
    var urlFoto = "files/";
    // console.log( foto );
    // var altoHeader = 0;
    // if ( !showHeader ){
    //     y = y - ALTO_HEADER;
    // }
    if ( showHeader ){
        y = parseInt( y ) + ALTO_HEADER;
    }

    if ( NRD.configuracion.rutaFiles && NRD.configuracion.rutaFiles != "" ){
        urlFoto = NRD.configuracion.rutaFiles;
    }
    urlFoto = urlFoto + foto;
    $('#fondo').css( {
        "background-image": "url("+urlFoto+")",
        "background-size": width + " " + height,
        "width": width,
        "height": height,
        "top": y +"px",
        "left": x +"px",
        "-ms-transform": "rotate("+rotation+"deg)", /* IE 9 */
        "-webkit-transform": "rotate("+rotation+"deg)", /* Chrome, Safari, Opera */
        "transform": "rotate("+rotation+"deg)"
    });
}
function loadBottombarButtons(){
    var _palabras = configJson.ES.palabras;
    var silenciar = _palabras.silenciar;
    var ayuda = _palabras.ayuda;
    var comprobar = _palabras.comprobar;
    var clave = _palabras.desarrollo;
    var imprimir = _palabras.imprimir;
    var versolucion = _palabras.solucion || _palabras.versolucion || "";
    var reiniciar = _palabras.reiniciar;
    var volver = _palabras.volver || "";

    if ( $(config_xml).find("sonido").text() != '' ){
        addButton( "pausar", "left", "pause", $(config_xml).find("pausa").text() );
        addButton( "player", "left", "play", $(config_xml).find("reproducir").text() );
    }

    if ( !isMobile ){
        addButton( "silenciar", "left", "silenciar", silenciar );
        if ( ims.interfaz.sound ) {
            bindClick2Button( "silenciar", "mute()" );
        }
        else {
            bindClick2Button( "silenciar", "play()" );
        }
    }

    if ( !isMobile && $(config_xml).find("urlimprimir").text().length > 0 ){
        addButton( "imprimir", "left", "imprimir", imprimir );
        bindClick2Button( "imprimir", "imprimir()" );
    }

    if ( typeof configJson.ES.introduccion.texto1 !== "undefined" && configJson.ES.introduccion.texto1 != "" ) {
        addButton( "anterior", "left", "anterior", volver );
        bindClick2Button( "anterior", 'anterior()' );
    }
    
    if ( getGET().re == 1 ) {
        addButton( 'retorno', 'left', 'retorno', 'Retornar' );
        enableButton( 'retorno' );
        bindClick2Button( "retorno", 'retorno()' );
    }
    

    addButton("ayuda", "right", "ayuda", ayuda );
    disableButton( "ayuda" );
    if ( typeof configJson.ES.ayuda != "undefined" ){
        bindClick2Button( "ayuda", 'showPopUp( "ayuda" )' );
        enableButton( "ayuda" );
        var ayudaTit = configJson.ES.ayuda.titulo || "Help";
        ayudaTit = sanitizeXMLb( ayudaTit );
        var ayudaTex = configJson.ES.ayuda.texto1 || ""; 
        addPopup( "ayuda", ayudaTit, ayudaTex );
    }

    addButton( "comprobar", "right", "comprobar", comprobar );
    bindClick2Button( "comprobar", 'comprobar()' );
    disableButton( "comprobar" );

    addButton( "versolucion", "right", "versolucion", versolucion );
    if ( inmediastudio.TRAZA.mostrarSolucion ){ 
        bindClick2Button("versolucion", "versolucion()");
        disableButton("versolucion");
    }

    addButton( "clave", "right", "clave", clave );
    bindClick2Button( "clave", 'showPopUp( "clave" )' );
    disableButton( "clave" );
    if (  configJson.ES.palabras.claves != "" && inmediastudio.TRAZA.mostrarSolucion && typeof configJson.ES.solucion != "undefined" ){ 
        var claveTitulo;
        var claveTexto;
        claveTitulo = configJson.ES.palabras.claves;
        claveTexto = configJson.ES.solucion.texto1 || "";
        addPopup( "clave", claveTitulo, claveTexto );
    }

    addButton( "reiniciar", "right", "reiniciar", reiniciar );
    bindClick2Button( "reiniciar", 'reiniciar()' );
    disableButton("reiniciar");
       
    // if ( configJson.ES.palabras.ayuda && configJson.ES.ayuda && configJson.ES.ayuda.texto1 != "" ) {
    //     enableButton( "ayuda" );
    //     var ayudaTit = configJson.ES.ayuda.titulo;
    //     ayudaTit = sanitizeXMLb( ayudaTit );
    //     var ayudaTex = configJson.ES.ayuda.texto1; 
    //     addPopup( "ayuda", ayudaTit, ayudaTex);
    // }
}
function loadIntroduccion() {
    loadHeader();
    var tituloIntroduccion = configJson.ES.introduccion.titulo;
    var textoIntroduccion = configJson.ES.introduccion.texto1;
    //textoIntroduccion = sanitizeXMLp( textoIntroduccion );
    tituloIntroduccion = sanitizeXMLp( tituloIntroduccion );
    //$( "#visor" ).append('<div id="introTitle">'+ tituloIntroduccion +'</div><div id="introText">'+ textoIntroduccion +'</div>');
    $( "#visor" ).append('<div id="introText">'+ textoIntroduccion +'</div>');
    var textoBotonSiguiente = configJson.ES.palabras.comenzar;
    addButton( "siguiente", "right",  "siguiente", textoBotonSiguiente );
    bindClick2Button( "siguiente", 'siguiente()' );
    if ( getGET().re == 1 ) {
        addButton( 'retorno', 'left', 'retorno', 'Retornar' );
        enableButton( 'retorno' );
        bindClick2Button( "retorno", 'retorno()' );
    }
    resizeLimit();
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var zoomRatio = 1;
function resizeLimit() {
    var a = $(document).width();
    var b = $(document).height();
    var c = $(window).width();
    var d = $(window).height();
    var widthLimit = 1024;
    var heightLimit = 636;
    if ( isAndroid && showHeader ){
        widthLimit = 1091;
        heightLimit = 600;
    }
    if ( isAndroid && !showHeader ){
        heightLimit = 515;
    }
    if ( !isAndroid && !showHeader ){
        heightLimit = 551;
    }
    if ( typeof editable == "undefined" ) {
        if ( isMobile ) {
            if ( a/widthLimit <= d/heightLimit ) {
                zoomRatio = c/widthLimit;
            } 
            else {
                zoomRatio = d/heightLimit;
            }
        }
        else {
            if ( a < widthLimit || b < heightLimit ) {
                if ( a/widthLimit <= b/heightLimit ) {
                    zoomRatio = c/widthLimit
                }
                else {
                    zoomRatio = d/heightLimit
                }
            }
        }
        if ( zoomRatio != 1 ) {
            $("#limit").css({
                "zoom": zoomRatio
                // "transform": "scale("+ zoomRatio +")",
                // "-moz-transform": "scale("+ zoomRatio +")",
                // "-webkit-transform": "scale("+ zoomRatio +")"
            });
        }
        // $("#limit").css( "margin-top", Math.round( ( d - heightLimit*zoomRatio )/2 ) );
        // $("#limit").css( "margin-left", "auto" );
    }
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
function showResults( a ) {
    $("#center").append( a );
    // a = a.replace("<p>", "").replace("</p>", "").split("/");
    // var b = '';
    // if ( a[1].length > 2 ) b = ' style="font-size: 20px;"';
    // $("#center").append("<p"+ b +">"+ a[0] +" / "+ a[1] +"</p>");
}
function showStars( d ) {
    var e = [];
    for (var n = 0; n <= 5; n++) {
        var f = "st_" + d.attr("id") + "_" + n;
        var g = parseInt(d.offset().left - $("#visor").offset().left),
            myY = parseInt(d.offset().top - $("#visor").offset().top);
        var h = $("<div/>").addClass("stars").attr("id", f).css({
            top: myY,
            left: g
        });
        e.push(f);
        $("#visor").append(h);
    }
    var j = 0,
        mLeft = 0,
        index = 0,
        second = false;
    $.each(e, function(i, a) {
        var b = $("#" + a);
        index++;
        if (index <= 3 && second == false) {
            var c = index + "0";
            j = parseInt( b.css("top") ) - parseInt(c);
            b.css("left", parseInt( b.css("left") ) + d.width());
            mLeft = parseInt( b.css("left") ) + parseInt(c);
        } 
        else {
            if (index > 3) {
                index = 0;
                second = true;
            }
            var c = index + "0";
            j = parseInt(b.css("top")) - parseInt(c);
            mLeft = parseInt(b.css("left")) - parseInt(c);
        }
        b.animate({
            top: j,
            left: mLeft,
            opacity: "0.25"
        }, 1000, function() {
            $(".stars").remove()
        });
    })
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var showHeader = true;
if ( getGET().showHeader === "false" ) {
    showHeader = false;
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
var isAndroid = navigator.userAgent.match(/Android/i) != null;
var isiOS = navigator.userAgent.match(/(iPad)|(iPhone)|(iPod)/i) != null;
var isIE = $.browser.msie;
var isMoz = $.browser.mozilla;
var isOp = $.browser.opera;
var version = parseInt( $.browser.version );
// AleDdebug
// isAndroid = true;
var isMobile = ( isiOS || isAndroid );
// #AleDdebug
//////////////////////////// AleD todo, a ver la mierda del introduce_retorno...
if (typeof ims == "undefined") {
    var ims = {
        test: function() {
            console.log("ims existe")
        }
    }
}
ims.interfaz = {
    sound: true,
    iecompatible: true,
    ie8compatible: true,
    Mp3Mp4compatible: true,
    zoomRatio: 1,
    audios: [],
    init: function() {
        if ( (!isMobile && isIE) || (!this.Mp3Mp4compatible) ) {
            if ((!this.Mp3Mp4compatible) || (!this.iecompatible) || (version <= 7) || ((version == 8) && !this.ie8compatible)) {
                $("body").append('<div class="changeBrowser">Este recurso no es compatible con esta versión de navegador. Le recomendamos usar la ultima versión de Chrome o Safari.<br />Copie el siguiente enlace en su navegador para ver el recurso:<br /><br />' + $(location).attr('href') + '</div>');
                $(".ui-page").remove();
                $("body").css({
                   'background-color': '#78c3ed'
                });
                $(".changeBrowser").css({
                    'background-color': '#ffffff',
                    'width': '800px',
                    'margin': '50px auto 0px auto',
                    'padding': '20px',
                    'overflow': 'auto'
                });
                throw "stop execution";
            }
        }
        $("body").append('<div id="limit"><div id="carcasa"><div id="overall"></div><div id="content"><div id="fondo"></div><div id="visor"></div><div id="bottombar"><div id="left"></div><div id="center"></div><div id="right"></div></div></div></div></div>');
        if( showHeader ){
            $("#content").prepend('<div id="header"><div id="headerText"></div><div id="headerLogo" class="sprite logo"></div></div>');
        }
        else {
            $("body").addClass('noHeader');
        }
        if ( isAndroid ){
            $("body").addClass('isAndroid');
        }
        if ( isiOS ){
            $("body").addClass('isiOS');
        }
        resizeLimit();
    },
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    setSound: function(a, b) {
        if (isIE && version <= 8) {
            this.audios[a] = b;
            return
        } 
        else {
            $("body").append('<audio class="imsAudio" id="'+ a +'" name="'+ a +'" src="'+ b + '" preload="auto"></audio>')
        }
    },
    loadSound: function(a, b) {
        $("body").append('<audio class="audioFile" id="audio_'+ a +'" name="'+ a +'" src="'+ b +'" preload="auto"></audio>');
    },
    playSound: function(a) {
        $(".imsAudio").each(function() {
            if ($(this)[0].currentTime != 0) {
                $(this)[0].pause();
                $(this)[0].currentTime = 0
            }
        });
        if (this.sound) {
            if (isIE && version <= 8) {
                $("body").append('<bgsound src="' + this.audios[a] + '"  AUTOSTART="TRUE"></bgsound>');
                return
            };
            $("#" + a)[0].play()
        }
    },
    pauseSound: function(a) {
        $("#" + a)[0].pause()
    },
    enableSound: function() {
        this.sound = true
    },
    disableSound: function() {
        this.sound = false
    },
    getSkin: function(){
        if ( typeof datosConfiguracion == "undefined" ){
            datosConfiguracion = {};
            datosConfiguracion.interfaz = "primaria";
        }
        return datosConfiguracion.interfaz;
    },
    setHeightLimit: function(){},
    setWidthLimit: function(){},
    addButton: function( a, b , c, d ){
        addButton( a, b, c, d );
    },
    bind: function( a, b ){
        $("#" + a).bind("click", function(){
            eval(b)
        });
    },
    enable: function( a ){
        $("#"+a).addClass("notdisabled");
        enableButton( a );
    }
};
