
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
     });
}

function loginFromFb(){

    loginMode   = true;
    
    login();
}

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

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

function login(){
    if(console) console.log('fb -> login ');
    FB.login(loginHanddle);
}

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(console) console.log('fb -> loginHanddle ');
    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();
            }else if(loginMode)
                window.location=root+"/fblogin-"+session.access_token;
            else
                FB.api("/me",getUserDataHandle);
        }

    }
}

function getUserDataHandle(response){
    if($("id_facebook")) $("id_facebook").value = response.id;
    if($("fb_link")) $("fb_link").style.display = "none";
    if($("fb_ok")) $("fb_ok").style.display     = "block";
    if($("register_submit")){
        $("firstname").value = response.first_name;
        $("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',caption: 'Terms and condition',
     description: '' +
             '' +
             ''

    } ,
            allPermissionAsked

            );
}

function askPublishPermission(){
    FB.ui({method: "permissions.request", "perms": 'publish_stream',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 testShare(){
    FB.ui(
	   {
		 method: 'stream.publish',
		 message: 'Post a message on your wall',
		 attachment: {
		   caption: "Look how awesome is this place",
           name: 'My City XP',

             description: (
			 "I ve been here yesterday with my clickey"
		   )

		 },
		 
		 user_message_prompt: 'Share this place'
	   },
	   postedHandle
	 );

}

function postShare(token){

    
    FB.api('/me/feed', 'post', {
        method      : 'stream.publish',
        caption     : "Even angels are falling for the scent of new Lynx Excite. But one remains in heaven - Archangel Kelly Brook.",
        name        : 'Lynx Fallen Angel',
        picture     : 'http://ec2-46-137-20-167.eu-west-1.compute.amazonaws.com/lynxelvis/images/icon.jpg',
        description : (
			 "Watch as I try to make her fall for me..."
		   ),
        link: urlApp+"share/"+token

		 }, postedHandle
    );
    
}

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 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){



}


