Cufon.replace('h1');


window.addEvent('domready', function() 
{		
	roar = new Roar();
	strVisualPath = '/visuals/gyas/cognac/';

	/* accordion */
	if($$('.accordion').length > 0)
	{	
		$$('.element').set('slide');
		$$('.element').each(function(el)
		{
		 	if(el.hasClass('open'))
			{
				//el.slide('hide');
				el.setStyle('display', 'block');
				el.slide('show');
			}
			else
			{
				el.slide('hide');
				el.setStyle('display', 'block');				
			}
		});
		/*$$('.element').set('slide').slide('hide');
		$$('.element').setStyle('display', 'block');
		$$('.open').slide('show');*/
		
		$$('.toggler').addEvent('click', function(e)
		{
			var strId = this.id.split('-')[0];
			var intId = this.id.split('-').getLast();
			e.stop();
			
			if(this.getFirst('img'))
				this.getFirst('img').src = this.hasClass('open') ? strVisualPath + 'slide-closed.png' : strVisualPath + 'slide-open.png';
			this.toggleClass('open');
			$(strId + '-element-' + intId).slide('toggle');
		});
	}
	
	if($('home_forum'))
	{
		//var objHoverTools = new HoverTools($$('ul#home_forum li'));
	}

	/* textarea grow */
	
	/*if($$('textarea.grow'))
	{
		if(Browser.Engine.webkit == false) 
		{
			$$('textarea.grow').each(function(el, i) {
				new GrowTextarea(el); 
			});
		}
	}*/
	
	/* loginpane slider */
	//var objLoginSlider = new LoginSlider($('login'));
	$('login').addEvent('click', function(e)
	{
		e.stop();
		this.toggleClass('open');
		$('login_box').toggleClass('open');
		if($('username'))
		{
			$('username').focus();
		}
	});
	/* hide login when clicked outside */
	$(document.body).addEvent('click',function(e) {
		if($$('div.login')[0] && !e.target || !$(e.target).getParents().contains($$('div.login')[0])) { 
			$('login').removeClass('open');
			$('login_box').removeClass('open');
		}
	});
	
	// On focus clear input
	/*$$('div#login_box input.default').each(function(elInput)
	{
		elInput.addEvent('focus', function()
		{
			if (this.value == this.defaultValue) 
			{
				this.value = "";
			}
		});
		elInput.addEvent('blur', function()
		{
			if (this.value == '') 
			{
				this.value = this.defaultValue;
			}
		});		
	});*/
	
	/* custom selectbox 
	if($$('select'))
	{
		customDropdown('select', 'base');	
	}*/
	if($$('select'))
	{
		new CustomSelect();
	}
	
	/* custom radiobutton
	if($$('.radio'))
	{
		customRadioButton('radio', strVisualPath + 'bg/forms/btn-radio-checked.png', strVisualPath + 'bg/forms/btn-radio.png');
	}
	/* custom checkbox 
	if($$('.checkbox'))
	{
		customCheckbox('checkbox', strVisualPath + 'bg/forms/btn-checkbox-checked.png', strVisualPath + 'bg/forms/btn-checkbox.png');	
	}*/
	
	/* main navigation*/
	new MainNavigation($('mainmenu'));

	/* loadOnScroll */
/*	var intEnters = 1;
	document.addEvent('scroll', function()
	{
		if($('pictures'))
		{
			var intAlbumId = $('album-id').innerHTML;
			var intNumber = 12;
			
			var intMax = window.getScrollSize().y - window.getSize().y;
			var intCurrPos = window.getScroll().y;
			var intFooterHeight = $('footer').getSize().y;
			
			//console.log(intMax+intFooterHeight);
			//console.log(intCurrPos);
			
			if(intCurrPos == intMax)
			{
				new RequestPictures((intEnters) * intNumber, intAlbumId, intNumber);
				intEnters++;
			}
		}
	});*/
	
	if($('add_message'))
	{
		$('add_message').addEvent('click', function(e)
		{
			e.stop();
			$('message_form').getParent().getParent().setStyle('display', 'block');
			$('message_form').getElement('textarea').focus();
		});
		
		if($('cancel'))
		{
			$('cancel').addEvent('click', function(e)
			{
				e.stop();
				this.getParent().getParent().getParent().setStyle('display', 'none');
			});
		}
	}
	
	//commitee accordion
	if($$('.committee').length > 0)
	{
    	$$('a.toggler').addEvent('click', function(e)
		{
			e.stop();
		});
		
		var objAccordion = new Fx.Accordion($$('a.toggler'), $$('div.element'),
		{
			//initialDisplayFx: false 
		});
	}
	
	if($('message_form'))
	{		
		var elTextarea = $('message_form').getElement('textarea');
		var objEditor = new BBEditor(elTextarea);
	}
	
	if($('add_topic_textarea'))
	{
		new BBEditor($('add_topic_textarea'));
	}
	
	if($('forum-topics'))
	{
		var objHoverTools = new HoverTools($$('table#forum-topics tbody tr.content'));
	}
	
	if($$('div.message').length > 0)
	{
		var objHoverTools = new HoverTools($$('div.message'));
	}	
	
	dynamiclink();
	
	//gallery keydown focus check
	blnFocus = false;
});

function dynamiclink(){
	//1)Enter domains to be EXCLUDED from opening in new window:
	var excludedomains=["gyas.nl","195.14.1.230","212.61.165.250","localhost"]
	
	var excludedomains=excludedomains.join("|")
	rexcludedomains=new RegExp(excludedomains, "i")

	for (i=0; i<=(document.links.length-1); i++) {
		if (document.links[i].hostname.search(rexcludedomains)==-1&&document.links[i].href.indexOf("http:")!=-1)
			document.links[i].target="_blank"
	}
}

