﻿Function.prototype.bind = function(o)
{
	var fn = this;
	return function()
	{
		return fn.apply(o, arguments);
	};
};

function addLoadEvent(func) { 
	var oldonload = window.onload; 
	if (typeof window.onload != 'function') { 
			window.onload = func; 
		} else { 
			window.onload = function() { 
			if (oldonload) { 
				oldonload(); 
			}
			func(); 
		};
	} 
} 

function getElementsByStyleClass (className)
{
  var all = document.all ? document.all :
    document.getElementsByTagName('*');
  var elements = new Array();
  for (var e = 0; e < all.length; e++)
  {
    if (all[e].className == className)
      elements[elements.length] = all[e];
  }
  return elements;
}

function addEvent(elm, evType, fn, useCapture)
// addEvent and removeEvent
// cross-browser event handling for IE5+,  NS6 and Mozilla
// By Scott Andrew
{
	if (elm.addEventListener)
	{
		elm.addEventListener(evType, fn, useCapture);
		return true;
	} else if (elm.attachEvent)
	{
		var r = elm.attachEvent("on"+evType, fn);
		return r;
	}
}

function nextObject(o)
{
	var n = o;
	do n = n.nextSibling;
	while (n && n.nodeType != 1);
	return n;
}

function previousObject(o)
{
	var p = o;
	do p = p.previousSibling;
	while (p && p.nodeType != 1);
	return p;
}

function passwordSwitch(field)
{
	if (field.getAttribute('type') == 'text')
	{
		field.style.display="none";
		var next = nextObject(field);
		next.style.display="inline";
		next.focus();
	}
	else
	{
		field.style.display="none";
		var prev = previousObject(field);
		prev.style.display="inline";
	}
}

function clearfield(obj, initvalue)
{
	if (obj)
	{
		obj.setAttribute("onblur","setfield(this, '"+initvalue+"');");
		if (obj.value == initvalue)
			obj.value = '';
	}
}
function setfield(obj, value)
{
	if (obj)
	{
		if (obj.value == '')
			obj.value = value;
	}	
}

/**
* One-click renewal of sms-subscription from SearchAbnTimeoutReminder
*/
var SMSExtendSubscription = {
	submitCallback: function(success, result)
	{
		if (result && result.message && result.message != '')
		{
			var jqForm = $("#smsExtendSubscription");
			jqForm.find(".error").show().html(result.message);
			jqForm.find(".password").focus();
			SMSExtendSubscription.enableSubmit(jqForm.get(0));
		} else
		{
			// Success!
			$("#smsExtendSubscription").find(".error").hide();

			if (window.SMSExtendSubscription == undefined)
			throw("Bad implementation!");

			$("#smsExtendSubscription").find(".loading").show();
			SMSExtendSubscription.submitExtension();
		}
	},

	disableSubmit: function(form)
	{
		var btnSubmit = $(form).find('input:submit');
		btnSubmit.attr("disabled", "disabled");
		btnSubmit.addClass("disabled");
	},
	enableSubmit: function(form)
	{
		var btnSubmit = $(form).find('input:submit');
		btnSubmit.removeAttr("disabled");
		btnSubmit.removeClass("disabled");
	},

	/**
	* Submit handler
	* return false
	*/
	submit: function(form)
	{
		var passwordInput = $(form).find(".password");
		var username = $("#userMenuUsername").html();
		var password = passwordInput.val();
		SMSExtendSubscription.disableSubmit(form);

		// resetDisplayLoginError();

		if (password == '')
		{
			$(form).find(".error").show().html("Du mangler skrive et password.");
			passwordInput.focus();
			SMSExtendSubscription.enableSubmit(form);
			return false;
		}

		var rpc;
		rpc = new JSONClient('/ajax/login.json.php', true);
		result = rpc.__execAsync('validatePassword', SMSExtendSubscription.submitCallback, username, password);

		return false;
	},

	reset: function(form)
	{
		SMSExtendSubscription.enableSubmit(form);
		$(form).find('.loading').hide();
		$(form).find(".status").hide().html("");
	},

	submitExtension: function()
	{
		$.ajax({
			url: "/sms/validate.php",
				type: "POST",
				dataType: "json",
				data: $("#submitExtension").serialize(),
				success: function(data)
				{
					// if (!data.messageID)
					// 	throw("Bad message id.");

					// Input for next function call: pollExtension
					// $("#pollExtension").find('input[name=messageID]').val(data.messageID);
					// SMSSubscription.pollExtension();
					setTimeout(SMSExtendSubscription.success, 17124);
					return false;
				}
		});
	},

	success: function()
	{
		$("#smsExtendSubscription").find('span.status').show().html('Købet blev gennemført. Du bliver viderestillet...');
		setTimeout(function() {
			document.location.reload();
		}, 700);
	}
};

