function linkTitleInStatusbar()
{
	var links = document.links;
	for(var i = 0; i < links.length;i++)
	{
		links[i].onmouseover = showTitleInStatusbar;
		links[i].onmouseout = clearStatusbar;
	}
}

function showTitleInStatusbar()
{
	if(this.title.length > 0)
	{
		if(this.accessKey.length == 1)
		{
			window.status = this.title + ' - sneltoets: Alt + '+this.accessKey;
		}
		else
		{
			window.status = this.title + ' - ' + this.href;
		}

		if(window.status == '')
			return false;
		else
			return true;
	}
}

function clearStatusbar()
{
	window.status = '';
	return true;
};

var maxImageWidth = 350;
var maxImageHeight = 800;
var imagesToScale = Array();
function scaleImages()
{
	imagesToScale = cssQuery('ol#messages div.message-content img');
	if(imagesToScale.length > 0)
		addEvent(window, 'load', _scaleImages);
}

function _scaleImages(ev, ob)
{
	for(var i = 0; i < imagesToScale.length;i++)
	{
		scaleImage(imagesToScale[i]);
	}
};

function scaleImage(img)
{
	if (maxImageWidth == 0 || maxImageHeight == 0)
		return;

	if (img.width > maxImageWidth || img.height > maxImageHeight)
	{
		var ratio = img.width / img.height;
		img.originalWidth = img.width;
		img.originalHeight = img.height;

		if (ratio > 1)
		{
			img.width = maxImageWidth;
			img.height = maxImageWidth / ratio;
		}
		else
		{
			img.height = maxImageHeight;
			img.width = maxImageHeight * ratio;
		}

		if (img.parentNode.nodeName != 'A')
			addEvent(img, 'click', popupImage);
	}
};

function popupImage(ev, ob)
{
	var img = getObj(ev, ob);
	window.open(img.src, 'img', 'width='+(img.originalWidth+16)+',height='+(img.originalHeight+16)+',left=0,top=0');
};

function makeSmileysClickable()
{
	var items = cssQuery('#smileys img');
	for(var i = 0; i < items.length;i++)
	{
		addEvent(items[i], 'click', _insertSmiley);
	}
}

function _insertSmiley(ev, ob)
{
	var smiley_img = getObj(ev, ob);
	putStr(' ' +  smiley_img.alt + ' ');
};

function localAnchors()
{
	/* strict checking for the moment, should be evaluated at a later point */
	if(!jscss('check', document.body, 'list_message') && !jscss('check', document.body, 'list_messages'))
		return;

	var container = document.getElementById('messages');
	if(!container)
		return;

	var items = cssQuery('address.posted-at a, blockquote.quote-blockquote a.messagelink', container);
	var pattern = /list_message\//;
	for(var i = 0; i < items.length;i++)
	{
		if(pattern.test(items[i].pathname))
		{
			items[i].onclick = function() { return _localAnchors(this);};
		}
	}
};

function _localAnchors(x)
{
	var id = x.hash.substring(1);
	for(var i=0; i< document.anchors.length; i++)
	{
		if(document.anchors[i].name == id)
		{
			window.location.hash = id;
			return false;
		}
	}
};

function slashdotLinks(x)
{
	var items = cssQuery('ol#messages a.link');
	var a = document.createElement('a'), span, clone, shortname;
	a.href = board_script_url;
	for(var i=0; i< items.length; i++)
	{
		if(a.hostname != items[i].hostname)
		{
			if(items[i].href == items[i].text || items[i].hostname == items[i].text)
				continue;

			shortname = hostnameToShortname(items[i].hostname);
			span = document.createElement('span');
			clone = items[i].cloneNode(true);
			span.appendChild(clone);
			span.appendChild(document.createTextNode( ' [' + shortname + ']' ));
			items[i].parentNode.replaceChild(span, items[i]);
		}
	}
};
/* these regexp's have been copied from slashcode which is GPL */
/* file: utils/domainTagifyComments */
function hostnameToShortname(hostname)
{
	if(/^(\d{1,3}\.){3}\d{1,3}$/.test(hostname))
		return hostname;

	var result;

	result = hostname.match(/([\w-]+\.[a-z]{3,4})$/i);
	if(result)
		return result[1];

	result = hostname.match(/([\w-]+\.[a-z]{2,4}\.[a-z]{2})$/i);
	if(result)
		return result[1];

	result = hostname.match(/([a-z]+\.[a-z]{2})$/i);
	if(result)
		return result[1];

	var items = hostname.split('.');
	if(items.length >= 3)
		return items.reverse().slice(0,3).reverse().join('.');

	return hostname;
};

