/* ************** Copyright 2009 Die Mimen e.V. ************************** */
/* */
/* ************** This document defines functions ************************** */
/* ************** in the JavaScript-language, which are ******************** */
/* ************** used on the web-site diemimende ****************** */
/* */
/* ************** It is not allowed to copy this *************************** */
/* ************** document, or fragments of it, **************************** */
/* ************** without the written permission *************************** */
/* ************** of Die Mimen e.V.. ************************************* */
/* */
/* ************** JavaScript File (v1.0) : BEGIN *************************** */

onload = function() {
	completeURL();
	addSessionParameterToLinks();
	addMaintenanceKeyToLinks();
};

function openPopup(url, windowHeight) {
	var windowWidth = 500;
	var leftGap = (screen.width - windowWidth) / 2;
	var topGap = (screen.height - windowHeight) / 2;

	var windowName = "popup";
	var windowProperties = "width=" + windowWidth + ",height=" + windowHeight
			+ ",left=" + leftGap + ",top=" + topGap + ",dependent=yes,scrollbars=yes";

	var popupWindow = open(url, windowName, windowProperties);
	popupWindow.focus();
}

function openLink(windowUrl) {
	open(windowUrl, "_blank", "");
}

function insBBCode(id, code) {
	insertAtCursor(id, '[' + code + ']','[/' + code + ']');
}

function insertAtCursor(element, start, end) {
    element = document.getElementById(element);

    if (document.selection) {
	element.focus();
		caretPos = document.selection.createRange().duplicate();

		caretPos.text = start + caretPos.text + end;

		if (caretPos.text.length == 0) {
			caretPos.moveStart("character", -end.length);
			caretPos.moveEnd("character", -end.length);
			caretPos.select();
		}

		element.focus(caretPos);
    } else if (element.selectionStart || element.selectionStart == '0') {
        element.focus();
    
        var startPos = element.selectionStart;
        var endPos = element.selectionEnd;
		var preTxt = element.value.substring(0, startPos);
		var selTxt = element.value.substring(startPos, endPos) ;
		var follTxt = element.value.substring(endPos, element.value.length);
		var scrollPos = element.scrollTop;

        element.value = preTxt + start + selTxt + end + follTxt;

		if (element.setSelectionRange) {
			if (selTxt.length == 0) {
				element.setSelectionRange(startPos + start.length, startPos + start.length);
			} else {
				element.setSelectionRange(startPos, startPos + start.length + selTxt.length + end.length);
			}

			element.focus();
		}

		element.scrollTop = scrollPos;
    } else {
        element.value += start + end;
    }
}

function addSessionParameterToLinks() {
	var userInfo = document.getElementById("userInfo");

	if (userInfo != null) {
		var sessionId = String();
		var pageName = String();
		var search = window.location.search.substring(1);
		search = search.split("&");
		sessionId = "";
		pageName = "";
	
		for (var i = 0; i < search.length; i++) {
			var parameter = String();
			var keyValue = Array();
			parameter = search[i];
			keyValue = parameter.split("=");
	
			if (keyValue.length == 2) {
				if (keyValue[0] == "session") {
					sessionId = keyValue[1];
				} else if (keyValue[0] == "page") {
					pageName = keyValue[1];
				}
			}
		}
	
		if (pageName !== "logout") {
			if (sessionId.length > 0) {
				var links = document.getElementsByTagName("A");
		
				for (var i = 0; i < links.length; i++) {
					var host = window.location.host;
					var href = String();
					href = links[i].getAttribute("href", 0);

					if (href.indexOf("session=" + sessionId) == -1
							&& ((href.indexOf(host) != -1 || href.indexOf("./") == 0
								|| href.indexOf("/") == 0 || (href.indexOf("http://") == -1
								&& href.indexOf("www") == -1)) && href.indexOf(".htm") == -1)
							&& href.indexOf(".jpg") == -1 && href.indexOf(".JPG") == -1
							&& href.indexOf(".png") == -1 && href.indexOf(".PNG") == -1
							&& href.indexOf(".gif") == -1 && href.indexOf(".GIF") == -1
							&& href.indexOf(".zip") == -1 && href.indexOf(".ZIP") == -1
							&& href.indexOf(".pdf") == -1 && href.indexOf(".PDF") == -1
							&& href.indexOf("page=logout") == -1 && href.indexOf("mailto:") == -1) {
						links[i].setAttribute("href", href + "&session=" + sessionId);
					}
				}
			}
		}
	}
}

