
function storeCaret (textEl) {
    if (textEl.createTextRange) {
        textEl.caretPos = document.selection.createRange().duplicate();
	}
}



function insertAtCaret (textEl, text) {
        if (textEl.createTextRange && textEl.caretPos) {
                var caretPos = textEl.caretPos;
                caretPos.text =
                        caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
                        text + ' ' : text;
        } else {
                textEl.value  = textEl.value + text; // for non MSIE browsers just append it
        }

        return true;
}



function doPrompt(form, textarea, action) {
        var currentMessage = document.forms[form].elements[textarea].value;

        if(action == "h1") {
                var thisH1 = prompt(lang['editor']['prompt_h1'], "");
                if(!thisH1) {
				    return;
				}
                insertAtCaret(document.forms[form].elements[textarea], ' ' + "[H1]" + thisH1 + "[/H1]" + ' ' );
                document.forms[form].elements[textarea].focus();
                return;
		}
		
        if (action == "url") {
                var thisURL = prompt(lang['editor']['prompt_a'], "http://");
                if (thisURL == null){return;}

                var thisTitle = prompt(lang['editor']['prompt_a_desc'], lang['editor']['prompt_a_ddef']);
                if (thisTitle == null){return;}
				
                insertAtCaret(document.forms[form].elements[textarea], ' ' +
                                          "[A "+
										  (confirm(lang['editor']['prompt_a_tgt']) ? 'TARGET=BLANK ' : '') +
										  "HREF=" +
                                              thisURL + "]" + thisTitle + "[/A]" + ' ');
                document.forms[form].elements[textarea].focus();
                return;
        }

        if (action == "email") {
                var thisEmail = prompt(lang['editor']['prompt_email'], "");
                if (thisEmail == null) {
				    return;
				}
				var thisEmailDesc = prompt(lang['editor']['prompt_email_d'], "");
				
				if(!thisEmailDesc) {
				    thisEmailDesc = thisEmail;
				}

                insertAtCaret(document.forms[form].elements[textarea], ' ' +
                                         "[A HREF=mailto:" + thisEmail + "]" + thisEmailDesc + '[/A] ' );
               document.forms[form].elements[textarea].focus();
                return;
        }

        if (action == "bold") {
                var thisBold = prompt(lang['editor']['prompt_b'], "");
                if (thisBold == null){return;}

                insertAtCaret(document.forms[form].elements[textarea], ' ' + "[B]" + thisBold + "[/B]" + "\n" );
                document.forms[form].elements[textarea].focus();
                return;
        }

        if (action == "italic") {
                var thisItal = prompt(lang['editor']['prompt_i'], "");
                if (thisItal == null){return;}

                insertAtCaret(document.forms[form].elements[textarea], ' ' + "[I]" + thisItal + "[/I]" + ' ' );
               document.forms[form].elements[textarea].focus();
                return;
        }

        if (action == "image") {
                var thisImage = prompt(lang['editor']['prompt_img'], "http://");
                if (thisImage == null){return;}

                insertAtCaret(document.forms[form].elements[textarea], ' ' + "[IMG]" + thisImage + "[/IMG]" + ' ' );
                document.forms[form].elements[textarea].focus();
                return;
        }


	if(action == "ul") {
	
		    var items = Array();
			var input;
			while(input = prompt(lang['editor']['prompt_ul_li'], "")) {
			    items[items.length] = input;
			}

            var output = "\n[UL]";
			for(i = 0; i < items.length; i++) {
			    output += "\n  [LI]" + items[i];
			}

			output += "\n[/UL]\n";

			insertAtCaret(document.forms[form].elements[textarea], ' ' + output + ' ' );
			document.forms[form].elements[textarea].focus();
			return;
	}
	if(action == "ol") {

		    var items = Array();
			var input;
			while(input = prompt(lang['editor']['prompt_ol_li'], "")) {
			    items[items.length] = input;
			}

            var output = "\n[OL]";
			for(i = 0; i < items.length; i++) {
			    output += "\n  [LI]" + items[i];
			}

			output += "\n[/OL]\n";

			insertAtCaret(document.forms[form].elements[textarea], ' ' + output + ' ' );
			document.forms[form].elements[textarea].focus();
			return;
	}
    if(action == "color") {
        var color = prompt(lang['editor']['prompt_color_c'], "");
        if(!color) {
			return;
		}
		var t = prompt(lang['editor']['prompt_color_t'], "");
        insertAtCaret(document.forms[form].elements[textarea], ' ' + '[COLOR='+color+']' + t + "[/COLOR]" + ' ' );
        document.forms[form].elements[textarea].focus();
        return;
	}
 
    if(action == "hr") {
        insertAtCaret(document.forms[form].elements[textarea], ' [HR] ' );
        document.forms[form].elements[textarea].focus();
        return;
	}
    if(action == "size") {
	    var size = prompt(lang['editor']['prompt_size'], "");
		size = parseInt(size);
		var text = prompt(lang['editor']['prompt_size_t'], "");
        insertAtCaret(document.forms[form].elements[textarea],  '[SIZE='+size+']' + text + "[/SIZE]" + ' ' );
        document.forms[form].elements[textarea].focus();
        return;
	}
}

