/*global jQuery:false, window:false, document:false, escape:false */

var c_gallery = {
	base : '/_modules/gallery/json.php',
	dir : '/_modules/gallery/',
	spacer : '&nbsp;',
	iop	   : 8,
	series : {},
	images : {}
};

function cjson(url, data, async, asynchandler) {
	jQuery('#loader').show();
	async = (async)?true:false;
	
	if(async) {
		jQuery.ajax({
			url:url,
			data:data,
			async:true,
			global:false,
			type:"GET",
			complete:(asynchandler)?asynchandler:false
		});
		jQuery('#loader').hide();
		return true;
	} else {
		var json_text = (jQuery.ajax({
				url:url,
				data:data,
				async:false,
				global:false,
				type:"GET"
			}).responseText);
		var json = eval('(' + json_text + ')');
		
		jQuery('#loader').hide();
		
		if(json.error!==false) {
			window.alert(json.error);
			return false;
		} else {
			return json.result;
		}
	}
}
function loadSerie(serie_id) {
	var url = c_gallery.base + '?task=getshow&show=' + serie_id;
	var c_data = cjson(url, {}, false);
	return c_data;
}
function loadSeries() {
	var url = c_gallery.base + '?task=getshows';
	var c_data = cjson(url, {}, false);
	return c_data;
}
function loadImages(serie_id) {
	var url = c_gallery.base + '?task=showcontent&show=' + serie_id;
	var c_data = cjson(url, {}, false);
	return c_data;
}
function clearGallery(gallery_id) {
	var c_$gallery= jQuery('#' + gallery_id);
	
	c_$gallery.find('.title').html('Categori&euml;n');
	c_$gallery.find('.current_show').html(c_gallery.spacer);
	c_$gallery.find('.current_page').html(c_gallery.spacer);
	c_$gallery.find('.total_pages').html(c_gallery.spacer);
	c_$gallery.find('[class*=image_]').html(c_gallery.spacer);
	c_$gallery.find('.hiding_gallery_before, .hiding_gallery_after').html(c_gallery.spacer);
}
function updateGallery(gallery_id) {
	var c_$gallery= jQuery('#' + gallery_id);
	var c_show = c_$gallery.attr('gallery');
	var c_iop  = c_$gallery.attr('onpage') || c_gallery.iop;
    var c_lightbox = c_$gallery.attr('lightboxmode') || 'lightbox';

	if(typeof(c_iop) === 'function') { // I FIX IE
		c_iop = "" + c_iop;
		c_iop = c_iop.substr( c_iop.indexOf('{') + 1, ( c_iop.indexOf('}') - c_iop.indexOf('{')) - 1 );
		c_iop = parseInt(c_iop, 10);
	}

	var c_showData = c_gallery.series[c_show + '' + gallery_id];
	var c_imageData = c_gallery.images[c_show + '' + gallery_id];
	var c_page = c_showData.page;
	var c_start = c_page * c_iop;
	var c_end   = c_start + c_iop;
	
	c_$gallery.find('.title').html(c_show > -1 ? 'Categorie' : 'Categori&euml;n');
	c_$gallery.find('.current_show').html(c_showData.name + '');
	c_$gallery.find('.current_page').html(c_showData.page + 1 + '');
	c_$gallery.find('.total_pages').html(c_showData.max_page + '');
	
	var c_item = 0;
	for(var c_p = 0; c_p < c_imageData.length; c_p += 1) {
		var c__img = c_imageData[c_p];
		
		var c__ext = c__img.filename.substring(c__img.filename.lastIndexOf('.'));
		var c__lnk = '/uploads/' + c__img.dirname + '/' + c__img.filename;
		var c__thk = '/uploads/' + c__img.dirname + '/_thumbs/_' + c__img.filename.replace(c__ext, '') + '.jpg';
		var c__src = c_gallery.dir + 'img.php?f=' + escape(c__thk) + '&if=' + escape(c__lnk) + '&w=120&h=120';
        
        var attributes = 'rel="lightbox[' + gallery_id + ']"';
        if(c_lightbox == 'lytebox') {
            if(top.document === document) {
                attributes = 'rel="lytebox[' + gallery_id + ']"';
            }
        }

		if(c_p >= c_start && c_p < c_end) {
			c_item += 1;

			if(c_show > -1) {
				c_$gallery.find('.image_' + c_item).html('<a class="img_a" href="' + c__lnk + '" ' + attributes + '" target="_blank"><img border="0" src="' + c__src + '" width="120" height="120" /><label>'+ c__img.title +'</label></a>');
			} else {
				c_$gallery.find('.image_' + c_item).html('<a class="img_g" href="#" onclick="setGallery(\'' + gallery_id + '\',' + c__img.show + ');return false;" title="' + c_showData[c_p].name + '"><img border="0" src="' + c__src + '" width="120" height="120" /><label>' + c_showData[c_p].name + '</label></a>');
			}
		} else if(c_show > -1) {
			c_$gallery.find((c_p < c_start)?'.hiding_gallery_before':'.hiding_gallery_after').append('<a class="img_a" href="' + c__lnk + '" ' + attributes + '" style="display:none;"><img border="0" src="' + c__src + '" width="120" height="120" /><label>'+ c__img.title +'</label></a>');
		}
	}
}
function gotoNextPage(gallery_id) {
	var c_$gallery= jQuery('#' + gallery_id);
	var c_show = c_$gallery.attr('gallery');
	var c_showData = c_gallery.series[c_show + '' + gallery_id];
	
	if(c_showData.page < (c_showData.max_page-1)) {
		c_showData.page += 1;

		clearGallery(gallery_id);
		updateGallery(gallery_id);
	}
}
function gotoPreviousPage(gallery_id) {
	var c_$gallery= jQuery('#' + gallery_id);
	var c_show = c_$gallery.attr('gallery');
	var c_showData = c_gallery.series[c_show + '' + gallery_id];
	
	if(c_showData.page > 0) {
		c_showData.page -= 1;

		clearGallery(gallery_id);
		updateGallery(gallery_id);
	}
}
function setupGallery() {
	var gallery = this;
	var c_$gallery= jQuery(this);
	var c_gallery_id = c_$gallery.attr('id');
	var c_iop  = c_$gallery.attr('onpage') || c_gallery.iop;
	if(typeof(c_iop) === 'function') { // I FIX IE
		c_iop = "" + c_iop;
		c_iop = c_iop.substr( c_iop.indexOf('{') + 1, ( c_iop.indexOf('}') - c_iop.indexOf('{')) - 1 );
		c_iop = parseInt(c_iop, 10);
	}
	
	var c_show = jQuery(this).is('[gallery]')?jQuery(this).attr('gallery'):-1;
	
	var c_showData, c_imageData, $max_page;
	
	if(c_show > -1) { 
		// get data
		c_showData = loadSerie(c_show);
		c_imageData = loadImages(c_show);
		$max_page = parseInt(c_imageData.length / c_iop, 10);
		if(c_imageData.length % c_iop > 0) {
			$max_page += 1;
		}

		c_gallery.series['' + c_show + '' + c_gallery_id] = c_showData;
		c_gallery.images['' + c_show + '' + c_gallery_id] = c_imageData;
		c_gallery.series['' + c_show + '' + c_gallery_id].page = 0;
		c_gallery.series['' + c_show + '' + c_gallery_id].max_page = $max_page;
		
		c_$gallery.find('.back_link').empty();
	} else {
		c_showData = loadSeries();
		c_imageData = [];
		for(var $s_s = 0; $s_s < c_showData.length; $s_s += 1) {
			c_imageData.push(c_showData[$s_s].img);
		}
		$max_page = parseInt(c_imageData.length / c_iop, 10);
		if(c_imageData.length % c_iop > 0) {
			$max_page += 1;
		}
		c_showData.name = "";

		c_gallery.series['' + -1 + '' + c_gallery_id] = c_showData;
		c_gallery.images['' + -1 + '' + c_gallery_id] = c_imageData;
		c_gallery.series['' + -1 + '' + c_gallery_id].page = 0;
		c_gallery.series['' + -1 + '' + c_gallery_id].max_page = $max_page;
		
		c_$gallery.find('.back_link').empty();
	}
	clearGallery(c_gallery_id);
	updateGallery(c_gallery_id);

	c_$gallery.find('.prevlink').bind('click',function(ev) {
		this.blur();
		// move to prev page
		gotoPreviousPage(c_gallery_id);
		
		ev.cancelBubble = true;
		if(ev.stopPropagation) { ev.stopPropagation(); }
		return false;
	});
	c_$gallery.find('.nextlink').bind('click',function(ev) {
		this.blur();
		// move to next page
		gotoNextPage(c_gallery_id);
		
		ev.cancelBubble = true;
		if(ev.stopPropagation) { ev.stopPropagation(); }
		return false;
	});
}

