/**
 *  ///// Antistatique.net
 *  Large Type Action
 *  
 * @author Marc Friederich mfh@antistatique.net
 * @copyright Antistatique.net Sàrl, 2009, All Right Reserved. 
 * @version 0.1 - $Id$
 * @required jQuery 1.2s
 * @required pngFix
 */
$(document).ready(function() {
  try{
     // Fix transparency PNG images in IE 5.5 / 6
     $(document).pngFix();
  } catch(e) {};
  
  $(".largeTypeAction").click(function(e) {
      // if(!WebKitDetect.isWebKit() && !WebKitDetect.isMobile()) {
       $("body").append(
       $('<div>').attr('id', 'largeTypeAction').html($('<span>').text($(this).text())).fadeIn("fast").one('click',
       function() {
         $(this).remove();
       }));
       return false;  
     // }
  });
  
  
  // Newsletter
  $("form.form_newsletter").submit(function()
  {
     var email = $("input#newsletter_input_email", this).val();
     var name  = $("input#newsletter_input_name", this).val();

     // Valid field
     if(!validEmail(email))
     {
        // Shake the form
        $("div.step2").shake(2, 10, 380);
        return false;
     }
     if($("form.form_newsletter .step3").is(':visible') && name == "Prénom et nom")
     {
        // erase default value
        $("input#newsletter_input_name", this).val('');
     }
     
     // Send form
     $.ajax({
        url: '/newsletter.php', type: 'POST',
        data: { email: email, name: name },
        success: function(data){
           if($("form.form_newsletter .step2").is(':visible'))
           {
               $("form.form_newsletter .step2").hide();
               $("form.form_newsletter .step3").show();
               $("form.form_newsletter input#newsletter_input_name").focus();
           }
           else
           {
              $("form.form_newsletter").hide().find("input").val('');
              $(".step4").show();
           }
        },
        error: function() { alert("Aie!"); }
     });
     
     return false;
  });
  
  $("#newsletter_subscription a.bt_newsletter").click(function()
  {
     $(this).hide();

     // Ask for email
     $("#newsletter_subscription").find("form.form_newsletter, form.form_newsletter .step2").show();
     $("form.form_newsletter input#newsletter_input_email").focus();
     
     // disable link
     return false
  });
  
  $("#newsletter_subscription .bt_right").click(function()
  {
     // Send data
     $("form.form_newsletter").submit();
     
     return false;
  });

  $("#newsletter_subscription .bt_newsletter_merci").click(function()
  {
     $(this).hide();
     
     // Reset
     $("bt_newsletter").show();
     
     // disable link
     return false
  });
  
  
  $("input#newsletter_input_email, input#newsletter_input_name").focus(function(){
     var val = $(this).val();
     if(val == this.defaultValue)
     {
        $(this).select();
     }
     $(this).css('color', '#000');
     
  }).blur(function(){
     var val = $(this).val();
     if(val == ""){
        $(this).val(this.defaultValue).css('color', '#666');
     }
  });
});

function validEmail(str)
{
   if(!str || str.length <= 0)
      return false;
      
   if(str.match(/^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/gi))
   {
      return true;
   } else {
      return false;
   }
}

// Shake effect
/**
 * 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);
         }
      }
   });
};

// Twitter callback
function asTwitterCallback(twitters) {
   if(twitters.length < 1){
     return false;
   }
   tweet = twitters[0];
   
   var username = tweet.user.screen_name;
   var status = tweet.text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url){
      return '<a class="tweet_url" href="'+url+'">'+url+'</a>';
   }).replace(/\B@([_a-z0-9]+)/ig, function(reply) {
      return  reply.charAt(0)+'<a class="tweet_reply" href="http://www.twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>';
   });
   
   var statusHTML = '<span>'+status+'</span> <a class="tweet_time" style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+tweet.id+'">'+relative_time_fr(tweet.created_at)+'</a>';
   var linkFollowUs = '<a id="twitter_followus" href="http://www.twitter.com/'+username+'">follow us on twitter</a>';
   
   // append to intro
   $("#intro").find("h2").remove().end()
      .append('<div id="twitter_div">' + statusHTML + linkFollowUs + '</div>')
}

function relative_time_fr(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'il y a moins d\'une minute';
  } else if(delta < 120) {
    return 'il y a environ une minute';
  } else if(delta < (60*60)) {
    return ('il y a ' + parseInt(delta / 60)).toString() + ' minutes';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'il y a environ ' + (parseInt(delta / 3600)).toString() + ' heures';
  } else if(delta < (48*60*60)) {
    return 'il y a un jour';
  } else {
    return ('il y a ' + parseInt(delta / 86400)).toString() + ' jours';
  }
}
