//
// FORMATTING PANEL FOR DISCUS 'ADD A MESSAGE' box
// Copyright (c) 2001, DiscusWare, LLC, all rights reserved
// This code is distributed under the same terms as Discus itself
//
// Ändrad för AF 2007-12-25 db
//
function panelclose () {
  if (document.userpass) {
    if (document.userpass.format_b.value == 1) {  
      insertText(document.userpass.message, '}');
    }
    if (document.userpass.format_i.value == 1) {  
      insertText(document.userpass.message, '}');
    }
    if (document.userpass.format_u.value == 1) {  
      insertText(document.userpass.message, '}');
    }
    if (document.userpass.format_q.value == 1) {  
      insertText(document.userpass.message, '}');
    }
//    if (document.userpass.format_link.value == 1) { 
//      insertText(document.userpass.message, '}');
//    }
    if (document.userpass.format_clr.value == 1) {  
      insertText(document.userpass.message, '}');
    }
    if (document.userpass.format_font.value == 1) { 
      insertText(document.userpass.message, '}');
    }
    if (document.userpass.format_size.value == 1) { 
      insertText(document.userpass.message, '}');
    }
  }
  return true;  
}

function storeCursorPosition (elem) {
  if (elem.createTextRange) {
    elem.caretPos = document.selection.createRange().duplicate();
  }
}

function insertText (elem, text) {
  elem.focus();
  if (elem.createTextRange && typeof(elem.caretPos) != "undefined") {
    var caretPos = elem.caretPos;
    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
  }
  else if (typeof(elem.selectionStart) != "undefined")
  {
    var begin = elem.value.substr(0, elem.selectionStart);
    var selection = elem.value.substr(elem.selectionStart, elem.selectionEnd - elem.selectionStart);
    var end = elem.value.substr(elem.selectionEnd);
    var newCursorPos = elem.selectionStart;
    var scrollPos = elem.scrollTop;

    elem.value = begin + text + selection + end;

    if (elem.setSelectionRange)
    {
      if (selection.length == 0)
        elem.setSelectionRange(newCursorPos + text.length, newCursorPos + text.length);
      else
        elem.setSelectionRange(newCursorPos, newCursorPos + text.length + selection.length);
      elem.focus();
    }
    elem.scrollTop = scrollPos;
  }
  else {
    elem.value = elem.value + text;
  }
}

function insertChar(ch)
{
  insertText(document.userpass.message, ch);
  document.userpass.message.focus();
  return false;
}


function surroundText(text1, text2, textarea)
{
  // Can a text range be created?
  if (typeof(textarea.caretPos) != "undefined" && textarea.createTextRange)
  {
    var caretPos = textarea.caretPos;

    caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text1 + caretPos.text + text2 + ' ' : text1 + caretPos.text + text2;
    caretPos.select();
  }
  // Mozilla text range wrap.
  else if (typeof(textarea.selectionStart) != "undefined")
  {
    var begin = textarea.value.substr(0, textarea.selectionStart);
    var selection = textarea.value.substr(textarea.selectionStart, textarea.selectionEnd - textarea.selectionStart);
    var end = textarea.value.substr(textarea.selectionEnd);
    var newCursorPos = textarea.selectionStart;
    var scrollPos = textarea.scrollTop;

    textarea.value = begin + text1 + selection + text2 + end;

    if (textarea.setSelectionRange)
    {
      if (selection.length == 0)
        textarea.setSelectionRange(newCursorPos + text1.length, newCursorPos + text1.length);
      else
        textarea.setSelectionRange(newCursorPos, newCursorPos + text1.length + selection.length + text2.length);
      textarea.focus();
    }
    textarea.scrollTop = scrollPos;
  }
  // Just put them on the end, then.
  else
  {
    textarea.value += text1 + text2;
    textarea.focus(textarea.value.length - 1);
  }
}


function isAreaSelected(elem)
{
  if (typeof(elem.selectionStart) != "undefined") {
    // FF
    return elem.selectionEnd != elem.selectionStart;
  } else if (typeof(document.selection) != "undefined") {
    // IE
    return document.selection.type != "None";
  }
  return false;
}


function bolder () {
  if (document.userpass) {
    if (isAreaSelected(document.userpass.message)) {
      surroundText("\\b{", "}", document.userpass.message);
    }
    else if (document.userpass.format_b.value == 1) {
      document.button_b.src = img_bold_up.src;
      insertText(document.userpass.message, '}');
      document.userpass.format_b.value = "0";
    } else {
      document.button_b.src = img_bold_dn.src;
      insertText(document.userpass.message, '\\b{');
      document.userpass.format_b.value = "1";
    }
    document.userpass.message.focus();
  }
  return false;
}