var ForumAction = new Class(
{
	initialize: function(argStrAction, argIntForumId, argIntTopicId, argEl, argIntMessageId)
	{	
		var elButton = argEl;
		var strAction = argStrAction;
		var intForumId = argIntForumId;
		var intTopicId = argIntTopicId;
		var intMessageId = $defined(argIntMessageId) ? argIntMessageId : 0;
		
		switch(strAction)
		{
			case 'edit_topictitle':
			{
				var elTitleCell = elButton.getParent().getParent().getPrevious();
				var elTitle = elTitleCell.getElement('.topic-title');
				var strTitle = elTitle.innerHTML;
				
				var elDisposedTitle = elTitle.dispose();
				
				var elForm = new Element('form',
				{
					'action': '?action=' + strAction + '&inline=1',
					'method': 'post',
					'id': 'form_edit_topic_title',
					'events':
					{
						'submit': function(e)
						{
							e.stop();
							
							elSubmit.src = strVisualPath + 'loader_small.gif';
							var strFormData = elForm.toQueryString().trim();
							var strSendData = strFormData + '&action=' + strAction + '&inline=1&encoding=utf-8&forum_id=' + intForumId + '&topic_id=' + intTopicId;
							
							var req = new Request(
							{
								url: '?',
								method: 'post',
								data: strSendData,
								onSuccess: function(response)
								{
									var objData = JSON.decode(response);
									
									elForm.destroy();
									elDisposedTitle.innerHTML = objData.title;
									elDisposedTitle.inject(elTitleCell);
									
									roar.alert(objData.name, objData.message, { 'icon': objData.icon });
								}
							}).send();
						}.bind(this)
					}
				});
				
				var elInput = new Element('input',
				{
					'type': 'text',
					'class': 'default',
					'name': 'title',
					'value': strTitle
				});
				
				var elSubmit = new Element('input',
				{
					'class': 'submit',
					'type': 'image',
					'src': strVisualPath + 'icon/page_edit.png'
				});
				
				elForm.inject(elTitleCell);
				elInput.inject(elForm);
				elSubmit.inject(elForm);				
				
				break;
			}
			case 'delete':
			{
				if(confirm("Weet je zeker dat je dit bericht wil wissen? Het zal dan niet meer terug te halen zijn"))
				{
					if(intMessageId > 0)
					{
						//forum-post
						var elRow = elButton.getParent().getParent().getParent().getParent();
						var strBg = elButton.getStyle('background-image');
						elButton.setStyle('background-image', 'url(' + strVisualPath + 'loader_small.gif)');
						
						var req = new Request(
						{
							url: '?',
							method: 'post',
							data: 'action=delete&inline=1&forum_id=' + intForumId + '&topic_id=' + intTopicId + '&message_id=' + intMessageId,
							onSuccess: function(data)
							{
								var objData = JSON.decode(data);
								
								var objFx = new Fx.Tween(elRow);
								objFx.start('opacity', 1, 0).chain(function()
								{
									elRow.dispose();
								});
								
								var objAlert = function()
								{
									roar.alert(objData.name, objData.message, { 'icon': objData.icon });
								}
								objAlert.delay(1000);
							}
						}).send();
					}
					else
					{
						//forum-topic
						var elRow = elButton.getParent().getParent().getParent();
						var elRowNext = elRow.getNext();
						var strBg = elButton.getStyle('background-image');
						elButton.setStyle('background-image', 'url(' + strVisualPath + 'loader_small.gif)');
						
						var req = new Request(
						{
							url: '?',
							method: 'post',
							data: 'action=delete&inline=1&forum_id=' + intForumId + '&topic_id=' + intTopicId,
							onSuccess: function(data)
							{
								var objData = JSON.decode(data);
								
								var objFx = new Fx.Tween(elRow);
								var objFx2 = new Fx.Tween(elRowNext);
								objFx.start('opacity', 1, 0).chain(function()
								{
									elRow.dispose();
								});
								
								objFx2.start('opacity', 1, 0).chain(function()
								{
									elRowNext.dispose();
								});
								
								var objAlert = function()
								{
									roar.alert(objData.name, objData.message, { 'icon': objData.icon });
								}
								objAlert.delay(1000);
							}
						}).send();
					}
				}
				
				break;
			}
			default:
			{
				var strUrl = '?action='+ strAction +'&inline=1&forum_id=' + intForumId + '&topic_id=' + intTopicId;
				
				if(intMessageId > 0)
				{
					var elRow = elButton.getParent().getParent().getParent().getParent();
					strUrl += '&message_id=' + intMessageId;
				}
				else
				{
					var elRow = elButton.getParent().getParent().getParent();
					var elTopicIcon = elRow.getElements('img.topic-icon')[0];
				}
				
				var strBg = elButton.getStyle('background-image');
				elButton.setStyle('background-image', 'url(' + strVisualPath + 'loader_small.gif)');
				
				var objRequest = new Request(
				{
					method: 'get',
					url: strUrl,
					onSuccess: function(data)
					{
						var objData = JSON.decode(data);
						
						elButton.setStyle('background-image', strBg);
						
						if(intMessageId == 0)
						{
							elTopicIcon.setStyle('background-image', 'url(' + objData.image + ')');
						}
						
						objData.hidden==true ? elRow.addClass('hidden') : elRow.removeClass('hidden');
						roar.alert(objData.name, objData.message, { 'icon': objData.icon });
					}
				}).send();				
				
				break;
			}
		}
	}
});

var PostAction = new Class(
{
	Implements: Chain,
	initialize: function(argStrAction, argIntForumId, argIntPostId, argIntTopicId, argEl)
	{	
		var elButton = argEl;
		var strAction = argStrAction;
		var intForumId = argIntForumId;
		var intTopicId = argIntTopicId;
		
		switch(strAction)
		{
			case 'edit_topictitle':
			{
				var elTitleCell = elButton.getParent().getParent().getPrevious();
				var elTitle = elTitleCell.getElement('.topic-title');
				var strTitle = elTitle.innerHTML;
				
				var elDisposedTitle = elTitle.dispose();
				
				var elForm = new Element('form',
				{
					'action': '?action=' + strAction + '&inline=1',
					'method': 'post',
					'id': 'form_edit_topic_title',
					'events':
					{
						'submit': function(e)
						{
							e.stop();
							
							elSubmit.src = strVisualPath + 'loader_small.gif';
							var strFormData = elForm.toQueryString().trim();
							var strSendData = strFormData + '&action=' + strAction + '&inline=1&encoding=utf-8&forum_id=' + intForumId + '&topic_id=' + intTopicId;
							
							var req = new Request(
							{
								url: '?',
								method: 'post',
								data: strSendData,
								onSuccess: function(response)
								{
									var objData = JSON.decode(response);
									
									elForm.destroy();
									elDisposedTitle.innerHTML = objData.title;
									elDisposedTitle.inject(elTitleCell);
									
									roar.alert(objData.name, objData.message, { 'icon': objData.icon });
								}
							}).send();
						}.bind(this)
					}
				});
				
				var elInput = new Element('input',
				{
					'type': 'text',
					'class': 'default',
					'name': 'title',
					'value': strTitle
				});
				
				var elSubmit = new Element('input',
				{
					'class': 'submit',
					'type': 'image',
					'src': strVisualPath + 'icon/page_edit.png'
				});
				
				elForm.inject(elTitleCell);
				elInput.inject(elForm);
				elSubmit.inject(elForm);				
				
				break;
			}
			case 'delete':
			{
				var elRow = elButton.getParent().getParent().getParent();
				var elRowNext = elRow.getNext();
				var strBg = elButton.getStyle('background-image');
				elButton.setStyle('background-image', 'url(' + strVisualPath + 'loader_small.gif)');
				
				var req = new Request(
				{
					url: '?',
					method: 'post',
					data: 'action=delete&inline=1&forum_id=' + intForumId + '&topic_id=' + intTopicId,
					onSuccess: function(data)
					{
						var objData = JSON.decode(data);
						
						var objFx = new Fx.Tween(elRow);
						var objFx2 = new Fx.Tween(elRowNext);
						objFx.start('opacity', 1, 0).chain(function()
						{
							elRow.dispose();
						});
						
						objFx2.start('opacity', 1, 0).chain(function()
						{
							elRowNext.dispose();
						});
						
						//elRow.fade('out').chain(function(){ elRow.setStyle('display', 'block'); });
						//elRow.getNext().fade('out');
						
						var objAlert = function()
						{
							roar.alert(objData.name, objData.message, { 'icon': objData.icon });
						}
						objAlert.delay(1000);
					}
				}).send();
				
				break;
			}
			default:
			{
				var elRow = elButton.getParent().getParent().getParent();
				var elTopicIcon = elRow.getElements('img.topic-icon')[0];
				var strBg = elButton.getStyle('background-image');
				elButton.setStyle('background-image', 'url(' + strVisualPath + 'loader_small.gif)');
				
				var objRequest = new Request(
				{
					method: 'get',
					url: '?action='+ strAction +'&inline=1&forum_id=' + intForumId + '&topic_id=' + intTopicId,
					onSuccess: function(data)
					{
						var objData = JSON.decode(data);
						
						elButton.setStyle('background-image', strBg);
						elTopicIcon.setStyle('background-image', 'url(' + objData.image + ')');
						
						objData.hidden==true ? elRow.addClass('hidden') : elRow.removeClass('hidden');
						
																	  
						roar.alert(objData.name, objData.message, { 'icon': objData.icon });
					}
				}).send();				
				

				break;
			}
		}
	}
});

