window.addEvent('domready', function() {
    String.implement({
        sanitiseWord: function() {
            var s = this.replace(/\r/g, '\n').replace(/\n/g, ' ');
            var rs = [];
            rs.push(/<!--.+?-->/g); // Comments
            rs.push(/<title>.+?<\/title>/g); // Title
            rs.push(/<(meta|link|.?o:|.?style|.?div|.?head|.?html|body|.?body|.?span|!\[)[^>]*?>/g); // Unnecessary tags
            rs.push(/ v:.*?=".*?"/g); // Weird nonsense attributes
            rs.push(/ style=".*?"/g); // Styles
            rs.push(/ class=".*?"/g); // Classes
            rs.push(/(&nbsp;){2,}/g); // Redundant &nbsp;s
            rs.push(/<p>(\s|&nbsp;)*?<\/p>/g); // Empty paragraphs
            rs.each(function(regex) {
                s = s.replace(regex, '');
            });
            return s.replace(/\s+/g, ' ');
        }
    });
    
    var body = $(document.body);
    
    var l1 = new Element('div', {
        'class': 'log'
    }).inject(body);
    var p1 = new Element('div', {
        'class': 'preview'
    }).inject(body);
    var l2 = l1.clone().inject(body);
    var p1 = p1.clone().inject(body);
    
    var s = '\n';
    s += '<meta name="Title" content="">\n';
    s += '<meta name="Keywords" content="">\n';
    s += '<meta http-equiv="Content-Type" content="text/html; charset="utf-8"">\n';
    s += '<meta name="ProgId" content="Word.Document">\n';
    s += '<meta name="Generator" content="Microsoft Word 2008">\n';
    s += '<meta name="Originator" content="Microsoft Word 2008">\n';
    s += '<link rel="File-List" href="file://localhost/Users/Grant/Library/Caches/TemporaryItems/msoclip/0/clip_filelist.xml">\n';
    s += '<link rel="Edit-Time-Data" href="file://localhost/Users/Grant/Library/Caches/TemporaryItems/msoclip/0/clip_editdata.mso">\n';
    s += '<link rel="OLE-Object-Data" href="file://localhost/Users/Grant/Library/Caches/TemporaryItems/msoclip/0/clip_oledata.mso">\n';
    s += '<!--[if !mso]>\n';
    s += '<style>\n';
    s += 'v\:* {behavior:url(#default#VML);}\n';
    s += 'o\:* {behavior:url(#default#VML);}\n';
    s += 'w\:* {behavior:url(#default#VML);}\n';
    s += '.shape {behavior:url(#default#VML);}\n';
    s += '</style>\n';
    s += '<![endif]--><!--[if gte mso 9]><xml>\n';
    s += ' <o:documentproperties>\n';
    s += '  <o:template>Normal.dotm</o:template>\n';
    s += '  <o:revision>0</o:revision>\n';
    s += '  <o:totaltime>0</o:totaltime>\n';
    s += '  <o:pages>1</o:pages>\n';
    s += '  <o:words>50</o:words>\n';
    s += '  <o:characters>290</o:characters>\n';
    s += '  <o:company>Saron Education Ltd</o:company>\n';
    s += '  <o:lines>2</o:lines>\n';
    s += '  <o:paragraphs>1</o:paragraphs>\n';
    s += '  <o:characterswithspaces>356</o:characterswithspaces>\n';
    s += '  <o:version>12.0</o:version>\n';
    s += ' </o:documentproperties>\n';
    s += ' <o:officedocumentsettings>\n';
    s += '  <o:allowpng/>\n';
    s += ' </o:officedocumentsettings>\n';
    s += '</xml><![endif]--><!--[if gte mso 9]><xml>\n';
    s += ' <w:worddocument>\n';
    s += '  <w:zoom>0</w:zoom>\n';
    s += '  <w:trackmoves>false</w:trackmoves>\n';
    s += '  <w:trackformatting/>\n';
    s += '  <w:punctuationkerning/>\n';
    s += '  <w:drawinggridhorizontalspacing>18 pt</w:drawinggridhorizontalspacing>\n';
    s += '  <w:drawinggridverticalspacing>18 pt</w:drawinggridverticalspacing>\n';
    s += '  <w:displayhorizontaldrawinggridevery>0</w:displayhorizontaldrawinggridevery>\n';
    s += '  <w:displayverticaldrawinggridevery>0</w:displayverticaldrawinggridevery>\n';
    s += '  <w:validateagainstschemas/>\n';
    s += '  <w:saveifxmlinvalid>false</w:saveifxmlinvalid>\n';
    s += '  <w:ignoremixedcontent>false</w:ignoremixedcontent>\n';
    s += '  <w:alwaysshowplaceholdertext>false</w:alwaysshowplaceholdertext>\n';
    s += '  <w:compatibility>\n';
    s += '   <w:breakwrappedtables/>\n';
    s += '   <w:dontgrowautofit/>\n';
    s += '   <w:dontautofitconstrainedtables/>\n';
    s += '   <w:dontvertalignintxbx/>\n';
    s += '  </w:compatibility>\n';
    s += ' </w:worddocument>\n';
    s += '</xml><![endif]--><!--[if gte mso 9]><xml>\n';
    s += ' <w:latentstyles deflockedstate="false" latentstylecount="276">\n';
    s += ' </w:latentstyles>\n';
    s += '</xml><![endif]-->\n';
    s += '<style>\n';
    s += '<!--\n';
    s += ' /* Font Definitions */\n';
    s += '@font-face\n';
    s += '    {font-family:Arial;\n';
    s += '    panose-1:2 11 6 4 2 2 2 2 2 4;\n';
    s += '    mso-font-charset:0;\n';
    s += '    mso-generic-font-family:auto;\n';
    s += '    mso-font-pitch:variable;\n';
    s += '    mso-font-signature:3 0 0 0 1 0;}\n';
    s += ' /* Style Definitions */\n';
    s += 'p.MsoNormal, li.MsoNormal, div.MsoNormal\n';
    s += '    {mso-style-parent:"";\n';
    s += '    margin:0cm;\n';
    s += '    margin-bottom:.0001pt;\n';
    s += '    mso-pagination:widow-orphan;\n';
    s += '    font-size:12.0pt;\n';
    s += '    mso-bidi-font-size:10.0pt;\n';
    s += '    font-family:"Times New Roman";\n';
    s += '    mso-ascii-font-family:Arial;\n';
    s += '    mso-fareast-font-family:"Times New Roman";\n';
    s += '    mso-hansi-font-family:Arial;\n';
    s += '    mso-bidi-font-family:"Times New Roman";}\n';
    s += '@page Section1\n';
    s += '    {size:612.0pt 792.0pt;\n';
    s += '    margin:72.0pt 90.0pt 72.0pt 90.0pt;\n';
    s += '    mso-header-margin:36.0pt;\n';
    s += '    mso-footer-margin:36.0pt;\n';
    s += '    mso-paper-source:0;}\n';
    s += 'div.Section1\n';
    s += '    {page:Section1;}\n';
    s += '-->\n';
    s += '</style>\n';
    s += '<!--[if gte mso 10]>\n';
    s += '<style>\n';
    s += ' /* Style Definitions */\n';
    s += 'table.MsoNormalTable\n';
    s += '    {mso-style-name:"Table Normal";\n';
    s += '    mso-tstyle-rowband-size:0;\n';
    s += '    mso-tstyle-colband-size:0;\n';
    s += '    mso-style-noshow:yes;\n';
    s += '    mso-style-parent:"";\n';
    s += '    mso-padding-alt:0cm 5.4pt 0cm 5.4pt;\n';
    s += '    mso-para-margin:0cm;\n';
    s += '    mso-para-margin-bottom:.0001pt;\n';
    s += '    mso-pagination:widow-orphan;\n';
    s += '    font-size:12.0pt;\n';
    s += '    font-family:"Times New Roman";\n';
    s += '    mso-ascii-font-family:Calibri;\n';
    s += '    mso-ascii-theme-font:minor-latin;\n';
    s += '    mso-fareast-font-family:Calibri;\n';
    s += '    mso-fareast-theme-font:minor-latin;\n';
    s += '    mso-hansi-font-family:Calibri;\n';
    s += '    mso-hansi-theme-font:minor-latin;\n';
    s += '    mso-bidi-font-family:"Times New Roman";\n';
    s += '    mso-bidi-theme-font:minor-bidi;}\n';
    s += '</style>\n';
    s += '<![endif]-->\n';
    s += '\n';
    s += '<!--startfragment-->\n';
    s += '\n';
    s += '<p class="MsoNormal"><strong><span style="font-size: 10pt;">Vectors<o:p></o:p></span></strong></p>\n';
    s += '\n';
    s += '<p class="MsoNormal" style="margin-left: 22.95pt; text-indent: -21.3pt;"><span style="font-size: 10pt;">1.4&nbsp;&nbsp;&nbsp; </span>blah blah blah\n';
    s += 'blah blah (<em>a,b</em>), or as blah blah <span style="position: relative; top: 5pt;"><!--[if gte vml 1]><v:shapetype\n';
    s += ' id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"\n';
    s += ' path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">\n';
    s += ' <v:stroke joinstyle="miter"/>\n';
    s += ' <v:formulas>\n';
    s += '  <v:f eqn="if lineDrawn pixelLineWidth 0"/>\n';
    s += '  <v:f eqn="sum @0 1 0"/>\n';
    s += '  <v:f eqn="sum 0 0 @1"/>\n';
    s += '  <v:f eqn="prod @2 1 2"/>\n';
    s += '  <v:f eqn="prod @3 21600 pixelWidth"/>\n';
    s += '  <v:f eqn="prod @3 21600 pixelHeight"/>\n';
    s += '  <v:f eqn="sum @0 0 1"/>\n';
    s += '  <v:f eqn="prod @6 1 2"/>\n';
    s += '  <v:f eqn="prod @7 21600 pixelWidth"/>\n';
    s += '  <v:f eqn="sum @8 21600 0"/>\n';
    s += '  <v:f eqn="prod @7 21600 pixelHeight"/>\n';
    s += '  <v:f eqn="sum @10 21600 0"/>\n';
    s += ' </v:formulas>\n';
    s += ' <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>\n';
    s += ' <o:lock v:ext="edit" aspectratio="t"/>\n';
    s += '</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style="\"width:25pt;\n';
    s += '" height:17pt\" o:ole="">\n';
    s += ' <v:imagedata src="file://localhost/Users/Jimbo/Library/Caches/TemporaryItems/msoclip/0/clip_image001.wmz"\n';
    s += '  o:title=""/>\n';
    s += '</v:shape><![endif]--><!--[if !vml]-->\n';
    s += '<img src="file:///Users/Jimbo/Library/Caches/TemporaryItems/msoclip/0/clip_image002.png" v:shapes="_x0000_i1025" height="19" width="27" /><!--[endif]--><!--[if gte mso 9]><xml>\n';
    s += ' <o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1025"\n';
    s += '  drawaspect="Content" objectid="_1199271951">\n';
    s += ' </o:oleobject>\n';
    s += '</xml><![endif]--></span>, or as a column, matrix <span style="position: relative; top: 15pt;"><!--[if gte vml 1]><v:shape id="_x0000_i1026"\n';
    s += ' type="#_x0000_t75" style="\"width:21pt;height:36pt\"" o:ole="">\n';
    s += ' <v:imagedata src="file://localhost/Users/Jimbo/Library/Caches/TemporaryItems/msoclip/0/clip_image003.wmz"\n';
    s += '  o:title=""/>\n';
    s += '</v:shape><![endif]--><!--[if !vml]-->\n';
    s += '<img src="file:///Users/Jimbo/Library/Caches/TemporaryItems/msoclip/0/clip_image004.png" v:shapes="_x0000_i1026" height="38" width="23" /><!--[endif]--><!--[if gte mso 9]><xml>\n';
    s += ' <o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1026"\n';
    s += '  drawaspect="Content" objectid="_1199271953">\n';
    s += ' </o:oleobject>\n';
    s += '</xml><![endif]--></span></span><span style="font-size: 10pt;"><o:p></o:p></span></p>\n';
    s += '\n';
    s += '<p class="MsoNormal" style="margin-left: 22.95pt; text-indent: -21.3pt;"><span style="font-size: 10pt;">1.5&nbsp;&nbsp;&nbsp; </span>represent vectors blah blah blah\n';
    s += '<em>a</em><strong>i&nbsp;</strong>+&nbsp;<em>b</em><strong>j</strong>,\n';
    s += 'where <strong>i</strong><em> </em>and <strong>j</strong><em> </em>are the sblah blah blah</span><span style="font-size: 10pt;"><o:p></o:p></span></p>\n';
    s += '\n';
    s += '<p class="MsoNormal" style="margin-left: 22.95pt; text-indent: -21.3pt;"><span style="font-size: 10pt;">1.6&nbsp;&nbsp;&nbsp; </span>eblah blah blah\n';
    s += '<span style="position: relative; top: 7pt;"><!--[if gte vml 1]><v:shape\n';
    s += ' id="_x0000_i1027" type="#_x0000_t75" style="\"width:86pt;height:22pt\"" o:ole="">\n';
    s += ' <v:imagedata src="file://localhost/Users/Grant/Library/Caches/TemporaryItems/msoclip/0/clip_image005.wmz"\n';
    s += '  o:title=""/>\n';
    s += '</v:shape><![endif]--><!--[if !vml]-->\n';
    s += '<img src="file:///Users/Grant/Library/Caches/TemporaryItems/msoclip/0/clip_image006.png" v:shapes="_x0000_i1027" height="24" width="88" /><!--[endif]--><!--[if gte mso 9]><xml>\n';
    s += ' <o:oleobject type="Embed" progid="Equation.3" shapeid="_x0000_i1027"\n';
    s += '  drawaspect="Content" objectid="_1199271954">\n';
    s += ' </o:oleobject>\n';
    s += '</xml><![endif]--></span>&nbsp;</span>for the\n';
    s += 'blah blah blah</span><span style="font-size: 10pt;"><o:p></o:p></span></p>\n';
    s += '\n';
    s += '<!--endfragment-->';
    
    l1.set('text', s);
    p1.set('html', s);
    
    s = s.sanitiseWord();
    l2.set('text', s);
    p2.set('html', s);

});

					
				
			
				
					
						
.log {
    border: solid 1px #ccc;
    margin: 8px;
    padding: 8px;
    background: #eee;
    font-family: "Bitstream Vera Sans Mono", monospace;
    font-size: 8pt;
    white-space: pre;
    overflow: auto;
    max-height: 300px;
}

.preview {
    border: solid 1px #ccc;
    margin: 8px 8px 24px;
    padding: 8px;
}