var preUserName, preEmail;
var usernameExists = false, emailExists = false;
var ajaxValidate = true;
var extLoginFirstName = '';
var extLoginLastName = '';
var extLoginEmail = '';
var serviceType = '';
var serviceLink = '';

if($){
  $(document).ready(function(){
     usernameExists = false;
     emailExists = false;
     $('.fb-login').livequery("click", function(){
        FB.login(function(response) {
          if (response.authResponse) {
            displayLoggingInMessage();
            $.post("/account/facebook.php", null,
              function(data){
              if (data.status == 'registered') {
                window.location += (window.location.search ? "&" : "?") + "extlogin=1";
              } else if (data.status == 'unassociated') {
                window.location += (window.location.search ? "&" : "?") + "extlogin=1&id="+data.user_id;
              } else if (data.status == 'error') {
                popupMessage(data.header, data.message);
                hideLoggingInMessage();
              } else {
                extLoginFirstName = data.first_name;
                extLoginLastName = data.last_name;
                extLoginEmail = data.email;
                ajaxValidate = false;
                serviceType = 'facebook';
                serviceLink = data.link;
                $(".signup").trigger("click");
                hideLoggingInMessage();
              }
            }, "json");
          }
        }, {scope: 'publish_stream,email'});

        return false;
      });

    $('.tw-login').livequery("click", function(){
      usernameExists = false;
      emailExists = false;
      $.post("/account/twitter.php", "action=get_url&original_url="+window.location,
        function(data){
          if (data.url) {
            window.location = data.url;
          }
        }, "json");

      return false;
    });

    if (($('#twitter_return').length == 1) ||
          ($('#myspace_return').length == 1)) {
      var url, params;
      if ($('#twitter_return').length == 1) {
        url = "/account/twitter.php"
        params = "action=get_info&oauth_token="+$("#twitter_return").html();
      } else {
        url = "/account/myspace/myspace.php"
        params = "action=get_info&oauth_verifier="+$("#myspace_return").html();
      }
      displayLoggingInMessage();
      $.post(url, params,
        function(data){
          if (data.status == 'registered') {
            window.location = data.original_url + (data.original_url.indexOf("?") > -1 ? "&" : "?") + "extlogin=1";
          } else if (data.status == 'unassociated') {
            window.location = data.original_url + (data.original_url.indexOf("?") > -1 ? "&" : "?") + 
                "extlogin=1&id="+data.user_id;
          } else if (data.status == 'error') {
            if (data.redirect_url) {
              window.location = data.redirect_url;
            } else {
              popupMessage(data.header, data.message);
              hideLoggingInMessage();
            }
          } else {
            extLoginFirstName = data.first_name;
            extLoginLastName = data.last_name;
            extLoginEmail = data.email;
            ajaxValidate = false;
            serviceType = $('#twitter_return').length == 1 ? 'twitter' : 
                'myspace';
            serviceLink = data.link;
            $(".signup").trigger("click");
            hideLoggingInMessage();
          }
        }, "json");
    }

    if ($('#display_error').length == 1) {
      var message = $('#display_error').html().split('|');
      popupMessage(message[0], message[1]);
    }

    $('.my-login').livequery("click", function(){
      usernameExists = false;
      emailExists = false;
      $.post("/account/myspace/myspace.php", "action=initiate&original_url="+window.location,
        function(data){
          if (data.url) {
            window.location = data.url;
          }
        }, "json");

      return false;
    });

    $(".signup").livequery("click", function(){
      $("#firstName, #lastName, #email, #email2").parent().show();

      if (serviceType) {
        $("#create_user_popup_table").attr("width", 440);
        $("#create_user_socnet_col").hide();
        $(".orgraph").hide();
        $("#create_user_instructions").html("Associate your " + serviceType + " account with Userbars.com.");
        $("#btnSignupSubmit").html("Login");

        if (extLoginFirstName) {
          $("#firstName, #lastName, #email, #email2").parent().hide();
        }
      } else {
        $("#create_user_popup_table").attr("width", 820);
        $("#create_user_socnet_col").show();
        $(".orgraph").show();
        $("#create_user_instructions").html("Create a new account on Userbars.com. <a class=\"login\" href=\"#loginPopup\">I'm already a member.</a>");
        $("#btnSignupSubmit").html("Create Account");
      }

      $.fancybox({
        'href' : '#createUserPopup1',
        'onComplete' : function() {
            $('#createUserPopup1 input').val('');
            if (extLoginFirstName) {
              $('#firstName').val(extLoginFirstName);
              $('#lastName').val(extLoginLastName);
              $('#email').val(extLoginEmail);
              $('#email2').val(extLoginEmail);
            }
            if ($("#inplace_username").length == 1) {
              $('#userName').val($("#inplace_username").val());
            }
            if ($("#inplace_email").length == 1) {
              $('#email').val($("#inplace_email").val());
            }
            $("#signup_status").html('');

            $("#userName").focus().select();
        },
        'onClosed' : function() {
            $('#createUserPopup1 input').val('');
            $('#createUserPopup1 .formHint').hide();
            $('#createUserPopup1 .ctrlHolder').removeClass('error');
            ajaxValidate = true;
            serviceType = '';
        }
      });

      return false;
    });

    //  General message popup
    function popupMessage(header, message) {
      $.fancybox('<h2>'+header+'</h2><p>'+message+'</p>', {
        'autoDimension' : false,
        'width' : 300,
        'height' : 'auto',
        'padding' : 30
      });
    }

    //check username
    $('#userName').blur(function(){
      if (!ajaxValidate) return true;

      var username = $('#userName').val();
      if(preUserName != username){
        preUserName = username;
        $.ajax({
                type: 'GET',
                url: "/JSON/signup.php?action=verifyUserName&username=" +  username + "&rnd=" + Math.random(),
                data: '',
                success: function(data){
                  if(data.result == 'existing'){
                    $('#userNameHint1').parent().addClass('error');
                    $('#currentName').html(username);
                    $('#userNameHint1').show();
                    $.fancybox.resize();
                    usernameExists = true;
                  }
                  else{
                    $('#userNameHint1').parent().removeClass('error');
                    $('#userNameHint1').hide();
                    $.fancybox.resize();
                    usernameExists = false;
                  }
                },
                dataType: 'json'});
      }

      return true;
    });

    //check email
    $('#email').blur(function(){
      if (!ajaxValidate) return true;

      var email = $('#email').val();
      if(preEmail != email){
        preEmail = email;
        $.ajax({
                type: 'GET',
                url: "/JSON/signup.php?action=verifyEmail&email=" +  email + "&rnd=" + Math.random(),
                data: '',
                success: function(data){
                  if(data.result == 'existing'){
                    $('#emailHint1').parent().addClass('error');
                    $('#currentEmail').html(email);
                    $('#emailHint1').show();
                    $.fancybox.resize();
                    emailExists = true;
                  }
                  else{
                    $('#emailHint1').parent().removeClass('error');
                    $('#emailHint1').hide();
                    $.fancybox.resize();
                    emailExists = false;
                  }
                },
                dataType: 'json'});
      }

      return true;
    });

    $('#signupForm').livequery("keyup", function(e){
      if (e.which == 13) {
         $('#btnSignupSubmit').click();
       }
      return true;
    });

    $('#btnSignupSubmit').livequery("click", function(e){
      e.preventDefault();
      $('#signupForm').submit();
    });

    $('#signupForm').livequery("submit", function(){
      var can_submit = true;
      var required_fields = ['userName', 'password', 'password2', 'email', 'email2'];
      if (serviceType) {
        usernameExists = false;
        emailExists = false;
      }
      $(required_fields).each(function(i){
        var el = $('#' + required_fields[i]);
        if(el.val() == ''){
          can_submit = false;
          el.parent().addClass('error');
          $('#' + required_fields[i] + 'Hint').show();
          $.fancybox.resize();
        }
        else {
          el.parent().removeClass('error');
          $('#' + required_fields[i] + 'Hint').hide();
          $.fancybox.resize();
        }
      });

      if($('#password').val() != '' && $('#password2').val() != '' && $('#password').val() != $('#password2').val()) {
        can_submit = false;
        $('#password2').parent().addClass('error');
        $('#password2Hint2').show();
        $.fancybox.resize();
      }
      else {
        if($('#password2').val() != ''){
          $('#password2').parent().removeClass('error');
        }
        $('#password2Hint2').hide();
        $.fancybox.resize();
      }

      if($('#email').val() != '' && $('#email2').val() != '' && $('#email').val() != $('#email2').val()) {
        can_submit = false;
        $('#email2').parent().addClass('error');
        $('#email2Hint2').show();
        $.fancybox.resize();
      }
      else {
        if($('#email2').val() != ''){
          $('#email2').parent().removeClass('error');
        }
        $('#email2Hint2').hide();
        $.fancybox.resize();
      }

      //return can_submit && !usernameExists && !emailExists;
      if(can_submit && !usernameExists && !emailExists){
        if (serviceType) {
          $("#createUserPopup1 #service_type").val(serviceType);
          $("#createUserPopup1 #service_link").val(serviceLink);
          $("#signup_status").html('logging in <img id="logging_in" src="'+cdnUrl+'/images/loading-tiny.gif" width="16" height="16" alt="logging in..." />');
          $.fancybox.resize();
        }
        $("#action").val('createAccount');
        //ajax form
        $(this).ajaxSubmit({
            dataType: 'json',
            success: function(data){
                if(data.result == 'success'){
                    if (serviceType) {
                     var href = data.redirect + 
                          (data.redirect.indexOf("?") != -1 ? "&" : "?") + 
                          "extlogin=1&id="+data.user_id;
                      window.location = href;
                    } else {
                      $('#btnSignupSubmit').hide();
                      $('#signUpResult').html('Your account has been created.')
                      var redir = window.location.href + (window.location.href.indexOf("?") > -1 ? "&" : "?") + 
                          "extlogin=1&id="+data.user_id;
                      $('#btn_close').attr('href', redir);
                      $('#btn_close').show();
                    }
                }
                else{
                    if (data.msg == 'username_exists') {
                      usernameExists = true;
                      $('#signup_status').html('');
                      $('#currentName').html($('#userName').val());
                      $('#userNameHint1').parent().addClass('error');
                      $('#userNameHint1').show();
                      $.fancybox.resize();
                    } else {
                      if (serviceType) {
                        $("#signup_status").html(data.msg);
                      } else {
                        $('#signUpResult').html(data.msg);
                      }
                    }
                }
            }
        });
      }
      return false;
    });


    $(".login").livequery("click", function(){
      $.fancybox({
        'href' : '#loginPopup1',
        'onComplete' : function() {
//            $("input:text:visible:first").focus().select();
            $("#login_status").html('');
        },
        'onClosed' : function() {
            $('#loginName').val("Username or Email Address");
            $('#loginPassword').val("********");
            $("#login_status").html('');
            $('#loginErrorMsg').hide();
            $('#loginResult').hide();
        }
      });
      return false;
    });

    $('#loginForm').livequery("keyup", function(e){
      if (e.which == 13) {
         $('#btnLoginSubmit').click();
       }
      return true;
    });

    jQuery('#btnLoginSubmit').livequery("click", function(e){
      e.preventDefault();
      jQuery('#loginForm').submit();
    });
    jQuery('#loginForm').livequery("submit", function(){
      $("#login_status").html('logging in <img id="logging_in" src="'+cdnUrl+'/images/loading-tiny.gif" width="16" height="16" alt="logging in..." />');
      if(jQuery('#loginName').val() != '' && jQuery('#loginPassword').val()){
        $('#loginErrorMsg').hide();
        $('#loginResult').hide();
        $.fancybox.resize();
        //ajax form
        $(this).ajaxSubmit({
            dataType: 'json',
            success: function(data){
                if (data.result == 'success') {
                  if (window.location.pathname == '/') {
                    window.location = cdnUrl + '/profile/dashboard.php';
                  } else {
                    window.location.reload();
                  }
                } else {
                    $("#login_status").html('');
                    $('#loginErrorMsg').hide();
                    $('#loginResult').show();
                    $.fancybox.resize();
                }
            }
        });
      }
      else{
        $("#login_status").html('');
        $('#loginErrorMsg').show();
        $('#loginResult').hide();
        $.fancybox.resize();
      }
      return false;
    });

    function displayLoggingInMessage() {
      $("body").append('<div id="logging_in_message" style="position:absolute; top:0; left:0; color:#fff; background-color:#ff6600; padding:5px 10px;">Logging in...</div>');
    }

    function hideLoggingInMessage() {
      $("#logging_in_message").remove();
    }

  });
}

