
// get yer flickr-id: http://idgettr.com/
$(document).ready(function(){
	$('#images').colorbox();
});

$(document).ready(init);

// globale info, im document-element abgelegt und initiale filterwerte
$(document).data('currentQuery',null);
$(document).data('currentYearFilter','2011');
$(document).data('currentDayFilter',null);
$(document).data('currentStageFilter',null);

function init(){
	//safeConsole();
	
	// year, day, stage, artist sind aus tags.js
	populateList(year,'year');
	populateList(day,'day');
	populateList(stage,'stage');
	populateList(artist,'artist');
	$('#artistEntries li').tsort();
	
	// initialer aufruf des filters
	filter(0);
	// markieren des jahres 2008
	setActive($('#yearEntries li').eq(0),0);
	//loadImgs('',1,'AND');
	
	makeScrollable();
	assignEvents();
	
}

function makeScrollable(){
		// init. scrollable fuer jahr auswahl
	$('.scrollableJahr').scrollable({
			api: true,
			size: 5,
			vertical: true,
			loop: false,
			keyboard: false,
			clickable: false,
			activeClass: "selected",
			items: ".items",
			prevPage: ".prevJahr",
			nextPage: ".nextJahr"
	});
	// init. scrollable fuer tag auswahl
	$('.scrollableTag').scrollable({
			api: true,
			size: 5,
			vertical: true,
			loop: false,
			keyboard: false,
			clickable: false,
			activeClass: "selected",
			items: ".items",
			prevPage: ".prevTag",
			nextPage: ".nextTag"
	});
	// init. scrollable fuer buehnen auswahl
	$('.scrollableBuehne').scrollable({
			api: true,
			size: 5,
			vertical: true,
			loop: false,
			keyboard: false,
			clickable: false,
			activeClass: "selected",
			items: ".items",
			prevPage: ".prevBuehne",
			nextPage: ".nextBuehne"
	});
	// init. scrollable fuer kuenstler auswahl
	$('.scrollableKuenstler').scrollable({
			api: true,
			size: 5,
			vertical: true,
			loop: false,
			keyboard: false,
			clickable: false,
			activeClass: "selected",
			items: ".items",
			prevPage: ".prevKuenstler",
			nextPage: ".nextKuenstler"
	});
}

function assignEvents(){
	
	// filter fuer jahr
	$('.scrollableJahr li').live('click',function(){
			var yearTags = $(this).data('tags').replace(/ /g,',');
			var yearFilter = $(this).data('filter');
			$(document).data('currentYearFilter',yearFilter);
			filter(0);
			setActive(this,0);
			//loadImgs(yearTags,1,'AND');
	});
	
	// filter fuer tag
	$('.scrollableTag li').live('click',function(){
			var dayTags = $(this).data('tags').replace(/ /g,',');
			var dayFilter = $(this).data('filter');
			$(document).data('currentDayFilter',dayFilter);
			filter(1);
			setActive(this,1);
			//loadImgs(dayTags,1,'OR');
	});
	
	// filter fuer buehne
	$('.scrollableBuehne li').live('click',function(){
			var stageTags = $(this).data('tags').replace(/ /g,',');
			var stageFilter = $(this).data('filter');
			$(document).data('currentStageFilter',stageFilter);
			filter(2);
			setActive(this,2);
			//loadImgs(stageTags,1,'OR');
	});
	
	// filter fuer kuenstler (kuenstler braucht keinen filter)
	$('.scrollableKuenstler li').live('click',function(){
			var artistTags = $(this).data('tags').replace(/ /g,',');
			setActive(this,3);
			loadImgs(artistTags,1,'AND');
	});
}

function populateList(json,listname) {
	for(var i=0;i<json.data.length;i++){
		var info = json.data[i];
		var entry = $.create('li').text(info.name);
		entry.data('filter',info.filter);
		entry.data('tags',info.tags);
		entry.appendTo($('#'+listname+'Entries'));
	}
}

function scrollUp(listname){
	//$('#'+listname+'Entries').css('top',0);
	$('#'+listname+'Entries').animate({top: 0}, 300);
}

function loadImgs(tag, page, mode){
	//console.info('search flickr for "',tag,'" as',mode,'query and show page',page);
	
	$(document).data('currentQuery',tag);
	$(document).data('currentMode',mode);
	var mode = mode == 'OR' ? 'any' : 'all';
	$('#images').empty();
	var loadingIndicator = $.create('img').attr('src','img/loading.gif').attr('alt','loading...').attr('id','loading').attr('class','imgLoading');
	$('#images').append(loadingIndicator);
	$('#images').flickr({
			api_key: "fc84d1d3e3a023908e354c6ccbfd5807",
			type: "search",
			user_id: "28046860@N07",
			tags: tag,
			tag_mode: mode,
			size: "o",
			per_page: 18,
			page: page,
			callback: showImg
	});
}

function showImg(){
	$('#loading').remove();
	paging();
	$('#images a').colorbox({
		rel:'cboxElement',
		current: 'Bild {current} von {total}',
		previous: 'last',
		maxWidth: '90%',
		maxHeight: '90%'
	});

}