var attempts = 0;
window.createUserAttempts = 0;

function createUser(formObj)
{
	var email = $(formObj).find('#username').val();
	var email2 = $(formObj).find('#username2').val();
	
	window.createUserAttempts++;

	var rpc;
	rpc = new JSONClient('/ajax/createUser.json.php', true);
	result = rpc.__execAsyncEx('create', createResult, formObj, email, email2, window.createUserAttempts);

	return false;
}

/**
* Callback handler for create user xhr
* @see createUser()
*
* @param Boolean success Request status
* @param Object result
*/
function createResult(success, result, formObj)
{
	if (success)
	{
		if (result['success'])
		{
			/* Simpleshop (quickbuy) specific - Go to quickpay after login */
			if($(formObj).find("input[name=isSimpleshop]").val() == 1)
			{
				$("form[name=quickbuy]").submit();
				return true;
			}
			else
				window.location.reload();
		}
		if (result['message'])
		{
			displayCreateError(result['message'], formObj);
		}
	}
	else
	{
		displayCreateError('Der skete en teknisk fejl. Prøv at genopfriske siden.', formObj);
	}
}


/**
* Submit handler for Login form
* 
* @requires jQuery-1.0, JSONClient (jsonrpc.js)
* @param DOMElement formObj Login form
*/
function login(formObj)
{
	var username = $(formObj).find("#loginUsername").val();
	var password = $(formObj).find("#loginPassword").val();
	var autologin = $(formObj).find("#loginAutologin").is(":checked");
	
	resetDisplayLoginError(formObj);
	
	if (username === '')
	{
		displayLoginError('Du skal indtaste dit brugernavn (F.eks. din e-mail)', formObj);
		return false;
	}
	
	if (password == '')
	{
		displayLoginError('Du skal indtaste din adgangskode.', formObj);
		return false;
	}

	attempts++;

	var rpc;
	rpc = new JSONClient('/ajax/login.json.php', true);
	result = rpc.__execAsyncEx('login', loginResult, formObj, username, password, autologin, attempts);

	return false;
}

/**
* Callback from login xhr
*
* @see login()
* @param Boolean success HTTP Status
* @param Object result
*/
function loginResult(success, result, formObj)
{
	if (success)
	{
		/* Simpleshop (quickbuy) specific - Go to quickpay after login */
		if($(formObj).find("input[name=isSimpleshop]").val() == 1 && result['status'] == true)
		{
			$("form[name=quickbuy]").submit();
			return true;
		}
		
		if (result['refresh'] && result['refresh'] == true)
		{
			if (ordbogen.settings.redirectToSelf)
				window.location.reload();
			else
				window.location = "/";
		}
		else if (result['redirect'] && result['redirect'] != '')
			window.location = result['redirect'];
		else if (result['message'] != '')
			displayLoginError(result['message'], formObj);
		else
			displayLoginError("Login fejlede", formObj);
	}
	else
		displayLoginError("Systemfejl", formObj);
}

/**
* Clear error messages from login form
*/
function resetDisplayLoginError(formObj)
{
	displayLoginError('', formObj);
	$(formObj).find("#loginError").hide();
}

/**
* Clear errors from create user form
*/
function resetDisplayCreateError(formObj)
{
	displayCreateError('', formObj);
	$(formObj).find("#createUserError").hide();
}

