/*
1: checked remotly
2: set remotly
3: unset remotly
*/
var BLOGO_AUTH_VERSION=0.6;
var BLOGO_COOKIE_SETUP='lp_blogo_controller';
var BLOGO_COOKIE_SETUP_EXPIRING_MIN=3;
var BLOGO_REMOTE_VALUE_LOGOUT='loggedout';
var LOCAL_COOKIE='lp_login';
var BLOGO_REMOTE_API='http://app.blogo.it/cookie/index.php';
var CURRENT_DOMAIN=document.domain.substring(document.domain.indexOf('.'));
var COMMUNITY_DOMAIN='community'+CURRENT_DOMAIN;
var COMMUNITY_URL='http://'+COMMUNITY_DOMAIN+'/';
var COMMUNITY_PROFILE=COMMUNITY_URL+'people/activities/';
var COMMUNITY_AVATAR='http://static.blogo.it/community/upload/friends/user/avatar/';
var COMMUNITY_DEFAULT_AVATAR='http://static.blogo.it/community/images/empty_profile-small.png';
var ACTIVE_COMMUNITIES='melablog,motoblog,gadgetblog,gamesblog,tvblog,gossipblog';

/* se logout? -> timeout cookie 3min*/
var c_blogo=$.cookie(BLOGO_COOKIE_SETUP);
var c_light=$.cookie(LOCAL_COOKIE);

var is_community=(document.domain.indexOf('community.')!=-1);
var blogo_cookie_debug=0;

/* MAIN */
//$(function(){
    if(!c_blogo && !c_light){//not logged, try to the remote server
        blogo_cookie_logger('Main function: blogo_get_remote');
        blogo_get_remote();
    }else if((!c_blogo || c_blogo=='1') && c_light){//is just logged, set to remote
        blogo_cookie_logger('Main function: blogo_check_and_set_remote');
        blogo_check_and_set_remote();
    }else if(c_blogo && c_blogo!='3' && !c_light){//is just logged out
        blogo_cookie_logger('Main function: blogo_check_and_unset_remote');
        blogo_check_and_unset_remote();
    }else{
        blogo_cookie_logger('Main function: no');
    }
//});

blogo_cookie_logger(LOCAL_COOKIE+": "+$.cookie(LOCAL_COOKIE));
blogo_cookie_logger(BLOGO_COOKIE_SETUP+": "+$.cookie(BLOGO_COOKIE_SETUP));
/* END MAIN */
/* LIB */
function blogo_check_and_set_remote(){

	if(!$.cookie(LOCAL_COOKIE)) return;
	var cookie_val=$.cookie(LOCAL_COOKIE);//REMINDER->check validity
	blogo_cookie('cheking remote cookie');
	//set only in remotly is not logged out
	
//	blogo_set_remote(cookie_val);
	do_if_logged('blogo_set_remote',cookie_val);
}
function do_if_logged(function_name,params){
	$.getJSON(BLOGO_REMOTE_API+"?&format=json&jsoncallback=?",
		function(data){ 

			var remote_cookie_val=blogo_handle_result(data);
			blogo_cookie_logger('Remote cookie: '+remote_cookie_val);
			
			if(remote_cookie_val==BLOGO_REMOTE_VALUE_LOGOUT){
				blogo_cookie('logged out remotly: '+remote_cookie_val);
				//unset_local_cookie();
				return ;
			}
			if(params)
				eval(function_name)(params);
			else
				eval(function_name+'();')
		});
}
function blogo_set_remote(cookie_val){
	if(!check_cookie_val(cookie_val)) return;

	$.getJSON(BLOGO_REMOTE_API+"?v="+escape(cookie_val)+"&format=json&jsoncallback=?",
        function(data){
			//REMINDER->check if fails
			set_cookie_controller(2);
			blogo_cookie('set remote');
			blogo_cookie_logger("remote: "+ data.result);
        });
}

function set_local_cookie(val){
	if(!check_cookie_val(val)) return false;
	$.cookie(LOCAL_COOKIE,val,{path:'/', domain: CURRENT_DOMAIN});
	blogo_cookie('set local');

	if(is_community) window.location.reload();
	else display_user_box(val);
	return true;
	
}
function unset_local_cookie(){
	if(!$.cookie(LOCAL_COOKIE)) return false;
	$.cookie(LOCAL_COOKIE,'',{path:'/',expires: -10});
	blogo_cookie('unset local');
	if(!is_community) hide_user_box();
	return true;	
}
function blogo_set_from_remote_cb(data){
	var cookie_val=blogo_handle_result(data);
	blogo_cookie_logger('Remote cookie: '+cookie_val);
	if(check_cookie_val(cookie_val)){
		set_local_cookie(cookie_val);
		set_cookie_controller(2);
		return;
	}else blogo_cookie('remote cookie not valid: '+cookie_val);
	set_cookie_controller(1);//in any case, if is ok or fails we  don't want recall it  
}
function blogo_get_remote(){     
	
	$.getJSON(BLOGO_REMOTE_API+"?&format=json&jsoncallback=?",
		function(data){ 
			blogo_cookie('get remote');
			blogo_set_from_remote_cb(data);
		});
	
}

