/**
 * Based on Torsten Anacker's script
 * torsten@anaboe.net
 */

function insertMarkdown(repstart, repend, tid) {
  var input = document.getElementById(tid);
  var scrollPos = input.scrollTop;
  input.focus();
  /* IE */
  if(typeof document.selection != 'undefined') {

    var range = document.selection.createRange();
    var insText = range.text;
    range.text = repstart + insText + repend;
    
    range = document.selection.createRange();
    if (insText.length == 0) {
      range.move('character', -repend.length);
    } else {
      range.moveStart('character', repstart.length + insText.length + repend.length);
    }
    range.select();
  }
  /* Gecko*/
  else if(typeof input.selectionStart != 'undefined')
  {
    var start = input.selectionStart;
    var end = input.selectionEnd;
    var insText = input.value.substring(start, end);
    
    if(repstart == "[" && insText.length == 0) {
    	var foo = "Link text here";
    } else if(repstart == "![" &&  insText.length == 0) {
    	var foo = "Alt text here";    
    } else if(repstart == "\t" && insText.length != 0) {
    	var insText = insText.split('\n');
    	var line = '';
    	var i = 0;
    	while(insText[i]) {
    		line += "\t" + insText[i] + "\r\n";
    		i += 1;
    	}
    	var insText = line.substring(0, line.length - 2);
    	repstart = '';
    	var foo = '';
    } else {
    	var foo = '';
    }
    input.value = input.value.substr(0, start) + repstart + insText + foo + repend + input.value.substr(end);

    var pos;
    if (insText.length == 0) {
      pos = start + repstart.length;
      input.selectionStart = pos;
      input.selectionEnd = pos + foo.length;
    } else {
      pos = start + repstart.length + insText.length + repend.length;
      input.selectionStart = pos;
      input.selectionEnd = pos;
    }
	input.focus();
	input.scrollTop = scrollPos;
  }
  /* other browsers */
  else
  {
    var pos;
    var re = new RegExp('^[0-9]{0,3}$');
    while(!re.test(pos)) {
      pos = prompt("Insert position (0.." + input.value.length + "):", "0");
    }
    if(pos > input.value.length) {
      pos = input.value.length;
    }
    var insText = prompt("Formating text input:");
    input.value = input.value.substr(0, pos) + repstart + insText + repend + input.value.substr(pos);
  }
}