/**
* Display error from login attempt
* @see #loginMenuWrap
*/
function displayLoginError(error, formObj)
{
	var loginErrorDiv = $(formObj).find("#loginError");
	if(error == null)
		return true;
		
	loginErrorDiv.html((error != '' ? "\u00BB " : "&nbsp; ")+error);
	loginErrorDiv.show();
}

/**
* Display error from user creation attempt
* @see #opretMenuWrap
*/
function displayCreateError(error, formObj)
{
	if(error == null)
		return true;
		
	$(formObj).find("#createUserError").html((error != '' ? "\u00BB " : "&nbsp; ")+error);
	$(formObj).find("#createUserError").show();

	return;
}

function getobj (id) 
{
	if (document.getElementById)
		return document.getElementById(id);
	else if (document.all)
		return document.all[id];
	else if (document.layers)
		return document.layers[id];
	else
		return false;
}

function initpage () 
{
	return;
	var obj;
	/*
	if (document.location.hash == "" &&
		(obj = getobj("word")))
		obj.focus();
	*/	
	linkSupportAjax();
	jumpToAjaxLink();
}

function linkSupportAjax()
{
	var links = document.getElementsByTagName('a');
	var count = links.length;
	for (var i=0; i<count; i++)
	{
		if (links[i])
		{
			var onclick = links[i].getAttribute('onclick');			
			if (onclick)
			{
				onclick = onclick.toString();
				if (onclick.indexOf("loadPage(") != -1)
				{
					var parts = onclick.split(",");
					var start = 0;
					if (parts[0].indexOf("/") != -1)
						start = parts[0].lastIndexOf("/")+1;
					else
						start = parts[0].indexOf("'")+1;						
					var stop = parts[0].lastIndexOf(".php");
					
					var href = parts[0].substring(start,stop);
					links[i].setAttribute('href', '#'+href);
				}
			}
		}
	}
}

function jumpToAjaxLink()
{
	var page = window.location.toString();
	var start = page.indexOf("#");
	if (start != -1)
	{
		var ajaxpage = page.substring(start+1);
		findAjaxLink(ajaxpage);
	}
}

function findAjaxLink(hash)
{
	var links = document.getElementsByTagName('a');
	var count = links.length;
	for (var i=0; i<count; i++)
	{
		if (links[i])
		{
			var href = links[i].getAttribute('href');
			if (href)
			{
				if (href.indexOf(hash) != -1)
				{
					var onclick = links[i].getAttribute('onclick');
					if (onclick)
					{
						onclick = "return false;";
					}
				}
			}
		}
	}
}

function toggle (id)
{
	var blocked;
	try
	{
		blocked = isClickActionBlocked();
	}
	catch (ignored)
	{
		blocked = false;
	}

	if (!blocked)
	{
		var obj = getobj(id);
		if (obj) {
			var objImage = getobj(id+"_img");
			var objLabel = getobj(id+"_label");
			if (obj.style.display == "none") {
				obj.style.display = "";
				if (objImage)
					objImage.src = "/img/minus.gif";
				if (objLabel)
					objLabel.style.fontWeight = "bold";
			}
			else {
				obj.style.display = "none";
				if (objImage)
					objImage.src = "/img/plus.gif";
				if (objLabel)
					objLabel.style.fontWeight = "";
			}
		}

		try
		{
			avoidScrollbarPageJump();
		}
		catch (ignored)
		{
		}
	}
}

window.timer = null;
var pageLoadState = null;
var pageLoadTimer = null;
var timeToShowLoad = 300;

