// ==UserScript==
// @name          MT preview
// @namespace     http://blog.fkoji.com/
// @description	  Add preview field to MT
// @include       http://*/mt.cgi?__mode=view&_type=entry*
// ==/UserScript==

(function() {
 var text = document.getElementById("text");
 var text_more = document.getElementById("text_more");

 var previewOuter = document.createElement("div");
 previewOuter.id = 'preview-outer';
 GM_addStyle([
  "div#preview-outer{",
  "margin-top:3px;",
  "padding:2px;",
  "border:1px solid #000;",
  "background:#fff;",
  "height:200px;",
  "width:99%;",
  "overflow:auto;",
  "}"
 ].join(''));

 var preview = document.createElement("div");
 preview.id = 'preview';
 GM_addStyle([
  "div#preview{",
  "background:#fefefe;",
  "width:100%;",
  "height:100%;",
  "}"
 ].join(''));

 previewOuter.appendChild(preview);

 text.parentNode.insertBefore(previewOuter, text.nextSibling);

 setInterval(function() {
  var cb = document.getElementById("convert_breaks");
  if (!cb || cb && cb.selectedIndex == 1) {
   if (text_more) {
    preview.innerHTML = '<p>' + text.value.replace(/\n/g, '<br/>') + '</p><p>' + text_more.value.replace(/\n/g, '<br/>') + '</p>';
   } else {
    preview.innerHTML = '<p>' + text.value.replace(/\n/g, '<br/>') + '</p>';
   }
  }
  else if (cb && cb.selectedIndex == 0) {
   if (text_more) {
    preview.innerHTML = '<p>' + text.value + '</p><p>' + text_more.value + '</p>';
   } else {
    preview.innerHTML = '<p>' + text.value + '</p>';
   }
  }
 }, 200);

 var caption = document.createElement("div");
 caption.appendChild(document.createTextNode("Preview"));
 text.parentNode.insertBefore(caption, text.nextSibling);

 var css = document.createElement("textarea");
 css.id = 'custom_css';
 css.rows = 3;
 css.cols = 80;
 var cssValue = GM_getValue("custom_css");
 if (typeof(cssValue) != 'undefined') {
  GM_addStyle(cssValue);
  css.value = cssValue.replace(/\/\*\*\//g, "\n");
 }
 GM_addStyle([
  "div#custom_css{",
  "margin-top:3px;",
  "padding:2px;",
  "border:1px solid #888;",
  "background:#f2f2f2;",
 ].join(''));
 text.parentNode.insertBefore(css, previewOuter.nextSibling);

 var cssCaption = document.createElement("div");
 cssCaption.appendChild(document.createTextNode("Custom CSS"));
 text.parentNode.insertBefore(cssCaption, previewOuter.nextSibling);

 var setCss = document.createElement("input");
 setCss.type = 'button';
 setCss.value = 'Set CSS';
 setCss.id = 'set_css';
 setCss.addEventListener("click", function() {
  if (document.getElementById("custom_css").value) {
   var css = document.getElementById("custom_css").value;
   css = css.replace(/\n/g, "/**/");
   GM_setValue("custom_css", css);
   GM_addStyle(css);
  }
 }, true);
 text.parentNode.insertBefore(setCss, css.nextSibling);

 var clearCss = document.createElement("input");
 clearCss.type = 'button';
 clearCss.value = 'Clear saved CSS';
 clearCss.id = 'clear_css';
 clearCss.addEventListener("click", function() {
  GM_setValue("custom_css", "");
  document.getElementById("custom_css").value = '';
 }, true);
 text.parentNode.insertBefore(clearCss, setCss.nextSibling);
})();

