/*
  Centrani javascript pro DCK Rekrea Ostrava 
  a pridruzene weby
  ..................................................................................
  1) Udalosti
    a) Po nacteni dokumentu
    b) Po nacteni DOM i obrazku
    c) Po zmene velikosti okna
  2) Funkce
  ..................................................................................
  Autor: Martin Michalek, webmaster@eslovensko.cz
*/



/* ================================================================================
   1) Udalosti
*/


/* --------------------------------------------------------------------------------  
   a) Po nacteni dokumentu
*/
  
$(document).ready(function() {

  // Nastaveni globalnich promennych do objektu
  window.rekrea_config = {
    version : 'desktop',
    version_switch_window_width : 641
  }

  // Podle velikosti displeje nastavujeme verzi
  set_config_version();
  
	// Osetreni otevirani detailu fotek ve Fancyboxu
	$(".fancybox").fancybox({
    'overlayOpacity': .8,
    'overlayColor': '#000',
    'padding': '0'
	});
	
  // Fancygallery
  // Prohlizec fotek stahovanych primo z Flickru postaveny na Fancyboxu  
  if (!!$('.fancygallery').length)    
    handle_fancygallery()     	
	
  // Handler pro nove last minute  
  if (!!$('.lmItem').length)
    handleLastMinute ()
    
  // Univerzalni informativni hlaska
  if (!!$('.message').length)
    handle_message_fadeout()    

  // Osetrime zoomovani na orientacni mapce v atrakcich atd.
  if (!!$('.landmark_map .zoom_2').length)
    handle_landmark_map()

  // Hovery na stylovenem seznamu .list
  if (!!$('.list li').length)
    handle_list()
      
  // Hovery na stylovenem seznamu .images_list
  if (!!$('.images_list li').length)
    handle_images_list()
      
  // Placeholder do "patickoveho" formulare pro prihlaseni k newsletteru
  if (!!$('#footNewsletter').length)
    add_placeholder()
    
  // Osetrime akce v seznamu ubytovani
  if (!!$('.list_item').length)
    handle_list_item()    
        
  // Z <ul><li> navigace udelame mobilni navigaci <select><option>
  // TODO: lepsi by bylo mobilni generovat javascriptem az se zmeni rozliseni  
  nav_to_select();
  
  // Zobrazujeme mobilni nebo desktop navigaci
  if (rekrea_config.version == 'mobile') {
    $('#nav .item').hide();
    $('#nav_mobile').show();
  } else if (rekrea_config.version == 'desktop') {
    $('#nav .item').show();
    $('#nav_mobile').hide();
  }

  
});


/* --------------------------------------------------------------------------------  
   b) Po nacteni DOM i obrazku
*/
$(window).load(function() {
  
  // Centrujeme obrazky na vysku v atrakcich atd.
  if (!!$('.image_item').length)
    handle_images()    

});



/* --------------------------------------------------------------------------------  
   c) Po zmene velikosti okna
*/

$(window).resize(function() {

  // Podle velikosti displeje nastavujeme verzi
  set_config_version();
  
  // Zobrazujeme mobilni nebo desktop navigaci  
  if (rekrea_config.version == 'mobile') {
    $('#nav .item').hide();
    $('#nav_mobile').show();
  } else if (rekrea_config.version == 'desktop') {
    $('#nav .item').show();
    $('#nav_mobile').hide();
  }

});




/* ================================================================================
   2) Funkce
*/

// Handler pro nove last minute
function handleLastMinute () {

  $('.lmItem').click(function() {
    window.location = $(this).find('a:first').attr('href').toString();
    return false;
  }); 

  $('.lmItem .hotels a').click(function(event) {
    event.stopPropagation();
  });

}


// Fadeout univerzalni info hlasky
function handle_message_fadeout() {
  setTimeout(blind_up, 5000,'.message')
}

function blind_up(element) {
  $(element).animate({
    top: '-200px'
  }, 600 )
  $(element).remove()
}

/*
   Simulujeme HTML5 atribut placeholder u inputu ve vsech prohlizecich,
   protoze Chrome10 ma neprijemnou chybu s pozicovanim.
   Vyuzivame ve novem "patickovem" formulari pro prihlaseni k newsletteru.
   Az se Chrome vzpamatuje, budeme simulovat jen v prohlecich bez podpory placeholderu:
   if (!Modernizr.input.placeholder) { }
*/ 
function add_placeholder() {
  $('#footNewsletter').find("input[placeholder]").each(function(){
      var $this = $(this);
      var placeholder = $this.attr('placeholder');
      if ($this.val() == "" && placeholder != "") {
          $this.val(placeholder);
      }
      $this.focus(function(){
          if ($this.val() == placeholder) $this.val("");
      });
      $this.blur(function(){
          if ($this.val() == "") $this.val(placeholder);
      });
  });           
}


/*
   Detekujeme mobil/desktop verzi podle sirky obrazovky 
*/
function set_config_version() {
  if ($(window).width() < rekrea_config.version_switch_window_width) {  
    rekrea_config.version = 'mobile';
  } else {
    rekrea_config.version = 'desktop';
  }  
}