function loadPage (page,usediv,when)
{
	var timeout = (when) ? when : 0;
	
	if (window.timer != null)
		clearTimeout(window.timer);
		
	var div = document.getElementById(usediv);
		
	if ((pageContent = getPageFromCache(page)) != false)
	{
		div.innerHTML = pageContent;
		return;
	}
	
	window.timer = setTimeout(function()
		{		
			try {xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");}  catch (e) { alert("Fejl: Kunne ikke indlæse siden");}
			
			scroll(0,0);
			xmlhttp.onreadystatechange = function()
			{
				pageLoadState = xmlhttp.readyState;
				if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200 || xmlhttp.status == 404))
				{
					cachePage(page,xmlhttp.responseText);
					div.innerHTML = xmlhttp.responseText;				
				}
				else if (xmlhttp.readyState == 1)
				{
					if (pageLoadTimer != null)
					{
						clearTimeout(pageLoadTimer);
					}
									
					pageLoadTimer = setTimeout(function()
					{
						if (pageLoadState < 4)
						{
							div.innerHTML = '<center><img src="http://'+document.domain+'/img/ajax-loader.gif" alt="Indlæser" title="Indlæser" style="margin-top: 20px;"></center>';
						}
					}
					,timeToShowLoad);
				}
			};
			//xmlhttp.open("GET", page);
			xmlhttp.open("POST", page);
			xmlhttp.send(null);
		}, 100);
}

function sendForm (page,usediv,form)
{
	var params = "";
	for (var i = 0; i < form.elements.length; i++)
	{
		var child = form.elements[i];
		if (child)
		{
			var name = child.getAttribute('name');			
			if (name)
			{
				var type = child.getAttribute('type');
				if (type == 'checkbox')
				{
					if (child.checked)
						params += "&"+name+"="+escape(child.value);
				}
				else
					params += "&"+name+"="+escape(child.value);
			}
		}
	}
	
	var div = document.getElementById(usediv);
		
	try {xmlhttp = window.XMLHttpRequest?new XMLHttpRequest(): new ActiveXObject("Microsoft.XMLHTTP");}  catch (e) { alert("Fejl: Kunne ikke indlæse siden");}
	
	scroll(0,0);
	xmlhttp.onreadystatechange = function()
	{
		pageLoadState = xmlhttp.readyState;
		if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200 || xmlhttp.status == 404))
		{
			if (div)
			{
				if (div.firstChild)
					div.firstChild.data = xmlhttp.responseText;
				else
					div.appendChild(document.createTextNode(xmlhttp.responseText));
			}
			else
				alert(xmlhttp.responseText);
		}
		else if (xmlhttp.readyState == 1)
		{
			if (pageLoadTimer != null)
			{
				clearTimeout(pageLoadTimer);
			}
							
			pageLoadTimer = setTimeout(function()
			{
				if (pageLoadState < 4)
				{
					if (div)
						div.innerHTML = '<center><img src="http://'+document.domain+'/img/ajax-loader.gif" alt="Indlï¿½ser" title="Indlæser" style="margin-top: 20px;"></center>';
				}
			}
			,timeToShowLoad);
		}
	}
	xmlhttp.open("POST", page, true);
	
	xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlhttp.setRequestHeader("Content-length", params.length);
	xmlhttp.setRequestHeader("Connection", "close");
	
	xmlhttp.send(params);
}

var cachedPages = new Array();

function cachePage(page,content)
{
	if (getPageFromCache(page) == false)
	{
		cachedPages[cachedPages.length] = new Array(page,content);
	}
}

function getPageFromCache(page)
{
	var content = false;
	for (var x = 0; x < cachedPages.length; x++)
	{
		if (cachedPages[x][0] == page)
		{
			content = cachedPages[x][1];
			break;
		}
	}
	return content;
}


function menuSetActive (menu)
{
	var menu = document.getElementById(menu);
	if (menu)
	{
		if (menu.parentNode.tagName == 'UL')
		{
			for (var i=0; i<menu.parentNode.childNodes.length; i++)
			{
				var child = menu.parentNode.childNodes[i];
				if (child.tagName == 'LI')
				{
					child.className = 'ui-state-default ui-corner-top';
				}
			}
			
		}
		menu.className = 'ui-corner-top ui-tabs-selected ui-state-active ui-state-focus';
		createCookie('currentTab',menu.id,0);
	}
}


