package com.jcf.sportpager;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.widget.Toast;

import com.google.gson.Gson;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.Vector;

/**
 * Created by jon on 24/08/2016.
 */
public class Navegador extends Activity
{
    WebView navegador;
    final InterfazComunicacion miInterfazJava = new InterfazComunicacion(this);

    @Override
    @SuppressLint("JavascriptInterface")
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.navegador);
        navegador = (WebView) findViewById(R.id.webkit);
        Aplicacion.setNav(navegador);
        //navegador.loadUrl("file:///android_asset/index.html");
        navegador.getSettings().setJavaScriptEnabled(true);
        navegador.loadUrl("file:///android_asset/index.html");
        navegador.addJavascriptInterface(miInterfazJava, "jsInterfazNativa");
        if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
            WebView.setWebContentsDebuggingEnabled(true);
        }

    }

    /*
    jsInterfazNativa.obtenerJugador1(); asi me comunico con java // lado js

    @JavascriptInterface    // lado java
    public String obtenerJugador1()
    {
        if(nombreJ1 == null) return "Jugador 1";
        return nombreJ1;
    }
    */

    public class InterfazComunicacion
    {
        Context mContext;

        InterfazComunicacion(Context c)
        {
            mContext = c;
        }

        @JavascriptInterface
        public void mensaje(String contenido)
        {
            Toast.makeText(mContext, contenido, Toast.LENGTH_SHORT).show();
        }

        @JavascriptInterface
        public long storeSportPager(String jsonString, String tipo)
        {
            //Toast.makeText(mContext, "storeSportPager", Toast.LENGTH_SHORT).show();
            long rowId = -1;
            try
            {
                JSONObject obj = new JSONObject(jsonString);
                rowId = Aplicacion.insertarSportPager(obj, tipo);
                if (rowId >= 0)
                {
                    obj.put("rowId", rowId);
                    obj.put("firebase_id", Aplicacion.getDispositivoId());
                    String mensaje = obj.toString();
                    RestPost rp = new RestPost();
                    String ruta = Aplicacion.URL_SERVER + "/sportpager/crear";
                    rp.execute(ruta, mensaje);
                }
            }
            catch (JSONException e)
            {
                e.printStackTrace();
            }
            return rowId;
        }

        @JavascriptInterface
        public String recallSportPagers(String tipo)
        {
            Gson gson = new Gson();
            Vector<SportPager> spv = Aplicacion.cargarSportPagerVector(tipo);

            String ret = gson.toJson(spv);
            return ret;

            //Aplicacion mAplicacion = (Aplicacion)getApplicationContext();
            //Vector<SportPager> spv = Aplicacion.getSportPagerVector();
            //JSONArray spa = Aplicacion.getSportPagerArray();
            //navegador.loadUrl("javascript:clearSpArray()");
            /*
            for (SportPager elemento : spv)
            {
                String urlSP = "javascript:addToSpArray(" + elemento.getSp().toString() + ")";
                navegador.loadUrl(urlSP);
            }
            */
        }

        @JavascriptInterface
        public int nuevosSPDisponibles()
        {
            int ret;
            ret = Aplicacion.getActualizarWebView();
            //Aplicacion.setActualizarWebView(0);
            return ret;
        }

        @JavascriptInterface
        public void eliminarSP(int rowId)
        {
            Log.i("Navegador", "eliminarSP, rowId = " + rowId);
            Aplicacion.eliminarSP(rowId);
        }

        @JavascriptInterface
        public void MiLog(String s)
        {
            Log.i("Navegador", "MiLog: " + s);
        }
    }
}
