function insertAfter(newElement, targetElement) {
		var parent = targetElement.parentNode;
		if (parent.lastChild == targetElement) {
			parent.appendChild(newElement);
		} else {
			parent.insertBefore(newElement, targetElement.nextSibling);
		}
	}

	function getLangObj(fullStr) {
		var returnObj = {'langId': '', 'orgStr': ''};
		if(fullStr.indexOf('##LANG') != -1) {
			// The inserted lang-str has the format of ##LANG{lang-id}##
			var startPos = fullStr.indexOf('##LANG'); // Length of ##LANG
			var endPos = fullStr.lastIndexOf('##');
			var langStr = fullStr.slice(startPos, endPos);
			var orgStr = fullStr.slice(endPos + 2);

			returnObj.langId = langStr.slice(6);
			returnObj.orgStr = orgStr;
		}
		return returnObj;
	}

	function formatLink(strObj) {
		var a = document.createElement('a');
		//a.setAttribute('href', '/intern/lang_edit.php?sprog_felt_id='+strObj.langId);
		a.setAttribute('href', '#');
		//a.setAttribute('target', '_blank');
		//
		a.setAttribute('onclick', function() { openEditContainer(strObj.langId, a) });
		var img = document.createElement('img');
		img.setAttribute('onclick', 'openEditContainer('+strObj.langId+', this); event.returnValue = false; return false;');
		img.setAttribute('src', '/images/edit2.gif');
		//img.setAttribute('onclick', ' return false;');
		img.style.border = 0;

		a.appendChild(img);
		return a;
	}

	function openEditContainer(langId, elem) {
		if(parseInt(langId, 10) > 0) {

			$.get('/intern/lang_edit.php', {sprog_felt_id : langId}, function(data) {
				var editContainer = document.getElementById('langEditContainer');
				editContainer.innerHTML = data;
				var y = YAHOO.util.Dom.getY(elem);
				editContainer.style.display = 'block';
				editContainer.style.left = '300px';
				var top = (y-125) > 0 ? (y-125) : y;
				editContainer.style.top = top+'px';
			});
		}
		return false;
	}

	function saveLangTexts() {
		var queryString = $("#edit_lang_form").serialize();
		$.ajax({
		   type: "POST",
		   url: "/intern/lang_edit.php",
		   data: queryString,
		   success: function() {
		   	var editContainer = document.getElementById('langEditContainer');
			editContainer.innerHTML = '';
			editContainer.style.display = 'none';
		     window.location.reload();//history.go(0);
		   }
		 });
	}

	function traverseDOM(x, arr) {
        arr.push(x);
        for (var i = 0; i < x.childNodes.length; i++) {
        	if(x.childNodes[i].nodeType == 3) { // Text node
				if(x.childNodes[i].nodeValue && x.childNodes[i].nodeValue.indexOf('##LANG') != -1) {
					var str = x.childNodes[i].nodeValue;
					var strObj = getLangObj(str);
					if(parseInt(strObj.langId, 10) > 0) {
						var a = formatLink(strObj);
						x.childNodes[i].nodeValue = strObj.orgStr;
						if(x.childNodes[i].parentNode.tagName && x.childNodes[i].parentNode.tagName.toLowerCase() == 'button') {
							insertAfter(a, x.childNodes[i].parentNode);
						} else {
							insertAfter(a, x.childNodes[i]);
						}
					}
				}
			} else if(x.childNodes[i].nodeType == 1) { // HTML node
				var node = x.childNodes[i];
				var tag = node.tagName.toLowerCase();
				switch(tag) {
					case 'input':
						var strObj = getLangObj(node.getAttribute('value'));
						if(parseInt(strObj.langId, 10) > 0) {
							var a = formatLink(strObj);
							node.setAttribute('value', strObj.orgStr);
							insertAfter(a, node);
						}
					break;
				}
			}
            traverseDOM(x.childNodes[i], arr);
        }
        return arr;
	}

	var editLang = function() {
	    arr = Array();
	    arr = traverseDOM(document, arr);
	}

	$(document).ready(function() {
		$.get('/rpc/is_lang_admin.php', function(data) {
			if(data == 'yes') {
				editLang();
			}
		});
	});

	function resizeTextAreas() {
		if(document.getElementById('larger_text_areas').checked == true) {
			$("#langEditContainer textarea").height(100);
			$("#langEditContainer textarea").width(200);
		} else {
			$("#langEditContainer textarea").height('auto');
			$("#langEditContainer textarea").width('auto');
		}
	}