
var hasToLogin;
var publishPerms        = false;
var loginInProgress     = false;
var permInProgress      = false;
var facebookIdLogged    = false;
var loginMode           = false;
var loggedIn            = false;




function initFB(){

     FB.init({
          appId  : fbApiKey,
          status : true, // check login status
          cookie : true, // enable cookies to allow the server to access the session
          xfbml  : true  // parse XFBML
     });

    afterLoggedFunc = false;
}

function loginFromFb(){

    loginMode   = true;
    
    login();
}

function registerFbAccount(){
    loginMode   = false;
    
    login();
}

function relog(){
    loginInProgress = false;
    permInProgress  = false;
    facebookIdLogged  = false;
    login();
}

var eventLocation;

function login(){

    FB.login(loginHanddle);
}

function fbEventAutocomplete(pagelocation){
    eventLocation   = pagelocation;
    afterLoggedFunc = fbCompleteEvent;
    login();
}


function fbCompleteEvent(session){
    var formContainer       = document.createElement("div");
    formContainer.innerHTML = "<form id=\"eventComplete\" action=\""+eventLocation+"\" method=\"post\"><input type=\"hidden\" name =\"fbtoken\" value=\""+session.access_token+"\" /></form>";
    document.body.appendChild(formContainer);
    document.getElementById("eventComplete").submit();
}



/*
function checkFbLogin(){
    var request = makeHttpObject();
    request.open("GET", root+"/fb/loginStatus.php", false);
    request.send(null);

    if(request.responseText != "no-result"){
        if(request.responseText == "ok"){
            initFB();
            FB.getLoginStatus(getLoginStatusHandle);
        }
        clearInterval(waitForLog);

    }

}


function makeHttpObject() {
  try {return new XMLHttpRequest();}
  catch (error) {}
  try {return new ActiveXObject("Msxml2.XMLHTTP");}
  catch (error) {}
  try {return new ActiveXObject("Microsoft.XMLHTTP");}
  catch (error) {}

  throw new Error("Could not create HTTP request object.");
}

*/
function loginHanddle(response){

    if (response.session)

        if(response.perms == null){
            askPublishPermission(response);
            
        }else if(response.perms.indexOf("publish_stream") != -1){
            publishPerms = true;
            facebookLogged(response.session);
        }else{
            askPublishPermission(response);
        }
}
function facebookLogged(session){
    if(!facebookIdLogged){

        facebookIdLogged    = true;
        
        if(session){
            if(afterLoggedFunc){
                afterLoggedFunc(session);
            }else
                window.location=root+"/fblogin-"+session.access_token;
            
        }

    }
}

function getUserDataHandle(response){
    if(document.getElementById("id_facebook")) document.getElementById("id_facebook").value = response.id;
    if(document.getElementById("fb_link")) document.getElementById("fb_link").style.display = "none";
    if(document.getElementById("fb_ok")) document.getElementById("fb_ok").style.display     = "block";
    if(document.getElementById("register_submit")){
        document.getElementById("firstname").value = response.first_name;
        document.getElementById("lastname").value = response.last_name;    
    }


    
}

function getLoginStatusHandle(response){
    hasToLogin = true;
    
    if (response.session) {
        hasToLogin = false;
        if(response.perms.indexOf("publish_stream") != -1){
            publishPerms = true;
            facebookLogged(response.session);
        }else{
           askPublishPermission(response);
        }
        
	}else login();
}

function askFullPermission(){
    
	FB.ui(
    {
        method: "auth.login", "perms": 'publish_stream,email',caption: 'Terms and condition',
     description: '' +
             '' +
             ''

    } ,
            allPermissionAsked

            );
}

function askPublishPermission(){
    FB.ui({method: "permissions.request", "perms": 'publish_stream,email',caption: 'Terms and condition'} , allPermissionAsked);
}

function allPermissionAsked(response){
	//if(response.perms) if(response.perms.indexOf("publish_stream") != -1) 

    var permissionGranted;
    if(response.perms){
        permissionGranted   = response.perms.indexOf("publish_stream") != -1;
    }else permissionGranted = false;

    facebookLogged(permissionGranted ? response.session : false);
        
    
}

function logAngShare(sharefunc){
    FB.login(sharefunc) ;
}



function shareTour(id,name,small_description,thumb){

    tourPostData    = {
        id                  :id,
        name                :name,
        small_description   :small_description,
        thumb               :thumb
    }

    if(facebookIdLogged){
        shareTourAfterLogin();           
    }else{

        afterLoggedFunc  = shareTourAfterLogin;
        login();
    }

}

function shareTourAfterLogin(){
    afterLoggedFunc  = null;

    FB.ui(
	   {
           method: 'stream.publish',
		   message: 'Post a message on your wall',
           caption     : "Look how awesome is this tour",
           name        : "MyCity "+tourPostData.name,
           description : tourPostData.small_description,
           picture     : root+"/assets/map/places/"+tourPostData.thumb,
           link:root,
           user_message_prompt: 'Share this place'
	   },
	   postedHandle
	 );
}

function checkFbPostForNews(){

    var fbPost  = document.getElementById("fbpost");
    if(!fbPost.checked) return true;
    var fbTokenField    = document.getElementById("fbToken");
    if(fbTokenField.value != "") return true;
    afterLoggedFunc = submitFbPostForNews;
    login();

    return false;
}


function submitFbPostForNews(session){
    
    var fbTokenField    = document.getElementById("fbToken");
    fbTokenField.value = session.access_token;
    document.getElementById("editFormulaire").submit();
}




function sharePlace(id,name,small_description,thumb){
    

    placePostData    = {
            id                  :id,
            name                :name,
            small_description   :small_description,
            thumb               :thumb
        }

    if(facebookIdLogged){
        sharePlaceAfterLogin();
    }else{

        afterLoggedFunc  = sharePlaceAfterLogin;
        login();
    }

}

function sharePlaceAfterLogin(){
    
    afterLoggedFunc = null;

    FB.ui(
	   {
           method: 'stream.publish',
		   message: 'Post a message on your wall',
           caption     : "Look how awesome is this place",
           name        : "MyCity "+placePostData.name,
           description : placePostData.small_description,
           picture     : root+"/assets/map/places/"+placePostData.thumb,
           link:root,
           user_message_prompt: 'Share this place'
	   },
	   postedHandle
	 );


   
}

function postedHandle(response){
    //if(mainFlashContainer.posted) mainFlashContainer.posted(response.post_id != undefined);
}

function loginResponseHandle(response){


}

function handleSessionResponse(response){



}





