// Datos de la Aplicacion
permissions = 'user_about_me, email, user_photos, read_stream,publish_stream,offline_access';
appId =  "98759276096";

$(document).ready(function() {
	$('#facebook_box').dialog({ width: 600, autoOpen: false, modal: true, close: function() { $('#spinner').hide(); }});
	$('#choose_box').dialog({ width: 600, autoOpen: false, modal: true, close: function() { $('.errorMsg').hide() } });
	$('#btnSubmitFB').click(validateFacebookLogin);
	enableFacebookLogin();
});

function facebookInit(appId, callback) {
    window.fbAsyncInit = function() {
        FB.init({
            appId: appId,
            status: true,
            cookie: true,
            xfbml: true
        });
        if(callback != undefined) {
            callback.call(this);
        }
    };

    var fbRootDiv = document.createElement('div');
    fbRootDiv.setAttribute('id', 'fb-root');
    document.body.appendChild(fbRootDiv);

    var e = document.createElement('script');
    e.async = true;
    e.src = document.location.protocol + '//connect.facebook.net/es_ES/all.js';
    fbRootDiv.appendChild(e);
}

function facebookConnect(permissions, goOnFunction, goBackFunction) {
    FB.login(function(response) {
        if (response.session && response.perms) {
            goOnFunction.call(this, response.session);
        } else {
            if(goBackFunction != undefined) {
                goBackFunction.call(this);
            }
        }
    }, {
        perms: permissions
    });

}

function facebookStore(goOnFunction, goBackFunction) {
    $.post('/ajax/connect_to_facebook.php', {}, function (user) {
        if (user) {
            goOnFunction.call(this, user);
        } else {
            if(goBackFunction != undefined) {
                goBackFunction.call(this);
            }
        }
    });
}

function facebookCurrentUser(goOnFunction, goBackFunction) {
    FB.getLoginStatus(function(response) {
        if(response.session) {
            FB.api({
                method: 'fql.query',
                query: 'SELECT name, first_name, middle_name, last_name, pic_square, email FROM user WHERE uid='+response.session.uid
            }, function(user) {
                goOnFunction.call(this, user[0]);
            });
        } else {
            if(goBackFunction != undefined) {
                goBackFunction.call(this);
            }
        }
    });
}

function facebookFriendsUsingApp(goOnFunction, goBackFunction) {
    FB.getLoginStatus(function(response) {
        if(response.session) {
            jQuery.post('/ajax/friendsUsingFacebookApp.php', {},
                function (friends) {
                    if (friends) {
                        goOnFunction.call(this, friends);
                    } else {
                        if(goBackFunction != undefined) {
                            goBackFunction.call(this);
                        }
                    }
                }
            );
        }
    });
}

// Funciones Especificas para el Website

function enableFacebookLogin() {
	facebookInit(appId);
	jQuery('#fb-button').click(function() { signInWithId(); return false; });
}

function signInWithId() {
	facebookConnect(permissions, goOnSignInWithId);
}

function goOnSignInWithId() {
	$('#fbconnect').attr('value', 'synched');
	$('#facebook_box').dialog('open');
	$('#facebook_box').siblings(".ui-dialog-titlebar").hide();
	$('#spinner').show();

	facebookCurrentUser(chooseWhatToDo, goBack);
/*
	$.post('/ajax/signInWithFacebookUserId.php', {}, function (message) {
		if(message == 0) {
			signInWithEmail();
		} else {
			window.location.reload();
		}
	});
*/
}

function signInWithEmail() {
	$.post('/ajax/signInWithFacebookMail.php', {}, function (message) {
		if(message == 0) {
			facebookCurrentUser(chooseWhatToDo, goBack);
		} else {
			window.location.reload();
		}
	});
}

function goBack() {
	$('#facebook_box').dialog('close');
}

 function goBackChoose() {
	$('#choose_box').dialog('close');
}

function chooseWhatToDo(user) {
	$('#facebook_box').dialog('close');
	$('#choose_box').dialog('open');
	$('#choose_box').siblings(".ui-dialog-titlebar").hide();

	$('#facebookUserPicture').attr('src', user.pic_square);
	$('#facebookUserName').append(user.name);
	$('#facebookUserMail').html(user.email);

	// Si ya existe el Usuario, Login
	$.post('facebook/emailregistrado.php', {dato: user.email}, function (message) {
		if(message == 1) {
			$('#box-login').show();
			$('#box-register').hide();
			$('#email_login').val(user.email);
		} else { // Register
			$('#box-register').show();
			$('#box-login').hide();
			$('#email_register').val(user.email);
			$('#apellido_register').val(user.last_name);
			$('#nombre_register').val(escape(user.first_name) + ' ' + escape(user.middle_name));
		}
	});

}

function validateFacebookLogin() {
	$('#usernameError').hide();
	$('#passwordError').hide();
	$('#btnSubmitFB').attr('value', "Wait...");
	$('#btnSubmitFB').attr('disabled', 'disabled');

	$.post('/ajax/validateSignIn.php',
		$('#loginFormFB').serialize(),
		function(data) {
			if(data == "0") {
				$('#loginFormFB').hide();
				$('#loginFormFB').submit();
			} else {
				if(data && data != 2 && data != 4) {
					$('#usernameError').show().html("No account exists with this username or email address.");
				}
				if(data && data != 3) {
					$('#passwordError').show().html("Please verify your password");
				}
				$('#btnSubmitFB').attr('value', "Sign in");
				$('#btnSubmitFB').attr('disabled', '');
			}
		}
	);
	return false;
}

function cargarReservaFacebook(user) {

	document.Formulario.nombre_reserva.value = user.first_name + ' ' + user.middle_name;
	document.Formulario.apellido_reserva.value = user.last_name;
	document.Formulario.email_reserva.value = user.email;
}


 function publicarFacebook(nombre_restaurante, id_restaurante) {

	var texto = 'Publiqué en cenaplus.com un comentario sobre el Restaurante ' + nombre_restaurante;

    FB.getLoginStatus(function(response) {
        if(response.session) {

			FB.api('/me/feed', 'post', { message: texto, link: 'http://www.cenaplus.com/'+id_restaurante+'--' }, function(response) {
			  if (!response || response.error) {
//				alert('No se pudo publicar el comentario en Facebook.');
			  } else {
//				alert('Comentario publicado en Facebook.');
			  }
			});
		}
    });
}

function registerFacebook(){
	var email_register = $('#email_register').val();
	var password_register = $('#password_register').val();
	var telefono_register = $('#telefono_register').val();
	var nombre_register = $('#nombre_register').val();
	var apellido_register = $('#apellido_register').val();

	$.post('facebook/registerFacebook.php', {email: email_register, password: password_register, telefono: telefono_register, nombre: nombre_register, apellido: apellido_register}, function (message) {

		if(message == "1") { // Ok
			window.location.reload();
		} else {
//			alert('No se pudo Registrar el Usuario... Compruebe que se hayan ingresado todos los campos requeridos y vuelva a intentar.')
			alert(message);
		}
	});
}

function loginFacebook(){
	var email_post = $('#email_login').val();
	var contrasena_post = $('#password_login').val();

	$.post('facebook/loginFacebook.php', {email: email_post, password: contrasena_post}, function (message) {

		if(message == 1) { // Ok
			window.location.reload();
		} else {
			alert('La contraseña ingresada con coincide con la registrada. Favor de revisarla e intentar nuevamente...')
		}
	});
}
