var calendarVisible = false;
if (typeof console == "undefined") {
    this.console = {log: function() {}};
}

var allLoaded = false;

function PreloadImage(Element, callback){
  var objImagePreloader = new Image(),
      imgSrc = Element.attr('presrc');
    
  objImagePreloader.src = imgSrc;
  if (objImagePreloader.complete) {
    objImagePreloader.onload=function(){};
    callback();    
  } else {
    objImagePreloader.onload = function() {
      callback();
      // clear onLoad, IE behaves irratically with animated gifs otherwise
      objImagePreloader.onload=function(){};
    }
  }    
}

function PreloadImages(preloadQueue, callback) {
  function nextImage() {
    if (preloadQueue.length > 0) {
      var Element = $(preloadQueue.splice(0,1));
      
      var Slide = Element.parents('.slide');
      
      PreloadImage(Element, function(err){
        if (!err) {
          Element.attr('src', Element.attr('presrc'));
          Element.removeClass('preload');
          if (Element.siblings('preload').length < 1)
            Slide.addClass('ready');
          nextImage();
        }
      });      
    } else {
      callback();
    }
  }  
  nextImage();
}

$().ready(function(){
  $('#inputDateSelect').DatePicker({
    date: $('#inputDate').val(),
    current: $('#inputDate').val(),
    starts: 1,
    mode: 'range',
    calendars: 2,
    onBeforeShow: function(){
      $('#inputDate').DatePickerSetDate([$('#inputDate').val(), $('#inputNights').val()], true);
    },
    onChange: function(formated, dates){
      $('#inputDate').val(formated[0]);
      $('#inputNights').val(Math.ceil((dates[1] - dates[0]) / 86400000));
    }
  });
  $('#inputDate').click(function(){
    $('#inputDateSelect').DatePickerShow();
    return false;
  });
});

$(window).load(function(){
  var initialized = false;
  $('.appear').fadeIn(500, function(){
    if (!initialized) {
      initialized = true;
      $('#slideshow').cycle({
        pager: '#slideshow-nav',
        pagerAnchorBuilder: function(idx, slide) {
            var slideElement =  $(slide), divClass = slideElement.attr('class'), imgA = slideElement.attr('thumba'), imgB = slideElement.attr('thumbb');

            if (imgA && !imgB) {
              return '<div class="' + divClass + '-thumb"><img src="' + imgA + '" alt=""></div>';
            } else if (imgA) {
              return '<div><div class="' + divClass + '-thumb"><img src="' + imgA + '" alt=""></div><div class="' + divClass + '-thumb"><img src="' + imgB + '" alt=""></div></div>';
            } else {
              return '';
            }         
        },
        before: function(currSlideElement, nextSlideElement, options, forwardFlag) {
          if (!options.addSlide)
            return;

          $('#unloaded-slides .ready').each(function(index, Element){
            $(Element).removeClass('ready');
            options.addSlide(Element);
          });
          
          if (allLoaded) {
            $(currSlideElement).parent().removeClass('loading');
            $('body').addClass('loaded');
            options.addSlide = null;
          }          
        }
      });      
    }
  }); 
  PreloadImages($('img.preload'), function(){
    console.log('Finished loading images');
    allLoaded = true;
  });  
});
