// Javascript edit bar functions
//
// Functions to add formatting codes to a textarea
//

function editbarAddMarkup(ta_id, code) {
	var myField = document.getElementById(ta_id);
	//IE support
	if (document.selection) {
	  myField.focus();
	  sel = document.selection.createRange();
	  if (sel.text.length > 0) {
	    sel.text = code + sel.text + code;
	    }
	  else {
	    sel.text = code;
	    }
	  myField.focus();
	  }

	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
	  var startPos = myField.selectionStart;
	  var endPos = myField.selectionEnd;
	  var cursorPos = endPos;
	  if (startPos != endPos) {
	    myField.value = myField.value.substring(0, startPos)
			  + code
			  + myField.value.substring(startPos, endPos) 
			  + code
			  + myField.value.substring(endPos, myField.value.length);
	    cursorPos += code.length * 2;
	    }
	  else {
	    myField.value = myField.value.substring(0, startPos) 
			  + code
			  + myField.value.substring(endPos, myField.value.length);
	    cursorPos = startPos + code.length;
	    }
	  myField.focus();
	  myField.selectionStart = cursorPos;
	  myField.selectionEnd = cursorPos;
	  }

	// Not Mozzilla/IE/etc. - add at end
	else {
	  myField.value += code;
	  myField.focus();
	  }

}

//
// Add a link
function editbarAddLink(ta_id, start, end) {
	editbarAddALink(ta_id, start, end, "Enter the link text:");
}
function editbarAddImageLink(ta_id, start, end) {
	editbarAddALink(ta_id, start, end, "Enter the image caption:");
}


function editbarAddALink(ta_id, start, end, text_prompt) {
	var myField = document.getElementById(ta_id);
	var myURL = promptWrapper('Enter the URL:', 'http://');
	var myText = promptWrapper(text_prompt, '');

	// return if something was cancelled
	if (!myURL || !myText) { return; }

	var code = start+myURL+','+myText+end

	//IE support
	if (document.selection) {
	  myField.focus();
	  sel = document.selection.createRange();
	  if (sel.text.length > 0) {
	    sel.text = sel.text + code;
	    }
	  else {
	    sel.text = code;
	    }
	  myField.focus();
	  }

	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
	  var startPos = myField.selectionStart;
	  var endPos = myField.selectionEnd;
	  var cursorPos = endPos;
	  if (startPos != endPos) {
	    myField.value = myField.value.substring(0, startPos)
			  + code
			  + myField.value.substring(endPos, myField.value.length);
	    //cursorPos += code.length;
	    }
	  else {
	    myField.value = myField.value.substring(0, startPos) 
			  + code
			  + myField.value.substring(endPos, myField.value.length);
	    cursorPos = startPos + code.length;
	    }
	  myField.focus();
	  myField.selectionStart = cursorPos;
	  myField.selectionEnd = cursorPos;
	  }

	// Not Mozzilla/IE/etc. - add at end
	else {
	  myField.value += code;
	  myField.focus();
	  }
}

//
// Add an Inline Image code
function editbarAddInlineImg(ta_id) {
	var myImg = promptWrapper('Enter the image number:', '');

	// return if prompt was cancelled
	if (!myImg) { return; }
	editbarAddInlineImgCode(ta_id, myImg);
}

function editbarAddInlineImgCode(ta_id, myImg) {
	var myField = document.getElementById(ta_id);
	var code = '(('+myImg+'))'

	//IE support
	if (document.selection) {
	  myField.focus();
	  sel = document.selection.createRange();
	  if (sel.text.length > 0) {
	    sel.text = sel.text + code;
	    }
	  else {
	    sel.text = code;
	    }
	  myField.focus();
	  }

	//MOZILLA/NETSCAPE support
	else if (myField.selectionStart || myField.selectionStart == '0') {
	  var startPos = myField.selectionStart;
	  var endPos = myField.selectionEnd;
	  var cursorPos = endPos;
	  if (startPos != endPos) {
	    myField.value = myField.value.substring(0, startPos)
			  + code
			  + myField.value.substring(endPos, myField.value.length);
	    //cursorPos += code.length;
	    }
	  else {
	    myField.value = myField.value.substring(0, startPos) 
			  + code
			  + myField.value.substring(endPos, myField.value.length);
	    cursorPos = startPos + code.length;
	    }
	  myField.focus();
	  myField.selectionStart = cursorPos;
	  myField.selectionEnd = cursorPos;
	  }

	// Not Mozzilla/IE/etc. - add at end
	else {
	  myField.value += code;
	  myField.focus();
	  }
}

function promptWrapper(promptstring, def) {
  try {
    // test for IE and call hideous workarounds if needed
    if(document.all) {
      return iePrompt(promptstring, def);
      }
    // not the hideous IE
    else {
      return prompt(promptstring, def);
      }
    }
  catch (e) {
    return false;
    }
}

function iePrompt(str, def) {
  var settings = "dialogWidth: 290px; dialogHeight: 160px; center: yes; edge: raised; scroll: no; status: no;";
  var options = new Array;
  options[0] = str; options[1] = def;
  return window.showModalDialog("/hacks/iePrompt.html", options, settings);
  }

