var tooltip_hover_config;

/**
* Carousel (to hack in tck library)
*--------------------------------------------------------------------------*/

$.fn.infiniteCarousel = function () {

  function repeat(str, num) {
    return new Array( num + 1 ).join( str );
  }

  var $selector = this.selector,
  $roundtrip = "";

  return this.each(function () {
    var $wrapper = $('> div', this).css('overflow', 'hidden'),
    $slider = $wrapper.find('> ul'),
    $items = $slider.find('> li'),
    $single = $items.filter(':first'),

    singleWidth = $single.outerWidth(), 
    visible = Math.ceil($wrapper.innerWidth() / singleWidth), // note: doesn't include padding or border
    currentPage = 1,
    pages = Math.ceil($items.length / visible);            


    // 1. Pad so that 'visible' number will always be seen, otherwise create empty items
    if (($items.length % visible) != 0) {
      $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
      $items = $slider.find('> li');
    }

    // 2. Top and tail the list with 'visible' number of items, top has the last section, and tail has the first
    $items.filter(':first').before($items.slice(- visible).clone().addClass('cloned'));
    $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
    $items = $slider.find('> li'); // reselect

    // 3. Set the left position to the first 'real' item
    $wrapper.scrollLeft(singleWidth * visible);

    // 4. paging function
    function gotoPage(page) {

      var $paginator = $($selector + "-paginator a");
      if (page == 0) { page = $paginator.length};
      $paginator.removeClass("active");
      if($paginator.length <= (page-1)) {
        $($paginator[0]).addClass("active");
      } else {
        $($paginator[page-1]).addClass("active");
      };

      var dir = page < currentPage ? -1 : 1,
      n = Math.abs(currentPage - page),
      left = singleWidth * dir * visible * n;

      $wrapper.filter(':not(:animated)').animate({
        scrollLeft : '+=' + left
      }, 800, function () {
        if (page == 0) {
          $wrapper.scrollLeft(singleWidth * visible * pages);
          page = pages;
        } else if (page > pages) {
          $wrapper.scrollLeft(singleWidth * visible);
          // reset back to start position
          page = 1;
        } 

        currentPage = page;
      });                

      return false;
    }

    $wrapper.after('<a class="arrow back">&lt;</a><a class="arrow forward">&gt;</a>');

    // 5. Bind to the forward and back buttons
    $('a.back', this).click(function () {
      GoGoGo();
      return gotoPage(currentPage - 1);                
    });

    $('a.forward', this).click(function () {
      GoGoGo();
      return gotoPage(currentPage + 1);
    });

    // create a public interface to move to a specific page
    $(this).bind('goto', function (event, page) {
      gotoPage(page);
    });

    // has paginator?
    $($selector + "-paginator a").click(function(e){
      e.preventDefault();
      GoGoGo();
      gotoPage(parseInt($(this).html()));
    });
    $($selector + "-paginator a:first").addClass("active");


    function GoGoGo() {
      if($($selector).attr("rel")!="static"){
        clearInterval($roundtrip);
        $roundtrip = setInterval("$('a.forward').trigger('click')",8000);
      }
    };

    GoGoGo();
  });  
};

/**
* Acoridion (to hack in tck library)
*--------------------------------------------------------------------------*/

$.fn.simpleAcordion = function () {
  var $self = this;

  return this.each(function () {
    $(this).click(function(e){
      e.preventDefault();
      resetNodes();
      $(this).closest("div").addClass("active");
    });
    function resetNodes() {
      $self.closest("div").removeClass("active");
    };
  });
};



