
cc.Class({
    extends: cc.Component,

    properties: {
        LoadingNode: {
            default: null,
            type: cc.Node,
            serializable: true,
        },
        StartButton: {
            default: null,
            type: cc.Node,
            serializable: true,
        },
    },
    start () {
        this.Host = 'https://www.9527fun.cn/Idol/';
        this.LoadingNode.active = false;
        //如果不是微信环境
        if (typeof wx === 'undefined') {
            return;
        }
        this.CreateAuthorizeBtn(this.StartButton);
    },
    // OnStartButtonClick:function () {
    //     this.LoadingNode.active = true;
    //     this.StartButton.active = false;
    //     // var animCtrl = this.node.getComponent(cc.Animation);
    //     // animCtrl.play("linear");
    //     this.LoadingNode.getChildByName('label').getComponent(cc.Animation).play();
    //     this.LoadingNode.getChildByName('SparklersParticle').getComponent(cc.Animation).play();
    //
    //     let URL = this.Host+'UserInfo/CheckUserInfo';
    //     let Data = 'NickName=TestUser'+'&'+'AvatarURL=https://wx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTI8a5gibDPIrdlScaNkw6jaGQd1kalEPHBKib2J9H8pKOfJszSb0sIIspWKgGL6Fz2LLIr2WicFvXPSg/132';
    //     this.SendPostUserInfo(URL,Data);
    // },
    CreateAuthorizeBtn(BtnNode) {
        let FrameSize = cc.view.getFrameSize();
        let WinSize = cc.director.getWinSize();

        // get btn size
        let BtnSize = cc.size(BtnNode.width+10,BtnNode.height+10);

        // console.log("winSize: ",winSize);
        // console.log("frameSize: ",frameSize);
        //适配不同机型来创建微信授权按钮 get position
        let Left = (WinSize.width*0.5+BtnNode.x-BtnNode.width*0.5)/WinSize.width*FrameSize.width;
        let Top = (WinSize.height*0.5-BtnNode.y-BtnNode.height*0.5)/WinSize.height*FrameSize.height;
        let Width = BtnNode.width/WinSize.width*FrameSize.width;
        let Height = BtnNode.height/WinSize.height*FrameSize.height;
        // console.log("button pos: ",cc.v2(left,top));
        // console.log("button size: ",cc.size(width,height));

        //let Self = this;
        this.BtnAuthorize = wx.createUserInfoButton({
            type: 'text',
            text: '',
            style: {
                left: Left,
                top: Top,
                width: Width,
                height: Height
            }
        });

        this.BtnAuthorize.onTap((Uinfo) => {
            // console.log("onTap uinfo: ",Uinfo);
            if (Uinfo.userInfo) {
                // console.log("wxLogin auth success:",Uinfo.userInfo);

                console.log("avatarUrl: ",Uinfo.userInfo.avatarUrl);
                // let aNickName = Uinfo.userInfo.nickName.replace(/[^0-9a-z\u4e00-\u9fa5]/ig,"口");
                let aNickName = Uinfo.userInfo.nickName
                var strArr = aNickName.split(""),
                    result = "",
                    totalLen = 0;

                for(var idx = 0; idx < strArr.length; idx ++) {
                    // 超出长度,退出程序
                    if(totalLen >= 16) break;
                    var val = strArr[idx];
                    // 英文,增加长度1
                    if(/[a-zA-Z]/.test(val)) {
                        totalLen = 1 + (+totalLen);
                        result += val;
                    }
                    // 中文,增加长度2
                    else if(/[\u4e00-\u9fa5]/.test(val)) {
                        totalLen = 2 + (+totalLen);
                        result += val;
                    }
                    // 遇到代理字符,将其转换为 "口", 不增加长度
                    else if(/[\ud800-\udfff]/.test(val)) {
                        // 代理对长度为2,
                        if(/[\ud800-\udfff]/.test(strArr[idx + 1])) {
                            // 跳过下一个
                            idx ++;
                        }
                        // 将代理对替换为 "口"
                        result += "口";
                    }
                };
                console.log("nickName: ",result);
                cc.sys.localStorage.setItem('nickName', result);
                // cc.sys.localStorage.setItem('nickName', aNickName);
                cc.sys.localStorage.setItem('avatarUrl', Uinfo.userInfo.avatarUrl);

                this.LoadingNode.active = true;
                this.StartButton.active = false;
                // var animCtrl = this.node.getComponent(cc.Animation);
                // animCtrl.play("linear");
                this.LoadingNode.getChildByName('label').getComponent(cc.Animation).play();
                this.LoadingNode.getChildByName('SparklersParticle').getComponent(cc.Animation).play();

                let URL = this.Host+'UserInfo/Login/';
                // let Data = 'NickName='+Uinfo.userInfo.nickName+'&'+'AvatarURL='+Uinfo.userInfo.avatarUrl;
                this.SendUserInfo(URL,Uinfo.userInfo.nickName,Uinfo.userInfo.avatarUrl);
            }else {
                console.log("wxLogin auth fail");
            }
        });
    },
    SendUserInfo(URL,NickName,AvatarUrl)
    {
        wx.login({
            //获取code
            success: function(res) {
                let Code = res.code;//返回code
                // console.log("返回code:", code);
                let Data = 'Code='+Code+'&'+'NickName='+NickName+'&'+'AvatarURL='+AvatarUrl;
                // console.log("AvatarUrl", AvatarUrl);
                let xhr = new XMLHttpRequest();

                xhr.onreadystatechange = function () {
                    if (xhr.readyState == 4 && (xhr.status >= 200 && xhr.status < 400)) {
                        let response = xhr.responseText;
                        console.log("http data返回:", response);
                        cc.sys.localStorage.setItem('Openid', xhr.responseText);
                        cc.director.loadScene("Game");
                    }
                };
                xhr.open("POST", URL, true);
                xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
                xhr.send(Data);
            }
        });
    }
});
