<!--

var open_popup = false;
var open_drop_down = false;
var posting = true;
var textarea_id = 'message';

function show_popup(id) {
	if(get('popup_' + id, ID)) {
		open_popup = id;
		fade_out_bg();
		obj = get('popup_' + id, ID);
		obj.style.display = 'block';
		obj.style.position = 'absolute';
		obj.style.top = '50%';
		offsetTop = (parseInt(obj.offsetHeight) / 2);
		if(window.pageYOffset) {
			obj.style.marginTop = (window.pageYOffset - offsetTop) + 'px';
		} else {
			obj.style.marginTop = (document.body.scrollTop - offsetTop) + 'px';
		}
		obj.style.left = '50%';
		obj.style.marginLeft = (0 - (parseInt(obj.style.width) / 2)) + 'px';
		if(!arguments[1]) {
			document.body.appendChild(obj);
			if(id == "hyperlink") {
				selection = get_selected_text();
				if(selection != "" && get('hyperlink_display', ID).value == "") {
					if(selection.match(/\[(url|link|email)(=([^\]]+))?\](.+?)\[\/(url|link|email)\]/i)) {
						target = RegExp.$1;
						url = '';
						display = '';
						if(RegExp.$3 != "") {
							url = RegExp.$3;
							display = RegExp.$4;
						} else {
							url = display = RegExp.$4;
						}
						get('hyperlink_target', ID).value = target;
						get('hyperlink_url', ID).value = url;
						get('hyperlink_display', ID).value = display;
					} else {
						get('hyperlink_display', ID).value = selection;
					}
				}
			}
			else if(id == 'img') {
				document.getElementById('image_upload_error').innerHTML = '';
				document.getElementById('image_upload').style.display = '';
				selection = get_selected_text();
				if(selection != "" && selection.match(/\[img([^\]]+)?\](.+?)\[\/img\]/i)) {
					url = RegExp.$2;
					display = '';
					display_temp = RegExp.$1;
					if(display_temp.match(/alt="(.+?)"/)) {
						display = RegExp.$1;
					} else if(display_temp.match(/alt=(.+?)(\s|$)/)) {
						display = RegExp.$1;
					}
					get('img_src', ID).value = url;
					get('img_title', ID).value = display;
				} else {
					get('img_title', ID).value = selection;
				}
			}
			else if(id == 'media') {
				// Modify Flash
				
			}
		}
		window.onscroll = function() { if(open_popup) { show_popup(open_popup, true); } }
	}
}

function fade_out_bg() {
	if(get('fade_bg', ID)) {
		get('fade_bg', ID).style.display = 'block';
	} else {
		fade_bg = document.createElement('div');
		fade_bg.id = 'fade_bg';
		fade_bg.style.position = 'absolute';
		fade_bg.style.top = '0px';
		fade_bg.style.left = '0px';
		fade_bg.style.width = '100%';
		fade_bg.style.height = '100%';
		var page_height = Math.max(
			document.body.scrollHeight,
			document.body.offsetHeight,
			document.documentElement.clientHeight,
			document.documentElement.scrollHeight,
			document.documentElement.offsetHeight
		);
		fade_bg.style.height = page_height + 'px';
		fade_bg.style.opacity = '0.6';
		fade_bg.style.filter = 'Alpha(opacity=60);';
		fade_bg.style.backgroundColor = '#ffffff';
		document.body.appendChild(fade_bg);
	}
}

function restore_bg() {
	id = (arguments[0])? arguments[0] : open_popup;
	open_popup = false;
	if(get('popup_' + id, ID)) {
		obj = get('popup_' + id, ID);
		obj.style.display = 'none';
	}
	if(get('fade_bg', ID)) {
		get('fade_bg', ID).style.display = 'none';
	}
}

function get_selected_text() {
	var textarea = document.getElementsByName(textarea_id).item(0);
	textarea.focus();
	if(document.all) {
		var range = document.selection.createRange();
		return range.text;
	} else if(typeof textarea.selectionStart != "undefined") {
		var selStart = textarea.value.substr(0, textarea.selectionStart);
		var selEnd = textarea.value.substr(textarea.selectionEnd, textarea.value.length);
		return textarea.value.replace(selStart, "").replace(selEnd, "");
	} else {
		return "";
	}
}

