/*********************
S5 1.1 Export Support
**********************/

var isOSF = false;
var isXOXO = false;

function S5getAuthor() {
  return (g('efiE').value!='') ? "<a href=\"mailto:"+g('efiE').value+"\">"+g('efiN').value+"</a>" : g('efiN').value;
}
function S5getCompany() {
  return (g('efiW').value!='') ? "<a href=\""+getValidLink(g('efiW').value)+"\">"+g('efiC').value+"</a>" : g('efiC').value;
}
function S5getLogo() {
  return (g('efiW').value!='') ? "<a href=\""+getValidLink(g('efiW').value)+"\"><img src=\""+g('efiL').value+"\" alt=\"Logo\" /></a>" : "<img src=\""+g('efiC').value+"\" alt=\"Logo\" />";
}

function getS5CornerContents(boxID) {
  var s="";
  switch (g(boxID).selectedIndex) {
    case 1: s+=g('expName').value; break;
    case 2: s+=S5getAuthor(); break;
    case 3: s+=S5getCompany(); break;
    case 4: s+=S5getLogo(); break;
    case 5: s+=g('efiE').value; break;
    case 6: s+=g('efiD').value; break;
    case 7: s+=g('efiS').value; break;
    case 8: s+=g('efiV').value; break;
    case 9: s+=g('efiW').value; break;
  }
  return (s=='') ? '&nbsp;' : s;
}

function buildMetaTag(name, content) {
  return "<meta name=\""+name+"\" content=\""+content+"\" />";
}

function exportXOXO(runTimeData, startingTheme) {
  isXOXO = true;
  exportS5(runTimeData, startingTheme);
  isXOXO = false;
}

function exportOSF(runTimeData, startingTheme) {
  isOSF = true;
  exportS5(runTimeData, startingTheme);
  isOSF = false;
}

