var documents_data = Array();

function login_form()
{
	var f = document.getElementById('quick-login-form-user');

	if(f)
	{
		f.value = getText('forms', 'username');
		addEvent(f, 'focus', _clearFieldSetTypePassword);

		f = document.getElementById('quick-login-form-password');

		if(f)
		{
			try { f.type = 'text'; } catch(e) { ; }
			f.defaultValue = getText('forms', 'password');

			addEvent( f, 'click', _clearFieldSetTypePassword);
			addEvent( f, 'focus', _clearFieldSetTypePassword);
		}
	}
}

function _clearFieldSetTypePassword()
{
	var password_input = document.getElementById('quick-login-form-password');
	var username_input = document.getElementById('quick-login-form-user');
	if ( username_input.value == getText('forms', 'username') )
	{
		try	{ password_input.value = ''; password_input.type = 'password';} catch(e)	{;}
		username_input.value = '';
	}
}

function boardForumPulldown(ev, ob)
{
	var x = getObj(ev, ob);

	if(x.tagName.toLowerCase() != 'select')
		return;

	if(Number(x.value) > 0)
	{
		document.location.href =  board_script_url +'/list_topics/' + x.value;
	}
	else
	{
		if(x.value != '')
			document.location.href = x.value;
	}
}

function frameworkPulldown()
{
	var footer = document.getElementById('footer');

	if (!footer)
		return;

	/* Add RSS link */
	var item = cssQuery('head link[type="application/rss+xml"]');

	if(item.length > 0)
	{
		var rss = item[0];
		var a = document.createElement('a');

		a.href = rss.href;
		a.type = rss.type;
		a.className = 'rss-link';
		a.appendChild(document.createTextNode('RSS'));
		a.title = rss.title;

		footer.insertBefore(a, footer.firstChild);
	}

	item = document.getElementById('quick-search');

	if(item != null)
	{
		footer.insertBefore(item, footer.firstChild);
	}

	item = cssQuery('div#navigation select');

	if(item.length > 0)
	{
		item = item[0];
		item.form.style.display = 'block';
		addEvent(item, 'change', boardForumPulldown);

		item = cssQuery('div#navigation form');
		if(item.length > 0)
		{
			var clone = item[0].cloneNode(true);
			addEvent(clone, 'change', boardForumPulldown);
			footer.insertBefore(clone, footer.firstChild);
		}
	}
}

function documentPulldown()
{
	var items = cssQuery('div.document select');
	if(items.length > 0)
	{
		for(var i = 0; i < items.length;i++)
		{
			addEvent(items[i], 'change', _documentPulldown);
		}
	}
}

function _documentPulldown(ev, ob)
{
	var x = getObj(ev, ob);

	var data = documents_data[x.options[0].value];

	switch(x.options[x.selectedIndex].value)
	{
		case 'nameandlink':
			alert('Not implemented');
			break;
		case 'thumbnailandlink':
			window.opener.putStr('[DOCLIB='+data[0]+','+data[1]+','+data[2]+',thumb'+']');
			break;
		case 'image':
			window.opener.putStr('[DOCLIB='+data[0]+','+data[1]+','+data[2]+']');
			break;
	}
}

function topicNavigationPulldown()
{
	var items = cssQuery('form.topic-navigation');
	if(items.length > 0)
	{
		for(var i = 0; i < items.length;i++)
		{
			items[i].onsubmit = function(){ return _handleTopicNavigationPulldown(this);};
		}
	}

	var items = cssQuery('form.topic-navigation select');
	if(items.length > 0)
	{
		for(var i = 0; i < items.length;i++)
		{
			items[i].onchange = function(){ return _handleTopicNavigationPulldown(this.form);};
		}
	}

}

function _handleTopicNavigationPulldown(form)
{
	document.location.href = form.attributes['action'].value + form.elements['action'].value +'/'+ form.elements['data[topicid]'].value +'/'+ form.elements['data[offset]'].value;
	return false;
}


function pulldownAutoSubmits()
{
	var items = cssQuery('select.faq-list, select.page-dropdown, select#more-topic');
	if(items.length > 0)
	{
		for(var i = 0; i < items.length;i++)
		{
			addEvent(items[i], 'change', _handlePullDowns);
		}
	}
}

function calendarPulldown()
{
	var item = document.getElementById('calendar-select-date');
	if(item)
		addEvent(item, 'change', _handlePullDowns);
}

function _handlePullDowns(ev, ob)
{
	var x = getObj(ev, ob);

	if(x.tagName.toLowerCase() == 'select')
		x.form.submit();
}

function messagelistAuthorLinksCreateToggle()
{
	var items = cssQuery('ol#messages div.author-nickname');

	if(items.length == 0)
		return;

	var x = null;
	for(var i = 0; x = items[i]; i++)
	{
		addEvent(x, 'click', toggleAuthorLinks);
		jscss('add', x, 'author-links-toggle', '');
	}
}

