	function setClassRemember(className, force){
		if (typeof(force) != 'undefined') setCookie('toggle_' + className, force, 365);
		var v = getCookie('toggle_' + className);
		setClassDisplay(className, v);
		setClassDisplay(className+'_neg', 1-v);
	}

	var hak_textile_tag_initialized = 0;
	function addEvent(obj, evType, fn){
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, true);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	}

	function initQuicktags(identifier) {
		if (!hak_textile_tag_initialized) {
			var getCanvas = document.getElementsByTagName("textarea");
			for (var i = 0; i < getCanvas.length; i++) {
				if (getCanvas[i].name == identifier  || getCanvas[i].id == identifier) {
					var canvas = getCanvas[i];
				}
				if (canvas) {
					var toolbar = document.getElementById("textilebar");
					toolbar.style.visibility = "visible";
					var edButtons = new Array();
					edButtons = theButtons;
					for (var i = 0; i < edButtons.length; i++) {
						var thisButton = edShowButton(edButtons[i], canvas);
						toolbar.appendChild(thisButton);
					}
				}
			}
			hak_textile_tag_initialized = 1;
		}
	}

	function edShowButton(button, edCanvas) {
		var theButton = document.createElement("div");
		theButton.id = button.id;
		theButton.title = button.id;
		theButton.className = 'textilebutton';
		theButton.className += ' ' + button.id;
		theButton.tagStart = button.tagStart;
		theButton.tagEnd = button.tagEnd;
		theButton.open = button.open;
		if (button.id == 'link') {
			theButton.onclick = function() { edInsertLink(edCanvas);}
		} else if (button.id == 'ed_close') {
			theButton.onclick = function() { edCloseAllTags(edCanvas); }
		} else {
			theButton.onclick = function() { edInsertTag(edCanvas,this); }
		}
		theButton.innerHTML = (button.display) + "";
		return theButton;
	}

	function edAddTag(button) {
		if (button.tagEnd != '') {
			edOpenTags[edOpenTags.length] = button;
			button.innerHTML = '/' + button.innerHTML;
			button.className = button.className.replace("textilebutton", "active");
		}
	}

	function edRemoveTag(button) {
		for (i = 0; i < edOpenTags.length; i++) {
			if (edOpenTags[i] == button) {
				edOpenTags.splice(button, 1);
				button.innerHTML = button.innerHTML.replace('/', '');
				button.className = button.className.replace("active", "textilebutton");
			}
		}
	}

	function edCheckOpenTags(button) {
		var tag = 0;
		for (i = 0; i < edOpenTags.length; i++) {
			if (edOpenTags[i] == button) {
				tag++;
			}
		}
		if (tag > 0) {
			return true;
		} else {
			return false;
		}
	}

	function edCloseAllTags(edCanvas) {
		var count = edOpenTags.length;
		for (o = 0; o < count; o++) {
			edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]);
		}
	}

	function edInsertTag(myField, button) {
		if (document.selection) {
			myField.focus();
			sel = document.selection.createRange();
			if (sel.text.length > 0) {
				sel.text = button.tagStart + sel.text + button.tagEnd;
			} else {
				if (!edCheckOpenTags(button) || button.tagEnd == '') {
					sel.text = button.tagStart;
					edAddTag(button);
				} else {
					sel.text = button.tagEnd;
					edRemoveTag(button);
				}
			}
			myField.focus();
		} else if (myField.selectionStart || myField.selectionStart == '0') {
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			var cursorPos = endPos;
			var scrollTop = myField.scrollTop;
			if (startPos != endPos) {
				myField.value = myField.value.substring(0, startPos) + button.tagStart + myField.value.substring(startPos, endPos) + button.tagEnd + myField.value.substring(endPos, myField.value.length);
				cursorPos += button.tagStart.length + button.tagEnd.length;
			}else {
				if (!edCheckOpenTags(button) || button.tagEnd == '') {
					myField.value = myField.value.substring(0, startPos) + button.tagStart + myField.value.substring(endPos, myField.value.length);
					edAddTag(button);
					cursorPos = startPos + button.tagStart.length;
				}else {
					myField.value = myField.value.substring(0, startPos)+ button.tagEnd + myField.value.substring(endPos, myField.value.length);
					edRemoveTag(button);
					cursorPos = startPos + button.tagEnd.length;
				}
			}
			myField.focus();
			myField.selectionStart = cursorPos;
			myField.selectionEnd = cursorPos;
			myField.scrollTop = scrollTop;
		}else {
			if (!edCheckOpenTags(button) || button.tagEnd == '') {
				myField.value += button.tagStart;
				edAddTag(button);
			} else {
				myField.value += button.tagEnd;
				edRemoveTag(button);
			}
			myField.focus();
		}

	}

	function edInsertContent(myField, myValue) {
		if (document.selection) {
			myField.focus();
			sel = document.selection.createRange();
			sel.text = myValue;
			myField.focus();
		}
		else if (myField.selectionStart || myField.selectionStart == '0') {
			var startPos = myField.selectionStart;
			var endPos = myField.selectionEnd;
			myField.value = myField.value.substring(0, startPos) + 
			myValue + myField.value.substring(endPos, 
			myField.value.length);
			myField.focus();
			myField.selectionStart = startPos + myValue.length;
			myField.selectionEnd = startPos + myValue.length;
		} else {
			myField.value += myValue;
			myField.focus();
		}
	}

	function edInsertLink(myField) {
		var myValue = prompt('URL-osoite:', 'http://');
		var myText = prompt('Linkkiteksti:', '');
		if (myValue) {
			myValue = '"' + myText + '":' + myValue + ' ';
			edInsertContent(myField, myValue);
		}
	}

	function edButton(id, display, tagStart, tagEnd, open) {
		this.id = id;
		this.display = display;
		this.tagStart = tagStart;
		this.tagEnd = tagEnd;
		this.open = open;
	}

	var theButtons = new Array();
	var edOpenTags = new Array();

	theButtons[theButtons.length] = new edButton('strong','strong','*','*');
	theButtons[theButtons.length] = new edButton('link','url','','');
	theButtons[theButtons.length] = new edButton('emphasis','em','_','_');
	theButtons[theButtons.length] = new edButton('ins','ins','+','+');
	theButtons[theButtons.length] = new edButton('del','del','-','-');
	theButtons[theButtons.length] = new edButton('codeline','codeline','@','@');
	theButtons[theButtons.length] = new edButton('ul','ul','*','\n');
	theButtons[theButtons.length] = new edButton('ol','ol','#','\n');
	theButtons[theButtons.length] = new edButton('sup','sup','^','^');
	theButtons[theButtons.length] = new edButton('sub','sub','~','~');
	theButtons[theButtons.length] = new edButton('bq','bq','bq.','\n\n');
	theButtons[theButtons.length] = new edButton('bc','bc','bc.','\n\n');
	
	$(document).ready(function(){
		$('textarea#message').before('<div id="textilebar"></div>');
		addEvent(window, 'load', function() {initQuicktags('message')});
		$('a[rel="external"]').each(function() {
			$(this).attr('target', '_blank');
		});
		$('a img').mouseover(function(){
			$(this).css("opacity","0.9");
		}).mouseout(function(){
			$(this).css("opacity","1.0");
		});
		$('a[@rel*=lightbox]').lightBox();
		$('#pikahakulomake').hide();
		$('#skippari').prepend('<li id="skippari-hae"><a href="#">Haku</a></li>');
		$('#skippari-hae a').click(function(){
			$('#pikahakulomake').toggle();
		});
	});