File: MarkDown_stealer.user.js - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

01: // ==UserScript==
02: // @name        MarkDown stealer
03: // @namespace   HTLAL
04: // @include     http://how-to-learn-any-language.com/forum/*
05: // @version     1
06: // @grant       none
07: // ==/UserScript==
08: 
09: // basic markdown reg expressions
10: var mdpat = [/\*\*(.*?)\*\*/g,
11:              /\*(.*?)\*/g,
12:              /_(.*?)_/g,
13:              /\[(.*?)\]\((.*?)\)/g,
14:              /\[([http|ftp].*?)\]/g];
15: // replacements for the preview window
16: var mdrep = ['<strong>$1</strong>',
17:              '<em>$1</em>',
18:              '<u>$1</u>',
19:              '<a href="$2" rel="nofollow">$1</a>',
20:              '<a href="$1" rel="nofollow">$1</a>'];
21: // to convert the markdown to BBCode
22: var bbcode = ['&#91;B]$1&#91;/B]',
23:               '&#91;I]$1&#91;/I]',
24:               '&#91;U]$1&#91;/U]',
25:               '&#91;URL=$2]$1&#91;/URL]',
26:               '&#91;URL]$1&#91;/URL]'];
27: 
28: previewPageHTML = ' <html>' +
29: '   <head>' +
30: '   <title>Post Preview</title>' +
31: '   </head>' +
32: '   <body style="background-image:url(http://how-to-learn-any-language.com/forum/forum_images/main_bg.gif)">' +
33: ' <center>Post Preview</center>' +
34: '          <div style="width:98%; border:1px solid; background-color:#F4F4FB; height:147; padding:2px;">';
35: previewPageHTML_bottom = '       </div>' +
36: '    <center><a href="JavaScript:onClick=window.close()">Close Window</a></center>' +
37: '</body>' +
38: '</html>';
39: 
40: function convertMarkDown(e) {
41: //  e.preventDefault();
42:   var textareas = document.getElementsByTagName('textarea');    // grab the textarea element
43:   if (textareas) {
44:     var textarea = textareas[0];
45:     text = textarea.value;
46:     text = text.replace(/(?:\r\n|\r|\n)/g, '<br />'); // replace all new lines for BR
47:     for(i=0;i<mdpat.length;i++) {
48:       text = text.replace(mdpat[i],bbcode[i]);
49:     }
50:     text = text.replace(/&#91;/g,"[");
51:     textarea.value = text;
52:   }
53: }
54: 
55: function previewMarkDown() {
56:   var textareas = document.getElementsByTagName('textarea');    // grab the textarea element
57:   if (textareas) {
58:     var textarea = textareas[0];
59:     text = textarea.value;
60:     text = text.replace(/(?:\r\n|\r|\n)/g, '<br />'); // replace all new lines for BR
61:     for(i=0;i<mdpat.length;i++) {
62:       text = text.replace(mdpat[i],mdrep[i]);
63:     }
64:     preview = window.open('','Preview','toolbar=0,location=0,status=0,menubar=0,scrollbars=1,resizable=1,width=680,height=400');
65:     preview.document.body.innerHTML = previewPageHTML + text + previewPageHTML_bottom;
66:     preview.document.body.style.backgroundImage="url(http://how-to-learn-any-language.com/forum/forum_images/main_bg.gif)";
67:   }
68: }
69: 
70: inputs = document.querySelectorAll("form input[type=submit]");
71: for(i=0;i<inputs.length;i++) {
72: //  inputs[i].removeAttribute("onclick");
73: }
74: 
75: // create the preview button
76: var formp = document.querySelectorAll("form p");
77: if (formp) {
78:   form = formp[1];
79:   submit = form.querySelector("input[type=submit]");
80:   var button = document.createElement("button");
81:   button.textContent = "Preview Markdown";
82:   button.setAttribute("type", "button");
83:   button.addEventListener('click', previewMarkDown, false);
84:   form.appendChild(button);
85:   document.getElementsByTagName("form")[0].addEventListener("submit",convertMarkDown,false);
86: }