// 安卓TV端专用：上下左右移动、选中跳转
var keyTypeMap = {
    'key_up': 'keyup',
    'key_down': 'keydown'
}
var keyCodeMap = {
    'KEY_SELECT': 13,
    'KEY_BACK': 27,
    'KEY_UP': 38,
    'KEY_RIGHT': 39,
    'KEY_DOWN': 40,
    'KEY_LEFT': 37,
}

function getUrlValue(name) {
    return new URLSearchParams(location.search).get(name)
}

function boxEventHandler(type, keyCode) {
    console.log('返回键')
    if (type === 'key_up' && keyCode === 'KEY_SELECT') {
        console.log('返回键123')
        if (typeof efunboxJS !== 'undefined') {
            efunboxJS.clickMusic('1', '1')
        }
    }
    var leaf = FocusEngine.getFocusedLeaf();
    var eid = document.getElementById(leaf.id);
    var evt = document.createEvent('Event');
    evt.initEvent(keyTypeMap[type], true, true);
    evt.keyCode = keyCodeMap[keyCode];
    eid.dispatchEvent(evt);
}

function login() {
    if (typeof efunboxJS != "undefined") {
        efunboxJS.getUserPhone();
    }
}

function buy(json) {
    const buyData = JSON.stringify(json)
    if (typeof efunboxJS != "undefined") {
        efunboxJS.toPay(buyData)
        // efunboxJS.getUserPhone();
    }
}

function payBack(data) {
    this.moye.curScene.buySuccess(data)
}