function insert_ubbc() {
	before = (arguments[0])? arguments[0] : "";
	after = (arguments[1])? arguments[1] : "";
	replace = (arguments[2])? arguments[2] : "";
	open_drop_down = false;
	
	if(textarea_id) {
		var textarea = document.getElementsByName(textarea_id).item(0);
	} else {
		n = (arguments[3])? arguments[3] : 0;
		var textarea = document.getElementsByTagName('textarea').item(n);
	}
	var top = textarea.scrollTop;
	if(document.attachEvent) {
		textarea.focus();
		var temp = document.selection.createRange();
		if(!replace)
			replace = temp.text;
		if(before && after && replace.match(new RegExp('^'+preg_quote(before)+'((.|\r|\n|\S)+?)?'+preg_quote(after)+'((.|\r|\n|\S)+?)?$', 'i'))) {
			replace = RegExp.$1 + RegExp.$3;
			before = '';
			after = '';
		}
		temp.text = before+replace+after;
		textarea.focus();
	} else if(typeof textarea.selectionStart != "undefined") {
		var selStart = textarea.value.substr(0, textarea.selectionStart);
		var selEnd = textarea.value.substr(textarea.selectionEnd, textarea.value.length);
		var selCur = textarea.value.replace(selStart, "").replace(selEnd, "");		
		if(replace)
			selCur = replace;
		if(before && after && selCur.match(new RegExp('^'+preg_quote(before)+'((.|\r|\n|\S)+?)?'+preg_quote(after)+'((.|\r|\n|\S)+?)?$', 'i'))) {
			selCur = RegExp.$1 + RegExp.$3;
			before = '';
			after = '';
		}
		textarea.value = selStart +  before + selCur + after + selEnd;
		l = (selStart + before + selCur + after).length;
		textarea.setSelectionRange(l, l);
		textarea.focus();
		textarea.scrollTop = top;
	} else {
		textarea.value += before + replace + after;
	}
}

function show_drop_down(holder) {
	if(open_drop_down && open_drop_down != holder) {
		show_drop_down(open_drop_down);
	}
	open_drop_down = holder;
	obj = get('div', TAG, holder)[0];
	obj.style.display = (obj.style.display == 'block')? 'none' : 'block';
}

function set_font_family(font) {
	insert_ubbc('[font='+ font +']', '[/font]');
}

function set_font_size(size) {
	insert_ubbc('[size='+ size +']', '[/size]');
}

function set_color(color) {
	insert_ubbc('[color='+ color +']', '[/color]');
	restore_bg('color');
}

function preview_color(color) {
	get('color_preview', ID).value = '#' + color;
}

var upload_type = false;
function insert_image(form) {
	if(form.image.value != "") {
		if(form.image.value.match(/\.(gif|jpe?g|png)$/i)) {
			upload_type = 'image';
			show_upload_error('<img src="http://uploads.virtualforums.co.uk/ajax-loader.gif" alt="Loading..." />');
			document.getElementById('image_upload').style.display = 'none';
			form.action = '/uploader.php';
			form.target = 'image_upload_iframe';
			form.method = 'post';
			return true;
		} else if(form.image.value != "" && form.image.value.match(/\.(\w+)$/i)) {
			show_upload_error('<b>Error:</b> You may only upload GIF, JPG or PNG file extentions. The file you are trying to upload has a \''+ (RegExp.$1) +'\' extention.');
			return false;
		} else if(form.image.value != "") {
			show_upload_error('<b>Error:</b> You may only upload GIF, JPG or PNG file extentions.');
			return false;
		}
	}
	if(posting) {
		if(form.src.value != "") {
			alt = (form.title.value)? ' alt="' + form.title.value + '"' : '';
			width = (form.width.value)? ' width=' + form.width.value : '';
			height = (form.height.value)? ' height=' + form.height.value : '';
			insert_ubbc('', '', '[img'+alt+width+height+']'+form.src.value+'[/img]');
			form.reset();
		}
		restore_bg('img');
	}
	return false;
}