function set_cookie_controller(val){
	var date = new Date();
	date.setTime(date.getTime() + (BLOGO_COOKIE_SETUP_EXPIRING_MIN * 60 * 1000));//3 mins
	if(val=='2') date=0;
	$.cookie(BLOGO_COOKIE_SETUP,val,{path:'/', expires: date});
	if(date)
		blogo_cookie('set controller: '+val+' (epxiring at '+date.getHours()+':'+date.getMinutes()+')' );
	else
		blogo_cookie('set controller: '+val+' (epxiring at end of session)' );
}

function blogo_check_and_unset_remote(){    
	if($.cookie(LOCAL_COOKIE))
		do_if_logged('blogo_check_and_unset_remote');

}
function blogo_check_and_unset_remote(){
$.getJSON(BLOGO_REMOTE_API+"?&u=1&format=json&jsoncallback=?",
	function(data){//REMINDER ->check errors
	$.getJSON(BLOGO_REMOTE_API+"?&v=loggedout&t=0&format=json&jsoncallback=?",
        function(data){
			//REMINDER->check if fails
			blogo_cookie('unset remote');
			set_cookie_controller(3);
        });
     });
}
function check_cookie_val(val){
 //check val validity (split and count chars)
 if(!val) return false;
 var a=val.split(',');
 if(a.length!=2) return false;
 if(a[0].length<1) return false;
 if(a[1].length!=40
  && a[1].indexOf('sha1$')==-1) return false;
 return true;
}
function blogo_handle_result(data){
	try{
		if(data['error']) return '';
		var out=data['result'];
		return out;
	}catch(err){
		
	}
}
function display_user_box(cookie_val){
	if(is_community)return;
	var val=cookie_val;
	if(!cookie_val) val=$.cookie(LOCAL_COOKIE);
	if(!check_cookie_val(val)) return;
	var a=val.split(',');
	var username=a[0];
	
	
	var username_path=username;
	if(username.length<3) username_path+='aaa';
	var avatar_url=COMMUNITY_AVATAR+username_path[0]+'/'+username_path[1]+'/'+username_path[2]+'/';
	var avatar_url_tiny=avatar_url+username+'_thumbnail.png';
	var user_profile='/user/profile/';//HACK

    if(ACTIVE_COMMUNITIES.indexOf(CURRENT_DOMAIN)!=-1){
	    var user_profile=COMMUNITY_PROFILE+username+'/';
	}

	//check if exists
/*	var img_test = new Image(); 
	img_test.onerror = function(){ avatar_url_tiny=COMMUNITY_DEFAULT_AVATAR; }; 
	img_test.src = avatar_url_tiny; */
	
	
	/*
	BLOGO PATHS
	var avatar_url_tiny='http://static.blogo.it/users/generic_avatar.gif';
	var user_profile='/user/profile/';
	*/
    var html_box="<span class=\"avatar-utente\" >"+
    "<img src=\""+avatar_url_tiny+"\"  alt=\"avatar di "+username+"\" width=\"36\" height=\"36\" onError=\"this.src=COMMUNITY_DEFAULT_AVATAR\" /></img></span>"+
    "<div class=\"registrato-right\">"+
        "<span class=\"nome-utente\">"+username+"</span>"+
        "<span class=\"link-utente\"><a href=\""+user_profile+"\">Profilo</a> - <a href=\"/user/logout\">Logout</a></span>"+
    "</div>";

    var html_box_headernav="<div class=\"u_box\">"+
	    "<a href=\""+user_profile+"\"><img src=\""+avatar_url_tiny+"\" alt=\""+username+"\" width=\"25\" height=\"25\" onError=\"this.src=COMMUNITY_DEFAULT_AVATAR\" /></a>"+
    	"<a href=\""+user_profile+"\"><span>"+username+"</span></a>"+
	    "<small><a href=\""+user_profile+"\">Profilo</a> <a href=\"/user/logout\">Logout</a></small>"+
        "</div>";
    document.write("<style type=\"text/css\">.n_right .dropdown{ display: none; } #header .blocco-login{ display: none; }</style>");
    $(function(){
	    $('.n_right .dropdown').html(html_box_headernav).show();
	    $("div.blocco-login").html(html_box).removeClass('blocco-login').addClass('blocco-registrato');
    });
 
	 

}
function hide_user_box(){
	document.write("<style type=\"text/css\">#header .blocco-registrato{ display: none; }</style>");
}
function blogo_cookie(str){
	if(!blogo_cookie_debug) return;
	var id='blogo_test_console';
	
	if(!window.document.getElementById(id)){

			$("body").prepend("<div id=\""+id+"\" style=\"position: absolute; top: 2px; left: 2px; border:1px dotted #000; z-index: 1000; background-color: #fff; color: #000; text-align:left\"></div>");
	}
		$("body #"+id).append(str+"<br/>");
	/*
	if(blogo_cookie_debug && console){
		console.log(str);
	}
	*/
}
function blogo_cookie_logger(str){
	if(!blogo_cookie_debug) return;
	$(function(){
		blogo_cookie(str);
	});
}

/* END LIB */

