var myWindow;

/**
 * Open the new site
 * @param {Object} url
 */
function openWindow(isProcesses, isSearchProcessSide) {
	if (isProcesses && !isSearchProcessSide) {
		openWindowNameWithFocus('portal/jspf/search/search.jsf', 'meinfenster');
	}

	if (isProcesses && isSearchProcessSide) {
		openWindowNameWithFocus('portal/jspf/search/waitsearch.jsf', 'meinfenster');
	}

}

function openWindowWithProgress(url, name, isInProgress) {
	if (!isInProgress) {
		openWindowNameWithFocus(url, name);
	}
	
	if(isInProgress) {
		var currentJsession="jsessionid="+sessionid;
		openWindowNameWithFocus('portal/jspf/progression/loadingInProgress.jsf;' + currentJsession, name);
	}
}

function reloadSearchWindow(isSearchComplete) {
	if (isSearchComplete)
		window.location.reload();
}

var g_lnkMsgVsbCtr = 0; // linkMessageVisibilityCounter
function openWindowNameWithFocus(url, name) {
	if (setLinkMessageVisibility(true)) {
		g_lnkMsgVsbCtr++;
		window.setTimeout("setLinkMessageVisibility(false);", 10000);
	}

	var otherWindow = window.open(url, name, '');
	otherWindow.focus();
	return true;
}

function openWindowNameWithFocusAndEscapedParameter(url, name, escapedValue) {
	escapedValue = escape(escapedValue);
	url = url + escapedValue;
	return openWindowNameWithFocus(url, name);
}

function setLinkMessageVisibility(visible) {
	var linkMsgDiv = document.getElementById('linkMessage:linkMessage');
	if (linkMsgDiv != null) {
		if (visible)
			linkMsgDiv.style.display = "inline";
		else {
			g_lnkMsgVsbCtr--;
			if (g_lnkMsgVsbCtr <= 0) {
				g_lnkMsgVsbCtr = 0;
				linkMsgDiv.style.display = "none";
			}
		}
		return true;
	}

	return false;
}

function setRDBLinkMessageVisibility(visible) {
	var linkMsgDiv = document.getElementById('lawdbload:rdbLinkMessage');
	if (linkMsgDiv != null) {
		if (visible)
			linkMsgDiv.style.display = "inline";
		else {
			g_lnkMsgVsbCtr--;
			if (g_lnkMsgVsbCtr <= 0) {
				g_lnkMsgVsbCtr = 0;
				linkMsgDiv.style.display = "none";
			}
		}
		return true;
	}

	return false;
}

function scrollToStyleClass(styleClassTarget, elementId, iScrollTop, tagNames) {
	var classElemets = getElementsByClassName(styleClassTarget, tagNames);
	if (classElemets[0] == null)
		return;

	classElemets[0].scrollIntoView(true);

	window.scrollTo(0, 0);

	var divTreeElement = document.getElementById(elementId);
	if (divTreeElement == null)
		return;

	if (iScrollTop > 0 && divTreeElement.scrollTop > iScrollTop)
		divTreeElement.scrollTop = divTreeElement.scrollTop - iScrollTop;

	divTreeElement.scrollLeft = '0px';
}

function getElementsByClassName(className, tagNames) {
	var result = [];
	var searchExpression = new RegExp("\\b" + className + "\\b");
	for ( var i = 0; i < tagNames.length; i++) {
		var objects = document.getElementsByTagName(tagNames[i]);
		for ( var j = 0; j < objects.length; j++) {
			if (objects[j].className.match(searchExpression)) {
				result.push(objects[j]);
			}
		}
	}
	return result;
}

function resetAllFormData(formId) {

	if (formId == null || formId == "")
		return false;

	var myForm = document.getElementById(formId);
	if (myForm == null)
		return false;

	return doFormDataRecursion(myForm);

	function doFormDataRecursion(elem) {
		try {
			var myChild = elem.firstChild;
			while (myChild != null) {

				if (myChild.nodeType != 3 && myChild.tagName.toLowerCase() == "input") { // type 3 is text node
					if (myChild.getAttribute("type") == null || (myChild.getAttribute("type") != null && myChild.getAttribute("type").toLowerCase() != "hidden")) {
						//alert(myChild.getAttribute("value"));
						//myChild.setAttribute("value", "");
						myChild.value = "";
						;
					}
				} else if (myChild.nodeType != 3 && myChild.tagName.toLowerCase() == "select") {
					// set value of first child
					var optionField = myChild.firstChild;
					while (optionField != null && optionField.nodeType == 3)
						optionField = optionField.nextSibling;
					if (optionField != null && optionField.tagName.toLowerCase() == "option") {
						var value = optionField.getAttribute("value");
						if (value != null) {
							myChild.setAttribute("value", value);
						}
					}

				} else {
					doFormDataRecursion(myChild);
				}

				myChild = myChild.nextSibling;
			}
		} catch (e) {
			return false;
		}

		return true;
	}

}

function setparam(sHref, sParam, sValue) {
	if ((sParam == "") && (sValue == ""))
		return sHref;

	var iRaute = sHref.indexOf("#");
	if (iRaute == 0)
		return sHref;

	var sAnchor = "";
	if (iRaute > 0) {
		sAnchor = sHref.substring(iRaute + 1);
		sHref = sHref.substring(0, iRaute);
	}

	if (sValue == "")
		sHref = sHref.replace(sParam + "=" + getparam(sParam, sHref), "");
	else {
		// Get current Param
		var sParamNow = getparam(sParam, sHref);

		// Get limiter
		var limiter = "&";
		if (sHref.indexOf("?") < 0)
			limiter = "?";

		// Return URL with Param set
		if (sHref.indexOf(sParam + "=") > -1) {
			sHref = sHref.replace(sParam + "=" + sParamNow, sParam + "=" + sValue);
		} else {
			sHref = sHref + limiter + sParam + "=" + sValue;
		}
	}
	return sHref + "#" + sAnchor;
}