// Export S5 slideshow
function exportS5(runTimeData, startingTheme) {
  // Meta data
  var tempDefaultView = "slideshow";
  var tempTitle = g('expName').value;
  var tempAuthor = g('efiN').value;
  var tempCompany = g('efiC').value;
  var tempLogo = g('efiL').value;
  var tempContact = g('efiE').value;
  var tempDate = g('efiD').value;
  var tempSlogan = g('efiS').value;
  var tempVenue = g('efiV').value;
  var tempWebsite = g('efiW').value;
  var tempGenerator = getGenerator();
  var tempVersion = isOSF ? "OSF 1.0" : "S5 1.1";
  var tempControlVis = "hidden";
  
  var metaTagNames = ['defaultView', 'title', 'author', 'company', 'logo', 'contact', 'presdate', 'slogan', 'venue', 'website', 'controlVis', 'generator', 'version'];
  var metaTagContents = [tempDefaultView, tempTitle, tempAuthor, tempCompany, tempLogo, tempContact, tempDate, tempSlogan, tempVenue, tempWebsite, tempControlVis, tempGenerator, tempVersion];
  var tt = tableColors[startingTheme]; // Temp theme
  
  var s = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\">\n<head>\n<title>"+tempTitle+"</title>\n";
  
  // Meta tags
  for (i=0; i < metaTagNames.length; i++) {
    if (isOSF && (i == 0 || i == 10)) {
      continue;
    }
    s += buildMetaTag(metaTagNames[i], metaTagContents[i])+"\n";
  }
  s += "<meta http-equiv=\"Content-Type\" content=\"application/xhtml+xml;charset=utf-8\" />\n";
  s += "<link rel=\"icon\" href=\"" + ((tempLogo != "") ? tempLogo : veltIcon) + "\" type=\"image/x-icon\" />\n";
  
  // Temp CSS
  var tc;
    
  // Projection
  tc = "div#header, div#footer, div#controls, .slide {\n  position: absolute;\n}\n";
  tc += "html>body div#header, html>body div#footer, html>body div#controls, html>body .slide {\n  position: fixed;\n}\n";
  tc += ".handout {\n  display: none;\n}\n";
  tc += ".layout {\n  display: block;\n}\n";
  tc += ".slide, .hideme, .incremental {\n  visibility: hidden;\n}\n";
  tc += "#slide0 {\n  visibility: visible;\n}\n";
  tc += "div#header, div#footer, .slide {\n  width: 100%;\n  top: 0;\n  left: 0;\n}\n";
  tc += "div#header {\n  top: 0;\n  height: 3em;\n  z-index: 1;\n}\n";
  tc += "div#footer {\n  top: auto;\n  bottom: 0;\n  height: 2.5em;\n  z-index: 5;\n}\n";
  tc += ".slide {\n  top: 0;\n  width: 92%;\n  padding: 3.5em 4% 4%;\n  z-index: 2;\n  list-style: none;\n}\n";
  tc += "div#controls {\n  left: 50%;\n  bottom: 0;\n  width: 50%;\n  z-index: 100;\n}\n";
  tc += "div#controls form {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  width: 100%;\n  margin: 0;\n}\n";
  tc += "#currentSlide {\n  position: absolute;\n  width: 10%;\n  left: 45%;\n  bottom: 1em;\n  z-index: 10;\n}\n";
  tc += "html>body #currentSlide {\n  position: fixed;\n}\n";
  tc += "body {\n  background: " + tt[0] + ";\n  color: " + tt[4] + ";\n  font-size: 2em;\n}\n";
  tc += "a:link, a:visited {\n  text-decoration: underline;\n  color:" + tt[5] + ";\n}\n";
  tc += "a:hover {\n  text-decoration: none;\n  color:" + tt[1] + ";\n}\n";
  tc += ".layout a:link, .layout a:visited {\n  text-decoration: underline;\n  color:" + tt[6] + ";\n}\n";
  tc += ".layout a:hover {\n  text-decoration: none;\n  color:" + tt[1] + ";\n}\n";
  tc += "#controls :active {\n  color: #88A !important;\n}\n";
  tc += "#controls :focus {\n  outline: 1px dotted #227;\n}\n";
  tc += "h1, h2, h3, h4 {\n  font-size: 100%;\n  margin: 0;\n  padding: 0;\n  font-weight: inherit;\n}\n";
  tc += "ul, pre {\n  margin: 0;\n  line-height: 1em;\n}\n";
  tc += "html, body {\n  margin: 0;\n  padding: 0;\n}\n";
  tc += "blockquote, q {\n  font-style: italic;\n}\n";
  tc += "blockquote {\n  padding: 0 2em 0.5em;\n  margin: 0 1.5em 0.5em;\n  text-align: center;\n  font-size: 1em;\n}\n";
  tc += "blockquote p {\n  margin: 0;\n}\n";
  tc += "blockquote i, blockquote em {\n  font-style: normal;\n}\n";
  tc += "blockquote b, blockquote strong {\n  display: block;\n  margin-top: 0.5em;\n  font-weight: normal;\n  font-size: smaller;\n  font-style: normal;\n}\n";
  tc += "blockquote b i, blockquote strong em {\n  font-style: italic;\n}\n";
  tc += "kbd {\n  font-weight: bold;\n  font-size: 1em;\n}\n";
  tc += "sup, sub {\n  font-size: smaller;\n  line-height: 1px;\n}\n";
  tc += ".slide code {\n  padding: 2px 0.25em;\n  font-weight: bold;\n  color: #533;\n}\n";
  tc += ".slide code.bad, code del {\n  color: red;\n}\n";
  tc += ".slide code.old {\n  color: silver;\n}\n";
  tc += ".slide pre {\n  padding: 0;\n  margin: 0.25em 0 0.5em 0.5em;\n  color: #533;\n  font-size: 90%;\n}\n";
  tc += ".slide pre code {\n  display: block;\n}\n";
  tc += ".slide ul {\n  margin-left: 5%;\n  margin-right: 7%;\n  list-style: disc;\n}\n";
  tc += ".slide li {\n  margin-top: 0.75em;\n  margin-right: 0;\n}\n";
  tc += ".slide ul ul {\n  line-height: 1;\n}\n";
  tc += ".slide ul ul li {\n  margin: .2em;\n  font-size: 85%;\n  list-style: square;\n}\n";
  tc += ".slide img.leader {\n  display: block;\n  margin: 0 auto;\n}\n";
  tc += "div#header, div#footer {\n  background: " + tt[2] + ";\n  color: " + tt[6] + ";\n  font-family: Verdana, Helvetica, sans-serif;\n}\n";
  tc += "div#header {\n  line-height: 1px;\n  border-bottom:5px solid " + tt[3] + ";\n}\n";
  tc += "div#footer {\n  font-size: 0.5em;\n  font-weight: bold;\n  padding: 1em 0;\n  border-top:5px solid " + tt[3] + ";\n}\n";
  tc += "#footer h1, #footer h2 {\n  display: block;\n  padding: 0 1em;\n}\n";
  tc += "#footer h2 {\n  font-style: italic;\n}\n";
  tc += "div.long {\n  font-size: 0.75em;\n}\n";
  tc += ".slide h1 {\n  position: absolute;\n  top: 0.7em;\n  left: 87px;\n  z-index: 1;\n  margin: 0;\n  padding: 0.3em 0 0 50px;\n  white-space: nowrap;\n  font: bold 150%/1em Helvetica, sans-serif;\n  text-transform: capitalize;\n  color: " + tt[6] + ";\n  background: " + tt[2] + ";\n}\n";
  tc += ".slide h3 {\n  font-size: 130%;\n}\n";
  tc += "h1 abbr {\n  font-variant: small-caps;\n}\n";
  tc += "div#controls {\n  position: absolute;\n  left: 50%;\n  bottom: 0;\n  width: 50%;\n  text-align: right;\n  font: bold 0.9em Verdana, Helvetica, sans-serif;\n}\n";
  tc += "html>body div#controls {\n  position: fixed;\n  padding: 0 0 1em 0;\n  top: auto;\n}\n";
  tc += "div#controls form {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  width: 100%;\n  margin: 0;\n  padding: 0;\n}\n";
  tc += "#controls #navLinks a {\n  padding: 0;\n  margin: 0 0.5em;\n  background: " + tt[2] + ";\n  border: none;\n  color: " + tt[6] + ";\n  cursor: pointer;\n}\n";
  tc += "#controls #navList {\n  height: 1em;\n}\n";
  tc += "#controls #navList #jumplist {\n  position: absolute;\n  bottom: 0;\n  right: 0;\n  background: " + tt[1] + ";\n  color: " + tt[5] + "\n}\n";
  tc += "#currentSlide {\n  text-align: center;\n  font-size: 0.5em;\n  color: " + tt[6] + ";\n}\n";
  tc += "#slide0 {\n  padding-top: 3.5em;\n  font-size: 90%;\n}\n";
  tc += "#slide0 h1 {\n  position: static;\n  margin: 1em 0 0;\n  padding: 0;\n  font: bold 2em Helvetica, sans-serif;\n  white-space: normal;color: "+tt[4]+";\n  background: transparent;\n}\n";
  tc += "#slide0 h2 {\n  font: bold italic 1em Helvetica, sans-serif;\n  margin: 0.25em;\n}\n";
  tc += "#slide0 h3 {\n  margin-top: 1.5em;\n  font-size: 1.5em;\n}\n";
  tc += "#slide0 h4 {\n  margin-top: 0;\n  font-size: 1em;\n}\n";
  tc += "ul.urls {\n  list-style: none;\n  display: inline;\n  margin: 0;\n}\n";
  tc += ".urls li {\n  display: inline;\n  margin: 0;\n}\n";
  tc += ".note {\n  display: none;\n}\n";
  tc += ".external {\n  border-bottom: 1px dotted gray;\n}\n";
  tc += "html>body .external {\n  border-bottom: none;\n}\n";
  tc += ".external:after {\n  content: \" \\274F\";\n  font-size: smaller;\n  color: #77B;\n}\n";
  tc += ".incremental, .incremental *, .incremental *:after {\n  color: #DDE;\n  visibility: visible;\n}\n";
  tc += "img.incremental {\n  visibility: hidden;\n}\n";
  tc += ".slide .current {\n  color: #B02;\n}\n";
  tc += ".layout > div[class] {\n  z-index:5;\n  display:block;\n  position:fixed;\n  color: " + tt[6] + ";\n}\n";
  tc += ".layout .topright {\n  top:0;\n  right:0;\n  margin:.2em .4em .5em;\n  font-variant:small-caps;\n  letter-spacing:5px;\n}\n";
  tc += ".layout .topleft {\n  top:0;\n  left:0;\n  margin:.2em .4em .5em;\n  font-variant:small-caps;\n  letter-spacing:5px;\n}\n";
  tc += ".layout .bottomleft {\n  bottom:0;\n  left:0;\n  font-size:smaller;\n  margin:.5em;\n}\n";
  tc += ".layout .bottomright {\n  bottom:0;\n  right:0;\n  font-size:smaller;\n  margin:.5em;\n}\n";
  tc += "#runTimeData {\n  display:none;\n}\n";
  tc += "div#transition-container {\n  display:none;\n  position:fixed;\n  top:0;\n  left:0;\n  padding:0;\n  margin:0;\n  width:100%;\n  height:100%;\n  z-index:100;\n  overflow:hidden;\n}\n";
  tc += "div#transition-container div.transition-panel {\n  padding:0;\n  margin:0;\n  width:0;\n  height:0;\n  position:absolute;\n}\n";
  
  if (isOSF) {
    s += "\n<!-- Projection Styles -->\n<style type=\"text/css\" media=\"projection\" id=\"slideProj\">\n/*<![CDATA[*/\n\n" + tc + "\n/*]]>*/\n<\/style>\n";
  }
  else {
    s += "<link rel=\"stylesheet\"  type=\"text/css\" media=\"projection\" id=\"slideProj\" href=\"" + ((g('s5Custom').checked) ? g('s5CustomURL').value : "data:text/css," + encodeURIComponent(tc))+"\" />\n";
  }
  
  // Opera (Projection mode) fix
  tc = "* {\n  page-break-before:avoid;\n  page-break-after:avoid;\n}\n";
  tc += ".slide {\n  visibility:visible !important;\n  position:static !important;\n  page-break-before:always;\n}\n";
  tc += ".slide:first-child {\n  page-break-before:avoid !important;\n  padding-top: 3.5em;\n  font-size: 90%;\n}\n";
  tc += ".slide:first-child h1 {\n  position: static;\n  margin: 1em 0 0;\n  padding: 0;\n  font: bold 2em Helvetica, sans-serif;\n  white-space: normal;color: "+tt[4]+";\n  background: transparent;\n}\n";
  tc += ".slide:first-child h2 {\n  font: bold italic 1em Helvetica, sans-serif;\n  margin: 0.25em;\n}\n";
  tc += ".slide:first-child h3 {\n  margin-top: 1.5em;\n  font-size: 1.5em;\n}\n";
  tc += ".slide:first-child h4 {\n  margin-top: 0;\n  font-size: 1em;\n}\n";
  
  if (isOSF) {
    s += "\n<!-- OperaShow fix -->\n<style type=\"text/css\" media=\"projection\" id=\"operaFix\">\n/*<![CDATA[*/\n\n" + tc + "\n/*]]>*/\n<\/style>\n";
  }
  else {
    s += "<link rel=\"stylesheet\" type=\"text/css\" media=\"projection\" id=\"operaFix\" href=\"data:text/css," + encodeURIComponent(tc) + "\" />\n";
  }
  
  // Print
  tc = "@page {\n  size:landscape;\n}\n";
  tc += ".slide, ul {\n  page-break-inside: avoid;\n  visibility: visible !important;\n}\n";
  tc += "body {\n  font-size: 12pt;\n  background: white;\n}\n";
  tc += "* {\n  color: black;\n}\n";
  tc += "h1 {\n  page-break-after: avoid;\n  border-top: 2pt solid gray;\n  border-bottom: 1px dotted silver;\n}\n";
  tc += ".extra {\n  background: transparent !important;\n}\n";
  tc += "div.extra, pre.extra, .example {\n  font-size: 10pt;\n  color: #333;\n}\n";
  tc += "ul.extra a {\n  font-weight: bold;\n}\n";
  tc += "p.example, .layout, .layout *, #slide0 {\n  display: none !important;\n}\n";
  tc += ".handout:empty:before {\n  content:\"Slide \" counter(slide) \" has no notes.\";\n  font-style:italic;\n}\n";
  tc += ".handout:not(:empty):before {\n  content:\"\\00270E  Slide \" counter(slide) \" Notes: \";\n  font-weight:bold;\n  display:block;\n}\n";
  tc += ".slide:before {\n  content:\"Slide \" counter(slide);\n  float:right;\n}\n";
  tc += ".slide:first-child {\n  display:none;\n}\n";
  tc += ".slide h1, .slide h2 {\n  margin:0;\n  padding:0;\n  border:0;\n}\n";
  tc += "meta[name] {\n  display:block;\n  margin:.5em 0;\n}\n";
  tc += "meta[name]:before {\n  content:attr(name) \": \";\n  text-transform: capitalize;\n  font-weight:bold;\n}\n";
  tc += "meta[name]:after {\n  content:attr(content);\n}\n";
  tc += "meta[name*=\"Vi\"]:before, meta[name*=\"Vi\"]:after, meta[name*=\"Vi\"], meta[name=title]:before, meta[name=title]:after, meta[name=title], meta[content=\"\"], meta[name=logo] {\n  display:none;\n  content:\"\";\n}\n";
  tc += "a[href]:after {\n  content:\" [\" attr(href) \"]\";\n  font-style:italic;\n}\n";
  tc += "a[href^=\"javascript:\"]:after {\n  content:\"\";\n}\n";
  tc += ".handout {\n  border-top:1px black solid;\n  padding:5px;\n}\n";
  tc += "head {\n  display:block;\n}\n";
  tc += ".slide, head {\n  width:75%;\n  border:1px black solid;\n  margin:1em auto;\n  padding:10px;\n  page-break-inside:avoid;\n  position:relative;\n  min-height:200px;\n}\n";
  tc += ".slide {\n  counter-increment:slide;\n  page-break-before:always;\n}\n";
  tc += ".presentation .slide:first-child {\n  counter-reset:slide;\n  counter-increment:none;\n}\n";
  tc += "title {\n  display:block;\n  padding:0;\n  margin:0;\n  font-size:200%;\n  font-weight:bold;\n  text-align:center;\n}\n";
  tc += "div#transition-container {\n  display:none !important;\n}\n";
  
  if (isOSF) {
    s += "\n<!-- Print Styles -->\n<style type=\"text/css\" media=\"print\" id=\"slidePrint\">\n/*<![CDATA[*/\n\n" + tc + "\n/*]]>*/\n<\/style>\n";
  }
  else {
    s += "<link rel=\"stylesheet\" type=\"text/css\" media=\"print\" id=\"slidePrint\" href=\"data:text/css," + encodeURIComponent(tc) + "\" />\n";
  }
  
  // Screen
  tc = "head, title {\n  display:block;\n}\n";
  tc += "title {\n  text-align:center;\n  font-size:300%;\n  font-weight:bold;\n  font-family:sans-serif;\n  margin:.5em;\n}\n";
  tc += ".layout div, #header *, #footer *, #controlForm *, .layout > div[class], #slide0 {\n  display: none;\n}\n";
  tc += "#footer, #controls, #controlForm, #navLinks, #toggle {\n  display: block;\n  visibility: visible;\n  margin: 0;\n  padding: 0;\n}\n";
  tc += "#toggle {\n  float: right;\n  padding: 0.5em;\n  border: 1px solid;\n  border-width: 0 0 1px 1px;\n  background: #FFF;\n  position: fixed;\n  top: 0;\n  right: 0;\n}\n";
  tc += "#slide0 h1, #slide0 h2, #slide0 h3, #slide0 h4 {\n  border: none;\n  margin: 0;\n}\n";
  tc += ".slide h1 {\n  margin: 0;\n  padding-top: 0.25em;\n  border-top: 1px solid #888;\n  border-bottom: 1px solid #AAA;\n}\n";
  tc += ".handout:empty:before {\n  content:\"Slide \" counter(slide) \" has no notes.\";\n  font-style:italic;\n}\n";
  tc += ".handout:not(:empty):before {\n  content:\"\\00270E  Slide \" counter(slide) \" Notes: \";\n  font-weight:bold;\n  display:block;\n}\n";
  tc += ".slide:before {\n  content:\"Slide \" counter(slide);\n  float:right;\n}\n";
  tc += ".slide:first-child {\n  display:none;\n}\n";
  tc += ".slide {\n  width:75%;\n  border:1px black solid;\n  margin:1em auto;\n  padding:10px;\n  position:relative;\n  min-height:200px;\n  counter-increment:slide;\n}\n";
  tc += ".slide h1, .slide h2 {\n  margin:0;\n  padding:0;\n  border:0;\n}\n";
  tc += ".presentation .slide:first-child {\n  counter-reset:slide;\n  counter-increment:none;\n}\n";
  tc += ".handout {\n  border-top:1px black solid;\n  padding:5px;\n}\n";
  tc += "#header, #runTimeData, #runTimeData * {\n  display:block !important;\n  text-align:center;\n  margin:auto;\n}\n";
  tc += "#runTimeData textarea {\n  text-align:left;\n  margin:.25em auto;\n  width:250px;\n  height:100px;\n}\n";
  
  if (isOSF) {
    s += "\n<!-- Screen Styles -->\n<style type=\"text/css\" media=\"screen\" id=\"outlineStyle\">\n/*<![CDATA[*/\n\n" + tc + "\n/*]]>*/\n<\/style>\n";
  }
  else {
    s += "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" id=\"outlineStyle\" href=\"data:text/css," + encodeURIComponent(tc) + "\" />\n";
  }
  
  s += "\n<!-- Template layout -->\n<style type=\"text/css\" media=\"all\">\n/*<![CDATA[*/\n\n";
  s += "td {\n  padding:3px;\n}\n";
  s += "div.template {\n  text-align:center;\n  margin:auto;\n}\n";
  s += "div.template div.container ul, div.template div.container ol {\n  text-align:left;\n  margin:0;\n}\n";
  s += "div.template div.layoutBox {\n  padding:.5em;\n  margin:.5em;\n  font-size:100%;\n}\n";
  s += "div.template div.title {\n  font-size:200%;\n  font-family:'Arial Black';\n}\n";
  s += "div.template div.subtitle {\n  font-size:50%;\n}\n";
  s += "div.template div.cell {\n  display:inline-block;\n  vertical-align:text-top;\n  width:90%;\n  overflow:visible;\n}\n";
  s += "div.template div.half {\n  width:42%;\n}\n";
  s += "div.template div.third {\n  width:25%;\n}\n";
  s += "\n/*]]>*/\n</style>\n";
  
  if (!isOSF) {
    var tempTrans = "";
    for (i in slideTransitions) {
      tempTrans += i + ": " + slideTransitions[i] + ",\n";
    }
    
    tempTrans = tempTrans.substring(0, tempTrans.length-2);
    tempTrans = tempTrans.replace(/function \(/gi, "function(");
    tempTrans = tempTrans.replace("smooth: 10", "smooth: 6");
    tempTrans = tempTrans.replace("#000", "'" + tt[1] + "'");
    tempTrans = tempTrans.replace(/g\(('|")transition-preview-button('|")\).disabled = (false|true);/gi, "");
    tempTrans = tempTrans.replace("this.dir = false;", "this.dir = false;currentSlide();");
    
    var tempTiming = "var slideTiming = [[" + slideTiming.join("], [") + "]];";
    
    s += "<script type=\"text/javascript\">\n/*<![CDATA[*/\n\n";
    s += "// S5 v1.1 slides.js -- released into the Public Domain\n// Modified by Project Velt (http://databathing.com/Project_Velt/)\n// Please see http://www.meyerweb.com/eric/tools/s5/credits.html for information \n// about all the wonderful and talented contributors to this code!\n\nvar undef;\nvar slideCSS = '';\nvar snum = 0;\nvar smax = 1;\nvar incpos = 0;\nvar number = undef;\nvar s5mode = true;\nvar onum = 0;\nvar defaultView = 'slideshow';\nvar controlVis = 'visible';\nvar inTransit = false;\nvar advanceTimer = null;\n\nvar isIE = navigator.appName == 'Microsoft Internet Explorer' ? 1 : 0;\nvar isGe = navigator.userAgent.indexOf('Gecko') > -1 && navigator.userAgent.indexOf('Safari') < 1 ? 1 : 0;\n\nfunction g(a) {\n  return document.getElementById(a);\n}\n\nfunction hasClass(object, className) {\n	if (!object.className) {return false;}\n	return (object.className.search('(^|\\\\s)' + className + '(\\\\s|$)') != -1);\n}\n\nfunction hasValue(object, value) {\n	if (!object) {return false;}\n	return (object.search('(^|\\\\s)' + value + '(\\\\s|$)') != -1);\n}\n\nfunction removeClass(object, className) {\n	if (!object) {return;}\n	object.className = object.className.replace(new RegExp('(^|\\\\s)'+className+'(\\\\s|$)'), RegExp.$1+RegExp.$2);\n}\n\nfunction addClass(object, className) {\n	if (!object || hasClass(object, className)) {return;}\n	if (object.className) {\n		object.className += ' ' + className;\n	}\n	else {\n		object.className = className;\n	}\n}\n\nfunction getElementsByClassName(className) {\n    if (document.getElementsByClassName) {\n      return document.getElementsByClassName(className);\n    }\n  \n	var allElements = document.getElementsByTagName('*');\n	var elemColl = [];\n	for (var i = 0; i < allElements.length; i++) {\n		if (hasClass(allElements[i], className)) {\n			elemColl[elemColl.length] = allElements[i];\n		}\n	}\n	return elemColl;\n}\n\nfunction isParentOrSelf(element, id) {\n	if (element == null || element.nodeName == 'BODY') {return false;}\n	else if (element.id == id) {return true;}\n	return isParentOrSelf(element.parentNode, id);\n}\n\nfunction nodeValue(node) {\n	var result = '';\n	if (node.nodeType == 1) {\n		var children = node.childNodes;\n		for (var i = 0; i < children.length; ++i) {\n			result += nodeValue(children[i]);\n		}\n	}\n	else if (node.nodeType == 3) {\n		result = node.nodeValue;\n	}\n	return result;\n}\n\nfunction slideLabel() {\n	var slideColl = getElementsByClassName('slide');\n	var list = g('jumplist');\n	smax = slideColl.length;\n	for (var n = 0; n < smax; n++) {\n		var obj = slideColl[n];\n\n		var did = 'slide' + n.toString();\n		obj.setAttribute('id', did);\n\n		var otext = '';\n		var menu = obj.firstChild;\n		if (!menu) {continue;} // to cope with empty slides\n		while (menu && menu.nodeType == 3) {\n			menu = menu.nextSibling;\n		}\n	 	if (!menu) {continue;} // to cope with slides with only text nodes\n\n		var menunodes = menu.childNodes;\n		for (var o = 0; o < menunodes.length; o++) {\n			otext += nodeValue(menunodes[o]);\n		}\n		list.options[list.length] = new Option(n + ' : '  + otext, n);\n	}\n}\n\nfunction currentSlide() {\n	var cs;\n	if (document.getElementById) {\n		cs = g('currentSlide');\n	}\n	else {\n		cs = document.currentSlide;\n	}\n	cs.innerHTML = '<span id=\\'csHere\\'>' + snum + '<\\/span> <span id=\\'csSep\\'>\\/<\\/span> <span id=\\'csTotal\\'>' + (smax-1) + '<\\/span>';\n	if (snum == 0) {\n		cs.style.visibility = 'hidden';\n	}\n	else {\n		cs.style.visibility = 'visible';\n	}\n	\n	g('slide' + onum).style.visibility = 'hidden';\n	g('slide' + snum).style.visibility = 'visible';\n	\n	inTransit = false;\n	clearTimeout(advanceTimer);\n	\n	if (snum == 0 || snum == smax-1) {return;}\n	\n    if (slideTiming[snum-1][0]) {\n      advanceTimer = setTimeout(function() {go(1);}, (slideTiming[snum-1][1] * 60 * 1000) + (slideTiming[snum-1][2] * 1000));\n    }\n}\n\nfunction go(step) {\n	if (g('slideProj').disabled || step == 0 || (snum + step >= smax)) {return;}\n	var jl = g('jumplist');\n	var cid = 'slide' + snum;\n	onum = snum;\n	var ce = g(cid);\n	var i;\n	if (incrementals[snum].length > 0) {\n		for (i = 0; i < incrementals[snum].length; i++) {\n			removeClass(incrementals[snum][i], 'current');\n			removeClass(incrementals[snum][i], 'incremental');\n		}\n	}\n	if (step != 'j') {\n		snum += step;\n		lmax = smax - 1;\n		if (snum > lmax) {snum = lmax;}\n		if (snum < 0) {snum = 0;}\n	}\n	else {\n		snum = parseInt(jl.value);\n	}\n	var nid = 'slide' + snum;\n	\n	var ne = g(nid);\n	if (!ne) {\n		ne = g('slide0');\n		snum = 0;\n	}\n	if (step < 0) {incpos = incrementals[snum].length;}\n	else {incpos = 0;}\n	\n	if (incrementals[snum].length > 0 && incpos == 0) {\n		for (i = 0; i < incrementals[snum].length; i++) {\n			if (hasClass(incrementals[snum][i], 'current')) {\n				incpos = i + 1;\n			}\n			else {\n				addClass(incrementals[snum][i], 'incremental');\n			}\n		}\n	}\n	if (incrementals[snum].length > 0 && incpos > 0) {\n		addClass(incrementals[snum][incpos - 1], 'current');\n	}\n	\n	jl.selectedIndex = snum;\n	number = 0;\n	playTrans();\n}\n\nfunction goTo(target) {\n	if (target >= smax || target == snum) {return;}\n	go(target - snum);\n}\n\nfunction subgo(step) {\n	if (step > 0) {\n		removeClass(incrementals[snum][incpos - 1], 'current');\n		removeClass(incrementals[snum][incpos], 'incremental');\n		addClass(incrementals[snum][incpos], 'current');\n		incpos++;\n	}\n	else {\n		incpos--;\n		removeClass(incrementals[snum][incpos], 'current');\n		addClass(incrementals[snum][incpos], 'incremental');\n		addClass(incrementals[snum][incpos - 1], 'current');\n	}\n}\n\nfunction toggle() {\n	var slideColl = getElementsByClassName('slide');\n	var slides = g('slideProj');\n	var outline = g('outlineStyle');\n	var n, slide;\n	if (!slides.disabled) {\n		slides.disabled = true;\n		outline.disabled = false;\n		s5mode = false;\n		fontSize('1em');\n		for (n = 0; n < smax; n++) {\n			slide = slideColl[n];\n			slide.style.visibility = 'visible';\n		}\n	}\n	else {\n		slides.disabled = false;\n		outline.disabled = true;\n		s5mode = true;\n		fontScale();\n		for (n = 0; n < smax; n++) {\n			slide = slideColl[n];\n			slide.style.visibility = 'hidden';\n		}\n		slideColl[snum].style.visibility = 'visible';\n	}\n}\n\nfunction showHide(action) {\n	var obj = getElementsByClassName('hideme')[0];\n	switch (action) {\n	case 's': obj.style.visibility = 'visible'; break;\n	case 'h': obj.style.visibility = 'hidden'; break;\n	case 'k':\n		if (obj.style.visibility != 'visible') {\n			obj.style.visibility = 'visible';\n		}\n		else {\n			obj.style.visibility = 'hidden';\n		}\n	break;\n	}\n}\n\n// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)\nfunction keys(key) {\n    if (inTransit) {\n      return; // No action during transition\n    }\n    clearTimeout(advanceTimer);\n    \n	if (!key) {\n		key = event;\n		key.which = key.keyCode;\n	}\n	if (key.which == 84) {\n		toggle();\n		return;\n	}\n	if (s5mode) {\n		switch (key.which) {\n			case 10: // return\n			case 13: // enter\n				if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) {return;}\n				if (key.target && isParentOrSelf(key.target, 'controls')) {return;}\n				if(number != undef) {\n					goTo(number);\n					break;\n				}\n			case 32: // spacebar\n			case 34: // page down\n			case 39: // rightkey\n			case 40: // downkey\n				if(number != undef) {\n					go(number);\n				}\n				else if (!incrementals[snum] || incpos >= incrementals[snum].length) {\n					go(1);\n				}\n				else {\n					subgo(1);\n				}\n				break;\n			case 33: // page up\n			case 37: // leftkey\n			case 38: // upkey\n				if(number != undef) {\n					go(-1 * number);\n				}\n				else if (!incrementals[snum] || incpos <= 0) {\n					go(-1);\n				}\n				else {\n					subgo(-1);\n				}\n				break;\n			case 36: // home\n				goTo(0);\n				break;\n			case 35: // end\n				goTo(smax-1);\n				break;\n			case 67: // c\n				showHide('k');\n				break;\n		}\n		if (key.which < 48 || key.which > 57) {\n			number = undef;\n		}\n		else {\n			if (window.event && isParentOrSelf(window.event.srcElement, 'controls')) {return;}\n			if (key.target && isParentOrSelf(key.target, 'controls')) {return;}\n			number = (((number != undef) ? number : 0) * 10) + (key.which - 48);\n		}\n	}\n	return false;\n}\n\nfunction clicker(e) {\n    if (inTransit) {\n      return; // No action during transition\n    }\n    clearTimeout(advanceTimer);\n    \n	number = undef;\n	var target;\n	if (window.event) {\n		target = window.event.srcElement;\n		e = window.event;\n	}\n	else {\n	  target = e.target;\n	}\n	if (target.getAttribute('href') != null || hasValue(target.rel, 'external') || isParentOrSelf(target, 'controls') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object')) {return true;}\n	if (!e.which || e.which == 1) {\n		if (!incrementals[snum] || incpos >= incrementals[snum].length) {\n			go(1);\n		}\n		else {\n			subgo(1);\n		}\n	}\n}\n\nfunction findSlide(hash) {\n	var target = null;\n	var slides = getElementsByClassName('slide');\n	for (var i = 0; i < slides.length; i++) {\n		var targetSlide = slides[i];\n		if ( (targetSlide.name && targetSlide.name == hash) || (targetSlide.id && targetSlide.id == hash) ) {\n			target = targetSlide;\n			break;\n		}\n	}\n	while (target != null && target.nodeName != 'BODY') {\n		if (hasClass(target, 'slide')) {\n			return parseInt(target.id.slice(5));\n		}\n		target = target.parentNode;\n	}\n	return null;\n}\n\nfunction slideJump() {\n	if (window.location.hash == null) {return;}\n	var sregex = /^#slide(\\d+)$/;\n	var matches = sregex.exec(window.location.hash);\n	var dest = null;\n	if (matches != null) {\n		dest = parseInt(matches[1]);\n	}\n	else {\n		dest = findSlide(window.location.hash.slice(1));\n	}\n	if (dest != null) {\n		go(dest - snum);\n	}\n}\n\nfunction fixLinks() {\n	var thisUri = window.location.href;\n	thisUri = thisUri.slice(0, thisUri.length - window.location.hash.length);\n	var aelements = document.getElementsByTagName('A');\n	for (var i = 0; i < aelements.length; i++) {\n		var a = aelements[i].href;\n		var slideID = a.match('\\#slide[0-9]{1,2}');\n		if ((slideID) && (slideID[0].slice(0,1) == '#')) {\n			var dest = findSlide(slideID[0].slice(1));\n			if (dest != null) {\n				if (aelements[i].addEventListener) {\n					aelements[i].addEventListener('click', new Function('e',\n						'if (g(\\'slideProj\\').disabled) return;' +\n						'go(' + dest + ' - snum); ' +\n						'if (e.preventDefault) e.preventDefault();'), true);\n				}\n				else if (aelements[i].attachEvent) {\n					aelements[i].attachEvent('onclick', new Function('',\n						'if (g(\\'slideProj\\').disabled) return;' +\n						'go(' + dest + ' - snum); ' +\n						'event.returnValue = false;'));\n				}\n			}\n		}\n	}\n}\n\nfunction externalLinks() {\n	if (!document.getElementsByTagName) {return;}\n	var anchors = document.getElementsByTagName('a');\n	for (var i=0; i<anchors.length; i++) {\n		var anchor = anchors[i];\n		if (anchor.getAttribute('href') && hasValue(anchor.rel, 'external')) {\n			anchor.target = '_blank';\n			addClass(anchor, 'external');\n		}\n	}\n}\n\nfunction createControls() {\n	var controlsDiv = g('controls');\n	if (!controlsDiv) {return;}\n	var hider = ' onmouseover=\"showHide(\\'s\\');\" onmouseout=\"showHide(\\'h\\');\"';\n	var hideDiv, hideList = '';\n	if (controlVis == 'hidden') {\n		hideDiv = hider;\n	}\n	else {\n		hideList = hider;\n	}\n	controlsDiv.innerHTML = '<form action=\\'#\\' id=\\'controlForm\\'' + hideDiv + '>' +\n	'<div id=\\'navLinks\\'>' +\n	'<a accesskey=\\'t\\' id=\\'toggle\\' href=\"javascript:toggle();\">&#216;<\\/a>' +\n	'<a accesskey=\\'z\\' id=\\'prev\\' href=\\'javascript:go(-1);\\'>&laquo;<\\/a>' +\n	'<a accesskey=\\'x\\' id=\\'next\\' href=\\'javascript:go(1);\\'>&raquo;<\\/a>' +\n	'<div id=\\'navList\\'' + hideList + '><select id=\\'jumplist\\' onchange=\"go(\\'j\\');\"><\\/select><\\/div>' +\n	'<\\/div><\\/form>';\n	\n	var hidden;\n	if (controlVis == 'hidden') {\n		hidden = g('navLinks');\n	}\n	else {\n		hidden = g('jumplist');\n	}\n	addClass(hidden, 'hideme');\n}\n\nfunction fontScale() {  // causes layout problems in FireFox that get fixed if browser's Reload is used; same may be true of other Gecko-based browsers\n	if (!s5mode) {return false;}\n	var vScale = 22;  // both yield 32 (after rounding) at 1024x768\n	var hScale = 32;  // perhaps should auto-calculate based on theme's declared value?\n	var vSize, hSize;\n	if (window.innerHeight) {\n		vSize = window.innerHeight;\n		hSize = window.innerWidth;\n	}\n	else if (document.documentElement.clientHeight) {\n		vSize = document.documentElement.clientHeight;\n		hSize = document.documentElement.clientWidth;\n	}\n	else if (document.body.clientHeight) {\n		vSize = document.body.clientHeight;\n		hSize = document.body.clientWidth;\n	}\n	else {\n		vSize = 700;  // assuming 1024x768, minus chrome and such\n		hSize = 1024; // these do not account for kiosk mode or Opera Show\n	}\n	var newSize = Math.min(Math.round(vSize / vScale), Math.round(hSize / hScale));\n	fontSize(newSize + 'px');\n	if (isGe) {  // hack to counter incremental reflow bugs\n		var obj = document.getElementsByTagName('body')[0];\n		obj.style.display = 'none';\n		obj.style.display = 'block';\n	}\n}\n\nfunction fontSize(value) {\n	if (!(s5ss = g('s5ss'))) {\n		if (!isIE) {\n			document.getElementsByTagName('head')[0].appendChild(s5ss = document.createElement('style'));\n			s5ss.setAttribute('media', 'screen, projection');\n			s5ss.setAttribute('id', 's5ss');\n		}\n		else {\n			document.createStyleSheet();\n			document.s5ss = document.styleSheets[document.styleSheets.length - 1];\n		}\n	}\n	if (!isIE) {\n		while (s5ss.lastChild) {\n		  s5ss.removeChild(s5ss.lastChild);\n		}\n		s5ss.appendChild(document.createTextNode('body {font-size: ' + value + ' !important;}'));\n	}\n	else {\n		document.s5ss.addRule('body', 'font-size: ' + value + ' !important;');\n	}\n}\n\n// Also fixes Opera; reverting to OperaShow breaks transitions\nfunction notOperaFix() {\n	slideCSS = g('slideProj').href;\n	var slides = g('slideProj');\n	var outline = g('outlineStyle');\n	var operaFix = g('operaFix');\n	\n	slides.setAttribute('media', 'screen, projection');\n	outline.disabled = true;\n	operaFix.disabled = true;\n	\n	if (isGe) {\n		slides.setAttribute('href', 'null');   // Gecko fix\n		slides.setAttribute('href', slideCSS); // Gecko fix\n	}\n}\n\nfunction getIncrementals(obj) {\n	var incrementals = [];\n	if (!obj) {\n		return incrementals;\n	}\n	var children = obj.childNodes;\n	for (var i = 0; i < children.length; i++) {\n		var child = children[i];\n		if (hasClass(child, 'incremental')) {\n			if (child.nodeName == 'OL' || child.nodeName == 'UL') {\n				removeClass(child, 'incremental');\n				for (var j = 0; j < child.childNodes.length; j++) {\n					if (child.childNodes[j].nodeType == 1) {\n						addClass(child.childNodes[j], 'incremental');\n					}\n				}\n			}\n			else {\n				incrementals[incrementals.length] = child;\n				removeClass(child, 'incremental');\n			}\n		}\n		if (hasClass(child, 'show-first')) {\n			if (child.nodeName == 'OL' || child.nodeName == 'UL') {\n				removeClass(child, 'show-first');\n				if (child.childNodes[isGe].nodeType == 1) {\n					removeClass(child.childNodes[isGe], 'incremental');\n				}\n			}\n			else {\n				incrementals[incrementals.length] = child;\n			}\n		}\n		incrementals = incrementals.concat(getIncrementals(child));\n	}\n	return incrementals;\n}\n\nfunction createIncrementals() {\n	var incrementals = [];\n	for (var i = 0; i < smax; i++) {\n		incrementals[i] = getIncrementals(g('slide'+i));\n	}\n	return incrementals;\n}\n\nfunction defaultCheck() {\n	var allMetas = document.getElementsByTagName('meta');\n	for (var i = 0; i< allMetas.length; i++) {\n		if (allMetas[i].name == 'defaultView') {\n			defaultView = allMetas[i].content;\n		}\n		if (allMetas[i].name == 'controlVis') {\n			controlVis = allMetas[i].content;\n		}\n	}\n}\n\n// Key trap fix, new function body for trap()\nfunction trap(e) {\n	if (!e) {\n		e = event;\n		e.which = e.keyCode;\n	}\n	try {\n		modifierKey = e.ctrlKey || e.altKey || e.metaKey;\n	}\n	catch(f) {\n		modifierKey = false;\n	}\n	return modifierKey || e.which == 0;\n}\n\n// slideTransitions object added during file assembly\nfunction playTrans() {\n	var slideTrans = g('runTimeDataText').value.split('|P|')[12].split('|S|');\n	var tmp = snum-1 < 0 ? 0 : snum-1;\n	inTransit = true;\n	clearTimeout(advanceTimer);\n	switch (parseInt(slideTrans[tmp])) {\n		case 0: currentSlide(); break; // No transition \n		case 1: slideTransitions.left(); break;\n		case 2: slideTransitions.right(); break;\n		case 3: slideTransitions.up(); break;\n		case 4: slideTransitions.down(); break;\n		case 5: slideTransitions.rightDown(); break;\n		case 6: slideTransitions.rightUp(); break;\n		case 7: slideTransitions.leftUp(); break;\n		case 8: slideTransitions.leftDown(); break;\n		case 9: slideTransitions.vComb(); break;\n		case 10: slideTransitions.hComb(); break;\n		case 11: slideTransitions.vBlinds(); break;\n		case 12: slideTransitions.hBlinds(); break;\n		case 13: slideTransitions.vSplitIn(); break;\n		case 14: slideTransitions.hSplitIn(); break;\n		case 15: slideTransitions.hSplitOut(); break;\n		case 16: slideTransitions.vSplitOut(); break;\n		case 17: slideTransitions.box(); break;\n		case 18: slideTransitions.boxIn(); break;\n		case 19: slideTransitions.boxOut(); break;\n		case 20: slideTransitions.cornerIn(); break;\n		case 21: slideTransitions.cornerOut(); break;\n		case 22: slideTransitions.windmill(); break;\n		case 23: slideTransitions.fade(); break;\n	}\n}\n\nwindow.onload = function() {\n	defaultCheck();\n	createControls();\n	\n	notOperaFix();\n	if (defaultView == 'outline') {\n		toggle();\n	}\n	\n	slideLabel();\n	fixLinks();\n	externalLinks();\n	fontScale();\n\n    incrementals = createIncrementals();\n	slideJump();\n	\n	document.onkeyup = keys;\n	document.onkeypress = trap;\n	document.onclick = clicker;\n};\n\nwindow.onresize = function() {\n  setTimeout(fontScale, 50);\n};";
    s += "\n\nvar slideTransitions = {\n" + tempTrans + "\n};\n\n" + tempTiming + "\n\n/*]]>*/\n</script>\n";
  }
  
  s += "</head>\n<body>\n\n";

  s += "<!-- start layout section -->\n<div class=\"layout\">\n";
  
  // Layout
  if (!isOSF) {
    s += "\n<div id=\"transition-container\">&nbsp;</div>\n";
    s += "<div id=\"controls\">&nbsp;</div>\n";
    s += "<div id=\"currentSlide\">&nbsp;</div>\n";
  }
  
  s += "\n<div id=\"header\">\n";
  
  runTimeData=runTimeData.replace(/</gi, "&lt;");
  runTimeData=runTimeData.replace(/>/gi, "&gt;");
  
  s += "<div id=\"runTimeData\" style=\"display:none;\">Import Data:<br /><textarea rows=\"6\" cols=\"30\" id=\"runTimeDataText\" readonly=\"readonly\">"+runTimeData+"</textarea><input type=\"button\" value=\"Select All\" onclick=\"document.getElementById('runTimeDataText').focus(); document.getElementById('runTimeDataText').select();\" /></div>\n";
  
  s += "</div>\n";
  s += "<div id=\"footer\">&nbsp;</div>\n\n";
  
  var cornerIDs = [g('editFileSelectTL').selectedIndex, g('editFileSelectTR').selectedIndex, g('editFileSelectBL').selectedIndex, g('editFileSelectBR').selectedIndex];
  s += "<div class=\"topleft\""+((cornerIDs[0]!=0)?" id=\""+metaTagNames[cornerIDs[0]]+"\"":'')+">"+getS5CornerContents('editFileSelectTL')+"</div>\n";
  s += "<div class=\"topright\""+((cornerIDs[1]!=0)?" id=\""+metaTagNames[cornerIDs[1]]+"\"":'')+">"+getS5CornerContents('editFileSelectTR')+"</div>\n";
  s += "<div class=\"bottomleft\""+((cornerIDs[2]!=0)?" id=\""+metaTagNames[cornerIDs[2]]+"\"":'')+">"+getS5CornerContents('editFileSelectBL')+"</div>\n";
  s += "<div class=\"bottomright\""+((cornerIDs[3]!=0)?" id=\""+metaTagNames[cornerIDs[3]]+"\"":'')+">"+getS5CornerContents('editFileSelectBR')+"</div>\n";
  s += "\n</div>\n<!-- end layout section -->\n\n";
  
  // Begin slides
  s += "<!-- start presentation -->\n";
  s += ((isXOXO) ? "<ol class=\"presentation xoxo\">\n" : "<div class=\"presentation\">\n");
  
  // Intro slide
  s += "\n<!-- start slide -->";
  s += "\n<"+((isXOXO)? 'li' : 'div')+" class=\"slide\">\n";
  s += "<h1>"+tempTitle+"</h1>\n";
  s += (S5getAuthor()!='') ? "<h2>"+S5getAuthor()+"</h2>\n" : "";
  s += (S5getCompany()!='') ? "<h2>"+S5getCompany()+"</h2>\n" : "";
  s += "</"+((isXOXO)? 'li' : 'div')+">\n";
  s += "<!-- end slide -->\n";
  
  // Populate Custom Fields
  var tempContent = [].concat(slideContent);
  for (i=0; i<tempContent.length; i++) {
    if (customFields[0] != '') {
      for (k=0; k<customFields.length; k++) {
        tempContent[i]=tempContent[i].replace(new RegExp(stripRegExp(customFields[k][0]), "g"), customFields[k][1]);
      }
    }
    tempContent[i] = tempContent[i].replace(/\$TITLE/g, tempTitle);
    tempContent[i] = tempContent[i].replace(/\$CSLIDE/g, i+1);
    tempContent[i] = tempContent[i].replace(/\$TSLIDE/g, tempContent.length);
    tempContent[i] = tempContent[i].replace(/\$NOTES/g, slideNotes[i]);
  }

  // Make sure all content is strict XHTML
  for (i=0; i<tempContent.length; i++) {
    tempContent[i] = toXHTML(tempContent[i]);
  }
  
  // Append all slides
  for (i=0; i<tempContent.length; i++) {
    s += "\n<!-- start slide -->";
    s += "\n<" + ((isXOXO)? 'li' : 'div') + " class=\"slide\">\n";
    s += "<h1>"+slideBacks[i]+"</h1>\n"; // Slide heading
    s += "<div class=\"slidecontent\">\n"+tempContent[i]+"\n</div>\n\n";
    s += "<!-- start handout -->\n";
    s += "<div class=\"handout\">"+slideNotes[i]+"</div>\n\n";
    s += "</" + ((isXOXO)? 'li' : 'div') + ">\n";
    s += "<!-- end slide -->\n";
  }
  
  // End slides
  s += "\n</" + ((isXOXO)? 'ol' : 'div') + ">\n";
  s += "<!-- end presentation -->\n";
  
  s += "\n</body>\n</html>";
  
  if (window.widget != null) {
    widget.openURL("data:text/html,"+encodeURIComponent(s));
  }
  else {
    window.open("data:text/html,"+encodeURIComponent(s));
  }
}