/*######################################################*\
||                                                      ||
||                      Xill CMS                        ||
||                                                      ||
||		      Xill Content Management System            ||
||               Copyright 2006-2007 Xill               ||
||                                                      ||
\*######################################################*/

function $(id) { return document.getElementById(id); }
function Display(id) { id.style.display = ''; }
function Hide(id) { id.style.display = 'none'; }

function gotClass(ele,cls) { return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)')); }
function addClass(ele,cls) { if (!this.gotClass(ele,cls)) ele.className += " "+cls; }
function removeClass(ele,cls) 
{
	if (gotClass(ele,cls)) 
	{
    		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}

function removeChildren(element)
{
	while (element.childNodes.length)
	{
		removeChildren(element.firstChild);

		element.removeChild(element.firstChild);
	}

	return true;
}

function removeChildren(element)
{
	while (element.childNodes.length)
	{
		removeChildren(element.firstChild);

		element.removeChild(element.firstChild);
	}

	return true;
}

/*########### Forum ############## */
function change_forum_buttons_over(element)
{
	if (!element.src.match(/\_on.gif/))
	{
		var parts = element.src.split("/");
		var button = parts[parts.length - 1].split(".");

		var newimg = '/' + parts[3] + '/' + parts[4] + '/' + parts[5] + '/' + parts[6] + '/' + button[0]  + '_on.' + button[1];
//alert(newimg);

		element.src = newimg;
	}
}
function change_forum_buttons_out(element)
{
	if (element.src.match(/\_on/))
	{
		element.src = element.src.replace(/\_on/g, '');
	}
}
function forum_buttons()
{
	var buttons = document.getElementsByTagName('img');

	for (i = 0; i < buttons.length; i++)
	{
		if (buttons[i].className == 'statbut')
		{
			buttons[i].onmouseover = function() { change_forum_buttons_over(this); }
			buttons[i].onmouseout = function() { change_forum_buttons_out(this); }
		}
	}
}

/*############ PM ################ */

function PMinsert(el, select_user) { select_user.value = el.firstChild.nodeValue; }
function PM()
{
	var selectuser = $('selectuser');
	var select_user = $('select_user');

	if (selectuser && select_user) { for (i=0;i < selectuser.childNodes.length ;i++ ) { selectuser.childNodes[i].onclick = function() { PMinsert(this, select_user); } } }

	return false;
}

/* ########### Screenshots ############# */

function screenshots()
{
	if (!document.getElementById) { return true; }
	if ($('mainshot'))
	{
		// Remove Parents

		var mainshot = $('mainshot');

		removeChildren(mainshot.parentNode.parentNode);
	}
	// Otherwhise no mainimage
}

/* ########### UBB Editor ############# */

function style(el, type)
{
	var startpos, endpos, first, second;

	switch(type)
	{
		case 'bold': first = '[b]'; second = '[/b]'; break;
		case 'underline': first = '[u]'; second = '[/u]'; break;
		case 'italic': first = '[i]'; second = '[/i]'; break;
		case 'abc': first = '[s]'; second = '[/s]'; break;
		case 'email': first = '[email]'; second = '[/email]'; break;
		case 'url': first = '[url]'; second = '[/url]'; break;
		case 'code': first = '[code]'; second = '[/code]'; break;
		case 'img': first = '[img]'; second = '[/img]'; break;
		case 'quote': first = '[quote]'; second = '[/quote]'; break;
		default: break; 
	}

	// IE Support >>> SUX
	if (document.selection)
	{
		el.focus();
		sel = document.selection.createRange();
		sel.text = first + sel.text + second;
	}
	// Gecko support
	else if (el.selectionStart && el.selectionEnd || el.selectionStart == 0 || el.selectionEnd == 0)
	{
		el.focus();
		startpos = el.selectionStart;
		endpos = el.selectionEnd;
		el.value = el.value.substring(0, startpos) + first + el.value.substring(startpos, endpos) + second + el.value.substring(endpos, el.value.length);
	}
}

function inserttextarea(el, type, value1, value2)
{
	if (value2)
	{
		switch (type)
		{
			case 'email': first = '[email='; second = '[/email]'; break;
			case 'url': first = '[url='; second = '[/url]';	break;
			case 'img': first = '[img='; second = '[/img]'; break;
			case 'quote': first = '[quote='; second = '[/quote]'; break;
		}

		if (document.selection)
		{
			el.focus();
			sel = document.selection.createRange();
			sel.text = first + value1 + ']' + value2 + second;
		}
		else
		{
			startpos = el.selectionStart;
			endpos = el.selectionEnd;
			el.value = el.value.substring(0, startpos) + first + value1 + ']' + value2 + second + el.value.substring(endpos, el.value.length);
			el.focus();
		}
	}
	else
	{
		switch (type)
		{
			case 'email': first = '[email]'; second = '[/email]'; break;
			case 'url': first = '[url]'; second = '[/url]'; break;
			case 'img': first = '[img]'; second = '[/img]'; break;
			case 'quote': first = '[quote]'; second = '[/quote]'; break;
		}

		if (document.selection)
		{
			el.focus();
			sel = document.selection.createRange();
			sel.text = first + value1 + second;
		}
		else
		{
			startpos = el.selectionStart;
			endpos = el.selectionEnd;
			el.value = el.value.substring(0, startpos) + first + value1 + second + el.value.substring(endpos, el.value.length);
			el.focus();
		}
	}
}

function BBEditor()
{
	if ($('bbeditor'))
	{
		var textarea = document.getElementsByTagName('textarea')[0];

		if ($('bbbold'))
		{
			var bold = $('bbbold');
			bold.onclick = function() { style(textarea, 'bold'); }
		}
		if ($('bbunderline'))
		{
			var underline = $('bbunderline');
			underline.onclick = function() { style(textarea, 'underline'); }
		}
		if ($('bbitalic'))
		{
			var italic = $('bbitalic');
			italic.onclick = function() { style(textarea, 'italic'); }
		}
		if ($('bbabc'))
		{
			var abc = $('bbabc');
			abc.onclick = function() { style(textarea, 'abc'); }
		}
		if ($('bbemail'))
		{
			var email = $('bbemail');
			email.onclick = function() 
			{ 
				if (document.selection)
				{
					textarea.focus();
					sel = document.selection.createRange();

					if (sel.text == '')
					{
						email_tag(textarea);
					}
					else
					{
						style(textarea, 'email');
					}
				}
				else if (textarea.selectionStart && textarea.selectionEnd || textarea.selectionStart == 0 || textarea.selectionEnd == 0)
				{
					startpos = textarea.selectionStart;
					endpos = textarea.selectionEnd;

					if (startpos == endpos)
					{
						email_tag(textarea);
					}
					else
					{
						style(textarea, 'email');
					}
				}
			}
		}
		if ($('bburl'))
		{
			var url = $('bburl');
			url.onclick = function() 
			{
				if (document.selection)
				{
					textarea.focus();
					sel = document.selection.createRange();

					if (sel.text == '')
					{
						url_tag(textarea);
					}
					else
					{
						style(textarea, 'url');
					}
				}
				else if (textarea.selectionStart && textarea.selectionEnd || textarea.selectionStart == 0 || textarea.selectionEnd == 0)
				{
					startpos = textarea.selectionStart;
					endpos = textarea.selectionEnd;

					if (startpos == endpos)
					{
						url_tag(textarea);
					}
					else
					{
						style(textarea, 'url');
					}
				}
			}
		}
		if ($('bbcode'))
		{
			var code = $('bbcode');
			code.onclick = function() {	style(textarea, 'code'); }
		}
		if ($('bbimg'))
		{
			var img = $('bbimg');
			img.onclick = function()
			{
				if (document.selection)
				{
					textarea.focus();
					sel = document.selection.createRange();

					if (sel.text == '')
					{
						img_tag(textarea);
					}
					else
					{
						style(textarea, 'img');
					}
				}
				else if (textarea.selectionStart && textarea.selectionEnd || textarea.selectionStart == 0 || textarea.selectionEnd == 0)
				{
					startpos = textarea.selectionStart;
					endpos = textarea.selectionEnd;

					if (startpos == endpos)
					{
						img_tag(textarea);
					}
					else
					{
						style(textarea, 'img');
					}
				}
			}
		}
		if ($('bbquote'))
		{
			var quote = $('bbquote');
			quote.onclick = function()
			{
				if (document.selection)
				{
					textarea.focus();
					sel = document.selection.createRange();

					if (sel.text == '')
					{
						quote_tag(textarea);
					}
					else
					{
						style(textarea, 'quote');
					}
				}
				else if (textarea.selectionStart && textarea.selectionEnd || textarea.selectionStart == 0 || textarea.selectionEnd == 0)
				{
					startpos = textarea.selectionStart;
					endpos = textarea.selectionEnd;

					if (startpos == endpos)
					{
						quote_tag(textarea);
					}
					else
					{
						style(textarea, 'quote');
					}
				}
			}
		}
		if ($('smilies'))
		{
			var smilyanchors = document.getElementsByTagName('a');

			for (i = 0; i < smilyanchors.length; i++)
			{
				var an = smilyanchors[i];

				if (an.className == 'ubb_smily')
				{
					an.onclick = function () {
						return insert_smily(this);
					}
				}
			}
		}
	}
}

function insert_smily(element)
{
	var smily_tag = element.rel;

	var textarea = $('bbeditfield');

	if (document.selection)
	{
		textarea.focus();
		sel = document.selection.createRange();
		sel.text = smily_tag + sel.text;
	}
	// Gecko support
	else if (textarea.selectionStart && textarea.selectionEnd || textarea.selectionStart == 0 || textarea.selectionEnd == 0)
	{
		textarea.focus();
		startpos = textarea.selectionStart;
		textarea.value = textarea.value.substring(0, startpos) + smily_tag + textarea.value.substring(startpos, textarea.value.length);
	}

	return false;
}

function url_tag(textarea)
{
	var Url = prompt("URL:", "http://");
	var Name = prompt("Naam:", "");

	if (!Name && (!Url || Url == "http://"))
	{
		return;
	}

	if (!Url || Url == "http://")
	{
		style(textarea, 'url'); 
	}
	else
	{
		inserttextarea(textarea, 'url', Url, Name);
	}
}

function email_tag(textarea)
{
	var Email = prompt('E-mail adres:', ""); 
	var Name = prompt('Naam:', "");

	if (!Email && !Name)
	{
		return;
	}

	if (!Email)
	{
		style(textarea, 'email');
	}
	else
	{
		inserttextarea(textarea, 'email', Email, Name);
	}
}

function img_tag(textarea)
{
	var Img = prompt('Image URL', "http://");
	var Name = prompt('Naam', "");

	if (!Name && (!Img || Img == "http://"))
	{
		return;
	}

	if (!Img || Img == "http://")
	{
		style(textarea, 'img');
	}
	else
	{
		inserttextarea(textarea, 'img', Img, Name);
	}
}

function quote_tag(textarea)
{
	var Name = prompt('Naam', "");
	var Btext = prompt('Quote Tekst', "");

	if (!Name)
	{
		return;
	}

	else
	{
		inserttextarea(textarea, 'quote', Name, Btext);
	}
}

/* ############ Drop-Down Menu ############ */

function mouseover(element)
{
	var menuid, submenu;

	menuid = element.split('_')[1];

	if ($('topsubmenu_' + menuid))
	{
		submenu = $('topsubmenu_' + menuid);
		submenu.className = 'topsubmenu_hover';
	}
}

function mouseout(element)
{
	var menuid, submenu;

	menuid = element.split('_')[1];

	if ($('topsubmenu_' + menuid))
	{
		submenu = $('topsubmenu_' + menuid);

		submenu.className = 'topsubmenu';
	}
}

function submenu()
{
	var listitems, i, menu;

	listitems = document.getElementsByTagName('li');

	for (i=0; i < listitems.length ; i++)
	{
		if (listitems[i].className == "top")
		{
			if ($('topsubmenu_' + listitems[i].id.split('_')[1]))
			{
				listitems[i].onmouseover = function() { mouseover(this.id); }
				listitems[i].onmouseout = function() { mouseout(this.id); }
			}
		}
	}

}

/* ########### Guestbook ################*/
function guestbook()
{
	if ($('cantread'))
	{
		$('cantread').onclick = function()
		{
			$('captcha').src = '/includes/captcha/captcha.php?time=' + (new Date()).getTime();
		}
	}
}

/*############ Global start #############*/

function start()
{
	if (!document.getElementById) { return false; }
	if ($('selectuser')) { PM(); }
	BBEditor();
	submenu();
	screenshots();
	forum_buttons();
	guestbook();
}

window.onload = start;
