var _mousex = 0;
var _mousey = 0;
var _absoluteMousex = 0;
var _absoluteMousey = 0;

function trim(str) {
	pattern1 = /[\s]+$/
	pattern2 = /^[\s]+/
	y = str.replace(pattern2, "").replace(pattern1, "")
	return y
}

// used in edit, view, send and settins toolbars
function setToolbar(toolbarSrc) {
	var topFrame = top.document.getElementById("topFrame");
	topFrame.src = toolbarSrc;
}

// used in edit, view, send and settins toolbars
function submitAction(actionCmd) {
	var centerFrame = top.document.getElementById("centerFrame");
	var editForm = null;
	var actionField = null;

	var executeSubmit = true;
	if (actionCmd == 'cmd_delete') {
		executeSubmit = window.confirm(unescape("Wollen Sie diesen Datensatz wirklich l%F6schen?"));
	} else if (actionCmd == 'cmd_send') {
		if (top.centerFrame && top.centerFrame.document) {
			editForm = top.centerFrame.document.getElementById("editform");
		} else {
			editForm = centerFrame.contentDocument.getElementById("editform");
		}
		if (editForm.sendto.selectedIndex == -1) {
			return;
		}
	}

	if (executeSubmit) {
		if (top.centerFrame && top.centerFrame.document) {
			editForm = top.centerFrame.document.getElementById("editform");
			actionField = top.centerFrame.document.getElementById("action");
		} else {
			editForm = centerFrame.contentDocument.getElementById("editform");
			actionField = centerFrame.contentDocument.getElementById("action");
		}
		actionField.value = actionCmd;
		editForm.submit();
	}
}

// used in worklist
function selectCheckboxById(id) {
	try {
		var checkboxEl = top.document.getElementById(id);
		if (checkboxEl != null) {
			checkboxEl.checked = true;
		}
	} catch (Exception) {
	}
}

function openResourceDetailsWindow(LinkLocation) {
	openResourceDetailsWindow(LinkLocation,'status=yes,toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes');
}

function openResourceDetailsWindow(LinkLocation, winParams) {
	LinkLocation = LinkLocation.replace(/\&amp;/g, "&");
	winParams += ',width=' + screen.availWidth + ',height='	+ screen.availHeight;
	winParams += ',screenX=0,screenY=0,top=0,left=0';
	resourceWindow = window.open(LinkLocation, '_blank', winParams);
	resourceWindow.focus();
}

function openSelectionWindow(Location, winName) {
	var windowName = window.open(Location, winName, '_blank','status=yes,toolbar=yes,menubar=yes,location=yes,scrollbars=yes,resizable=yes');
}

function showPreviewWindow() {
	var urlStr = '';
	var htmlEl = null;
	var centerFrame = top.document.getElementById("centerFrame");
	if (top.centerFrame && top.centerFrame.document) {
		htmlEl = top.centerFrame.document.getElementById("lastVisitedPreviewURL");
	} else {
		htmlEl = centerFrame.contentDocument.getElementById("lastVisitedPreviewURL");
	}
	if (htmlEl != null) {
		urlStr = htmlEl.value;
	} else {
		htmlEl = top.centerFrame.document.getElementById('link');
		if (htmlEl != null) {
			urlStr = htmlEl.href;
		}
	}
	if (urlStr != '') {
		if (urlStr.indexOf("://") == -1) {
			urlStr = "http://" + urlStr;
		}
		reloadPreviewWindowByURL(urlStr);
	}
}

function hidePreviewWindow() {
	var frameset = top.document.getElementById("frameset");
	if (frameset) {
		showPreviewWindow();
		frameset.cols = "100%,*";
		frameset.cols = "100%,*";
	}
}

