/*
Fancygallery (prototyp)
Knihovna pro zobrazovani galerii obrazku.
Verze ze 20. 10. 2011
Vyuziva jQuery 1.4+, Fancybox 1.3+, Fancybox Shortcat Mod, jCarousel 0.2.4
Autor: Martin Michalek, michalek@shortcat.cz
*/


// ------------------------------------------------------------------------------------------------------------
// Nastaveni

// Debugovaci mod 
var fancygallery_debug = (window.console) && false;

// Flickr API
var fancygallery_flickr_api_key = 'e1487167a8099ab5c03c9f03d675a784';

// Nastavujeme jazyk
// Umi 'cz', 'en' nebo false, kdyz prebirame texty z Flickru tak jak jsou
var fancygallery_language = fancygallery_get_HTML_language();    

// Zde budeme ukladat data z Flickru,
// kdyz je budeme chtit nacitat automaticky z URL odkazu
var fancygallery_flickr_auto_data = [];

// Odkud bereme titulky a popisky k fotkam z Flickru
// 'from_set' - ze setu
// 'from_photo' - z jednotlivych fotek
// 'from_photo_and_set' - nejdrive popisek setu a pak jednotlive fotky
// 'from_photo_or_set' - pokud ma fotka titulek, pak z ni, jinak ze setu
// cokoliv jineho - z jednotlivych fotek 
// (TODO vzit v potaz taky jine zpusoby nez Flickr)
var fancygallery_titles = 'from_photo_or_set';

// Zahrnout do prohlizeni take primarni obrazek setu?
var fancygallery_show_primary = true;

// Pokud je nastaveno, nahradi se \n ve vsech retezcich za <br>
// aby formatovani z Flickru preslo take do titulku fotky ve Fancyboxu
var fancygallery_add_breaks = true;

// Oddelovac mezi nazvem fotky a setu
// (napriklad '►' nebo volny radek '<br><br>')
var fancygallery_photo_set_separator = '<br><br>';

// Oddelovac mezi titulkem a popiskem setu
// (napriklad '►' nebo volny radek '<br><br>')
var fancygallery_title_desc_separator = '<br>';

// Custom funkce pro zpracovani titulku v nadpisu fotky
// definovana v hlavnim js souboru - { return jmeno_funkce(title); }
var fancygallery_process_title_function = function(title) { return title; }

