function insert_var(var_name){
	var o_text   = document.getElementById('theme_contents');
	
	// Get caret position
	var s = new Selection(o_text);
	var res = s.create();
	var ca_begin = res.start;
	var ca_end   = res.end;
	var part1    = o_text.value.substr(0, ca_begin);
	var part2    = o_text.value.substr(ca_end, o_text.value.length - ca_end + 1);
	var data     = '{' + var_name + '}';
	var data_len = data.length;
	
	// Insert {template_var}
	o_text.value = part1 + data + part2;
	
	// Set caret position
	if (document.all) { // IE
	} else { // FF
		o_text.selectionStart = ca_begin + data_len;
		o_text.selectionEnd   = o_text.selectionStart;
	}
	o_text.focus();
}

// Cross Browser selectionStart/selectionEnd
// Version 0.1
// Copyright (c) 2005 KOSEKI Kengo
// 
// This script is distributed under the MIT licence.
// http://www.opensource.org/licenses/mit-license.php

function Selection(textareaElement) {
	this.element = textareaElement;
}

Selection.prototype.create = function() {
	if (document.selection != null && this.element.selectionStart == null) {
		return this._ieGetSelection();
	} else {
		return this._mozillaGetSelection();
	}
}

Selection.prototype._mozillaGetSelection = function() {
	return { 
		start: this.element.selectionStart, 
		end: this.element.selectionEnd 
	};
}

Selection.prototype._ieGetSelection = function() {
	this.element.focus();
	
	var range = document.selection.createRange();
	var bookmark = range.getBookmark();
	
	var contents = this.element.value;
	var originalContents = contents;
	var marker = this._createSelectionMarker();
	while(contents.indexOf(marker) != -1) {
		marker = this._createSelectionMarker();
	}
	var selection = range.text;
	
	var parent = range.parentElement();
	if (parent == null || parent.type != "textarea") {
		return { start: 0, end: 0 };
	}
	range.text = marker + range.text + marker;
	contents = this.element.value;
	
	var result = {};
	result.start = contents.indexOf(marker);
	contents = contents.replace(marker, "");
	result.end = contents.indexOf(marker);
	
	this.element.value = originalContents;
	range.moveToBookmark(bookmark);
	range.select();
	
	return result;
}

Selection.prototype._createSelectionMarker = function() {
	return "##SELECTION_MARKER_" + Math.random() + "##";
}