function searchPopup()
{
	var items = cssQuery('div#navigation li#search-link a');
	if(items.length == 0)
		return;

	items[0].onclick = function() { return _searchPopup(this); };
	items[0].ondblclick = function() { document.location.href = items[0].href; };
}

function _searchPopup(x)
{
	var form = document.createElement('form');
	form.action = board_script_url;

	var fieldset = document.createElement('fieldset');

	var hiddenElements = Array(Array('action', 'find'), Array('data[searchtype]', 'search')), input;
	for(var i =0; i < hiddenElements.length;i++)
	{
		input = document.createElement('input');
		input.setAttribute('type', 'hidden');
		input.setAttribute('name', hiddenElements[i][0]);
		input.setAttribute('value', hiddenElements[i][1]);
		fieldset.appendChild(input);
	}

	input = document.createElement('input');
	input.setAttribute('id', 'search-link-input');
	input.setAttribute('type', 'text');
	input.setAttribute('size', '40');
	input.setAttribute('name', 'data[q]');

	input.defaultValue = getText('extra', 'searchPopup');
	addEvent(input, 'focus', empty);

	fieldset.appendChild(input);
	form.appendChild(fieldset);
	x.parentNode.appendChild(form);

	document.getElementById('search-link-input').focus();

	return false;
}

function closeAndSubmit()
{
	var items = cssQuery("div#topic-admin input#status");
	if(items.length == 0)
		return;

	if(items[0].nextSibling.options[items[0].nextSibling.selectedIndex].value != 'Closed')
	{
		var input = document.createElement('input');
		input.type = 'submit';
		input.accessKey = 'c';
		input.value = getText('extra','close_and_submit');
		input.onclick = function() { _closeAndSubmit(this.form); };
		items[0].parentNode.appendChild(input);
	}
}

function _closeAndSubmit(form)
{
	var items = cssQuery('input#status + select', form);
	if(items.length == 0)
		return;

	var select = items[0];
	for(var i=0; i<select.options.length;i++)
	{
		if(	select.options[i].value == 'Closed')
		{
			select.selectedIndex = i;
			select.previousSibling.checked = true;
			break;
		}
	}
};

function indicateAccesskey()
{
	var items = cssQuery('input[accesskey]');

	var replacement, replacementText, attrs, j, indicator, indicatorCharPos;
	for(var i=0;i<items.length;i++)
	{
		switch(items[i].type)
		{
			case 'submit':
			case 'reset':
				replacement = document.createElement('button');
				attrs = Array('accesskey', 'name', 'id', 'type', 'className');
				for(j=0;j<attrs.length;j++)
				{
					replacement.setAttribute(attrs[j], items[i].getAttribute(attrs[j]));
				}

				indicatorCharPos = items[i].value.toLowerCase().indexOf(items[i].accessKey);

				if(indicatorCharPos >= 0 )
				{
					/* accesskey is used in string */
					replacement.appendChild(document.createTextNode(items[i].value.substring(0, indicatorCharPos)));

					indicator = document.createElement('span');
					indicator.className = 'accesskey';
					indicator.appendChild(document.createTextNode(items[i].value.charAt(indicatorCharPos)));
					replacement.appendChild(indicator);

					replacement.appendChild(document.createTextNode(items[i].value.substring(indicatorCharPos+1)));
				}
				else
				{
					replacement.appendChild(document.createTextNode(items[i].value));
					replacement.appendChild(document.createTextNode(' '));
					indicator = document.createElement('span');
					indicator.className = 'accesskey';
					indicator.appendChild(document.createTextNode(getText('extra', 'accesskey_indicator', items[i].accessKey)));
					replacement.appendChild(indicator);
				}

				/* ie moet echt dood ofzo */
				/* ie pakt de 'type' attribute niet mee */
				if(navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Opera') == -1)
				{
					if(items[i].type == 'submit')
						replacement.onclick = function() {this.form.submit();};
					else if(items[i].type == 'reset')
						replacement.onclick = function() {this.form.reset();};
				}

				items[i].parentNode.replaceChild(replacement, items[i]);
				break;
		}
	}

	return true;
};