/**
 * Main javascript iPad campaign file
 * Antistatique.net 2010
 */

jQuery(function($){
   // on load select the email field
   $("input#email").select();
   
   // reset email field with default value if empty
   $("input#email").focus(function(){
      if($(this).val() == this.defaultValue)
         $(this).val("");
      $('div#error').fadeOut('fast')
      $(this).removeClass('error');
   }).blur(function(){
      if($(this).val() == '')
         $(this).val(this.defaultValue);
   });
   
   
   // submit form
   $("form#subscribe_form").submit(function(){
      
      // submit form by ajax
      $(this).ajaxSubmit({
         beforeSubmit: function(data, $form, options) {
            isValid = validate(data, $form, options);
            if(isValid) showLoading();
            
            return isValid;
         },
         success: function showResult(response, status, xhr, $form) {
            hideLoading();
            $("#share").html(response).fadeIn();
         }
      });
      
      return false;
   });
   
   // Showing loading message
   function showLoading() {
      $("#box_yellow div").fadeOut();
      $("#loading").fadeIn();
   }
   function hideLoading() {
      $("#loading").fadeOut();
   }
   
   /**
    * Validate form before submit
    */
   function validate(data, $form, options) {
      var hasError = true;
      
      $form.find("input").removeClass('error');
      
      for(var i=0; i < data.length; i++) {
         // validate email
         if('email' == data[i].name) {
            if(!isValidEmail(data[i].value)) {
               //$("div#box_yellow").shake(2, 10, 380);
               $("div#error").fadeIn('fast');
               $form.find("input[name='email']").addClass('error');
               hasError = false;
            }
         }
      }
      
      return hasError;
   }
   
   $("a#email").live('click', function(){
      
      $("#email_a_friend").load($(this).attr('href'), function(){
         $.scrollTo('#email_a_friend', 600, {
              onAfter: function(){ $("#email_a_friend input[type='text']:first").focus(); }
         });
         $("#share").fadeIn();
      }).show();
      
      return false;
   });
   
   $("#email_a_friend form").live('submit', function(){
      // submit form by ajax
      $(this).ajaxSubmit({
         beforeSubmit: function(){},
         target: '#email_a_friend'
      });
      
      return false;
   });
   
   // Track Ajax call
   $(document).ajaxSuccess(function(evt, xhr, options){
      if((typeof pageTracker != "undefined") && typeof(pageTracker._trackPageview == "function") && options && options.url)
      {
         pageTracker._trackPageview(options.url);
      }
   });
});

/**
 * Check Email synthax
 * 
 * @param string str -- Email to check
 * @return boolean
 */
function isValidEmail(str) {
   if(!str || typeof str != "string" || str.length <= 0)
      return false;
      
   if(str.match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/gi))
      return true;
   else
      return false;
}


/**
 * Shake an element
 *
 * @param int shakes -- Amount of shakes
 * @param int distance -- Shake distance
 * @param int duration -- Time duration
 * @param string direction -- (optional) horizontal or vertical
 */
jQuery.fn.shake = function(shakes, distance, duration, direction)
{
   if(typeof direction == "undefined") direction = 'horizontal';
   
   return this.each(function(){
      $(this).css({position: 'relative' });
      var t = (duration/shakes);
      
      for(var x=1; x<=shakes; x++){
         if(direction == 'horizontal')
         {
            $(this).animate({ left:distance*-1 }, t/4)
               .animate({ left:distance }, t/2)
               .animate({ left:0 }, t/4);
         }
         else
         {
            $(this).animate({ top:distance*-1 }, t/4)
               .animate({ top:distance }, t/2)
               .animate({ top:0 }, t/4);
         }
      }
   });
};
