// Copyright Utopian Vision - http://utopianvision.co.uk

var cursor = -1;
var half = false;

function addevents() {
  var mdoc = document.getElementById('message');
  var imlist = new Array();
  if(mdoc) {
    imlist = mdoc.getElementsByTagName('IMG');
  }
  var len = imlist.length;
  var i = 0;
  var count = 0;
  for(i = 0;i < len;i++) {
    var img = imlist[i];
    if(img.id != 'cursor') {
      img.id = "img"+count;
      count++;
      if(img.addEventListener) {
        img.addEventListener("click",msgclick,false);
      } else {
        img.attachEvent("onclick",msgclick);
      }
    }
  }
}

function dochar(ch) {
  var fm = document.getElementById('fm');
  var msg = fm.msg.value;
  var len = msg.length;
  var c = cursor;
  var i = 0;
  var p = 0; // character position allowing for half letters.
  var a = msg;
  var b = '';
  for(i = 0;i < len;i++) {
    if(c == p) {
      a = msg.substring(0,i);
      b = msg.substring(i);
      break;
    }
    if(msg.substring(i,i+1) != '-') {
      p++;
    }
  }
  if(i == len) {
    c = p;
  }
  var cursorchange = 0;
  var update = 0;

  if(ch == "backspace") {
    if(c > 0) {
      var numchars = 1;
      var alen = a.length;
      if(alen >= 2) {
        if(a.substring(alen-2,alen-1) == '-') {
          numchars = 2;
        }
      } 
      if(alen-numchars >= 0) {
        msg = a.substring(0,alen-numchars)+b;
        cursorchange = -1;
        update = 1;
      }
    }
  } else if(ch == "-") {
    half = !half;
    showhalfkeyboard(half);
  } else {
    msg = a+ch+b;
    cursorchange = 1;
    update = 1;
    if(half) {
      half = false;
      showhalfkeyboard(half);
    }
  }
  if(update) {
    updatemessage(msg,c+cursorchange);
  }
}

function msgclick(e) {
  if(!e) {
    e = window.event;
  }
  var targ = null;
  if(e.target) {
    targ = e.target;
  } else if(e.srcElement) {
    targ = e.srcElement;
  }
  if(targ) {
    var id = targ.id;
    var cursor = parseInt(id.substring(3));
    if(parent != self && parent.setcursor) {
      parent.setcursor(cursor);
    } else {
      setcursor(cursor);
    }
  }
  e.cancelBubble = true;
}

function resetmsg() {
  var fm = document.getElementById('fm');
  fm.msg.value = '';
  cursor = -1;
}

function setcursor(p) {
  var fm = document.getElementById('fm');
  updatemessage(fm.msg.value,p);
}

function setupmessage() {
  var fm = document.getElementById('fm');
  var msg = fm.msg.value;
  updatemessage(msg,cursor);
}

function showhalfkeyboard(b) {
  var hkeys = document.getElementById('halfkeys');
  if(hkeys) {
    hkeys.style.visibility = b ? 'visible' : 'hidden';
  }
}

function showmsg(msg,cursor) {
  var useimages = 1;
  if((typeof(lang) == "string") && lang == "english") {
    useimages = 0;
  }
  var out = '';
  if(useimages) {
    var len = msg.length;
    var i = 0;
    var p = 0;
    var ch = '';
    var cursorhtml = '<img id="cursor" src="/images/general/cursor.gif" width="1" height="24" border="0">';
    for(i = 0;i < len;i++) {
      if(cursor == p) {
        out += cursorhtml;
      }
      ch = msg.substring(i,i+1);
      if(ch == '-') {
        i++;
        if(i < len) {
          ch += msg.substring(i,i+1);
        }
      }
      p++;
      out += chars[ch];
    }
    if((cursor < 0) || (cursor >= p)) {
      out += cursorhtml;
    }
  } else {
    out = msg;
    out = out.replace(/</g,'&lt;');
    out = out.replace(/>/g,'&gt;');
    out = out.replace(/\n/g,'<br>');
  }
  var ob = document.getElementById('message');
  if(ob) {
    ob.innerHTML = out;
    addevents();
  }
}

function updatemessage(msg,cur) {
  var fm = document.getElementById('fm');
  if(typeof(messageframe) == "string") {
    var win = window.frames[messageframe];
    if(win && win.showmsg) {
      win.showmsg(msg,cur);
      fm.msg.value = msg;
      cursor = cur;
    } else {
      alert('Please wait for the page to load. Thank you.');
    }
  } else {
      showmsg(msg,cur);
      fm.msg.value = msg;
      cursor = cur;    
  }
}








