﻿
var HOOEASY = function () {
    var url = window.location.href.split('#')[0];
    var isWxClient = function () {
        var ua = navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == "micromessenger") {
            return true;
        }
        return false;
    };

    var isHooeasy = function () {
        var ua = navigator.userAgent.toLowerCase();
        if (ua.match(/hooeasy/i) == "hooeasy") {
            return true;
        }
        return false;
    };

    var wxConfig = function (configUrl) {
        $.ajax({
            //请求方式
            type: "POST",
            //请求地址
            url: configUrl || "/ServiceSite/HomePage/JsWxConfig",
            contentType: "application/json;charset=UTF-8",
            data: JSON.stringify({ url: url }),
            //请求成功
            success: function (result) {
                //alert(JSON.stringify(result));
                if (result.success) {
                    wx.config({
                        debug: false,
                        appId: result.data.appId,
                        timestamp: result.data.timestamp,
                        nonceStr: result.data.nonceStr,
                        signature: result.data.signature,
                        jsApiList: [
                            'checkJsApi',
                            'updateAppMessageShareData',
                            'updateTimelineShareData',
                            'hideMenuItems',
                            'showMenuItems',
                            'hideAllNonBaseMenuItem',
                            'showAllNonBaseMenuItem',
                            'translateVoice',
                            'startRecord',
                            'stopRecord',
                            'onVoiceRecordEnd',
                            'playVoice',
                            'onVoicePlayEnd',
                            'pauseVoice',
                            'stopVoice',
                            'uploadVoice',
                            'downloadVoice',
                            'chooseImage',
                            'previewImage',
                            'uploadImage',
                            'downloadImage',
                            'getNetworkType',
                            'openLocation',
                            'getLocation',
                            'hideOptionMenu',
                            'showOptionMenu',
                            'closeWindow',
                            'scanQRCode',
                            'chooseWXPay',
                            'openProductSpecificView',
                            'addCard',
                            'chooseCard',
                            'openCard'
                        ]
                    });
                    wxReady(result.shareData);
                }
                else {
                    setTimeout(function () { wxConfig(configUrl); }, 1000);
                }
            },
            fail: function (e) {
                //alert(JSON.stringify(e));
            },
            error: function (e) {
                //alert(JSON.stringify(e));
                setTimeout(function () { wxConfig(configUrl); }, 1000);
            }
        });
    }
    var wxReady = function (shareData) {
        wx.ready(function () {
            wx.checkJsApi({
                jsApiList: ['scanQRCode'],
                success: function (res) {
                    //alert(JSON.stringify(res));
                },
                fail: function (e) {
                    alert(JSON.stringify(e));
                },
                error: function (e) {
                    alert(JSON.stringify(e));
                }
            });

            wx.hideOptionMenu();
            wx.showMenuItems({
                menuList: [
                    'menuItem:share:timeline',
                    'menuItem:share:appMessage',
                    'menuItem:copyUrl',
                    "menuItem:share:qq",
                    "menuItem:share:QZone",
                    "menuItem:favorite",
                ],
            });
            //分享朋友或qq jssdk1.4 注意要在分享按钮前
            wx.updateAppMessageShareData({
                title: shareData.title, // 分享标题
                desc: shareData.desc, // 分享描述
                link: shareData.url,
                imgUrl: shareData.imgUrl, // 分享图标
                success: function (rs) {
                }
            })
            //分享到朋友圈或qq空间   jssdk1.4
            wx.updateTimelineShareData({
                title: shareData.title, // 分享标题
                link: shareData.url, // 分享链接，该链接域名或路径必须与当前页面对应的公众号JS安全域名一致
                imgUrl: shareData.imgUrl, // 分享图标
                success: function (rs) {
                }
            });

            wx.onMenuShareQQ({
                title: shareData.title, // 分享标题
                desc: shareData.desc, // 分享描述
                link: shareData.url,
                imgUrl: shareData.imgUrl, // 分享图标
                success: function () {
                    // 用户确认分享后执行的回调函数
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });

            wx.onMenuShareQZone({
                title: shareData.title, // 分享标题
                desc: shareData.desc, // 分享描述
                link: shareData.url,
                imgUrl: shareData.imgUrl, // 分享图标
                success: function () {
                    // 用户确认分享后执行的回调函数
                },
                cancel: function () {
                    // 用户取消分享后执行的回调函数
                }
            });
        });

        wx.error(function (res) {
            alert(res.errMsg);
        });
    }
    var getRoot = function (my) {
        if (my != my.parent) {
            return getRoot(my.parent);
        }
        return my;
    }
    var root = getRoot(window.self);
    var call = isWxClient() ? root.wx : root.HS;
    //if (isWxClient()) {
    //    wxConfig();
    //}

    return {
        initWx: function (configUrl) {
            if (isWxClient()) {
                wxConfig(configUrl);
            }
        },
        getInfo: function () {
            return {
                isHooeasy: isHooeasy(),
                isWx: isWxClient()
            }
        },
        scanQRCode: function (options) {
            call.scanQRCode(options);
        },

        openUrl: function (options) {
            if (isHooeasy()) {
                call.openUrl(options);
            }
        },

        login: function (options) {
            if (isHooeasy()) {
                call.login(options);
            }
        },
        logout: function () {
            if (isHooeasy()) {
                call.logout({});
            }
        },
        setBadge: function (options) {
            if (isHooeasy()) {
                call.setBadge(options);
            }
        },
        requestLocation: function (options) {
            if (isHooeasy()) {
                call.requestLocation(options);
            } else {
                if (options.success) options.success({ code: 0, message: "Ok" });
            }
        },
        closeWindow: function (options) {
            if (isHooeasy()) {
                call.closeWindow(options);
            }
        },
        addEvent: function (options) {
            dsBridge.register(options.name, function (data) {
                if (options.success) {
                    return options.success(data);
                }
            })
        },
        callPhone: function (phone) {
            if (!phone) return;
            var phoneNum = phone.split("-")[0];

            //if (root.plus) {
            //    root.plus.device.dial(phoneNum, true);
            //    return;
            //}

            root.location.href = 'tel:' + phoneNum;
        }
    };
}();