var HoverTools =  new Class(
{
	initialize: function(argElRows) 
	{
		argElRows.each(function(elRow)
		{
			var elTools = elRow.getElements('.tools');
			
			if(elTools)
			{
				elRow.addEvents(
				{
					'mouseover': function()
					{
						elTools.addClass('show');
					},
					'mouseleave': function()
					{
						elTools.removeClass('show');
					}
				});
			}
		});
	}
});

var RequestPictures = new Class(
{
	initialize: function(argIntOffset, argIntAlbumId, argIntNumber) 
	{
		var elLoader = new Element('img',
		{
			'id' : 'loader',
			'class' : 'loader',
			'src' : '/visuals/gyas/cognac/loader.gif'
		});
		
		elLoader.inject($('clear'), 'before');
		
		var objData = new Hash();
		objData.set('offset', argIntOffset);
		objData.set('albumid', argIntAlbumId);
		objData.set('number', argIntNumber);
		
		var objRequest = new Request(
		{
			method: 'get',
			url: 'requesthandler.php?data=' + JSON.encode(objData),
			useSpinner: true,
			onSuccess: function(data)
			{
				$('loader').dispose();
				var decodedData = JSON.decode(data);
				
				decodedData.each(function(picture, index)
				{
					var elAnchor = new Element('a', 
					{
						'href' : '#',
						'class' : 'image'
					});
					
					var elPicture = new Element('img',
					{
						'src': 'data/gallery/cropped/' + picture.content,
						'width' : 90,
						'height' : 90
					});
					
					elPicture.inject(elAnchor);
					elAnchor.inject($('clear'), 'before');
					elAnchor.set('opacity', 0);
					elAnchor.fade('in');
				});
			}
		});
		//objRequest.setHeader('X_REQUESTED_WITH', 'XMLHttpRequest');
		objRequest.send();
	}
});

/*var multipleOpenAccordion = new Class({
	Extends: Accordion,
	options: {
		display: -1,
		allowMultipleOpen: true
	},
	initialize: function(togglers,togglees,options){
		this.parent(togglers,togglees,this.options);
		togglers.addEvent('click', function()
		{
			this.getFirst('img').src = this.hasClass('open') ? '/visuals/gyas/cognac/slide-closed.png' : '/visuals/gyas/cognac/slide-open.png';
			this.toggleClass('open');
		});
	},
	display: function(index){
		index = ($type(index) == 'element') ? this.elements.indexOf(index) : index;
		if ((this.timer && this.options.wait) || (index === this.previous && !this.options.alwaysHide)) return this;
		
		var obj = {};
		if(this.options.allowMultipleOpen){
			var el = this.elements[index];
			obj[index] = {};
			var hide = (el.offsetHeight > 0);
			this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[index], el]);
			for (var fx in this.effects) obj[index][fx] = hide ? 0 : el[this.effects[fx]];
			
		}else{
			this.previous = index;
			this.elements.each(function(el, i){
				obj[i] = {};
				var hide = (i != index) || (this.options.alwaysHide && (el.offsetHeight > 0));
				this.fireEvent(hide ? 'onBackground' : 'onActive', [this.togglers[i], el]);
				for (var fx in this.effects) obj[i][fx] = hide ? 0 : el[this.effects[fx]];
			}, this);
			
		}
		return this.start(obj);
	}
});*/