function toggleAuthorLinks(ev, ob)
{
	var x = getObj(ev, ob);

	var items = cssQuery('ul.author-links',x.parentNode.parentNode);

	for(var i = 0; i < items.length;i++)
	{
		jscss('swap', items[i], 'author-links-expanded author-links', 'author-links');
		jscss('swap', x, 'author-links-toggle-open author-links-toggle', 'author-links-toggle');
		return false;
	}
}

function messagelistTopicLinksCreateToggle()
{
	var items = cssQuery('ul.topic-links.second');
	var copyTextFrom = null;

	for(var i = 0; i < items.length;i++)
	{
		var subitems = cssQuery('li', items[i]);

		for(var j = 0; j < subitems.length;j++)
		{
			addEvent(subitems[j], 'mouseover', toggleTopicLinks);
			addEvent(subitems[j], 'click', followTopicLinks);
		}

		/* the order of selects is intentional */
		copyTextFrom = cssQuery('li.active, li:first-child', items[i]);
		if(copyTextFrom.length > 0)
		{
			toggleTopicLinks(null, copyTextFrom[0], true);
		}
	}
}

function toggleTopicLinks(ev, ob, setup)
{
	var x = getObj(ev, ob);

	if(!setup)
	{
		var items = cssQuery('li', x.parentNode);

		for(var i = 0; i < items.length; i++)
		{
			jscss('remove', items[i], 'active');
		}
	}

	jscss('add', x, 'active');
}

function followTopicLinks(ev, ob, setup)
{
	var x = getObj(ev, ob);

	var subitems = cssQuery('a', x);
	if(subitems.length == 1)
	{
		window.location.href = subitems[0].href;
	}
}

var toggleVisibilityCookie;
function toggleVisibility()
{
	/*
	h4 + dl, h2 + form, h2 + fieldset, h2 + dl, h2 + ol,
	*/
	var items = cssQuery('h3[id] + fieldset, h3[id] + dl.property-list');

	if(items.length > 0)
		getToggleVisibilityCookie();

	for(var i = 0; i < items.length;i++)
	{
		jscss('add',items[i].previousSibling,'toggle-icon','');
		addEvent(items[i].previousSibling, 'click', _toggleVisibility);
		if(in_array(items[i].previousSibling.id, toggleVisibilityCookie))
		{
			jscss('toggle', items[i].previousSibling, 'toggle-alternate-icon','');
			jscss('toggle', items[i], 'display-none','');
		}
	}
}

function _toggleVisibility(ev, ob)
{
	var x = getObj(ev, ob);

	storeToggleVisibility(x.id, jscss('check', x, 'toggle-alternate-icon'));

	jscss('toggle', x, 'toggle-alternate-icon','');
	jscss('toggle', x.nextSibling, 'display-none','');
}

function storeToggleVisibility(x, del)
{
	var newCookie = toggleVisibilityCookie;

	if(in_array(x, newCookie) && del)
	{
		for(var i=0;i<newCookie.length;i++)
		{
			if(newCookie[i] == x )
				delete newCookie[i];
		}
	}
	else
	{
		newCookie[newCookie.length] = x;
	}

	setCookie('toggle', newCookie.join(':'));
	getToggleVisibilityCookie();
}

function getToggleVisibilityCookie()
{
	var c = getCookie('toggle');

	if(c)
		toggleVisibilityCookie = c.split(':');
	else
		toggleVisibilityCookie = Array();
}

function disabledOption(ev, ob)
{
	var x = getObj(ev, ob);

	if(jscss('check', x.options[x.selectedIndex], 'disabled', ''))
	{
		x.selectedIndex = -1;
		alert(getText('normal', 'disabled_option'));
	}
}