function selectNode (node)
{
	var selection, range, doc, win;
	
	if ((doc = node.ownerDocument) && (win = doc.defaultView) && typeof	win.getSelection != 'undefined' && typeof doc.createRange != 'undefined' && (selection = window.getSelection()) && typeof
	selection.removeAllRanges != 'undefined')
	{
		range = doc.createRange();
		range.selectNode(node);
		selection.removeAllRanges();
		selection.addRange(range);
	} else if (document.body && typeof document.body.createTextRange != 'undefined' && (range = document.body.createTextRange())) {
		range.moveToElementText(node);
		range.select();
	}
}


function clearSelection ()
{
	if (document.selection)
		document.selection.empty();
	else if (window.getSelection)
		window.getSelection().removeAllRanges();
}

function checkBoxUpdate (objInput) {
	var objImage = document.getElementById(objInput.id+"_img");
	if (objImage)
	{
		var val = objInput.checked;
		objImage.src = (val ? "/img/check_on.png" : "/img/check_off.png");
	}
}

function checkBoxImage (objImage) {
	var idx;
	var objInput = document.getElementById(objImage.id.substring(0, objImage.id.length - 4));
	if (objInput) {
		objInput.checked = !objInput.checked;
		checkBoxUpdate(objInput, false);
	}
}

function createCheckBox (name,id,checked,style,onclick) {
	document.write(	"<img src=\"/img/check_"+(checked ? "on" : "off")+".png\""+
						" alt=\"\""+
						" class=\"checkbox\""+
						(style ? " style=\""+style+"\"" : "")+
						" id=\""+id+"_img\""+
						" onclick=\"checkBoxImage(this);"+onclick+"\">"+
					"<input type=\"checkbox\""+
						" id=\""+id+"\""+
						" name=\""+name+"\""+
						" value=\"1\""+
						" style=\"position:absolute;left:-20000px\""+
						(checked ? " checked=\"checked\"" : "")+
						" onclick=\"checkBoxUpdate(this);"+onclick+"\">");
}

/**
* @requires jquery.ba-bbq-1.2.1.js
* @return type depending on query value type
*/
function getQuerystring(key, default_)
{
  if (default_ == null)
		default_=""; 
	if (key != "")
		return $.deparam.querystring()[key];

	// Escape [ and ]
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return unescape(qs[1].replace(/\+/g,' '));
}

function validateForms(form)
{
	labels = form.getElementsByTagName('label');
	
	var warnings = 'Følgende fejl opstod:';
	var validated = true;
	for (var i = 0; i < labels.length; i++)
 	{
 		var lbl = labels[i].firstChild.nodeValue;
 		
 	 	for (var j = 0; j < labels[i].childNodes.length; j++)
 		{
 			var txt = labels[i].childNodes[j].innerHTML;
 			if(txt)
 			{
 				if (txt == '*')
 				{
 					//var lfor = (labels[i].getAttribute('for')) ? labels[i].getAttribute('for') : labels[i].getAttribute('htmlFor');
 					var fieldId = labels[i].getAttributeNode('for').value;
 					if (fieldId)
 					{
 						var reqFieldFound = false;
 						
 						for (var u = 0; u < form.elements.length; u++)
						{
							var id = form.elements[u].getAttribute('id');
	 						if (id)
	 						{
	 							if (fieldId == form.elements[u].getAttribute('id').toString())
	 							{
	 								classname = form.elements[u].className.replace('error','')
	 								form.elements[u].className = classname;
	 								reqFieldFound = true;
	 								var value = (form.elements[u].getAttribute('type') == 'checkbox') ? ((!form.elements[u].checked) ? '' : true) : form.elements[u].value;
	 								if (value == '')
	 								{
	 									form.elements[u].className += ' error';
	 									warnings += '\n-' + 'feltet `' + lbl + '` skal udfyldes.'; 									
	 									validated = false;
	 									break;
	 								}
	 							}
	 						}
						}
						
						if (!reqFieldFound)
						{
							warnings += '\n-' + 'Der blev ikke fundet et indtastningsfelt til `' + lbl + '`.';
							validated = false;
						}
 					}
 				}
 			}
 		}
 	}
 	
 	if (!validated)
 		alert(warnings);

	return validated;
}