var MainNavigation = new Class(
{
	arrOpened: new Array(),
	arrOpenedDropdown: new Array(),
	arrDropdowns: null,
	initialize: function(argElMenu)
	{
		this.elMenu = argElMenu;		
		this.arrDropdowns = $$('ol.dropdown');
		var self = this;

		if(this.elMenu)
		{
			//set dropdown widths
			this.arrDropdowns.each(function(elDropdown)
			{
				var arrDropdownWidths = new Array();
				var arrElDropdownItems = elDropdown.getElements('li');				
				
				arrElDropdownItems.each(function(elDropdownItem)
				{
					arrDropdownWidths.include(elDropdownItem.measure(function(){
						return this.getSize().x;
					}));
				});
				
				var intColumns = Math.ceil(arrElDropdownItems.length / 5).round();
				var intPadding = intColumns * 12;
				var intTotalWidth = ((arrDropdownWidths.max())*intColumns).round() + intPadding;
				
				elDropdown.setStyle('width', intTotalWidth);
				arrElDropdownItems.setStyle('width', arrDropdownWidths.max()-12);
			});
			this.arrDropdowns.fade('hide').set('tween',{duration:200, link:'cancel'});
			
			var arrMenuItems = this.elMenu.getChildren('li');
			
			/*
			if($$('div.dropdown-absolute'))
			{
				//hide dropdowns
				
				this.arrDropdowns = $$('ol.dropdown');
				
				
				//calc width
				var arrDropdownItems = this.arrDropdowns.getElements('li');
				arrDropdownItems.each(function(arrElDropdownItem)
				{
					var arrDropdownWidths = new Array();
					arrElDropdownItem.each(function(elDropdownItem)
					{
						arrDropdownWidths.include(elDropdownItem.measure(function(){
							return this.getSize().x;
						}));
					});

					var intMaxWidth = (arrDropdownWidths.max() + 32);
					if((arrElDropdownItem.length / 5) > 1)
					{
						intMaxWidth = (arrDropdownWidths.max() + 22);
						var intTotalWidth = ((arrDropdownWidths.max() + 22)*(Math.ceil(arrElDropdownItem.length / 5))).round();
					}
					arrElDropdownItem.getParent().setStyle('width', intMaxWidth);
					arrElDropdownItem.setStyle('width', intMaxWidth);
					if($defined(intTotalWidth))
					{
						intMaxWidth = intTotalWidth;
					}
					arrElDropdownItem.getParent().getParent().setStyle('width', intMaxWidth);
					arrElDropdownItem.getParent().getParent().getParent().setStyle('width', intMaxWidth);
				});*/
				
				/*this.arrDropdowns.set('slide',
				{
					duration:600,
					transition:Fx.Transitions.Pow.easeInOut,
					link:'cancel'
				});
				
				this.arrDropdowns.slide('hide');
				this.arrDropdowns.setStyle('display', 'block');

				
				//set width of dropdownslider-wrapper
				this.arrDropdowns.each(function(arrElDropdowns)
				{
					arrElDropdowns.getParent().setStyle('width', arrElDropdowns.getStyle('width')); 
				});
				
			}
			*/
			
			arrMenuItems.each(function(elMenuItem)
			{					
				var arrSubmenu = elMenuItem.getChildren('ol');
				
				if(elMenuItem.hasClass('active'))
				{
					arrSubmenu.fade('show');
				}
				else
				{
					arrSubmenu.fade('hide');
				}
				arrSubmenu.setStyle('display', 'block');
				
				arrSubmenu.each(function(elSubmenu)
				{
					arrSubmenuItems = elSubmenu.getChildren('li');

					arrSubmenuItems.each(function(elSubmenuItem)
					{
						var elDropdown = elSubmenuItem.getElement('ol.dropdown');
						if(elDropdown)
						{
							//set arrow
							//elSubmenuItem.getFirst('a').addClass('arrow');
							elSubmenuItem.getFirst('a').addEvents(
							{
								'mouseenter': function(event)
								{
									$clear(this.arrDropdowns.retrieve('intTimeoutId'));
									this.arrDropdowns.fade('out');
									//this.cancelCloseDropdown(elDropdown);
									/*if($$('ul.breadcrumb')[0])
									{
										$$('ul.breadcrumb')[0].setStyle('z-index', 9);
									}*/
									elDropdown.fade('in');
									//this.openDropdown(elDropdown);
								}.bind(self)
							});
							
							new HoverGroup(
							{
								elements: [elSubmenuItem.getFirst('a'), elDropdown],
								onLeave: function()
								{
									var objClose = this.closeDropdown(elDropdown);
									this.arrOpenedDropdown.include(elDropdown);
									elDropdown.store('intTimeoutId', objClose.delay(300));
								}.bind(self)
							});
						}
					});
					//add events to mainmenu
					elMenuItem.addEvents(
					{
						'mouseenter': function(event)
						{
							//elSubmenu.getPrevious().addClass('hover');
							this.cancelCloseSub(elSubmenu);
							this.openSub(elSubmenu);
						}.bind(self),
						'mouseleave': function(event)
						{
							//elSubmenu.getPrevious().removeClass('hover');
							var objClose = this.closeSub(elSubmenu);
							this.arrOpened.include(elSubmenu);
							elSubmenu.store('intTimeoutId', objClose.delay(1000));
						}.bind(self)
					});
				});
			});
		}
	},
	openSub: function(argElSubmenu)
	{
		if($$('ol.menu > li.active > ol')[0])
		{
			if(argElSubmenu != $$('ol.menu > li.active > ol')[0])
			{
				$$('ol.menu > li.active > ol')[0].fade('out');
				$$('ol.menu > li.active > ol')[0].getPrevious().removeClass('hover');
			}
		}
		argElSubmenu.getPrevious().addClass('hover');
		argElSubmenu.set('tween', {duration: 200, link: 'cancel'}); 
		argElSubmenu.fade('in');
	},
	closeSub: function(argElSubmenu)
	{
		return (function()
		{
			this.arrDropdowns.fade('hide');
			argElSubmenu.getPrevious().removeClass('hover');
			argElSubmenu.set('tween', {duration: 200, link: 'cancel'}); 
			argElSubmenu.fade('out');
			if($$('ol.menu > li.active > ol')[0])
			{
				this.openSub($$('ol.menu > li.active > ol')[0]);
			}
		}.bind(this));
	},
	cancelCloseSub: function(argElSubmenu)
	{
		this.arrDropdowns.fade('hide');
		this.arrOpened.each(function(elSubmenu)
		{
			$clear(elSubmenu.retrieve('intTimeoutId'));
			if(elSubmenu != argElSubmenu) 
			{
				elSubmenu.set('tween', {link: 'cancel'});
				elSubmenu.fade('hide');
				elSubmenu.getPrevious().removeClass('hover');
				this.arrOpened.erase(elSubmenu);
			}
		}, this);
	},
	openDropdown: function(argElDropdown)
	{
		argElDropdown.fade('in');
	},
	closeDropdown: function(argElDropdown)
	{
		return (function()
		{
			argElDropdown.fade('out');
		});
	},
	cancelCloseDropdown: function(argElDropdown)
	{
		this.arrOpenedDropdown.each(function(elDropdown)
		{
			$clear(elDropdown.retrieve('intTimeoutId'));
			if(elDropdown != argElDropdown)
			{
				elDropdown.fade('hide');
				this.arrOpenedDropdown.erase(elDropdown);
			}
		}, this);
	}
});

var HoverGroup = new Class({
	Implements: [Options, Events],
	Binds: ['enter', 'leave', 'remain'],
	options: {
		//onEnter: $empty,
		//onLeave: $empty,
		elements: [],
		delay: 300,
		start: ['mouseenter'],
		remain: [],
		end: ['mouseleave']
	},
	initialize: function(options) {
		this.setOptions(options);
		this.attachTo(this.options.elements);
		this.addEvents({
			leave: function(){
				this.active = false;
			},
			enter: function(){
				this.active = true;
			}
		});
	},
	elements: [],
	attachTo: function(elements, detach){
		var starters = {}, remainers = {}, enders = {};
		elements = $splat(document.id(elements)||$$(elements));
		this.options.start.each(function(start) {
			starters[start] = this.enter;
		}, this);
		this.options.end.each(function(end) {
			enders[end] = this.leave;
		}, this);
		this.options.remain.each(function(remain){
			remainers[remain] = this.remain;
		}, this);
		if (detach) {
			elements.each(function(el) {
				el.removeEvents(starters).removeEvents(enders).removeEvents(remainers);
				this.elements.erase(el);
			}, this);
		} else {
			elements.each(function(el){
				el.addEvents(starters).addEvents(enders).addEvents(remainers);
			});
			this.elements.combine(elements);
		}
		return this;
	},
	detachFrom: function(elements){
		this.attachTo(elements, true);
	},
	enter: function(e){
		this.isMoused = true;
		this.assert(e);
	},
	leave: function(e){
		this.isMoused = false;
		this.assert(e);
	},
	remain: function(e){
		if (this.active) this.enter(e);
	},
	assert: function(e){
		$clear(this.assertion);
		this.assertion = (function(){
			if (!this.isMoused && this.active) this.fireEvent('leave', e);
			else if (this.isMoused && !this.active) this.fireEvent('enter', e);
		}).delay(this.options.delay, this);
	}
});

var GrowTextarea = new Class(
{
	initialize: function(argElTextarea)
	{
		this.elTextarea = argElTextarea;
		this.intVertPadding = this.elTextarea.getStyle('padding-top').toInt()+this.elTextarea.getStyle('padding-bottom').toInt()+this.elTextarea.getStyle('border-top').toInt()+this.elTextarea.getStyle('border-bottom').toInt();
		this.objFxResizer = new Fx.Tween(this.elTextarea, {duration: 300});
		this.elTextarea.setStyle('overflow', 'hidden');
		this.intStartSize = this.elTextarea.getSize().y;

		this.elTextarea.addEvents(
		{
			'keyup': function(e) 
			{
				this.checkSize(e);
			}.bind(this),
			'change': function(e) 
			{
				this.checkSize(e);
			}.bind(this),
			'click': function(e) 
			{
				this.checkSize(e);
			}.bind(this)
		});

		
		this.checkSize();

		var self = this;
	},
	checkSize: function(event)
	{
		var intCurrentSize = this.elTextarea.getSize();
		if(intCurrentSize.y < 150)
		{
			intCurrentSize.y = 150;
		}
		var intScrollSize = this.elTextarea.getScrollSize();
		var intChecksize = (intScrollSize.y+this.intVertPadding);


		
		if(intChecksize > intCurrentSize.y)
		{
			//we are scrolling, so grow:
			this.resizeIt(intCurrentSize, intScrollSize);
		}
	},
	resizeIt: function(argIntCurrentSize, argIntScrollSize)
	{
		//console.log(argIntCurrentSize, argIntScrollSize);
		
		var intNewSize = argIntScrollSize.y;
		this.objFxResizer.start('height', intNewSize);
	}
});