function addMaintenanceKeyToLinks() {
	var sessionId = String();
	var pageName = String();
	var maintenanceKey = "";
	var isSetDeactiveFlag = false;
	var search = window.location.search.substring(1);
	search = search.split("&");

	for (var i = 0; i < search.length; i++) {
		var parameter = String();
		var keyValue = Array();
		parameter = search[i];
		keyValue = parameter.split("=");

		if (keyValue.length == 2) {
			if (keyValue[0] == "maintenanceKey") {
				maintenanceKey = keyValue[1];
			} else if (keyValue[0] == "deactivate") {
				isSetDeactiveFlag = true;
			}
		}
	}

	if (maintenanceKey.length > 0 && !isSetDeactiveFlag) {
		var links = document.getElementsByTagName("A");

		for (var i = 0; i < links.length; i++) {
			var host = window.location.host;
			var href = String();
			href = links[i].getAttribute("href", 0);

			if (href.indexOf("maintenanceKey=" + maintenanceKey) == -1
					&& ((href.indexOf(host) != -1 || href.indexOf("./") == 0
						|| href.indexOf("/") == 0 || (href.indexOf("http://") == -1
						&& href.indexOf("www") == -1)) && href.indexOf(".htm") == -1)
					&& href.indexOf(".jpg") == -1 && href.indexOf(".JPG") == -1
					&& href.indexOf(".png") == -1 && href.indexOf(".PNG") == -1
					&& href.indexOf(".gif") == -1 && href.indexOf(".GIF") == -1
					&& href.indexOf(".zip") == -1 && href.indexOf(".ZIP") == -1
					&& href.indexOf(".pdf") == -1 && href.indexOf(".PDF") == -1
					&& href.indexOf("mailto:") == -1) {
				links[i].setAttribute("href", href + "&maintenanceKey=" + maintenanceKey);
			}
		}

		var forms = document.getElementsByTagName("FORM");

		for (var i = 0; i < forms.length; i++) {
			var action = String();
			action = forms[i].getAttribute("action", 0);

			if (action.indexOf("maintenanceKey=" + maintenanceKey) == -1) {
				forms[i].setAttribute("action", action + "&maintenanceKey=" + maintenanceKey);
			}
		}
	}
}

function completeURL() {
	var links = document.getElementsByTagName("A");

	for (var i = 0; i < links.length; i++) {
		var href = String();
		href = links[i].getAttribute("href", 0);

		if (href.indexOf("www") == 0 && href.indexOf("http://") == -1) {
			links[i].setAttribute("href", "http://" + href);
		}
	}
}

function toggleMaintenance(formId, maintenanceKey) {
	var form = document.getElementById(formId);
	var maintenanceActiveInput = document.getElementsByName("maintenance_active");
	var maintenanceKeyInput = document.getElementById("maintenanceKey");
	var isSetActive = false;

	if (form != null && maintenanceActiveInput != null && maintenanceActiveInput.length == 2) {
		for (var i = 0; i < maintenanceActiveInput.length; i++) {
			if (maintenanceActiveInput[i].value == "true"
				&& maintenanceActiveInput[i].checked) {
				isSetActive = true;
			}
		}

		var action = form.getAttribute("action", 0);
		var search = action.split("&");
		var existingMaintenanceKey = String("");
		var changedMaintenanceKey = String("");
		var isSetDeactiveFlag = false;

		if (maintenanceKeyInput != null) {
			changedMaintenanceKey = maintenanceKeyInput.value;
		}

		if (changedMaintenanceKey != "" && changedMaintenanceKey != maintenanceKey) {
			maintenanceKey = changedMaintenanceKey;
		}

		for (var i = 0; i < search.length; i++) {
			var parameter = String();
			var keyValue = Array();
			parameter = search[i];
			keyValue = parameter.split("=");

			if (keyValue.length == 2) {
				if (keyValue[0] == "maintenanceKey") {
					existingMaintenanceKey = keyValue[1];
				} else if (keyValue[0] == "deactivate") {
					isSetDeactiveFlag = true;
				}
			}
		}

		if (existingMaintenanceKey != "" && existingMaintenanceKey != maintenanceKey) {
			action = action.replace("maintenanceKey=" + existingMaintenanceKey, "maintenanceKey=" + maintenanceKey);
			form.setAttribute("action", action);
		} else if (existingMaintenanceKey == "") {
			action = action + "&maintenanceKey=" + maintenanceKey;
			form.setAttribute("action", action);
		}

		if (!isSetActive && !isSetDeactiveFlag) {
			action = action + "&deactivate=true";
			form.setAttribute("action", action);
		}
	}
}

function updateMaintenanceKeyParam(formId, maintenanceKey) {
	var form = document.getElementById(formId);

	if (form != null) {
		var action = form.getAttribute("action");
		var existingMaintenanceKey = String("");
		var search = action.split("&");

		for (var i = 0; i < search.length; i++) {
			var parameter = String();
			var keyValue = Array();
			parameter = search[i];
			keyValue = parameter.split("=");

			if (keyValue.length == 2) {
				if (keyValue[0] == "maintenanceKey") {
					existingMaintenanceKey = keyValue[1];
				}
			}
		}

		if (existingMaintenanceKey != "" && maintenanceKey != "" && existingMaintenanceKey != maintenanceKey) {
			action = action.replace("maintenanceKey=" + existingMaintenanceKey, "maintenanceKey=" + maintenanceKey);
			form.setAttribute("action", action);
		}
	}
}

/* ************** JavaScript File : END ************************************ */
/* */
/* ************** Copyright 2009 Die Mimen e.V. ************************** */