//提供sso方面js的封装

sinaSSOConfig = new function() {
    this.service = "client";
    this.useTicket = false;
}

function lifeSSO() 
{
    lifeSSO.SSOSCriptUrl = "http://i.sso.sina.com.cn/js/ssologin.js";
    lifeSSO.isLoadSSOScript = false;
    lifeSSO.errorNo = 0;
    this.initCallback = function () {};//初始化直接用户可指定
    lifeSSO.loginCallbackUser = function (loginStatus) { };
    lifeSSO.obj = this;//保存当前对象
    
    lifeSSO.makeResult = function (loginStatus)
    {
        var r_r = new Object();
        if (loginStatus.result)
        {
            r_r.result = true;
            r_r.errno = 0;
        }
        else
        {
            r_r.result = false;
            r_r.errno = lifeSSO.errorNo;
        }
        //给一个uid
        if (typeof loginStatus.userinfo != 'undefined')
        {
            r_r.uid = loginStatus.userinfo.uniqueid;
        }
        else
        {
            r_r.uid = 0;
        }

        return r_r;
    };

    this.loginCallback = function (loginStatus)
    {
        var r_r = new Object();
        if(loginStatus.result != 'true')//登陆失败
        {
            if (loginStatus.errno == 5)
            {
                lifeSSO.errorNo = 1003;//用户名不存在
            }
            else if(loginStatus.errno == 101)
            {
                lifeSSO.errorNo = 1004;//密码错误
            }
            else if(loginStatus.errno == 80)//输入的不是正确的密码（可能密码位数过多等）
            {
            	lifeSSO.errorNo = 1005;
            }
        }
        else
        {
            jQuery.cookie("LIFE_USER_LOGIN", loginStatus.userinfo.uniqueid, {path:'/',expires:0,domain:life_site_host});
        }
        r_r = lifeSSO.makeResult(loginStatus);
        lifeSSO.loginCallbackUser(r_r);
    };

    this.logoutCallbackUser = function (result) {};
    this.logoutCallback = function (result){
        if (!result.result)
        {
            lifeSSO.errorNo = 2001;//登出失败
        }
        //删除登陆cookie
        jQuery.cookie("LIFE_USER_LOGIN", '', { expires: -1,domain:'.sina.com.cn', path:'/'});
        
        result = lifeSSO.makeResult(result);
        lifeSSO.logoutCallbackUser(result);
    };
    
    sinaSSOConfig.customLoginCallBack = this.loginCallback;
    sinaSSOConfig.customLogoutCallBack = this.logoutCallback;
    sinaSSOConfig.customInit= this.initCallback;

    
    //设置环境变量方法
    this.setConfig = function (name, value)
    {
        var eval_str = "sinaSSOConfig." + name + "=value";
        eval(eval_str);
    };

    //设置初始化callback函数
    this.setInitCallback = function (function_name)
    {
        this.initCallback = function_name;
    };

    /**
     * 设置登陆后的callback 函数
     * 接收函数需要接收参数loginStatus
     */
    this.setLoginCallBack = function (function_name)
    {
        lifeSSO.loginCallbackUser = function_name;
    };
    /**
     * 设置登出
     *
     */
    this.setLogoutCallBack = function (function_name)
    {
        lifeSSO.logoutCallbackUser = function_name;
    };

    this.loadSSOScript = function (eval_str)
    {
        if (!lifeSSO.isLoadSSOScript)
        {
            lifeSSO.loadssoscript_eval_str = eval_str;
            $.ajax({type:"GET", url:lifeSSO.SSOSCriptUrl, success:function (){
                if(typeof lifeSSO.loadssoscript_eval_str == 'string')
                {
                    eval(lifeSSO.loadssoscript_eval_str);
                    lifeSSO.loadssoscript_eval_str = false;
                }
            },dataType:'script', scriptCharset:"utf-8"});
            this.isLoadSSOScript = true;
        }
        else
        {
            if(typeof eval_str == 'string')
            {
                eval(eval_str);
            }
        }
    };

    this.setSaveState = function()
    {
        lifeSSO.saveState = 30;//默认30天
    }

    /**
     * 登陆操作
     * callback 函数
     */
    this.login = function (name, password , keepday)
    {
        var login_stat = false;
        lifeSSO.errorNo = 0;
        if (typeof name != "string")
        {
            //本地检查登陆错误号从1000开始，
            lifeSSO.errorNo = 1001;//用户名参数错误
            this.loginCallback({"result":false,"userinfo":{"uniqueid":0}});
        }
        else if(typeof password != 'string')
        {
            lifeSSO.errorNo = 1002;//密码参数错误
            this.loginCallback({"result":false,"userinfo":{"uniqueid":0}});
        }
        var param = '"' + name + '", "' + password + '"';//要传给登陆方法的参数

        keepday = parseInt(keepday);
        if (!isNaN(keepday) && keepday > 0)
        {
            keepday = Math.min(30, keepday);//最多只能支持30天
            param += ', ' + keepday;
        }
        this.loadSSOScript("sinaSSOController.login(" + param + ")");
    };

    this.logout = function ()
    {
        var eval_str = "sinaSSOController.logout()";
        this.loadSSOScript(eval_str);
    }
}

//判断是否登录,如果登录，返回uid,否则返回false
lifeSSO.loginUid = function()
{
    var uid = jQuery.cookie('LIFE_USER_LOGIN');
    uid = parseInt(uid);
    if (!isNaN(uid))
    {
        return uid;
    }
    else
    {
        return false;
    }
};
