var ipath = 'img/smilies/pangya/';
//'http://i621.photobucket.com/albums/tt296/A18E/emotes/'
// some fudge because photobucket doesn't like '0.gif'
var emoteurls = { 'a0': 'http://i621.photobucket.com/albums/tt296/A18E/emotes/71ffb157.gif' }
var emotelist = 'tense oo; :D sorry :] mad oo :> ;] cool love T.T sob :[ :/ D: puke :s bow :p :} lol shame clap no hat <3 </3 cake gift mail kiss rose < beer joe v pen bone idea tel note horn halo sun fire snow tear rain boom star umb time pang pop cell > rock five peace up down ok stop one'.split(' ');

function pangya_getimg(id) {
  id = ''+ id;
  return emoteurls[id] || ( ipath + id +'.gif');
}

function $(s) { return document.getElementById(s); }

/**
* Insert at Caret position. Code from
* http://www.faqts.com/knowledge_base/view.phtml/aid/1052/fid/130
*/
function storeCaret(textEl)
{
	if (textEl.createTextRange)
	{
		textEl.caretPos = document.selection.createRange().duplicate();
	}
}

/**
* From http://www.massless.org/mozedit/
*/
function mozWrap(txtarea, open, close)
{
	var selLength = txtarea.textLength;
	var selStart = txtarea.selectionStart;
	var selEnd = txtarea.selectionEnd;
	var scrollTop = txtarea.scrollTop;

	if (selEnd == 1 || selEnd == 2)
	{
		selEnd = selLength;
	}

	var s1 = (txtarea.value).substring(0,selStart);
	var s2 = (txtarea.value).substring(selStart, selEnd)
	var s3 = (txtarea.value).substring(selEnd, selLength);

	txtarea.value = s1 + open + s2 + close + s3;
	txtarea.selectionStart = selEnd + open.length + close.length;
	txtarea.selectionEnd = txtarea.selectionStart;
	txtarea.focus();
	txtarea.scrollTop = scrollTop;

	return;
}


// fn lifted/modified from phpBB
// i noticed this is broken for if the input box has a single char
// and cursor is after it...

function insert_text(text, spaces, popup)
{
	var textarea = $('req_message');

  if (spaces)
	{
		text = ' ' + text + ' ';
	}

	if (!isNaN(textarea.selectionStart))
	{
		var sel_start = textarea.selectionStart;
		var sel_end = textarea.selectionEnd;

		mozWrap(textarea, text, '')
		textarea.selectionStart = sel_start + text.length;
		textarea.selectionEnd = sel_end + text.length;
	}
	else if (textarea.createTextRange && textarea.caretPos)
	{
		if (baseHeight != textarea.caretPos.boundingHeight)
		{
			textarea.focus();
			storeCaret(textarea);
		}

		var caret_pos = textarea.caretPos;
		caret_pos.text = caret_pos.text.charAt(caret_pos.text.length - 1) == ' ' ? caret_pos.text + text + ' ' : caret_pos.text + text;
	}
	else
	{
		textarea.value = textarea.value + text;
	}
	if (!popup)
	{
		textarea.focus();
	}
}



function makeEmote(title, id) {
  title = '('+ title + ')'
  var img = document.createElement('img');
  img.setAttribute('class','pangya_emote');
  img.setAttribute('src', pangya_getimg(id));

  img.setAttribute('width', '26');
  img.setAttribute('height', '24');
  img.setAttribute('alt', title);
  img.onmouseover = function() {
    $('pangya_emotes_tip').innerHTML = title;
  }
  img.onmouseout = function() {
    $('pangya_emotes_tip').innerHTML = '&nbsp;';
  }
  img.onclick = function() {
    insert_text( title );
    $('req_message').focus()
  }
  return img;
}

var pangya_halp_created = false;
var pangya_halp_toggle = false;
function pangya_halp() {
  if (!pangya_halp_toggle) {
    if (!pangya_halp_created) {
      var i, e;
      var f = $('pangya_emotes_forward'), r = $('pangya_emotes_reverse');
      for (i = 0; e = emotelist[i]; i++) {
        f.appendChild(makeEmote(e, i));
        r.appendChild(makeEmote('-'+ e, '-'+ i));
      }
      pangya_halp_created = true;
    }
    $('pangya_emotes').style.display = '';
    pangya_halp_toggle = true;
  } else {
    $('pangya_emotes').style.display = 'none';
    pangya_halp_toggle = false;
  }
  $('req_message').focus();
}

var pangya_emotes_init = function() {
  var msg = $('req_message');
  msg.onkeydown = function(event) {
    if (event.shiftKey) {
      $('pangya_emotes_forward').style.display = 'none';
      $('pangya_emotes_reverse').style.display = '';
    }
  }
  msg.onkeyup = function(event) {
    $('pangya_emotes_reverse').style.display = 'none';
    $('pangya_emotes_forward').style.display = '';
    storeCaret(msg);
  }
}