var EditMessage = new Class(
{
	intContainerId: 0,
	intTopicId: 0,
	strMode: null,
	initialize: function(argStrMode, argIntContainer, argIntTopic) 
	{		
		var self = this;
		this.intContainerId = argIntContainer;
		this.intTopicId = $defined(argIntTopic) ? argIntTopic : 0;
		this.strMode = $defined(argStrMode) ? argStrMode : 'forum';
		
		$$('.message-tools a.icon-edit').addEvent('click', function(e)
		{
			e.stop();
			self.inlineEdit(this);
		});
	},
	inlineEdit: function(argElThis)
	{
		var self = this;
		var elEditButton = argElThis;
		var intMessageId = elEditButton.id.split('-').getLast();

		//get current height of post
		var elDivMessage = argElThis.getParent().getPrevious();
		var intHeight = (elDivMessage.getSize().y - 10);
		if(intHeight < 160)
		{
			intHeight = 160;
			var intLoaderTop = 59;
		}
		else
		{
			var intLoaderTop = (((elDivMessage.getSize().y - 10)/2)-16).round();
		}
		
		
		var elLoader = new Element('img',
		{
			'class': 'loader',
			'src': strVisualPath + 'loader.gif',
			'styles':
			{
				'top': intLoaderTop + 'px'
			}
		});
		elLoader.inject(elDivMessage.getParent());
		
		switch(this.strMode)
		{
			case 'news':	var strUrl = '?action=get_message&inline=1&news_id=' + this.intContainerId + '&message_id=' + intMessageId; break;
			case 'report':	var strUrl = '?action=get_message&inline=1&report_id=' + this.intContainerId + '&message_id=' + intMessageId; break;
			default:		var strUrl = '?action=get_message&inline=1&forum_id=' + this.intContainerId + '&topic_id=' + this.intTopicId + '&message_id=' + intMessageId; break;
		}
		
		var objRequest = new Request(
		{
			method: 'get',
			url: strUrl,
			onSuccess: function(data)
			{
				var strMessage = data;
				
				//clear postdiv and add edit-form
				var strOldMessage = elDivMessage.innerHTML;
				elDivMessage.innerHTML = '';
				
				var elForm = new Element('form',
				{
					'method': 'post',
					'action': '',
					'events':
					{
						'submit': function(e)
						{
							e.stop();
							elSubmit.disabled = true;
							elSubmit.removeClass('button');
							elSubmit.addClass('button_disabled');
							var elLoader = new Element('img',
							{
								'class': 'loader',
								'src': strVisualPath + 'loader.gif',
								'styles':
								{
									'top': (((elDivMessage.getSize().y - 15)/2)-16).round() + 'px'
								}
							});
							elLoader.inject(elDivMessage.getParent());
							
							var strNewMessage = elTextarea.innerHTML;
							var strFormData = elForm.toQueryString().trim();
							
							switch(self.strMode)
							{
								case 'news': 	var strSendData = strFormData + '&action=edit_reaction&inline=1&encoding=utf-8&news_id=' + self.intContainerId + '&reaction_id=' + intMessageId; break;
								case 'report': 	var strSendData = strFormData + '&action=edit_reaction&inline=1&encoding=utf-8&report_id=' + self.intContainerId + '&reaction_id=' + intMessageId; break;
								default:		var strSendData = strFormData + '&action=edit_message&inline=1&encoding=utf-8&forum_id=' + self.intContainerId + '&topic_id=' + self.intTopicId + '&message_id=' + intMessageId; break;
							}
							
							var req = new Request(
							{
								url: '?',
								data: strSendData,
								//encoding: 'ISO-8859-1',
								urlEncoded: true,
								onSuccess: function(response)
								{
									var objData = JSON.decode(response);
									var elDivTools = elEditButton.getParent();
									
									elDivMessage.innerHTML = objData.message;
									
									elForm.destroy();
									elDivMessage.highlight('#ee9217');
									
									if(elDivTools.getElement('.icon-edit-info'))
									{
										elDivTools.getElement('.icon-edit-info').set('title', 'op ' + objData.edit_date);
										elDivTools.getElement('.icon-edit-info').innerHTML = 'Gewijzigd door ' + objData.edit_user;
									}
									else
									{										
										var elEdited = new Element('a',
										{
											'class': 'icon icon-edit-info',
											'href': 'javascript:void(0)',
											'title': 'op ' + objData.edit_date,
											'html': 'Gewijzigd door ' + objData.edit_user
										});
										
										elEdited.inject(elEditButton, 'after');
									}
									elLoader.destroy();
								}
							}).send();
						}
					}
				});
				
				var elTextarea = new Element('textarea',
				{
					'name': 'message',
					'html': strMessage,
					'styles': {
						'height': intHeight + 'px'
					},
					'tabindex': 1
				});
				
				var elUl = new Element('ul',
				{
					'class': 'bbtoolbar'
				});
				
				var elSmileysLi = new Element('li',
				{
					'class': 'smileys'
				});
				
				var elSmileyAnchor = new Element('a',
				{
					'class': 'smiley-icon',
					'href': '#'
				});
				
				var elSubmit = new Element('input',
				{
					'class': 'button',
					'type': 'submit',
					'value': 'wijzig bericht',
					'tabindex': 2
				});
				
				var elCancel = new Element('a',
				{
					'class': 'cancel',
					'href': '#',
					'html': 'annuleer',
					'events':
					{
						'click': function(e)
						{
							e.stop();
							elForm.destroy();
							elDivMessage.innerHTML = strOldMessage;
						}
					},
					'tabindex': 3
				});
				
				elTextarea.inject(elForm);
				elUl.inject(elForm);
				elSmileysLi.inject(elUl);
					elSmileysLi.inject(elUl);
						elSmileyAnchor.inject(elSmileysLi);
						$('smileys').clone().inject(elSmileysLi);
				elSubmit.inject(elForm);
				elForm.appendText('of ');
				elCancel.inject(elForm);
				elForm.inject(elDivMessage);
				
				elTextarea.focus();
				elLoader.destroy();
				
				var objEditor = new BBEditor(elTextarea);
				//var objTextareaGrow = new GrowTextarea(elTextarea);
				
			}.bind(argElThis)
		});

		objRequest.send();
	}
});