function isScrollBarPresent()
{
	var currentHeight;
	var bodyHeight;
	
	if (document.documentElement)
	{
		if (document.documentElement && document.documentElement.clientHeight)
		{
			var place = 2;
			bodyHeight = document.documentElement.scrollHeight;
			currentHeight = document.documentElement.clientHeight;
		}
		else if (document.body && document.body.clientHeight < document.body.scrollHeight)
		{
			var place = 1;
			bodyHeight = document.body.scrollHeight;
			currentHeight = document.body.clientHeight;
		}
		else
		{
			var place = 2;
			bodyHeight = document.documentElement.scrollHeight;
			currentHeight = document.documentElement.clientHeight;
		}
	}
	else
	{
		var place = 3;
		bodyHeight = document.body.scrollHeight;
		currentHeight = document.body.clientHeight;
	}

	//document.title = "Place: "+place+" "+bodyHeight+" kontra "+currentHeight+" Present: "+(bodyHeight > currentHeight ? "true":"false");
	
	if (bodyHeight > currentHeight) 
		return true;
	else
		return false;

}

function makeCopyBox(text,className)
{

	if (document.cookie && document.cookie.indexOf("articleSize") > -1) {
		var articleSize = readCookie('articleSize').slice(0,2);
	}
	var changeSize = "";
	if (articleSize) {
		changeSize = articleSize;
	}
	
		
	var simulateObj = document.getElementById('textLength');
	if (simulateObj)
	{
		simulateObj.className = className;
		simulateObj.innerHTML = text;
		
		
		if (changeSize) {
			simulateObj.style.fontSize = changeSize+"px";
		}
		
		//var actualWidth = text.length / 1.8;
		var actualWidth = parseInt(simulateObj.offsetWidth)+4;
		document.write('<input id="copybox_'+text+'" class="input2text '+className+'" style="width:'+actualWidth+'px" value="'+text+'" onmouseover="selectValue(this);" onmouseout="deselect(this);" readonly>');
	}
	//else
	//	alert("Missing object: textLength");
}

function fitWidthOnCopyBox(obj)
{
	var simulateObj = document.getElementById('textLength');
	simulateObj.className = obj.className;
	simulateObj.innerHTML = obj.value;
	simulateObj.style.fontSize = obj.style.fontSize;
	
	var actualWidth = simulateObj.offsetWidth*1.2;
	
	obj.style.width = actualWidth+"px";
}

var currentSelectedObj = null;
function selectValue(obj)
{
	if (window.contextMenuVisible)
		return;

	if (currentSelectedObj != null)
	{
		deselect(currentSelectedObj);
	}
	
	if (obj.setSelectionRange)
	{
		obj.focus();
		obj.setSelectionRange(0,obj.value.length);
	}
	else
	{
		obj.select();
	}
	
	currentSelectedObj = obj;
}

/**
* Select text for copying
* Ignore if context menu is visible
* @globalvar {Boolean} window.contextMenuVisible
* @param {HTMLElement} obj
*/
function deselect(obj)
{
	if (window.contextMenuVisible)
	{
		return;
	}
	
	if (obj.setSelectionRange)
	{
		obj.setSelectionRange(0,0);
	}
	else
	{
		var tempValue = obj.value;
		obj.value = "";
		obj.value = tempValue;
	}
	// obj.blur();
	currentSelectedObj = null;
}

function sizeFontReset(name)
{
	var containers = getNamedElements(name);
	
	if (containers)
	{
		for (var i = 0; i < containers.length; i++)
	 	{
	 		var child = containers[i];
	 		var els = child.getElementsByTagName('*'); 		
	 		
	 		for (var j = 0; j < els.length; j++)
	 		{
	 			var el = els[j]; 			
	 			el.style.fontSize = null;
	 			if (el.tagName == 'INPUT')
	 			{
	 				fitWidthOnCopyBox(el);
	 			}
	 		}
	 	}
	}
	
 	sizeFont("searchArticleResult",1,12);
	
	var articleSize = Cookie.get('articleSize');
 	if (articleSize)
 		articleSize.remove();
 	
}