$(function(){

  /**
  * Mensajes de alerta
  *--------------------------------------------------------------------------*/
  $('.flashmsg').livequery(function(){ 
    $().message($(this).html());
  });

  /**
  * Suscripción de emails
  *--------------------------------------------------------------------------*/
  $("#email").livequery(function(){ 
    $(this).one("click", function(){
      $(this).val("");
      $(this).css("color", "#1C2763");
      $(this).css("font-weight", "normal");
    });
  });

  $("#emails_create").livequery(function(){ 
    $(this).validate({
      rules: {
        email: {
          required: true,
          email: true
        },
        conditions: {
          required: true
        }
      },
      messages: { 
        email: "",
        conditions: ""
      },
      invalidHandler: function(e, validator) {

        var check_your_mail = $(this).validate().element("#email");
        var check_your_check = $(this).validate().element("#conditions");
        var msg_error = ""
        if(check_your_mail == false || check_your_check == false) {
          msg_error = 'Comprueba que has rellenado todos los datos del formulario.'
        }

        $("#message").addClass("active");
        $("#message").html("<div class='flashmsg'>"+ msg_error +"</div>");	


      }
    });
  });

  $("#form_questions").livequery(function(){ 
    $(this).validate({
      rules: {
        email_thick: {
          required: true,
          email: true
        },
        body: {
          required: true
        },
        accept: {
          required: true
        }
      },
      messages: { 
        email_thick: "",
        body: "",
        accept: ""
      },
      invalidHandler: function(e, validator) {

        var check_your_name = $(this).validate().element("#email_thick");
        var check_your_mail = $(this).validate().element("#body");
        var check_his_mail = $(this).validate().element("#accept");
        var msg_error = ""
        if(check_your_name == false || check_your_mail == false || check_his_mail == false) {
          msg_error = 'Comprueba que has rellenado todos los datos del formulario.'
        }

        $("#message").addClass("active");
        $("#message").html("<div class='flashmsg'>"+ msg_error +"</div>");	


      }
    });
  });
  
  
  $("#form_guides_home").livequery(function(){ 
    $(this).validate({
      rules: {
        email_thick: {
          required: true,
          email: true
        },
        accept: {
          required: true
        }
      },
      messages: { 
        email_thick: "",
        accept: ""
      },
      invalidHandler: function(e, validator) {

        var check_your_name = $(this).validate().element("#email_thick");
        var check_his_mail = $(this).validate().element("#accept");
        var msg_error = ""
        if(check_your_name == false || check_his_mail == false) {
          msg_error = 'Comprueba que has rellenado todos los datos del formulario.'
        }

        $("#message").addClass("active");
        $("#message").html("<div class='flashmsg'>"+ msg_error +"</div>");	


      }
    });
  });




  /**
  * thickbox!
  *--------------------------------------------------------------------------*/	
  // hacking explorer and rounded corners
  $('a.thickbox, area.thickbox, input.thickbox').livequery(function(){ 
    $('a.thickbox, area.thickbox, input.thickbox').unbind("click");
    tb_init('a.thickbox, area.thickbox, input.thickbox');
  });



  /**
  * Faq lists
  *--------------------------------------------------------------------------*/	
  $(".social-faq-list h3 a").simpleAcordion();
  $(".social-faq-list h3 a").click(function(e){
    $("#sendpage").val($(this).attr("href"));
  });
  $("li.facebook a").share_on_facebook();

  /**
  * Print link
  *--------------------------------------------------------------------------*/	
  $(".print").click(function(e){
    e.preventDefault();
    window.print();
  });

  /**
  * Carousel
  *--------------------------------------------------------------------------*/
  $(".carousel").infiniteCarousel();
  $(".invoice_box").infiniteCarousel();

  /**
  * tooltips configuration
  *--------------------------------------------------------------------------*/

  if ($.fn.qtip !== undefined) {

    $.fn.qtip.styles.energia_proxima = { 
      background: '#FFE161',
      color: '#333333',
      textAlign: 'left'
    }


    tooltip_hover_config = {
      style: 'energia_proxima',
      position: { 
        corner: { target: 'leftTop', tooltip: 'rightBottom' },
        adjust: { y: -10, x:35 }
      }
    }
  };


});