function setGallery(gallery_id, show) {
	var c_$gallery= jQuery('#' + gallery_id);
	c_$gallery.attr('gallery',show+'');
	var c_iop = c_$gallery.attr('onpage') || c_gallery.iop;
	if(typeof(c_iop) === 'function') { // I FIX IE
		c_iop = "" + c_iop;
		c_iop = c_iop.substr( c_iop.indexOf('{') + 1, ( c_iop.indexOf('}') - c_iop.indexOf('{')) - 1 );
		c_iop = parseInt(c_iop, 10);
	}
	
	clearGallery(gallery_id);
	
	var c_showData, c_imageData, $max_page;
	
	if(show > -1) { 
		// get data
		c_showData = loadSerie(show);
		c_imageData = loadImages(show);
		$max_page = parseInt(c_imageData.length / c_iop, 10);
		if(c_imageData.length % c_iop > 0) {
			$max_page += 1;
		}	

		c_gallery.series['' + show + '' + gallery_id] = c_showData;
		c_gallery.images['' + show + '' + gallery_id] = c_imageData;
		c_gallery.series['' + show + '' + gallery_id].page = 0;
		c_gallery.series['' + show + '' + gallery_id].max_page = $max_page;

		c_$gallery.find('.back_link').html('terug');
		c_$gallery.find('.back_link').unbind('click').click(function() { setGallery(gallery_id, -1); });
	} else {
		c_showData = loadSeries();
		c_imageData = [];
		for(var $s_s = 0; $s_s < c_showData.length; $s_s += 1) {
			c_imageData.push(c_showData[$s_s].img);
		}
		$max_page = parseInt(c_imageData.length / c_iop, 10);
		if(c_imageData.length % c_iop > 0) {
			$max_page += 1;
		}
		c_showData.name = "";

		c_gallery.series['' + -1 + '' + gallery_id] = c_showData;
		c_gallery.images['' + -1 + '' + gallery_id] = c_imageData;
		c_gallery.series['' + -1 + '' + gallery_id].page = 0;
		c_gallery.series['' + -1 + '' + gallery_id].max_page = $max_page;
		
		c_$gallery.find('.back_link').empty().unbind('click');
	}
	updateGallery(gallery_id);	
}
jQuery(document).ready(function() {
	if(jQuery('.mod_gallery').size()>0) {
		jQuery('.mod_gallery').each(setupGallery);
	}
});