+ static $do_setup = TRUE;
+
+ $r = '';
+
+ if ($alias != '' && ! is_array($alias))
+ {
+ $alias = array($alias => $field_id);
+ }
+
+ if ($do_setup === TRUE)
+ {
+ $do_setup = FALSE;
+
+ $m = array();
+
+ if (is_array($alias))
+ {
+ foreach($alias as $name => $id)
+ {
+ $m[] = '"'.$name.'" : "'.$id.'"';
+ }
+ }
+
+ $m = '{'.implode(',', $m).'}';
+
+ $r .= <<<EOF
+
+ var smiley_map = {$m};
+
+ function insert_smiley(smiley, field_id) {
+ var el = document.getElementById(field_id), newStart;
+
+ if ( ! el && smiley_map[field_id]) {
+ el = document.getElementById(smiley_map[field_id]);
+
+ if ( ! el)
+ return false;
+ }
+
+ el.focus();
+ smiley = " " + smiley;
+
+ if ('selectionStart' in el) {
+ newStart = el.selectionStart + smiley.length;
+
+ el.value = el.value.substr(0, el.selectionStart) +
+ smiley +
+ el.value.substr(el.selectionEnd, el.value.length);
+ el.setSelectionRange(newStart, newStart);
+ }
+ else if (document.selection) {
+ document.selection.createRange().text = text;
+ }
+ }