/*
   Z odkazove (<ul><li><a>) navigace udelame na mobilech dropdown 
   navigaci (<select><option>)
*/
function nav_to_select() {
  
  var select_items = new Array();
  
  // Hlavni navigaci vlozime do <option> pole
  $('#nav .item').each(function(index) {
    var nav_item_href = $(this).attr('href');
    var nav_item_selected = '';
    // Zjistujeme, zda je polozka aktivni (nema odkaz v rodicich ma <strong>)
    // navigace nema odkaz a je vybrana
    if ((nav_item_href == undefined) || ($(this).parents('strong').length)) {
      nav_item_href = window.location.pathname;
      nav_item_selected = ' selected';
    }  
    select_items.push('<option value="'+nav_item_href+'"'+nav_item_selected+'>'+$(this).text()+'</option>')
  });    
  
  // Vlozime select navigaci do DOMu za hlavni
  $('#nav').append('<select id="nav_mobile">'+select_items+'</select>');
  
  // Schovame mobilni navigaci
  $('#nav_mobile').hide();
  
  // Po kliku do dropdown navigaci prechazime na jine url
  $('select#nav_mobile').change(function() {
    window.location = $(this).val();
  });
  
}


/*
  Osetrime zoomovani na orientacni mapce v atrakcich atd.   
*/
function handle_landmark_map() {
  var $landmark_maps = $('.landmark_map .maps');
  $landmark_maps.hover(function() {
     $landmark_maps.find('.zoom_1').fadeOut('slow', function() {
       setTimeout("$('.landmark_map .maps').find('.zoom_2').fadeOut('slow')", 1000);
     });
  }, function() {
    $landmark_maps.find('.zoom_2, .zoom_1').fadeIn();
  });
}

/*
  Hovery na stylovenem seznamu .list
*/
function handle_list() {
  $('.list li a').click(function() {
    window.location = $(this).attr('href');
    return false;
  });
}

/*
  Hovery na stylovenem seznamu .images_list
*/
function handle_images_list() {
  $('.images_list li').click(function() {
    window.location = $(this).find('a:first').attr('href');
    return false;
  });
}

/*
  Fancygallery
  Prohlizec fotek stahovanych primo z Flickru postaveny na Fancyboxu
  Nacteni dat automaticky z Flickr setu se zmenami URL.
*/
function handle_fancygallery() {
  
  // Nacitame data do FG z Flickr setu na vyzadani pres hash v URL po kliknuti na odkaz
  $(".fancygallery").click(function() {
    $.fancybox.showActivity();
    window.fancygallery_flickr_auto_data = [];  
    get_flickr_data_from_set( get_flickr_set_id($(this).attr('href')) , fancygallery_flickr_api_key );
    // Pridame has do URL
    window.location.hash = '#!/gallery-'+get_flickr_set_id($(this).attr('href'));
    return false;
  });

  // Nacitame data do FG z Flickr setu na vyzadani pres hash v URL
  // Zjistime, jestli takovy set tady je a pokud ano, spustime nacitani dat
  if (!!!window.location.hash.indexOf('#!/gallery-')) {
    var 
      id_from_url = window.location.hash.replace('#!/gallery-',''),
      id_exists_on_page = false;
    $(".fancygallery").each(function() {
      if (get_flickr_set_id($(this).attr('href')) == id_from_url)
        id_exists_on_page = true;
    });
    if (id_exists_on_page) {
      $.fancybox.showActivity();
      window.fancygallery_flickr_auto_data = [];  
      get_flickr_data_from_set( id_from_url, fancygallery_flickr_api_key );
    }
  }

  // Cekame na skonceni AJAXU, kterym se nacita JSON z Flickru nekterou z vyseuvedenych cest
  $(window).ajaxComplete(function(){
    if (!!$('html.fancygallery-complete').length) {
      $.fancybox( 
      // Data
      fancygallery_flickr_auto_data,
      // Nastaveni Fancyboxu
      {
        'onComplete': fancygallery_start,     
        'onClosed': function() { 
          $("body").removeClass('fancybox-active'); 
          $("html").removeClass('fancygallery-complete'); 
          $('#fancybox-thumbnails').remove(); 
          // Vycistime hash
          window.location.hash = ''
         },
        'overlayOpacity': .8,
        'overlayColor': '#000',
        'padding': '0'
      }
      );
    }
  });
  
}

/*
  Centrujeme obrazky na vysku v atrakcich atd.
  To az po nacteni obrazku.
*/
function handle_images() {
  $('.image_item .photo').each(function(index) {
    var item_height = $(this).height();
    if (item_height > 175) {
      $(this).css('margin-top', (item_height-171)/2*-1);
    }
  }); 
}

/*
  Osetrime akce v seznamu ubytovani
*/
function handle_list_item() {
  $('.list_item').click(function() {
    window.location = $(this).find('h2 a').attr('href').toString();
    return false;
  }); 
  // Kliknutim na obec nebo na ikonu LM/FM nechceme skocit na detail ubytovani
  $('.list_item .place a, .list_item .icon').click(function(event) {
    event.stopPropagation();
  });
}
