var mInput = {
  show: function(id) {
    Element.show(id);
  },
  
  hide: function(id) {
    Element.hide(id);
  }
}

var mForm = {
  submit: false,

  setSubmit: function(value) {
    mForm.submit = value;
  },

  focus: function(id) {
    Form.focusFirstElement(id);
  }
}

var mField = {
  focus: function(id) {
    Field.focus(id);
  },
  
  clear: function(id) {
    $(id).value='';
  }
}

var mEditor = {

  nullOrFalse: function(object, id) {
    if (object)
      return false;
    mEditor.setFocus(id);
    return true;
  },

  insertLinkTag: function(id) {
    var url, name, str1, str2, tmp, insert;
    str1 = "Ange adress, t.ex. www.dn.se"
    str2 = "Ange länknamn, t.ex. Dagens Nyheter"

    if (window.showModalDialog) {
      try { tmp = mEditor.promptIE('/editorPromptIELink.html', [str1, str2]); } catch (e) { tmp = false; }
      if (mEditor.nullOrFalse(tmp, id)) { return false }
      url  = tmp[0];
      name = tmp[1];
    }
    else {
      url  = mEditor.prompt(str1, '');
      if (mEditor.nullOrFalse(url, id)) { return false }
      name = mEditor.prompt(str2, url);
      if (mEditor.nullOrFalse(name, id)) { return false }
    }
    
    insert = '[länk ' + name;
    if (name != url)
      insert += ' ' + url;
  
    insert += ']';
  
    mEditor.insert(id, insert);
  },

  // OTHER
  insertTag: function(tag, id) {
    var text, insert;
  
    text = mEditor.prompt("Ange text", '');
    if (mEditor.nullOrFalse(text, id)) { return false }

    insert = '[' + tag + ' ' + text + ']';
  
    mEditor.insert(id, insert);
  },

  // PREVIEW - EDIT
  toggleEditPreview: function(edit_link_id, preview_link_id, edit_container_id, preview_container_id) {
    Element.toggle(edit_link_id);
    Element.toggle(preview_link_id);
    Element.toggle(edit_container_id);
    Element.toggle(preview_container_id);
  },

  preview: function(edit_link_id, preview_link_id, edit_container_id, preview_container_id) {
    mEditor.toggleEditPreview(edit_link_id, preview_link_id, edit_container_id, preview_container_id);
    mEditor.setFocus(edit_container_id);
  },

  // FOCUS
  setFocus: function(id) {
    $(id).focus();
  },

  // PROMPT //
  promptIE: function(filename, args) {
    var settings = "dialogWidth: 290px; dialogHeight: 160px; center: yes; edge: raised; scroll: no; status: no;";
    return window.showModalDialog(filename, args, settings);
  },

  prompt: function(str, value) {
    var result;
    try {
      do {
        //IE support
        if (window.showModalDialog) { 
          result = mEditor.promptIE('/editorPromptIE.html', [str, value]); 
        }
        //Other
        else { 
          result = prompt(str, value); 
        }
      } while (result == '')
      return result;
    } 
    catch (e) { 
      return false;
    }
  },

  // INSERT //
  insert: function(id, myValue) {
    myField = $(id);
    //IE support
    if (document.selection) {
      myField.focus();
      sel = document.selection.createRange();
      sel.text = myValue;
    }
  
    //MOZILLA/NETSCAPE support
    else if (myField.selectionStart || myField.selectionStart == '0') {
      var startPos = myField.selectionStart;
      var endPos = myField.selectionEnd;
      myField.value = myField.value.substring(0, startPos) + myValue + myField.value.substring(endPos, myField.value.length);
    } 
  
    //Other
    else {
      myField.value += myValue;
    }
  
    myField.focus();
  }
}