function getparam(sParName, sSearch) {
	var iFr = sSearch.indexOf('?');
	if (iFr > -1)
		sSearch = sSearch.substring(iFr + 1, sSearch.length);
	var parsarray = sSearch.split('&');
	var i = 0;
	for (i = 0; i < parsarray.length; i++) {
		var par = parsarray[i];
		var pararray = par.split('=');
		if ((pararray.length == 2) && (pararray[0].toLowerCase() == sParName.toLowerCase()))
			return pararray[1];
	}
	return "";
}

/**
 * Wird von erweiterter Suche aufgerufen, um bei Formularwechsel Progressbar 
 * anzuzeigen.
 * @param isStart, zeigt, ob Progressbar eingeblendet oder ausgeblendet wird.
 * @param progrerssbarMessage, Text, der Progressbar anzeigt
 * @return nichts
 */
function makeProgress(isStart,progrerssbarMessage) {

	var contentDivDocument = document.getElementById('searchArea:specialSearchContentForm:externalSearchContent');
	var progressDivDocument = document.getElementById('searchArea:specialSearchContentForm:searchProgressBar');
	var searchButtonDiv = document.getElementById('searchArea:extendeSearchForm:searchButtonsDiv');
	var progressBarMessageDocument=document.getElementById('searchArea:specialSearchContentForm:progressBarMessage');

	if (contentDivDocument == null || progressDivDocument == null || searchButtonDiv == null)
		return;
	contentDivDocument.style.display = isStart ? 'none' : '';
	searchButtonDiv.style.display = isStart ? 'none' : '';
	progressDivDocument.style.display = isStart ? '' : 'none';
	if (progrerssbarMessage != null && progressBarMessageDocument != null) {
		progressBarMessageDocument.innerHTML=progrerssbarMessage;
	}
}

function finishSearchProcess(isSearchSuccess){
   if (!isSearchSuccess)
	   return;
   javascript:Richfaces.hideModalPanel('richPanelSearch');
}

function getPosTop(element)
{
    var el = element;
    var posTop = 0;
    while(el)
    {
        posTop += el.offsetTop;
        el = el.offsetParent;
    }
    return posTop;
}

function getPosLeft(element)
{
    var el = element;
    var posLeft = 0;
    while(el)
    {
        posLeft += el.offsetLeft;
        el = el.offsetParent;
    }
    return posLeft;
}

function isIE() {
	if(document.all)
		return true;
		
	return false;
}

function getDocHeight(doc) {
	var docHt = 0, sh, oh;
	if (doc.height)
		docHt = doc.height;
	else if (doc.body) {
		if (doc.body.scrollHeight)
			docHt = sh = doc.body.scrollHeight;
		if (doc.body.offsetHeight)
			docHt = oh = doc.body.offsetHeight;
		if (sh && oh)
			docHt = Math.max(sh, oh);
	}
	return docHt;
}

function setIframeHeight(iframeName, iMaxHeight) {

	try {
		var iframeWin = window.frames[iframeName];
		var iframeEl = document.getElementsByName(iframeName)[0];

		if(iframeEl != null && iframeWin != null)
		{
			var docHt = getDocHeight(iframeWin.document);
			docHt = docHt + 10;
			if (docHt < iMaxHeight)
				iframeEl.style.height = docHt + "px";
			else
				iframeEl.style.height = iMaxHeight + "px";
		}
	} catch(e) {
	}
}

function getIdPrefix(id) {
	if(id == null || id == "")
		return "";
	
	var pos = id.lastIndexOf(":");
	if(pos < 1)
		return "";
	
	return id.substr(0, pos + 1);
}

function clickElement(id) {
	var eleToClick = document.getElementById(id);
	if (eleToClick == null)
		return false;
	try {
		eleToClick.click();
	} catch (e) {
		eleToClick.click = function() {
			var evt = this.ownerDocument.createEvent('MouseEvents');
			evt.initMouseEvent('click', true, true,
					this.ownerDocument.defaultView, 1, 0, 0, 0, 0,
					false, false, false, false, 0, null);
			this.dispatchEvent(evt);
		}
		eleToClick.click();
	}
	return true;
}

/**
 * @author mf
 * @return always true
 */
function setThemenbereichsCount() {
	var eleDisplay = document.getElementById("searchArea:searchFormajax:selectTopicsMultiLink");
	var eleSelection = document.getElementById("searchArea:searchFormajax:topicsMultiSelection");
	var trailingSpaces = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";
	
	// "alle Themenbereiche" is selected so stop here
	if (eleSelection.options[0].selected) {
		eleDisplay.innerHTML = "&uuml;ber&nbsp;alle&nbsp;Themenbereiche" + trailingSpaces;
		return true;
	}
	
	// count the selected items
	var count = 0;
	for (var i=1; i<eleSelection.options.length; i++) {
		if (eleSelection.options[i].selected) {
			// selObj.options[i].value;
			count++;
		}
	}
	// write the determined count into html
	if (count == 1) {
		eleDisplay.innerHTML = "&uuml;ber&nbsp;1&nbsp;Themenbereich" + trailingSpaces;
	} else {
		eleDisplay.innerHTML = "&uuml;ber&nbsp;" + count + "&nbsp;Themenbereiche" + trailingSpaces;
	}
	return true;
}

