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(/( ){2,}/g); // Redundant s
rs.push(/<p>(\s| )*?<\/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 </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 </span>represent vectors blah blah blah\n';
s += '<em>a</em><strong>i </strong>+ <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 </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> </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;
}