/*! Flatdoc (http://ricostacruz.com/flatdoc) (c) 2013 Rico Sta. Cruz. MIT licensed. Also includes: marked a markdown parser (c) 2011-2013, Christopher Jeffrey. (MIT Licensed) https://github.com/chjj/marked base64.js http://github.com/dankogai/js-base64 */ !function($){var exports=this;var marked;var Flatdoc=exports.Flatdoc={};Flatdoc.run=function(options){$(function(){new Flatdoc.runner(options).run()})};Flatdoc.file=function(url){return function(callback){$.get(url).fail(function(e){callback(e,null)}).done(function(data){callback(null,data)})}};Flatdoc.github=function(repo,filepath){var url;if(filepath){url="https://api.github.com/repos/"+repo+"/contents/"+filepath}else{url="https://api.github.com/repos/"+repo+"/readme"}return function(callback){$.get(url).fail(function(e){callback(e,null)}).done(function(data){var markdown=exports.Base64.decode(data.content);callback(null,markdown)})}};Flatdoc.bitbucket=function(repo,filepath,branch){var url;if(!filepath){filepath="readme.md"}if(!branch){branch="default"}url="https://bitbucket.org/api/1.0/repositories/"+repo+"/src/"+branch+"/"+filepath;return function(callback){$.ajax({url:url,dataType:"jsonp",error:function(xhr,status,error){alert(error)},success:function(response){var markdown=response.data;callback(null,markdown)}})}};var Parser=Flatdoc.parser={};Parser.parse=function(source){marked=exports.marked;Parser.setMarkedOptions();var html=$("
"+marked(source));var h1=html.find("h1").eq(0);var title=h1.text();Transformer.mangle(html);var menu=Transformer.getMenu(html);return{title:title,content:html,menu:menu}};Parser.setMarkedOptions=function(){marked.setOptions({highlight:function(code,lang){if(lang){var fn=Flatdoc.highlighters[lang]||Flatdoc.highlighters.generic;return fn(code)}return code}})};var Transformer=Flatdoc.transformer={};Transformer.mangle=function($content){this.addIDs($content);this.buttonize($content);this.smartquotes($content)};Transformer.addIDs=function($content){$content.find("h1, h2, h3").each(function(){var $el=$(this);var text=$el.text();var id=slugify(text);$el.attr("id",id)})};Transformer.getMenu=function($content){var root={items:[],id:"",level:0};var cache=[root];function mkdir_p(level){var parent=level>1?mkdir_p(level-1):root;if(!cache[level]){var obj={items:[],level:level};cache[level]=obj;parent.items.push(obj);return obj}return cache[level]}$content.find("h1, h2, h3").each(function(){var $el=$(this);var level=+this.nodeName.substr(1);parent=mkdir_p(level-1);var obj={section:$el.text(),items:[],level:level,id:$el.attr("id")};parent.items.push(obj);cache[level]=obj});return root};Transformer.buttonize=function($content){$content.find("a").each(function(){var $a=$(this);var m=$a.text().match(/^(.*) >$/);if(m)$a.text(m[1]).addClass("button")})};Transformer.smartquotes=function($content){var nodes=getTextNodesIn($content),len=nodes.length;for(var i=0;i/g,">").replace(/("[^\"]*?")/g,'$1').replace(/('[^\']*?')/g,'$1').replace(/\/\/(.*)/gm,'//$1').replace(/\/\*(.*)\*\//gm,'/*$1*/').replace(/(\d+\.\d+)/gm,'$1').replace(/(\d+)/gm,'$1').replace(/\bnew *(\w+)/gm,'new $1').replace(/\b(function|new|throw|return|var|if|else)\b/gm,'$1')};Highlighters.html=function(code){return code.replace(//g,">").replace(/("[^\"]*?")/g,'$1').replace(/('[^\']*?')/g,'$1').replace(/<!--(.*)-->/g,'<!--$1-->').replace(/<([^!][^ ]*)/g,'<$1')};Highlighters.generic=function(code){return code.replace(//g,">").replace(/("[^\"]*?")/g,'$1').replace(/('[^\']*?')/g,'$1').replace(/(\/\/|#)(.*)/gm,'$1$2').replace(/(\d+\.\d+)/gm,'$1').replace(/(\d+)/gm,'$1')};var MenuView=Flatdoc.menuView=function(menu){var $el=$("