var bAddResultlistBehaviour = false;
window.addEvent('domready', function() {
	addResultlistBehaviour();
	
	oRegionText = $('regiontext');
	if ($chk(oRegionText))
	{
		$('regiontext').setStyle('display', 'block');
		var slideRegionText = new Fx.Slide('regiontext', { 
			duration: 500, 
			transition: Fx.Transitions.linear
		}).hide();
		
		$('toggle_regiontext').addEvent('click', function(event) {
			event.stop();
			
			slideRegionText.toggle().chain(function() {
				$('toggle_regiontext').set('class', (slideRegionText.open) ? 'opened' : 'closed');
			});
		});
	}
});

var aImgEventsLoaded = [];
var aImages = [];

function addImageHover()
{
	if ($$('.thumb').length > 0)
	{
		$$('.thumb').each(function(oThumb) {
			if (!aImgEventsLoaded[oThumb.id]) //Zorgen dat behaviour niet dubbel wordt toegevoegd
			{
				oThumb.addEvents({
					'mouseover': function() {
						if (!aImages[this.id] || !aImages[this.id].retrieve('loaded')) //Image nog niet preloaded
						{
							var sImageSource = $('big' + this.id).get('src');
							
							var oThumbCoords = this.getCoordinates();
							var iLeft = oThumbCoords.left + oThumbCoords.width;
							var iTop  = oThumbCoords.top;
							
							aImages[this.id] = new Asset.image(sImageSource, {'onload': function() { this.removeClass('loading'); this.store('loaded', true); } }); //Add image
							aImages[this.id].addClass('big');
							aImages[this.id].addClass('loading');
							aImages[this.id].setStyles({'top' : iTop, 'left' : iLeft})
							aImages[this.id].inject(this, 'after');
						}
						aImages[this.id].setStyle('visibility', 'visible');
					},
					'mouseout': function() {
						aImages[this.id].setStyle('visibility', 'hidden');
					}
				});
				aImgEventsLoaded[oThumb.id] = true;
			}
		});
	}
}

var opened = new Array();
var slideResultDiv = new Array();

function addResultlistBehaviour()
{
	addImageHover();

	aTranslations = new Translation('28965, 28963, 28948, 43573, 43574').getTranslations(); //Om campings te verwijderen dient men er minimaal 1 te selecteren.

	$$('.favorite-link').each(function(el)
	{
		oFavoriteHandler = new CampingFavoritesHandler(el, {aTranslations: aTranslations});
	});

	if ($chk($('compareCampings')))
	{
		oCompareHandler = new CampingCompareHandler($('compareCampings'), {aTranslations: aTranslations});
	}

	if ($chk($('deleteCampings')))
	{
		oCompareHandler = new CampingFavoritesHandler($('deleteCampings'),{
			bCheckBox:true, 
			sCheckBoxAction:'remove', 
			bRefreshResultlist:true,
			onRequestComplete: function() {
				addImageHover();
			},
			aTranslations: aTranslations
		});
	}
	
	var i = 0;
	$$('.check-availability').each(function(el) {
		var campingid = el.get('id').split('-')[2];
		var resultdiv = $('availability-result-'+campingid);
		slideResultDiv[campingid] = new Fx.Slide(resultdiv, { 
			duration: 800, 
			transition: Fx.Transitions.linear
		});
		
		if (i == 0)
		{
			openAvailabilityDiv(el, campingid, false);
		}
		else
		{
			slideResultDiv[campingid].hide();
		}		
		
		el.addEvent('click', function(e) {
			e.stop();

			openAvailabilityDiv(this, campingid, true);
		});
		
		i++;
	});
	
	addStatusHover();
}

function openAvailabilityDiv(toggler, campingid, slidein)
{
	var resultdiv = $('availability-result-'+campingid);
	
	if (typeof(opened[campingid]) == 'undefined') opened[campingid] = false;
			
	if (!opened[campingid])
	{
		resultdiv.set('html', '');
		resultdiv.addClass('loading');
		slideResultDiv[campingid].show();
		request = new Request.JSON({url: '/dataservice/check_availability.php', 
			onFailure: function()
			{
			},
			onSuccess: function(oJson) 
			{
				resultdiv.removeClass('loading');
				resultdiv.set('html', oJson.result);
				if (slidein)
				{
					slideResultDiv[campingid].slideIn();
				}
				else
				{
					slideResultDiv[campingid].show();
				}
				TB_init();
				toggler.toggleClass('check-availability-open', true);
				opened[campingid] = true;
			}.bind(this)
		}).send('campingid='+campingid);
	}
	else
	{
		slideResultDiv[campingid].slideOut();
		toggler.toggleClass('check-availability-open', false);
		opened[campingid] = false;
	}
}

/**
 * Add status hover text to little dots besides campings
 * 
 */
function addStatusHover()
{
	$$('.resultlist_block_availability').each(function(el){
		// create tooltip
		var tip = el.getElement('span');
		
		if ($chk(tip) && tip.get('text') != '')
		{
			el.store('tip:text', el.get('text'));
			tip.destroy();
			new Tips(el, {
				offsets: {x: 15, y: -20},
				fixed: true
			});
		}
	});
}