function fixBrowserIssues()
{
	var i = 0;

	if(navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Opera') == -1 && navigator.userAgent.indexOf('MSIE 7.0') == -1)
	{
		// MSIE can't handle first-child/last-child, so let's fix it ourselfs,
		// including some other selectors ander :after fixes

		cssQueryClass('div#action-header ol li:first-child, div#navigation li:first-child, div#welcome-text li:first-child', 'first-child');
		cssQueryClass('form input[TYPE="checkbox"]', 'checkbox');
		cssQueryClass('form input[TYPE="radio"]', 'radio');
		cssQueryClass('form input[TYPE="submit"]', 'submit');

		items = cssQuery('dt.required');
		if(items.length > 0)
		{
			var req = null;
			for(i = 0 ; i < items.length;i++)
			{
				req = document.createElement('span');
				req.appendChild(document.createTextNode(' *'));
				jscss('add',req,'required','');
				items[i].appendChild(req);
			}
		}

		var disabled = cssQuery("option[disabled]"), j, parent;

		for(i = 0; i < disabled.length;i++)
		{
			jscss('add', disabled[i], 'disabled', '');

			/* find containing select element, max 10 levels up */
			parent = disabled[i], j=0;
			do
			{
				parent = parent.parentNode;
				j++;
			}
			while(parent.tagName.toLowerCase() != 'select' && j < 10);

			addEvent(parent, 'change', disabledOption);
		}

		cssQueryClass('dd.poll-result span > span', 'sub');
		cssQueryClass('dt:first-child + dd + dd.poll-result span', 'first');

		/* IE has problems with unicode characters in forms with 'multipart' encoding
		   It 'ignores' the first input field, so we add a bogus one for IE to forget */
		items = cssQuery('form');
		if(items.length > 0)
		{
			for(i = 0 ; i < items.length;i++)
			{
				if ( items[i].enctype == 'multipart/form-data' )
				{
					var input = document.createElement('input');
					input.type = 'hidden';
					input.name = 'ie-dummy';
					if ( items[i].elements[0] )
						items[i].insertBefore(input, items[i].elements[0]);
					else
						items[i].insertBefore(input);
				}
			}
		}
	}
	else if(navigator.userAgent.indexOf('AppleWebKit') != -1)
	{
		// fancyfy the searchfields; make 'm pretty
		var submits = cssQuery('input.searchfield');
		for(i = 0; i < submits.length;i++)
		{
			submits[i].setAttribute('type', 'search');
			// apple prefers a nl.react.www.search syntax
			var a = document.createElement('a');
			a.href = board_script_url;
			submits[i].setAttribute('autosave', a.host.split('.').reverse().join('.')+'.search');
			submits[i].setAttribute('results', 5);
			submits[i].setAttribute('placeholder', 'Zoek binnen deze site...');
		}

		// Fix a flow-render problem
		var elements = cssQuery('#content, #footer');
		for(i = 0; i < elements.length;i++)
			elements[i].style.overflow = 'visible';
	}

	if(navigator.userAgent.indexOf('Gecko') != -1 || navigator.userAgent.indexOf('Opera') != -1)
	{
		// Gecko & WebKit don't obey the text-align: center for td's set on col.className
		// find all tables, traverse col's and find out the text-align
		// then correct the corresponding td's

		// feat: make this work using nth-child selectors when gecko/webkit supports this (second loop not needed)

		var tables = document.getElementsByTagName('table');
		try
		{
			for(i = 0; i < tables.length;i++)
			{
				var colsCentered = Array();
				var cols = tables[i].getElementsByTagName('col');
				for(var j = 0; j < cols.length; j++)
				{
					if(document.defaultView.getComputedStyle(cols[j], '').getPropertyValue('text-align') == 'center')
					{
						colsCentered[colsCentered.length] = j;
					}
				}

				if(colsCentered.length > 0)
				{
					var trs = tables[i].getElementsByTagName('tr');
					for(j = 0; j < trs.length;j++)
					{
						var thds = cssQuery('td, th', trs[j]);
						for(var k = 0; k < thds.length;k++)
						{
							if(in_array(k, colsCentered))
							{
								thds[k].style.textAlign = 'center';
							}
						}
					}
				}
			}
		}
		catch(e)
		{
			;
		}
	}

	if(navigator.userAgent.indexOf('Firefox/1.0.') != -1)
	{
		jscss('add', document.body, 'ff-107', '');
	}
}

function attachRMLToolbar()
{
	var rmltextareas = cssQuery('textarea#rml_textarea');

	if(rmltextareas.length == 0)
		return;

	for(var i = 0; i < rmltextareas.length;i++)
	{
		rmltextareas[i].parentNode.insertBefore(getToolbar(board_documentlibrary_allowed), rmltextareas[i]);
	}

	/* dirty IE hack to force reflow */
	if(rmltextareas.length > 0 && navigator.userAgent.indexOf('MSIE') != -1 && navigator.userAgent.indexOf('Opera') == -1)
	{
		document.body.style.display = 'none';
		document.body.style.display = 'block';
	}
}

function copyCurrentCalendarDay()
{
	if(jscss('check',document.body,'calendar-period-mini', ''))
	{
		/* find current day */

		var calendartable = document.getElementById('calendar');

		var days = cssQuery('tbody td strong a', calendartable);
		for(var i =0; i < days.length; i++)
		{
			addEvent(days[i], 'click', function(){ return _copyCurrentCalendarDay(this);});
		}
	}
}

function _copyCurrentCalendarDay(x)
{
	var listOfEvents = cssQuery('ul', x.parentNode.parentNode);
	if(listOfEvents.length > 0)
	{
		var calendartable = document.getElementById('calendar');
		calendartable.parentNode.parentNode.insertBefore(listOfEvents[0], calendartable.parentNode);
	}
	return false;
}

function logoutSessions()
{
	var sessions = cssQuery('body.logout input[type="checkbox"]');

	for(var i=0;i<sessions.length;i++)
	{
		addEvent(sessions[i], 'change', _logoutSessions);
		addEvent(sessions[i], 'click', _logoutSessions);
	}
}

function _logoutSessions()
{
	var logoutOptions = cssQuery('form#primary-input input[type="radio"]'),
		logoutBySession = cssQuery('input#logout_by_session');

	for(var i=0;i<logoutOptions.length;i++)
	{
		logoutOptions[i].checked = false;
	}

	logoutBySession[0].checked = true;
}