﻿
function UltizenOAuth(ps) {

    UltizenOAuth.baseurl = "http://passport.365ub.com";
    UltizenOAuth.OAuthUrl='<a style="cursor:pointer;" onclick="UltizenOAuth.winopen(\'{oauthurl}\')"><img alt="" src="{imgurl}"  /></a>';
    //function define
    UltizenOAuth.Load = function(fun) {
        var wfun = window.onload;
        window.onload = function() {
            if (wfun != null) { wfun(); }
            fun();
        };
    }; //end load


    UltizenOAuth.winopen = function(url) {
          window.open(url,
                'oauth2Login',
                'height='+UltizenOAuth.height+',width='+UltizenOAuth.width+', toolbar=no, menubar=no, scrollbars=no, status=no, location=yes, resizable=yes');
          

    };
    
    UltizenOAuth.get_url_param = function(param) {
        var url = window.location.href;
        var regex = new RegExp(param + "=([^&]+)", "mi");
        var match = url.match(regex);
        if (match) { return match[1]; } else { return null; }
    };

    UltizenOAuth.LoadScript = function(url, keyword) {
        var ishave = false;
        if (keyword) {
            var scripts = document.getElementsByTagName("script");
            for (var i = 0; i < scripts.length; i++) {
                var srci = scripts[i].src;
                var regex = new RegExp(keyword, "gmi");
                ishave = regex.test(srci);
                if (ishave) { break; }
            }
        }
        else {
            ishave = true;
        }
        if (!ishave) {
            document.writeln('<script type="text/javascript" src="' + url + '"></script>');
        }
    };

    UltizenOAuth.LoadJQuery = function() {
        UltizenOAuth.LoadScript(UltizenOAuth.baseurl + "/js/jquery-1.4.1-vsdoc.js", "jquery");
    };

    //call back check
    UltizenOAuth.callbackcheck = function() {
        var strcb = UltizenOAuth.get_url_param('ocb'); //oauth回调标识
        UltizenOAuth.AuthSource = strcb;
        UltizenOAuth.tgflag = UltizenOAuth.get_url_param('tgflag');
        UltizenOAuth.CallBackMethod = UltizenOAuth.get_url_param('CBM');
        UltizenOAuth.isDebug = UltizenOAuth.get_url_param('isDebug');
        UltizenOAuth.redirectURI = UltizenOAuth.get_url_param('redirectURI');
    };

    UltizenOAuth.authsuccess = function() {

        if (UltizenOAuth.redirectURI) {
            var url = unescape(UltizenOAuth.redirectURI);
            url = url
             + "&openid=" + UltizenOAuth.openid
            + "&accesstoken=" + UltizenOAuth.accessToken
            + "&nickname=" + UltizenOAuth.nickname
              + "&authkey=" + UltizenOAuth.authkey
                + "&authsource=" + UltizenOAuth.AuthSource

            ;
            if (UltizenOAuth.username) {//have username
                url = url + "&username=" + UltizenOAuth.username
            }
            opener.window.location.href = url;

        } else {
            var form = opener.document.body;

            if (opener.document.forms.length > 0) {
                form = opener.document.forms[0];
            }
            var openid = opener.document.getElementById("txtopenid");
            var accessToken = opener.document.getElementById("txtaccessToken");
            var oauth = opener.document.getElementById("txtoauth");
            if (!openid) {
                var btn = opener.document.createElement("input");
                btn.type = "hidden";
                btn.id = "txtopenid";
                btn.name = "openid";
                btn.value = UltizenOAuth.openid;
                form.appendChild(btn);
            }
            if (!accessToken) {
                var btn = opener.document.createElement("input");
                btn.type = "hidden";
                btn.id = "txtaccessToken";
                btn.name = "accessToken";
                btn.value = UltizenOAuth.accessToken;
                form.appendChild(btn);
            }
            if (!oauth) {
                var btn = opener.document.createElement("input");
                btn.type = "hidden";
                btn.id = "txtoauth";
                btn.name = "oauth";
                btn.value = 1;
                form.appendChild(btn);
            }


            opener.OAuthSetting.callback({
                openid: UltizenOAuth.openid,
                accessToken: UltizenOAuth.accessToken,
                username: UltizenOAuth.username,
                authkey: UltizenOAuth.authkey

            });
        }
        if (!UltizenOAuth.isDebug) {
            opener = null;
            window.close();
        }



    };
    UltizenOAuth.ShowError = function(msg) {
        alert(msg);
    }
    UltizenOAuth.ShowBind = function() {
        jQuery("body").css("display", "block");
        UltizenOAuth.ShowOld();
    };

    UltizenOAuth.HideBind = function() {
        jQuery("body").hide();
    };

    UltizenOAuth.ShowNew = function() {
        jQuery("#tBindNew").show();
        jQuery("#tBindOld").hide();
        jQuery("#btnBindNew").attr("class", "btnBindCurrent");
        jQuery("#btnBindOld").attr("class", "btnBindOther");
    };

    UltizenOAuth.ShowOld = function() {
        jQuery("#tBindNew").hide();
        jQuery("#tBindOld").show();
        
        jQuery("#btnBindNew").attr("class", "btnBindOther");
        jQuery("#btnBindOld").attr("class", "btnBindCurrent");
    };

    UltizenOAuth.checkUserInfo = function() {
        var url = UltizenOAuth.baseurl + "/handler/OAuth.ashx";
        jQuery.getJSON(url, { op: "GetUserinfo", AuthSource: UltizenOAuth.AuthSource, openid: UltizenOAuth.openid, ran: Math.random() }, function(result) {
            if (result.state == 1) {
                if (result.data) {//have data
                    UltizenOAuth.username = result.data.username;
                    UltizenOAuth.authsuccess();

                } else {//bind
                    if (UltizenOAuth.tgflag == '1') {//go to tg site bind userid
                        UltizenOAuth.authsuccess();
                    } else {//bind userid
                        UltizenOAuth.ShowBind();
                    }

                }
            } else {
                UltizenOAuth.ShowError(result.msg);
            }
        });
    };

    UltizenOAuth.Reg = function() {//bind userid auto
        var url = UltizenOAuth.baseurl + "/handler/OAuth.ashx";
        jQuery.getJSON(url, { op: "Reg", openid: UltizenOAuth.openid, accessToken: UltizenOAuth.accessToken, AuthSource: UltizenOAuth.AuthSource, ran: Math.random() }, function() {
            UltizenOAuth.authsuccess();
        });
    };

    UltizenOAuth.RegOld = function() {//bind old userid
        var url = UltizenOAuth.baseurl + "/handler/OAuth.ashx";
        jQuery.getJSON(url, { op: "RegOld",
            openid: UltizenOAuth.openid, accessToken: UltizenOAuth.accessToken, AuthSource: UltizenOAuth.AuthSource,
            username: $("#txtoldusername").val(),
            password: $("#txtoldpassword").val(),
            nickname: UltizenOAuth.nickname,
            ran: Math.random()
        }, function(result) {
            if (result.state == 1) {
                //alert("绑定成功");
                UltizenOAuth.username = result.data.username;
                UltizenOAuth.authsuccess();
            } else {
                UltizenOAuth.ShowError(result.msg);
            }


        });
    };

    UltizenOAuth.RegOld2 = function() {//bind old userid
        var url = UltizenOAuth.baseurl + "/handler/OAuth.ashx";
        jQuery.getJSON(url, { op: "RegOld2",
            openid: UltizenOAuth.openid, accessToken: UltizenOAuth.accessToken, AuthSource: UltizenOAuth.AuthSource,
            username: $("#txtoldusername").val(),
            password: $("#txtoldpassword").val(),
            nickname: UltizenOAuth.nickname,
            ran: Math.random()
        }, function(result) {
            if (result.state == 1) {
                alert("绑定成功");
                UltizenOAuth.authsuccess();
               
            } else {
                UltizenOAuth.ShowError(result.msg);
            }


        });
    };

    UltizenOAuth.RegNew = function() {//bind new userid
        if (jQuery("#chkagreen:checked").length == 0) {
            UltizenOAuth.ShowError("同意了用户注册服务协议才能注册!");
            return;
        }
        var url = UltizenOAuth.baseurl + "/handler/OAuth.ashx";
        jQuery.getJSON(url, { op: "RegNew", openid: UltizenOAuth.openid, accessToken: UltizenOAuth.accessToken, AuthSource: UltizenOAuth.AuthSource,
            UserName: jQuery("#txtUserName").val(),
            upalnickname: jQuery("#txtnickname").val(),
            nickname: UltizenOAuth.nickname,
            password: jQuery("#txtpwd").val(),
            password2: jQuery("#txtpwd2").val(),
            email: jQuery("#txtemail").val(),
            code: jQuery("#txtcode").val(),
            RealyName: jQuery("#txtrealyname").val(),
            CardNum: jQuery("#txtcardNum").val(),
            ran: Math.random()
        }, function(result) {

            if (result.state == 1) {
               // alert("注册并绑定成功");
                UltizenOAuth.username = result.data.username;
                UltizenOAuth.authsuccess();
            } else {
                UltizenOAuth.ShowError(result.msg);
            }

        });
    };

    UltizenOAuth.QQ = {
        openid: null,
        accessToken: null,
        appid: "100236509",
        get_user_info_api: "https://graph.qq.com/user/get_user_info?access_token={accessToken}&oauth_consumer_key={appid}&openid={openid}",
        user_info: null,
        init: function() { UltizenOAuth.LoadScript("http://qzs.qq.com/qzone/openapi/qc.js", "qc.js"); },
        load: function() {

            OAuthSetting.QQ.btnId = OAuthSetting.QQ.btnId || 'btnOAuth_QQ'; //要插入QQ登录按钮的html标签，必须
            OAuthSetting.QQ.size = OAuthSetting.QQ.size || 'C_L'; //按钮样式 （A/B/C代表三种样式。S/M/L/XL代表尺寸）
            //包括：A_S，A_M，A_L，A_XL，B_S，B_M，B_L，C_S
            OAuthSetting.QQ.clientId = OAuthSetting.QQ.clientId || UltizenOAuth.QQ.appid; //申请时分配的appid，必须
            OAuthSetting.QQ.scope = OAuthSetting.QQ.scope || 'get_user_info,add_t'; // 授权范围，可选
            OAuthSetting.QQ.redirectURI = OAuthSetting.QQ.redirectURI || "http://www.365ub.com" + '/OauthCallBack.html?ocb=qq'; //回调地址，可选
            OAuthSetting.QQ.imgurl = OAuthSetting.QQ.imgurl || "http://images.365ub.com/upal/ver4/images/qq_icon.gif";
            if (window.location.host.match(/wlzw.365ub.com/mi)) {
                OAuthSetting.QQ.imgurl = "http://qzonestyle.gtimg.cn/qzone/vas/opensns/res/img/Connect_logo_7.png";
            }

            OAuthSetting.QQ.oauthurl = OAuthSetting.QQ.oauthurl || "http://openapi.qzone.qq.com/oauth/show?which=ConfirmPage&client_id=100236509&response_type=token&scope=get_user_info,add_t&redirect_uri={redirectURI}";
            if (OAuthSetting.tgflag == '1') {
                OAuthSetting.QQ.redirectURI = OAuthSetting.QQ.redirectURI + "&tgflag=1"
            }
            if (OAuthSetting.isDebug == '1') {
                OAuthSetting.QQ.redirectURI = OAuthSetting.QQ.redirectURI + "&isDebug=1"
            }
            if (OAuthSetting.redirectURI) {
                var url = OAuthSetting.redirectURI;
                var tt = '';
                if (location.search == '') {
                    tt = '?';
                }
                else {
                    tt = '';
                }
                OAuthSetting.redirectURI = OAuthSetting.redirectURI + tt + location.search + "&tgflag=" + OAuthSetting.tgflag;

                OAuthSetting.QQ.redirectURI = OAuthSetting.QQ.redirectURI + "&redirectURI=" + escape(OAuthSetting.redirectURI);
            }




            OAuthSetting.QQ.display = OAuthSetting.QQ.display || 'PC'; //默认PC，支持mobile
            var url = OAuthSetting.QQ.oauthurl.replace('{redirectURI}', escape(OAuthSetting.QQ.redirectURI));
            var btn = document.createElement("SPAN");
            btn.id = OAuthSetting.QQ.btnId;
            btn.innerHTML = UltizenOAuth.OAuthUrl.replace('{oauthurl}', url).replace('{imgurl}', OAuthSetting.QQ.imgurl);
            conOAuth.appendChild(btn);


            //            UltizenOAuth.Load(function() {
            //                //插入QQ登录按钮
            //                QC.Login.insertButton({
            //                    btnId: OAuthSetting.QQ.btnId,
            //                    size: OAuthSetting.QQ.size,
            //                    clientId: OAuthSetting.QQ.clientId,
            //                    scope: OAuthSetting.QQ.scope,
            //                    redirectURI: OAuthSetting.QQ.redirectURI,
            //                    display: OAuthSetting.QQ.display,
            //                    rem: "rem"
            //                });
            //            }); //end load
        },
        get_access_api: function(api) {
            return api.replace("{accessToken}", UltizenOAuth.QQ.accessToken)
                  .replace("{appid}", UltizenOAuth.QQ.appid)
                  .replace("{openid}", UltizenOAuth.QQ.openid);
        },
        get_openid: function(cb) {
            QC.Login.getMe(function(openid, accessToken, backData) {
                UltizenOAuth.QQ.accessToken = accessToken;
                UltizenOAuth.QQ.openid = openid;
                UltizenOAuth.openid = openid;
                UltizenOAuth.accessToken = accessToken;
                if (cb) { cb(); }
            });
        },
        get_user_info: function(cb) {
            var url = UltizenOAuth.baseurl + "/handler/OAuth.ashx";
            var urlapi = UltizenOAuth.QQ.get_access_api(UltizenOAuth.QQ.get_user_info_api);
            var fun = function(cb) {
                return function() {
                    if (cb) { cb() };
                }
            } (cb);
            jQuery.getJSON(url, { op: "GetThirdInfo",
                opex: "GetUserInfo",
                AuthSource: UltizenOAuth.AuthSource, openid: UltizenOAuth.openid, accessToken: UltizenOAuth.accessToken,
                ran: Math.random()
            }, function(result) {
                if (result.state == 1) {

                    eval('UltizenOAuth.QQ.user_info=' + result.data);
                    if (UltizenOAuth.QQ.user_info.ret != 0) {//auth fail
                        UltizenOAuth.ShowError(UltizenOAuth.QQ.user_info.msg);
                        return;
                    }
                    $("#span_username").html(UltizenOAuth.QQ.user_info.nickname);
                    UltizenOAuth.nickname = UltizenOAuth.QQ.user_info.nickname;
                    UltizenOAuth.authkey = result.authkey;
                    fun();

                } else {
                    UltizenOAuth.ShowError(result.msg);
                }

            });
        }
    };                //end qq

    //function start
    var rootdomain = "365ub.com";
    if (window.location.href.match(/localhost/gmi)) {
        rootdomain = "localhost";
        UltizenOAuth.baseurl = "";
    }

    document.domain = rootdomain;
    UltizenOAuth.LoadJQuery();

    var OAuthSetting = ps || window.OAuthSetting || { ShowAll: true };
    OAuthSetting.conID = OAuthSetting.conID || 'conOAuth';
    UltizenOAuth.width=OAuthSetting.width||585;
    UltizenOAuth.height=OAuthSetting.height||525;
    
    var tgtag = document.getElementById('tgflag');
    if (tgtag) {
        OAuthSetting.tgflag = tgtag.value;
    }

    OAuthSetting.tgflag = OAuthSetting.tgflag || "0";
    var conOAuth = document.getElementById(OAuthSetting.conID);
    if (conOAuth) {

        if (OAuthSetting.ShowAll) {
            OAuthSetting.QQ = OAuthSetting.QQ || {};
            // OAuthSetting.Kaixin001 = OAuthSetting.Kaixin001||{};
        } // end showall

        if (OAuthSetting.QQ) {
            UltizenOAuth.QQ.init();
        }

        if (OAuthSetting.QQ) {
            UltizenOAuth.QQ.load();
        } //end qq

        if (OAuthSetting.Kaixin001) {
            OAuthSetting.Kaixin001.btnId = OAuthSetting.Kaixin001.btnId || 'btnOAuth_Kaixin001';
            var btn = document.createElement("SPAN");
            btn.id = OAuthSetting.Kaixin001.btnId;
            btn.innerHTML = "kaixin";
            conOAuth.appendChild(btn);
        } //end kaixin001
    } //end load init btn


    UltizenOAuth.callbackcheck();
    if (UltizenOAuth.AuthSource) {

        UltizenOAuth.Load(function() {
            jQuery("#btnBindNew").click(UltizenOAuth.ShowNew);
            jQuery("#btnBindOld").click(UltizenOAuth.ShowOld);
            jQuery("#btnRegOld").click(UltizenOAuth.RegOld);
            jQuery("#span_authsource").html('来自' + UltizenOAuth.AuthSource + '的');

        });
    }

    if (UltizenOAuth.AuthSource == "qq") {
        UltizenOAuth.QQ.init();
        UltizenOAuth.Load(function() {
            UltizenOAuth.QQ.get_openid(
            function() {
                UltizenOAuth.QQ.get_user_info(function() {
                    if (UltizenOAuth.CallBackMethod) {
                        eval('UltizenOAuth.' + UltizenOAuth.CallBackMethod+'()');
                    }
                    else {
                        UltizenOAuth.checkUserInfo();
                    }



                });

                // UltizenOAuth.authsuccess();

            }
        );
        });
    } //end qq callback

}
window.OAuthSetting = window.OAuthSetting || {};
UltizenOAuth();

/*
 window.OAuthSetting = {
              //调用分为两种方式,若有返回地址,会转到这个地址
              //没有则调用callback
              //若都没有那就什么都不做了

              //redirectURI:"http://passport.365ub.com/",//,不会调用callback
              //若为推广,url地址里面包含额外参数openid,accesstoken,nickname(QQ过来的昵称),username(若登入成功)
              callback: function(data) {//data里面包含openid,accessToken,username,在这里使用openid和accesskey登入
                 
                  $("#Password").val("11111111");
                  $("#UserName").val("11111111");

                    $("#btnLogin").click();

                },
              //isDebug:1,
              ShowAll: true//这里设置显示哪些,例如QQ,开心,人人等,现在只支持QQ,
        
          };
*/