function filter(level){
	// alle eintraege von tag, buehenen und kuenstler
	var allDays    = $('.scrollableTag li');
	var allStages  = $('.scrollableBuehne li');
	var allArtists = $('.scrollableKuenstler li');
	
	// level 0 -> year
	// level 1 -> day
	// level 2 -> stage
	switch(level){
	case 0:
		// falls schon gefiltert wurde die filter hoeherer level leeren
		$(document).data('currentDayFilter',null);
		$(document).data('currentStageFilter',null);
		// erstmal alle ausblenden
		allDays.hide();
		allStages.hide();
		allArtists.hide();
		
		// den filter anwenden --> nur die eintraege anzeigen die einen der 
		// tags enthalten, vermerken in welchem level sie gefiltert wurden
		applyFilter(allDays);
		applyFilter(allStages);
		applyFilter(allArtists);
		break;
	case 1:
		$(document).data('currentStageFilter',null);
		
		var allStages  = $('.scrollableBuehne li');
		var allArtists = $('.scrollableKuenstler li');
		
		allStages.hide();
		allArtists.hide();
		
		applyFilter(allStages);
		applyFilter(allArtists);
		break;
	case 2:
		var allArtists = $('.scrollableKuenstler li');
		
		allArtists.hide();
		
		applyFilter(allArtists);
		break;
	}
}

function applyFilter(objects){
	var currentFilter = new Array();
	var currentYearFilter  = $(document).data('currentYearFilter');
	var currentDayFilter   = $(document).data('currentDayFilter');
	var currentStageFilter = $(document).data('currentStageFilter');
	if(currentYearFilter)
		currentFilter.push(currentYearFilter);
	
	if(currentDayFilter)
		currentFilter.push(currentDayFilter);
	
	if(currentStageFilter)
		currentFilter.push(currentStageFilter);
	
	//console.info('show only entries with the following tags ',currentFilter);
	
	objects.each(function(){
		var thisTags = $(this).data('tags').split(' ');
		var filterCount = currentFilter.length;
		for(var i=0;i<currentFilter.length;i++){
			if($.inArray(currentFilter[i],thisTags)>=0){
				filterCount--;
			}
		}
		
		if(filterCount == 0){
			$(this).show();
		}
		
	});
	
	makeScrollable();
	scrollUp('artist');
	loadImgs(currentFilter.toString(),1,'AND');
}

function setActive(obj,level){
	$(obj).siblings('li').removeClass('selected');
	$(obj).addClass('selected');
	
	if(level == 0){
		$('.scrollableTag li').removeClass('selected')
		$('.scrollableBuehne li').removeClass('selected')
		$('.scrollableKuenstler li').removeClass('selected')
	}
	
	if(level == 1){
		$('.scrollableBuehne li').removeClass('selected')
		$('.scrollableKuenstler li').removeClass('selected')
	}
	
	if(level == 2){
		$('.scrollableKuenstler li').removeClass('selected')
	}
}

function paging(){
	var currentPage = parseInt($('#images input').eq(0).val());
	var totalPages  = parseInt($('#images input').eq(1).val());
	var imgsPerPage = parseInt($('#images input').eq(2).val());
	var totalImgs   = parseInt($('#images input').eq(3).val());
	
	var posSpan  = $.create('span').text('Seite ' + currentPage + ' von ' + totalPages + ' ('+ totalImgs +' Bilder)');
	
	if(currentPage > 1){
		var prevPage = currentPage - 1;
		var prevSpan = $.create('span',{'rel':prevPage,'class':'prevPage active'}).html('&nbsp;&nbsp;').click(function(){
				loadImgs($(document).data('currentQuery'), $(this).attr('rel'),$(document).data('currentMode'));
		});
	}else{
		var prevSpan = $.create('span',{'class':'prevPage inactive'}).text('');
	}
	
	if(currentPage < totalPages){
		var nextPage = currentPage + 1;
		var nextSpan = $.create('span',{'rel':nextPage,'class':'nextPage active'}).html('&nbsp;&nbsp;').click(function(){
				loadImgs($(document).data('currentQuery'), $(this).attr('rel'),$(document).data('currentMode'));
		});
	}else{
		var nextSpan = $.create('span',{'class':'nextPage inactive'}).text('');
	}
	
	$('#imagesHeader').empty();
	var pagerDiv = $.create('div',{'class':'pager'}).appendTo($('#imagesHeader'));
	if(totalPages == 0){
		$.create('span',{'class':'noImgMsg'}).text('Keine Bilder in dieser Kategorie').appendTo(pagerDiv);
	}else{
		prevSpan.appendTo(pagerDiv);
		posSpan.appendTo(pagerDiv);
		nextSpan.appendTo(pagerDiv);
	}
}

function safeConsole(){
	if (!window.console || !window.console.firebugVersion){
		var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"];
		//window.console = function(){};
		for (i in names){
			window.console[names[i]] = function(){};
		}
	}
}