var NewMessage = new Class(
{
	initialize: function(argStrOrder) 
	{		
		$('message_form').addEvent('submit', function(e)
		{
			e.stop();
			
			$('message_form').getLast('input').disabled = true;
			$('message_form').getLast('input').removeClass('button');
			$('message_form').getLast('input').addClass('button_disabled');
			var elLoader = new Element('img',
			{
				'class': 'loader',
				'src': strVisualPath + 'loader.gif'
			});
			elLoader.inject($('message_form').getParent());
			
			var strOrder = argStrOrder;
			var strFormData = this.toQueryString().trim();
			var strSendData = strFormData + '&sort_order=' + strOrder + '&inline=1&encoding=utf-8';
			//var objScroll = new SmoothScroll({ duration:1000 }, window);
					
			var req = new Request(
			{
				url: '?',
				data: strSendData,
				//encoding: 'ISO-8859-1',
				onSuccess: function(response)
				{
					var objData = JSON.decode(response);
					
					if(objData.error)
					{
						//message
						//captcha
						//author_name
						var strError = 'Een of meerdere velden zijn onjuist ingevuld.';
						
						var elErrorDiv = new Element('div',
						{
							'class': 'message-error',
							'html': strError
						});
						
						elErrorDiv.inject($('message_form').getParent().getParent(), 'top');
					}
					else
					{
						//guest user
						if(objData.user_id == 0)
						{
							var elMessageDiv = new Element('div',
							{
								'class': 'message'
							});
							
							var elUserDiv = new Element('div',
							{
								'class': 'message-user'
							});
							
							var elUserImage = new Element('img',
							{
								'class': 'user_image',
								'src': strVisualPath + 'user_image_border.png',
								'styles':
								{
									'background-image': 'url(' + objData.user_image + ')'
								}
							});
							
							var elPostDiv = new Element('div',
							{
								'class': 'message-post'
							});
							
							var elPostMetaDiv = new Element('div',
							{
								'class': 'message-meta',
								'html': ' · ' + objData.entered_date
							});
							
							var elAuthorAnchor = new Element('a',
							{
								'href': objData.user_link,
								'name': objData.message_id,
								'html': objData.user_name
							});
							
							var elPostContentDiv = new Element('div',
							{
								'class': 'message-content',
								'html': objData.message
							});
							
							var elPostTools = new Element('div',
							{
								'class': 'message-tools'
							});
							
							var elQuoteAnchor = new Element('a',
							{
								'class': 'icon icon-quote',
								'href': objData.quote_link,
								'html': 'Quote'
							});
							
							var elClearDiv = new Element('div',
							{
								'class': 'clear'
							});
							
							
							//DESC = newest first; ASC = oldest first
							strOrder == 'ASC' ? elMessageDiv.inject($('message_form').getParent().getParent(), 'before') : elMessageDiv.inject($('message_form').getParent().getParent(), 'after');
								elUserDiv.inject(elMessageDiv);
									elUserImage.inject(elUserDiv);
								elPostDiv.inject(elMessageDiv);
									elPostMetaDiv.inject(elPostDiv);
										elAuthorAnchor.inject(elPostMetaDiv, 'top');
									elPostContentDiv.inject(elPostDiv);
									elPostTools.inject(elPostDiv);
										elQuoteAnchor.inject(elPostTools);
						}
						else
						{
							//logged in user
							var elMessageDiv = new Element('div',
							{
								'class': 'message'
							});
							
							var elUserDiv = new Element('div',
							{
								'class': 'message-user'
							});
							
							var elUserImage = new Element('img',
							{
								'class': 'user_image',
								'src': strVisualPath + 'user_image_border.png',
								'styles':
								{
									'background-image': 'url(' + objData.user_image + ')'
								}
							});
							
							var elPostDiv = new Element('div',
							{
								'class': 'message-post'
							});
							
							var elPostMetaDiv = new Element('div',
							{
								'class': 'message-meta',
								'html': ' · ' + objData.entered_date
							});
							
							var elAuthorAnchor = new Element('a',
							{
								'href': objData.user_link,
								'name': objData.message_id,
								'html': objData.user_name
							});
							
							var elPostContentDiv = new Element('div',
							{
								'class': 'message-content',
								'html': objData.message
							});
							
							var elPostTools = new Element('div',
							{
								'class': 'message-tools'
							});
							
							var elQuoteAnchor = new Element('a',
							{
								'class': 'icon icon-quote',
								'href': objData.quote_link,
								'html': 'Quote'
							});
							
							var elEditAnchor = new Element('a',
							{
								'class': 'icon icon-edit',
								'href': objData.edit_link,
								'id': 'edit-' + objData.message_id,
								'html': 'Bewerk',
								'events':
								{
									'click': function(e)
									{
										e.stop();
										objEdit.inlineEdit(this);
									}
								}
							});
							
							var elClearDiv = new Element('div',
							{
								'class': 'clear'
							});
							
							//DESC = newest first; ASC = oldest first
							strOrder == 'ASC' ? elMessageDiv.inject($('message_form').getParent().getParent(), 'before') : elMessageDiv.inject($('message_form').getParent().getParent(), 'after');
								elUserDiv.inject(elMessageDiv);
									elUserImage.inject(elUserDiv);
								elPostDiv.inject(elMessageDiv);
									elPostMetaDiv.inject(elPostDiv);
										elAuthorAnchor.inject(elPostMetaDiv, 'top');
									elPostContentDiv.inject(elPostDiv);
									elPostTools.inject(elPostDiv);
										elQuoteAnchor.inject(elPostTools);
										elEditAnchor.inject(elPostTools);
								elClearDiv.inject(elMessageDiv);
						}
						
						//scroll to posted message
						//objScroll.toElement(elAuthorAnchor);
						//window.location = window.location.pathname + window.location.search + '#' + objData.message_id;
						
						elMessageDiv.highlight('#ee9217');
						elLoader.destroy();
						$('message_form').getLast('input').removeClass('button_disabled');
						$('message_form').getLast('input').addClass('button');

						$('message_form').getLast('input').disabled = false;
						$('message_form').reset();
						if(strOrder != 'ASC')
						{
							$('message_form').getParent().getParent().setStyle('display','none');
						}
					}
				}
			}).send();
		});
	}
});

var QuoteMessage = new Class(
{
	intContainerId: 0,
	intTopicId: 0,
	strMode: null,
	initialize: function(argStrMode, argIntContainer, argIntTopic) 
	{		
		var self = this;
		var intContainerId = argIntContainer;
		var intTopicId = argIntTopic;
		var strMode = $defined(argStrMode) ? argStrMode : 'forum';
		
		$$('a.icon-quote').addEvent('click', function(e)
		{
			e.stop();
			var intMessageId = this.id.split('-').getLast();
			
			if($('add_message'))
			{
				$('message_form').getParent().getParent().setStyle('display', 'block');
			}
			
			switch(strMode)
			{
				case 'news':	var strUrl = '?action=get_quote&inline=1&news_id=' + intContainerId + '&quote_id=' + intMessageId; break;
				case 'report':	var strUrl = '?action=get_quote&inline=1&report_id=' + intContainerId + '&quote_id=' + intMessageId; break;
				default:		var strUrl = '?action=get_quote&inline=1&forum_id=' + intContainerId + '&topic_id=' + intTopicId + '&quote_id=' + intMessageId; break;
			}			
			
			var objRequest = new Request(
			{
				method: 'get',
				url: strUrl,
				onSuccess: function(data)
				{
					var strMessage = data;
					
					$('message_form').getElement('textarea').insertAtCursor(data, false);
					
					//objScroll.toElement($('message_form'));
					window.location = window.location.pathname + window.location.search + '#form';
					$('message_form').getElement('textarea').focus();
				}
			});
			objRequest.send();
		});
	}
});