function reloadPreviewWindow(aID, urlPrefix) {
	var htmlEl = document.getElementById(aID);
	var urlStr = htmlEl.parentNode.previousSibling.previousSibling.value;
	if (urlStr != null) {
		urlStr = trim(urlStr);
	} else {
		urlStr = '';
	}
	if (trim(urlStr).length > 0) {
		if (urlPrefix != null) {
			urlStr = urlPrefix + urlStr;
		} else {
			if (urlStr.indexOf("://") == -1) {
				urlStr = "http://" + urlStr;
			}
		}
		reloadPreviewWindowByURL(urlStr);
	}
}

function reloadPreviewWindowByURL(urlStr) {
	var rightFrame = top.document.getElementById("rightFrame");
	if (urlStr != null) {
		rightFrame.src = urlStr;
		var frameset = top.document.getElementById("frameset");
		if (frameset) {
			frameset.cols = "60%,40%";
		}
	}
}

function openSelectValuesWindow(e, aID, urlStr, liItemID, multiple) {
	var query = '';
	var queryStrListItemID = '&listItemID=-1'
	var queryStrMultiple = '&multiple=' + multiple;
	if (liItemID != '' && liItemID != 'null') {
		var listItem = document.getElementById(liItemID);
		if (listItem != null) {
			var inputFields = listItem.getElementsByTagName("input");
			for (var i = 0; i < inputFields.length > 0; i++) {
				var currentInputField = inputFields.item(i);
				if (currentInputField.getAttribute("type") == "text") {
					query = '&query=' + encodeURI(currentInputField.value);
					if (currentInputField.value.length > 0 && Number(currentInputField.value) == Number.NaN) {
						query = query + '&qt1=_resid:' + encodeURI(currentInputField.value);
					}
				}
			}
			queryStrListItemID = '&listItemID=' + liItemID;
		}
	} else {
		liItemID = 'null';
	}

	var selectValuesDIV = null;
	var selectValuesIFrame = null;
	var centerFrame = top.document.getElementById('centerFrame');
	var inputFieldNextListItemID = null;
	if (top.centerFrame && top.centerFrame.document) {
		selectValuesDIV = top.centerFrame.document.getElementById("selectValuesDIV");
		inputFieldNextListItemID = top.centerFrame.document.getElementById("currentFieldNextListItemID");
	} else {
		selectValuesDIV = centerFrame.contentDocument.getElementById("selectValuesDIV");
		inputFieldNextListItemID = centerFrame.contentDocument.getElementById("currentFieldNextListItemID");
	}
	if (top.centerFrame && top.centerFrame.document) {
		selectValuesIFrame = top.centerFrame.document.getElementById("selectValuesFrame");
	} else {
		selectValuesIFrame = centerFrame.contentDocument.getElementById("selectValuesFrame");
	}
	if (selectValuesIFrame != null) {
		var tempStr = urlStr + query + queryStrListItemID + queryStrMultiple;
		selectValuesIFrame.src = tempStr;
	}

	if (inputFieldNextListItemID != null) {
		inputFieldNextListItemID.value = liItemID;
	}

	var myWidth = 0, myHeight = 0;
	if (typeof(window.innerWidth) == 'number') {
		// Non-IE
		myWidth = window.innerWidth;
		myHeight = window.innerHeight;
	} else if (document.documentElement	&& (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
		// IE 6+ in 'standards compliant mode'
		myWidth = document.documentElement.clientWidth;
		myHeight = document.documentElement.clientHeight;
	} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
		// IE 4 compatible
		myWidth = document.body.clientWidth;
		myHeight = document.body.clientHeight;
	}
	var scrOfX = 0, scrOfY = 0;
	if (typeof(window.pageYOffset) == 'number') {
		// Netscape compliant
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
	} else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		// DOM compliant
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
	} else if (document.documentElement	&& (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		// IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
	}
	scrOfX = scrOfX + 10;
	scrOfY = scrOfY + 10;
	myWidth = myWidth - 100;
	myHeight = myHeight - 100;

	var posX = scrOfX + 'px';
	var posY = scrOfY + 'px';
	var width = myWidth + 'px';
	var height = myHeight + 'px';

	selectValuesDIV.style.top = posY;
	selectValuesDIV.style.left = posX;
	selectValuesDIV.style.height = width;
	selectValuesDIV.style.width = height;
	selectValuesDIV.style.visibility = 'visible';

	selectValuesIFrame.style.visibility = 'visible';
	selectValuesIFrame.style.width = width;
	selectValuesIFrame.style.height = height;

}

