function validateNewUser(attribute_name) {
  var data = $("#signup").serialize();
  data += "&attribute_name=" + attribute_name;

  $.ajax({
    url: "/users/validate_attribute",
    data: data, dataType: 'json',
    success: function (error_message) {
      if (error_message != null) {
        warning = $('<div class="warning"><div class="message">' + error_message + '</div></div>').hide().fadeIn(300);
        $(".formitem input#user_" + attribute_name).parents(".formitem").find(".textbox").after(warning);
      }
    }
  });
}

$(document).ready(function () {
  // Show login form
  $("#show_login").click(function() {
    if($.browser.msie) {
      $("#usernav").slideUp(250);
      setTimeout(function() {
        $("#signin").slideDown(250);
      },250)
    }
    else {
      $("#usernav").slideUp({
        duration: 500,
        easing: 'backinout'
      });
      setTimeout(function() {
        $("#signin").slideDown({
          duration: 1000,
          easing: 'backinout'
        });
      },500)
    }
    return false;
  });
  // Cancel login form
  $(".cancel a").click(function() {
    if($.browser.msie) {
      $("#signin").slideUp(250);
      setTimeout(function() {
        $("#usernav").slideDown(250);
      },250)
    }
    else {
      $("#signin").slideUp({
        duration: 500,
        easing: 'backinout'
      });
      setTimeout(function() {
        $("#usernav").slideDown({
          duration: 500,
          easing: 'backinout'
        });
      },500)
    }
    return false;
  });
  // Cycling boards on the home page
  $("#board_frame").cycle({
    fx: 'scrollLeft',
    easing: 'backinout',
    timeout: 6500
  });
  // Active input states
  $(".formitem input").focus(function() {
    $(this).parents(".formitem").addClass("active");
  })
  $(".formitem input").blur(function() {
    $(this).parents(".formitem").removeClass("active");
  });
  // Checkbox toggle for yes/no checkmarks
  $("label.checkbox").toggle(function() {
    $(this).removeClass("checked");
    $(this).parents(".formitem").find("input").val("0");
  }, function() {
    $(this).addClass("checked");
    $(this).parents(".formitem").find("input").val("1");
  });
  // Submit form link
  $(".submitform").click(function() {
    $(this).parents("form").submit();
    return false;
  });
  // Popup animation for join now on How it Works page
  if($("#joinnow_hook.fixed").length > 0) {
    if($.browser.msie) {
      $("#joinnow_hook").slideDown(250);
    }
    else {
      $("#joinnow_hook").slideDown({
        duration: 500,
        easing: 'backinout'
      });
    }
  }
  // Validate signup form
  $(".formitem input#user_username").focus(function() {
    $(this).parents(".formitem").find(".warning").remove();
  })
  $(".formitem input#user_username").blur(function() {
    validateNewUser("username");
  })

  $(".formitem input#user_email").focus(function() {
    $(this).parents(".formitem").find(".warning").remove();
  });
  $(".formitem input#user_email").blur(function() {
    validateNewUser("email");
  });

  $(".formitem input#user_password").focus(function() {
    $(this).parents(".formitem").find(".warning").remove();
  });
  $(".formitem input#user_password").blur(function() {
    validateNewUser("password");
  });

  $(".formitem input#user_password_confirmation").focus(function() {
    $(this).parents(".formitem").find(".warning").remove();
  });
  $(".formitem input#user_password_confirmation").blur(function() {
    validateNewUser("password_confirmation");
  });

  $("form#signup.register").submit(function() {
    // show warnings in case user never touched inputs
    validateNewUser("username");
    validateNewUser("email");
    validateNewUser("password");
    validateNewUser("password_confirmation");

    // validate user
    $.ajax({
      url: "/users/validate_user", data: $("form#signup").serialize(), dataType: "json",
      success: function (validUser) {
        if (validUser) {
          $("form#signup").unbind("submit");
          $("form#signup").submit();
        }
      }
    });

    return false;
  });
  if($("#slider ul li").length > 0) {
    // Variables
    var panels = $("#slider ul li");
    var scrollPane = $("#slider");
    var scrollContent = $("#slider ul");
    var width = (panels.length * panels.width()) + (panels.length * (parseInt(panels.css("margin-left"),10)*2)) + (panels.length * (parseInt(panels.css("padding-left"),10)*2));
    var item_width = panels.width() + (parseInt(panels.css("margin-left"),10)*2);
    var padding = parseInt(($(window).width()-item_width)/2,10);
    var selectedItem = 1;
    var initialMargin = "-"+(selectedItem-1) * item_width+"px";
    var count = panels.length;

    if(selectedItem == 1) {
      $(".arrow.left").addClass("deactivated");
    }
    if(selectedItem == count) {
      $(".arrow.right").addClass("deactivated");
    }
    // Fade out all panels and then fade in selected.
    panels.fadeTo(0,0.3);
    $("#slider ul li:nth-child("+selectedItem+")").fadeTo(0,1);

    // Set the width and padding of the list, scroll to the
    // location of the selected item.
    $("#slider ul").width(width).css("padding","0 "+padding+"px").css("margin-left",initialMargin);

    // Adjust padding of the slider on window resize
    $(window).resize(function() {
      var padding = parseInt(($(window).width()-item_width)/2,10);
      $("#slider ul").width(width).css("padding","0 "+padding+"px");
    });

    // Create and populate array with panel locations
    var panel_locations = new Array();
    panels.each(function() {
      offset = $(this).index() * item_width;
      panel_locations.push(offset);
    });

    // Moving the panes with a slider
    $("#slider_handle").slider({
      slide:function(e, ui){
        if( scrollContent.width() > scrollPane.width() ) {
          scrollContent.css('margin-left', Math.round( ui.value / 100 * ( item_width - scrollContent.width() )) + 'px');
          if(ui.value == 100) {
            $(".arrow.right").addClass("deactivated");
          }
          else {
            $(".arrow.right").removeClass("deactivated");
            if(ui.value == 0) {
              $(".arrow.left").addClass("deactivated");
            }
            else {
              $(".arrow.left").removeClass("deactivated");
            }
          }
        }
        else {
          scrollContent.css('margin-left', 0);
        }
      }
    });

    // Navigating panes with the arrows
    $(".arrow").click(function() {
      if($(this).is(":not(.deactivated)")) {

        // If we're going right make the next variable +1
        // and make sure that the left button isn't deactivated
        if($(this).hasClass("right")) {
          next = selectedItem+1;
          $(".arrow.left").removeClass("deactivated");
        }

        // Same thing for going left, but opposite.
        else {
          next = selectedItem-1;
          $(".arrow.right").removeClass("deactivated");
        }

        // Fade the current item and fade in the new one
        $("#slider ul li:nth-child("+selectedItem+")").fadeTo(300,0.3);
        $("#slider ul li:nth-child("+next+")").fadeTo(300,1);

        // Animate the scroller with the offset value from the
        // panel_locations array
        scrollContent.animate({
          marginLeft: "-"+panel_locations[next-1]+"px"
        },1000,'backinout');

        // Update the selected panel with the new one
        selectedItem = next;

        // Deactivate the scroller if we are at the end
        // or the beginning of the panels.
        if(selectedItem >= count || selectedItem <=1) {
          $(this).addClass("deactivated");
        }
      }
      return false;
    });
  }
});