function sizeFont(name, increment, fixedSize)
{
	var containers = getNamedElements(name);
	
	for (var i = 0; i < containers.length; i++)
 	{
 		var child = containers[i];
		var fontSize = 10;
 		
		if (fixedSize)
			fontSize = fixedSize;
		else
		{
			if (document.defaultView)
				fontSize = parseFloat(document.defaultView.getComputedStyle(child,null).getPropertyValue("font-size").replace("px",""));
			else
			{
				fontSize = parseFloat(child.currentStyle["fontSize"].replace("px",""));
				/* Dirty hack for IE not handling font-size 1em very well */	
				if (fontSize == 1)
					fontSize = 12;
			}
			fontSize = fontSize+increment;
		}
 	
 		child.style.fontSize = fontSize+'px'; 		
		// Special case for arabic dict
		if ($(child).closest('#daar_result').size() > 0)
			$(child).find('td,th').filter('.arabicp').css('font-size', fontSize + 'px');
 		
 		var els = child.getElementsByTagName('INPUT'); 
 		for (var j = 0; j < els.length; j++)
 		{
 			var el = els[j];
 			el.style.fontSize = fontSize+'px'; 			
 			fitWidthOnCopyBox(el);
 		} 		
 		
 		var articleSize = Cookie.get('articleSize');
 		if (articleSize)
 			articleSize.remove();
 		var c1 = new Cookie();
		c1.setName("articleSize");
		c1.add(fontSize);
		c1.save();
 	}
}

function getWidth(text, fontsize)
{
	var spanElement = document.createElement('span');
	spanElement.style.position = 'absolute';
	spanElement.style.whiteSpace = 'nowrap';
	spanElement.style.fontSize = parseInt(fontsize)+2+'px';
	spanElement.innerHTML = text;
	document.body.appendChild(spanElement);
	var width = spanElement.offsetWidth;
	document.body.removeChild(spanElement);
	
	return width;
}

function getNamedElements(name, tag)
{
	var elem = document.getElementsByTagName('*');	
	var arr = new Array();
	
	for(i = 0,iarr = 0; i < elem.length; i++)
	{
		att = elem[i].getAttribute("name");
		if(att == name)
		{
			arr[iarr] = elem[i];
			iarr++;
      	}
 	}
 	
 	return arr;
}