function quote (text) {
  if (document.userpass) {
    var who = prompt(text, "");
    if (who == null || who == "") {
      if (isAreaSelected(document.userpass.message)) {
        surroundText("\\quote{", "}", document.userpass.message);
      }
      else if (document.userpass.format_q.value == 1) {
        document.button_q.src = img_quote_up.src;
        insertText(document.userpass.message, '}');
        document.userpass.format_q.value = "0";
      } else {
        document.button_q.src = img_quote_dn.src;
        insertText(document.userpass.message, '\\quote{');
        document.userpass.format_q.value = "1";
      }
    }
    else {      
      if (isAreaSelected(document.userpass.message)) {
        surroundText("\\quoteperson{" + who + ",", "}", document.userpass.message);
      }
      else if (document.userpass.format_q.value == 1) {
        document.button_q.src = img_quote_up.src;
        insertText(document.userpass.message, '}');
        document.userpass.format_q.value = "0";
      } else {
        document.button_q.src = img_quote_dn.src;
        insertText(document.userpass.message, '\\quoteperson{"' + who + ',');
        document.userpass.format_q.value = "1";
      }
    }
    document.userpass.message.focus();
  }
  return false;
}


function linky_click (text) {
  if (document.userpass) {
//    if (document.userpass.format_link.value == 1) {
//      document.button_link.src = img_link_up.src;
//      insertText(document.userpass.message, '}');
//      document.userpass.format_link.value = "";
//    } else {
      var l = prompt(text, "http://");
      if (l != null) {
//        document.button_link.src = img_link_dn.src;
        insertText(document.userpass.message, '\\topurl{' + l + ',' + l + '}');
//        document.userpass.format_link.value = "1";
//      }
    }
    document.userpass.message.focus();
  }
  return false;
}

function italic () {
  if (document.userpass) {
    if (isAreaSelected(document.userpass.message)) {
      surroundText("\\i{", "}", document.userpass.message);
    } else
    if (document.userpass.format_i.value == 1) {
      document.button_i.src = img_ital_up.src;
      insertText(document.userpass.message, '}');
      document.userpass.format_i.value = "0";
    } else {
      document.button_i.src = img_ital_dn.src;
      insertText(document.userpass.message, '\\i{');
      document.userpass.format_i.value = "1";
    }
    document.userpass.message.focus();
  }
  return false;
}

function underl () {
  if (document.userpass) {
    if (isAreaSelected(document.userpass.message)) {
      surroundText("\\u{", "}", document.userpass.message);
    } else
    if (document.userpass.format_u.value == 1) {
      document.button_u.src = img_undl_up.src;
      insertText(document.userpass.message, '}');
      document.userpass.format_u.value = "0";
    } else {
      document.button_u.src = img_undl_dn.src;
      insertText(document.userpass.message, '\\u{');
      document.userpass.format_u.value = "1";
    }
    document.userpass.message.focus();
  }
  return false;
}

function smiley () {
  if (document.userpass.inserter.value != "") {
    if (typeof document.userpass.tagname != 'undefined') {
      insertText(document.userpass.message, "\\" + document.userpass.tagname.value + "{" + document.userpass.inserter.value + "}");
    } else {
      insertText(document.userpass.message, "\\clipart{" + document.userpass.inserter.value + "}");
    }
    document.userpass.inserter.value = "";
  }
  document.userpass.message.focus();
}

function colorsel () {
  if (document.userpass) {
    if (document.userpass.color) {
      var z = document.userpass.color[document.userpass.color.selectedIndex].value;

      if (isAreaSelected(document.userpass.message)) {
        surroundText("\\" + z + "{", "}", document.userpass.message);
        document.userpass.color.selectedIndex = 0;
      } else
        
      if (z == "") {
        insertText(document.userpass.message, '}');
        document.userpass.format_clr.value = 0;
      } else {
        if (document.userpass.format_clr.value == 1) {
          insertText(document.userpass.message, "}\\" + z + "{");
        } else {
          document.userpass.format_clr.value = 1;
          insertText(document.userpass.message, "\\" + z + "{");
        }
      } 
    }
    document.userpass.message.focus();
  }
}

function fontsel () {
  if (document.userpass) {
    if (document.userpass.font) {
      var z = document.userpass.font[document.userpass.font.selectedIndex].value;

      if (isAreaSelected(document.userpass.message)) {
        surroundText("\\font{" + z + ",", "}", document.userpass.message);
        document.userpass.font.selectedIndex = 0;
      } else
        
      if (z == "") {
        insertText(document.userpass.message, '}');
        document.userpass.format_font.value = 0;
      } else {
        if (document.userpass.format_font.value == 1) {
          insertText(document.userpass.message, "}\\font{" + z + ",");
        } else {
          insertText(document.userpass.message, "\\font{" + z + ",");
          document.userpass.format_font.value = 1;
        }
      } 
    }
    document.userpass.message.focus();
  }
}

function sizesel () {
  if (document.userpass) {
    if (document.userpass.size) {
      var z = document.userpass.size[document.userpass.size.selectedIndex].value;
      if (isAreaSelected(document.userpass.message)) {
        surroundText("\\" + z + "{", "}", document.userpass.message);
        document.userpass.size.selectedIndex = 0;
      } else
      if (z == "") {
        insertText(document.userpass.message, '}');
        document.userpass.format_size.value = "0";
      } else {
        if (document.userpass.format_size.value == 1) {
          insertText(document.userpass.message, "}\\" + z + "{");
        } else {
          insertText(document.userpass.message, "\\" + z + "{");
          document.userpass.format_size.value = 1;
        }
      } 
    }
    document.userpass.message.focus();
  }
}