function upload_complete(u) {
	if(upload_type == 'avatar') {
		form = document.getElementById('avatar_form');
		document.getElementById('image_upload_error').innerHTML = '<b class=\"title\">File Uploaded</b>';
		document.getElementById('image_upload').style.display = '';
		form.src.value = u;
		form.width.value = arguments[1];
		form.height.value = arguments[2];
		
		if(form.image.outerHTML) {
			form.image.outerHTML = '<input type="file" name="image" id="image_upload_url" value="" style="width: 220px;" />';
		} else {
			form.image.value = '';
		}
		if(posting == true) {
			insert_avatar(form);
		}
		posting = true;
	} else {
		form = document.getElementById('image_form');
		document.getElementById('image_upload_error').innerHTML = '<b class=\"title\">File Uploaded</b>';
		document.getElementById('image_upload').style.display = '';
		form.src.value = u;
		if(form.image.outerHTML) {
			form.image.outerHTML = '<input type="file" name="image" id="image_upload_url" value="" style="width: 220px;" />';
		} else {
			form.image.value = '';
		}
		if(posting == true) {
			insert_image(form);
		}
		posting = true;
	}
}

function show_upload_error(s) {
	document.getElementById('image_upload_error').innerHTML = s;
	document.getElementById('image_upload').style.display = '';
	posting = false;
}