function closeSelectValuesWindow() {
	var selectValuesDIV = null;
	var centerFrame = top.document.getElementById('centerFrame');
	var inputFieldNextListItemID = null;
	if (top.centerFrame && top.centerFrame.document) {
		selectValuesDIV = top.centerFrame.document.getElementById("selectValuesDIV");
		inputFieldNextListItemID = top.centerFrame.document.getElementById("currentFieldNextListItemID");
	} else {
		selectValuesDIV = centerFrame.contentDocument.getElementById("selectValuesDIV");
		inputFieldNextListItemID = centerFrame.contentDocument.getElementById("currentFieldNextListItemID");
	}
	if (inputFieldNextListItemID != null) {
		inputFieldNextListItemID.value = 'null';
	}

	var selectValuesIFrame = null;
	var centerFrame = top.document.getElementById('centerFrame');
	if (top.centerFrame && top.centerFrame.document) {
		selectValuesDIV = top.centerFrame.document.getElementById("selectValuesDIV");
	} else {
		selectValuesDIV = centerFrame.contentDocument.getElementById("selectValuesDIV");
	}
	if (top.centerFrame && top.centerFrame.document) {
		selectValuesIFrame = top.centerFrame.document.getElementById("selectValuesFrame");
	} else {
		selectValuesIFrame = centerFrame.contentDocument.getElementById("selectValuesFrame");
	}
	if (selectValuesIFrame != null) {
		var splittedSrc = selectValuesIFrame.src.split('/');
		if (splittedSrc.length >= 3) {
			selectValuesIFrame.src = splittedSrc[0] + '//' + splittedSrc[2]	+ '/' + splittedSrc[3] + '/empty.html';
		}
	}
	selectValuesDIV.style.visibility = 'hidden';
	selectValuesIFrame.style.visibility = 'hidden';
}

function removeEntryField(listItemId) {
	var listItemEl = document.getElementById(listItemId);
	var listEl = listItemEl.parentNode;
	var listItemNodeList = listEl.getElementsByTagName("li");
	if (listItemNodeList.length > 1) {
		listItemEl.parentNode.removeChild(listItemEl);
	};
};

function addEntryField(label, newValue) {
	addEntryField(label, newValue, null, null);
}

