/**
 * JavaScript frontUser.js
 * @version 1.0
 * @Created: 2011-01-18
 * @Author: Oscar Engström, http://www.engstream.se/
 *
 * Comment to this document:
 * Handles login, logout and that kind of stuff
 */

var performerFrontUser = {
  /**
   * Run this when initialize (or re-initialize) frontUser-functionality
   */
  init: function(){
    $("#spotlightLogin").submit(function(ev){
      ev.preventDefault();
      performerFrontUser.login();
    });

    //When clicking on "login"-button
    $("#loginSubmit").live('click', function(ev){
      ev.preventDefault();
      $("#spotlightLogin").submit();
    });

    //When clicking on logut from menu (same place as login)
    $("#menu .login a.logout").live('click', function(ev){
      ev.preventDefault();
      performerFrontUser.logout();
    });

    //When clicking on logut button
    $("#logoutSubmit").live('click', function(ev){
      ev.preventDefault();
      performerFrontUser.logout();
    });

    //When clicking any restorePassword-link
    $(".restorePassword").live('click', function(ev){
      ev.preventDefault();
      performerShadowbox.showDialogue('frontUser.restorePassword', false, 250);
    });

    //When clicking any restorePassword-link
    $("#frontUserRestorePasswordSubmit").live('click', function(ev){
      ev.preventDefault();
      performerFrontUser.restorePassword();
    });
  },

  /**
   * Check if a visitor is logged in.
   * This function is synchronous!
   */
  isLoggedIn: function(){
    var data = new Object();
        data.action = 'isLoggedIn';

    var isLoggedIn = false;
        $.ajax({
          url: 'ajax/frontUser.php',
          type: 'GET',
          async: false,
          cache: false,
          timeout: 30000,
          data: data,
          error: function(){
              return false;
          },
          success: function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              if(obj.isLoggedIn == 1){
                //Visitor is logged in through site
                isLoggedIn = true;
              } else {
                //Visitor isn't logged in through site
                isLoggedIn = false;
              }
            } else {
              //Could not get state of visitors session
              isLoggedIn = false;
            }
          }
        });
    //Return answer from serverside
    return isLoggedIn;
  },

  login: function(){
    performerShadowbox.stdOpen($("#loading").html(), 155, 555);

    var data = new Object();
        data.action = 'login';
        data.username = $("#loginUsername").val();
        data.password = $("#loginPassword").val();

        var dataString = $.toJSON(data);

        $.post('ajax/frontUser.php', {data: dataString}, function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              //Logged in correctly
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
              vidSpotlight.changeContent('normal');
              $("#loggedInBox").html(obj.loggedInBox);
              $("#loginFirstName").text(obj.firstName);
              $("#loginLastName").text(obj.lastName);
              $("#menu .login a").text('Logga ut');
              $("#menu .login a").addClass('logout');

              if(typeof(reloadAfterLogin) !== 'undefined'){
                if(reloadAfterLogin){
                  var t = setTimeout(function(){
                    window.location.reload();
                  }, 2500);
                }
              }
            } else {
              //Could not get state of visitors frontUser-session
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
            }
        });
  },

  logout: function(){
    var data = new Object();
        data.action = 'logout';

        var dataString = $.toJSON(data);

        $.post('ajax/frontUser.php', {data: dataString}, function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              //Logged in correctly
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
              vidSpotlight.changeContent('login');
              $("#loggedInBox").html('');
              $("#menu .login a").text('Logga in');
              $("#menu .login a").removeClass('logout');
            } else {
              //Could not get state of visitors frontUser-session
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
            }
        });
  },

  /**
   * Call this function when the visitor needs to be logged in, but isn't
   * Function says to visitor to login.
   */
  sayLogin: function(){
    var data = new Object();
        data.action = 'sayLoginTemplate';

        var dataString = $.toJSON(data);

        $.post('ajax/frontUser.php', {data: dataString}, function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
              vidSpotlight.changeContent('login');
              $("#menu .login a").text('Logga in');
              $("#menu .login a").removeClass('logout');
              wrScroll.scrollTo(0, $("#spotlight").position().top, 1000);
            } else {
              //Could not get state of visitors frontUser-session
              vidSpotlight.changeContent('login');
              $("#menu .login a").text('Logga in');
              $("#menu .login a").removeClass('logout');
            }
        });
  },

  restorePassword: function(){
    var username = $("#frontUserRestorePasswordUsername").val(); //Must be done first, otherwise the value will be lost in performerShadowbox
    performerShadowbox.stdOpen($("#loading").html(), 155, 555);

    var data = new Object();
        data.action = 'restorePassword';
        data.username = username;

        var dataString = $.toJSON(data);

        $.post('ajax/frontUser.php', {data: dataString}, function(res){
            var obj = $.evalJSON(res);
            if(obj.success == 1){
              //Logged in correctly
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
            } else {
              //Could not get state of visitors frontUser-session
              performerShadowbox.stdOpen(obj.tpl, 155, 555);
            }
        });
  }
}