var BBEditor = new Class(
{
	initialize: function(argElTextarea) 
	{
		//bbcode editor NAWTE
		var objNawte = new nawte(argElTextarea, argElTextarea.getNext('ul'), 
		{
			dispatchChangeEvent: false, 
			changeEventDelay: 150, 
			interceptTabs: false
		});
		
		//smileys
		argElTextarea.getNext('ul').getElement('a.smiley-icon').addEvent('click', function(e)
		{
			e.stop();
			this.getNext().toggleClass('open');
		});
		
		$$('a.smiley').addEvent('click', function(e)
		{
			e.stop();
			objNawte.insert(' ' + this.get('rel') + ' ', 'after', true);
		});
		
		//bold
		objNawte.addFunction('Vet', function() 
		{
			var selection = this.getSelection();
			this.replaceSelection('[b]' + selection + '[/b]');
		},
		{
			'title': 'Maak de tekst vetgedrukt',
			'class': 'bold'
		});
		
		//italic
		objNawte.addFunction('Schuin', function() 
		{
			var selection = this.getSelection();
			this.replaceSelection('[i]' + selection + '[/i]');
		},
		{
			'title': 'Maak de tekst schuingedrukt',
			'class': 'italic'
		});
		
		//underline
		objNawte.addFunction('Onderstreept', function() 
		{
			var selection = this.getSelection();
			this.replaceSelection('[u]' + selection + '[/u]');
		},
		{
			'title': 'Maak de tekst onderstreept',
			'class': 'underline'
		});
		
		//strikethrough
		objNawte.addFunction('Doorstreept', function() 
		{
			var selection = this.getSelection();
			this.replaceSelection('[s]' + selection + '[/s]');
		},
		{
			'title': 'Maak de tekst doorstreept',
			'class': 'strike'
		});
		
		//insert link
		objNawte.addFunction('Link', function() 
		{
			var selection = this.getSelection();  
			var response = prompt('Voer de link in','');  
			if(response === null)  
				return;
			if(!response.contains('http://'))
			{
				if(!response.contains('https://'))
				{
					response = 'http://' + response;
				}
			}
			this.replaceSelection('[url=' +  (response == '' ? 'http://link_url/' : response) + ']' + (selection == '' ? (response == '' ? 'http://link_url/' : response) : selection) + '[/url]');
		},
		{
			'title': 'Voeg een link toe',
			'class': 'link'
		});
		
		//insert list
		objNawte.addFunction('Lijst', function() 
		{
			selection = this.getSelection();
			if (selection == '') 
			{
				this.replaceSelection('[ul]\n\t[*]Item 1[/*]\n\t[*]Item 2[/*]\n[/ul]');
			}
			else 
			{
				this.processEachLine(function(line) 
				{
					newline = '  [*]' + line + '[/*]';
					return newline;
				}, false);
		
				this.insert('[ul]\n', 'before', false);
				this.insert('\n[/ul]', 'after', true);
			}
		},
		{
			'title': 'Voeg een lijst in',
			'class': 'list'
		});
	}
});

