$(document).ready(function(){
  $('#frontpage-carousel').jcarousel({
    auto: 3, // ovdje promijeni svakih koliko sekundi bi se trebale izmjenjivati slike na naslovnici. kad je 0 nejde automatski
    wrap: 'both',
    scroll: 1,
    buttonNextHTML: null,
    buttonPrevHTML: null,
    initCallback: function(carousel, state){
      var length = $('#frontpage-carousel li').length;
      var c = carousel;
      $('#slide-description-and-buttons .buttons').html('<div class="button"></div>'.repeat(length));
      $('#slide-description-and-buttons .buttons .button').click(function(){
        var index = $('#slide-description-and-buttons .buttons .button').index($(this)) + 1;
        c.scroll(index);
        c.stopAuto();
      })
    },
    itemFirstInCallback: function(carousel, item, idx, state) {
      var index = idx;
      $('#slide-description-and-buttons .description').text($(item).find('img').attr('alt'));
      $('#slide-description-and-buttons .buttons .active-button').removeClass('active-button')
      var buttons = $('#slide-description-and-buttons .buttons .button');
      if(index > buttons.length) 
        index -= parseInt(index / buttons.length) * buttons.length;
      if(index == 0) index = buttons.length;
      $(buttons[index - 1]).addClass('active-button')
    }
  });
  $('#recommendations-carousel, #photo-gallery-carousel').jcarousel({
    auto: 0,
    wrap: 'both',
    scroll: 4,
    animation: 1000,
    initCallback: function(carousel, state){
      var list = $(carousel.list);
      var lis_length = list.find('li').length
      var length = Math.ceil(lis_length / 4);
      var full_pages = parseInt(lis_length / 4) * 4
      var activate_buttons = {};
      var button_actions   = {};
      var idx = 1;
      var i = 0;
      var carousel_button_holder = $(list).parents('.carousel').find('.buttons');
      if(length > 1){
        carousel_button_holder.html('<div class="button"></div>'.repeat(length));

        while(idx < full_pages){
          activate_buttons[idx] = i;
          button_actions[i] = idx;
          i += 1;
          idx += 4;
        }
        if(full_pages < lis_length){
          activate_buttons[idx + (lis_length - full_pages) - 4] = i; 
          button_actions[i] = idx + (lis_length - full_pages) - 4;
        }
        carousel.options['activate_buttons'] = activate_buttons;
        var c = carousel;
        var buttons = $(carousel_button_holder).find('.button');
        buttons.click(function(){
          var index = $(buttons).index($(this));
          c.scroll(button_actions[index]);
          c.stopAuto();
        });
      }
      
    }, 
    itemFirstInCallback: function(carousel, item, idx, state) {
      if(typeof(carousel.options.activate_buttons) != 'undefined'){
        var carousel_button_holder = $(carousel.list).parents('.carousel').find('.buttons');
        var index = carousel.options['activate_buttons'][idx];
        $(carousel_button_holder).find('.active-button').removeClass('active-button');
        $(carousel_button_holder).find('.button:eq(' + index + ')').addClass('active-button');
      }
      
    }
  });
  $('form.poll .submit').click(function(){
    $(this).parents('form').submit();
    return false;
  });
  $('form.contact-form').submit(function(){
    $(this).find('.error').removeClass('error');
    var can_submit = true;
    var fields = "name email phone message".split(' ');
    for(var i = 0; i < fields.length; i++){
      var f = $(this).find('#' + fields[i]);
      if(f.val().trim() == ''){
        can_submit = false;
        f.addClass('error');
      }
      if(f.attr('id') == 'email' && !validateEmail(f.val())){
        can_submit = false;
        f.addClass('error');
      }
    }
    return can_submit;
  });
  $('.text-carousel ul').jcarousel({
    auto: 0,
    scroll: 3,
    initCallback: function(carousel, state){
       var list = $(carousel.list);
       var lis_length = list.find('li').length
       var length = Math.ceil(lis_length / 3);
       var full_pages = parseInt(lis_length / 3) * 3
       var activate_buttons = {};
       var button_actions   = {};
       var idx = 1;
       var i = 0;
       var carousel_button_holder = $(list).parents('.text-carousel').find('.carousel-buttons');
       if(length > 1){
         carousel_button_holder.html('<div class="button"></div>'.repeat(length));

         while(idx < full_pages){
           activate_buttons[idx] = i;
           button_actions[i] = idx;
           i += 1;
           idx += 3;
         }
         if(full_pages < lis_length){
           activate_buttons[idx + (lis_length - full_pages) - 3] = i; 
           button_actions[i] = idx + (lis_length - full_pages) - 3;
         }
         carousel.options['activate_buttons'] = activate_buttons;
         var c = carousel;
         var buttons = $(carousel_button_holder).find('.button');
         buttons.click(function(){
           var index = $(buttons).index($(this));
           c.scroll(button_actions[index]);
           c.stopAuto();
         });
       }

     }, 
     itemFirstInCallback: function(carousel, item, idx, state) {
       if(typeof(carousel.options.activate_buttons) != 'undefined'){
         var carousel_button_holder = $(carousel.list).parents('.text-carousel').find('.carousel-buttons');
         var index = carousel.options['activate_buttons'][idx];
         $(carousel_button_holder).find('.active-button').removeClass('active-button');
         $(carousel_button_holder).find('.button:eq(' + index + ')').addClass('active-button');
       }

     }
  });
  $('#map').gMap({
    address: 'Bernardina Frankopana 2 47300 Ogulin Croatia',
    zoom: 13,
    markers: [{
      address: 'Bernardina Frankopana 2 47300 Ogulin Croatia'
    }]
  });
  var main_menu = $('ul#main-menu');
  var main_menu_width = main_menu.width();
  var current_li_position = 0; 
  main_menu.find('> li').each(function(){
    if(main_menu_width - current_li_position < 250){
      $(this).find('ul').css({left: 'auto', right: '0px'})
    }
    current_li_position += $(this).width() 
  });
  
  $('.text-carousel a, .gallery-images a').fancybox({
  		
  });
  
  
  
});

String.prototype.repeat = function(num) {
  return new Array(isNaN(num)? 1 : ++num).join(this);
}
String.prototype.trim = function () {
    return this.replace(/^\s*/, "").replace(/\s*$/, "");
}

function validateEmail(email) 
{ 
 var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ 
 return email.match(re) 
}

