/* 

========== jQuery script for Alois Nebel movie website (www.aloisnebel.cz) ========== 

Author:        Martin Michalek, Studio Shortcat, michalek@shortcat.cz

*/


// === Options ===

var debug = false;




// === Helpers ===

// Get URL Parameters Using http://www.netlobo.com/url_query_string_javascript.html
function get_url_parameter( name ) {
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

// Kdyz je pusteny javascript, prida k <body> tridu .with-javascript
function add_javascript_class() {
  jQuery('body').addClass('with-javascript');
}



// === Formatters ===

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

// Formatuje stranku Autori
function format_authors_page() {
  if (jQuery('#page-authors').length != 0) {
    jQuery('#content').attr('class','author-jaromir-99');  
    jQuery('#content h2#author-jaromir-99-link, #content p.author-jaromir-99').addClass('active');
    if (debug) { console.log('format_authors_page'); }       
  }   
}

// Formatuje stranku Postavy
function format_characters_page() {
  if (jQuery('#page-characters').length != 0) {
    jQuery('#content').attr('class','character-nebel');  
    jQuery('#content h2#character-nebel-link, #content p.character-nebel').addClass('active');   
    if (debug) { console.log('format_characters_page'); }  
  }   
}



// === Handlers ===

// Handler stranky Autori a Postavy
function handle_authors_and_characters_page() {
  if (jQuery('#page-characters, #page-authors').length != 0) {
    jQuery('#content h2').click(function() {
      jQuery('#content h2, #content p').removeClass('active');
      jQuery('.'+(jQuery(this).attr('class'))).addClass('active');         // pridame tridu ke vsem prvkum se stejnou tridou
      jQuery('#content').attr('class', jQuery(this).attr('class'));
    });
  }
}




// === Spousti vsechny handlery a formatovace ===

function run_handlers_and_formatters() {
   
   format_authors_page();  
   
   format_characters_page();
   
   format_external_links();    
   
   handle_authors_and_characters_page();
   
   if (debug) { console.log('run_handlers_and_formatters'); }
} 



// Ajax page loading
function ajax_page_load_handler() {
  
  $('#navigation a, #logo a').click(function () {

    // Do promenne ulozime jazykovou verzi ziskanou z url
    var language_version = get_url_parameter('lang');
    
    if (debug) { console.log('language_version: ',language_version); }
    
    // Do promenne ulozime element, kam uzivatel klikl
    var clicked_element = this;
    
    if (debug) { console.log('clicked_element: ',clicked_element); }         
    
    // Zjistime URL a pridame tridu odkud se bude nacitat obsah    
    url = $(clicked_element).attr('href'); 
    url_with_id = url + ' #content .text';

    // Nacteme obsah z cizi stranky
    $('#content').load(url_with_id);
    
    // Pokud se do pulvteriny nenacte obsah, objevi se loading indikator
    $("#content").ajaxStart(function(){
      setTimeout("$(this).addClass('loading');", 500);
    });      
    

    // Po dokonceni AJAXu
    $("#content").ajaxStop(function(request, settings) {

      $(this).removeClass('loading');
      
      // Spustime znovu vsechny handlery a formatovace
      run_handlers_and_formatters();
      
      if ((url == './?lang=cz') || (url == './?lang=en')) {
        body_id = 'page-home';
      }
      else {
        // Ze "./jmeno_souboru.php?lang=cz" udelame "jmeno_souboru", coz odpovida id stranky..
        var page_name = url.replace(/.php\?lang=cz/,'').replace(/.php\?lang=en/,'').replace(/.\//,'');
        var body_id = 'page-' + page_name;
      }
      
      if (debug) { console.log('(nove) url:', url); }

      // ..a zmenime id stranky..
      $("body").attr('id', body_id);
      
      // ..a adresu cizojazycne verze podle toho na jake jazykove verzi jsme
      if (language_version == 'cz') {
        url_for_language_switch = url.replace(/\?lang=cz/,'?lang=en');
      }  
      else if (language_version == 'en') {
        url_for_language_switch = url.replace(/\?lang=en/,'?lang=cz');
      }    
      
      $("#language a").attr('href', url_for_language_switch);
      
      if (debug) { console.log('url_for_language_switch:', url_for_language_switch); }
      
      if (debug) { console.log('body_id:', body_id); }
      
      // Oznacime patricnou zalozku
      $('#navigation').find('a.active').removeClass('active');
      if (body_id == 'page-home') {
        $('#navigation a:first').addClass('active');
      } else {
        $(clicked_element).addClass('active');
      }        
           
    });
    
    return false;   
       
});
}





// Pred nactenim dokumentu
function before_document_loads() {

  add_javascript_class();

}


// Po nacteni dokumentu

$(document).ready(function() {

    run_handlers_and_formatters();
    
/* Zlobi, odstraneno    
   ajax_page_load_handler(); 
*/          

});
