
/*
 * ScrollToElement 1.0
 * Copyright (c) 2009 Lauri Huovila, Neovica Oy
 *  lauri.huovila@neovica.fi
 *  http://www.neovica.fi
 *  
 * Dual licensed under the MIT and GPL licenses.
 */

(function($) {
    $.scrollToElement = function( $element, speed ) {

        speed = speed || 750;

        $("html, body").animate({
            scrollTop: $element.offset().top,
            scrollLeft: $element.offset().left
        }, speed);
        return $element;
    };

    $.fn.scrollTo = function( speed ) {
        speed = speed || "normal";
        return $.scrollToElement( this, speed );
    };
})(jQuery);

var loader = '<img src="' + themeUrl + '/img/ajax-loader_gallery.gif" style="height:15px;width:128px;border:0px solid #000;" />';
var first_gallery_loaded = false;
var first_galleryselection_loaded = false;
var imageConvUrl_thumb = themeUrl + '/imageconv.php?mode=crop&w=200&h=200&pic=';
var imageConvUrl_thumbheader = themeUrl + '/imageconv.php?mode=crop&w=80&h=80&pic=';
var imageConvUrl_full = themeUrl + '/imageconv.php?mode=size_w&w=950&format=png&pic=';
var jsonUrl = themeUrl + '/gallery_json.php';
String.prototype.startsWith = function(str){
    return (this.indexOf(str) === 0);
}

function initGalleries() {
	$('#gallery').append('<h1 class="demoHeaders">Bildergalerie</h1><div id="year_selection"></div>');
	$.getJSON(jsonUrl + '?mode=years', function(data) {
	   initYearSelection(data.years);
	});



	// Accordion
	/*$("#year_selection_old").accordion({ header: "h2", autoHeight: false, collapsible: true });
	$("#2010_gallery_selection").accordion({ header: "h3", autoHeight: false, collapsible: true });
	$("#2009_gallery_selection").accordion({ header: "h3", autoHeight: false, collapsible: true });
	$("#2008_gallery_selection").accordion({ header: "h3", autoHeight: false, collapsible: true });
	initYearSelection();*/

	// open 2010
	loadGallerySelection("2010");
}

function initYearSelection(years) {
	
	years.sort();
	years.reverse();

	var currDiv = $("#year_selection");
	// add years as list
	for (var i=0;i<years.length;i++) {
		currDiv.append('<h2><a href="#">' + years[i] + '</a></h2><div id="accordion_' + years[i] + '"><div class="year_' + years[i] + ' gallery_selection">' + loader + '</div></div>');
	}
	
	// Accordion
	currDiv.accordion({ header: "h2", autoHeight: false, collapsible: true/*, active:false*/ });


	// galleries of year
	/*for (var j=0;j<years.length;j++) {
		var url = 'http://www.armaberokay.de/blog/wp-content/themes/2010_01/gallery_json.php?mode=year&year=' + years[j];
		$.getJSON(url, function(data) {
		    initGallerySelection(data);
		});
	}*/


	// load pictures of gallery on open gallery event
	currDiv.bind('accordionchange', function(event, ui) {
	  if ($(ui.newHeader).parent().attr('id')=='year_selection') { 
	      try {
		$(ui.oldContent).html(loader);
	      } catch (ex) { }
	      try {
		var year = '';
		var classesArr = $(ui.newContent).attr("class").split(" ");
		for(var j = 0;j<classesArr.length;j++) {
		  if (classesArr[j].startsWith('year')) {
		    year = classesArr[j].replace('year_', '');
		  }
		}
		loadGallerySelection(year);
	      } catch (ex) { } 
	      try {
		  //ui.newHeader.scrollTo(); // jQuery object, activated header
	      } catch (ex) {}
	  }
	});
	
	// load firstgalleryselection
	/*if (!first_galleryselection_loaded) {
	  first_galleryselection_loaded = true;
	  loadGallerySelection(years[0]);
	}*/
}

function loadGallerySelection(year) {
	var url = jsonUrl + '?mode=year&year=' + year;
	$.getJSON(url, function(data) {
	    initGallerySelection(data);
	});
}

