function galleryInit() {
	initLoginButton();
	initNavigation();
}
if (!window.parent || window.parent == window) {
	Event.observe(window, 'load', galleryInit);
}

var loginPopupEnabled = true;
var loginPopup;

var loginButtons = new Array();
function registerLoginButton(buttonId) {
	if (loginPopupEnabled && $(buttonId)) {
		loginButtons.push(buttonId);
		Event.observe(buttonId, "click", loadLoginForm);
	}
}

function initLoginButton() {
	registerLoginButton('login_button');
}
function loadLoginForm() {
	var loginForm = $('login_form_dialog');
	if (loginForm.innerHTML == '') {
		new Ajax.Updater(loginForm, '/gallery/includes/gallery/login_inc.jsp',
		{
			onComplete: function() {
				for (var i = 0; i < loginButtons.length; i++) {
					var buttonId = loginButtons[i];
					Event.stopObserving(buttonId, "click", loadLoginForm);
				}
				showLoginPopup();
			},
			onFailure: function(transport) {
				alert(transport.statusText);
			}
		});
	}
}
function showLoginPopup() {
	if (!loginPopup) {
		loginPopup = new Popup($('login_form_dialog'), $('login_button'), {modal:true});
		for (var i = 0; i < loginButtons.length; i++) {
			var buttonId = loginButtons[i];
			if (buttonId != 'login_button') {
				Event.observe(buttonId, "click", showLoginPopup);
			}
		}
	}
	loginPopup.show();
	// Timeout, da sonst Feld noch nicht sichtbar und Fokus nicht funktioniert
	window.setTimeout(focusLoginUsernameField, 500);
}
function focusLoginUsernameField() {
	$('username').focus();
}

function initNavigation() {
	if (window.attachEvent || navigator.appVersion.indexOf('iphone') != -1) {	
		var sfEls = document.getElementById("navi").getElementsByTagName("LI");
		for (var i=0; i<sfEls.length; i++) {
			var elem = sfEls[i];
			var hoverFunction = function() {
				this.className += " sfhover";
			};
			elem.onmouseover = hoverFunction;

			if (elem.ontouchstart) {
				elem.addEventListener("touchstart", hoverFunction, false);
			}
			var blurFunction = function() {
				this.className = elem.className.replace(new RegExp(" sfhover\\b"), "");
			};
			elem.onmouseout = blurFunction;
			if (elem.ontouchend) {
				elem.addEventListener("touchend", blurFunction, false);
			}
		}
	}
}

function toggleBlockContent(toggleLink, nodeId, minimizeMessage, maximizeMessage) {
	try {
		Effect.toggle(nodeId, 'slide', {duration:0.5});
	}
	catch (e) {
		// Fehler kann auftreten, wenn im Element keine Unterelemente vorhanden sind.
		Element.toggle(nodeId);
	}

	if ($(nodeId).visible()) { //Element.visible($(nodeId)
		toggleLink.title = maximizeMessage;
		toggleLink.childNodes[0].innerHTML = maximizeMessage;
		toggleLink.removeClassName('minimizeButton');
		toggleLink.addClassName('maximizeButton');
	}
	else {
		toggleLink.title = minimizeMessage;
		toggleLink.childNodes[0].innerHTML = minimizeMessage;
		toggleLink.removeClassName('maximizeButton');
		toggleLink.addClassName('minimizeButton');
	}
}

function deleteDocument(documentId) {
	var confirmed = confirm("Dokument wirklich löschen?");
	if (!confirmed) {
		return;
	}
	new Ajax.Request('IMX_ACTION/DeleteAction',
	{
		parameters: {mainId: documentId},
		onSuccess: function(transport) {
			var result = transport.headerJSON;
			var message = undefined;
			if (result.success) {
				message = result.success;
			}
			else if (result.error) {
				message = result.error;
			}
			if (message) {
				var messageDiv = $('messagePopup');
				if (!messageDiv) {
					messageDiv = document.createElement('div');
					messageDiv.id = 'messagePopup';
					$(messageDiv).addClassName('popup');
					document.body.appendChild(messageDiv);
				}
				messageDiv.update('');

				var p = document.createElement('p');
				p.appendChild(document.createTextNode(message));
				messageDiv.appendChild(p);

				p = document.createElement('p');
				var link = document.createElement("a");
				$(link).addClassName('popup_closebox');
				link.href = "index.jsp"; // Relativer Link unschön
				var linkText = document.createTextNode('Zur Startseite');
				link.appendChild(linkText);
				p.appendChild(link);
				messageDiv.appendChild(p);

				new Popup(messageDiv, null, {modal:true});
				messageDiv.popup.show();
			}
			else {
				alert(Object.toJSONString(result));
			}
		},
		onFailure: function(transport) {
			alert("Fehler: " + Object.toJSON(transport));
		}
	});
}
function expandItem(item) {
	item = $(item);
	item.addClassName('expanded');
}
function collapseItem(item) {
	item = $(item);
	item.removeClassName('expanded');
}
var imageHovers = new Hash();
function addHoverImage(imageId, hoverUrl) {
	var img = $(imageId);
	if (!img) {
		return;
	}
	imageHovers.set(img.id, hoverUrl);
	// Bild vorladen
	var image = new Image();
	image.src = hoverUrl;

	Event.observe(imageId, "mouseover", function() {
		replaceHoverImage(imageId);
	});
	Event.observe(imageId, "mouseout", function() {
		replaceHoverImage(imageId);
	});
}
function replaceHoverImage(imageId) {
	var img = $(imageId);
	var oldSrc = img.src;
	img.src = imageHovers.get(imageId);
	imageHovers.set(imageId, oldSrc);
}

var ippPopups = {};
function registerIppRunButton(buttonId, url) {
	var button = $(buttonId);
	if (!button) {
		return;
	}
	Event.observe(window, 'load', function() {
		ippPopups[buttonId] = new Popup('ipp_popup', buttonId, {modal:true});
	});
	Event.observe(buttonId, "click", function() {
		loadProcessIntoIppPopup(url);
	});
}
function setIppFormAction(url) {
	var form = document.getElementById('run_process_form');
	if (form) {
		form.action = url;
	}
	else {
		var ippIFrame = document.getElementById('ipp_popup_frame');
		if (ippIFrame) {
			ippIFrame.src = url;
		}
	}
}
function loadProcessIntoIppPopup() {
	if (loadProcessIntoIppPopup.arguments) {
		setIppFormAction(loadProcessIntoIppPopup.arguments[0]);
	}
	var form = document.getElementById('run_process_form');
	if (form) {
		form.setAttribute('target', 'ipp_popup_frame');
		form.submit();
	}
}
