var gallery = {
	vars: {
		enableScroll: true,
		scrollArrwowsHtml: '<a href="#" class="thumbsScrollUp btnScroll">&nbsp;</a><a href="#" class="thumbsScrollDown btnScroll">&nbsp;</a>'
	},

	domIsReady: function(){
		gallery.bindScroll();
		gallery.bindZoom();
		gallery.bindOpenClose();
		if ($.browser.msie && $.browser.version == '6.0') {
			config.gallery.scrollOffset = 111;
		}
	},

	countImages: function(obj){
		var countImages = 0;
		$('.thumbsImages .imageBoxThumb', $($(obj).parent().parent())).each(function(){
			countImages++;
		});

		return parseInt(countImages);
	},

	getMarginTop: function(obj, operation){
		switch (operation) {
			case 'add':
				return parseInt($('.thumbsImages', $($(obj).parent().parent())).css('marginTop').split('px')[0]) + parseInt(config.gallery.scrollOffset);
				break;
			case 'subtract':
				return parseInt($('.thumbsImages', $($(obj).parent().parent())).css('marginTop').split('px')[0]) - parseInt(config.gallery.scrollOffset);
				break;
		}
	},

	scrollThumbs: function(obj, offsetScrollTop){
		if (gallery.vars.enableScroll) {
			$('.thumbsImages', $($(obj).parent().parent())).animate({
				marginTop: offsetScrollTop + "px"
			}, config.gallery.scrollDuration, function(){
				gallery.vars.enableScroll = true;
			});
			gallery.vars.enableScroll = false;
		}
	},

	openCloseGallery: function(obj, action, remotePageForLoadData){

		switch (action) {
			case 'OPEN':
				setTimeout(function(){ // Timeout is again required in IE
					$('.thumbsContainer', $($(obj).parent())).addClass('loadingThumbs');
					$('.thumbsContainer .thumbsImages', $($(obj).parent())).load(remotePageForLoadData, function(data){
						$('.thumbsContainer', $($(obj).parent())).removeClass('loadingThumbs');
						if ($.trim(data) != '') {
							$('.thumbsContainer .thumbsScroller', $($(obj).parent())).html(gallery.vars.scrollArrwowsHtml);
						}
						else {
							$('.thumbsContainer .thumbsImages', $($(obj).parent())).html(config.vars.blankCharHtml);
							$('.thumbsContainer .thumbsScroller', $($(obj).parent())).html(config.vars.blankCharHtml);
						}
						$('.thumbsContainer', $($(obj).parent())).removeClass('loadingThumbs');
						$(obj).removeClass('galleryClosed');
						$(obj).addClass('galleryOpened');
						$('.viewGalleryText', $(obj)).hide();
						gallery.bindScroll();
						gallery.bindZoom();
						gp.swf.replaceSwf();
						gallery.scrollThumbs($('.thumbsContainer .thumbsScroller', $($(obj).parent())), 0);
					});
				}, 0);




				break;

			case 'CLOSE':
				$('.thumbsContainer .thumbsImages', $($(obj).parent())).html(config.vars.blankCharHtml);
				$('.thumbsContainer .thumbsScroller', $($(obj).parent())).html(config.vars.blankCharHtml);
				$(obj).removeClass('galleryOpened');
				$(obj).addClass('galleryClosed');
				$('.viewGalleryText', $(obj)).show();
				break;
		}
	},

	bindScroll: function(){
		$('.thumbsScrollUp').bind('click', function(){
			var countImages = gallery.countImages(this);
			var marginOffset = gallery.getMarginTop(this, 'add');
			if ((config.gallery.imagesPerPage * config.gallery.scrollOffset) <= marginOffset * config.gallery.imagesPerPage) {
				return false;
			}
			gallery.scrollThumbs(this, marginOffset);
			return false;
		});

		$('.thumbsScrollDown').bind('click', function(){
			var countImages = gallery.countImages(this);
			var marginOffset = gallery.getMarginTop(this, 'subtract');
			if ((((countImages - (config.gallery.imagesPerPage - 1)) * config.gallery.scrollOffset) + marginOffset) <= 0) {
				return false;
			}
			gallery.scrollThumbs(this, marginOffset);
			return false;
		});
	},

	bindZoom: function(){
		$('.imageBoxThumb a').bind('click', function(){
			//$('.imageBoxBig', $($(this).parent().parent().parent().parent())).addClass('loading');
			gallery.zoomImage(this, '');
			return false;
		});
	},

	bindOpenClose: function(){
		$('.openCloseGallery').bind('click', function(e, callback){
			var action = $(this).hasClass('galleryClosed') ? 'OPEN' : 'CLOSE';
			var data = $('.thumbsContainer', $($(this).parent())).attr('id').substring(14);
			data = data.split('_');
			gallery.openCloseGallery(this, action, '/index.php?id=18&tx_iportfolio_pi1[projectUid]=' + data[0] + '&tx_iportfolio_pi1[customerUid]=' + data[1] + '&tx_iportfolio_pi1[action]=RENDERTHUMBS');
			return false;
		});
	},

	zoomImage: function(obj, link){
		if ($.trim(link) == '') {
			$('.imageBoxBig', $($(obj).parent().parent().parent().parent())).html(gp.ajax.ajaxRequest($(obj).attr('href'), '', false, 'GET'));
		}
		else {
			var projectUid = gp.navigation.getQueryStringParameter('tx_iportfolio_pi1[projectUid]', link);
			$('.imageBoxBig', $('#project_' + projectUid)).html(gp.ajax.ajaxRequest(link + '&tx_iportfolio_pi1[action]=RENDERMAINIMAGE', '', false, 'GET'));
		}
		gp.swf.replaceSwf();
	}
};
