// usage: log('inside coolFunc', this, arguments);
// paulirish.com/2009/log-a-lightweight-wrapper-for-consolelog/
window.log = function(){
  log.history = log.history || [];   // store logs to an array for reference
  log.history.push(arguments);
  if(this.console) console.log( Array.prototype.slice.call(arguments) );
};

var Registration = {};

(function() {
  var $ = jQuery;

  this.initialize = function() {
    var $container = $("#container");
    $container.slider();

    var step1Handler = function(responseText, statusText, xhr) {
      
      $("form").not(":first").attr("action", function(index, attr) {
        return attr.concat(responseText);
      });      
      
      return false;
    };

    var step1ErrorHandler = function(xhr, textStatus) {
      $("form#application").html(xhr.responseText).show();
      
      return false;
    };

    var step1Complete = function() {
      $container.slider('slide');
      $("#sponsors").show();  
    };

    var step2Handler = function(responseText) {
      var $error = $("#results.error");
      if ($error.length) {
        $error.show();
      }
      else {
        $container.slider('slide');
      }

      return false;
    };

    var invalidFormHandler = function(errorMap, errorList) {
      var errors = this.numberOfInvalids(),
          $errorDIV = $("div.error-message", $(this.currentForm));

      $(".required.error").removeClass("error");
      
      if (errors) {
        var fields = errors === 1 ? 'field' : 'fields',
            what = errors === 1 ? 'It has' : 'They have',
            message = "You missed " + errors + " " + fields + "! " + what + " been highlighted.";


        $errorDIV.find("span")
          .text(message)
          .end()
          .show();
          
      }
      else {
        $errorDIV.hide();
      }

      _.each(errorList, function(error) {
        $(error.element).addClass("error");
      });

      return false;
    };

    $.validator.messages.required = ""; // Get rid of validate's error messages

    var formOptions = {
      showErrors: invalidFormHandler,
      onkeyup: false,
      onfocusout: false
    };
    
    $("form#email").validate(_.extend(formOptions,{
      submitHandler: function(form) {
        $(form).ajaxSubmit({success: step1Handler,
                            error: step1ErrorHandler,
                            complete: step1Complete,
                            dataType: 'html'});
        

        return false;
      }
    }));

    $("form#application").validate(_.extend(formOptions,{
      submitHandler: function(form) {
        $(form).ajaxSubmit({
          success: step2Handler,
          target: "#results",
          replaceTarget: true
        });

        return false;
      }
    }));

    $("form.registration").validate(_.extend(formOptions,{
      submitHandler: function(form) {
        $(form).ajaxSubmit({
          success: step2Handler,
          target: "#results",
          replaceTarget: true
        });
        return false;
      }
    }));
    
    // Insert new code here
 
  $("a.htp").fancybox({
    'overlayShow'	: true,
    'overlayColor'		: '#000',			
    'overlayOpacity'	: 0.9,        
    'transitionIn'	: 'fade',
    'transitionOut'	: 'fade'
  });
  
	$("a.lv").fancybox({
    'overlayShow'	: true,
    'overlayColor'		: '#000',		
    'overlayOpacity'	: 0.7, 
    'autoScale'     	: false,
		'width'		    		: 620,
		'height'			    : 400,    
    'transitionIn'		: 'fade',
		'transitionOut'		: 'fade',
		'type'				: 'iframe'
	});  
  

    var $remaining = $("#remaining");

    var characterCount = function(event) {
      var $this = $(this);
      var currentLength = $this.val().length;
      var maxLength = $this.data("maxLength");
      var remainingCharacters = maxLength - currentLength;

      if (remainingCharacters <= 0) {
        $this.val($this.val().substr(0, maxLength));
        remainingCharacters = 0;
      };

      $remaining.text(remainingCharacters);

      return false;
    };

    var throttled = _.throttle(characterCount, 100);

    $("#team_story")
      .data("maxLength", $remaining.text())
      .keyup(throttled);


    $("#team_source").change(function(event) {
      var otherSelected = $(this).val() === "Other";

      $("#team_other_source")
        .toggle(otherSelected)
        .toggleClass("required", otherSelected);
    });
    
    // end new code

    return this;
  };
}).apply(Registration);

Registration.initialize();