function addEntryField(label, newValue, multiple, nextListItemID) {
	if (document.getElementById) {
		var selectValuesDIV = null;
		var selectValuesIFrame = null;
		var selectValuesIFrameDOC = null;
		var findValuesFrame = null;
		var findValuesFrameDOC = null;
		var centerFrame = top.document.getElementById('centerFrame');
		var rightFrame = top.document.getElementById('rightFrame');
		var centerFrameDOC = null;
		var rightFrameDOC = null;
		var inputFieldNextListItemID = null;
		var textareaFields = null;
		var selectFields = null;

		// get selectValuesDIV
		if (top.centerFrame && top.centerFrame.document) {
			selectValuesDIV = top.centerFrame.document.getElementById("selectValuesDIV");
			inputFieldNextListItemID = top.centerFrame.document.getElementById("currentFieldNextListItemID");
		} else {
			selectValuesDIV = centerFrame.contentDocument.getElementById("selectValuesDIV");
			inputFieldNextListItemID = centerFrame.contentDocument.getElementById("currentFieldNextListItemID");
		}
		// get selectValuesIFrame
		if (top.centerFrame && top.centerFrame.document) {
			selectValuesIFrame = top.centerFrame.document.getElementById("selectValuesFrame");
		} else {
			selectValuesIFrame = centerFrame.contentDocument.getElementById("selectValuesFrame");
		}
		//do it the jquery way
		/*
		selectValuesDIV = $("#selectValuesDIV");
		selectValuesIFrame = $("#selectValuesFrame");
		inputFieldNextListItemID = $("#currentFieldNextListItemID");
		*/
		// get centerFrameDOC
		if (centerFrame != null && centerFrame.contentDocument) {
			centerFrameDOC = centerFrame.contentDocument;
		} else if (centerFrame != null && centerFrame.contentWindow.document) {
			centerFrameDOC = centerFrame.contentWindow.document;
		} else if (centerFrame != null && centerFrame.document) {
			centerFrameDOC = centerFrame.document;
		}else{
			centerFrameDOC = document;
		}
		if (multiple == 'null') {
			multiple = false;
		} else {
			nextListItemID = inputFieldNextListItemID.value;
			if (nextListItemID == null || nextListItemID == '') {
				nextListItemID = 'null';
			}
			if (multiple == 'true') {
				inputFieldNextListItemID.value = 'null';
			}
		}
		var id = 'pValuesList' + label;
		// alert("multiple: " + multiple + " nextListItemID: " + nextListItemID
		// + " id: " + id);
		var listEl = centerFrameDOC.getElementById(id);
		if (listEl != null) {
			var listItemClone = null;
			var listItems = listEl.getElementsByTagName("li");
			if (listItems.length > 0) {
				if (nextListItemID == 'null' && multiple == 'true') {
					// clone last node
					var listItemCloneId = 'pValuesListItem' + label	+ (listItems.length + 1);
					var lastItemIndex = (listItems.length - 1);
					var lastListItem = listItems.item(lastItemIndex);;
					listItemClone = lastListItem.cloneNode(true);
					listItemClone.id = listItemCloneId;
					var i = 0;
					var focusOnInputField = null;
					var lastValID = 0;
					var lastSeqNr = listItems.length;
					var nextValID = --lastValID;
					var nextSeqNr = ++lastSeqNr;
					var nextFreeHandle = centerFrameDOC.getElementById("nextFreeHandle").getAttribute("value");
					var aItems = listItemClone.getElementsByTagName("a");
					// alert("LAST SEQNR: " + listItems.length);
					for (i = 0; i < aItems.length; i++) {
						var aElement = aItems.item(i);
						var dummyRef = aElement.getAttribute('href');
						if (dummyRef.indexOf('javascript:removeEntryField') > -1) {
							aElement.setAttribute('href','javascript:removeEntryField(\''+ listItemCloneId + '\')');
						} else if (dummyRef	.indexOf('javascript:reloadPreviewWindow') > -1) {
							nextFreeHandle++;
							centerFrameDOC.getElementById("nextFreeHandle").setAttribute("value", nextFreeHandle);
							centerFrameDOC.getElementById("nextFreeHandle").value = nextFreeHandle;
							aElement.setAttribute('id', 'arefreshLinkID' + nextFreeHandle);
							aElement.setAttribute('name', 'arefreshLinkID' + nextFreeHandle);
							aElement.setAttribute('href','javascript:reloadPreviewWindow(\'arefreshLinkID' + nextFreeHandle + '\')');
						} else if (dummyRef	.indexOf('javascript:openSelectValuesWindow') > -1) {
							nextFreeHandle++;
							centerFrameDOC.getElementById("nextFreeHandle").setAttribute("value", nextFreeHandle);
							centerFrameDOC.getElementById("nextFreeHandle").value = nextFreeHandle;
							var rExpr = /(.+),(.+),(.+),'(.*)',(.*)/;
							var res = rExpr.test(dummyRef);
							if (res == true) {
								rExpr.exec(dummyRef);
								dummyRef = RegExp.$1 + "," + RegExp.$2 + "," + RegExp.$3 + ",\'" + listItemCloneId	+ "\'," + RegExp.$5;
								aElement.setAttribute('href', dummyRef);
							}
						}
					}
				} else {
					listItemClone = centerFrameDOC.getElementById(nextListItemID);
				}
				// set new value
				var inputFields = null;
				if (listItemClone != null) {
					inputFields = listItemClone.getElementsByTagName("input");
					if (inputFields != null) {
						for (i = 0; i < inputFields.length; i++) {
							var currentInputField = inputFields.item(i);
							currentInputField.setAttribute("value", newValue);
							currentInputField.value = newValue;
							if (focusOnInputField == null) {
								focusOnInputField = currentInputField;
							}
							if (currentInputField.getAttribute("name") != null) {
								var currentInputFieldName = currentInputField.getAttribute("name");
								var dummyValID = parseInt(currentInputField.value);
								//parameter[_subfield[_valueid[_seqnr[_language
								var splittedName = currentInputFieldName.split("_");
								if(splittedName.length == 5){
									//alert(splittedName);
									var oldValID = parseInt(splittedName[2]);
									var oldSeqNr = parseInt(splittedName[3]);
									var newValID = -1;
									var newSeqNr = oldSeqNr + 1;
									var newSplittedName = splittedName[0] + "_" + splittedName[1] + "_" + newValID + "_" + newSeqNr + "_" + splittedName[4];
									currentInputField.setAttribute("name",newSplittedName);
									currentInputField.name = newSplittedName;
								}
							}
						}
					}
					textareaFields = listItemClone.getElementsByTagName("textarea");
					if (textareaFields != null) {
						for (i = 0; i < textareaFields.length; i++) {
							var currentTextareaField = textareaFields.item(i);
							currentTextareaField.setAttribute("value", newValue);
							currentTextareaField.value = newValue;
							if (currentTextareaField.getAttribute("name") != null) {
								var currentTextareaFieldName = currentTextareaField.getAttribute("name");
								var dummyValID = parseInt(currentTextareaField.value);
								//parameter[_subfield[_valueid[_seqnr[_language
								var splittedName = currentTextareaFieldName.split("_");
								if(splittedName.length == 5){
									//alert(splittedName);
									var oldValID = parseInt(splittedName[2]);
									var oldSeqNr = parseInt(splittedName[3]);
									var newValID = -1;
									var newSeqNr = oldSeqNr + 1;
									var newSplittedName = splittedName[0] + "_" + splittedName[1] + "_" + newValID + "_" + newSeqNr + "_" + splittedName[4];
									currentTextareaField.setAttribute("name",newSplittedName);
									currentTextareaField.name = newSplittedName;
								}
							}
						}
					}
					selectFields = listItemClone.getElementsByTagName("select");
					if (selectFields != null) {
						for (i = 0; i < selectFields.length; i++) {
							var currentSelectField = selectFields.item(i);
							currentSelectField.setAttribute("value", newValue);
							currentSelectField.value = newValue;
							if (currentSelectField.getAttribute("name") != null) {
								var currentSelectFieldName = currentSelectField.getAttribute("name");
								var dummyValID = parseInt(currentSelectField.value);
								//parameter[_subfield[_valueid[_seqnr[_language
								var splittedName = currentSelectFieldName.split("_");
								if(splittedName.length == 5){
									//alert(splittedName);
									var oldValID = parseInt(splittedName[2]);
									var oldSeqNr = parseInt(splittedName[3]);
									var newValID = -1;
									var newSeqNr = oldSeqNr + 1;
									var newSplittedName = splittedName[0] + "_" + splittedName[1] + "_" + newValID + "_" + newSeqNr + "_" + splittedName[4];
									currentSelectField.setAttribute("name",newSplittedName);
									currentSelectField.name = newSplittedName;
								}
							}
						}
					}
					listEl.appendChild(listItemClone);
					if (focusOnInputField != null) {
						focusOnInputField.focus();
					}
				}
			}
		}
	}
}

function closeCurrentWindow() {
	if (window.top != null) {
		window.top.close();
	} else {
		self.close();
	}
}
