var _uid = 0;
var API_KEY = "726fc204d1a2406fbc51d395dcd636ca";
var xd_receiver_path = "/xd_receiver.html";
var userInfo = [];
var has_loaded_renren_js = false;
var redirected_url = '/users/new_from_renren';  // 用于成功连接后跳转
var renren_feed_type = "unknow";

function getCookie( name ) 
{
    var start = document.cookie.indexOf( name + "=" );
    var len = start + name.length + 1;
    if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
        return null;                          	
    }
    if ( start == -1 ) return null;
    var end = document.cookie.indexOf( ';', len );
    if ( end == -1 ) end = document.cookie.length;
    return unescape( document.cookie.substring( len, end ) );
}

function getRenRenUid()
{
    var uid = getCookie(API_KEY + "_user");
    return uid;
}

/**
 * 发送简单新鲜事
 */
function rrSimpleOperation(title_content,body_content,template_id){
    renren_feed_type = "simple";
    var title_data = {"feedtype":title_content};
    var body_data = {"content":body_content};
    XN_RequireFeatures(["Connect"], function() {
        XN.Main.init(API_KEY, xd_receiver_path);
        XN.Main.apiClient.feed_publishTemplatizedAction(template_id?template_id:1, title_data, body_data, function(result, ex) {
            if (!ex) {
                // statistic
                feed_statistic();
            }else{
                return;
            }
        });
    });
}

// 连接的时候使用的方法
function getDetailedRenRenUserInfo()
{
    var needInfo = ['uid', 'name', 'sex', 'headurl', 'tinyurl', 'province', 'city', 'hometown_location'];
    return getRenRenUserInfo(needInfo);
}


function getRenRenUserInfo(needInfo)
{
    if(typeof(needInfo) == "undefined"){
        needInfo = [];
    }
    var user_info = []; 
    if(!_uid){
        _uid = getRenRenUid(); 
    }
    XN_RequireFeatures(["Connect"], function() {
        XN.Main.apiClient.users_getInfo([_uid],needInfo,function(result,error){
            if(!error){
                user_info = result[0];
            }
        });
    });
    return user_info;
}

function dynamic_rrlogin(url)
{
    window.Init = function(){
        XN_RequireFeatures(["Connect"], function(){
            XN.Main.init(API_KEY, xd_receiver_path, {"forceLoginPopup": true});
            has_loaded_renren_js = true;
            if(url){
                set_redirected_url(url);
            } 
            if(typeof bindOnConnectBtn == 'function') bindOnConnectBtn();
        });
    }
    if(!has_loaded_renren_js){
        addJavascript('http://static.connect.renren.com/js/v1.0/FeatureLoader.jsp?loaded=Init'); 
    }
}

function dynamic_sendfeed(callback)
{
    window.Init = function(){
        XN_RequireFeatures(["Connect"], function(){
            XN.Main.init(API_KEY, xd_receiver_path, {"forceLoginPopup": true});
            has_loaded_renren_js = true;
            if(typeof callback == 'function') callback();
        });
    }
    if(!has_loaded_renren_js){
        addJavascript('http://static.connect.renren.com/js/v1.0/FeatureLoader.jsp?loaded=Init'); 
    }else{
        callback();
    }
}

function set_redirected_url(url)
{
    redirected_url = url;
}

function on_rrlogin2connect()
{
    return on_rrlogin();
}

function bindOnConnectBtn()
{
    var element = document.getElementById("connect2renren_btn");
    if(element){
        bindClickEvent(element, on_rrlogin2connect); 
    }
}

function on_rrlogin()
{
	 XN_RequireFeatures(["Connect"], function(){
        XN.Main.init(API_KEY, xd_receiver_path);
        XN.Connect.requireSession(function(){
            if(redirected_url){
               window.location.href = redirected_url;
            }
        });            
     });
    return false;
}


function logout_babytree(){
    // exit url 
    window.location.href="/login";
}


function rr_logout(callback)
{
    XN_RequireFeatures(["Connect"], function() {
        XN.Main.init(API_KEY, xd_receiver_path);
        XN.Connect.get_status().waitUntilReady(function(login_state){
            if(login_state==XN.ConnectState.connected){
                XN.Connect.logout(function(){
                    callback();
                });
            }else{
                if(callback){
                    callback();
                }
            }
        });
    });

}
function feed_statistic()
{
    var cur_url = escape(window.location.href);
    cur_url = "/rd/renren_rd.php?url="+cur_url+"&type="+renren_feed_type;
    get_url(cur_url);
}

function construct_feed(feed_content, feed_setting)
{
    renren_feed_type = "share";
    if(!feed_content.feedtype || !feed_content.content || !feed_content._uid){
        return false;
    }  
    var feed = {
                    template_bundle_id : 1,
                    body_general : "",
                    callback : feed_statistic, 
                    user_message_prompt : "随便写点什么吧:)",
                    user_message : " "
                };
    if(feed_setting){
        for(var p in feed){
            if(feedtype[p]){
                feed[p] = p;
            }
        }
    }
    var feed_content_default = { image_href : "http://www.babytree.com", image_src : "http://pic.babytree.com/img/reg/babytree_feed_logo.gif"};
    var has_set_image_href = false;
    if(!feed_content['image']){
        for(var p in feed_content_default){
            if(!feed_content[p] || feed_content[p] == ''){
                feed_content[p] = feed_content_default[p];
            }else{
                has_set_image_href = true;
            }
        }
        if(has_set_image_href){
            feed_content.image = [{"src":feed_content.image_src, "href": feed_content.image_href}];
        }else{
            feed_content.image = [];    
        }
    }else{
        feed_content.image = [];
    }
    var template_data =  {"images":feed_content.image,"feedtype":feed_content.feedtype,"content": feed_content.content,"action":"click","xnuid":feed_content._uid};
    feed.template_data = template_data; 
    XN.Connect.showFeedDialog(feed);
}

function addJavascript(src)
{
    var scriptElements = document.getElementsByTagName('script');
    if (scriptElements ) {
        var c = scriptElements.length;
        for (var i = 0; i < c; i++) {
            scriptElement = scriptElements[i];
            if (scriptElement.src == src) {
                // Found a match
                return false;
            }
        }
    }
    var g = document.createElement("script");
    g.type = "text/javascript";
    g.src = src;
    try{
        document.getElementsByTagName('head')[0].appendChild(g); 
    }catch(err){
        //alert(err);
    }
    return true;
}

function bindClickEvent(element, handler)
{
    if(document.addEventListener){
        element.addEventListener("click", handler, false);
    }else if(document.attachEvent){
        element.attachEvent("onclick", handler);
    } 
}

function get_request()
{
    var factories = [
        function(){ return new XMLHttpRequest();},
        function(){ return new ActiveXObject("Msxml2.XMLHTTP");},
        function(){ return new ActiveXObject("Microsoft.XMLHTTP")}
    ];
    var request = null;
    for(var i = 0; i < factories.length; i++){
        try{
            var factory = factories[i];
            var request = factory();
            if(request != null){
                return request;
            }
        }catch(e){
            continue;
        }
    }
    return null;
}

function get_url(url, callback)
{
    var request = get_request();
    request.onreadystatechage = function(){
        if(request.readyState == 4 && request.status == 200){
            callback(request.responseXML);
        }
    }
    request.open("GET", url);
    request.send(null);
}

