summaryrefslogtreecommitdiff
path: root/media/js/slideshow.js
diff options
context:
space:
mode:
Diffstat (limited to 'media/js/slideshow.js')
-rw-r--r--media/js/slideshow.js189
1 files changed, 189 insertions, 0 deletions
diff --git a/media/js/slideshow.js b/media/js/slideshow.js
new file mode 100644
index 0000000..7ada1c5
--- /dev/null
+++ b/media/js/slideshow.js
@@ -0,0 +1,189 @@
+//Utility functions for map info window
+function mapit(latlontitle) {
+ var map;
+ lat = parseFloat(latlontitle.split(',')[0]);
+ lon = parseFloat(latlontitle.split(',')[1]);
+ title= latlontitle.split(',')[2];
+ var mapitinit;
+ if (mapitinit == true) {
+ panto();
+ } else {
+ mapInit();
+ }
+
+ function mapInit() {
+ var centerCoord = new google.maps.LatLng(lat, lon);
+ var mapOptions = {
+ zoom: 6,
+ center: centerCoord,
+ mapTypeId: google.maps.MapTypeId.TERRAIN
+ };
+ map = new google.maps.Map(document.getElementById("map-wrapper"), mapOptions);
+ var marker = new google.maps.Marker({
+ position: centerCoord,
+ map: map,
+ title: title
+ });
+ mapitinit = true;
+ }
+ function panto(){
+ var marker = new google.maps.Marker({
+ position: centerCoord,
+ map: map,
+ title: title
+ });
+ map.panTo(centerCoord);
+ }
+}
+
+// utility functions to create/remove map container
+function create_map(obj) {
+ //create container divs
+ $(obj).parent().parent().parent().append('<div id="map-container">');
+ $('#map-container').append('<div id="map-wrapper">');
+ //deal with the variable height of div.legend
+ $('#map-container').css({
+ bottom: function(index, value) {
+ return parseFloat($(obj).parent().parent().css("height"))-2;
+ }
+ });
+
+ mapit(obj.title);
+}
+function remove_map() {
+ $('#map-container').remove();
+}
+// utility functions to create/remove camera info container
+function get_exif(obj,id) {
+ $(obj).parents().eq(2).append('<div id="exif-container">');
+ $(obj).parents().eq(2).children('.meta').clone().appendTo('#exif-container').css('display', 'block');
+ //deal with the variable height of div.legend
+ $('#exif-container').css({
+ bottom: function(index, value) {
+ return parseFloat($(obj).parent().parent().css("height"))-14;
+ }
+ });
+}
+function remove_exif() {
+ $("#exif-container").remove();
+}
+
+
+//
+$(document).ready(function(){
+ //set up click events for map button
+ $('.map-link').click( function() {
+ if ($("#exif-container").is(":visible")){
+ remove_exif();
+ }
+ if ($('#map-container').is(":visible")) {
+ remove_map();
+ } else {
+ create_map(this);
+ }
+ return false;
+
+ });
+
+ //set up click events camera info button
+ $('.exif-link').click( function() {
+ if ($('#map-container').is(":visible")){
+ remove_map();
+ }
+ if ($('#exif-container').is(":visible")) {
+ remove_exif();
+ } else {
+ get_exif(this);
+ }
+ return false;
+ });
+
+
+ // create and hide nav buttons (needed for keyboard shortcuts
+ $('#slides').append('<div class="slidenav"><a id="prev">< Prev&nbsp;</a><a id="next">&nbsp;Next ></a></div>');
+ $('.slidenav').css("display","none");
+
+
+ // initialize the cycle slideshow
+ $('#slides .bigimg').wrapAll('<div class="bigimgs">').parents('#slides').append('<ul class="menu" id="feature_gallery_pager">').cycle({
+ fx: 'fade',
+ pause: 1,
+ prev: '#prev',
+ next: '#next',
+ before: onBefore,
+ after: onAfter,
+ slideExpr: '.bigimg',
+ pager: '#feature_gallery_pager',
+ pagerAnchorBuilder: function(idx, slide) {
+ return '<li><a href="#"><img src="'+slide.id+'" class="thumb"><span></span></a></li>';
+ }
+
+ });
+
+ //callback to delete map and camera info windows if they exist
+ function onBefore() {
+ $('#map-container').remove();
+ $('#exif-container').remove();
+ }
+
+ //callback to change url for permalinks and scroll jcarousel
+ function onAfter(curr,next,opts) {
+ window.location.hash = 'image'+(opts.currSlide + 1);
+ if (opts.currSlide % 10 == 0) {
+ if (opts.currSlide != 0) {
+ $('#slides').trigger('image-loaded',[opts.currSlide+1]);
+ } else {
+ $('#slides').trigger('image-loaded',[1]);
+ }
+ }
+ }
+
+ //callback for jcarousel
+ function initCallbackFunction(carousel) {
+ // bind "image-loaded" event to the #slides container (trigger in onAfter function)
+ $('#slides').bind('image-loaded', function(event, num) {
+ // scroll carousel
+ carousel.scroll(num);
+ return false;
+ });
+ };
+
+ //initialize the jcarousel plugin
+ $(function() {
+ $('#feature_gallery_pager').jcarousel({
+ scroll:10,
+ initCallback: initCallbackFunction
+ });
+ });
+
+ /* hover buttons, currently not used
+ $("#slideshow").hover(function() {
+ $("ul#nav").fadeIn();
+ },
+ function() {
+ $("ul#nav").fadeOut();
+ });
+ */
+
+ //enable keyboard shortcuts:
+ $(document.documentElement).keyup(function(event) {
+ var direction = null;
+ if (event.keyCode == 37) {
+ direction = 'prev';
+ } else if (event.keyCode == 39) {
+ direction = 'next';
+ }
+ if (direction != null) {
+ $('#slides').each(function(index) {
+ $('#prev,#next', this)[direction]().click();
+ });
+ }
+ });
+
+ //enable slideshow instructions
+ $('#instructions').css("visibility","visible")
+
+
+
+});
+