window.FBaccess_token = '';
app_id = 256261486859;
window.fbAsyncInit = function() {
    FB.init({appId: app_id, status: true, cookie: true,
        xfbml: true});
    modify_FB_button();    
    try{
        window.afterFBinit();
    }catch(e){
    }
};

function reload(){
    window.location.reload();
}

function getVars(obj){
    var returnString = "";
    for( var key in obj){
        returnString += ", "+key; 
    }
    return returnString.substring(2);
}
function modify_FB_button(){
    //This button is just a login with facebook button
    //so onclick it will run FB.login
    
    //This function will change the texxt based on the user, and, if there is a user, will add a logout button

    FB.getLoginStatus(function(response){
        var button = $('A#aMFBLink');

        if (response.session){
            api('/fb/user/'+response.session.uid+'/', function(response){
                //Get the user from my db that has this fbid
                response = getResponse(response);
                if(response.success){
                    //I have one, so I dont need to show the connect button
                    if(response.username == isLoggedIn()){
                        $('div#dash li.fb').remove();
                    }
                }
            });

            window.FBaccess_token = response.session.access_token;
            FB.api('/me?access_token='+window.FBaccess_token, function(response){
                window.FBuser = response;
                var buttonText = (isLoggedIn())?'Connect':'Login';
                button.find('span').html(buttonText +' '+ response.name);
                button.after(
                    $('<a class="fbLogOut" href="">Not You?</a>')
                    .click(function(){
                        FB.logout(function(response){
                            reload();
                        });
                        return false;
                    })
                    );
            });
        }
    });
}
function FbLogin(){
    //Log them in to facebook
    //get their session
    //get their user object
    //start the znLogin process
    
    FB.login(function(response){
        if(response.session){
            var uid = response.session.uid;
            window.FBaccess_token = response.session.access_token;
            //Now I need to log them in to my site
            //since theyre logged in with Facebook
            new ZnLogin(response.session);
        }else{
            //alert("Why did you cancel???");
        }
    }, {perms:'user_about_me, user_photo_video_tags, user_photos, user_videos, offline_access'});
}

function ZnLogin(FBsession){
    /*
    This object starts at a state that the FB session is known. They are logged into facebook,
    and have accepted my permissions.
    Now I need to log them in to Zoic Nation
    */
    var me = this;

    me.connectCurrent = function(){
        //api call that includes current fbId
        //first make the form
        var connectForm = $('<form action="/fb/add_facebook/" method="post"></form>')
            .append('<input type="hidden" name="fb_id" value="'+FBsession.uid+'">')
            .append('<input type="hidden" name="fb_access_token" value="'+FBsession.access_token+'">');
        var response = api('/fb/add_facebook/', false, connectForm[0]);
        reload();
    }
    me.chooseAccount = function(){
        //a log in form that validates and then connects facebook
        //and an i dont have an accoutn button that will automatically generate a 
        //user based on facebook data

        var loginForm = $('<form action="/fb/add_facebook/" method="post" class="add_facebook"></form>')
            .append('<h2 class="message">Log in to your Zoic Nation account</h2>')
            .append('<h2 class="error"></h2>')
            .append('<input type="hidden" name="fb_id" value="'+FBsession.uid+'">')
            .append('<input type="hidden" name="fb_access_token" value="'+FBsession.access_token+'">')
			.append(
				$('<div></div>')
	            .append('<label>Username:</label>')
	            .append('<input type="text" name="username">')
			)
			.append(
				$('<div></div>')
	            .append('<label>Password:</label>')
	            .append('<input type="password" name="password">')
			)
            .append('<input type="hidden" name="next" value="'+window.location.pathname+'">')
            .append('<input type="submit" class="submit" value="Connect to Facebook">');
        

        loginForm.submit(function(){
            api(this.action, function(response){
                loginForm.find('h2.error').html(response);
                if(response.match(/^Successful/)){
                    reload();
                }
            }, this);
            return false;
        });

        //And the new facebook user "form"

        var newFbForm = $('<form action="/registration/register/" method="post" class="add_facebook"></form>')
            .append('<h2 class="message">Make a new Zoic Nation account with Facebook!</h2>')
            .append('<h2 class="error"></h2>')
            .append('<input type="hidden" name="fb_id" value="'+FBsession.uid+'">')
            .append('<input type="hidden" name="fb_access_token" value="'+FBsession.access_token+'">')
            .append(
				$('<div></div>')
				.append('<label>Username:</label>')
	            .append('<input type="text" name="username" value="'+FBuser.name.replace(/ /, '_')+'">')
	        )
			.append(
				$('<div></div>')
				.append('<label>Email</label>')
	            .append('<input type="text" name="email" value="">')
	        )
			.append(
				$('<div></div>')
				.append('<label>Password:</label>')
	            .append('<input type="password" name="password1">')
	        )
			.append(
				$('<div></div>')
				.append('<label>Password (again):</label>')
	            .append('<input type="password" name="password2">')
			)
            .append('<input type="hidden" name="next" value="'+window.location.pathname+'">')
            .append('<input type="submit" class="submit" value="Connect to Facebook">');
        
        var formsHolder = $('<div class="add_facebook"></div>')
			.append(
				$('<a class="close" href="">close [x]</a>')
				.click(function(){
					$(this).parent().remove();
					$('DIV.whiteFader').remove();
					return false;
				})
			)
			.append($('<div></div>')
	            .append(loginForm)
				.append('<h4>or</h4>')
	            .append(newFbForm)
			);

        fadeToWhite(function(){
            $(document.body).append(
                formsHolder.css({
                    position:"absolute",
                    top:"10%",
                    left:"10%",
                    width:"80%",
                    zIndex:window.fader.zindex+1,
                })
            )
			prettyInputs();
        });
    }
    me.init = function(){
        var fbutton = $('A#aMFBLink');
        fbutton[0].otext = fbutton.html();
        fbutton.html('<img src="http://173.230.131.173/zoic_media/pics/znHorizontalLoad.gif">');

        FB.api('/me?access_token='+window.FBaccess_token, function(FBresponse){
            window.FBuser = FBresponse;
            //Do I have someone with that fbid?
            var user = api('/fb/user/'+FBsession.uid+'/');
            user = getResponse(user);
            if(user.success){
                var response = api('/fb/login/'+FBsession.uid+'/');
                if(response == "success"){
                    reload();
                }else{
                    alert(response);
                }
            }else{
                //Either connect an existing account or make a new one
                if(isLoggedIn()){
                    //Connect them with their current account
                    me.connectCurrent();
                }else{
                    me.chooseAccount();
                }
            }

            fbutton.html(fbutton[0].otext);
        });
    }

    me.init();
}

$(document).ready(function() {
    $(document.body).prepend('<div id="fb-root"></div>');

    var e = document.createElement('script');
       e.async = true;
    e.src = document.location.protocol +
    '//connect.facebook.net/en_US/all.js';
     document.getElementById('fb-root').appendChild(e);
});