var Gallery = new Class(
{
	elPrevButton: null,
	elNextButton: null,
	intContainerId: null,
	strContainerKey: null,
	intPrevId: null,
	intNextId: null,
	intPhotoId: null,
	initialize: function(argIntContainerId, argIntPhotoId, argStrMode)
	{
		this.elPrevButton = $('photo_nav_left');
		this.elNextButton = $('photo_nav_right');
		this.intPrevId = this.elPrevButton!==null ?  this.elPrevButton.href.split('photo_id=').getLast() : 0;
		this.intNextId = this.elNextButton!==null ? this.elNextButton.href.split('photo_id=').getLast() : 0;
		this.intContainerId = argIntContainerId;
		this.strContainerKey = (argStrMode===null||argStrMode=='album') ? 'album_id' : 'user_id';
		this.intPhotoId = argIntPhotoId;
		
		this.checkHash.periodical(250, this);
		
		document.addEvent('keydown', function(event)
		{
			//event.stop();
			
			//arrow left
			if(!blnFocus)
			{
				if(event.code == 37)
				{
					if(this.intPrevId > 0)
					{
						this.showPhoto(this.intPrevId);
					}
					else
					{
						roar.alert('Fotoalbum', 'Je bent aan het begin van het foto-album.', 
						{
						   'icon': 'delete.png'
						});
					}
				}
				
				//arrow right
				if(event.code == 39)
				{
					if(this.intNextId > 0)
					{
						this.showPhoto(this.intNextId);
					}
					else
					{
						roar.alert('Fotoalbum', 'Je hebt het einde van het foto-album bereikt.', 
						{
						   'icon': 'delete.png'
						});
					}
				}
			}
		}.bind(this));
		
		
		if(this.elPrevButton)
		{
			//previous photo
			this.elPrevButton.addEvent('click', function(e)
			{
				e.stop();
				this.showPhoto(this.intPrevId);
			}.bind(this));
		}

		if(this.elNextButton)
		{
			//next photo
			this.elNextButton.addEvent('click', function(e)
			{
				e.stop();
				this.showPhoto(this.intNextId);
			}.bind(this));
		}
		
		if($('actions'))
		{
			//link user (self) to photo
			$('add_me').addEvent('click', function(e)
			{
				e.stop();
	
				var req = new Request(
				{
					url: '?',
					data: '&action=add_me&inline=1&encoding=utf-8&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId,
					onSuccess: function(response)
					{
						var objData = JSON.decode(response);
						
						roar.alert(objData.title, objData.message, 
						{
						   'icon': objData.icon
						});
					}
				}).send();
			}.bind(this))
			//end link user (self) to photo
			
			//link user to photo
			$('add_user').addEvent('click', function(e)
			{
				e.stop();
				
				if(!$('add_user_input'))
				{
					//$('add_user_notice')!==null ? $('add_user_notice').destroy() : null;
					var elForm = new Element('form',
					{
						'action': '?action=add_users&inline=1',
						'method': 'post',
						'id': 'form_add_user',
						'events':
						{
							'submit': function(e)
							{
								e.stop();
								
								elSubmit.src = strVisualPath + 'loader_small.gif';
								var strFormData = elForm.toQueryString().trim();
								var strSendData = strFormData + '&action=add_users&inline=1&encoding=utf-8&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId;
								
								var req = new Request(
								{
									url: '?',
									data: strSendData,
									onSuccess: function(response)
									{
										var objData = JSON.decode(response);
										
										elForm.destroy();
										
										objData.each(function(arrData)
										{
											roar.alert(arrData.name, arrData.message, { 'icon': arrData.icon });
										});
									}
								}).send();
							}.bind(this)
						}
					});
					
					var elInput = new Element('input',
					{
						'type': 'text',
						'class': 'autocomplete',
						'name': 'users',
						'id': 'add_user_input'
					});
					
					var elSubmit = new Element('input',
					{
						'class': 'submit',
						'type': 'image',
						'src': strVisualPath + 'icon/group_link.png'
					});
					
					elForm.inject($('add_user'), 'after');
					elInput.inject(elForm);
					elSubmit.inject(elForm);
					
					var objTextbox = new TextboxList(elInput, 
					{
						unique: true,
						plugins: 
						{
							autocomplete: 
							{
								minLength: 3,
								onlyFromValues: true,
								queryRemote: true,
								remote: 
								{
									url: '?action=search_album&inline=1',
									loadPlaceholder: 'Laden...'
								},
								placeholder: false
							}
						}
					});
					objTextbox.focusLast();
					blnFocus = true;
					objTextbox.addEvents(
					{
						'focus': function()
						{
							blnFocus = true;
						},
						'blur': function()
						{
							blnFocus = false;
						}
					});
				}
			}.bind(this));
			//end link user to photo
			
			//link title to photo
			$('add_title').addEvent('click', function(e)
			{
				e.stop();
				
				if(!$('add_title_input'))
				{
					var elForm = new Element('form',
					{
						'action': '?action=add_title&inline=1',
						'method': 'post',
						'id': 'form_add_title',
						'events':
						{
							'submit': function(e)
							{
								e.stop();
								
								/*var elLoader = new Element('img',
								{
									'class': 'loader',
									'src': strVisualPath + 'loader.gif',
									'styles':
									{
										'top': (((elDivMessage.getSize().y - 15)/2)-16).round() + 'px'
									}
								});
								elLoader.inject(elDivMessage.getParent());*/
								elSubmit.src = strVisualPath + 'loader_small.gif';
								var strFormData = elForm.toQueryString().trim();
								var strSendData = strFormData + '&action=add_title&inline=1&encoding=utf-8&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId;
								
								var req = new Request(
								{
									url: '?',
									data: strSendData,
									onSuccess: function(response)
									{
										var objData = JSON.decode(response);
										
										elForm.destroy();
										
										roar.alert(objData.title, objData.message, 
										{
										   'icon': objData.icon
										});
									}
								}).send();
							}.bind(this)
						}
					});
					
					var elInput = new Element('input',
					{
						'type': 'text',
						'class': 'default',
						'name': 'title',
						'id': 'add_title_input',
						'events':
						{
							'focus': function()
							{
								blnFocus = true;
							},
							'blur': function()
							{
								blnFocus = false;
							}
						}
					});
					
					var elSubmit = new Element('input',
					{
						'class': 'submit',
						'type': 'image',
						'src': strVisualPath + 'icon/user_comment.png'
					});
					
					elForm.inject($('add_title'), 'after');
					elInput.inject(elForm);
					elSubmit.inject(elForm);
					elInput.focus();
				}
			}.bind(this));
			//end link title to photo
		}
		//end actions check
	},
	showPhoto: function(argIntPhotoId)
	{	
		var elLoader = new Element('img',
		{
			'id' : 'loader',
			'class' : 'loader',
			'src' : strVisualPath + 'loader.gif',
			'styles':
			{
				//'top': ($('gallery_photo').getParent().getSize().y/2)-16 + 'px',
				//'left': ($('gallery_photo').getParent().getSize().x/2)-16 + 'px',
				'top': '48%',
				'left': '48%'
			}
		});
		
		elLoader.inject($('gallery_photo').getParent());

		var intPhotoId = argIntPhotoId;
		
		var objRequest = new Request(
		{
			url: '?action=jump_photo&inline=1&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + intPhotoId,
			method: 'get',
			link: 'cancel',
			onSuccess: function(data)
			{
				var objData = JSON.decode(data);
				this.intPrevId = objData.prev_id;
				this.intNextId = objData.next_id;
				this.intPhotoId = objData.id;
				
				window.location = window.location.pathname + window.location.search + '#' + objData.id;
				
				//wrapper div
				$('gallery_photo').getParent().setStyles(
				{
					'width': objData.width,
					'height': objData.height
				});				
				
				//the image
				$('gallery_photo').alt = objData.title;
				$('gallery_photo').setStyles(
				{
					'width': objData.width,
					'height': objData.height,
					'background-image': 'url(' + objData.url + ')'
				});
				
				//border
				$('gallery_photo').getElement('.photo_border').setStyles(
				{
					'background-image'	: 'url(' + objData.border + ')',
					'width'				: objData.width,
					'height'			: objData.height
				});
				
				//title
				$('gallery_photo').getParent().getNext().innerHTML = objData.title;
				
				//photo_nav div wrapper
				var elNav = $('gallery_photo').getElement('.photo_nav');
				elNav.setStyles(
				{
					'width': objData.width,
					'height': objData.height
				});
				
				//empty photo_nav
				elNav.innerHTML = '';
				
				//photo_nav anchors
				if(this.intPrevId > 0)
				{
					var elPrev = new Element('a',
					{
						'id': 'photo_nav_left',
						'href': '?' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPrevId,
						'events':
						{
							'click': function(e)
							{
								e.stop();
								this.showPhoto(this.intPrevId);
							}.bind(this)
						}
					});
					
					elPrev.inject(elNav);
				}
				
				if(this.intNextId > 0)
				{
					var elNext = new Element('a',
					{
						'id': 'photo_nav_right',
						'href': '?' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intNextId,
						'events':
						{
							'click': function(e)
							{
								e.stop();
								this.showPhoto(this.intNextId);
							}.bind(this)
						}
					});
					
					elNext.inject(elNav);
				}				
				
				elLoader.destroy();
				
				if($('actions'))
				{
					//replace album_id and photo_id in action href's
					$('add_me').href = '?action=add_me&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId;
					$('add_user').href = '?action=add_user&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId;
					$('add_title').href = '?action=add_title&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId;
					$('addtobasket').href = '?shop_action=addtobasket&' + this.strContainerKey + '=' + this.intContainerId + '&photo_id=' + this.intPhotoId;
				}
				
				//replace photo details
				$('album_title').innerHTML = objData.album;
				//$('album_title').href = '?album_id=' + objData.album_id + objData.album_page; //album_page = photo-hash
				$('album_title').href = objData.album_url;
				$('photo_date').innerHTML = objData.date;
				$('photo_views').innerHTML = objData.views + ' views';
				$('photo_photographer').innerHTML = objData.photographer;
				
				if(objData.owners.length > 0)
				{
					if($('photo_owners'))
					{
						$('photo_owners').innerHTML = '';
						objData.owners.each(function(strHtml)
						{
							$('photo_owners').innerHTML += strHtml + '<br />';
						});	
					}
					else
					{
						var elOwners = new Element('span',
						{
							'class': 'icon icon-group',
							'id': 'photo_owners'
						});
						
						objData.owners.each(function(strHtml)
						{
							elOwners.innerHTML += strHtml + '<br />';
						});	
						elOwners.inject($('details'));					
					}
				}
				else
				{
					if($('photo_owners'))
					{
						$('photo_owners').destroy();
					}
				}
			}.bind(this)
		}).send();
	},
	checkHash: function()
	{
		var strHash = window.location.hash.split('#').getLast();
		
		if(strHash != this.intPhotoId && strHash.length > 0)
		{
			this.showPhoto(strHash);
		}
	}
});

var ForumSettings = new Class(
{
	intialize: function()
	{
		$$('a.toggle-visibilty').addEvent('click', function(e)
		{
			var elButton = this;
			var intForumId = this.get('rel').split('-').getLast();
			
			var objRequest = new Request(
			{
				method: 'get',
				url: '?action=toggle_visibility&inline=1&forum_id=' + intForumId,
				onSuccess: function(data)
				{
					var objData = JSON.decode(data);
					elButton.getElement('img').set('src', objData.border_image);
					elButton.getElement('img').highlight('#ee9217');
				}
			}).send();
		});
	}
});