function insert_hyperlink(form) {
	url = form.url.value;
	display_text = form.display.value;
	target = form.target.value;
	selection = get_selected_text();
	if(url != "") {
		if(url.match(/^(\w|\d|-|\.)+@(\w|\d|\.|-)+$/)) {
			target = 'email';
		} else if(!url.match(/^(https?:\/\/|#)/i, url)) {
			url = 'http://' + url;
		}
		if(selection == "" && display_text == "") {
			display_text = url;
			url = '';
		} else {
			url = '=' + url;
		}
		form.reset();
		insert_ubbc('[' + target + url +']', '[/'+ target +']', display_text);
	} else if(display_text != "") {
		insert_ubbc('', '', display_text);
	}
	restore_bg('hyperlink');
	return false;
}

function insert_media(form) {
	media_src = form.src.value;
	media_type = form.media_type.value;
	media_width = 0;
	media_height = 0;
	// Google video
	if (media_src.indexOf('http://video.google.com/videoplay?docid=') == 0) {
		media_width = '425';
		media_height = '326';
		media_src = 'http://video.google.com/googleplayer.swf?docId=' + v.substring('http://video.google.com/videoplay?docid='.length) + '&hl=en';
		media_type = 'GoogleVideo';
	}
	else if(media_type == 'GoogleVideo' && media_src.match(/^(-?\d+)$/)) {
		media_width = '425';
		media_height = '326';
		media_src = 'http://video.google.com/googleplayer.swf?docId=' + RegExp.$1 + '&hl=en';
	}
	else if(media_src.match(/http:\/\/video.google.\w+\/googleplayer\.swf\?docId=(-?\d+)(&|$|\/|#)/i)) {
		// Google Video Embed URL
		media_width = '425';
		media_height = '326';
		media_src = 'http://video.google.com/googleplayer.swf?docId=' + RegExp.$1 + '&hl=en';
		media_type = 'GoogleVideo';
	}
	// YouTube
	else if(media_src.match(/\?(v|video_id)=((\w|\d|-)+)/gi)) {
		media_width = '480';
		media_height = '295';
		media_src = media_src.replace(/^.+?\?(v|video_id)=/, 'http://www.youtube.com/v/');
		media_type = 'YouTube';
	}
	else if(media_type == 'YouTube' && media_src.match(/^((\w|\d|-)+)$/)) {
		media_width = '480';
		media_height = '295';
		media_src = 'http://www.youtube.com/v/' + RegExp.$1;
	} else if(media_src.match(/youtube\.com\/v\/((\w|\d|-)+)/gi)) {
		media_width = '480';
		media_height = '295';
		media_type = 'YouTube';
	}
	// Meta Cafe
	else if(media_type == 'MetaCafe' && media_src.match(/^(\d+)$/i)) {
		media_width = '460';
		media_height = '398';
		media_src = 'http://www.metacafe.com/fplayer/' + RegExp.$3 + '/unknown.swf';
	}
	else if(media_src.match(/^(https?:\/\/(www\.)?metacafe.com\/watch)?\/?(\d+)(\/(\w|_)+)?\/?$/i)) {
		media_width = '460';
		media_height = '398';
		file_name = ((RegExp.$4).length > 1)? RegExp.$4 : '/unknown';
		media_src = 'http://www.metacafe.com/fplayer/' + RegExp.$3 + file_name + '.swf';
		media_type = 'MetaCafe';
	}
	else if(media_src.match(/^(https?:\/\/(www\.)?metacafe.com\/fplayer)?\/?(\d+)(\/(\w|_)+)?\.swf$/i)) {
		// Meta Cafe Embed uRL
		media_width = '460';
		media_height = '398';
		file_name = ((RegExp.$4).length > 1)? RegExp.$4 : '/unknown';
		media_src = 'http://www.metacafe.com/fplayer/' + RegExp.$3 + file_name + '.swf';
		media_type = 'MetaCafe';
	} else {
		// Unknown Type?
	}
	
	if(media_src != "") {
		if(form.width.value) {
			media_width = form.width.value;
		}
		if(form.height.value) {
			media_width = form.height.value;
		}
		if(media_width) {
			media_width = ' width=' + media_width;
		}
		if(media_height) {
			media_height = ' height=' + media_height;
		}
		insert_ubbc('', '', '[flash'+media_width+media_height+']'+ media_src +'[/flash]');
	}
	restore_bg('media');
	return false;
}

function insert_table(form) {
	columns = form.columns.value;
	rows = form.rows.value;
	
	if(isNaN(columns)) {
		columns = 2;
	}
	if(isNaN(rows)) {
		rows = 4;
	}
	
	open_str = '';
	close_str = '';
	
	for(r=0; r<rows; r++) {
		if(r == 0) {
			open_str += '[tr]\n';
		} else {
			close_str += '[tr]\n';
		}
		for(c=0; c<columns; c++) {
			if(r == 0 && c == 0) {
				open_str += '\t[td]';
				close_str += ' [/td]\n';
			} else {
				close_str += '\t[td] [/td]\n';
			}
		}
		close_str += '[/tr]\n';
	}
	insert_ubbc('[table]\n' + open_str, close_str + '[/table]');
	restore_bg('table');
	return false;
}

function insert_symbol(chr) {
	insert_ubbc('', '', chr);
	restore_bg('symbol');
	return;
}

function preview_symbol(chr, name) {
	get('symbol_preview_chr', ID).value = chr;
	get('symbol_preview_name', ID).value = name;
	return false;
}

function check_spelling() {
	speller_form = (arguments[0])? arguments[0] : document.post_form;
	fade_out_bg();
	if(speller_form.description)
		var speller = new spellChecker(speller_form.subject, speller_form.description, speller_form.message);
	else if(speller_form.subject)
		var speller = new spellChecker(speller_form.subject, speller_form.message);
	else
		var speller = new spellChecker(speller_form.message);
	speller.popUpUrl += color_str;
	speller.openChecker();
}

document.onkeydown = function(e) {
	e = e || window.event;
	key_code = e.keyCode || e.which;
	isCtrl = e.ctrlKey;
	isShift = e.shiftKey;
	isAlt = e.altKey;
	if(key_code == '27') {
		restore_bg();
	} else if((isCtrl || isShift || isAlt) && document.getElementsByName(textarea_id).item(0)) {
		var textarea = document.getElementsByName(textarea_id).item(0);
		if(textarea.has_focus && textarea.has_focus == '1') {
			if(isCtrl && key_code == '66') {
				insert_ubbc('[b]', '[/b]');
				return prevent_default(e);
			} else 	if(isCtrl && key_code == '73') {
				insert_ubbc('[i]', '[/i]');
				return prevent_default(e);
			} else 	if(isCtrl && key_code == '85') {
				insert_ubbc('[u]', '[/u]');
				return prevent_default(e);
			} else 	if(isCtrl && key_code == '72') {
				show_popup('hyperlink');
				return prevent_default(e);
			} else 	if(isCtrl && key_code == '72') {
				show_popup('hyperlink');
				return prevent_default(e);
			} else if(isAlt && key_code == '13') {
				insert_ubbc('\n[*]');
				return prevent_default(e);
			} else if(isCtrl && key_code == '9') {
				insert_ubbc('[tab]');
				return prevent_default(e);
			} else if(isCtrl == true && key_code == '69') {
				insert_ubbc('[center]', '[/center]');
				return prevent_default(e);
			} else if(isCtrl && key_code == '82') {
				insert_ubbc('[right]', '[/right]');
				return prevent_default(e);
			}
		}
	}
}

function prevent_default(e) {
	if(e && e.preventDefault)
		e.preventDefault();
	return false;
}

var delay = 1;
var allowed_autosave = (new Date()).getTime() + (60 * delay * 1000);
var editor;
var running_timer = false;
var draft_saved;
var draft_saved_timer;
function pre_autosave() {
	now = (new Date()).getTime();
	if(allowed_autosave <= now) {
		autosave();
		allowed_autosave = now + (60 * delay * 1000);
		running_timer = false;
	} else {
		if(!running_timer) {
			setTimeout('pre_autosave()', ((allowed_autosave - now) + 25));
			running_timer = true;
		}
	}
}

function autosave() {
	if(!get('draft_form', 'id')) {
		/* Produce and Append Form. */
		var form_holder = document.createElement('div');
			form_holder.style.display = 'none';
		var form_str = '<form action="/action/save_draft" target="draftframe" method="post" id="draft_form">';
			form_str += '</form><iframe name="draftframe" id="draftframe"></iframe>';
			form_holder.innerHTML = form_str;
		document.body.appendChild(form_holder);
	}
	if(get('draft_form', 'id')) {
		var draft_form_holder = document.getElementsByName(textarea_id).item(0);
		while(draft_form_holder.nodeName.toLowerCase() != "form") {
			draft_form_holder = draft_form_holder.parentNode;
		}
		var temp_form = document.createElement('div');
		var form_elements = draft_form_holder.getElementsByTagName('*');
		for(f=0; f<form_elements.length; f++) {
			n = form_elements[f].nodeName.toLowerCase();
			if(n == "select" || n == "input" || n == "textarea") {
				temp = form_elements[f].cloneNode(true);
				if(n == "textarea") {
					temp.innerHTML = form_elements[f].value.replace(/</gi, "&lt;").replace(/>/gi, "&gt;");
				}
				temp_form.appendChild(temp);
			}
		}
		
		var ai = document.createElement('input');
			ai.name = 'action';
			ai.type = 'text';
			ai.setAttribute('value', (draft_form_holder.action.match(/action\/((\w|_)+)(\/|$)/gi)? RegExp.$1 : 'post'));
		temp_form.appendChild(ai);
		
		if(temp_form.innerHTML != get('draft_form', 'id').innerHTML) {
			get('draft_form', 'id').innerHTML = temp_form.innerHTML;
			get('draft_form', 'id').submit();
			allowed_autosave = (new Date()).getTime() + (60 * delay * 1000);
			
			// Message Saved At... 
			if(get('draft_display', 'id')) {
				draft_saved = (new Date()).getTime();
				update_draft_time();
			}
		}
	}
}

function update_draft_time() {
	if(get('draft_display', 'id')) {
		clearTimeout(draft_saved_timer);
		now = (new Date()).getTime();
		difference = Math.floor((now - draft_saved) / 30000) / 2;
		get('draft_display', 'id').innerHTML = 'Draft saved ' + difference +' minute'+ ((difference == '1')? '' : 's') +' ago';
		draft_saved_timer = setTimeout('update_draft_time();', 30000);
		if(get('status_holder', 'id')) {
			get('status_holder', 'id').style.display = 'none';
		}
	}
}

function preg_quote(str) {
    // http://kevin.vanzonneveld.net
    // +   original by: booeyOH
    // +   improved by: Ates Goral (http://magnetiq.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   bugfixed by: Onno Marsman
    return (str+'').replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!<>\|\:])/g, "\\$1");
}

function insert_avatar(form) {
	if(form.image.value != "") {
		if(form.image.value.match(/\.(gif|jpe?g|png)$/i)) {
			upload_type = 'avatar';
			show_upload_error('<img src="http://uploads.virtualforums.co.uk/ajax-loader.gif" alt="Loading..." />');
			document.getElementById('image_upload').style.display = 'none';
			form.action = '/uploader.php';
			form.target = 'image_upload_iframe';
			form.method = 'post';
			return true;
		} else if(form.image.value != "") {
			show_upload_error('<b>Error:</b> You may only upload GIF, JPG or PNG file extentions.');
			return false;
		}
	}
	if(posting) {
		if(form.src.value != "") { get('avatar_url', ID).value = form.src.value; }
		if(form.width.value != "") { get('avatar_width', ID).value = form.width.value; }
		if(form.height.value != "") { get('avatar_height', ID).value = form.height.value; }
		form.reset();
		restore_bg('avatar');
	}
	return false;
}

//-->