function initGallerySelection(data) {

	data.galleries.sort();
	data.galleries.reverse();

	var currDiv = $("#accordion_" + data.year + ' .gallery_selection');
	
	currDiv.accordion( 'destroy' );
	currDiv.html('');

	    // add galleries as list
	    for (var i=0;i<data.galleries.length;i++) {
		    currDiv.append('<h2><a href="#" id="galleryheader_' + data.year + '_' + data.galleries[i] + '"></a></h2><div id="gallery_' + data.year + '_' + data.galleries[i] + '"><div class="thumbs' + ' year_' + data.year + ' gallery_' + data.galleries[i] + '">' + loader + '</div></div>');
		    loadGalleryHeader(data.year, data.galleries[i]);
	    }
	    
	    // Accordion
	    currDiv.accordion({ header: "h2", autoHeight: false, collapsible: true, active:false });

	    // load pictures of gallery on open gallery event
	    currDiv.bind('accordionchange', function(event, ui) { 
	      try {
		$(ui.oldContent).html(loader);
	      } catch (ex) { }
	      try {
		var year = data.year;
		var gallery = data.galleries[0];
		var classesArr = $(ui.newContent).attr("class").split(" ");
		for(var j = 0;j<classesArr.length;j++) {
		  if (classesArr[j].startsWith('year')) {
		    year = classesArr[j].replace('year_', '');
		  } else if (classesArr[j].startsWith('gallery')) {
		    gallery = classesArr[j].replace('gallery_', '');
		  }
		}
		loadGallery(year, gallery);
	      } catch (ex) { }
	      try {
		  ui.newHeader.scrollTo(); // jQuery object, activated header
	      } catch (ex) {}
	    });
	    
	    // load first gallery
	    /*if (!first_gallery_loaded) {
	      first_gallery_loaded = true;
	      loadGallery(data.year, data.galleries[0]);
	    }*/
}

function loadGallery(year, gallery) {
	var url = jsonUrl + '?mode=gallery&year=' + year + '&gallery=' + gallery;
	$.getJSON(url, function(data) {
	    initGallery(data);
	});
}

function initGallery(data) {	
	var currDiv = $('#gallery_' + data.year + '_' + data.gallery + ' .thumbs');
	currDiv.html('');
	// add images as list
	for (var i=0;i<data.images.length;i++) {
		try {
		    var imgurl='http://www.armaberokay.de/galleries/' + data.year + '/' + data.gallery + '/' + data.images[i];
		    currDiv.append('<a href="' + imageConvUrl_full + imgurl + '" class="lightbox" rel="' + data.year + '_' + data.gallery + '"><img alt="' + (i+1) + ' / ' + data.images.length + '" class="lightbox" src="' + imageConvUrl_thumb + imgurl + '" /></a>');
		} catch (ex) {}
	}

	//$('a.lightbox').lightBox(); // Select all links with lightbox class
	$('a.lightbox').fancybox({
		'imageScale'		: true,
		'enableEscapeButton' 	: true,
		'showCloseButton'	: true,
		'hideOnOverlayClick'	: true,
		'zoomSpeedIn'		: 300, 
		'zoomSpeedOut'		: 300, 
		'zoomSpeedChange'	: 100,
		//'easingIn'		: 'swing',
		//'easingOut'		: 'swing',
		'easingChange'		: 'linear',
		'overlayOpacity'	: 0,
		'overlayShow'		: true
	});

	//hover images
	$('.thumbs img').hover(
		function() { $(this).addClass('preview'); }, 
		function() { $(this).removeClass('preview'); }
	);
}


function loadGalleryHeader(year, gallery) {
	var url = jsonUrl + '?mode=galleryheader&year=' + year + '&gallery=' + gallery + '&nimgs=3';
	$.getJSON(url, function(data) {
	    initGalleryHeader(data);
	});
}

function initGalleryHeader(data) {	
	var currEl = $('#galleryheader_' + data.year + '_' + data.gallery);
	if (data.title) {
	    var dateTime = data.gallery.substring(8,10) + '.' + data.gallery.substring(5,7) + '.' + ' ';
	    if (dateTime=='00.00. ') dateTime='';
	    currEl.append('<div class="caption">' + dateTime + data.title + '</div><div class="thumbs"></div><div class="description">' + data.description + '</div><div class="clear"></div>');
	}
	currEl = $('#galleryheader_' + data.year + '_' + data.gallery + ' .thumbs');
	// add images as list
	for (var i=0;i<data.images.length;i++) {
		try {
		    var imgurl='http://www.armaberokay.de/galleries/' + data.year + '/' + data.gallery + '/' + data.images[i];
		    currEl.append('<div class="thumb"><img alt="loading..." class="lightbox" src="' + imageConvUrl_thumbheader + imgurl + '" /></div>');
		} catch (ex) {}
	}

	//hover images
	$('.ui-accordion-header img').hover(
		function() { $(this).addClass('preview'); }, 
		function() { $(this).removeClass('preview'); }
	);
}

