/* 
   Javascripty pro web kina Aero
   Projekt: www.kinoaero.cz 
   Autori: Martin Michalek, Studio Shortcat, michalek@shorcat.cz + Martin Svihla, martin_svihla@yahoo.com 
*/

(function() {

// debug: pokud je true, nedetekujeme sirku viewportu
var debug_on_small_screen = false;

// element manipulations and effects
var trailer_loaded = false;
var movieOriginalTop = 0;

var link_out_controled = false;


// --------------------------------------------------------------------------------
// Po nacteni DOM ...
$(document).ready(function() {
						   
  // Rizeni tabulky s programem v detailu filmu
  movieTableControl();  						
  
  // Zavreme vsechny loading prvky
	$("#loading").hide();				   

  // Oznacime externi odkazy
  linkOutControl(); 


  // Nacteni dat automaticky z Flickr setu ve fotogaleri
  if ($('#photogallery').length)
    handle_photogallery();

// ==== Stranka Udalosti
  $("select#event-year-list").change(function () {
   var year = $("select option:selected").attr("value")
  location.href = year;
   //alert (year);
  });
	
// ==== Stranka Stahnete si
  $("select#download-sections").change(function () {
   var link = $("select option:selected").attr("value")
  location.href = link;
   //alert (year);
  });

// ==== Stranka Program

   // Kurzor pracka: na vsechny bunky krome prvni pro cyklus, protoze tam je odkazem jen ikona
   $("table.program-page td.time").addClass("pointer");  
   $("table.program-page td.movie").addClass("pointer");  
   $("table.program-page td.price").addClass("pointer"); 
   $("table.program-page td.reservation").addClass("pointer"); 
   $("table.program-page td.params").addClass("pointer");
   
   // Mouseover nad radkem programu
   $("table.program-page tr").not(".day, .show-in-another-cinema").hover(function() {
	 $(this).addClass("active");
   },function(){
	 $(this).removeClass("active");
   });  

   // Hover na bunku programu s rezervaci
   $("td.reservation").hover(function() {
	 $(this).find("td.reservation a").addClass("active");
   },function(){
	 $(this).find("td.reservation a").removeClass("active");
   });  	

   // Kliknuti na bunku programu s rezervaci
   $("td.reservation").click(function(event) {
	  //location.href=$(this).find("a").attr("href");	
      window.open($(this).find("a").attr("href"));
      event.preventDefault();					  
   }); 									  

   $("td.movie strong a").click(function(event) {
   	if (canLoadColumn(3)) {
   		event.preventDefault();
   	} else {
		return true;
	} 
   });

   // Kliknuti na ikonu cyklu
   $("td.cycle a").click(function(event) {
   	if (canLoadColumn(3)) {
   		event.preventDefault();
   	} else {
		return true;
	} 
   });
   
   
// Strankovani

  // Mouseover nad sipkou zpet
   $(".paging a.backward").hover(function() {
	   $(".paging span.help").addClass("backward");
   },function(){
	   $(".paging span.help").removeClass("backward");
   }); 
   
  // Mouseover nad sipkou vpred
   $(".paging a.forward").hover(function() {
	   $(".paging span.help").addClass("forward");
   },function(){
	   $(".paging span.help").removeClass("forward");
   });  
     
   
// ==== Stranka Detail festivalu

   // Kurzor pracka
   $("table.program-festival tr").not(".day, .show-in-another-cinema").addClass("pointer");  
   // Mouseover nad radkem programu
   $("table.program-festival tr").not(".day, .show-in-another-cinema").hover(function() {
	   $(this).addClass("active");
   },function(){
	   $(this).removeClass("active");
   });  
   // Kliknuti na program 
   $("table.program-festival tr").not(".day, .show-in-another-cinema").click(function(event) {
   
    $("body").find("table.program-festival tr").removeClass("selected");
	$(this).addClass("selected");
   	if (getColumnCnt()>=2) {
   		showMovie($(this).find("td.movie").attr("id"), this, isLastColumn(this));
   		event.preventDefault();
   	} else {
	 	location.href=$(this).find("td.movie a").attr("href");
	} 
   }); 
   $("td.movie a").not("a.another-cinema-link").click(function(event) {
   	if (getColumnCnt()>=2) {  		
   		event.preventDefault();
   	} else {
		return true;
	} 
   });
   
   
// ==== Detail filmu 

   // Mouseover nad radkem programu
   $("table.program-movie tr").not(".day, .show-in-another-cinema").hover(function() {
	 $(this).addClass("active");
   },function(){
	 $(this).removeClass("active");
   });     

   // Mouseover nad polozkou zbozi z Terryho
   $(".terryGood").hover(function() {
     $(this).addClass("hover");
   },function() {
     $(this).removeClass("hover");
   });  
   
   // Kliknuti na polozku zbozi z Terryho
   $(".terryGood").click(function(event) {
	   location.href=$(this).find("a").attr("href");	     					  
   }); 	
   
   
// ==== Stranka Tiraz 

    $('#imprint-text span, #imprint-photos span').hover(function() {
      $('.'+($(this).attr('class'))).addClass('hover');         // pridame .hover k odkazu ve vsech prvcich se stejnou tridou
    },function() {
      $('#imprint-text span, #imprint-photos span').removeClass('hover');
    }); 


// ==== Uvodni stranka

// Newsletter na uvodni strance  
   $("#newsletter-click").click(function() {
     // Zavreni na klik 										 
	 if ( $(this).hasClass("opened") ) {
	   $(this).removeClass("opened");
	   $("#newsletter-form").css("display", "none");
	   return false;
	 }
     // Otevreni na klik  
     else {
	   $(this).addClass("opened");
	   $("#newsletter-form").css("display", "block");
	   return false;		 
	 }
   }); 
   // Mouseover na formularovem submitu
   $("#newsletter-form input.submit").hover(function() {
	 $(this).addClass("active");
   },function(){
	 $(this).removeClass("active");
   });    
   $("#newsletter-form input.text").focus(function() {
	 this.value="";
   });    


// Uvodni stranka: mouseover na udalosti
   // Hover
   $(".hp-box.clickable").hover(function() {
	 $(this).addClass("active");
   },function(){
	 $(this).removeClass("active");
   });   
   // Kliknuti
   $(".hp-box.clickable").click(function(event) {
	 location.href=($(this).find("p.hp-image a").attr("href"));
   }); 
   
// Uvodni stranka: fadeout chybove hlasky
  if ($('p.message')) {
    setTimeout("$('p.message').fadeOut()", 3000);
  }

// Uvodni stranka: obrazek vystavy
	$("img#exhibitionPhoto").hover(function() {
		$("img#exhibitionPhoto").attr('src', exhibitionPhotoColor);
	}, function() {
		$("img#exhibitionPhoto").attr('src', exhibitionPhotoGray);
	});

// Uvodni stranka: obrazek udalosti
	$("img#eventPhoto").hover(function() {
		$("img#eventPhoto").attr('src', eventPhotoColor);
	}, function() {
		$("img#eventPhoto").attr('src', eventPhotoGray);
	});


// ==== Stranka Cykly a festivaly

   // Hover
   $(".cycle-box").hover(function() {
	   $(this).addClass("active");	 	 
   },function(){
	 $(this).removeClass("active");
   }); 
   // Kliknuti na cyklus
   $(".cycle-box-text").click(function(event) {
	  location.href=$(this).find("h2 a").attr("href");
   }); 


// ==== Stranka Aeroskola a obecny ul.simple-list

   // Hover
   $("ul.simple-list li").hover(function() {
	   $(this).addClass("active");
   },function(){
	   $(this).removeClass("active");
   });   
   // Kliknuti
   $("ul.simple-pages-list li").click(function(event) {										
     $("body").find("ul.simple-list li").removeClass("selected");
	   $(this).addClass("selected");
	   if (canLoadColumn(2)) {
		   subpage_url=$(this).find("strong a").attr("href")+" #subpage-text";
       showMovie(subpage_url, this, false);
   	 } else {
	 	   location.href=$(this).find("strong a").attr("href");
	   }
   });  
   $("ul.simple-pages-list li strong a").click(function(event) {
   	if (canLoadColumn(2)) {
   		event.preventDefault();
   	} else {
		return true;
	} 
  });   
   

// ==== Stranka Ke stazeni

   // Kliknuti
   $(".page-download ul.simple-list li").click(function(event) {
	 	   location.href=$(this).find("strong a").attr("href");
   });
   
   // Najeti mysi
   $(".page-download #files li").hover(function() {
	   $(this).addClass("hover");
   },function(){
	   $(this).removeClass("hover");
   });   


// ==== Stranka Fotogalerie

   // Najeti mysi
   $('#photogallery .set').hover(function() {
      $(this).addClass("hover");
   }, function() {
      $(this).removeClass("hover");
   });
   
   // Kliknuti
   $("#photogallery .set").click(function(event) {
         location.href=$(this).find("h2 a").attr("href");
         return false;
   });   

// ==== Stranka Databaze filmu

   // Hover
   $("ul.movies-list li").hover(function() {
	   $(this).addClass("active");
   },function(){
	   $(this).removeClass("active");
   });   
   // Kliknuti­
   $("ul.movies-list li").click(function(event) {										
     $("body").find("ul.movies-list li").removeClass("selected");
	 $(this).addClass("selected");
	 if (canLoadColumn(2)) {
		showMovie($(this).attr("id"), this, false);
   	} else {
	 	location.href=$(this).find("strong a").attr("href");
	}
   });  
   $("ul.movies-list li strong a").click(function(event) {
   	if (canLoadColumn(2)) {
   		event.preventDefault();
   	} else {
		return true;
	} 
   });
   
	forTrailer(); 
   

  // Spustime nahradu fontu Cufonem
  Cufon.replace
    ('.cufon-head')
    ('.cufon-head-second')
    ('.hp-box h2')
    ('.movie-box h2')
    ('table.program-page tr.day th')
    ('.program-box p.paging-box')
    ('.cycle-column .no-image-head h2')
    ('.no-image-head h1');

 }); // konec $(document).ready
 

// --------------------------------------------------------------------------------
// Nase funkce 
 
// ==== Otevirani detailu cyklu a filmu 
 
// Otevreni detailu filmu
   function handleMovieOpening(table_cell) {
    $("body").find("table.program-page tr").removeClass("selected");
    $("body").find("table.program-page tr").removeClass("cycle-selected");
    $("#loading.for-cycle").removeClass("for-cycle");
	  var parent_tr = $(table_cell).parent('tr');
	  parent_tr.addClass("selected");

   	if (canLoadColumn(3)) {
		  showMovie(parent_tr.find("td.movie").attr("id"), parent_tr, false);
   	} else {
	 	  location.href=parent_tr.find("td.movie strong a").attr("href");
	  } 
  }

// Otevreni detailu cyklu
   function handleBlockOpening(table_anchor, event) {
     $("body").find("table.program-page tr").removeClass("selected");
     $("body").find("table.program-page tr").removeClass("cycle-selected");
     $("#loading").addClass("for-cycle");
	   var parent_tr = $(table_anchor).parent('td').parent('tr');
	   parent_tr.addClass("cycle-selected");
   	 if (canLoadColumn(3)) {
		   showMovie(parent_tr.find("td.cycle").attr("id"), parent_tr, false);
		   
		   event.preventDefault();
   	 } else {
	 	 location.href=parent_tr.find("td.cycle a").attr("href");
	   }
	   
   

   }
 

// Zobrazeni AJAXoveho boxiku s filmem, cyklem nebo podstrankou
// TODO: prejmenovat promenne na univerzalnejsi a odstranit parametr left

  function showMovie(url, clickedElement, left) {
		
		// zjistime pozici a rozmery kliknuteho elementu
		var clickedTop = ($(clickedElement).position().top);
		var clickedLeft = ($(clickedElement).position().left);
		var clickedWidth = $(clickedElement).outerWidth();	

		// predame pozici boxiku ve vrstve 
    // odshora - podle kliknuteho elementu           
		var movieTop = clickedTop;

    // zleva - jinak podle kliknuteho elementu 
    var movieLeft = clickedLeft + clickedWidth;	  
   

		// nastavime pozici boxiku ve vrstve 	  
    $("#moviebox").css("top", movieTop+'px');
		$("#moviebox").css("left", movieLeft+'px');			

    // nastavime a zobrazime pruh s informaci o nacitani
		$("#moviebox").ajaxSend(function(request, settings) {
		  $("#loading span").hide();	
		  $("#loading").css("width", "10px");
		  $("#loading").show();
		  $("#loading").animate({ width: "336px" }, 100 );
		  $("#loading span").show();		  
		  $(".movie-box").remove();
		});
   		
		// nacteni obsahu do oramujiciho boxiku
		$("#movie").load(url);
   		
   	// po nacteni boxiku s obsahem
		$("#moviebox").ajaxComplete(function(request, settings) {
   		
      $("#loading span").hide();	
			$(".movie-box").css("margin-top", "-29px");
			movieTableControl();
			forTrailer();
			linkOutControl();			
      
      // spustime Cufon nahradu nadpisu a traileru
			Cufon.refresh           
           ('.cufon-head')
           ('.cufon-head-second')
           ('.movie-box h2'); 
         
 
      // manualni zavreni boxiku
      $("p#close").click(function () {
        $(".movie-box").fadeOut("fast");
        $("#loading").fadeOut("fast"); 
        setTimeout("$('.selected').removeClass('selected')", 50);
        setTimeout("$('.cycle-selected').removeClass('cycle-selected')", 50);
        return false;             
      });
      
      // zobrazit cely program cyklu alebo festivalu
      $("#show-more-program").unbind("click").click(function(ev) {
   				ev.preventDefault();
   				$("#cycle-program-more").css("display", "block");
   				$("#cycle-program-button").css("display", "none");
   		   }); 

   	});						
} // /showMovie



// Trailer    
function forTrailer() {
	if ($('#trailer').length > 0 ) {
  		 $('#trailer').hide();	
  		 $("#trailer-click").unbind("click").click(function(event) {
			 $('#trailer').toggle(200);
			 event.preventDefault();
 		  });
   }  
}


// Rizeni tabulky s programem v detailu filmu - mouseovery a kliknuti
function movieTableControl() {

  // Kurzor pracka na cely radek jen v pripade festivalu           
  $("table.program-festival tr").not(".day, .show-in-another-cinema").addClass("pointer");  

  // Mouseover nad radkem programu
  $("table.movie tr").not(".day, .show-in-another-cinema").hover(function() {
    $(this).addClass("active");
  },function(){
    $(this).removeClass("active");
  });
	
   // Otevreni cyklu
   $("table.program-page tr td.cycle a.cycle-icon").unbind("click");
   $("table.program-page tr td.cycle a.cycle-icon").click(function(event) {
		handleBlockOpening(this, event);
   });
   
   // Otevreni filmu
   $("table.program-page tr td.time").unbind("click");
   $("table.program-page tr td.time").click(function(event) {
		handleMovieOpening(this);
   });
   
   $("table.program-page tr td.movie").unbind("click");
   $("table.program-page tr td.movie").click(function(event) {
		handleMovieOpening(this);
   });
   
   $("table.program-page tr td.price").unbind("click");
   $("table.program-page tr td.price").click(function(event) {
		handleMovieOpening(this);
   });
   
   $("table.program-page tr td.params").unbind("click");
   $("table.program-page tr td.params").click(function(event) {
		handleMovieOpening(this);
   });
       
}	//function movieTableControl()		 


// Oznacime externi odkazy
function linkOutControl() {
  $('a').not('.link-out').filter(function() {
    return this.hostname && this.hostname !== location.hostname;
  }).addClass("link-out").append("<span></span>");;
} // function linkOutControl()			 


 
// ==== Velikost okna
 
var windowWidth;
 
$(window).resize(function(){
	setWidths();
});
 
$(document).ready(function (){
	setWidths();
});


function setWidths() {
	var headWidth = parseInt($("#head").width());
	var winWidth = parseInt($(window).width());
	var colWidth = 336;
	
	var spanNum = Math.floor((winWidth-headWidth)/colWidth);
	if (spanNum<2)spanNum=2;
	if (spanNum>6)spanNum=6;
	
	windowWidth = winWidth;
	
	//alert("span-"+spanNum);
	$("#content-container").removeClass("span-2");
	$("#content-container").removeClass("span-6");
	$("#content-container").removeClass("span-3");
	$("#content-container").removeClass("span-4");
	$("#content-container").removeClass("span-5");
	
	$("#top-container").removeClass("span-2");
	$("#top-container").removeClass("span-6");
	$("#top-container").removeClass("span-3");
	$("#top-container").removeClass("span-4");
	$("#top-container").removeClass("span-5");
	
	$("#top-container").addClass("span-"+spanNum);
	$("#content-container").addClass("span-"+spanNum);
	//alert($("#content-container").attr("class"));
}

function canLoadColumn(columnNo) {
	var headWidth = parseInt($("#head").width());
	var winWidth = parseInt($(window).width());
	var colWidth = 336;
  if (debug_on_small_screen) {
    return true;
	} else { 
  	  var spanNum = Math.floor((winWidth-headWidth)/colWidth);
	  if (spanNum>=columnNo) return true;
	    else return false;
	} 	    
}

function getColumnCnt() {
	var headWidth = parseInt($("#head").width());
	var winWidth = parseInt($(window).width());
	var colWidth = 336;
	return Math.floor((winWidth-headWidth)/colWidth);
}



function isLastColumn(clickedElement) {
	//var headWidth = parseInt($("#head").width());
	var winWidth = parseInt($(window).width());
	var colWidth = 336;
	
	var clickedLeft = ($(clickedElement).position().left);
	if (clickedLeft > Math.floor((winWidth-(2*colWidth)))) return true;
	else return false;
}

// Nacteni dat automaticky z Flickr setu ve fotogaleri
function handle_photogallery() {

  // Nacitame data automaticky z Flickru
  // TODO: spustime loading indikator
  $(".set a").click(function() {
    // Vycistime tu globalni promennou
    $.fancybox.showActivity();
    window.fancygallery_flickr_auto_data = [];  
    get_flickr_data_from_set( get_flickr_set_id($(this).attr('href')) , fancygallery_flickr_api_key );
    return false;
  });

  // Cekame na skonceni AJAXU, kterym se nacita JSON z Flickru
  // TODO: 
  // * je potreba zobecnit: hlidat, jestli mame plne fancygallery_flickr_auto_data a ukoncit vsechny 
  //   loading indikatory 
  // * Seskupit nastaveni FB do nejakeho objektu dovnitr naseho pluginu
  $(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(); },
        'overlayOpacity': .8,
        'overlayColor': '#000',
        'padding': '0'
      }
      );
    }
  });
}

})();