function speak(text, flag) {
    try {
        if (flag) {
            if (typeof efunboxJS != "undefined") {
                efunboxJS.speak(text, true)
            }
        } else {
            if (typeof efunboxJS != "undefined") {
                efunboxJS.speak(text, false)
            }
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}

function handleIntent(name, slots) {
    if (name === 'ai.dueros.common.default_intent') {
        speak('我没听清，可以点击触屏进行操作');
        return false;
    }
    this.moye.curScene.aiHandle(name, slots)
}

function loginBack(phone) {
    localStorage.setItem('phone', phone)
    this.moye.curScene.loginSuccess(phone);
    // this.moye.curScene.loginSuccess(phone)
}

function clickMp3() {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.clickMusic('10', '10')
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}

// 答对音效
function rightMp3() {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.startCorrect('10', '10')
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 答错音效
function wrongMp3() {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.startWrong('10', '10')
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}

// 调用android方法，销毁webview后重新load首页，解决webview内存溢出问题
var firstTimestamp = Date.parse(new Date());

function restartWebView() {
    if (typeof efunboxJS != "undefined") {
        // 每次判断是否累加到指定时间，决策是否执行重载
        if (Date.parse(new Date()) - firstTimestamp > 30 * 60 * 1000) {
            firstTimestamp = Date.parse(new Date());
            
            if (typeof efunboxJS != "undefined") {
                efunboxJS.reloadMain();
            }
        }
    }
}
// 安卓日历回调
function getAndroidDate(year, month, day) {
    console.log(year, month, day)
    this.moye.curScene.getDate(year, month, day)
}
// 配音秀获取测评结果
function engineCallBack(json) {
    this.moye.curScene.getResult(json)
}
// 配音秀上传视频完成
function uploadCallBack(obj) {
    console.log('uploadCallBack')
    this.moye.curScene.getUpLoadUrl(obj)

}
// 获取手机号
function getPhone() {
    console.log(1111)
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.showPhoneNumberLogin()
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 安卓回调获取手机号
function phoneLogin(phoneNumber) {
    this.moye.curScene.getPhoneLogin(phoneNumber)
}
// 安卓回调验证码登陆成功
function phoneSuccess(data) {
    this.moye.curScene.phoneSuccess(data)
}
// 安卓关闭授权弹窗
function closeLogin(code) {
    if (getUrlValue('version') * 1 > 10010) {
        // 如果不是在首页直接关闭
        console.log('关闭了')
        if (document.querySelector('#ChineseMath').style.visibility === 'hidden') {
            console.log('不是在首页关闭')
            this.moye.hideScene({}, "ChineseMath")
        }
    } else {
        this.moye.curScene.closeLogin(code);
    }
}
// 华为一键登录
function huaweiLoginSuccess(data) {
    this.moye.curScene.huaweiLogin(data)
}
// 安卓调用切换手机号
function changePhoneLogin(phoneNumber) {
    this.moye.curScene.changePhone()
}
// 安卓存储第几次进来
function androidSetStorage(key, data) {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.setPreData(key, data)
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}

function androidGetStorage(key) {
    try {
        if (typeof efunboxJS != "undefined") {
            return efunboxJS.getPreData(key)
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}

function changeColor(color) {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.setBackGround(color)
        }
    } catch (err) {
        console.log('错误', err)
    }
}

function showPhoneNumberLogin() {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.showPhoneNumberLogin()
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 新的登录
function newLogin() {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.showPhoneNumberLoginLandscape()
        }
    } catch(error) {
        console.log('没有安卓方法', err)
    }
}
// 支付回调
function commonPayResult(num) {
    console.log(num)
    if (num == 0) {
        // 支付成功
        console.log('paySuccess')
        this.moye.curScene.paySuccess();
    } else if (num == -2) {
        console.log('userCancel')
        // 支付取消
        this.moye.curScene.payCancel();
    } else {
        console.log('payFail')
        // 支付失败
        this.moye.curScene.payFail();
    }

}
// 设置屏幕
function setScreen(num) {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.setScreenOriention(num)
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 重新加载页面
function setScreen(num) {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.setScreenOriention(num)
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 重新加载页面
function relWebView() {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.relWebView()
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 安卓提示窗
function toast(str) {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.showToast(str)
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}
// 删除用户
function removeUser(str) {
    try {
        if (typeof efunboxJS != "undefined") {
            efunboxJS.removeSPUserPhone()
        }
    } catch (err) {
        console.log('没有安卓方法产生的', err)
    }
}

// 手机没有安装微信
function noWeChat() {
    if (this.moye.curScene.noWeChat) {
        this.moye.curScene.noWeChat();
    }
}
// 支付
function huaweiOrder(data) {
    try {
        data = JSON.stringify(data)
        efunboxPay.HuaWeiPay(data)
    } catch (err) {
        console.log('没有华为支付', err)
    }
}
// 华为支付成功
function huaweiOrderSuccess(data) {
    console.log('------------hhhhh', this.moye.curScene)
    this.moye.curScene.huaweiNotify(data);
}
// 查询华为有没有掉单
function huaweiIsFail() {
    try {
        efunboxPay.checkDropOrder()
    } catch (err) {
        console.log('没有华为支付', err)
    }
}
// 掉单查询
function checkDropOrder(data) {
    this.moye.curScene.huaweiCheckDropOrder(data);
}
// 华为查询失败订单
function huaweiOrderList(data) {
    try {
        efunboxPay.huaweiConsumeOwned(data, "")
    } catch (err) {
        console.log('没有华为支付', err)
    }
}
// 华为发货是否成功
function huaweiConsumeOwned(data, orderId) {
    this.moye.curScene.huaweiConsumeOwned(data);
}
// 天猫登录
function getTBUser() {
    try {
        if (typeof efunboxJS != "undefined") {
            return efunboxJS.getTBUserData()
        }
     } catch (err) {
         console.log('没有天猫登录方法', err)
     }
}
// 天猫语音
function TMailASR(data) {
    this.moye.curScene.TMailASRWeb(data);
}
// 天猫支付
function TBbuy(data) {
    try {
        efunboxPay.TMailPay(data)
    } catch (err) {
        console.log('没有天猫支付方法', err)
    }
}
// 天猫支付成功
function AliPayCallBack(flag, data) {
    this.moye.curScene.TMBuySuccess(flag, data);
}

function xiaoAiPayBack(json) {
    let res = JSON.parse(json);
    this.moye.curScene.xiaoMiPayBack(res);
}