function fancygallery_start(selectedIndex,selectedOpts,selectedArray){if(fancygallery_debug)console.log('selectedOpts: ',selectedOpts);fancygallery_log_variables(selectedIndex,selectedOpts,selectedArray);if(!$('#fancybox-thumbnails').length){$("body").addClass('fancybox-active');var mode=get_mode(selectedIndex);show_thumbnails(selectedIndex,mode);init_carousel(selectedOpts);handle_carousel_click();$('#fancybox-img').attr('alt','')}else{handle_fancybox_change(selectedOpts);$('#fancybox-img').attr('alt','')}function get_mode(selectedIndex){if(selectedIndex[0].orig)return'manual';else return'auto'}function show_thumbnails(selectedIndex,mode){$('#fancybox-title').after('<div id="fancybox-thumbnails"><ul id="fancybox-carousel" class="jcarousel-skin-shortcat"></ul></div>');$.each(selectedIndex,function(i){create_carousel_item_HTML(selectedIndex,mode,i)})}function create_carousel_item_HTML(selectedIndex,mode,i){if(mode=='auto'){$('#fancybox-carousel').append('<li><a href="#"><img src="'+selectedIndex[i].firstChild.getAttribute("src")+'"></a><span class="hover-image"><img src="'+selectedIndex[i].firstChild.getAttribute("src")+'"></span></li>')}else if(mode=='manual'){$('#fancybox-carousel').append('<li><a href="#"><img src="'+selectedIndex[i].orig+'"></a><span class="hover-image"><img src="'+selectedIndex[i].orig+'"></span></li>')}}function init_carousel(selectedOpts){$('#fancybox-carousel').jcarousel({scroll:10,animation:'medium',itemLoadCallback:{onBeforeAnimation:carousel_before_scroll_callback,onAfterAnimation:carousel_after_scroll_callback}});handle_fancybox_change(selectedOpts)}function handle_carousel_click(){$('#fancybox-carousel li').click(function(){var position=parseInt($(this).attr('jcarouselindex')-1);$.fancybox.pos(position);$('#fancybox-carousel li').removeClass('active');$(this).addClass('active');return false})}function handle_fancybox_change(selectedOpts){$('#fancybox-carousel li').removeClass('active');$('#fancybox-carousel').find('li.jcarousel-item-'+parseInt(selectedOpts+1)).addClass('active')}function carousel_before_scroll_callback(){$('#fancybox-thumbnails').addClass('scrolling');$('#fancybox-thumbnails .jcarousel-list').css('marginLeft','0px')}function carousel_after_scroll_callback(){$('#fancybox-thumbnails').removeClass('scrolling');$('#fancybox-thumbnails .jcarousel-list').css('marginLeft',$('#fancybox-thumbnails .jcarousel-list').css('left'))}}function get_flickr_set_id(url){var path=url.split('/');var is_flickr_set=((path[2]=='www.flickr.com')&&(path[5]=='sets'));var set_id=path[6];if(is_flickr_set){return set_id}else{return false}}function get_flickr_data_from_set(set_id,api_key){var photos_rest_url='http://api.flickr.com/services/rest/?api_key='+api_key+'&method=flickr.photosets.getPhotos&photoset_id='+set_id+'&extras=url_sq,url_m,url_l,description&media=photos&format=json&jsoncallback=?',set_rest_url='http://api.flickr.com/services/rest/?api_key='+api_key+'&method=flickr.photosets.getInfo&photoset_id='+set_id+'&format=json&jsoncallback=?',return_data=[];$.getJSON(set_rest_url,function(data){var photoset_title=get_flickr_photo_title(data.photoset.title._content),photoset_description=get_flickr_photo_description(data.photoset.description._content);$.getJSON(photos_rest_url,function(data){if(!fancygallery_show_primary)fancygallery_remove_primary(data);$.each(data.photoset.photo,function(i,item){var item_data={'orig':item.url_sq,'href':get_flickr_large_photo(item.url_l,item.url_m),'title':create_photo_title_and_description(item)};return_data.push(item_data);if(fancygallery_debug)fancygallery_log_flickr_photos(i,item,item_title)});window.fancygallery_flickr_auto_data=return_data;$('html').addClass('fancygallery-complete');function create_photo_title_and_description(item){if(fancygallery_titles=='from_set'){item_title='<strong>'+fancygallery_process_title_function(photoset_title)+'</strong>'+fancygallery_separator_if(photoset_description,fancygallery_title_desc_separator)+photoset_description}else if(fancygallery_titles=='from_photo_and_set'){if(item.title.length>0){item_title=item.title+' <span class=set>'+fancygallery_photo_set_separator+' <strong>'+fancygallery_process_title_function(photoset_title)+'</strong>'+fancygallery_separator_if(photoset_description,fancygallery_title_desc_separator)+photoset_description+'</span>'}else{item_title=' <span class=set>'+' <strong>'+fancygallery_process_title_function(photoset_title)+'</strong>'+fancygallery_separator_if(photoset_description,fancygallery_title_desc_separator)+photoset_description+'</span>'}}else if(fancygallery_titles=='from_photo_or_set'){if(item.title.length>0){item_title='<strong>'+item.title+'</strong>'}else{item_title='<strong>'+fancygallery_process_title_function(photoset_title)+'</strong>'+fancygallery_separator_if(photoset_description,fancygallery_title_desc_separator)+photoset_description}}else{item_title=get_flickr_photo_title(item.title)+fancygallery_separator_if(get_flickr_photo_description(item.description._content),' — ')+get_flickr_photo_description(item.description._content)}return item_title}})})}function get_flickr_photo_description(photo_description){if((fancygallery_language=='cz')||(fancygallery_language=='en')){var splitted_description=photo_description.split(/(\s*CZ:\s*|\s*EN:\s*)/);var return_string='';if((splitted_description.length>1)&&(fancygallery_language)){if(fancygallery_language=='cz')return_string=splitted_description[2];if(fancygallery_language=='en')return_string=splitted_description[4]}else{return_string=splitted_description[0]}}else{return_string=photo_description}if(typeof(return_string)=='undefined')return'';else return fancybox_handle_breaks(return_string)}function get_flickr_photo_title(photo_title){if((fancygallery_language=='cz')||(fancygallery_language=='en')){var splitted_title=photo_title.split("/");var return_string='';if((splitted_title.length>1)&&(fancygallery_language)){if(fancygallery_language=='cz')return_string=splitted_title[0];if(fancygallery_language=='en')return_string=splitted_title[1]}else{return_string=splitted_title[0]}}else{return_string=photo_title}if(typeof(return_string)=='undefined')return'';else return fancygallery_remove_html(return_string)}function get_flickr_large_photo(large,medium){if(large)return large;else return medium}function fancygallery_remove_primary(data){var primary_photo_index=$.each(data.photoset.photo,function(i,item){if(item.isprimary=="1")return i});data.photoset.photo.splice(primary_photo_index,1)}function fancybox_handle_breaks(string){if(fancygallery_add_breaks){return string.replace(/(\r\n|\n|\r)/gm,"<br>")}else{return string}}function fancygallery_get_HTML_language(){var html_language=$('html').attr('lang').toLowerCase();if((html_language=='cs')||(html_language=='cz')){return'cz'}else{return'en'}}function fancygallery_separator_if(str,separator){if(str.length){return separator}else{return''}}function fancygallery_remove_html(strInputCode){return strInputCode.replace(/<\/?[^>]+(>|$)/g,"")}function fancygallery_log_variables(selectedIndex,selectedOpts,selectedArray){if(fancygallery_debug){console.log('selectedIndex: ',selectedIndex);console.log('selectedArray.index: ',selectedArray.index)}}function fancygallery_log_flickr_photos(i,item,title){console.log(i,': -----');console.log('Titulek: ',title);console.log('Thumbnail: ',item.url_sq);console.log('Velka: ',get_flickr_large_photo(item.url_l,item.url_m));console.log('Primarni: ',item.isprimary)}var cbSplit;if(!cbSplit){cbSplit=function(str,separator,limit){if(Object.prototype.toString.call(separator)!=="[object RegExp]"){return cbSplit._nativeSplit.call(str,separator,limit)}var output=[],lastLastIndex=0,flags=(separator.ignoreCase?"i":"")+(separator.multiline?"m":"")+(separator.sticky?"y":""),separator=RegExp(separator.source,flags+"g"),separator2,match,lastIndex,lastLength;str=str+"";if(!cbSplit._compliantExecNpcg){separator2=RegExp("^"+separator.source+"$(?!\\s)",flags)}if(limit===undefined||+limit<0){limit=Infinity}else{limit=Math.floor(+limit);if(!limit){return[]}}while(match=separator.exec(str)){lastIndex=match.index+match[0].length;if(lastIndex>lastLastIndex){output.push(str.slice(lastLastIndex,match.index));if(!cbSplit._compliantExecNpcg&&match.length>1){match[0].replace(separator2,function(){for(var i=1;i<arguments.length-2;i++){if(arguments[i]===undefined){match[i]=undefined}}})}if(match.length>1&&match.index<str.length){Array.prototype.push.apply(output,match.slice(1))}lastLength=match[0].length;lastLastIndex=lastIndex;if(output.length>=limit){break}}if(separator.lastIndex===match.index){separator.lastIndex++}}if(lastLastIndex===str.length){if(lastLength||!separator.test("")){output.push("")}}else{output.push(str.slice(lastLastIndex))}return output.length>limit?output.slice(0,limit):output};cbSplit._compliantExecNpcg=/()??/.exec("")[1]===undefined;cbSplit._nativeSplit=String.prototype.split}String.prototype.split=function(separator,limit){return cbSplit(this,separator,limit)};