function getStyle(el,styleProp)
{
	var x = document.getElementById(el);
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

//Dynamic dictionary dropdown generator
splitSelect = {
	selects:[],
	firstName:'dict',
	secondName:'dict',
	init:function(){
		var s = document.getElementById(splitSelect.firstName);
		var c = document.createElement('select');
		c.onchange=function(){
			splitSelect.choose(this.selectedIndex);
		}
		s.parentNode.insertBefore(c, s);
		var g = s.getElementsByTagName('optgroup');
		for(var i=0,j=g.length;i<j;i++){
			var o = g[i].getElementsByTagName('option');
			var news = document.createElement('select');
			s.parentNode.insertBefore(news, s);
			news.style.display='none';
			splitSelect.selects.push(news);
			var jump = false;
			var k=0;
			c.appendChild(o[0]);
			while(o[k]){
				news.appendChild(o[k]);
			}
			news.selectedIndex = 0;
		}
		c.selectedIndex = 0;
		s.parentNode.removeChild(s);
		c.id = splitSelect.firstName;
		c.name = splitSelect.firstName;
	},
	choose:function(o){
		document.getElementById('placeholder').style.display='none';
		if(splitSelect.current !== undefined){
			splitSelect.selects[splitSelect.current].style.display='none';
			splitSelect.selects[splitSelect.current].name='';
		}
		splitSelect.selects[o].style.display='inline';			
		splitSelect.selects[o].name=splitSelect.secondName;			
		splitSelect.current = o;
	}
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

function opacity(id, opacStart, opacEnd, millisec) {

    var speed = Math.round(millisec / 100);
    var timer = 0;

    if(opacStart > opacEnd) {
        for(i = opacStart; i >= opacEnd; i--) {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    } else if(opacStart < opacEnd) {
        for(i = opacStart; i <= opacEnd; i++)
            {
            setTimeout("changeOpac(" + i + ",'" + id + "')",(timer * speed));
            timer++;
        }
    }
}

function changeOpac(opacity, id) {
    var object = document.getElementById(id).style;
    object.opacity = (opacity / 100);
    object.MozOpacity = (opacity / 100);
    object.KhtmlOpacity = (opacity / 100);
    object.filter = "alpha(opacity=" + opacity + ")";
} 

function shiftOpacityDown(id, millisec) {
    elements = document.getElementById(id);
    if (elements) {
		opacity(id, 100, 0, millisec);
		setTimeout("elements.style.display = 'none'",millisec);
		
    }
} 

function shiftOpacityUp(id, millisec) {
    elements = document.getElementById(id);
    if (elements) {
		opacity(id, 0, 100, millisec);
    }
}

function setSearchBoxFocusStyling(o1, o2)
{
	o1.style.border = 'solid 2px #1e6d5d';
	
	o2.style.border = 'solid 2px #5f9287';
}

function getHTTPObject(){
	if (window.ActiveXObject) 
		return new ActiveXObject("Microsoft.XMLHTTP");
		else if (window.XMLHttpRequest) 
		return new XMLHttpRequest();
	else {
		return null;
	}
}

function submitAjax(url, resultfield){
	httpObject = getHTTPObject();
	if (httpObject != null) {
		httpObject.open("GET", url, true);
		httpObject.send(null);
		
		if (resultfield) {
			httpObject.onreadystatechange = function() { return setOutput(resultfield); }
		}
	}
}

function setOutput(resultfield) {
	if(httpObject.readyState == 4){
		document.getElementById("id_"+resultfield).innerHTML = httpObject.responseText;
	}
}

// implementing a trim function for strings in javascript
String.prototype.trim = function (string) {
	if(string != undefined && string != '')
    	return this.replace(/^\s*/, "").replace(/\s*$/, "");
    else
    	return this.replace(/^string*/, "").replace(/string*$/, "");
}

// implementing a htmlentitydecode function for strings in javascript
String.prototype.htmlentitydecode = function () {
    return this.replace(/&lt;/, "<").replace(/&gt;/, ">").replace(/&nbsp;/, " ");
}

window.Ordbogen = {

	/**
	* Redirect to search url
	*
	* Does not read any values from the DOM
	*/
	"search": function ordbogenSearch(word, method)
	{
		searchPage = "opslag.php";

		if (!word)
			return;
		if (!method)
			method = "auto";

		window.location.href = '/' + searchPage + "?word=" + word + "&dict=" + method;
	}
};

var articleSearchMenu = {
	isZoomOut: true,
	zoomToActive: function(){
		if ($.cookie("zoom") == "large" && articleSearchMenu.isZoomOut) {
			articleSearchMenu.zoomIn();
		}
	},
	zoomIn: function(){
		$(".searchArticleResult").css("font-size","20px");
		$(".titleBox").css("font-size","20px");
		$(".input2text").each(function () {
			var oldWidth = $(this).css("width")
			var oldWidthNum = parseFloat(oldWidth, 10);
			var newWidth = oldWidthNum * 2;
			$(this).css( "width",newWidth )	
		});
		$(".infoSubContainer").css("font-size","20px")
		$(".zoomin").hide();
		$(".zoomout").show();
		$.cookie("zoom", "large");
		articleSearchMenu.isZoomOut = false;	
	},
	zoomOut: function(){
		$(".searchArticleResult").css("font-size","12px");
		$(".titleBox").css("font-size","12px");
		$(".input2text").each(function () {
			var oldWidth = $(this).css("width")
			var oldWidthNum = parseFloat(oldWidth, 10);
			var newWidth = oldWidthNum * 0.5;
			$(this).css( "width",newWidth )	
		});
		$(".infoSubContainer").css("font-size","12px")
		$(".zoomin").show();
		$(".zoomout").hide();
		$.cookie("zoom", "small");	
		articleSearchMenu.isZoomOut = true;	
	}
};
