aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJacob Thornton <[email protected]>2011-05-03 18:12:43 -0700
committerJacob Thornton <[email protected]>2011-05-03 18:12:43 -0700
commit96c3e709963516a06ad6e723a7bba3fbf5fc1ba2 (patch)
tree4630ca93f148e406dc3c3391e5f790f630e53c97 /docs
parentd447898bf251cfa4cc6b1c8f9cb4c238ad12ef52 (diff)
downloadbootstrap-96c3e709963516a06ad6e723a7bba3fbf5fc1ba2.tar.xz
bootstrap-96c3e709963516a06ad6e723a7bba3fbf5fc1ba2.zip
cleanup old stuff
Diffstat (limited to 'docs')
-rw-r--r--docs/assets/img/baseline-10px.pngbin0 -> 152 bytes
-rw-r--r--docs/assets/img/blueprint-icon.pngbin0 -> 193217 bytes
-rw-r--r--docs/assets/img/grid-20px.pngbin0 -> 324 bytes
-rw-r--r--docs/assets/img/grid-940px.pngbin0 -> 160 bytes
-rw-r--r--docs/assets/img/twitter-logo-no-bird.pngbin0 -> 1509 bytes
-rw-r--r--docs/assets/js/application.js24
-rwxr-xr-xdocs/assets/js/jquery/chili/css.js85
-rwxr-xr-xdocs/assets/js/jquery/chili/html.js80
-rwxr-xr-xdocs/assets/js/jquery/chili/jquery.chili-2.2.js704
-rwxr-xr-xdocs/assets/js/jquery/chili/js.js75
-rwxr-xr-xdocs/assets/js/jquery/chili/php-f.js142
-rwxr-xr-xdocs/assets/js/jquery/chili/php.js138
-rwxr-xr-xdocs/assets/js/jquery/chili/recipes.js364
-rwxr-xr-xdocs/assets/js/jquery/hashgrid.js340
-rw-r--r--docs/assets/js/jquery/jquery.tipsy.js104
-rw-r--r--docs/assets/js/less-1.0.41.min.js69
-rw-r--r--docs/grid.html168
-rw-r--r--docs/index.html1195
18 files changed, 3488 insertions, 0 deletions
diff --git a/docs/assets/img/baseline-10px.png b/docs/assets/img/baseline-10px.png
new file mode 100644
index 000000000..16095dcbf
--- /dev/null
+++ b/docs/assets/img/baseline-10px.png
Binary files differ
diff --git a/docs/assets/img/blueprint-icon.png b/docs/assets/img/blueprint-icon.png
new file mode 100644
index 000000000..babb40979
--- /dev/null
+++ b/docs/assets/img/blueprint-icon.png
Binary files differ
diff --git a/docs/assets/img/grid-20px.png b/docs/assets/img/grid-20px.png
new file mode 100644
index 000000000..91b8bf38d
--- /dev/null
+++ b/docs/assets/img/grid-20px.png
Binary files differ
diff --git a/docs/assets/img/grid-940px.png b/docs/assets/img/grid-940px.png
new file mode 100644
index 000000000..99b1dd137
--- /dev/null
+++ b/docs/assets/img/grid-940px.png
Binary files differ
diff --git a/docs/assets/img/twitter-logo-no-bird.png b/docs/assets/img/twitter-logo-no-bird.png
new file mode 100644
index 000000000..70b6573d7
--- /dev/null
+++ b/docs/assets/img/twitter-logo-no-bird.png
Binary files differ
diff --git a/docs/assets/js/application.js b/docs/assets/js/application.js
new file mode 100644
index 000000000..a79f942e3
--- /dev/null
+++ b/docs/assets/js/application.js
@@ -0,0 +1,24 @@
+// Javascript to toggle the dropdowns
+$(document).ready(function(){
+ // Dropdowns
+ $("body").bind("click", function(e) {
+ $("ul.menu-dropdown").hide();
+ $('a.menu').parent("li").removeClass("open").children("ul.menu-dropdown").hide();
+ });
+ $("a.menu").click(function(e) {
+ var $target = $(this);
+ var $parent = $target.parent("li");
+ var $siblings = $target.siblings("ul.menu-dropdown");
+ var $parentSiblings = $parent.siblings("li");
+ if ($parent.hasClass("open")) {
+ $parent.removeClass("open");
+ $siblings.hide();
+ } else {
+ $parent.addClass("open");
+ $siblings.show();
+ }
+ $parentSiblings.children("ul.menu-dropdown").hide();
+ $parentSiblings.removeClass("open");
+ return false;
+ });
+}); \ No newline at end of file
diff --git a/docs/assets/js/jquery/chili/css.js b/docs/assets/js/jquery/chili/css.js
new file mode 100755
index 000000000..e86e88224
--- /dev/null
+++ b/docs/assets/js/jquery/chili/css.js
@@ -0,0 +1,85 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+{
+ _name: 'css'
+ , _case: true
+ , _main: {
+ comment: {
+ _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//
+ , _style: "color: olive;"
+ }
+ , directive: {
+ _match: /@\w+/
+ , _style: "color: fuchsia;"
+ }
+ , url: {
+ _match: /\b(url\s*\()([^)]+)(\))/
+ , _replace: "<span class='url'>$1</span>$2<span class='url'>$3</span>"
+ , _style: "color: fuchsia;"
+ }
+ , block: {
+ _match: /\{([\w\W]*?)\}/
+ , _replace: function( all, pairs ) {
+ return '{' + this.x( pairs, '/definition' ) + '}';
+ }
+ }
+ , 'class': {
+ _match: /\.\w+/
+ , _style: "color: #CC0066;"
+ }
+ , id: {
+ _match: /#\w+/
+ , _style: "color: IndianRed;"
+ }
+ , pseudo: {
+ _match: /:\w+/
+ , _style: "color: #CC9900;"
+ }
+ , element: {
+ _match: /\w+/
+ , _style: "color: Purple;"
+ }
+ }
+ , definition: {
+ comment: {
+ _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//
+ }
+ , property: {
+ _match: /\b(?:zoom|z-index|writing-mode|word-wrap|word-spacing|word-break|width|widows|white-space|volume|voice-family|visibility|vertical-align|unicode-bidi|top|text-underline-position|text-transform|text-shadow|text-overflow|text-kashida-space|text-justify|text-indent|text-decoration|text-autospace|text-align-last|text-align|table-layout|stress|speech-rate|speak-punctuation|speak-numeral|speak-header|speak|size|scrollbar-track-color|scrollbar-shadow-color|scrollbar-highlight-color|scrollbar-face-color|scrollbar-dark-shadow-color|scrollbar-base-color|scrollbar-arrow-color|scrollbar-3d-light-color|ruby-position|ruby-overhang|ruby-align|right|richness|quotes|position|play-during|pitch-range|pitch|pause-before|pause-after|pause|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-Y|overflow-X|overflow|outline-width|outline-style|outline-color|outline|orphans|min-width|min-height|max-width|max-height|marks|marker-offset|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|line-break|letter-spacing|left|layout-grid-type|layout-grid-mode|layout-grid-line|layout-grid-char-spacing|layout-grid-char|layout-grid|layout-flow|layer-background-image|layer-background-color|include-source|ime-mode|height|font-weight|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-family|font|float|filter|empty-cells|elevation|display|direction|cursor|cue-before|cue-after|cue|counter-reset|counter-increment|content|color|clip|clear|caption-side|bottom|border-width|border-top-width|border-top-style|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-left-width|border-left-style|border-left-color|border-left|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-color|border-bottom|border|behavior|background-repeat|background-position-y|background-position-x|background-position|background-image|background-color|background-attachment|background|azimuth|accelerator)\s*:/
+ , _style: "color: #330066;"
+ }
+ , special: {
+ _match: /\b(?:-use-link-source|-set-link-source|-replace|-moz-user-select|-moz-user-modify|-moz-user-input|-moz-user-focus|-moz-outline-width|-moz-outline-style|-moz-outline-color|-moz-outline|-moz-opacity|-moz-border-top-colors|-moz-border-right-colors|-moz-border-radius-topright|-moz-border-radius-topleft|-moz-border-radius-bottomright|-moz-border-radius-bottomleft|-moz-border-radius|-moz-border-left-colors|-moz-border-bottom-colors|-moz-binding)\s*:/
+ , _style: "color: #330066; text-decoration: underline;"
+ }
+ , url: {
+ _match: /\b(url\s*\()([^)]+)(\))/
+ , _replace: "<span class='url'>$1</span>$2<span class='url'>$3</span>"
+ }
+ , value: {
+ _match: /\b(?:xx-small|xx-large|x-soft|x-small|x-slow|x-low|x-loud|x-large|x-high|x-fast|wider|wait|w-resize|visible|url|uppercase|upper-roman|upper-latin|upper-alpha|underline|ultra-expanded|ultra-condensed|tv|tty|transparent|top|thin|thick|text-top|text-bottom|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table-caption|sw-resize|super|sub|status-bar|static|square|spell-out|speech|solid|soft|smaller|small-caption|small-caps|small|slower|slow|silent|show|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|s-resize|run-in|rtl|rightwards|right-side|right|ridge|rgb|repeat-y|repeat-x|repeat|relative|projection|print|pre|portrait|pointer|overline|outside|outset|open-quote|once|oblique|nw-resize|nowrap|normal|none|no-repeat|no-open-quote|no-close-quote|ne-resize|narrower|n-resize|move|mix|middle|message-box|medium|marker|ltr|lowercase|lower-roman|lower-latin|lower-greek|lower-alpha|lower|low|loud|local|list-item|line-through|lighter|level|leftwards|left-side|left|larger|large|landscape|justify|italic|invert|inside|inset|inline-table|inline|icon|higher|high|hide|hidden|help|hebrew|handheld|groove|format|fixed|faster|fast|far-right|far-left|fantasy|extra-expanded|extra-condensed|expanded|embossed|embed|e-resize|double|dotted|disc|digits|default|decimal-leading-zero|decimal|dashed|cursive|crosshair|cross|crop|counters|counter|continuous|condensed|compact|collapse|code|close-quote|circle|center-right|center-left|center|caption|capitalize|braille|bottom|both|bolder|bold|block|blink|bidi-override|below|behind|baseline|avoid|auto|aural|attr|armenian|always|all|absolute|above)\b/
+ , _style: "color: #3366FF;"
+ }
+ , string: {
+ _match: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/
+ , _style: "color: teal;"
+ }
+ , number: {
+ _match: /(?:\b[+-]?(?:\d*\.?\d+|\d+\.?\d*))(?:%|(?:(?:px|pt|em|)\b))/
+ , _style: "color: red;"
+ }
+ , color : {
+ _match: /(?:\#[a-fA-F0-9]{3,6})|\b(?:yellow|white|teal|silver|red|purple|olive|navy|maroon|lime|green|gray|fuchsia|blue|black|aqua|YellowGreen|Yellow|WhiteSmoke|White|Wheat|Violet|Turquoise|Tomato|Thistle|Teal|Tan|SteelBlue|SpringGreen|Snow|SlateGrey|SlateGray|SlateBlue|SkyBlue|Silver|Sienna|SeaShell|SeaGreen|SandyBrown|Salmon|SaddleBrown|RoyalBlue|RosyBrown|Red|Purple|PowderBlue|Plum|Pink|Peru|PeachPuff|PapayaWhip|PaleVioletRed|PaleTurquoise|PaleGreen|PaleGoldenRod|Orchid|OrangeRed|Orange|OliveDrab|Olive|OldLace|Navy|NavajoWhite|Moccasin|MistyRose|MintCream|MidnightBlue|MediumVioletRed|MediumTurquoise|MediumSpringGreen|MediumSlateBlue|MediumSeaGreen|MediumPurple|MediumOrchid|MediumBlue|MediumAquaMarine|Maroon|Magenta|Linen|LimeGreen|Lime|LightYellow|LightSteelBlue|LightSlateGrey|LightSlateGray|LightSkyBlue|LightSeaGreen|LightSalmon|LightPink|LightGrey|LightGreen|LightGray|LightGoldenRodYellow|LightCyan|LightCoral|LightBlue|LemonChiffon|LawnGreen|LavenderBlush|Lavender|Khaki|Ivory|Indigo|IndianRed|HotPink|HoneyDew|Grey|GreenYellow|Green|Gray|GoldenRod|Gold|GhostWhite|Gainsboro|Fuchsia|ForestGreen|FloralWhite|FireBrick|DodgerBlue|DimGrey|DimGray|DeepSkyBlue|DeepPink|Darkorange|DarkViolet|DarkTurquoise|DarkSlateGrey|DarkSlateGray|DarkSlateBlue|DarkSeaGreen|DarkSalmon|DarkRed|DarkOrchid|DarkOliveGreen|DarkMagenta|DarkKhaki|DarkGrey|DarkGreen|DarkGray|DarkGoldenRod|DarkCyan|DarkBlue|Cyan|Crimson|Cornsilk|CornflowerBlue|Coral|Chocolate|Chartreuse|CadetBlue|BurlyWood|Brown|BlueViolet|Blue|BlanchedAlmond|Black|Bisque|Beige|Azure|Aquamarine|Aqua|AntiqueWhite|AliceBlue)\b/
+ , _style: "color: green;"
+ }
+ }
+}
diff --git a/docs/assets/js/jquery/chili/html.js b/docs/assets/js/jquery/chili/html.js
new file mode 100755
index 000000000..69f43a86d
--- /dev/null
+++ b/docs/assets/js/jquery/chili/html.js
@@ -0,0 +1,80 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+{
+ _name: 'html'
+ , _case: false
+ , _main: {
+ doctype: {
+ _match: /<!DOCTYPE\b[\w\W]*?>/
+ , _style: "color: #CC6600;"
+ }
+ , ie_style: {
+ _match: /(<!--\[[^\]]*\]>)([\w\W]*?)(<!\[[^\]]*\]-->)/
+ , _replace: function( all, open, content, close ) {
+ return "<span class='ie_style'>" + this.x( open ) + "</span>"
+ + this.x( content, '//style' )
+ + "<span class='ie_style'>" + this.x( close ) + "</span>";
+ }
+ , _style: "color: DarkSlateGray; font-weight: bold;"
+ }
+ , comment: {
+ _match: /<!--[\w\W]*?-->/
+ , _style: "color: #4040c2;"
+ }
+ , script: {
+ _match: /(<script\s+[^>]*>)([\w\W]*?)(<\/script\s*>)/
+ , _replace: function( all, open, content, close ) {
+ return this.x( open, '//tag_start' )
+ + this.x( content, 'js' )
+ + this.x( close, '//tag_end' );
+ }
+ }
+ , style: {
+ _match: /(<style\s+[^>]*>)([\w\W]*?)(<\/style\s*>)/
+ , _replace: function( all, open, content, close ) {
+ return this.x( open, '//tag_start' )
+ + this.x( content, 'css' )
+ + this.x( close, '//tag_end' );
+ }
+ }
+ // matches a starting tag of an element (with attrs)
+ // like "<div ... >" or "<img ... />"
+ , tag_start: {
+ _match: /(<\w+)((?:[?%]>|[\w\W])*?)(\/>|>)/
+ , _replace: function( all, open, content, close ) {
+ return "<span class='tag_start'>" + this.x( open ) + "</span>"
+ + this.x( content, '/tag_attrs' )
+ + "<span class='tag_start'>" + this.x( close ) + "</span>";
+ }
+ , _style: "color: navy; font-weight: bold;"
+ }
+ // matches an ending tag
+ // like "</div>"
+ , tag_end: {
+ _match: /<\/\w+\s*>|\/>/
+ , _style: "color: navy;"
+ }
+ , entity: {
+ _match: /&\w+?;/
+ , _style: "color: blue;"
+ }
+ }
+ , tag_attrs: {
+ // matches a name/value pair
+ attr: {
+ // before in $1, name in $2, between in $3, value in $4
+ _match: /(\W*?)([\w-]+)(\s*=\s*)((?:\'[^\']*(?:\\.[^\']*)*\')|(?:\"[^\"]*(?:\\.[^\"]*)*\"))/
+ , _replace: "$1<span class='attr_name'>$2</span>$3<span class='attr_value'>$4</span>"
+ , _style: { attr_name: "color: green;", attr_value: "color: maroon;" }
+ }
+ }
+}
diff --git a/docs/assets/js/jquery/chili/jquery.chili-2.2.js b/docs/assets/js/jquery/chili/jquery.chili-2.2.js
new file mode 100755
index 000000000..bb0e4abae
--- /dev/null
+++ b/docs/assets/js/jquery/chili/jquery.chili-2.2.js
@@ -0,0 +1,704 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+
+( function($) {
+
+ChiliBook = { //implied global
+
+ version: "2.2" // 2008-07-06
+
+// options --------------------------------------------------------------------
+
+ , automatic: true
+ , automaticSelector: "pre"
+
+ , lineNumbers: !true
+
+ , codeLanguage: function( el ) {
+ var recipeName = $( el ).attr( "class" );
+ return recipeName ? recipeName : '';
+ }
+
+ , recipeLoading: true
+ , recipeFolder: "" // used like: recipeFolder + recipeName + '.js'
+
+ // IE and FF convert &#160; to "&nbsp;", Safari and Opera do not
+ , replaceSpace: "&#160;"
+ , replaceTab: "&#160;&#160;&#160;&#160;"
+ , replaceNewLine: "&#160;<br/>"
+
+ , selectionStyle: [ "position:absolute; z-index:3000; overflow:scroll;"
+ , "width:16em;"
+ , "height:9em;"
+ , "border:1px solid gray;"
+ , "padding:15px;"
+ , "background-color:yellow;"
+ ].join( ' ' )
+
+// ------------------------------------------------------------- end of options
+
+ , defaultReplacement: '<span class="$0">$$</span>' // TODO: make this an option again
+ , recipes: {} //repository
+ , queue: {} //registry
+
+ , unique: function() {
+ return (new Date()).valueOf();
+ }
+};
+
+
+
+$.fn.chili = function( options ) {
+ var book = $.extend( {}, ChiliBook, options || {} );
+
+ function cook( ingredients, recipe, blockName ) {
+
+ function prepareBlock( recipe, blockName ) {
+ var steps = [];
+ for( var stepName in recipe[ blockName ] ) {
+ steps.push( prepareStep( recipe, blockName, stepName ) );
+ }
+ return steps;
+ } // prepareBlock
+
+ function prepareStep( recipe, blockName, stepName ) {
+ var step = recipe[ blockName ][ stepName ];
+ var exp = ( typeof step._match == "string" ) ? step._match : step._match.source;
+ return {
+ recipe: recipe
+ , blockName: blockName
+ , stepName: stepName
+ , exp: "(" + exp + ")"
+ , length: 1 // add 1 to account for the newly added parentheses
+ + (exp // count number of submatches in here
+ .replace( /\\./g, "%" ) // disable any escaped character
+ .replace( /\[.*?\]/g, "%" ) // disable any character class
+ .match( /\((?!\?)/g ) // match any open parenthesis, not followed by a ?
+ || [] // make sure it is an empty array if there are no matches
+ ).length // get the number of matches
+ , replacement: step._replace ? step._replace : book.defaultReplacement
+ };
+ } // prepareStep
+
+ function knowHow( steps ) {
+ var prevLength = 1;
+ var exps = [];
+ for (var i = 0; i < steps.length; i++) {
+ var exp = steps[ i ].exp;
+ // adjust backreferences
+ exp = exp.replace( /\\\\|\\(\d+)/g, function( m, aNum ) {
+ return !aNum ? m : "\\" + ( prevLength + 1 + parseInt( aNum, 10 ) );
+ } );
+ exps.push( exp );
+ prevLength += steps[ i ].length;
+ }
+ var prolog = '((?:\\s|\\S)*?)';
+ var epilog = '((?:\\s|\\S)+)';
+ var source = '(?:' + exps.join( "|" ) + ')';
+ source = prolog + source + '|' + epilog;
+ return new RegExp( source, recipe._case ? "g" : "gi" );
+ } // knowHow
+
+ function escapeHTML( str ) {
+ return str.replace( /&/g, "&amp;" ).replace( /</g, "&lt;" );
+ } // escapeHTML
+
+ function replaceSpaces( str ) {
+ return str.replace( / +/g, function( spaces ) {
+ return spaces.replace( / /g, replaceSpace );
+ } );
+ } // replaceSpaces
+
+ function filter( str ) {
+ str = escapeHTML( str );
+ if( replaceSpace ) {
+ str = replaceSpaces( str );
+ }
+ return str;
+ } // filter
+
+ function applyRecipe( subject, recipe ) {
+ return cook( subject, recipe );
+ } // applyRecipe
+
+ function applyBlock( subject, recipe, blockName ) {
+ return cook( subject, recipe, blockName );
+ } // applyBlock
+
+ function applyStep( subject, recipe, blockName, stepName ) {
+ var replaceSpace = book.replaceSpace;
+
+ var step = prepareStep( recipe, blockName, stepName );
+ var steps = [step];
+
+ var perfect = subject.replace( knowHow( steps ), function() {
+ return chef.apply( { steps: steps }, arguments );
+ } );
+ return perfect;
+ } // applyStep
+
+ function applyModule( subject, module, context ) {
+ if( ! module ) {
+ return filter( subject );
+ }
+
+ var sub = module.split( '/' );
+ var recipeName = '';
+ var blockName = '';
+ var stepName = '';
+ switch( sub.length ) {
+ case 1:
+ recipeName = sub[0];
+ break;
+ case 2:
+ recipeName = sub[0]; blockName = sub[1];
+ break;
+ case 3:
+ recipeName = sub[0]; blockName = sub[1]; stepName = sub[2];
+ break;
+ default:
+ return filter( subject );
+ }
+
+ function getRecipe( recipeName ) {
+ var path = getPath( recipeName );
+ var recipe = book.recipes[ path ];
+ if( ! recipe ) {
+ throw {msg:"recipe not available"};
+ }
+ return recipe;
+ }
+
+ try {
+ var recipe;
+ if ( '' == stepName ) {
+ if ( '' == blockName ) {
+ if ( '' == recipeName ) {
+ //nothing to do
+ }
+ else { // ( '' != recipeName )
+ recipe = getRecipe( recipeName );
+ return applyRecipe( subject, recipe );
+ }
+ }
+ else { // ( '' != blockName )
+ if( '' == recipeName ) {
+ recipe = context.recipe;
+ }
+ else {
+ recipe = getRecipe( recipeName );
+ }
+ if( ! (blockName in recipe) ) {
+ return filter( subject );
+ }
+ return applyBlock( subject, recipe, blockName );
+ }
+ }
+ else { // ( '' != stepName )
+ if( '' == recipeName ) {
+ recipe = context.recipe;
+ }
+ else {
+ recipe = getRecipe( recipeName );
+ }
+ if( '' == blockName ) {
+ blockName = context.blockName;
+ }
+ if( ! (blockName in recipe) ) {
+ return filter( subject );
+ }
+ if( ! (stepName in recipe[blockName]) ) {
+ return filter( subject );
+ }
+ return applyStep( subject, recipe, blockName, stepName );
+ }
+ }
+ catch( e ) {
+ if (e.msg && e.msg == "recipe not available") {
+ var cue = 'chili_' + book.unique();
+ if( book.recipeLoading ) {
+ var path = getPath( recipeName );
+ if( ! book.queue[ path ] ) {
+ /* this is a new recipe to download */
+ try {
+ book.queue[ path ] = [ {cue: cue, subject: subject, module: module, context: context} ];
+ $.getJSON( path, function( recipeLoaded ) {
+ book.recipes[ path ] = recipeLoaded;
+ var q = book.queue[ path ];
+ for( var i = 0, iTop = q.length; i < iTop; i++ ) {
+ var replacement = applyModule( q[ i ].subject, q[ i ].module, q[ i ].context );
+ if( book.replaceTab ) {
+ replacement = replacement.replace( /\t/g, book.replaceTab );
+ }
+ if( book.replaceNewLine ) {
+ replacement = replacement.replace( /\n/g, book.replaceNewLine );
+ }
+ $( '#' + q[ i ].cue ).replaceWith( replacement );
+ }
+ } );
+ }
+ catch( recipeNotAvailable ) {
+ alert( "the recipe for '" + recipeName + "' was not found in '" + path + "'" );
+ }
+ }
+ else {
+ /* not a new recipe, so just enqueue this element */
+ book.queue[ path ].push( {cue: cue, subject: subject, module: module, context: context} );
+ }
+ return '<span id="' + cue + '">' + filter( subject ) + '</span>';
+ }
+ return filter( subject );
+ }
+ else {
+ return filter( subject );
+ }
+ }
+ } // applyModule
+
+ function addPrefix( prefix, replacement ) {
+ var aux = replacement.replace( /(<span\s+class\s*=\s*(["']))((?:(?!__)\w)+\2\s*>)/ig, "$1" + prefix + "__$3" );
+ return aux;
+ } // addPrefix
+
+ function chef() {
+ if (! arguments[ 0 ]) {
+ return '';
+ }
+ var steps = this.steps;
+ var i = 0; // iterate steps
+ var j = 2; // iterate chef's arguments
+ var prolog = arguments[ 1 ];
+ var epilog = arguments[ arguments.length - 3 ];
+ if (! epilog) {
+ var step;
+ while( step = steps[ i++ ] ) {
+ var aux = arguments; // this unmasks chef's arguments inside the next function
+ if( aux[ j ] ) {
+ var replacement = '';
+ if( $.isFunction( step.replacement ) ) {
+ var matches = []; //Array.slice.call( aux, j, step.length );
+ for (var k = 0, kTop = step.length; k < kTop; k++) {
+ matches.push( aux[ j + k ] );
+ }
+ matches.push( aux[ aux.length - 2 ] );
+ matches.push( aux[ aux.length - 1 ] );
+ replacement = step.replacement
+ .apply( {
+ x: function() {
+ var subject = arguments[0];
+ var module = arguments[1];
+ var context = {
+ recipe: step.recipe
+ , blockName: step.blockName
+ };
+ return applyModule( subject, module, context );
+ }
+ }, matches );
+ }
+ else { //we expect step.replacement to be a string
+ replacement = step.replacement
+ .replace( /(\\\$)|(?:\$\$)|(?:\$(\d+))/g, function( m, escaped, K ) {
+ if( escaped ) { /* \$ */
+ return "$";
+ }
+ else if( !K ) { /* $$ */
+ return filter( aux[ j ] );
+ }
+ else if( K == "0" ) { /* $0 */
+ return step.stepName;
+ }
+ else { /* $K */
+ return filter( aux[ j + parseInt( K, 10 ) ] );
+ }
+ } );
+ }
+ replacement = addPrefix( step.recipe._name, replacement );
+ return filter( prolog ) + replacement;
+ }
+ else {
+ j+= step.length;
+ }
+ }
+ }
+ else {
+ return filter( epilog );
+ }
+ } // chef
+
+ if( ! blockName ) {
+ blockName = '_main';
+ checkSpices( recipe );
+ }
+ if( ! (blockName in recipe) ) {
+ return filter( ingredients );
+ }
+ var replaceSpace = book.replaceSpace;
+ var steps = prepareBlock( recipe, blockName );
+ var kh = knowHow( steps );
+ var perfect = ingredients.replace( kh, function() {
+ return chef.apply( { steps: steps }, arguments );
+ } );
+ return perfect;
+
+ } // cook
+
+ function loadStylesheetInline( sourceCode ) {
+ if( document.createElement ) {
+ var e = document.createElement( "style" );
+ e.type = "text/css";
+ if( e.styleSheet ) { // IE
+ e.styleSheet.cssText = sourceCode;
+ }
+ else {
+ var t = document.createTextNode( sourceCode );
+ e.appendChild( t );
+ }
+ document.getElementsByTagName( "head" )[0].appendChild( e );
+ }
+ } // loadStylesheetInline
+
+ function checkSpices( recipe ) {
+ var name = recipe._name;
+ if( ! book.queue[ name ] ) {
+
+ var content = ['/* Chili -- ' + name + ' */'];
+ for (var blockName in recipe) {
+ if( blockName.search( /^_(?!main\b)/ ) < 0 ) {
+ for (var stepName in recipe[ blockName ]) {
+ var step = recipe[ blockName ][ stepName ];
+ if( '_style' in step ) {
+ if( step[ '_style' ].constructor == String ) {
+ content.push( '.' + name + '__' + stepName + ' { ' + step[ '_style' ] + ' }' );
+ }
+ else {
+ for (var className in step[ '_style' ]) {
+ content.push( '.' + name + '__' + className + ' { ' + step[ '_style' ][ className ] + ' }' );
+ }
+ }
+ }
+ }
+ }
+ }
+ content = content.join('\n');
+
+ loadStylesheetInline( content );
+
+ book.queue[ name ] = true;
+ }
+ } // checkSpices
+
+ function askDish( el ) {
+ var recipeName = book.codeLanguage( el );
+ if( '' != recipeName ) {
+ var path = getPath( recipeName );
+ if( book.recipeLoading ) {
+ /* dynamic setups come here */
+ if( ! book.queue[ path ] ) {
+ /* this is a new recipe to download */
+ try {
+ book.queue[ path ] = [ el ];
+ $.getJSON( path, function( recipeLoaded ) {
+ book.recipes[ path ] = recipeLoaded;
+ var q = book.queue[ path ];
+ for( var i = 0, iTop = q.length; i < iTop; i++ ) {
+ makeDish( q[ i ], path );
+ }
+ } );
+ }
+ catch( recipeNotAvailable ) {
+ alert( "the recipe for '" + recipeName + "' was not found in '" + path + "'" );
+ }
+ }
+ else {
+ /* not a new recipe, so just enqueue this element */
+ book.queue[ path ].push( el );
+ }
+ /* a recipe could have been already downloaded */
+ makeDish( el, path );
+ }
+ else {
+ /* static setups come here */
+ makeDish( el, path );
+ }
+ }
+ } // askDish
+
+ function makeDish( el, recipePath ) {
+ var recipe = book.recipes[ recipePath ];
+ if( ! recipe ) {
+ return;
+ }
+ var $el = $( el );
+ var ingredients = $el.text();
+ if( ! ingredients ) {
+ return;
+ }
+
+ //fix for msie: \r (13) is used instead of \n (10)
+ //fix for opera: \r\n is used instead of \n
+ ingredients = ingredients.replace(/\r\n?/g, "\n");
+
+ //reverse fix for safari: msie, mozilla and opera render the initial \n
+ if( $el.parent().is('pre') ) {
+ if( ! $.browser.safari ) {
+ ingredients = ingredients.replace(/^\n/g, "");
+ }
+ }
+
+ var dish = cook( ingredients, recipe ); // all happens here
+
+ if( book.replaceTab ) {
+ dish = dish.replace( /\t/g, book.replaceTab );
+ }
+ if( book.replaceNewLine ) {
+ dish = dish.replace( /\n/g, book.replaceNewLine );
+ }
+
+ el.innerHTML = dish; //much faster than $el.html( dish );
+ //tried also the function replaceHtml from http://blog.stevenlevithan.com/archives/faster-than-innerhtml
+ //but it was not faster nor without sideffects (it was not possible to count spans into el)
+
+ //opera and safari select PRE text correctly
+ if( $.browser.msie || $.browser.mozilla ) {
+ enableSelectionHelper( el );
+ }
+
+ var $that = $el.parent();
+ var classes = $that.attr( 'class' );
+ var ln = /ln-(\d+)-([\w][\w\-]*)|ln-(\d+)|ln-/.exec( classes );
+ if( ln ) {
+ addLineNumbers( el );
+ var start = 0;
+ if( ln[1] ) {
+ start = parseInt( ln[1], 10 );
+ var $pieces = $( '.ln-' + ln[1] + '-' + ln[2] );
+ var pos = $pieces.index( $that[0] );
+ $pieces.slice( 0, pos ).each( function() {
+ start += $( this ).find( 'li' ).length;
+ } );
+ }
+ else if( ln[3] ) {
+ start = parseInt( ln[3], 10 );
+ }
+ else {
+ start = 1;
+ }
+ $el.find( 'ol' )[0].start = start;
+ $('body').width( $('body').width() - 1 ).width( $('body').width() + 1 );
+ }
+ else if( book.lineNumbers ) {
+ addLineNumbers( el );
+ }
+
+ } // makeDish
+
+ function enableSelectionHelper( el ) {
+ var element = null;
+ $( el )
+ .parents()
+ .filter( "pre" )
+ .bind( "mousedown", function() {
+ element = this;
+ if( $.browser.msie ) {
+ document.selection.empty();
+ }
+ else {
+ window.getSelection().removeAllRanges();
+ }
+ } )
+ .bind( "mouseup", function( event ) {
+ if( element && (element == this) ) {
+ element = null;
+ var selected = '';
+ if( $.browser.msie ) {
+ selected = document.selection.createRange().htmlText;
+ if( '' == selected ) {
+ return;
+ }
+ selected = preserveNewLines( selected );
+ var container_tag = '<textarea style="STYLE">';
+ }
+ else {
+ selected = window.getSelection().toString(); //opera doesn't select new lines
+ if( '' == selected ) {
+ return;
+ }
+ selected = selected
+ .replace( /\r/g, '' )
+ .replace( /^# ?/g, '' )
+ .replace( /\n# ?/g, '\n' )
+ ;
+ var container_tag = '<pre style="STYLE">';
+ }
+ var $container = $( container_tag.replace( /\bSTYLE\b/, ChiliBook.selectionStyle ) )
+ .appendTo( 'body' )
+ .text( selected )
+ .attr( 'id', 'chili_selection' )
+ .click( function() { $(this).remove(); } )
+ ;
+ var top = event.pageY - Math.round( $container.height() / 2 ) + "px";
+ var left = event.pageX - Math.round( $container.width() / 2 ) + "px";
+ $container.css( { top: top, left: left } );
+ if( $.browser.msie ) {
+// window.clipboardData.setData( 'Text', selected ); //I couldn't find anything similar for Mozilla
+ $container[0].focus();
+ $container[0].select();
+ }
+ else {
+ var s = window.getSelection();
+ s.removeAllRanges();
+ var r = document.createRange();
+ r.selectNodeContents( $container[0] );
+ s.addRange( r );
+ }
+ }
+ } )
+ ;
+ } // enableSelectionHelper
+
+ function getPath( recipeName ) {
+ return book.recipeFolder + recipeName + ".js";
+ } // getPath
+
+ function getSelectedText() {
+ var text = '';
+ if( $.browser.msie ) {
+ text = document.selection.createRange().htmlText;
+ }
+ else {
+ text = window.getSelection().toString();
+ }
+ return text;
+ } // getSelectedText
+
+ function preserveNewLines( html ) {
+ do {
+ var newline_flag = ChiliBook.unique();
+ }
+ while( html.indexOf( newline_flag ) > -1 );
+ var text = '';
+ if (/<br/i.test(html) || /<li/i.test(html)) {
+ if (/<br/i.test(html)) {
+ html = html.replace( /\<br[^>]*?\>/ig, newline_flag );
+ }
+ else if (/<li/i.test(html)) {
+ html = html.replace( /<ol[^>]*?>|<\/ol>|<li[^>]*?>/ig, '' ).replace( /<\/li>/ig, newline_flag );
+ }
+ var el = $( '<pre>' ).appendTo( 'body' ).hide()[0];
+ el.innerHTML = html;
+ text = $( el ).text().replace( new RegExp( newline_flag, "g" ), '\r\n' );
+ $( el ).remove();
+ }
+ return text;
+ } // preserveNewLines
+
+ function addLineNumbers( el ) {
+
+ function makeListItem1( not_last_line, not_last, last, open ) {
+ var close = open ? '</span>' : '';
+ var aux = '';
+ if( not_last_line ) {
+ aux = '<li>' + open + not_last + close + '</li>';
+ }
+ else if( last ) {
+ aux = '<li>' + open + last + close + '</li>';
+ }
+ return aux;
+ } // makeListItem1
+
+ function makeListItem2( not_last_line, not_last, last, prev_li ) {
+ var aux = '';
+ if( prev_li ) {
+ aux = prev_li;
+ }
+ else {
+ aux = makeListItem1( not_last_line, not_last, last, '' )
+ }
+ return aux;
+ } // makeListItem2
+
+ var html = $( el ).html();
+ var br = /<br>/.test(html) ? '<br>' : '<BR>';
+ var empty_line = '<li>' + book.replaceSpace + '</li>';
+ var list_items = html
+ //extract newlines at the beginning of a span
+ .replace( /(<span [^>]+>)((?:(?:&nbsp;|\xA0)<br>)+)(.*?)(<\/span>)/ig, '$2$1$3$4' ) // I don't know why <span .*?> does not work here
+ //transform newlines inside of a span
+ .replace( /(.*?)(<span .*?>)(.*?)(?:<\/span>(?:&nbsp;|\xA0)<br>|<\/span>)/ig, // but here it does
+ function( all, before, open, content ) {
+ if (/<br>/i.test(content)) {
+ var pieces = before.split( br );
+ var lastPiece = pieces.pop();
+ before = pieces.join( br );
+ var aux = (before ? before + br : '') //+ replace1( lastPiece + content, open );
+ + (lastPiece + content).replace( /((.*?)(?:&nbsp;|\xA0)<br>)|(.*)/ig,
+ function( tmp, not_last_line, not_last, last ) {
+ var aux2 = makeListItem1( not_last_line, not_last, last, open );
+ return aux2;
+ }
+ );
+ return aux;
+ }
+ else {
+ return all;
+ }
+ }
+ )
+ //transform newlines outside of a span
+ .replace( /(<li>.*?<\/li>)|((.*?)(?:&nbsp;|\xA0)<br>)|(.+)/ig,
+ function( tmp, prev_li, not_last_line, not_last, last ) {
+ var aux2 = makeListItem2( not_last_line, not_last, last, prev_li );
+ return aux2;
+ }
+ )
+ //fix empty lines for Opera
+ .replace( /<li><\/li>/ig, empty_line )
+ ;
+
+ el.innerHTML = '<ol>' + list_items + '</ol>';
+ } // addLineNumbers
+
+ function revealChars( tmp ) {
+ return $
+ .map( tmp.split(''),
+ function(n, i) {
+ return ' ' + n + ' ' + n.charCodeAt( 0 ) + ' ';
+ } )
+ .join(' ');
+ } // revealChars
+
+//-----------------------------------------------------------------------------
+// the coloring starts here
+ this
+ .each( function() {
+ var $this = $( this );
+ $this.trigger( 'chili.before_coloring' );
+ askDish( this );
+ $this.trigger( 'chili.after_coloring' );
+ } );
+
+ return this;
+//-----------------------------------------------------------------------------
+};
+
+
+
+//main
+$( function() {
+
+ if( ChiliBook.automatic ) {
+ $( ChiliBook.automaticSelector ).chili();
+ }
+
+} );
+
+} ) ( jQuery );
diff --git a/docs/assets/js/jquery/chili/js.js b/docs/assets/js/jquery/chili/js.js
new file mode 100755
index 000000000..31baf6565
--- /dev/null
+++ b/docs/assets/js/jquery/chili/js.js
@@ -0,0 +1,75 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+{
+ _name: 'js'
+ , _case: true
+ , _main: {
+ ml_comment: {
+ _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//
+ , _style: 'color: gray;'
+ }
+ , sl_comment: {
+ _match: /\/\/.*/
+ , _style: 'color: green;'
+ }
+ , string: {
+ _match: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/
+ , _style: 'color: teal;'
+ }
+ , num: {
+ _match: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/
+ , _style: 'color: red;'
+ }
+ , reg_not: { //this prevents "a / b / c" to be interpreted as a reg_exp
+ _match: /(?:\w+\s*)\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*(?:\s*\w+)/
+ , _replace: function( all ) {
+ return this.x( all, '//num' );
+ }
+ }
+ , reg_exp: {
+ _match: /\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*/
+ , _style: 'color: maroon;'
+ }
+ , brace: {
+ _match: /[\{\}]/
+ , _style: 'color: red; font-weight: bold;'
+ }
+ , statement: {
+ _match: /\b(with|while|var|try|throw|switch|return|if|for|finally|else|do|default|continue|const|catch|case|break)\b/
+ , _style: 'color: navy; font-weight: bold;'
+ }
+ , error: {
+ _match: /\b(URIError|TypeError|SyntaxError|ReferenceError|RangeError|EvalError|Error)\b/
+ , _style: 'color: Coral;'
+ }
+ , object: {
+ _match: /\b(String|RegExp|Object|Number|Math|Function|Date|Boolean|Array)\b/
+ , _style: 'color: DeepPink;'
+ }
+ , property: {
+ _match: /\b(undefined|arguments|NaN|Infinity)\b/
+ , _style: 'color: Purple; font-weight: bold;'
+ }
+ , 'function': {
+ _match: /\b(parseInt|parseFloat|isNaN|isFinite|eval|encodeURIComponent|encodeURI|decodeURIComponent|decodeURI)\b/
+ , _style: 'color: olive;'
+ }
+ , operator: {
+ _match: /\b(void|typeof|this|new|instanceof|in|function|delete)\b/
+ , _style: 'color: RoyalBlue; font-weight: bold;'
+ }
+ , liveconnect: {
+ _match: /\b(sun|netscape|java|Packages|JavaPackage|JavaObject|JavaClass|JavaArray|JSObject|JSException)\b/
+ , _style: 'text-decoration: overline;'
+ }
+ }
+}
diff --git a/docs/assets/js/jquery/chili/php-f.js b/docs/assets/js/jquery/chili/php-f.js
new file mode 100755
index 000000000..2b06011e2
--- /dev/null
+++ b/docs/assets/js/jquery/chili/php-f.js
@@ -0,0 +1,142 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+/* ----------------------------------------------------------------------------
+ * this recipe uses a little trick for highlighting php code
+ * 1: replace each php snippet with a placeholder
+ * 2: highlight html without php and php snippets apart
+ * 3: replace each placeholder with its highlighted php snippet
+ *
+ * the trick is not perfect only if the html without php is broken
+ * however, in such a case many highlighters get fooled but Chili does not
+ *
+ * ---
+ * this recipe has been adapted for working with Safari
+ * in fact, Safari cannot match more than 101236 characters with a lazy star
+ * --------------------------------------------------------------------------*/
+{
+ _name: "php"
+ , _case: true
+ , _main: {
+ all: {
+ _match: /[\w\W]*/
+ , _replace: function( all ) {
+ var placeholder = String.fromCharCode(0);
+ var blocks = [];
+ var that = this;
+ var no_php_1 = all.replace( /<\?[^?]*\?+(?:[^>][^?]*\?+)*>/g, function( block ) {
+ blocks.push( that.x( block, '/block/php_1' ) );
+ return placeholder;
+ } );
+ var no_php_2 = no_php_1.replace( /^[^?]*\?+(?:[^>][^?]*\?+)*>|<\?[\w\W]*$/g, function( block ) {
+ blocks.push( that.x( block, '/block/php_2' ) );
+ return placeholder;
+ } );
+ if( blocks.length ) {
+ var html = this.x( no_php_2, 'html' );
+ var count = 0;
+ return html.replace( new RegExp( placeholder, "g" ), function() {
+ return blocks[ count++ ];
+ } );
+ }
+ else {
+ return this.x( all, '/php' );
+ }
+ }
+ }
+ }
+ , block: {
+ php_1: { // --- <? +++ ?> ---
+ _match: /(<\?(?:php\b)?)([^?]*\?+(?:[^>][^?]*\?+)*>)/
+ , _replace: function( all, open, content ) {
+ return "<span class='start'>" + this.x( open ) + "</span>"
+ + this.x( content.replace( /\?>$/, '' ), '/php' )
+ + "<span class='end'>" + this.x( '?>' ) + "</span>";
+ }
+ , _style: {
+ start: "color: red; font-weight: bold"
+ , end: "color: red;"
+ }
+ }
+ , php_2: { // +++ ?> --- <? +++
+ _match: /([^?]*\?+(?:[^>][^?]*\?+)*>)|(<\?(?:php\b)?)([\w\W]*)/
+ , _replace: function( all, content, open2, content2 ) {
+ if( open2 ) {
+ return "<span class='start'>" + this.x( open2 ) + "</span>"
+ + this.x( content2, '/php' );
+ }
+ else {
+ return this.x( content.replace( /\?>$/, '' ), '/php' )
+ + "<span class='end'>" + this.x( '?>' ) + "</span>";
+ }
+ }
+ , _style: {
+ start: "color: red; font-weight: bold"
+ , end: "color: red;"
+ }
+ }
+ }
+ , php: {
+ mlcom: {
+ _match: /\/\*[^*]*\*+([^\/][^*]*\*+)*\//
+ , _style: "color: gray;"
+ }
+ , com: {
+ _match: /(?:\/\/.*)|(?:[^\\]\#.*)/
+ , _style: "color: green;"
+ }
+ , string1: {
+ _match: /\'[^\'\\]*(?:\\.[^\'\\]*)*\'/
+ , _style: "color: purple;"
+ }
+ , string2: {
+ _match: /\"[^\"\\]*(?:\\.[^\"\\]*)*\"/
+ , _style: "color: fuchsia;"
+ }
+ , value: {
+ _match: /\b(?:[Nn][Uu][Ll][Ll]|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])\b/
+ , _style: "color: gray; font-weight: bold;"
+ }
+ , number: {
+ _match: /\b[+-]?(\d*\.?\d+|\d+\.?\d*)([eE][+-]?\d+)?\b/
+ , _style: "color: red;"
+ }
+ , const1: {
+ _match: /\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\b/
+ , _style: "color: red;"
+ }
+ , const2: {
+ _match: /\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR))\b/
+ , _style: "color: red;"
+ }
+ , global: {
+ _match: /(?:\$GLOBALS|\$_COOKIE|\$_ENV|\$_FILES|\$_GET|\$_POST|\$_REQUEST|\$_SERVER|\$_SESSION|\$php_errormsg)\b/
+ , _style: "color: red;"
+ }
+ , keyword: {
+ _match: /\b(?:__CLASS__|__FILE__|__FUNCTION__|__LINE__|__METHOD__|abstract|and|array|as|break|case|catch|cfunction|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exception|exit|extends|extends|final|for|foreach|function|global|if|implements|include|include_once|interface|isset|list|new|old_function|or|php_user_filter|print|private|protected|public|require|require_once|return|static|switch|this|throw|try|unset|use|var|while|xor)\b/
+ , _style: "color: navy; font-weight: bold;"
+ }
+ , variable: {
+ _match: /\$(\w+)/
+ , _replace: '<span class="keyword">$</span><span class="variable">$1</span>'
+ , _style: "color: #4040c2;"
+ }
+ , heredoc: {
+ _match: /(\<\<\<\s*)(\w+)((?:(?!\2).*\n)+)(\2)\b/
+ , _replace: '<span class="keyword">$1</span><span class="string1">$2</span><span class="string2">$3</span><span class="string1">$4</span>'
+ }
+ , 'function': {
+ _match: "\\b(?:a(?:bs|cos(?:h|)|dd(?:cslashes|slashes)|ggregat(?:e(?:_(?:info|methods(?:_by_(?:list|regexp)|)|properties(?:_by_(?:list|regexp)|))|)|ion_info)|p(?:ache_(?:child_terminate|get(?:_(?:modules|version)|env)|lookup_uri|note|re(?:quest_headers|s(?:et_timeout|ponse_headers))|setenv)|d_(?:breakpoint|c(?:allstack|lunk|ontinue|roak)|dump_(?:function_table|persistent_resources|regular_resources)|echo|get_active_symbols|set_(?:pprof_trace|s(?:ession(?:_trace|)|ocket_session_trace))))|r(?:ray_(?:c(?:h(?:ange_key_case|unk)|o(?:mbine|unt_values))|diff(?:_(?:assoc|key|u(?:assoc|key))|)|f(?:il(?:l|ter)|lip)|intersect(?:_(?:assoc|key|u(?:assoc|key))|)|key(?:_exists|s)|m(?:ap|erge(?:_recursive|)|ultisort)|p(?:ad|op|ush)|r(?:and|e(?:duce|verse))|s(?:earch|hift|lice|plice|um)|u(?:diff(?:_(?:assoc|uassoc)|)|intersect(?:_(?:assoc|uassoc)|)|n(?:ique|shift))|values|walk(?:_recursive|))|sort)|s(?:cii2ebcdic|in(?:h|)|ort|pell_(?:check(?:_raw|)|new|suggest)|sert(?:_options|))|tan(?:2|h|))|b(?:ase(?:64_(?:decode|encode)|_convert|name)|c(?:add|comp|div|m(?:od|ul)|ompile(?:_write_file|r_(?:load(?:_exe|)|parse_class|read|write_(?:c(?:lass|onstant)|exe_footer|f(?:ooter|unction(?:s_from_file|))|header)))|pow(?:mod|)|s(?:cale|qrt|ub))|in(?:2hex|d(?:_textdomain_codeset|ec|textdomain))|z(?:c(?:lose|ompress)|decompress|err(?:no|or|str)|flush|open|read|write))|c(?:al(?:_(?:days_in_month|from_jd|info|to_jd)|l_user_(?:func(?:_array|)|method(?:_array|)))|cvs_(?:a(?:dd|uth)|co(?:mmand|unt)|d(?:elete|one)|init|lookup|new|re(?:port|turn|verse)|s(?:ale|tatus)|textvalue|void)|eil|h(?:dir|eckd(?:ate|nsrr)|grp|mod|o(?:p|wn)|r(?:oot|)|unk_split)|l(?:ass(?:_(?:exists|implements|parents)|kit_(?:import|method_(?:add|copy|re(?:define|move|name))))|earstatcache|ose(?:dir|log))|o(?:m(?:_(?:addref|create_guid|event_sink|get(?:_active_object|)|i(?:nvoke|senum)|load(?:_typelib|)|message_pump|pr(?:int_typeinfo|op(?:get|put|set))|release|set)|pact|)|n(?:nection_(?:aborted|status|timeout)|stant|vert_(?:cyr_string|uu(?:decode|encode)))|py|s(?:h|)|unt(?:_chars|))|pdf_(?:a(?:dd_(?:annotation|outline)|rc)|begin_text|c(?:ircle|l(?:ip|ose(?:path(?:_(?:fill_stroke|stroke)|)|))|ontinue_text|urveto)|end_text|fi(?:ll(?:_stroke|)|nalize(?:_page|))|global_set_document_limits|import_jpeg|lineto|moveto|newpath|o(?:pen|utput_buffer)|p(?:age_init|lace_inline_image)|r(?:e(?:ct|store)|lineto|moveto|otate(?:_text|))|s(?:ave(?:_to_file|)|cale|et(?:_(?:action_url|c(?:har_spacing|reator|urrent_page)|font(?:_(?:directories|map_file)|)|horiz_scaling|keywords|leading|page_animation|subject|t(?:ext_(?:matrix|pos|r(?:endering|ise))|itle)|viewer_preferences|word_spacing)|dash|flat|gray(?:_(?:fill|stroke)|)|line(?:cap|join|width)|miterlimit|rgbcolor(?:_(?:fill|stroke)|))|how(?:_xy|)|tr(?:ingwidth|oke))|t(?:ext|ranslate))|r(?:ack_(?:c(?:heck|losedict)|getlastmessage|opendict)|c32|eate_function|ypt)|type_(?:al(?:num|pha)|cntrl|digit|graph|lower|p(?:rint|unct)|space|upper|xdigit)|ur(?:l_(?:c(?:lose|opy_handle)|e(?:rr(?:no|or)|xec)|getinfo|init|multi_(?:add_handle|close|exec|getcontent|in(?:fo_read|it)|remove_handle|select)|setopt|version)|rent)|y(?:bercash_(?:base64_(?:decode|encode)|decr|encr)|rus_(?:authenticate|bind|c(?:lose|onnect)|query|unbind)))|d(?:ate(?:_sun(?:rise|set)|)|b(?:a(?:_(?:close|delete|exists|f(?:etch|irstkey)|handlers|insert|key_split|list|nextkey|op(?:en|timize)|popen|replace|sync)|se_(?:add_record|c(?:lose|reate)|delete_record|get_(?:header_info|record(?:_with_names|))|num(?:fields|records)|open|pack|replace_record))|list|m(?:close|delete|exists|f(?:etch|irstkey)|insert|nextkey|open|replace)|plus_(?:a(?:dd|ql)|c(?:hdir|lose|urr)|err(?:code|no)|f(?:i(?:nd|rst)|lush|ree(?:alllocks|lock|rlocks))|get(?:lock|unique)|info|l(?:ast|ockrel)|next|open|prev|r(?:c(?:hperm|r(?:eate|t(?:exact|like)))|es(?:olve|torepos)|keys|open|query|rename|secindex|unlink|zap)|s(?:avepos|etindex(?:bynumber|)|ql)|t(?:cl|remove)|u(?:n(?:do(?:prepare|)|lockrel|select)|pdate)|x(?:lockrel|unlockrel))|x_(?:c(?:lose|o(?:mpare|nnect))|e(?:rror|scape_string)|fetch_row|query|sort))|c(?:gettext|ngettext)|e(?:aggregate|bug(?:_(?:backtrace|print_backtrace|zval_dump)|ger_o(?:ff|n))|c(?:bin|hex|oct)|fine(?:_syslog_variables|d|)|g2rad|lete)|gettext|i(?:o_(?:close|fcntl|open|read|s(?:eek|tat)|t(?:csetattr|runcate)|write)|r(?:name|)|sk(?:_(?:free_space|total_space)|freespace))|l|n(?:gettext|s_(?:check_record|get_(?:mx|record)))|o(?:m(?:_import_simplexml|xml_(?:new_doc|open_(?:file|mem)|version|x(?:mltree|slt_stylesheet(?:_(?:doc|file)|))))|tnet(?:_load|)|ubleval))|e(?:a(?:ch|ster_da(?:te|ys))|bcdic2ascii|nd|r(?:eg(?:_replace|i(?:_replace|)|)|ror_(?:log|reporting))|scapeshell(?:arg|cmd)|x(?:ec|if_(?:imagetype|read_data|t(?:agname|humbnail))|p(?:lode|m1|)|t(?:ension_loaded|ract))|zmlm_hash)|f(?:am_(?:c(?:ancel_monitor|lose)|monitor_(?:collection|directory|file)|next_event|open|pending|resume_monitor|suspend_monitor)|bsql_(?:a(?:ffected_rows|utocommit)|blob_size|c(?:hange_user|lo(?:b_size|se)|o(?:mmit|nnect)|reate_(?:blob|clob|db))|d(?:ata(?:_seek|base(?:_password|))|b_(?:query|status)|rop_db)|err(?:no|or)|f(?:etch_(?:a(?:rray|ssoc)|field|lengths|object|row)|ield_(?:flags|len|name|seek|t(?:able|ype))|ree_result)|get_autostart_info|hostname|insert_id|list_(?:dbs|fields|tables)|n(?:ext_result|um_(?:fields|rows))|p(?:assword|connect)|query|r(?:e(?:ad_(?:blob|clob)|sult)|ollback)|s(?:e(?:lect_db|t_(?:lob_mode|password|transaction))|t(?:art_db|op_db))|tablename|username|warnings)|close|df_(?:add_(?:doc_javascript|template)|c(?:lose|reate)|e(?:num_values|rr(?:no|or))|get_(?:a(?:p|ttachment)|encoding|f(?:ile|lags)|opt|status|v(?:alue|ersion))|header|next_field_name|open(?:_string|)|remove_item|s(?:ave(?:_string|)|et_(?:ap|encoding|f(?:ile|lags)|javascript_action|o(?:n_import_javascript|pt)|s(?:tatus|ubmit_form_action)|target_frame|v(?:alue|ersion))))|eof|flush|get(?:c(?:sv|)|s(?:s|))|ile(?:_(?:exists|get_contents|put_contents)|atime|ctime|group|inode|mtime|owner|p(?:erms|ro(?:_(?:field(?:count|name|type|width)|r(?:etrieve|owcount))|))|size|type|)|l(?:o(?:atval|ck|or)|ush)|mod|nmatch|open|p(?:assthru|rintf|ut(?:csv|s))|r(?:e(?:ad|nchtojd)|ibidi_log2vis)|s(?:canf|eek|ockopen|tat)|t(?:ell|ok|p_(?:alloc|c(?:dup|h(?:dir|mod)|lose|onnect)|delete|exec|f(?:get|put)|get(?:_option|)|login|m(?:dtm|kdir)|n(?:b_(?:continue|f(?:get|put)|get|put)|list)|p(?:asv|ut|wd)|quit|r(?:aw(?:list|)|ename|mdir)|s(?:et_option|i(?:te|ze)|sl_connect|ystype))|runcate)|unc(?:_(?:get_arg(?:s|)|num_args)|tion_exists)|write)|g(?:d_info|et(?:_(?:browser|c(?:fg_var|lass(?:_(?:methods|vars)|)|urrent_user)|de(?:clared_(?:classes|interfaces)|fined_(?:constants|functions|vars))|extension_funcs|h(?:eaders|tml_translation_table)|include(?:_path|d_files)|loaded_extensions|m(?:agic_quotes_(?:gpc|runtime)|eta_tags)|object_vars|parent_class|re(?:quired_files|source_type))|allheaders|cwd|date|env|hostby(?:addr|name(?:l|))|imagesize|lastmod|m(?:xrr|y(?:gid|inode|pid|uid))|opt|protobyn(?:ame|umber)|r(?:andmax|usage)|servby(?:name|port)|t(?:ext|imeofday|ype))|lob|m(?:date|mktime|p_(?:a(?:bs|dd|nd)|c(?:lrbit|mp|om)|div(?:_(?:q(?:r|)|r)|exact|)|fact|gcd(?:ext|)|hamdist|in(?:it|tval|vert)|jacobi|legendre|m(?:od|ul)|neg|or|p(?:erfect_square|o(?:pcount|w(?:m|))|rob_prime)|random|s(?:can(?:0|1)|etbit|ign|qrt(?:rem|)|trval|ub)|xor)|strftime)|regoriantojd|z(?:c(?:lose|ompress)|deflate|e(?:ncode|of)|file|get(?:c|s(?:s|))|inflate|open|p(?:assthru|uts)|re(?:ad|wind)|seek|tell|uncompress|write))|h(?:e(?:ader(?:s_(?:list|sent)|)|brev(?:c|)|xdec)|ighlight_(?:file|string)|t(?:ml(?:_entity_decode|entities|specialchars)|tp_build_query)|w(?:_(?:a(?:pi_(?:attribute|content|object)|rray2objrec)|c(?:h(?:angeobject|ildren(?:obj|))|lose|onnect(?:ion_info|)|p)|d(?:eleteobject|oc(?:byanchor(?:obj|)|ument_(?:attributes|bodytag|content|s(?:etcontent|ize)))|ummy)|e(?:dittext|rror(?:msg|))|free_document|get(?:an(?:chors(?:obj|)|dlock)|child(?:coll(?:obj|)|doccoll(?:obj|))|object(?:byquery(?:coll(?:obj|)|obj|)|)|parents(?:obj|)|re(?:llink|mote(?:children|))|srcbydestobj|text|username)|i(?:dentify|n(?:collections|fo|s(?:coll|doc|ert(?:anchors|document|object))))|m(?:apid|odifyobject|v)|new_document|o(?:bjrec2array|utput_document)|p(?:connect|ipedocument)|root|s(?:etlinkroot|tat)|unlock|who)|api_hgcsp)|ypot)|i(?:base_(?:a(?:dd_user|ffected_rows)|b(?:ackup|lob_(?:add|c(?:ancel|lose|reate)|echo|get|i(?:mport|nfo)|open))|c(?:lose|o(?:mmit(?:_ret|)|nnect))|d(?:b_info|elete_user|rop_db)|e(?:rr(?:code|msg)|xecute)|f(?:etch_(?:assoc|object|row)|ield_info|ree_(?:event_handler|query|result))|gen_id|m(?:aintain_db|odify_user)|n(?:ame_result|um_(?:fields|params))|p(?:aram_info|connect|repare)|query|r(?:estore|ollback(?:_ret|))|se(?:rv(?:er_info|ice_(?:attach|detach))|t_event_handler)|t(?:imefmt|rans)|wait_event)|conv(?:_(?:get_encoding|mime_(?:decode(?:_headers|)|encode)|s(?:et_encoding|tr(?:len|pos|rpos)|ubstr))|)|d(?:3_(?:get_(?:frame_(?:long_name|short_name)|genre_(?:id|list|name)|tag|version)|remove_tag|set_tag)|ate)|fx(?:_(?:affected_rows|b(?:lobinfile_mode|yteasvarchar)|c(?:lose|o(?:nnect|py_blob)|reate_(?:blob|char))|do|error(?:msg|)|f(?:etch_row|ield(?:properties|types)|ree_(?:blob|char|result))|get(?:_(?:blob|char)|sqlca)|htmltbl_result|nu(?:llformat|m_(?:fields|rows))|p(?:connect|repare)|query|textasvarchar|update_(?:blob|char))|us_(?:c(?:lose_slob|reate_slob)|free_slob|open_slob|read_slob|seek_slob|tell_slob|write_slob))|gnore_user_abort|m(?:a(?:ge(?:2wbmp|_type_to_(?:extension|mime_type)|a(?:lphablending|ntialias|rc)|c(?:har(?:up|)|o(?:lor(?:a(?:llocate(?:alpha|)|t)|closest(?:alpha|hwb|)|deallocate|exact(?:alpha|)|match|resolve(?:alpha|)|s(?:et|forindex|total)|transparent)|py(?:merge(?:gray|)|res(?:ampled|ized)|))|reate(?:from(?:g(?:d(?:2(?:part|)|)|if)|jpeg|png|string|wbmp|x(?:bm|pm))|truecolor|))|d(?:ashedline|estroy)|ellipse|f(?:il(?:l(?:ed(?:arc|ellipse|polygon|rectangle)|toborder|)|ter)|ont(?:height|width)|t(?:bbox|text))|g(?:ammacorrect|d(?:2|)|if)|i(?:nterlace|struecolor)|jpeg|l(?:ayereffect|ine|oadfont)|p(?:alettecopy|ng|olygon|s(?:bbox|copyfont|e(?:ncodefont|xtendfont)|freefont|loadfont|slantfont|text))|r(?:ectangle|otate)|s(?:avealpha|et(?:brush|pixel|style|t(?:hickness|ile))|tring(?:up|)|x|y)|t(?:ruecolortopalette|tf(?:bbox|text)|ypes)|wbmp|xbm)|p_(?:8bit|a(?:lerts|ppend)|b(?:ase64|inary|ody(?:struct|))|c(?:heck|l(?:earflag_full|ose)|reatemailbox)|delete(?:mailbox|)|e(?:rrors|xpunge)|fetch(?:_overview|body|header|structure)|get(?:_quota(?:root|)|acl|mailboxes|subscribed)|header(?:info|s|)|l(?:ast_error|ist(?:mailbox|s(?:can|ubscribed)|)|sub)|m(?:ail(?:_(?:co(?:mpose|py)|move)|boxmsginfo|)|ime_header_decode|sgno)|num_(?:msg|recent)|open|ping|qprint|r(?:e(?:namemailbox|open)|fc822_(?:parse_(?:adrlist|headers)|write_address))|s(?:canmailbox|e(?:arch|t(?:_quota|acl|flag_full))|ort|tatus|ubscribe)|t(?:hread|imeout)|u(?:id|n(?:delete|subscribe)|tf(?:7_(?:decode|encode)|8))))|p(?:lode|ort_request_variables))|n(?:_array|et_(?:ntop|pton)|gres_(?:autocommit|c(?:lose|o(?:mmit|nnect))|f(?:etch_(?:array|object|row)|ield_(?:length|n(?:ame|ullable)|precision|scale|type))|num_(?:fields|rows)|pconnect|query|rollback)|i_(?:alter|get(?:_all|)|restore|set)|t(?:erface_exists|val))|p(?:2long|tc(?:embed|parse))|rcg_(?:channel_mode|disconnect|eval_ecmascript_params|fetch_error_msg|get_username|html_encode|i(?:gnore_(?:add|del)|nvite|s_conn_alive)|join|kick|l(?:ist|ookup_format_messages|users)|msg|n(?:ames|ick(?:name_(?:escape|unescape)|)|otice)|oper|p(?:art|connect)|register_format_messages|set_(?:current|file|on_die)|topic|who(?:is|))|s_(?:a(?:rray|)|bool|callable|d(?:ir|ouble)|executable|f(?:i(?:le|nite)|loat)|in(?:finite|t(?:eger|))|l(?:ink|ong)|n(?:an|u(?:ll|meric))|object|re(?:a(?:dable|l)|source)|s(?:calar|oap_fault|tring|ubclass_of)|uploaded_file|writ(?:able|eable))|terator(?:-to-array|_count))|j(?:ava_last_exception_(?:clear|get)|d(?:dayofweek|monthname|to(?:french|gregorian|j(?:ewish|ulian)|unix))|ewishtojd|oin|peg2wbmp|uliantojd)|k(?:ey|rsort|sort)|l(?:cg_value|dap_(?:8859_to_t61|add|bind|c(?:lose|o(?:mpare|nnect|unt_entries))|d(?:elete|n2ufn)|e(?:rr(?:2str|no|or)|xplode_dn)|f(?:irst_(?:attribute|entry|reference)|ree_result)|get_(?:attributes|dn|entries|option|values(?:_len|))|list|mod(?:_(?:add|del|replace)|ify)|next_(?:attribute|entry|reference)|parse_re(?:ference|sult)|re(?:ad|name)|s(?:asl_bind|e(?:arch|t_(?:option|rebind_proc))|ort|tart_tls)|t61_to_8859|unbind)|evenshtein|ink(?:info|)|o(?:cal(?:econv|time)|g(?:1(?:0|p)|)|ng2ip)|stat|trim|zf_(?:compress|decompress|optimized_for))|m(?:a(?:i(?:l(?:parse_(?:determine_best_xfer_encoding|msg_(?:create|extract_part(?:_file|)|free|get_(?:part(?:_data|)|structure)|parse(?:_file|))|rfc822_parse_addresses|stream_encode|uudecode_all)|)|n)|x)|b_(?:convert_(?:case|encoding|kana|variables)|de(?:code_(?:mimeheader|numericentity)|tect_(?:encoding|order))|e(?:ncode_(?:mimeheader|numericentity)|reg(?:_(?:match|replace|search(?:_(?:get(?:pos|regs)|init|pos|regs|setpos)|))|i(?:_replace|)|))|get_info|http_(?:input|output)|internal_encoding|l(?:anguage|ist_encodings)|output_handler|p(?:arse_str|referred_mime_name)|regex_(?:encoding|set_options)|s(?:end_mail|plit|tr(?:cut|imwidth|len|pos|rpos|to(?:lower|upper)|width)|ubst(?:itute_character|r(?:_count|))))|c(?:al_(?:append_event|c(?:lose|reate_calendar)|d(?:a(?:te_(?:compare|valid)|y(?:_of_(?:week|year)|s_in_month))|elete_(?:calendar|event))|e(?:vent_(?:add_attribute|init|set_(?:alarm|c(?:ategory|lass)|description|end|recur_(?:daily|monthly_(?:mday|wday)|none|weekly|yearly)|start|title))|xpunge)|fetch_(?:current_stream_event|event)|is_leap_year|list_(?:alarms|events)|next_recurrence|open|popen|re(?:name_calendar|open)|s(?:nooze|tore_event)|time_valid|week_of_year)|rypt_(?:c(?:bc|fb|reate_iv)|decrypt|e(?:cb|nc(?:_(?:get_(?:algorithms_name|block_size|iv_size|key_size|modes_name|supported_key_sizes)|is_block_(?:algorithm(?:_mode|)|mode)|self_test)|rypt))|ge(?:neric(?:_(?:deinit|end|init)|)|t_(?:block_size|cipher_name|iv_size|key_size))|list_(?:algorithms|modes)|module_(?:close|get_(?:algo_(?:block_size|key_size)|supported_key_sizes)|is_block_(?:algorithm(?:_mode|)|mode)|open|self_test)|ofb)|ve_(?:adduser(?:arg|)|bt|c(?:h(?:eckstatus|kpwd|ngpwd)|o(?:mpleteauthorizations|nnect(?:ionerror|)))|d(?:e(?:l(?:ete(?:response|trans|usersetup)|user)|stroy(?:conn|engine))|isableuser)|e(?:dituser|nableuser)|force|g(?:et(?:c(?:ell(?:bynum|)|ommadelimited)|header|user(?:arg|param))|ft|l|ut)|i(?:nit(?:conn|engine|usersetup)|scommadelimited)|list(?:stats|users)|m(?:axconntimeout|onitor)|num(?:columns|rows)|override|p(?:arsecommadelimited|ing|reauth(?:completion|))|qc|re(?:sponseparam|turn(?:code|status|))|s(?:ale|et(?:blocking|dropfile|ip|ssl(?:_files|)|t(?:imeout|le)))|t(?:ext_(?:avs|c(?:ode|v))|rans(?:action(?:a(?:uth|vs)|batch|cv|i(?:d|tem)|ssent|text)|inqueue|new|param|send))|u(?:b|wait)|v(?:erify(?:connection|sslcert)|oid)))|d(?:5(?:_file|)|ecrypt_generic)|e(?:m(?:cache_debug|ory_get_usage)|t(?:aphone|hod_exists))|hash(?:_(?:count|get_(?:block_size|hash_name)|keygen_s2k)|)|i(?:crotime|me_content_type|n(?:g_(?:set(?:cubicthreshold|scale)|useswfversion)|))|k(?:dir|time)|o(?:ney_format|ve_uploaded_file)|s(?:ession_(?:c(?:o(?:nnect|unt)|reate)|d(?:estroy|isconnect)|find|get(?:_(?:array|data)|)|inc|l(?:ist(?:var|)|ock)|plugin|randstr|set(?:_(?:array|data)|)|timeout|un(?:iq|lock))|g_(?:get_queue|re(?:ceive|move_queue)|s(?:e(?:nd|t_queue)|tat_queue))|ql(?:_(?:affected_rows|c(?:lose|onnect|reate(?:_db|db))|d(?:ata_seek|b(?:_query|name)|rop_db)|error|f(?:etch_(?:array|field|object|row)|ield(?:_(?:flags|len|name|seek|t(?:able|ype))|flags|len|name|t(?:able|ype))|ree_result)|list_(?:dbs|fields|tables)|num(?:_(?:fields|rows)|fields|rows)|pconnect|query|re(?:gcase|sult)|select_db|tablename)|)|sql_(?:bind|c(?:lose|onnect)|data_seek|execute|f(?:etch_(?:a(?:rray|ssoc)|batch|field|object|row)|ield_(?:length|name|seek|type)|ree_(?:result|statement))|g(?:et_last_message|uid_string)|init|min_(?:error_severity|message_severity)|n(?:ext_result|um_(?:fields|rows))|pconnect|query|r(?:esult|ows_affected)|select_db))|t_(?:getrandmax|rand|srand)|uscat_(?:close|g(?:et|ive)|setup(?:_net|))|ysql(?:_(?:affected_rows|c(?:hange_user|l(?:ient_encoding|ose)|onnect|reate_db)|d(?:ata_seek|b_(?:name|query)|rop_db)|e(?:rr(?:no|or)|scape_string)|f(?:etch_(?:a(?:rray|ssoc)|field|lengths|object|row)|ield_(?:flags|len|name|seek|t(?:able|ype))|ree_result)|get_(?:client_info|host_info|proto_info|server_info)|in(?:fo|sert_id)|list_(?:dbs|fields|processes|tables)|num_(?:fields|rows)|p(?:connect|ing)|query|re(?:al_escape_string|sult)|s(?:elect_db|tat)|t(?:ablename|hread_id)|unbuffered_query)|i(?:_(?:a(?:ffected_rows|utocommit)|bind_(?:param|result)|c(?:ha(?:nge_user|racter_set_name)|l(?:ient_encoding|ose)|o(?:mmit|nnect(?:_err(?:no|or)|)))|d(?:ata_seek|ebug|isable_r(?:eads_from_master|pl_parse)|ump_debug_info)|e(?:mbedded_connect|nable_r(?:eads_from_master|pl_parse)|rr(?:no|or)|scape_string|xecute)|f(?:etch(?:_(?:a(?:rray|ssoc)|field(?:_direct|s|)|lengths|object|row)|)|ield_(?:count|seek|tell)|ree_result)|get_(?:client_(?:info|version)|host_info|metadata|proto_info|server_(?:info|version))|in(?:fo|it|sert_id)|kill|m(?:aster_query|ore_results|ulti_query)|n(?:ext_result|um_(?:fields|rows))|options|p(?:aram_count|ing|repare)|query|r(?:e(?:al_(?:connect|escape_string|query)|port)|ollback|pl_(?:p(?:arse_enabled|robe)|query_type))|s(?:e(?:lect_db|nd_(?:long_data|query)|rver_(?:end|init)|t_opt)|qlstate|sl_set|t(?:at|mt_(?:affected_rows|bind_(?:param|result)|close|data_seek|e(?:rr(?:no|or)|xecute)|f(?:etch|ree_result)|init|num_rows|p(?:aram_count|repare)|res(?:et|ult_metadata)|s(?:end_long_data|qlstate|tore_result))|ore_result))|thread_(?:id|safe)|use_result|warning_count)|)))|n(?:at(?:casesort|sort)|curses_(?:a(?:dd(?:ch(?:nstr|str|)|nstr|str)|ssume_default_colors|ttr(?:o(?:ff|n)|set))|b(?:audrate|eep|kgd(?:set|)|o(?:rder|ttom_panel))|c(?:an_change_color|break|l(?:ear|rto(?:bot|eol))|olor_(?:content|set)|urs_set)|d(?:e(?:f(?:_(?:prog_mode|shell_mode)|ine_key)|l(?:_panel|ay_output|ch|eteln|win))|oupdate)|e(?:cho(?:char|)|nd|rase(?:char|))|f(?:ilter|l(?:ash|ushinp))|get(?:ch|m(?:axyx|ouse)|yx)|h(?:a(?:lfdelay|s_(?:colors|i(?:c|l)|key))|ide_panel|line)|i(?:n(?:ch|it(?:_(?:color|pair)|)|s(?:ch|delln|ertln|str|tr))|sendwin)|k(?:ey(?:ok|pad)|illchar)|longname|m(?:eta|o(?:use(?:_trafo|interval|mask)|ve(?:_panel|))|v(?:add(?:ch(?:nstr|str|)|nstr|str)|cur|delch|getch|hline|inch|vline|waddstr))|n(?:apms|ew(?:_panel|pad|win)|l|o(?:cbreak|echo|nl|qiflush|raw))|p(?:a(?:ir_content|nel_(?:above|below|window))|noutrefresh|refresh|utp)|qiflush|r(?:aw|e(?:fresh|place_panel|set(?:_(?:prog_mode|shell_mode)|ty)))|s(?:avetty|cr(?:_(?:dump|init|restore|set)|l)|how_panel|lk_(?:attr(?:o(?:ff|n)|set|)|c(?:lear|olor)|init|noutrefresh|re(?:fresh|store)|set|touch)|ta(?:nd(?:end|out)|rt_color))|t(?:erm(?:attrs|name)|imeout|op_panel|ypeahead)|u(?:nget(?:ch|mouse)|pdate_panels|se_(?:default_colors|e(?:nv|xtended_names)))|v(?:idattr|line)|w(?:a(?:dd(?:ch|str)|ttr(?:o(?:ff|n)|set))|border|c(?:lear|olor_set)|erase|getch|hline|mo(?:use_trafo|ve)|noutrefresh|refresh|stand(?:end|out)|vline))|ext|gettext|l(?:2br|_langinfo)|otes_(?:body|c(?:opy_db|reate_(?:db|note))|drop_db|find_note|header_info|list_msgs|mark_(?:read|unread)|nav_create|search|unread|version)|sapi_(?:re(?:quest_headers|sponse_headers)|virtual)|umber_format)|o(?:b_(?:clean|end_(?:clean|flush)|flush|g(?:et_(?:c(?:lean|ontents)|flush|le(?:ngth|vel)|status)|zhandler)|i(?:conv_handler|mplicit_flush)|list_handlers|start|tidyhandler)|c(?:i(?:_(?:bind_by_name|c(?:ancel|lose|o(?:mmit|nnect))|define_by_name|e(?:rror|xecute)|f(?:etch(?:_(?:a(?:ll|rray|ssoc)|object|row)|)|ield_(?:is_null|name|precision|s(?:cale|ize)|type(?:_raw|))|ree_statement)|internal_debug|lob_(?:copy|is_equal)|n(?:ew_(?:c(?:o(?:llection|nnect)|ursor)|descriptor)|um_(?:fields|rows))|p(?:a(?:rse|ssword_change)|connect)|r(?:esult|ollback)|s(?:e(?:rver_version|t_prefetch)|tatement_type))|bindbyname|c(?:ancel|loselob|o(?:l(?:l(?:a(?:ppend|ssign(?:elem|))|getelem|max|size|trim)|umn(?:isnull|name|precision|s(?:cale|ize)|type(?:raw|)))|mmit))|definebyname|e(?:rror|xecute)|f(?:etch(?:into|statement|)|ree(?:c(?:ollection|ursor)|desc|statement))|internaldebug|lo(?:adlob|go(?:ff|n))|n(?:ew(?:c(?:ollection|ursor)|descriptor)|logon|umcols)|p(?:arse|logon)|r(?:esult|o(?:llback|wcount))|s(?:avelob(?:file|)|e(?:rverversion|tprefetch)|tatementtype)|write(?:lobtofile|temporarylob))|tdec)|dbc_(?:autocommit|binmode|c(?:lose(?:_all|)|o(?:lumn(?:privileges|s)|mmit|nnect)|ursor)|d(?:ata_source|o)|e(?:rror(?:msg|)|xec(?:ute|))|f(?:etch_(?:array|into|object|row)|ield_(?:len|n(?:ame|um)|precision|scale|type)|oreignkeys|ree_result)|gettypeinfo|longreadlen|n(?:ext_result|um_(?:fields|rows))|p(?:connect|r(?:epare|imarykeys|ocedure(?:columns|s)))|r(?:esult(?:_all|)|ollback)|s(?:etoption|pecialcolumns|tatistics)|table(?:privileges|s))|pen(?:al_(?:buffer_(?:create|d(?:ata|estroy)|get|loadwav)|context_(?:c(?:reate|urrent)|destroy|process|suspend)|device_(?:close|open)|listener_(?:get|set)|s(?:ource_(?:create|destroy|get|p(?:ause|lay)|rewind|s(?:et|top))|tream))|dir|log|ssl_(?:csr_(?:export(?:_to_file|)|new|sign)|error_string|free_key|get_p(?:rivatekey|ublickey)|open|p(?:k(?:cs7_(?:decrypt|encrypt|sign|verify)|ey_(?:export(?:_to_file|)|get_p(?:rivate|ublic)|new))|rivate_(?:decrypt|encrypt)|ublic_(?:decrypt|encrypt))|s(?:eal|ign)|verify|x509_(?:check(?:_private_key|purpose)|export(?:_to_file|)|free|parse|read)))|r(?:a_(?:bind|c(?:lose|o(?:lumn(?:name|size|type)|mmit(?:o(?:ff|n)|)))|do|e(?:rror(?:code|)|xec)|fetch(?:_into|)|getcolumn|logo(?:ff|n)|num(?:cols|rows)|open|p(?:arse|logon)|rollback)|d)|utput_(?:add_rewrite_var|reset_rewrite_vars)|v(?:er(?:load|ride_function)|rimos_(?:c(?:lose|o(?:mmit|nnect)|ursor)|exec(?:ute|)|f(?:etch_(?:into|row)|ield_(?:len|n(?:ame|um)|type)|ree_result)|longreadlen|num_(?:fields|rows)|prepare|r(?:esult(?:_all|)|ollback))))|p(?:a(?:ck|rse(?:_(?:ini_file|str|url)|kit_(?:compile_(?:file|string)|func_arginfo))|ssthru|thinfo)|c(?:lose|ntl_(?:alarm|exec|fork|getpriority|s(?:etpriority|ignal)|w(?:ait(?:pid|)|exitstatus|if(?:exited|s(?:ignaled|topped))|stopsig|termsig)))|df_(?:a(?:dd_(?:annotation|bookmark|l(?:aunchlink|ocallink)|note|outline|pdflink|thumbnail|weblink)|rc(?:n|)|ttach_file)|begin_(?:pa(?:ge|ttern)|template)|c(?:ircle|l(?:ip|ose(?:_(?:image|pdi(?:_page|))|path(?:_(?:fill_stroke|stroke)|)|))|on(?:cat|tinue_text)|urveto)|delete|end(?:_(?:pa(?:ge|ttern)|template)|path)|fi(?:ll(?:_stroke|)|ndfont)|get_(?:buffer|font(?:name|size|)|image_(?:height|width)|m(?:ajorversion|inorversion)|p(?:arameter|di_(?:parameter|value))|value)|initgraphics|lineto|m(?:akespotcolor|oveto)|new|open(?:_(?:ccitt|file|gif|image(?:_file|)|jpeg|memory_image|p(?:di(?:_page|)|ng)|tiff)|)|place_(?:image|pdi_page)|r(?:e(?:ct|store)|otate)|s(?:ave|cale|et(?:_(?:border_(?:color|dash|style)|char_spacing|duration|font|horiz_scaling|info(?:_(?:author|creator|keywords|subject|title)|)|leading|parameter|text_(?:matrix|pos|r(?:endering|ise))|value|word_spacing)|color|dash|f(?:lat|ont)|gray(?:_(?:fill|stroke)|)|line(?:cap|join|width)|m(?:atrix|iterlimit)|polydash|rgbcolor(?:_(?:fill|stroke)|))|how(?:_(?:boxed|xy)|)|kew|tr(?:ingwidth|oke))|translate)|f(?:pro_(?:cleanup|init|process(?:_raw|)|version)|sockopen)|g_(?:affected_rows|c(?:ancel_query|l(?:ient_encoding|ose)|o(?:n(?:nect(?:ion_(?:busy|reset|status)|)|vert)|py_(?:from|to)))|d(?:bname|elete)|e(?:nd_copy|scape_(?:bytea|string))|f(?:etch_(?:a(?:ll|rray|ssoc)|object|r(?:esult|ow))|ield_(?:is_null|n(?:ame|um)|prtlen|size|type)|ree_result)|get_(?:notify|pid|result)|host|insert|l(?:ast_(?:error|notice|oid)|o_(?:c(?:lose|reate)|export|import|open|read(?:_all|)|seek|tell|unlink|write))|meta_data|num_(?:fields|rows)|options|p(?:arameter_status|connect|ing|ort|ut_line)|query|result_(?:error|s(?:eek|tatus))|se(?:lect|nd_query|t_client_encoding)|t(?:race|ty)|u(?:n(?:escape_bytea|trace)|pdate)|version)|hp(?:_(?:check_syntax|ini_scanned_files|logo_guid|register_url_stream_wrapper|s(?:api_name|tr(?:eam_(?:c(?:a(?:n_cast|st)|lose(?:dir|)|opy_to_(?:mem|stream))|eof|f(?:ilter_(?:register_factory|unregister_factory)|lush|open_(?:from_file|t(?:emporary_file|mpfile)))|get(?:c|s)|is(?:_persistent|)|make_seekable|open(?:_wrapper(?:_(?:as_file|ex)|)|dir)|passthru|re(?:ad(?:dir|)|winddir)|s(?:eek|ock_open_(?:from_socket|host|unix)|tat(?:_path|))|tell|write)|ip_whitespace))|un(?:ame|register_url_stream_wrapper))|credits|info|version)|i|ng2wbmp|o(?:pen|s(?:ix_(?:ctermid|get(?:_last_error|cwd|e(?:gid|uid)|g(?:id|r(?:gid|nam|oups))|login|p(?:g(?:id|rp)|id|pid|w(?:nam|uid))|rlimit|sid|uid)|isatty|kill|mkfifo|s(?:et(?:e(?:gid|uid)|gid|pgid|sid|uid)|trerror)|t(?:imes|tyname)|uname)|)|w)|r(?:e(?:g_(?:grep|match(?:_all|)|quote|replace(?:_callback|)|split)|v)|int(?:_r|er_(?:abort|c(?:lose|reate_(?:brush|dc|font|pen))|d(?:elete_(?:brush|dc|font|pen)|raw_(?:bmp|chord|elipse|line|pie|r(?:ectangle|oundrect)|text))|end_(?:doc|page)|get_option|l(?:ist|ogical_fontheight)|open|s(?:e(?:lect_(?:brush|font|pen)|t_option)|tart_(?:doc|page))|write)|f)|oc_(?:close|get_status|nice|open|terminate))|spell_(?:add_to_(?:personal|session)|c(?:heck|lear_session|onfig_(?:create|d(?:ata_dir|ict_dir)|ignore|mode|personal|r(?:epl|untogether)|save_repl))|new(?:_(?:config|personal)|)|s(?:ave_wordlist|tore_replacement|uggest))|utenv)|q(?:dom_(?:error|tree)|uote(?:d_printable_decode|meta))|r(?:a(?:d2deg|n(?:d|ge)|r_(?:close|entry_get|list|open)|wurl(?:decode|encode))|e(?:a(?:d(?:_exif_data|dir|file|gzfile|lin(?:e(?:_(?:add_history|c(?:allback_(?:handler_(?:install|remove)|read_char)|lear_history|ompletion_function)|info|list_history|on_new_line|re(?:ad_history|display)|write_history)|)|k))|lpath)|code(?:_(?:file|string)|)|gister_(?:shutdown_function|tick_function)|name(?:_function|)|s(?:et|tore_(?:e(?:rror_handler|xception_handler)|include_path))|wind(?:dir|))|mdir|ound|sort|trim)|s(?:candir|e(?:m_(?:acquire|get|re(?:lease|move))|rialize|s(?:am_(?:affected_rows|co(?:mmit|nnect)|di(?:agnostic|sconnect)|e(?:rrormsg|xecimm)|f(?:etch_(?:array|r(?:esult|ow))|ield_(?:array|name)|ree_result)|num_fields|query|rollback|se(?:ek_row|ttransaction))|sion_(?:c(?:ache_(?:expire|limiter)|ommit)|de(?:code|stroy)|encode|get_cookie_params|i(?:d|s_registered)|module_name|name|reg(?:enerate_id|ister)|s(?:ave_path|et_(?:cookie_params|save_handler)|tart)|un(?:register|set)|write_close))|t(?:_(?:e(?:rror_handler|xception_handler)|file_buffer|include_path|magic_quotes_runtime|time_limit)|cookie|locale|rawcookie|type))|h(?:a1(?:_file|)|ell_exec|m(?:_(?:attach|detach|get_var|put_var|remove(?:_var|))|op_(?:close|delete|open|read|size|write))|ow_source|uffle)|i(?:m(?:ilar_text|plexml_(?:import_dom|load_(?:file|string)))|n(?:h|)|zeof)|leep|nmp(?:_(?:get_(?:quick_print|valueretrieval)|read_mib|set_(?:enum_print|oid_numeric_print|quick_print|valueretrieval))|get(?:next|)|realwalk|set|walk(?:oid|))|o(?:cket_(?:accept|bind|c(?:l(?:ear_error|ose)|onnect|reate(?:_(?:listen|pair)|))|get(?:_(?:option|status)|peername|sockname)|l(?:ast_error|isten)|re(?:ad|cv(?:from|))|s(?:e(?:lect|nd(?:to|)|t_(?:block(?:ing|)|nonblock|option|timeout))|hutdown|trerror)|write)|rt|undex)|p(?:l(?:_classes|it(?:i|))|rintf)|q(?:l(?:_regcase|ite_(?:array_query|busy_timeout|c(?:hanges|lose|olumn|reate_(?:aggregate|function)|urrent)|e(?:rror_string|scape_string|xec)|f(?:actory|etch_(?:a(?:ll|rray)|column_types|object|s(?:ingle|tring))|ield_name)|has_(?:more|prev)|l(?:ast_(?:error|insert_rowid)|ib(?:encoding|version))|n(?:ext|um_(?:fields|rows))|open|p(?:open|rev)|query|rewind|s(?:eek|ingle_query)|u(?:df_(?:decode_binary|encode_binary)|nbuffered_query)))|rt)|rand|s(?:canf|h2_(?:auth_(?:none|p(?:assword|ubkey_file))|connect|exec|f(?:etch_stream|ingerprint)|methods_negotiated|s(?:cp_(?:recv|send)|ftp(?:_(?:lstat|mkdir|r(?:e(?:a(?:dlink|lpath)|name)|mdir)|s(?:tat|ymlink)|unlink)|)|hell)|tunnel))|t(?:at|r(?:_(?:ireplace|pad|r(?:ep(?:eat|lace)|ot13)|s(?:huffle|plit)|word_count)|c(?:asecmp|hr|mp|oll|spn)|eam_(?:co(?:ntext_(?:create|get_(?:default|options)|set_(?:option|params))|py_to_stream)|filter_(?:append|prepend|re(?:gister|move))|get_(?:contents|filters|line|meta_data|transports|wrappers)|register_wrapper|s(?:e(?:lect|t_(?:blocking|timeout|write_buffer))|ocket_(?:accept|client|enable_crypto|get_name|pair|recvfrom|se(?:ndto|rver)))|wrapper_(?:re(?:gister|store)|unregister))|ftime|i(?:p(?:_tags|cslashes|os|slashes)|str)|len|n(?:atc(?:asecmp|mp)|c(?:asecmp|mp))|p(?:brk|os|time)|r(?:chr|ev|ipos|pos)|s(?:pn|tr)|t(?:o(?:k|lower|time|upper)|r)|val))|ubstr(?:_(?:co(?:mpare|unt)|replace)|)|wf(?:_(?:a(?:ction(?:g(?:eturl|oto(?:frame|label))|nextframe|p(?:lay|revframe)|s(?:ettarget|top)|togglequality|waitforframe)|dd(?:buttonrecord|color))|closefile|define(?:bitmap|font|line|poly|rect|text)|end(?:button|doaction|s(?:hape|ymbol))|font(?:s(?:ize|lant)|tracking)|get(?:bitmapinfo|f(?:ontinfo|rame))|l(?:abelframe|ookat)|m(?:odifyobject|ulcolor)|nextid|o(?:ncondition|penfile|rtho(?:2|))|p(?:erspective|laceobject|o(?:larview|pmatrix|sround)|ushmatrix)|r(?:emoveobject|otate)|s(?:cale|etf(?:ont|rame)|h(?:ape(?:arc|curveto(?:3|)|fill(?:bitmap(?:clip|tile)|off|solid)|line(?:solid|to)|moveto)|owframe)|tart(?:button|doaction|s(?:hape|ymbol)))|t(?:extwidth|ranslate)|viewport)|action|b(?:itmap|utton(?:_keypress|))|displayitem|f(?:ill|ont)|gradient|mo(?:rph|vie)|s(?:hape|prite)|text(?:field|))|y(?:base_(?:affected_rows|c(?:lose|onnect)|d(?:ata_seek|eadlock_retry_count)|f(?:etch_(?:a(?:rray|ssoc)|field|object|row)|ield_seek|ree_result)|get_last_message|min_(?:client_severity|error_severity|message_severity|server_severity)|num_(?:fields|rows)|pconnect|query|result|se(?:lect_db|t_message_handler)|unbuffered_query)|mlink|s(?:log|tem)))|t(?:an(?:h|)|cpwrap_check|e(?:mpnam|xtdomain)|i(?:dy_(?:access_count|c(?:lean_repair|onfig_count)|diagnose|error_count|get(?:_(?:body|config|error_buffer|h(?:ead|tml(?:_ver|))|output|r(?:elease|oot)|status)|opt)|is_x(?:html|ml)|load_config|parse_(?:file|string)|re(?:pair_(?:file|string)|set_config)|s(?:ave_config|et(?:_encoding|opt))|warning_count)|me(?:_nanosleep|))|mpfile|o(?:ken_(?:get_all|name)|uch)|ri(?:gger_error|m))|u(?:asort|c(?:first|words)|dm_(?:a(?:dd_search_limit|lloc_agent(?:_array|)|pi_version)|c(?:at_(?:list|path)|heck_(?:charset|stored)|l(?:ear_search_limits|ose_stored)|rc32)|err(?:no|or)|f(?:ind|ree_(?:agent|ispell_data|res))|get_(?:doc_count|res_(?:field|param))|hash32|load_ispell_data|open_stored|set_agent_param)|ksort|mask|n(?:i(?:qid|xtojd)|link|pack|register_tick_function|serialize)|rl(?:decode|encode)|s(?:er_error|leep|ort)|tf8_(?:decode|encode))|v(?:ar(?:_(?:dump|export)|iant(?:_(?:a(?:bs|dd|nd)|c(?:a(?:st|t)|mp)|d(?:ate_(?:from_timestamp|to_timestamp)|iv)|eqv|fix|get_type|i(?:div|mp|nt)|m(?:od|ul)|n(?:eg|ot)|or|pow|round|s(?:et(?:_type|)|ub)|xor)|))|ersion_compare|fprintf|irtual|p(?:opmail_(?:a(?:dd_(?:alias_domain(?:_ex|)|domain(?:_ex|)|user)|lias_(?:add|del(?:_domain|)|get(?:_all|))|uth_user)|del_(?:domain(?:_ex|)|user)|error|passwd|set_user_quota)|rintf)|sprintf)|w(?:32api_(?:deftype|in(?:it_dtype|voke_function)|register_function|set_call_method)|ddx_(?:add_vars|deserialize|packet_(?:end|start)|serialize_va(?:lue|rs))|ordwrap)|x(?:attr_(?:get|list|remove|s(?:et|upported))|diff_(?:file_(?:diff(?:_binary|)|merge3|patch(?:_binary|))|string_(?:diff(?:_binary|)|merge3|patch(?:_binary|)))|ml(?:_(?:error_string|get_(?:current_(?:byte_index|column_number|line_number)|error_code)|parse(?:_into_struct|r_(?:create(?:_ns|)|free|get_option|set_option)|)|set_(?:character_data_handler|default_handler|e(?:lement_handler|nd_namespace_decl_handler|xternal_entity_ref_handler)|notation_decl_handler|object|processing_instruction_handler|start_namespace_decl_handler|unparsed_entity_decl_handler))|rpc_(?:decode(?:_request|)|encode(?:_request|)|get_type|is_fault|parse_method_descriptions|se(?:rver_(?:add_introspection_data|c(?:all_method|reate)|destroy|register_(?:introspection_callback|method))|t_type)))|p(?:ath_(?:eval(?:_expression|)|new_context)|tr_(?:eval|new_context))|sl(?:_xsltprocessor_(?:get_parameter|has_exslt_support|import_stylesheet|re(?:gister_php_functions|move_parameter)|set_parameter|transform_to_(?:doc|uri|xml))|t_(?:backend_(?:info|name|version)|create|err(?:no|or)|free|getopt|process|set(?:_(?:base|e(?:ncoding|rror_handler)|log|object|s(?:ax_handler(?:s|)|cheme_handler(?:s|)))|opt))))|y(?:az_(?:addinfo|c(?:cl_(?:conf|parse)|lose|onnect)|database|e(?:lement|rr(?:no|or)|s_result)|get_option|hits|itemorder|present|r(?:ange|ecord)|s(?:c(?:an(?:_result|)|hema)|e(?:arch|t_option)|ort|yntax)|wait)|p_(?:all|cat|err(?:_string|no)|first|get_default_domain|ma(?:ster|tch)|next|order))|z(?:end_(?:logo_guid|version)|ip_(?:close|entry_(?:c(?:lose|ompress(?:edsize|ionmethod))|filesize|name|open|read)|open|read)|lib_get_coding_type))\\b"
+ , _style: "color: #e17100;"
+ }
+ }
+}
diff --git a/docs/assets/js/jquery/chili/php.js b/docs/assets/js/jquery/chili/php.js
new file mode 100755
index 000000000..643563eed
--- /dev/null
+++ b/docs/assets/js/jquery/chili/php.js
@@ -0,0 +1,138 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+/* ----------------------------------------------------------------------------
+ * this recipe uses a little trick for highlighting php code
+ * 1: replace each php snippet with a placeholder
+ * 2: highlight html without php and php snippets apart
+ * 3: replace each placeholder with its highlighted php snippet
+ *
+ * the trick is not perfect only if the html without php is broken
+ * however, in such a case many highlighters get fooled but Chili does not
+ *
+ * ---
+ * this recipe has been adapted for working with Safari
+ * in fact, Safari cannot match more than 101236 characters with a lazy star
+ * --------------------------------------------------------------------------*/
+{
+ _name: "php"
+ , _case: true
+ , _main: {
+ all: {
+ _match: /[\w\W]*/
+ , _replace: function( all ) {
+ var placeholder = String.fromCharCode(0);
+ var blocks = [];
+ var that = this;
+ var no_php_1 = all.replace( /<\?[^?]*\?+(?:[^>][^?]*\?+)*>/g, function( block ) {
+ blocks.push( that.x( block, '/block/php_1' ) );
+ return placeholder;
+ } );
+ var no_php_2 = no_php_1.replace( /^[^?]*\?+(?:[^>][^?]*\?+)*>|<\?[\w\W]*$/g, function( block ) {
+ blocks.push( that.x( block, '/block/php_2' ) );
+ return placeholder;
+ } );
+ if( blocks.length ) {
+ var html = this.x( no_php_2, 'html' );
+ var count = 0;
+ return html.replace( new RegExp( placeholder, "g" ), function() {
+ return blocks[ count++ ];
+ } );
+ }
+ else {
+ return this.x( all, '/php' );
+ }
+ }
+ }
+ }
+ , block: {
+ php_1: { // --- <? +++ ?> ---
+ _match: /(<\?(?:php\b)?)([^?]*\?+(?:[^>][^?]*\?+)*>)/
+ , _replace: function( all, open, content ) {
+ return "<span class='start'>" + this.x( open ) + "</span>"
+ + this.x( content.replace( /\?>$/, '' ), '/php' )
+ + "<span class='end'>" + this.x( '?>' ) + "</span>";
+ }
+ , _style: {
+ start: "color: red; font-weight: bold"
+ , end: "color: red;"
+ }
+ }
+ , php_2: { // +++ ?> --- <? +++
+ _match: /([^?]*\?+(?:[^>][^?]*\?+)*>)|(<\?(?:php\b)?)([\w\W]*)/
+ , _replace: function( all, content, open2, content2 ) {
+ if( open2 ) {
+ return "<span class='start'>" + this.x( open2 ) + "</span>"
+ + this.x( content2, '/php' );
+ }
+ else {
+ return this.x( content.replace( /\?>$/, '' ), '/php' )
+ + "<span class='end'>" + this.x( '?>' ) + "</span>";
+ }
+ }
+ , _style: {
+ start: "color: red; font-weight: bold"
+ , end: "color: red;"
+ }
+ }
+ }
+ , php: {
+ mlcom: {
+ _match: /\/\*[^*]*\*+([^\/][^*]*\*+)*\//
+ , _style: "color: gray;"
+ }
+ , com: {
+ _match: /(?:\/\/.*)|(?:[^\\]\#.*)/
+ , _style: "color: green;"
+ }
+ , string1: {
+ _match: /\'[^\'\\]*(?:\\.[^\'\\]*)*\'/
+ , _style: "color: purple;"
+ }
+ , string2: {
+ _match: /\"[^\"\\]*(?:\\.[^\"\\]*)*\"/
+ , _style: "color: fuchsia;"
+ }
+ , value: {
+ _match: /\b(?:[Nn][Uu][Ll][Ll]|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])\b/
+ , _style: "color: gray; font-weight: bold;"
+ }
+ , number: {
+ _match: /\b[+-]?(\d*\.?\d+|\d+\.?\d*)([eE][+-]?\d+)?\b/
+ , _style: "color: red;"
+ }
+ , const1: {
+ _match: /\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\b/
+ , _style: "color: red;"
+ }
+ , const2: {
+ _match: /\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR))\b/
+ , _style: "color: red;"
+ }
+ , global: {
+ _match: /(?:\$GLOBALS|\$_COOKIE|\$_ENV|\$_FILES|\$_GET|\$_POST|\$_REQUEST|\$_SERVER|\$_SESSION|\$php_errormsg)\b/
+ , _style: "color: red;"
+ }
+ , keyword: {
+ _match: /\b(?:__CLASS__|__FILE__|__FUNCTION__|__LINE__|__METHOD__|abstract|and|array|as|break|case|catch|cfunction|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exception|exit|extends|extends|final|for|foreach|function|global|if|implements|include|include_once|interface|isset|list|new|old_function|or|php_user_filter|print|private|protected|public|require|require_once|return|static|switch|this|throw|try|unset|use|var|while|xor)\b/
+ , _style: "color: navy; font-weight: bold;"
+ }
+ , variable: {
+ _match: /\$(\w+)/
+ , _replace: '<span class="keyword">$</span><span class="variable">$1</span>'
+ , _style: "color: #4040c2;"
+ }
+ , heredoc: {
+ _match: /(\<\<\<\s*)(\w+)((?:(?!\2).*\n)+)(\2)\b/
+ , _replace: '<span class="keyword">$1</span><span class="string1">$2</span><span class="string2">$3</span><span class="string1">$4</span>'
+ }
+ }
+} \ No newline at end of file
diff --git a/docs/assets/js/jquery/chili/recipes.js b/docs/assets/js/jquery/chili/recipes.js
new file mode 100755
index 000000000..e6917afa2
--- /dev/null
+++ b/docs/assets/js/jquery/chili/recipes.js
@@ -0,0 +1,364 @@
+/*
+===============================================================================
+Chili is the jQuery code highlighter plugin
+...............................................................................
+LICENSE: http://www.opensource.org/licenses/mit-license.php
+WEBSITE: http://noteslog.com/chili/
+
+ Copyright 2008 / Andrea Ercolino
+===============================================================================
+*/
+
+ChiliBook.recipeLoading = false;
+
+
+
+ChiliBook.recipes[ "php.js" ] =
+/* ----------------------------------------------------------------------------
+ * this recipe uses a little trick for highlighting php code
+ * 1: replace each php snippet with a placeholder
+ * 2: highlight html without php and php snippets apart
+ * 3: replace each placeholder with its highlighted php snippet
+ *
+ * the trick is not perfect only if the html without php is broken
+ * however, in such a case many highlighters get fooled but Chili does not
+ *
+ * ---
+ * this recipe has been adapted for working with Safari
+ * in fact, Safari cannot match more than 101236 characters with a lazy star
+ * --------------------------------------------------------------------------*/
+{
+ _name: "php"
+ , _case: true
+ , _main: {
+ all: {
+ _match: /[\w\W]*/
+ , _replace: function( all ) {
+ var placeholder = String.fromCharCode(0);
+ var blocks = [];
+ var that = this;
+ var no_php_1 = all.replace( /<\?[^?]*\?+(?:[^>][^?]*\?+)*>/g, function( block ) {
+ blocks.push( that.x( block, '/block/php_1' ) );
+ return placeholder;
+ } );
+ var no_php_2 = no_php_1.replace( /^[^?]*\?+(?:[^>][^?]*\?+)*>|<\?[\w\W]*$/g, function( block ) {
+ blocks.push( that.x( block, '/block/php_2' ) );
+ return placeholder;
+ } );
+ if( blocks.length ) {
+ var html = this.x( no_php_2, 'html' );
+ var count = 0;
+ return html.replace( new RegExp( placeholder, "g" ), function() {
+ return blocks[ count++ ];
+ } );
+ }
+ else {
+ return this.x( all, '/php' );
+ }
+ }
+ }
+ }
+ , block: {
+ php_1: { // --- <? +++ ?> ---
+ _match: /(<\?(?:php\b)?)([^?]*\?+(?:[^>][^?]*\?+)*>)/
+ , _replace: function( all, open, content ) {
+ return "<span class='start'>" + this.x( open ) + "</span>"
+ + this.x( content.replace( /\?>$/, '' ), '/php' )
+ + "<span class='end'>" + this.x( '?>' ) + "</span>";
+ }
+ , _style: {
+ start: "color: red; font-weight: bold"
+ , end: "color: red;"
+ }
+ }
+ , php_2: { // +++ ?> --- <? +++
+ _match: /([^?]*\?+(?:[^>][^?]*\?+)*>)|(<\?(?:php\b)?)([\w\W]*)/
+ , _replace: function( all, content, open2, content2 ) {
+ if( open2 ) {
+ return "<span class='start'>" + this.x( open2 ) + "</span>"
+ + this.x( content2, '/php' );
+ }
+ else {
+ return this.x( content.replace( /\?>$/, '' ), '/php' )
+ + "<span class='end'>" + this.x( '?>' ) + "</span>";
+ }
+ }
+ , _style: {
+ start: "color: red; font-weight: bold"
+ , end: "color: red;"
+ }
+ }
+ }
+ , php: {
+ mlcom: {
+ _match: /\/\*[^*]*\*+([^\/][^*]*\*+)*\//
+ , _style: "color: gray;"
+ }
+ , com: {
+ _match: /(?:\/\/.*)|(?:[^\\]\#.*)/
+ , _style: "color: green;"
+ }
+ , string1: {
+ _match: /\'[^\'\\]*(?:\\.[^\'\\]*)*\'/
+ , _style: "color: purple;"
+ }
+ , string2: {
+ _match: /\"[^\"\\]*(?:\\.[^\"\\]*)*\"/
+ , _style: "color: fuchsia;"
+ }
+ , value: {
+ _match: /\b(?:[Nn][Uu][Ll][Ll]|[Tt][Rr][Uu][Ee]|[Ff][Aa][Ll][Ss][Ee])\b/
+ , _style: "color: gray;"
+ }
+ , number: {
+ _match: /\b[+-]?(\d*\.?\d+|\d+\.?\d*)([eE][+-]?\d+)?\b/
+ , _style: "color: red;"
+ }
+ , const1: {
+ _match: /\b(?:DEFAULT_INCLUDE_PATH|E_(?:ALL|CO(?:MPILE_(?:ERROR|WARNING)|RE_(?:ERROR|WARNING))|ERROR|NOTICE|PARSE|STRICT|USER_(?:ERROR|NOTICE|WARNING)|WARNING)|P(?:EAR_(?:EXTENSION_DIR|INSTALL_DIR)|HP_(?:BINDIR|CONFIG_FILE_(?:PATH|SCAN_DIR)|DATADIR|E(?:OL|XTENSION_DIR)|INT_(?:MAX|SIZE)|L(?:IBDIR|OCALSTATEDIR)|O(?:S|UTPUT_HANDLER_(?:CONT|END|START))|PREFIX|S(?:API|HLIB_SUFFIX|YSCONFDIR)|VERSION))|__COMPILER_HALT_OFFSET__)\b/
+ , _style: "color: red;"
+ }
+ , const2: {
+ _match: /\b(?:A(?:B(?:DAY_(?:1|2|3|4|5|6|7)|MON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9))|LT_DIGITS|M_STR|SSERT_(?:ACTIVE|BAIL|CALLBACK|QUIET_EVAL|WARNING))|C(?:ASE_(?:LOWER|UPPER)|HAR_MAX|O(?:DESET|NNECTION_(?:ABORTED|NORMAL|TIMEOUT)|UNT_(?:NORMAL|RECURSIVE))|R(?:EDITS_(?:ALL|DOCS|FULLPAGE|G(?:ENERAL|ROUP)|MODULES|QA|SAPI)|NCYSTR|YPT_(?:BLOWFISH|EXT_DES|MD5|S(?:ALT_LENGTH|TD_DES)))|URRENCY_SYMBOL)|D(?:AY_(?:1|2|3|4|5|6|7)|ECIMAL_POINT|IRECTORY_SEPARATOR|_(?:FMT|T_FMT))|E(?:NT_(?:COMPAT|NOQUOTES|QUOTES)|RA(?:_(?:D_(?:FMT|T_FMT)|T_FMT|YEAR)|)|XTR_(?:IF_EXISTS|OVERWRITE|PREFIX_(?:ALL|I(?:F_EXISTS|NVALID)|SAME)|SKIP))|FRAC_DIGITS|GROUPING|HTML_(?:ENTITIES|SPECIALCHARS)|IN(?:FO_(?:ALL|C(?:ONFIGURATION|REDITS)|ENVIRONMENT|GENERAL|LICENSE|MODULES|VARIABLES)|I_(?:ALL|PERDIR|SYSTEM|USER)|T_(?:CURR_SYMBOL|FRAC_DIGITS))|L(?:C_(?:ALL|C(?:OLLATE|TYPE)|M(?:ESSAGES|ONETARY)|NUMERIC|TIME)|O(?:CK_(?:EX|NB|SH|UN)|G_(?:A(?:LERT|UTH(?:PRIV|))|C(?:ONS|R(?:IT|ON))|D(?:AEMON|EBUG)|E(?:MERG|RR)|INFO|KERN|L(?:OCAL(?:0|1|2|3|4|5|6|7)|PR)|MAIL|N(?:DELAY|EWS|O(?:TICE|WAIT))|ODELAY|P(?:ERROR|ID)|SYSLOG|U(?:SER|UCP)|WARNING)))|M(?:ON_(?:1(?:0|1|2|)|2|3|4|5|6|7|8|9|DECIMAL_POINT|GROUPING|THOUSANDS_SEP)|_(?:1_PI|2_(?:PI|SQRTPI)|E|L(?:N(?:10|2)|OG(?:10E|2E))|PI(?:_(?:2|4)|)|SQRT(?:1_2|2)))|N(?:EGATIVE_SIGN|O(?:EXPR|STR)|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|P(?:ATH(?:INFO_(?:BASENAME|DIRNAME|EXTENSION)|_SEPARATOR)|M_STR|OSITIVE_SIGN|_(?:CS_PRECEDES|S(?:EP_BY_SPACE|IGN_POSN)))|RADIXCHAR|S(?:EEK_(?:CUR|END|SET)|ORT_(?:ASC|DESC|NUMERIC|REGULAR|STRING)|TR_PAD_(?:BOTH|LEFT|RIGHT))|T(?:HOUS(?:ANDS_SEP|EP)|_FMT(?:_AMPM|))|YES(?:EXPR|STR))\b/
+ , _style: "color: red;"
+ }
+ , global: {
+ _match: /(?:\$GLOBALS|\$_COOKIE|\$_ENV|\$_FILES|\$_GET|\$_POST|\$_REQUEST|\$_SERVER|\$_SESSION|\$php_errormsg)\b/
+ , _style: "color: red;"
+ }
+ , keyword: {
+ _match: /\b(?:__CLASS__|__FILE__|__FUNCTION__|__LINE__|__METHOD__|abstract|and|array|as|break|case|catch|cfunction|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exception|exit|extends|extends|final|for|foreach|function|global|if|implements|include|include_once|interface|isset|list|new|old_function|or|php_user_filter|print|private|protected|public|require|require_once|return|static|switch|this|throw|try|unset|use|var|while|xor)\b/
+ , _style: "color: navy;"
+ }
+ , variable: {
+ _match: /\$(\w+)/
+ , _replace: '<span class="keyword">$</span><span class="variable">$1</span>'
+ , _style: "color: #4040c2;"
+ }
+ , heredoc: {
+ _match: /(\<\<\<\s*)(\w+)((?:(?!\2).*\n)+)(\2)\b/
+ , _replace: '<span class="keyword">$1</span><span class="string1">$2</span><span class="string2">$3</span><span class="string1">$4</span>'
+ }
+ }
+}
+
+
+
+ChiliBook.recipes[ "html.js" ] =
+{
+ _name: 'html'
+ , _case: false
+ , _main: {
+ doctype: {
+ _match: /<!DOCTYPE\b[\w\W]*?>/
+ , _style: "color: #CC6600;"
+ }
+ , ie_style: {
+ _match: /(<!--\[[^\]]*\]>)([\w\W]*?)(<!\[[^\]]*\]-->)/
+ , _replace: function( all, open, content, close ) {
+ return "<span class='ie_style'>" + this.x( open ) + "</span>"
+ + this.x( content, '//style' )
+ + "<span class='ie_style'>" + this.x( close ) + "</span>";
+ }
+ , _style: "color: DarkSlateGray;"
+ }
+ , comment: {
+ _match: /<!--[\w\W]*?-->/
+ , _style: "color: #4040c2;"
+ }
+ , script: {
+ _match: /(<script\s+[^>]*>)([\w\W]*?)(<\/script\s*>)/
+ , _replace: function( all, open, content, close ) {
+ return this.x( open, '//tag_start' )
+ + this.x( content, 'js' )
+ + this.x( close, '//tag_end' );
+ }
+ }
+ , style: {
+ _match: /(<style\s+[^>]*>)([\w\W]*?)(<\/style\s*>)/
+ , _replace: function( all, open, content, close ) {
+ return this.x( open, '//tag_start' )
+ + this.x( content, 'css' )
+ + this.x( close, '//tag_end' );
+ }
+ }
+ // matches a starting tag of an element (with attrs)
+ // like "<div ... >" or "<img ... />"
+ , tag_start: {
+ _match: /(<\w+)((?:[?%]>|[\w\W])*?)(\/>|>)/
+ , _replace: function( all, open, content, close ) {
+ return "<span class='tag_start'>" + this.x( open ) + "</span>"
+ + this.x( content, '/tag_attrs' )
+ + "<span class='tag_start'>" + this.x( close ) + "</span>";
+ }
+ , _style: "color: navy;"
+ }
+ // matches an ending tag
+ // like "</div>"
+ , tag_end: {
+ _match: /<\/\w+\s*>|\/>/
+ , _style: "color: navy;"
+ }
+ , entity: {
+ _match: /&\w+?;/
+ , _style: "color: blue;"
+ }
+ }
+ , tag_attrs: {
+ // matches a name/value pair
+ attr: {
+ // before in $1, name in $2, between in $3, value in $4
+ _match: /(\W*?)([\w-]+)(\s*=\s*)((?:\'[^\']*(?:\\.[^\']*)*\')|(?:\"[^\"]*(?:\\.[^\"]*)*\"))/
+ , _replace: "$1<span class='attr_name'>$2</span>$3<span class='attr_value'>$4</span>"
+ , _style: { attr_name: "color: green;", attr_value: "color: maroon;" }
+ }
+ }
+};
+
+
+
+ChiliBook.recipes[ "js.js" ] =
+{
+ _name: 'js'
+ , _case: true
+ , _main: {
+ ml_comment: {
+ _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//
+ , _style: 'color: gray;'
+ }
+ , sl_comment: {
+ _match: /\/\/.*/
+ , _style: 'color: green;'
+ }
+ , string: {
+ _match: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/
+ , _style: 'color: teal;'
+ }
+ , num: {
+ _match: /\b[+-]?(?:\d*\.?\d+|\d+\.?\d*)(?:[eE][+-]?\d+)?\b/
+ , _style: 'color: red;'
+ }
+ , reg_not: { //this prevents "a / b / c" to be interpreted as a reg_exp
+ _match: /(?:\w+\s*)\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*(?:\s*\w+)/
+ , _replace: function( all ) {
+ return this.x( all, '//num' );
+ }
+ }
+ , reg_exp: {
+ _match: /\/[^\/\\\n]*(?:\\.[^\/\\\n]*)*\/[gim]*/
+ , _style: 'color: maroon;'
+ }
+ , brace: {
+ _match: /[\{\}]/
+ , _style: 'color: red;'
+ }
+ , statement: {
+ _match: /\b(with|while|var|try|throw|switch|return|if|for|finally|else|do|default|continue|const|catch|case|break)\b/
+ , _style: 'color: navy;'
+ }
+ , error: {
+ _match: /\b(URIError|TypeError|SyntaxError|ReferenceError|RangeError|EvalError|Error)\b/
+ , _style: 'color: Coral;'
+ }
+ , object: {
+ _match: /\b(String|RegExp|Object|Number|Math|Function|Date|Boolean|Array)\b/
+ , _style: 'color: DeepPink;'
+ }
+ , property: {
+ _match: /\b(undefined|arguments|NaN|Infinity)\b/
+ , _style: 'color: Purple;'
+ }
+ , 'function': {
+ _match: /\b(parseInt|parseFloat|isNaN|isFinite|eval|encodeURIComponent|encodeURI|decodeURIComponent|decodeURI)\b/
+ , _style: 'color: olive;'
+ }
+ , operator: {
+ _match: /\b(void|typeof|this|new|instanceof|in|function|delete)\b/
+ , _style: 'color: RoyalBlue;'
+ }
+ , liveconnect: {
+ _match: /\b(sun|netscape|java|Packages|JavaPackage|JavaObject|JavaClass|JavaArray|JSObject|JSException)\b/
+ , _style: 'text-decoration: overline;'
+ }
+ }
+};
+
+
+
+ChiliBook.recipes[ "css.js" ] =
+{
+ _name: 'css'
+ , _case: true
+ , _main: {
+ comment: {
+ _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//
+ , _style: "color: olive;"
+ }
+ , directive: {
+ _match: /@\w+/
+ , _style: "color: fuchsia;"
+ }
+ , url: {
+ _match: /\b(url\s*\()([^)]+)(\))/
+ , _replace: "<span class='url'>$1</span>$2<span class='url'>$3</span>"
+ , _style: "color: fuchsia;"
+ }
+ , block: {
+ _match: /\{([\w\W]*?)\}/
+ , _replace: function( all, pairs ) {
+ return '{' + this.x( pairs, '/definition' ) + '}';
+ }
+ }
+ , 'class': {
+ _match: /\.\w+/
+ , _style: "color: #CC0066;"
+ }
+ , id: {
+ _match: /#\w+/
+ , _style: "color: IndianRed;"
+ }
+ , pseudo: {
+ _match: /:\w+/
+ , _style: "color: #CC9900;"
+ }
+ , element: {
+ _match: /\w+/
+ , _style: "color: Purple;"
+ }
+ }
+ , definition: {
+ comment: {
+ _match: /\/\*[^*]*\*+(?:[^\/][^*]*\*+)*\//
+ }
+ , property: {
+ _match: /\b(?:zoom|z-index|writing-mode|word-wrap|word-spacing|word-break|width|widows|white-space|volume|voice-family|visibility|vertical-align|unicode-bidi|top|text-underline-position|text-transform|text-shadow|text-overflow|text-kashida-space|text-justify|text-indent|text-decoration|text-autospace|text-align-last|text-align|table-layout|stress|speech-rate|speak-punctuation|speak-numeral|speak-header|speak|size|scrollbar-track-color|scrollbar-shadow-color|scrollbar-highlight-color|scrollbar-face-color|scrollbar-dark-shadow-color|scrollbar-base-color|scrollbar-arrow-color|scrollbar-3d-light-color|ruby-position|ruby-overhang|ruby-align|right|richness|quotes|position|play-during|pitch-range|pitch|pause-before|pause-after|pause|page-break-inside|page-break-before|page-break-after|page|padding-top|padding-right|padding-left|padding-bottom|padding|overflow-Y|overflow-X|overflow|outline-width|outline-style|outline-color|outline|orphans|min-width|min-height|max-width|max-height|marks|marker-offset|margin-top|margin-right|margin-left|margin-bottom|margin|list-style-type|list-style-position|list-style-image|list-style|line-height|line-break|letter-spacing|left|layout-grid-type|layout-grid-mode|layout-grid-line|layout-grid-char-spacing|layout-grid-char|layout-grid|layout-flow|layer-background-image|layer-background-color|include-source|ime-mode|height|font-weight|font-variant|font-style|font-stretch|font-size-adjust|font-size|font-family|font|float|filter|empty-cells|elevation|display|direction|cursor|cue-before|cue-after|cue|counter-reset|counter-increment|content|color|clip|clear|caption-side|bottom|border-width|border-top-width|border-top-style|border-top-color|border-top|border-style|border-spacing|border-right-width|border-right-style|border-right-color|border-right|border-left-width|border-left-style|border-left-color|border-left|border-color|border-collapse|border-bottom-width|border-bottom-style|border-bottom-color|border-bottom|border|behavior|background-repeat|background-position-y|background-position-x|background-position|background-image|background-color|background-attachment|background|azimuth|accelerator)\s*:/
+ , _style: "color: #330066;"
+ }
+ , special: {
+ _match: /\b(?:-use-link-source|-set-link-source|-replace|-moz-user-select|-moz-user-modify|-moz-user-input|-moz-user-focus|-moz-outline-width|-moz-outline-style|-moz-outline-color|-moz-outline|-moz-opacity|-moz-border-top-colors|-moz-border-right-colors|-moz-border-radius-topright|-moz-border-radius-topleft|-moz-border-radius-bottomright|-moz-border-radius-bottomleft|-moz-border-radius|-moz-border-left-colors|-moz-border-bottom-colors|-moz-binding)\s*:/
+ , _style: "color: #330066; text-decoration: underline;"
+ }
+ , url: {
+ _match: /\b(url\s*\()([^)]+)(\))/
+ , _replace: "<span class='url'>$1</span>$2<span class='url'>$3</span>"
+ }
+ , value: {
+ _match: /\b(?:xx-small|xx-large|x-soft|x-small|x-slow|x-low|x-loud|x-large|x-high|x-fast|wider|wait|w-resize|visible|url|uppercase|upper-roman|upper-latin|upper-alpha|underline|ultra-expanded|ultra-condensed|tv|tty|transparent|top|thin|thick|text-top|text-bottom|table-row-group|table-row|table-header-group|table-footer-group|table-column-group|table-column|table-cell|table-caption|sw-resize|super|sub|status-bar|static|square|spell-out|speech|solid|soft|smaller|small-caption|small-caps|small|slower|slow|silent|show|separate|semi-expanded|semi-condensed|se-resize|scroll|screen|s-resize|run-in|rtl|rightwards|right-side|right|ridge|rgb|repeat-y|repeat-x|repeat|relative|projection|print|pre|portrait|pointer|overline|outside|outset|open-quote|once|oblique|nw-resize|nowrap|normal|none|no-repeat|no-open-quote|no-close-quote|ne-resize|narrower|n-resize|move|mix|middle|message-box|medium|marker|ltr|lowercase|lower-roman|lower-latin|lower-greek|lower-alpha|lower|low|loud|local|list-item|line-through|lighter|level|leftwards|left-side|left|larger|large|landscape|justify|italic|invert|inside|inset|inline-table|inline|icon|higher|high|hide|hidden|help|hebrew|handheld|groove|format|fixed|faster|fast|far-right|far-left|fantasy|extra-expanded|extra-condensed|expanded|embossed|embed|e-resize|double|dotted|disc|digits|default|decimal-leading-zero|decimal|dashed|cursive|crosshair|cross|crop|counters|counter|continuous|condensed|compact|collapse|code|close-quote|circle|center-right|center-left|center|caption|capitalize|braille|bottom|both|bolder|bold|block|blink|bidi-override|below|behind|baseline|avoid|auto|aural|attr|armenian|always|all|absolute|above)\b/
+ , _style: "color: #3366FF;"
+ }
+ , string: {
+ _match: /(?:\'[^\'\\\n]*(?:\\.[^\'\\\n]*)*\')|(?:\"[^\"\\\n]*(?:\\.[^\"\\\n]*)*\")/
+ , _style: "color: teal;"
+ }
+ , number: {
+ _match: /(?:\b[+-]?(?:\d*\.?\d+|\d+\.?\d*))(?:%|(?:(?:px|pt|em|)\b))/
+ , _style: "color: red;"
+ }
+ , color : {
+ _match: /(?:\#[a-fA-F0-9]{3,6})|\b(?:yellow|white|teal|silver|red|purple|olive|navy|maroon|lime|green|gray|fuchsia|blue|black|aqua|YellowGreen|Yellow|WhiteSmoke|White|Wheat|Violet|Turquoise|Tomato|Thistle|Teal|Tan|SteelBlue|SpringGreen|Snow|SlateGrey|SlateGray|SlateBlue|SkyBlue|Silver|Sienna|SeaShell|SeaGreen|SandyBrown|Salmon|SaddleBrown|RoyalBlue|RosyBrown|Red|Purple|PowderBlue|Plum|Pink|Peru|PeachPuff|PapayaWhip|PaleVioletRed|PaleTurquoise|PaleGreen|PaleGoldenRod|Orchid|OrangeRed|Orange|OliveDrab|Olive|OldLace|Navy|NavajoWhite|Moccasin|MistyRose|MintCream|MidnightBlue|MediumVioletRed|MediumTurquoise|MediumSpringGreen|MediumSlateBlue|MediumSeaGreen|MediumPurple|MediumOrchid|MediumBlue|MediumAquaMarine|Maroon|Magenta|Linen|LimeGreen|Lime|LightYellow|LightSteelBlue|LightSlateGrey|LightSlateGray|LightSkyBlue|LightSeaGreen|LightSalmon|LightPink|LightGrey|LightGreen|LightGray|LightGoldenRodYellow|LightCyan|LightCoral|LightBlue|LemonChiffon|LawnGreen|LavenderBlush|Lavender|Khaki|Ivory|Indigo|IndianRed|HotPink|HoneyDew|Grey|GreenYellow|Green|Gray|GoldenRod|Gold|GhostWhite|Gainsboro|Fuchsia|ForestGreen|FloralWhite|FireBrick|DodgerBlue|DimGrey|DimGray|DeepSkyBlue|DeepPink|Darkorange|DarkViolet|DarkTurquoise|DarkSlateGrey|DarkSlateGray|DarkSlateBlue|DarkSeaGreen|DarkSalmon|DarkRed|DarkOrchid|DarkOliveGreen|DarkMagenta|DarkKhaki|DarkGrey|DarkGreen|DarkGray|DarkGoldenRod|DarkCyan|DarkBlue|Cyan|Crimson|Cornsilk|CornflowerBlue|Coral|Chocolate|Chartreuse|CadetBlue|BurlyWood|Brown|BlueViolet|Blue|BlanchedAlmond|Black|Bisque|Beige|Azure|Aquamarine|Aqua|AntiqueWhite|AliceBlue)\b/
+ , _style: "color: green;"
+ }
+ }
+};
+
+
diff --git a/docs/assets/js/jquery/hashgrid.js b/docs/assets/js/jquery/hashgrid.js
new file mode 100755
index 000000000..db7af7989
--- /dev/null
+++ b/docs/assets/js/jquery/hashgrid.js
@@ -0,0 +1,340 @@
+/**
+ * hashgrid (jQuery version)
+ * http://github.com/dotjay/hashgrid
+ * Version 5, 3 Nov 2010
+ * Written by Jon Gibbins, dotjay.co.uk, accessibility.co.uk
+ * Contibutors:
+ * Sean Coates, seancoates.com
+ * Phil Dokas, jetless.org
+ *
+ * // Using a basic #grid setup
+ * var grid = new hashgrid();
+ *
+ * // Using #grid with a custom id (e.g. #mygrid)
+ * var grid = new hashgrid("mygrid");
+ *
+ * // Using #grid with additional options
+ * var grid = new hashgrid({
+ * id: 'mygrid', // id for the grid container
+ * modifierKey: 'alt', // optional 'ctrl', 'alt' or 'shift'
+ * showGridKey: 's', // key to show the grid
+ * holdGridKey: 'enter', // key to hold the grid in place
+ * foregroundKey: 'f', // key to toggle foreground/background
+ * jumpGridsKey: 'd', // key to cycle through the grid classes
+ * numberOfGrids: 2, // number of grid classes used
+ * classPrefix: 'class', // prefix for the grid classes
+ * cookiePrefix: 'mygrid' // prefix for the cookie name
+ * });
+ */
+if (typeof jQuery == "undefined") {
+ alert("Hashgrid: jQuery not loaded. Make sure it's linked to your pages.");
+}
+
+
+/**
+ * hashgrid overlay
+ */
+var hashgrid = function(set) {
+
+ var options = {
+ id: 'grid', // id for the grid container
+ modifierKey: null, // optional 'ctrl', 'alt' or 'shift'
+ showGridKey: 'g', // key to show the grid
+ holdGridKey: 'h', // key to hold the grid in place
+ foregroundKey: 'f', // key to toggle foreground/background
+ jumpGridsKey: 'j', // key to cycle through the grid classes
+ numberOfGrids: 1, // number of grid classes used
+ classPrefix: 'grid-', // prefix for the grid classes
+ cookiePrefix: 'hashgrid'// prefix for the cookie name
+ };
+ var overlayOn = false,
+ sticky = false,
+ overlayZState = 'B',
+ overlayZBackground = -1,
+ overlayZForeground = 9999,
+ classNumber = 1;
+
+ // Apply options
+ if (typeof set == 'object') {
+ var k;
+ for (k in set) options[k] = set[k];
+ }
+ else if (typeof set == 'string') {
+ options.id = set;
+ }
+
+ // Remove any conflicting overlay
+ if ($('#' + options.id).length > 0) {
+ $('#' + options.id).remove();
+ }
+
+ // Create overlay, hidden before adding to DOM
+ var overlayEl = $('<div></div>');
+ overlayEl
+ .attr('id', options.id)
+ .css({
+ display: 'none',
+ 'pointer-events': 'none'
+ });
+ $("body").prepend(overlayEl);
+ var overlay = $('#' + options.id);
+
+ // Unless a custom z-index is set, ensure the overlay will be behind everything
+ if (overlay.css('z-index') == 'auto') overlay.css('z-index', overlayZBackground);
+
+ // Override the default overlay height with the actual page height
+ var pageHeight = parseFloat($(document).height());
+ overlay.height(pageHeight);
+
+ // Add the first grid line so that we can measure it
+ overlay.append('<div id="' + options.id + '-horiz" class="horiz first-line">');
+
+ // Position off-screen and display to calculate height
+ var top = overlay.css("top");
+ overlay.css({
+ top: "-999px",
+ display: "block"
+ });
+
+ // Calculate the number of grid lines needed
+ var line = $('#' + options.id + '-horiz'),
+ lineHeight = line.outerHeight();
+
+ // Hide and reset top
+ overlay.css({
+ display: "none",
+ top: top
+ });
+
+ // Break on zero line height
+ if (lineHeight <= 0) return true;
+
+ // Add the remaining grid lines
+ var i, numGridLines = Math.floor(pageHeight / lineHeight);
+ for (i = numGridLines - 1; i >= 1; i--) {
+ overlay.append('<div class="horiz"></div>');
+ }
+
+ // vertical grid
+ overlay.append($('<div class="vert-container"></div>'));
+ var overlayVert = overlay.children('.vert-container');
+ var gridWidth = overlay.width();
+ overlayVert.css({width: gridWidth, position: 'absolute', top: 0});
+ overlayVert.append('<div class="vert first-line">&nbsp;</div>');
+
+ // 30 is an arbitrarily large number...
+ // can't calculate the margin width properly
+ for (i = 0; i < 30; i++) {
+ overlayVert.append('<div class="vert">&nbsp;</div>');
+ }
+
+ overlayVert.children()
+ .height(pageHeight)
+ .css({display: 'inline-block'});
+
+ // Check for saved state
+ var overlayCookie = readCookie(options.cookiePrefix + options.id);
+ if (typeof overlayCookie == 'string') {
+ var state = overlayCookie.split(',');
+ state[2] = Number(state[2]);
+ if ((typeof state[2] == 'number') && !isNaN(state[2])) {
+ classNumber = state[2].toFixed(0);
+ overlay.addClass(options.classPrefix + classNumber);
+ }
+ if (state[1] == 'F') {
+ overlayZState = 'F';
+ overlay.css('z-index', overlayZForeground);
+ }
+ if (state[0] == '1') {
+ overlayOn = true;
+ sticky = true;
+ showOverlay();
+ }
+ }
+ else {
+ overlay.addClass(options.classPrefix + classNumber);
+ }
+
+ // Keyboard controls
+ $(document).bind('keydown', keydownHandler);
+ $(document).bind('keyup', keyupHandler);
+
+ /**
+ * Helpers
+ */
+
+ function getModifier(e) {
+ if (options.modifierKey == null) return true; // Bypass by default
+ var m = true;
+ switch(options.modifierKey) {
+ case 'ctrl':
+ m = (e.ctrlKey ? e.ctrlKey : false);
+ break;
+
+ case 'alt':
+ m = (e.altKey ? e.altKey : false);
+ break;
+
+ case 'shift':
+ m = (e.shiftKey ? e.shiftKey : false);
+ break;
+ }
+ return m;
+ }
+
+ function getKey(e) {
+ var k = false, c = (e.keyCode ? e.keyCode : e.which);
+ // Handle keywords
+ if (c == 13) k = 'enter';
+ // Handle letters
+ else k = String.fromCharCode(c).toLowerCase();
+ return k;
+ }
+
+ function saveState() {
+ createCookie(options.cookiePrefix + options.id, (sticky ? '1' : '0') + ',' + overlayZState + ',' + classNumber, 1);
+ }
+
+ function showOverlay() {
+ overlay.show();
+ overlayVert.css({width: overlay.width()});
+ // hide any vertical blocks that aren't at the top of the viewport
+ overlayVert.children('.vert').each(function () {
+ $(this).css('display','inline-block');
+ if ($(this).offset().top > 0) {
+ $(this).hide();
+ }
+ });
+ }
+
+ /**
+ * Event handlers
+ */
+
+ function keydownHandler(e) {
+ var source = e.target.tagName.toLowerCase();
+ if ((source == 'input') || (source == 'textarea') || (source == 'select')) return true;
+ var m = getModifier(e);
+ if (!m) return true;
+ var k = getKey(e);
+ if (!k) return true;
+ switch(k) {
+ case options.showGridKey:
+ if (!overlayOn) {
+ showOverlay();
+ overlayOn = true;
+ }
+ else if (sticky) {
+ overlay.hide();
+ overlayOn = false;
+ sticky = false;
+ saveState();
+ }
+ break;
+ case options.holdGridKey:
+ if (overlayOn && !sticky) {
+ // Turn sticky overlay on
+ sticky = true;
+ saveState();
+ }
+ break;
+ case options.foregroundKey:
+ if (overlayOn) {
+ // Toggle sticky overlay z-index
+ if (overlay.css('z-index') == overlayZForeground) {
+ overlay.css('z-index', overlayZBackground);
+ overlayZState = 'B';
+ }
+ else {
+ overlay.css('z-index', overlayZForeground);
+ overlayZState = 'F';
+ }
+ saveState();
+ }
+ break;
+ case options.jumpGridsKey:
+ if (overlayOn && (options.numberOfGrids > 1)) {
+ // Cycle through the available grids
+ overlay.removeClass(options.classPrefix + classNumber);
+ classNumber++;
+ if (classNumber > options.numberOfGrids) classNumber = 1;
+ overlay.addClass(options.classPrefix + classNumber);
+ showOverlay();
+ if (/webkit/.test( navigator.userAgent.toLowerCase() )) {
+ forceRepaint();
+ }
+ saveState();
+ }
+ break;
+ }
+ }
+
+ function keyupHandler(e) {
+ var m = getModifier(e);
+ if (!m) return true;
+ var k = getKey(e);
+ if (!k) return true;
+ if ((k == options.showGridKey) && !sticky) {
+ overlay.hide();
+ overlayOn = false;
+ }
+ }
+
+ /**
+ * Cookie functions
+ *
+ * By Peter-Paul Koch:
+ * http://www.quirksmode.org/js/cookies.html
+ */
+ function createCookie(name,value,days) {
+ if (days) {
+ var date = new Date();
+ date.setTime(date.getTime()+(days*24*60*60*1000));
+ var expires = "; expires="+date.toGMTString();
+ }
+ else var expires = "";
+ document.cookie = name+"="+value+expires+"; path=/";
+ }
+
+ function readCookie(name) {
+ var nameEQ = name + "=";
+ var ca = document.cookie.split(';');
+ for(var i=0;i < ca.length;i++) {
+ var c = ca[i];
+ while (c.charAt(0)==' ') c = c.substring(1,c.length);
+ if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
+ }
+ return null;
+ }
+
+ function eraseCookie(name) {
+ createCookie(name,"",-1);
+ }
+
+ /**
+ * Forces a repaint (because WebKit has issues)
+ * http://www.sitepoint.com/forums/showthread.php?p=4538763
+ * http://www.phpied.com/the-new-game-show-will-it-reflow/
+ */
+ function forceRepaint() {
+ var ss = document.styleSheets[0];
+ try {
+ ss.addRule('.xxxxxx', 'position: relative');
+ ss.removeRule(ss.rules.length - 1);
+ } catch(e){}
+ }
+
+}
+
+
+/**
+ * You can call hashgrid from your own code, but it's loaded here as
+ * an example for your convenience.
+ */
+$(document).ready(function() {
+
+ var grid = new hashgrid({
+ numberOfGrids: 2
+ });
+
+});
diff --git a/docs/assets/js/jquery/jquery.tipsy.js b/docs/assets/js/jquery/jquery.tipsy.js
new file mode 100644
index 000000000..b0a644a01
--- /dev/null
+++ b/docs/assets/js/jquery/jquery.tipsy.js
@@ -0,0 +1,104 @@
+(function($) {
+ $.fn.tipsy = function(options) {
+
+ options = $.extend({}, $.fn.tipsy.defaults, options);
+
+ return this.each(function() {
+
+ var opts = $.fn.tipsy.elementOptions(this, options);
+
+ $(this).hover(function() {
+
+ $.data(this, 'cancel.tipsy', true);
+
+ var tip = $.data(this, 'active.tipsy');
+ if (!tip) {
+ tip = $('<div class="tipsy"><div class="tipsy-inner"/></div>');
+ tip.css({position: 'absolute', zIndex: 100000});
+ $.data(this, 'active.tipsy', tip);
+ }
+
+ if ($(this).attr('title') || typeof($(this).attr('original-title')) != 'string') {
+ $(this).attr('original-title', $(this).attr('title') || '').removeAttr('title');
+ }
+
+ var title;
+ if (typeof opts.title == 'string') {
+ title = $(this).attr(opts.title == 'title' ? 'original-title' : opts.title);
+ } else if (typeof opts.title == 'function') {
+ title = opts.title.call(this);
+ }
+
+ tip.find('.tipsy-inner')[opts.html ? 'html' : 'text'](title || opts.fallback);
+
+ var pos = $.extend({}, $(this).offset(), {width: this.offsetWidth, height: this.offsetHeight});
+ tip.get(0).className = 'tipsy'; // reset classname in case of dynamic gravity
+ tip.remove().css({top: 0, left: 0, visibility: 'hidden', display: 'block'}).appendTo(document.body);
+ var actualWidth = tip[0].offsetWidth, actualHeight = tip[0].offsetHeight;
+ var gravity = (typeof opts.gravity == 'function') ? opts.gravity.call(this) : opts.gravity;
+
+ switch (gravity.charAt(0)) {
+ case 'n':
+ tip.css({top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-north');
+ break;
+ case 's':
+ tip.css({top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2}).addClass('tipsy-south');
+ break;
+ case 'e':
+ tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth}).addClass('tipsy-east');
+ break;
+ case 'w':
+ tip.css({top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width}).addClass('tipsy-west');
+ break;
+ }
+
+ if (opts.fade) {
+ tip.css({opacity: 0, display: 'block', visibility: 'visible'}).animate({opacity: 0.8});
+ } else {
+ tip.css({visibility: 'visible'});
+ }
+
+ }, function() {
+ $.data(this, 'cancel.tipsy', false);
+ var self = this;
+ setTimeout(function() {
+ if ($.data(this, 'cancel.tipsy')) return;
+ var tip = $.data(self, 'active.tipsy');
+ if (opts.fade) {
+ tip.stop().fadeOut(function() { $(this).remove(); });
+ } else {
+ tip.remove();
+ }
+ }, 100);
+
+ });
+
+ });
+
+ };
+
+ // Overwrite this method to provide options on a per-element basis.
+ // For example, you could store the gravity in a 'tipsy-gravity' attribute:
+ // return $.extend({}, options, {gravity: $(ele).attr('tipsy-gravity') || 'n' });
+ // (remember - do not modify 'options' in place!)
+ $.fn.tipsy.elementOptions = function(ele, options) {
+ return $.metadata ? $.extend({}, options, $(ele).metadata()) : options;
+ };
+
+ $.fn.tipsy.defaults = {
+ fade: false,
+ fallback: '',
+ gravity: 'n',
+ html: false,
+ title: 'title'
+ };
+
+ $.fn.tipsy.autoNS = function() {
+ return $(this).offset().top > ($(document).scrollTop() + $(window).height() / 2) ? 's' : 'n';
+ };
+
+ $.fn.tipsy.autoWE = function() {
+ return $(this).offset().left > ($(document).scrollLeft() + $(window).width() / 2) ? 'e' : 'w';
+ };
+
+})(jQuery);
diff --git a/docs/assets/js/less-1.0.41.min.js b/docs/assets/js/less-1.0.41.min.js
new file mode 100644
index 000000000..005eb9940
--- /dev/null
+++ b/docs/assets/js/less-1.0.41.min.js
@@ -0,0 +1,69 @@
+//
+// LESS - Leaner CSS v1.0.41
+// http://lesscss.org
+//
+// Copyright (c) 2010, Alexis Sellier
+// Licensed under the Apache 2.0 License.
+//
+(function(z){function s(d){return z.less[d.split("/")[1]]}function U(){for(var d=document.getElementsByTagName("style"),b=0;b<d.length;b++)if(d[b].type.match(V))(new o.Parser).parse(d[b].innerHTML||"",function(a,g){d[b].type="text/css";d[b].innerHTML=g.toCSS()})}function W(d,b){for(var a=0;a<o.sheets.length;a++)X(o.sheets[a],d,b,o.sheets.length-(a+1))}function X(d,b,a,g){var e=z.location.href.replace(/[#?].*$/,""),h=d.href.replace(/\?.*$/,""),i=B&&B.getItem(h),k=B&&B.getItem(h+":timestamp"),n={css:i,
+timestamp:k};/^(https?|file):/.test(h)||(h=e.slice(0,e.lastIndexOf("/")+1)+h);Z(d.href,d.type,function(r,p){if(!a&&n&&p&&(new Date(p)).valueOf()===(new Date(n.timestamp)).valueOf()){N(n.css,d);b(null,d,{local:true,remaining:g})}else try{(new o.Parser({optimization:o.optimization,paths:[h.replace(/[\w\.-]+$/,"")],mime:d.type})).parse(r,function(K,O){if(K)return Q(K,h);try{b(O,d,{local:false,lastModified:p,remaining:g});var F=document.getElementById("less-error-message:"+R(h));F&&F.parentNode.removeChild(F)}catch(f){Q(f,
+h)}})}catch(t){Q(t,h)}},function(r,p){throw Error("Couldn't load "+p+" ("+r+")");})}function R(d){return d.replace(/^[a-z]+:\/\/?[^\/]+/,"").replace(/^\//,"").replace(/\?.*$/,"").replace(/\.[^\.\/]+$/,"").replace(/[^\.\w-]+/g,"-").replace(/\./g,":")}function N(d,b,a){var g,e=b.href?b.href.replace(/\?.*$/,""):"",h="less:"+(b.title||R(e));if((g=document.getElementById(h))===null){g=document.createElement("style");g.type="text/css";g.media=b.media||"screen";g.id=h;document.getElementsByTagName("head")[0].appendChild(g)}if(g.styleSheet)try{g.styleSheet.cssText=
+d}catch(i){throw Error("Couldn't reassign styleSheet.cssText.");}else(function(k){if(g.childNodes.length>0)g.firstChild.nodeValue!==k.nodeValue&&g.replaceChild(k,g.firstChild);else g.appendChild(k)})(document.createTextNode(d));if(a&&B){H("saving "+e+" to cache.");B.setItem(e,d);B.setItem(e+":timestamp",a)}}function Z(d,b,a,g){function e(k,n,r){if(k.status>=200&&k.status<300)n(k.responseText,k.getResponseHeader("Last-Modified"));else typeof r==="function"&&r(k.status,d)}var h=$(),i=P?false:o.async;
+typeof h.overrideMimeType==="function"&&h.overrideMimeType("text/css");h.open("GET",d,i);h.setRequestHeader("Accept",b||"text/x-less, text/css; q=0.9, */*; q=0.5");h.send(null);if(P)h.status===0?a(h.responseText):g(h.status,d);else if(i)h.onreadystatechange=function(){h.readyState==4&&e(h,a,g)};else e(h,a,g)}function $(){if(z.XMLHttpRequest)return new XMLHttpRequest;else try{return new ActiveXObject("MSXML2.XMLHTTP.3.0")}catch(d){H("browser doesn't support AJAX.");return null}}function H(d){o.env==
+"development"&&typeof console!=="undefined"&&console.log("less: "+d)}function Q(d,b){var a="less-error-message:"+R(b),g=document.createElement("div"),e,h;g.id=a;g.className="less-error-message";h="<h3>"+(d.message||"There is an error in your .less file")+'</h3><p><a href="'+b+'">'+b+"</a> ";if(d.extract)h+="on line "+d.line+", column "+(d.column+1)+":</p>"+'<ul>\n<li><label>[-1]</label><pre class="ctx">{0}</pre></li>\n<li><label>[0]</label><pre>{current}</pre></li>\n<li><label>[1]</label><pre class="ctx">{2}</pre></li>\n</ul>'.replace(/\[(-?\d)\]/g,
+function(i,k){return parseInt(d.line)+parseInt(k)||""}).replace(/\{(\d)\}/g,function(i,k){return d.extract[parseInt(k)]||""}).replace(/\{current\}/,d.extract[1].slice(0,d.column)+'<span class="error">'+d.extract[1].slice(d.column)+"</span>");g.innerHTML=h;N(".less-error-message ul, .less-error-message li {\nlist-style-type: none;\nmargin-right: 15px;\npadding: 4px 0;\nmargin: 0;\n}\n.less-error-message label {\nfont-size: 12px;\nmargin-right: 15px;\npadding: 4px 0;\ncolor: #cc7777;\n}\n.less-error-message pre {\ncolor: #ee4444;\npadding: 4px 0;\nmargin: 0;\ndisplay: inline-block;\n}\n.less-error-message pre.ctx {\ncolor: #dd4444;\n}\n.less-error-message h3 {\nfont-size: 20px;\nfont-weight: bold;\npadding: 15px 0 5px 0;\nmargin: 0;\n}\n.less-error-message a {\ncolor: #10a\n}\n.less-error-message .error {\ncolor: red;\nfont-weight: bold;\npadding-bottom: 2px;\nborder-bottom: 1px dashed red;\n}",
+{title:"error-message"});g.style.cssText="font-family: Arial, sans-serif;border: 1px solid #e00;background-color: #eee;border-radius: 5px;-webkit-border-radius: 5px;-moz-border-radius: 5px;color: #e00;padding: 15px;margin-bottom: 15px";if(o.env=="development")e=setInterval(function(){if(document.body){document.getElementById(a)?document.body.replaceChild(g,document.getElementById(a)):document.body.insertBefore(g,document.body.firstChild);clearInterval(e)}},10)}if(!Array.isArray)Array.isArray=function(d){return Object.prototype.toString.call(d)===
+"[object Array]"||d instanceof Array};if(!Array.prototype.forEach)Array.prototype.forEach=function(d,b){for(var a=this.length>>>0,g=0;g<a;g++)g in this&&d.call(b,this[g],g,this)};if(!Array.prototype.map)Array.prototype.map=function(d,b){for(var a=this.length>>>0,g=Array(a),e=0;e<a;e++)if(e in this)g[e]=d.call(b,this[e],e,this);return g};if(!Array.prototype.filter)Array.prototype.filter=function(d,b){for(var a=[],g=0;g<this.length;g++)d.call(b,this[g])&&a.push(this[g]);return a};if(!Array.prototype.reduce)Array.prototype.reduce=
+function(d){var b=this.length>>>0,a=0;if(b===0&&arguments.length===1)throw new TypeError;if(arguments.length>=2)var g=arguments[1];else{do{if(a in this){g=this[a++];break}if(++a>=b)throw new TypeError;}while(1)}for(;a<b;a++)if(a in this)g=d.call(null,g,this[a],a,this);return g};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(d,b){var a=this.length,g=b||0;if(!a)return-1;if(g>=a)return-1;if(g<0)g+=a;for(;g<a;g++)if(Object.prototype.hasOwnProperty.call(this,g))if(d===this[g])return g;return-1};
+if(!Object.keys)Object.keys=function(d){var b=[],a;for(a in d)Object.prototype.hasOwnProperty.call(d,a)&&b.push(a);return b};if(!String.prototype.trim)String.prototype.trim=function(){return String(this).replace(/^\s\s*/,"").replace(/\s\s*$/,"")};var o,m;if(typeof z==="undefined"){o=exports;m=s("less/tree")}else{if(typeof z.less==="undefined")z.less={};o=z.less;m=z.less.tree={}}o.Parser=function(d){function b(){if(h>t){p[i]=p[i].slice(h-t);t=h}}function a(f){var j,l,q;if(f instanceof Function)return f.call(K.parsers);
+else if(typeof f==="string"){f=e.charAt(h)===f?f:null;j=1;b()}else{b();if(f=f.exec(p[i]))j=f[0].length;else return null}if(f){mem=h+=j;for(q=h+p[i].length-j;h<q;){l=e.charCodeAt(h);if(!(l===32||l===10||l===9))break;h++}p[i]=p[i].slice(j+(h-mem));t=h;p[i].length===0&&i<p.length-1&&i++;return typeof f==="string"?f:f.length===1?f[0]:f}}function g(f){return typeof f==="string"?e.charAt(h)===f:f.test(p[i])?true:false}var e,h,i,k,n,r,p,t,K,O=function(){},F=this.imports={paths:d&&d.paths||[],queue:[],files:{},
+mime:d&&d.mime,push:function(f,j){var l=this;this.queue.push(f);o.Parser.importer(f,this.paths,function(q){l.queue.splice(l.queue.indexOf(f),1);l.files[f]=q;j(q);l.queue.length===0&&O()},d)}};this.env=d=d||{};this.optimization="optimization"in this.env?this.env.optimization:1;this.env.filename=this.env.filename||null;return K={imports:F,parse:function(f,j){var l,q,I,S=null;h=i=t=r=0;p=[];e=f.replace(/\r\n/g,"\n");p=function(L){for(var D=0,E=/[^"'`\{\}\/]+/g,G=/\/\*(?:[^*]|\*+[^\/*])*\*+\/|\/\/.*/g,
+A=0,w,x=L[0],y,u=0,v;u<e.length;u++){E.lastIndex=u;if(w=E.exec(e))if(w.index===u){u+=w[0].length;x.push(w[0])}v=e.charAt(u);G.lastIndex=u;if(!y&&v==="/"){w=e.charAt(u+1);if(w==="/"||w==="*")if(w=G.exec(e))if(w.index===u){u+=w[0].length;x.push(w[0]);v=e.charAt(u)}}if(v==="{"&&!y){A++;x.push(v)}else if(v==="}"&&!y){A--;x.push(v);L[++D]=x=[]}else{if(v==='"'||v==="'"||v==="`")y=y?y===v?false:y:v;x.push(v)}}if(A>0)throw{type:"Syntax",message:"Missing closing `}`",filename:d.filename};return L.map(function(C){return C.join("")})}([[]]);
+l=new m.Ruleset([],a(this.parsers.primary));l.root=true;l.toCSS=function(L){var D,E;return function(G,A){function w(v){return v?(e.slice(0,v).match(/\n/g)||"").length:null}var x=[];G=G||{};if(typeof A==="object"&&!Array.isArray(A)){A=Object.keys(A).map(function(v){var C=A[v];if(!(C instanceof m.Value)){C instanceof m.Expression||(C=new m.Expression([C]));C=new m.Value([C])}return new m.Rule("@"+v,C,false,0)});x=[new m.Ruleset(null,A)]}try{var y=L.call(this,{frames:x}).toCSS([],{compress:G.compress||
+false})}catch(u){E=e.split("\n");D=w(u.index);x=u.index;for(y=-1;x>=0&&e.charAt(x)!=="\n";x--)y++;throw{type:u.type,message:u.message,filename:d.filename,index:u.index,line:typeof D==="number"?D+1:null,callLine:u.call&&w(u.call)+1,callExtract:E[w(u.call)],stack:u.stack,column:y,extract:[E[D-1],E[D],E[D+1]]};}return G.compress?y.replace(/(\s)+/g,"$1"):y}}(l.eval);if(h<e.length-1){h=r;I=e.split("\n");q=(e.slice(0,h).match(/\n/g)||"").length+1;for(var T=h,Y=-1;T>=0&&e.charAt(T)!=="\n";T--)Y++;S={name:"ParseError",
+message:"Syntax Error on line "+q,filename:d.filename,line:q,column:Y,extract:[I[q-2],I[q-1],I[q]]}}if(this.imports.queue.length>0)O=function(){j(S,l)};else j(S,l)},parsers:{primary:function(){for(var f,j=[];(f=a(this.mixin.definition)||a(this.rule)||a(this.ruleset)||a(this.mixin.call)||a(this.comment)||a(this.directive))||a(/^[\s\n]+/);)f&&j.push(f);return j},comment:function(){var f;if(e.charAt(h)==="/")if(e.charAt(h+1)==="/")return new m.Comment(a(/^\/\/.*/),true);else if(f=a(/^\/\*(?:[^*]|\*+[^\/*])*\*+\/\n?/))return new m.Comment(f)},
+entities:{quoted:function(){var f;if(!(e.charAt(h)!=='"'&&e.charAt(h)!=="'"))if(f=a(/^"((?:[^"\\\r\n]|\\.)*)"|'((?:[^'\\\r\n]|\\.)*)'/))return new m.Quoted(f[0],f[1]||f[2])},keyword:function(){var f;if(f=a(/^[A-Za-z-]+/))return new m.Keyword(f)},call:function(){var f,j;if(f=/^([\w-]+|%)\(/.exec(p[i])){f=f[1].toLowerCase();if(f==="url")return null;else h+=f.length+1;if(f==="alpha")return a(this.alpha);j=a(this.entities.arguments);if(a(")"))if(f)return new m.Call(f,j)}},arguments:function(){for(var f=
+[],j;j=a(this.expression);){f.push(j);if(!a(","))break}return f},literal:function(){return a(this.entities.dimension)||a(this.entities.color)||a(this.entities.quoted)},url:function(){var f;if(!(e.charAt(h)!=="u"||!a(/^url\(/))){f=a(this.entities.quoted)||a(this.entities.variable)||a(this.entities.dataURI)||a(/^[-\w%@$\/.&=:;#+?]+/)||"";if(!a(")"))throw Error("missing closing ) for url()");return new m.URL(f.value||f.data||f instanceof m.Variable?f:new m.Anonymous(f),F.paths)}},dataURI:function(){var f;
+if(a(/^data:/)){f={};f.mime=a(/^[^\/]+\/[^,;)]+/)||"";f.charset=a(/^;\s*charset=[^,;)]+/)||"";f.base64=a(/^;\s*base64/)||"";f.data=a(/^,\s*[^)]+/);if(f.data)return f}},variable:function(){var f,j=h;if(e.charAt(h)==="@"&&(f=a(/^@[\w-]+/)))return new m.Variable(f,j)},color:function(){var f;if(e.charAt(h)==="#"&&(f=a(/^#([a-fA-F0-9]{6}|[a-fA-F0-9]{3})/)))return new m.Color(f[1])},dimension:function(){var f;f=e.charCodeAt(h);if(!(f>57||f<45||f===47))if(f=a(/^(-?\d*\.?\d+)(px|%|em|pc|ex|in|deg|s|ms|pt|cm|mm|rad|grad|turn)?/))return new m.Dimension(f[1],
+f[2])},javascript:function(){var f;if(e.charAt(h)==="`")if(f=a(/^`([^`]*)`/))return new m.JavaScript(f[1],h)}},variable:function(){var f;if(e.charAt(h)==="@"&&(f=a(/^(@[\w-]+)\s*:/)))return f[1]},shorthand:function(){var f,j;if(g(/^[@\w.%-]+\/[@\w.-]+/))if((f=a(this.entity))&&a("/")&&(j=a(this.entity)))return new m.Shorthand(f,j)},mixin:{call:function(){var f=[],j,l,q,I=h;j=e.charAt(h);if(!(j!=="."&&j!=="#")){for(;j=a(/^[#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/);){f.push(new m.Element(l,
+j));l=a(">")}a("(")&&(q=a(this.entities.arguments))&&a(")");if(f.length>0&&(a(";")||g("}")))return new m.mixin.Call(f,q,I)}},definition:function(){var f,j=[],l,q;if(!(e.charAt(h)!=="."&&e.charAt(h)!=="#"||g(/^[^{]*(;|})/)))if(f=a(/^([#.](?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+)\s*\(/)){for(f=f[1];l=a(this.entities.variable)||a(this.entities.literal)||a(this.entities.keyword);){if(l instanceof m.Variable)if(a(":"))if(q=a(this.expression))j.push({name:l.name,value:q});else throw Error("Expected value");
+else j.push({name:l.name});else j.push({value:l});if(!a(","))break}if(!a(")"))throw Error("Expected )");if(l=a(this.block))return new m.mixin.Definition(f,j,l)}}},entity:function(){return a(this.entities.literal)||a(this.entities.variable)||a(this.entities.url)||a(this.entities.call)||a(this.entities.keyword)||a(this.entities.javascript)},end:function(){return a(";")||g("}")},alpha:function(){var f;if(a(/^opacity=/i))if(f=a(/^\d+/)||a(this.entities.variable)){if(!a(")"))throw Error("missing closing ) for alpha()");
+return new m.Alpha(f)}},element:function(){var f;c=a(this.combinator);if(f=a(/^(?:[.#]?|:*)(?:[\w-]|\\(?:[a-fA-F0-9]{1,6} ?|[^a-fA-F0-9]))+/)||a("*")||a(this.attribute)||a(/^\([^)@]+\)/))return new m.Element(c,f)},combinator:function(){var f=e.charAt(h);if(f===">"||f==="&"||f==="+"||f==="~"){for(h++;e.charAt(h)===" ";)h++;return new m.Combinator(f)}else if(f===":"&&e.charAt(h+1)===":"){for(h+=2;e.charAt(h)===" ";)h++;return new m.Combinator("::")}else return e.charAt(h-1)===" "?new m.Combinator(" "):
+new m.Combinator(null)},selector:function(){for(var f,j=[],l;f=a(this.element);){l=e.charAt(h);j.push(f);if(l==="{"||l==="}"||l===";"||l===",")break}if(j.length>0)return new m.Selector(j)},tag:function(){return a(/^[a-zA-Z][a-zA-Z-]*[0-9]?/)||a("*")},attribute:function(){var f="",j,l,q;if(a("[")){if(j=a(/^[a-zA-Z-]+/)||a(this.entities.quoted))f=(q=a(/^[|~*$^]?=/))&&(l=a(this.entities.quoted)||a(/^[\w-]+/))?[j,q,l.toCSS?l.toCSS():l].join(""):j;if(a("]"))if(f)return"["+f+"]"}},block:function(){var f;
+if(a("{")&&(f=a(this.primary))&&a("}"))return f},ruleset:function(){var f=[],j,l;k=p[i];t=n=h;if(j=/^([.#: \w-]+)[\s\n]*\{/.exec(p[i])){h+=j[0].length-1;f=[new m.Selector([new m.Element(null,j[1])])]}else{for(;j=a(this.selector);){f.push(j);if(!a(","))break}j&&a(this.comment)}if(f.length>0&&(l=a(this.block)))return new m.Ruleset(f,l);else{r=h;p[i]=k;t=h=n}},rule:function(){var f,j;f=e.charAt(h);var l;k=p[i];t=n=h;if(!(f==="."||f==="#"||f==="&"))if(f=a(this.variable)||a(this.property)){if(f.charAt(0)!=
+"@"&&(match=/^([^@+\/'"*`(;{}-]*);/.exec(p[i]))){h+=match[0].length-1;j=new m.Anonymous(match[1])}else j=f==="font"?a(this.font):a(this.value);l=a(this.important);if(j&&a(this.end))return new m.Rule(f,j,l,n);else{r=h;p[i]=k;t=h=n}}},"import":function(){var f;if(a(/^@import\s+/)&&(f=a(this.entities.quoted)||a(this.entities.url))&&a(";"))return new m.Import(f,F)},directive:function(){var f,j,l;if(e.charAt(h)==="@")if(j=a(this["import"]))return j;else if(f=a(/^@media|@page/)){l=(a(/^[^{]+/)||"").trim();
+if(j=a(this.block))return new m.Directive(f+" "+l,j)}else if(f=a(/^@[-a-z]+/))if(f==="@font-face"){if(j=a(this.block))return new m.Directive(f,j)}else if((j=a(this.entity))&&a(";"))return new m.Directive(f,j)},font:function(){for(var f=[],j=[],l;l=a(this.shorthand)||a(this.entity);)j.push(l);f.push(new m.Expression(j));if(a(","))for(;l=a(this.expression);){f.push(l);if(!a(","))break}return new m.Value(f)},value:function(){for(var f,j=[];f=a(this.expression);){j.push(f);if(!a(","))break}if(j.length>
+0)return new m.Value(j)},important:function(){if(e.charAt(h)==="!")return a(/^! *important/)},sub:function(){var f;if(a("(")&&(f=a(this.expression))&&a(")"))return f},multiplication:function(){var f,j,l,q;if(f=a(this.operand)){for(;(l=a("/")||a("*"))&&(j=a(this.operand));)q=new m.Operation(l,[q||f,j]);return q||f}},addition:function(){var f,j,l,q;if(f=a(this.multiplication)){for(;(l=a(/^[-+]\s+/)||e.charAt(h-1)!=" "&&(a("+")||a("-")))&&(j=a(this.multiplication));)q=new m.Operation(l,[q||f,j]);return q||
+f}},operand:function(){return a(this.sub)||a(this.entities.dimension)||a(this.entities.color)||a(this.entities.variable)||a(this.entities.call)},expression:function(){for(var f,j=[];f=a(this.addition)||a(this.entity);)j.push(f);if(j.length>0)return new m.Expression(j)},property:function(){var f;if(f=a(/^(\*?-?[-a-z_0-9]+)\s*:/))return f[1]}}}};if(typeof z!=="undefined")o.Parser.importer=function(d,b,a,g){if(d.charAt(0)!=="/"&&b.length>0)d=b[0]+d;X({href:d,title:d,type:g.mime},a,true)};(function(d){function b(e){return d.functions.hsla(e.h,
+e.s,e.l,e.a)}function a(e){if(e instanceof d.Dimension)return parseFloat(e.unit=="%"?e.value/100:e.value);else if(typeof e==="number")return e;else throw{error:"RuntimeError",message:"color functions take numbers as parameters"};}function g(e){return Math.min(1,Math.max(0,e))}d.functions={rgb:function(e,h,i){return this.rgba(e,h,i,1)},rgba:function(e,h,i,k){e=[e,h,i].map(function(n){return a(n)});k=a(k);return new d.Color(e,k)},hsl:function(e,h,i){return this.hsla(e,h,i,1)},hsla:function(e,h,i,k){function n(t){t=
+t<0?t+1:t>1?t-1:t;return t*6<1?p+(r-p)*t*6:t*2<1?r:t*3<2?p+(r-p)*(2/3-t)*6:p}e=a(e)%360/360;h=a(h);i=a(i);k=a(k);var r=i<=0.5?i*(h+1):i+h-i*h,p=i*2-r;return this.rgba(n(e+1/3)*255,n(e)*255,n(e-1/3)*255,k)},hue:function(e){return new d.Dimension(Math.round(e.toHSL().h))},saturation:function(e){return new d.Dimension(Math.round(e.toHSL().s*100),"%")},lightness:function(e){return new d.Dimension(Math.round(e.toHSL().l*100),"%")},alpha:function(e){return new d.Dimension(e.toHSL().a)},saturate:function(e,
+h){var i=e.toHSL();i.s+=h.value/100;i.s=g(i.s);return b(i)},desaturate:function(e,h){var i=e.toHSL();i.s-=h.value/100;i.s=g(i.s);return b(i)},lighten:function(e,h){var i=e.toHSL();i.l+=h.value/100;i.l=g(i.l);return b(i)},darken:function(e,h){var i=e.toHSL();i.l-=h.value/100;i.l=g(i.l);return b(i)},fadein:function(e,h){var i=e.toHSL();i.a+=h.value/100;i.a=g(i.a);return b(i)},fadeout:function(e,h){var i=e.toHSL();i.a-=h.value/100;i.a=g(i.a);return b(i)},spin:function(e,h){var i=e.toHSL(),k=(i.h+h.value)%
+360;i.h=k<0?360+k:k;return b(i)},mix:function(e,h,i){i=i.value/100;var k=i*2-1,n=e.toHSL().a-h.toHSL().a;k=((k*n==-1?k:(k+n)/(1+k*n))+1)/2;n=1-k;return new d.Color([e.rgb[0]*k+h.rgb[0]*n,e.rgb[1]*k+h.rgb[1]*n,e.rgb[2]*k+h.rgb[2]*n],e.alpha*i+h.alpha*(1-i))},greyscale:function(e){return this.desaturate(e,new d.Dimension(100))},e:function(e){return new d.Anonymous(e instanceof d.JavaScript?e.evaluated:e)},"%":function(e){for(var h=Array.prototype.slice.call(arguments,1),i=e.value,k=0;k<h.length;k++)i=
+i.replace(/%s/,h[k].value).replace(/%[da]/,h[k].toCSS());i=i.replace(/%%/g,"%");return new d.Quoted('"'+i+'"',i)}}})(s("less/tree"));(function(d){d.Alpha=function(b){this.value=b};d.Alpha.prototype={toCSS:function(){return"alpha(opacity="+(this.value.toCSS?this.value.toCSS():this.value)+")"},eval:function(){return this}}})(s("less/tree"));(function(d){d.Anonymous=function(b){this.value=b.value||b};d.Anonymous.prototype={toCSS:function(){return this.value},eval:function(){return this}}})(s("less/tree"));
+(function(d){d.Call=function(b,a){this.name=b;this.args=a};d.Call.prototype={eval:function(b){var a=this.args.map(function(g){return g.eval(b)});return this.name in d.functions?d.functions[this.name].apply(d.functions,a):new d.Anonymous(this.name+"("+a.map(function(g){return g.toCSS()}).join(", ")+")")},toCSS:function(b){return this.eval(b).toCSS()}}})(s("less/tree"));(function(d){d.Color=function(b,a){this.rgb=Array.isArray(b)?b:b.length==6?b.match(/.{2}/g).map(function(g){return parseInt(g,16)}):
+b.split("").map(function(g){return parseInt(g+g,16)});this.alpha=typeof a==="number"?a:1};d.Color.prototype={eval:function(){return this},toCSS:function(){return this.alpha<1?"rgba("+this.rgb.map(function(b){return Math.round(b)}).concat(this.alpha).join(", ")+")":"#"+this.rgb.map(function(b){b=Math.round(b);b=(b>255?255:b<0?0:b).toString(16);return b.length===1?"0"+b:b}).join("")},operate:function(b,a){var g=[];a instanceof d.Color||(a=a.toColor());for(var e=0;e<3;e++)g[e]=d.operate(b,this.rgb[e],
+a.rgb[e]);return new d.Color(g)},toHSL:function(){var b=this.rgb[0]/255,a=this.rgb[1]/255,g=this.rgb[2]/255,e=this.alpha,h=Math.max(b,a,g),i=Math.min(b,a,g),k,n=(h+i)/2,r=h-i;if(h===i)k=i=0;else{i=n>0.5?r/(2-h-i):r/(h+i);switch(h){case b:k=(a-g)/r+(a<g?6:0);break;case a:k=(g-b)/r+2;break;case g:k=(b-a)/r+4}k/=6}return{h:k*360,s:i,l:n,a:e}}}})(s("less/tree"));(function(d){d.Comment=function(b,a){this.value=b;this.silent=!!a};d.Comment.prototype={toCSS:function(b){return b.compress?"":this.value},eval:function(){return this}}})(s("less/tree"));
+(function(d){d.Dimension=function(b,a){this.value=parseFloat(b);this.unit=a||null};d.Dimension.prototype={eval:function(){return this},toColor:function(){return new d.Color([this.value,this.value,this.value])},toCSS:function(){return this.value+this.unit},operate:function(b,a){return new d.Dimension(d.operate(b,this.value,a.value),this.unit||a.unit)}}})(s("less/tree"));(function(d){d.Directive=function(b,a){this.name=b;if(Array.isArray(a))this.ruleset=new d.Ruleset([],a);else this.value=a};d.Directive.prototype=
+{toCSS:function(b,a){if(this.ruleset){this.ruleset.root=true;return this.name+(a.compress?"{":" {\n ")+this.ruleset.toCSS(b,a).trim().replace(/\n/g,"\n ")+(a.compress?"}":"\n}\n")}else return this.name+" "+this.value.toCSS()+";\n"},eval:function(b){b.frames.unshift(this);this.ruleset=this.ruleset&&this.ruleset.eval(b);b.frames.shift();return this},variable:function(b){return d.Ruleset.prototype.variable.call(this.ruleset,b)},find:function(){return d.Ruleset.prototype.find.apply(this.ruleset,arguments)},
+rulesets:function(){return d.Ruleset.prototype.rulesets.apply(this.ruleset)}}})(s("less/tree"));(function(d){d.Element=function(b,a){this.combinator=b instanceof d.Combinator?b:new d.Combinator(b);this.value=a.trim()};d.Element.prototype.toCSS=function(b){return this.combinator.toCSS(b||{})+this.value};d.Combinator=function(b){this.value=b===" "?" ":b?b.trim():""};d.Combinator.prototype.toCSS=function(b){return{"":""," ":" ","&":"",":":" :","::":"::","+":b.compress?"+":" + ","~":b.compress?"~":" ~ ",
+">":b.compress?">":" > "}[this.value]}})(s("less/tree"));(function(d){d.Expression=function(b){this.value=b};d.Expression.prototype={eval:function(b){return this.value.length>1?new d.Expression(this.value.map(function(a){return a.eval(b)})):this.value[0].eval(b)},toCSS:function(b){return this.value.map(function(a){return a.toCSS(b)}).join(" ")}}})(s("less/tree"));(function(d){d.Import=function(b,a){var g=this;this._path=b;this.path=b instanceof d.Quoted?/\.(le?|c)ss$/.test(b.value)?b.value:b.value+
+".less":b.value.value||b.value;(this.css=/css$/.test(this.path))||a.push(this.path,function(e){if(!e)throw Error("Error parsing "+g.path);g.root=e})};d.Import.prototype={toCSS:function(){return this.css?"@import "+this._path.toCSS()+";\n":""},eval:function(b){var a;if(this.css)return this;else{a=new d.Ruleset(null,this.root.rules.slice(0));for(var g=0;g<a.rules.length;g++)a.rules[g]instanceof d.Import&&Array.prototype.splice.apply(a.rules,[g,1].concat(a.rules[g].eval(b)));return a.rules}}}})(s("less/tree"));
+(function(d){d.JavaScript=function(b,a){this.expression=b;this.index=a};d.JavaScript.prototype={toCSS:function(){return JSON.stringify(this.evaluated)},eval:function(b){var a=new Function("return ("+this.expression+")"),g={},e;for(e in b.frames[0].variables())g[e.slice(1)]={value:b.frames[0].variables()[e].value,toJS:function(){return this.value.eval(b).toCSS()}};try{this.evaluated=a.call(g)}catch(h){throw{message:"JavaScript evaluation error: '"+h.name+": "+h.message+"'",index:this.index};}return this}}})(s("less/tree"));
+(function(d){d.Keyword=function(b){this.value=b};d.Keyword.prototype={eval:function(){return this},toCSS:function(){return this.value}}})(s("less/tree"));(function(d){d.mixin={};d.mixin.Call=function(b,a,g){this.selector=new d.Selector(b);this.arguments=a;this.index=g};d.mixin.Call.prototype={eval:function(b){for(var a,g=[],e=false,h=0;h<b.frames.length;h++)if((a=b.frames[h].find(this.selector)).length>0){for(h=0;h<a.length;h++)if(a[h].match(this.arguments,b))try{Array.prototype.push.apply(g,a[h].eval(b,
+this.arguments).rules);e=true}catch(i){throw{message:i.message,index:i.index,stack:i.stack,call:this.index};}if(e)return g;else throw{message:"No matching definition was found for `"+this.selector.toCSS().trim()+"("+this.arguments.map(function(k){return k.toCSS()}).join(", ")+")`",index:this.index};}throw{message:this.selector.toCSS().trim()+" is undefined",index:this.index};}};d.mixin.Definition=function(b,a,g){this.name=b;this.selectors=[new d.Selector([new d.Element(null,b)])];this.params=a;this.arity=
+a.length;this.rules=g;this._lookups={};this.required=a.reduce(function(e,h){return!h.name||h.name&&!h.value?e+1:e},0);this.parent=d.Ruleset.prototype;this.frames=[]};d.mixin.Definition.prototype={toCSS:function(){return""},variable:function(b){return this.parent.variable.call(this,b)},variables:function(){return this.parent.variables.call(this)},find:function(){return this.parent.find.apply(this,arguments)},rulesets:function(){return this.parent.rulesets.apply(this)},eval:function(b,a){for(var g=
+new d.Ruleset(null,[]),e=0,h;e<this.params.length;e++)if(this.params[e].name)if(h=a&&a[e]||this.params[e].value)g.rules.unshift(new d.Rule(this.params[e].name,h.eval(b)));else throw{message:"wrong number of arguments for "+this.name+" ("+a.length+" for "+this.arity+")"};return(new d.Ruleset(null,this.rules.slice(0))).eval({frames:[this,g].concat(this.frames,b.frames)})},match:function(b,a){var g=b&&b.length||0;if(g<this.required)return false;if(this.required>0&&g>this.params.length)return false;g=
+Math.min(g,this.arity);for(var e=0;e<g;e++)if(!this.params[e].name)if(b[e].eval(a).toCSS()!=this.params[e].value.eval(a).toCSS())return false;return true}}})(s("less/tree"));(function(d){d.Operation=function(b,a){this.op=b.trim();this.operands=a};d.Operation.prototype.eval=function(b){var a=this.operands[0].eval(b);b=this.operands[1].eval(b);var g;if(a instanceof d.Dimension&&b instanceof d.Color)if(this.op==="*"||this.op==="+"){g=b;b=a;a=g}else throw{name:"OperationError",message:"Can't substract or divide a color from a number"};
+return a.operate(this.op,b)};d.operate=function(b,a,g){switch(b){case "+":return a+g;case "-":return a-g;case "*":return a*g;case "/":return a/g}}})(s("less/tree"));(function(d){d.Quoted=function(b,a){this.value=a||"";this.quote=b.charAt(0)};d.Quoted.prototype={toCSS:function(){return this.quote+this.value+this.quote},eval:function(){return this}}})(s("less/tree"));(function(d){d.Rule=function(b,a,g,e){this.name=b;this.value=a instanceof d.Value?a:new d.Value([a]);this.important=g?" "+g.trim():"";
+this.index=e;this.variable=b.charAt(0)==="@"?true:false};d.Rule.prototype.toCSS=function(b){return this.variable?"":this.name+(b.compress?":":": ")+this.value.toCSS(b)+this.important+";"};d.Rule.prototype.eval=function(b){return new d.Rule(this.name,this.value.eval(b),this.important,this.index)};d.Shorthand=function(b,a){this.a=b;this.b=a};d.Shorthand.prototype={toCSS:function(b){return this.a.toCSS(b)+"/"+this.b.toCSS(b)},eval:function(){return this}}})(s("less/tree"));(function(d){d.Ruleset=function(b,
+a){this.selectors=b;this.rules=a;this._lookups={}};d.Ruleset.prototype={eval:function(b){var a=new d.Ruleset(this.selectors,this.rules.slice(0));a.root=this.root;b.frames.unshift(a);if(a.root)for(var g=0;g<a.rules.length;g++)a.rules[g]instanceof d.Import&&Array.prototype.splice.apply(a.rules,[g,1].concat(a.rules[g].eval(b)));for(g=0;g<a.rules.length;g++)if(a.rules[g]instanceof d.mixin.Definition)a.rules[g].frames=b.frames.slice(0);for(g=0;g<a.rules.length;g++)a.rules[g]instanceof d.mixin.Call&&Array.prototype.splice.apply(a.rules,
+[g,1].concat(a.rules[g].eval(b)));g=0;for(var e;g<a.rules.length;g++){e=a.rules[g];e instanceof d.mixin.Definition||(a.rules[g]=e.eval?e.eval(b):e)}b.frames.shift();return a},match:function(b){return!b||b.length===0},variables:function(){return this._variables?this._variables:this._variables=this.rules.reduce(function(b,a){if(a instanceof d.Rule&&a.variable===true)b[a.name]=a;return b},{})},variable:function(b){return this.variables()[b]},rulesets:function(){return this._rulesets?this._rulesets:this._rulesets=
+this.rules.filter(function(b){return b instanceof d.Ruleset||b instanceof d.mixin.Definition})},find:function(b,a){a=a||this;var g=[],e=b.toCSS();if(e in this._lookups)return this._lookups[e];this.rulesets().forEach(function(h){if(h!==a)for(var i=0;i<h.selectors.length;i++)if(b.match(h.selectors[i])){b.elements.length>1?Array.prototype.push.apply(g,h.find(new d.Selector(b.elements.slice(1)),a)):g.push(h);break}});return this._lookups[e]=g},toCSS:function(b,a){var g=[],e=[],h=[],i=[],k;if(!this.root)if(b.length===
+0)i=this.selectors.map(function(r){return[r]});else for(k=0;k<this.selectors.length;k++)for(var n=0;n<b.length;n++)i.push(b[n].concat([this.selectors[k]]));for(n=0;n<this.rules.length;n++){k=this.rules[n];if(k.rules||k instanceof d.Directive)h.push(k.toCSS(i,a));else if(k instanceof d.Comment)k.silent||(this.root?h.push(k.toCSS(a)):e.push(k.toCSS(a)));else if(k.toCSS&&!k.variable)e.push(k.toCSS(a));else k.value&&!k.variable&&e.push(k.value.toString())}h=h.join("");if(this.root)g.push(e.join(a.compress?
+"":"\n"));else if(e.length>0){i=i.map(function(r){return r.map(function(p){return p.toCSS(a)}).join("").trim()}).join(a.compress?",":i.length>3?",\n":", ");g.push(i,(a.compress?"{":" {\n ")+e.join(a.compress?"":"\n ")+(a.compress?"}":"\n}\n"))}g.push(h);return g.join("")+(a.compress?"\n":"")}}})(s("less/tree"));(function(d){d.Selector=function(b){this.elements=b;if(this.elements[0].combinator.value==="")this.elements[0].combinator.value=" "};d.Selector.prototype.match=function(b){return this.elements[0].value===
+b.elements[0].value?true:false};d.Selector.prototype.toCSS=function(b){if(this._css)return this._css;return this._css=this.elements.map(function(a){return typeof a==="string"?" "+a.trim():a.toCSS(b)}).join("")}})(s("less/tree"));(function(d){d.URL=function(b,a){if(b.data)this.attrs=b;else{if(!/^(?:https?:\/|file:\/)?\//.test(b.value)&&a.length>0&&typeof z!=="undefined")b.value=a[0]+(b.value.charAt(0)==="/"?b.value.slice(1):b.value);this.value=b;this.paths=a}};d.URL.prototype={toCSS:function(){return"url("+
+(this.attrs?"data:"+this.attrs.mime+this.attrs.charset+this.attrs.base64+this.attrs.data:this.value.toCSS())+")"},eval:function(b){return this.attrs?this:new d.URL(this.value.eval(b),this.paths)}}})(s("less/tree"));(function(d){d.Value=function(b){this.value=b;this.is="value"};d.Value.prototype={eval:function(b){return this.value.length===1?this.value[0].eval(b):new d.Value(this.value.map(function(a){return a.eval(b)}))},toCSS:function(b){return this.value.map(function(a){return a.toCSS(b)}).join(b.compress?
+",":", ")}}})(s("less/tree"));(function(d){d.Variable=function(b,a){this.name=b;this.index=a};d.Variable.prototype={eval:function(b){var a,g,e=this.name;if(a=d.find(b.frames,function(h){if(g=h.variable(e))return g.value.eval(b)}))return a;else throw{message:"variable "+this.name+" is undefined",index:this.index};}}})(s("less/tree"));s("less/tree").find=function(d,b){for(var a=0,g;a<d.length;a++)if(g=b.call(d,d[a]))return g;return null};var P=location.protocol==="file:"||location.protocol==="chrome:"||
+location.protocol==="resource:";o.env=o.env||(location.hostname=="127.0.0.1"||location.hostname=="0.0.0.0"||location.hostname=="localhost"||location.port.length>0||P?"development":"production");o.async=false;o.poll=o.poll||(P?1E3:1500);o.watch=function(){return this.watchMode=true};o.unwatch=function(){return this.watchMode=false};if(o.env==="development"){o.optimization=0;/!watch/.test(location.hash)&&o.watch();o.watchTimer=setInterval(function(){o.watchMode&&W(function(d,b,a){d&&N(d.toCSS(),b,a.lastModified)})},
+o.poll)}else o.optimization=3;var B;try{B=typeof z.localStorage==="undefined"?null:z.localStorage}catch(aa){B=null}var M=document.getElementsByTagName("link"),V=/^text\/(x-)?less$/;o.sheets=[];for(var J=0;J<M.length;J++)if(M[J].rel==="stylesheet/less"||M[J].rel.match(/stylesheet/)&&M[J].type.match(V))o.sheets.push(M[J]);o.refresh=function(d){var b=endTime=new Date;W(function(a,g,e){if(e.local)H("loading "+g.href+" from cache.");else{H("parsed "+g.href+" successfully.");N(a.toCSS(),g,e.lastModified)}H("css for "+
+g.href+" generated in "+(new Date-endTime)+"ms");e.remaining===0&&H("css generated in "+(new Date-b)+"ms");endTime=new Date},d);U()};o.refreshStyles=U;o.refresh(o.env==="development")})(window);
diff --git a/docs/grid.html b/docs/grid.html
new file mode 100644
index 000000000..3ce74984c
--- /dev/null
+++ b/docs/grid.html
@@ -0,0 +1,168 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Twitter Baseline</title>
+
+ <!-- // Less.js at the ready! -->
+ <link rel="stylesheet/less" type="text/css" media="all" href="less/baseline.less" />
+ <script type="text/javascript" src="js/less-1.0.41.min.js"></script>
+
+ <!-- // jQuery! -->
+ <script type="text/javascript" src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
+ <script type="text/javascript" src="http://tablesorter.com/jquery.tablesorter.min.js"></script>
+ <script type="text/javascript" src="js/jquery/hashgrid.js"></script>
+ <script type="text/javascript">
+ // Javascript to toggle the dropdowns
+ $(document).ready(function(){
+ // Dropdowns
+ $("body").bind("click", function(e) {
+ $("ul.menu-dropdown").hide();
+ $('a.menu').parent("li").removeClass("open").children("ul.menu-dropdown").hide();
+ });
+ $("a.menu").click(function(e) {
+ var $target = $(this);
+ var $parent = $target.parent("li");
+ var $siblings = $target.siblings("ul.menu-dropdown");
+ var $parentSiblings = $parent.siblings("li");
+ if ($parent.hasClass("open")) {
+ $parent.removeClass("open");
+ $siblings.hide();
+ } else {
+ $parent.addClass("open");
+ $siblings.show();
+ }
+ $parentSiblings.children("ul.menu-dropdown").hide();
+ $parentSiblings.removeClass("open");
+ return false;
+ });
+ });
+ </script>
+
+ <!-- Code Highlighting -->
+ <script type="text/javascript" src="js/jquery/chili/jquery.chili-2.2.js"></script>
+ <script type="text/javascript" src="js/jquery/chili/recipes.js"></script>
+ <script id="setup" type="text/javascript">
+ ChiliBook.lineNumbers = true;
+ </script>
+
+ <!-- Debug line-height -->
+<!--
+ <style>
+ body {
+ background: url(img/baseline-10px.png) repeat 0 0, url(img/grid-940px.png) repeat-y top center;
+ background-color: #fff;
+ }
+ </style>
+-->
+ </head>
+
+
+
+ <body>
+
+ <div class="topbar">
+ <div class="container fixed">
+ <h3><a class="logo" href="index.html">
+ <img src="img/twitter-logo-no-bird.png" alt="Twitter" /> <span>baseline</span>
+ </a></h3>
+ <ul>
+ <li><a href="#getting-started">Getting Started</a></li>
+ <li><a href="#bootstrap">Bootstrap</a></li>
+ <li><a href="#grid-system">Grid</a></li>
+ <li><a href="#layouts">Layouts</a></li>
+ <li><a href="#typography">Typography</a></li>
+ <li><a href="#tables">Tables</a></li>
+ <li><a href="#forms">Forms</a></li>
+ <li><a href="#navigation">Navigation</a></li>
+ <li><a href="#alerts">Alerts</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div class="container">
+ <div class="page-header">
+ <h1>Typography</h1>
+ </div>
+
+ <div class="row">
+ <div class="span5 columns">
+ <h2>Body Text</h2>
+ <p>Headings and paragraphs for writing to your heart's content.</p>
+ <h2>Heading 2</h2>
+ <p>Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <h3>Heading 3</h3>
+ <p>Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <h4>Heading 4</h4>
+ <p>Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <h5>Heading 5</h5>
+ <p>Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ <h6>Heading 6</h6>
+ <p>Donec ullamcorper nulla non metus auctor fringilla. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
+ </div> <!-- /column -->
+ <div class="span5 columns">
+ <h2>Lists</h2>
+ <p>Includes unordered (bullets), ordered (numbers), and even definition (term and description).</p>
+ <h3>Unordered List</h3>
+ <p>For a list of items in which the order has no explicit meaning.</p>
+ <ul>
+ <li>Mattis</li>
+ <li>Tortor</li>
+ <li>Sollicitudin</li>
+ <li>Sit</li>
+ <li>Porta</li>
+ </ul>
+ <hr />
+ <h3>Ordered List</h3>
+ <p>For a list of items in which order does matter.</p>
+ <ol>
+ <li>Cras</li>
+ <li>Euismod</li>
+ <li>Quam</li>
+ <li>Egestas</li>
+ <li>Nibh</li>
+ </ol>
+ <hr />
+ <h3>Definition List</h3>
+ <p>For list terms and their definitions or descriptions.</p>
+ <dl>
+ <dt>Ullamcorper</dt>
+ <dd>Donec sed odio dui. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.</dd>
+ <dt>Porta</dt>
+ <dd>Nulla vitae elit libero, a pharetra augue.</dd>
+ <dt>Pharetra</dt>
+ <dd>Morbi leo risus, porta ac consectetur ac, vestibulum at eros.</dd>
+ </dl>
+ </div> <!-- /column -->
+ <div class="span6 columns">
+ <h2>Misc. Elements</h2>
+ <p>More elements that have special typographic styles, such as emphasis, address, abbr, and acronym.</p>
+ <h3>Emphasis in a Paragraph</h3>
+ <p><strong>Cum soluta nobis est eligendi optio cumque</strong> nihil impedit quo minus id quod maxime placeat facere possimus, <em>omnis voluptas assumenda est</em>, omnis dolor repellendus.</p>
+ <h3>Addresses</h3>
+ <p>The <code>address</code> element is used for&mdash;you guessed it!&mdash;addresses. Here's how it looks:</p>
+ <address>
+ <strong>Twitter, Inc.</strong><br />
+ 795 Folsom Ave, Suite 600<br />
+ San Francisco, CA 12345<br />
+ <abbr title="Phone">P:</abbr> (408) 123-4567
+ </address>
+ <p><strong>Note:</strong> Each line in an <code>address</code> must have a line-break (<code>&lt;br /&gt;</code>) after it to properly structure the content as it is read in real life.</p>
+ <h3>Abbreviations &amp; Acronyms</h3>
+ <p>Acronyms are actually a subset of abbreviations, a shortern form of another word. The difference is that regular abbreviations are just shorthand notations for a word, while acronyms are strings of the first letter in a multi-word phrase.</p>
+ <p>Example acronyms include <acronym title="Hyper Text Markup Language">HTML</acronym> and <acronym title="Cascading Style Sheets">CSS</acronym>, while a great abbreviation is <abbr title="Professor">Prof.</abbr> (short for Professor).</p>
+ </div> <!-- /column -->
+ </div> <!-- /row -->
+
+ </div> <!-- /container -->
+
+ <div id="footer">
+ <div class="inner">
+ <div class="container">
+ <p>Copyright and all that stuff.</p>
+ </div>
+ </div>
+ </div>
+
+ </body>
+</html> \ No newline at end of file
diff --git a/docs/index.html b/docs/index.html
new file mode 100644
index 000000000..b18db8e8f
--- /dev/null
+++ b/docs/index.html
@@ -0,0 +1,1195 @@
+<!DOCTYPE html>
+<html lang="en">
+ <head>
+ <meta charset="utf-8">
+ <title>Twitter Baseline</title>
+
+ <!-- // Less.js at the ready! -->
+ <link href="../baseline-1.0.0.css" rel="stylesheet" type="text/css">
+
+ <!-- // jQuery! -->
+ <script src="http://code.jquery.com/jquery-1.5.2.min.js"></script>
+ <script src="http://tablesorter.com/jquery.tablesorter.min.js"></script>
+ <script src="assets/js/jquery/hashgrid.js"></script>
+
+ <!-- Code Highlighting -->
+ <script src="assets/js/jquery/chili/jquery.chili-2.2.js"></script>
+ <script src="assets/js/jquery/chili/recipes.js"></script>
+ <script id="setup">ChiliBook.lineNumbers = true;</script>
+
+ <script src="assets/js/application.js"></script>
+
+ <!-- Debug line-height -->
+ <!--
+ <style>
+ body {
+ background: url(assets/img/baseline-10px.png) repeat 0 0, url(assets/img/grid-940px.png) repeat-y top center;
+ background-color: #fff;
+ }
+ </style>
+ -->
+ </head>
+
+ <body>
+
+ <div class="topbar">
+ <div class="container fixed">
+ <h3><a class="logo" href="index.html">
+ <img src="img/twitter-logo-no-bird.png" alt="Twitter" /> <span>baseline</span>
+ </a></h3>
+ <ul>
+ <li><a href="#getting-started">Getting Started</a></li>
+ <li><a href="#bootstrap">Bootstrap</a></li>
+ <li><a href="#grid-system">Grid</a></li>
+ <li><a href="#layouts">Layouts</a></li>
+ <li><a href="#typography">Typography</a></li>
+ <li><a href="#tables">Tables</a></li>
+ <li><a href="#forms">Forms</a></li>
+ <li><a href="#navigation">Navigation</a></li>
+ <li><a href="#alerts">Alerts</a></li>
+ </ul>
+ </div>
+ </div>
+
+ <div id="masthead">
+ <div class="inner">
+ <div class="container">
+ <div class="row">
+ <div class="span11 columns">
+ <h1>Twitter Baseline</h1>
+ <p class="lead">Baseline is Twitter's toolkit for kickstarting CSS for websites, apps, and more. It includes base CSS styles for typography, forms, buttons, tables, grids, navigation, alerts, and more.</p>
+ </div>
+ <div class="span5 columns">
+ <a href="" class="btn large primary">Download Zip &raquo;</a>
+ <small>
+ <a href="">Visit project page on Github &raquo;</a><br />
+ (Current version: 1.0.0)
+ </small>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="container">
+
+
+
+<section id="getting-started">
+<div class="page-header">
+ <h1>Getting started</h1>
+</div>
+<div class="row">
+ <div class="span4 columns">
+ <p>You can use Twitter Baseline in one of two ways: just drop the compiled CSS into any new project and start cranking, or run LESS on your site and compile on the fly like a boss.</p>
+ </div>
+ <div class="span12 columns">
+ <h3>1. Compiled CSS</h3>
+ <p>Use this option if you want all the styles of Baseline in a <a href="baseline-1.0.0.css">compiled and minified stylesheet</a>, but none of the extra power of LESS.</p>
+ <pre class="html">&lt;link type="text/css" href="baseline-1.0.0.css" media="all" /&gt;</pre>
+ <h3>2. Run with LESS.js</h3>
+ <p>Use this option to make full use of Baseline's LESS variables, mixins, and nesting in CSS.</p>
+ <pre class="html">
+&lt;link rel="stylesheet/less" type="text/css" href="less/baseline.less" media="all" /&gt;
+&lt;script type="text/javascript" src="js/less-1.0.41.min.js"&gt;&lt;/script&gt;</pre>
+ </div>
+</div>
+</section>
+
+
+<section id="bootstrap">
+<div class="page-header">
+ <h1>Fully Bootstrapped <small>Supercharged CSS with variables, mixins, and functions</small></h1>
+</div>
+<div class="row">
+ <div class="span4 columns">
+ <p><a href="http://markdotto.com/bootstrap/">Bootstrap</a> is a super awesome pack of mixins and variables to be used in conjunction with <a href="http://lesscss.org" target="_blank">LESS</a>, a CSS preprocessor for faster and easier web development, that we used to build Baseline.</p>
+ </div>
+ <div class="span12 columns">
+ <h2>What's included</h2>
+ <p>Here are some of the highlights of what's included in Twitter Baseline as part of Bootstrap. Head over to the Bootstrap website or Github project page to download and learn more.</p>
+ <h3>Color variables</h3>
+ <p>Variables in LESS are perfect for maintaining and updating your CSS headache free. When you want to change a color value or a frequently used value, update it in one spot and you're set.</p>
+ <pre class="css">
+// Links
+@link-color: #0069d6;
+@link-hover-color: darken(@link-color, 10);
+
+// Grays
+@white: #fff;
+@gray-lighter: #ccc;
+@gray-light: #777;
+@gray: #555;
+@gray-dark: #333;
+@black: #000;
+
+// Accent Colors
+@blue: #08b5fb;
+@blue-dark: #0069d6;
+@green: #46a546;
+@red: #9d261d;
+@yellow: #ffc40d;
+@orange: #f89406;
+@pink: #c3325f;
+@purple: #7a43b6;
+
+// Baseline
+@baseline: 20px;
+</pre>
+
+<h3>Commenting</h3>
+<p>LESS also provides another style of commenting in addition to CSS's normal <code>/* ... */</code> syntax.</p>
+<pre class="css">
+// This is a comment
+/* This is also a comment */
+</pre>
+
+<h3>Mixins up the wazoo</h3>
+<p>Mixins are basically includes or partials for CSS, allowing you to combine a block of code into one. They're great for vendor prefixed properties like <code>box-shadow</code>, cross-browser gradients, font stacks, and more. Below is a sample of the mixins that are included with Bootstrap in Baseline.</p>
+<pre class="css">
+// Font Stacks
+.font(@weight: normal, @size: 14px, @lineheight: 20px) {
+ font-size: @size;
+ font-weight: @weight;
+ line-height: @lineheight;
+}
+.sans-serif(@weight: normal, @size: 14px, @lineheight: 20px) {
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
+ font-size: @size;
+ font-weight: @weight;
+ line-height: @lineheight;
+}
+
+// Drop shadows
+.box-shadow(@shadow: 0 1px 3px rgba(0,0,0,.25)) {
+ -webkit-box-shadow: @shadow;
+ -moz-box-shadow: @shadow;
+ box-shadow: @shadow;
+}
+
+// Gradients
+#gradient {
+ .horizontal(@startColor: #555, @endColor: #333) {
+ background-color: @endColor;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, left top, right top, from(@startColor), to(@endColor));
+ background-image: -webkit-linear-gradient(right center, @startColor, @endColor);
+ background-image: -moz-linear-gradient(right center, @startColor, @endColor);
+ background-image: -o-linear-gradient(left, @startColor, @endColor);
+ background-image: -khtml-gradient(linear, left top, right top, from(@startColor), to(@endColor));
+ filter: e(%("progid:DXImageTransform.Microsoft.Gradient(StartColorStr='%d', EndColorStr='%d', GradientType=1)",@startColor,@endColor));
+ -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorStr='%d', EndColorStr='%d', GradientType=1))",@startColor,@endColor);
+ }
+ .vertical(@startColor: #555, @endColor: #333) {
+ background-color: @endColor;
+ background-repeat: no-repeat;
+ background-image: -webkit-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
+ background-image: -webkit-linear-gradient(@startColor, @endColor);
+ background-image: -moz-linear-gradient(@startColor, @endColor);
+ background-image: -o-linear-gradient(top, @startColor, @endColor);
+ background-image: -khtml-gradient(linear, left top, left bottom, from(@startColor), to(@endColor));
+ filter: e(%("progid:DXImageTransform.Microsoft.Gradient(StartColorStr='%d', EndColorStr='%d', GradientType=0)",@startColor,@endColor));
+ -ms-filter: %("progid:DXImageTransform.Microsoft.gradient(startColorStr='%d', EndColorStr='%d', GradientType=0))",@startColor,@endColor);
+ }
+}
+</pre>
+
+<h3>Operations and grid system</h3>
+<p>Get fancy and perform some match to generate flexible and powerful mixins like the one below.</p>
+<pre class="css">
+// Roll your own grid system
+@grid_columns: 16;
+@grid_column_width: 40px;
+@grid_gutter_width: 20px;
+.columns(@column_span: 1) {
+ display: inline;
+ float: left;
+ width: (@grid_column_width * @column_span) + (@grid_gutter_width * (@column_span - 1));
+ margin-left: @grid_gutter_width;
+ &:first-child {
+ margin-left: 0;
+ }
+}
+</pre>
+ </div>
+</div>
+
+</section>
+
+
+
+<section id="grid-system">
+<div class="page-header">
+ <h1>Grid system <small>Rock the standard 940px or roll your own</small></h1>
+</div>
+<div class="row">
+ <div class="span4 columns">
+ <h2>Default grid</h2>
+ <p>The default grid system provided as part of Baseline is a 940px wide 16-column grid. It's a flavor of the popular 960 grid system, but without the additional margin/padding on the left and right sides.</p>
+ </div>
+ <div class="span12 columns">
+ <h3>Example grid markup</h3>
+ <p>As shown here, a basic layout can be created with two "columns," each spanning a number of the 16 foundational columns we defined as part of our grid system. See the examples below for more variations.</p>
+<pre class="html">
+&lt;div class="row"&gt;
+ &lt;div class="span6 columns"&gt;
+ ...
+ &lt;/div&gt;
+ &lt;div class="span10 columns"&gt;
+ ...
+ &lt;/div&gt;
+&lt;/div&gt;
+</pre>
+ </div>
+</div>
+
+<div class="row show-grid" title="16 column layout">
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+ <div class="span1 column">1</div>
+</div>
+
+<div class="row show-grid" title="8 column layout">
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+ <div class="span2 columns">2</div>
+</div>
+
+<div class="row show-grid" title="Example uncommon layout">
+ <div class="span3 columns">3</div>
+ <div class="span3 columns">3</div>
+ <div class="span3 columns">3</div>
+ <div class="span3 columns">3</div>
+ <div class="span3 columns">3</div>
+ <div class="span1 column">1</div>
+</div>
+
+<div class="row show-grid" title="Four column layout">
+ <div class="span4 columns">4</div>
+ <div class="span4 columns">4</div>
+ <div class="span4 columns">4</div>
+ <div class="span4 columns">4</div>
+</div>
+
+<div class="row show-grid" title="Irregular three column layout">
+ <div class="span4 columns">4</div>
+ <div class="span6 columns">6</div>
+ <div class="span6 columns">6</div>
+</div>
+
+<div class="row show-grid" title="Half and half">
+ <div class="span8 columns">8</div>
+ <div class="span8 columns">8</div>
+</div>
+
+<div class="row show-grid" title="Example uncommon two-column layout">
+ <div class="span5 columns">5</div>
+ <div class="span11 columns">11</div>
+</div>
+
+<div class="row show-grid" title="Unnecessary single column layout">
+ <div class="span16 columns">16</div>
+</div>
+</section>
+
+
+
+
+<section id="layouts">
+ <div class="page-header">
+ <h1>Layouts <small>Basic templates to create webpages</small></h1>
+ </div>
+ <div class="row">
+ <div class="span4 columns">
+ <h2>Fixed layout</h2>
+ <p>A basic 940px wide, centered container layout for just about any site or page.</p>
+ </div>
+ <div class="span12 columns">
+ <div class="mini-layout">
+ <div class="mini-layout-body"></div>
+ </div>
+<pre class="html">
+&lt;body&gt;
+ &lt;div class="container"&gt;
+ ...
+ &lt;/div&gt;
+&lt;/body&gt;
+</pre>
+ </div>
+ </div>
+ <div class="row">
+ <div class="span4 columns">
+ <h2>Fluid layout</h2>
+ <p>A flexible fluid or liquid page structure with min- and max-widths and a left-hand sidebar. Great for apps.</p>
+ </div>
+ <div class="span12 columns">
+ <div class="mini-layout fluid">
+ <div class="mini-layout-sidebar"></div>
+ <div class="mini-layout-body"></div>
+ </div>
+<pre class="html">
+&lt;body&gt;
+ &lt;div class="container-fluid"&gt;
+ &lt;div class="sidebar"&gt;
+ ...
+ &lt;/div&gt;
+ &lt;div class="content"&gt;
+ ...
+ &lt;/div&gt;
+ &lt;/div&gt;
+&lt;/body&gt;
+</pre>
+ </div>
+ </div>
+</section>
+
+
+
+<section id="typography">
+<div class="page-header">
+ <h1>Typography <small>Headings, paragraphs, lists, and other inline type elements</small></h1>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Headings and copy</h2>
+ <p>A standard typographic hierarchy for structuring your webpages.</p>
+ </div>
+ <div class="span6 columns">
+ <h1>h1. Heading 1</h1>
+ <h2>h2. Heading 2</h2>
+ <h3>h3. Heading 3</h3>
+ <h4>h4. Heading 4</h4>
+ <h5>h5. Heading 5</h5>
+ <h6>h6. Heading 6</h6>
+ </div>
+ <div class="span6 columns">
+ <h3>Example paragraph (body text)</h3>
+ <p>Nullam quis risus eget urna mollis ornare vel eu leo. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
+ </div>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Misc. elements</h2>
+ <p>Using emphasis, addresses, &amp; abbreviations</p>
+ <p>
+ <code>&lt;strong&gt;</code>
+ <code>&lt;em&gt;</code>
+ <code>&lt;address&gt;</code>
+ <code>&lt;abbr&gt;</code>
+ </p>
+ </div>
+ <div class="span12 columns">
+ <h4>When to use</h4>
+ <p>Emphasis tags (<code>&lt;strong&gt;</code> and <code>&lt;em&gt;</code>) should be used to add visual distinction between a word or phrase and its surrounding copy. Use <code>&lt;strong&gt;</code> for plain old attention and <code>&lt;em&gt;</code> for <em>slick</em> attention and titles.</p>
+ <h3>Emphasis in a paragraph</h3>
+ <p><a href="">Fusce dapibus</a>, <strong>tellus ac cursus commodo</strong>, <em>tortor mauris condimentum nibh</em>, ut fermentum massa justo sit amet risus. Maecenas faucibus mollis interdum. Nulla vitae elit libero, a pharetra augue.</p>
+ <h3>Addresses</h3>
+ <p>The <code>address</code> element is used for&mdash;you guessed it!&mdash;addresses. Here's how it looks:</p>
+ <address>
+ <strong>Twitter, Inc.</strong><br />
+ 795 Folsom Ave, Suite 600<br />
+ San Francisco, CA 94107<br />
+ <abbr title="Phone">P:</abbr> (123) 456-7890
+ </address>
+ <p><strong>Note:</strong> Each line in an <code>address</code> must end with a line-break (<code>&lt;br /&gt;</code>) to properly structure the content as it is read in real life without any styles applied.</p>
+ <h3>Abbreviations</h3>
+ <p>For abbreviations and acronyms, use the <code>abbr</code> tag (<code>acronym</code> is deprecated in <abbr title="HyperText Markup Langugage 5">HTML5</abbr>). Put the shorthand form within the tag and set a title for the complete name.</p>
+ </div>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Blockquotes</h2>
+ <p>
+ <code>&lt;blockquote&gt;</code>
+ <code>&lt;p&gt;</code>
+ <code>&lt;cite&gt;</code>
+ </p>
+ </div>
+ <div class="span12 columns">
+ <p>Be sure to wrap your <code>blockquote</code> around <code>paragraph</code> and <code>cite</code> tags. When citing a source, use the <code>cite</code> element. The CSS will automatically preface a name with an em dash (&amp;mdash;).</p>
+ <blockquote>
+ <p>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua...</p>
+ <cite>Dr. Julius Hibbert</cite>
+ </blockquote>
+ </div>
+</div>
+
+
+<h2>Lists</h2>
+<div class="row">
+ <div class="span4 columns">
+ <h4>Unordered <code>&lt;ul&gt;</code></h4>
+ <ul>
+ <li>Jeremy Bixby</li>
+ <li>Robert Dezure</li>
+ <li>Josh Washington</li>
+ <li>Anton Capresi</li>
+ <li>My Team Mates
+ <ul>
+ <li>George Castanza</li>
+ <li>Jerry Seinfeld</li>
+ <li>Cosmo Kramer</li>
+ <li>Elaine Bennis</li>
+ <li>Newman</li>
+ </ul>
+ </li>
+ <li>John Jacob</li>
+ <li>Paul Pierce</li>
+ <li>Kevin Garnett</li>
+ </ul>
+ </div>
+ <div class="span4 columns">
+ <h4>Unstyled <code>&lt;ul.unstyled&gt;</code></h4>
+ <ul class="unstyled">
+ <li>Jeremy Bixby</li>
+ <li>Robert Dezure</li>
+ <li>Josh Washington</li>
+ <li>Anton Capresi</li>
+ <li>My Team Mates
+ <ul>
+ <li>George Castanza</li>
+ <li>Jerry Seinfeld</li>
+ <li>Cosmo Kramer</li>
+ <li>Elaine Bennis</li>
+ <li>Newman</li>
+ </ul>
+ </li>
+ <li>John Jacob</li>
+ <li>Paul Pierce</li>
+ <li>Kevin Garnett</li>
+ </ul>
+ </div>
+ <div class="span4 columns">
+ <h4>Ordered <code>&lt;ol&gt;</code></h4>
+ <ol>
+ <li>Jeremy Bixby</li>
+ <li>Robert Dezure</li>
+ <li>Josh Washington</li>
+ <li>Anton Capresi</li>
+ <li>My Team Mates
+ <ol>
+ <li>George Castanza</li>
+ <li>Jerry Seinfeld</li>
+ <li>Cosmo Kramer</li>
+ <li>Elaine Bennis</li>
+ <li>Newman</li>
+ </ol>
+ </li>
+ <li>John Jacob</li>
+ <li>Paul Pierce</li>
+ <li>Kevin Garnett</li>
+ </ol>
+ </div>
+ <div class="span4 columns">
+ <h4>Description <code>dl</code></h4>
+ <dl>
+ <dt>Description lists</dt>
+ <dd>A description list is perfect for defining terms.</dd>
+ <dt>Your mom</dt>
+ <dd>Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
+ <dd>Donec id elit non mi porta gravida at eget metus.</dd>
+ <dt>And your dad</dt>
+ <dd>Etiam porta sem malesuada magna mollis euismod.</dd>
+ </dl>
+ </div>
+</div>
+</section>
+
+
+
+<section id="tables">
+<div class="page-header">
+ <h1>Tables <small>For, you guessed it, tabular data</small></h1>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Building tables</h2>
+ <p>
+ <code>&lt;table&gt;</code>
+ <code>&lt;thead&gt;</code>
+ <code>&lt;tbody&gt;</code>
+ <code>&lt;tr&gt;</code>
+ <code>&lt;th&gt;</code>
+ <code>&lt;td&gt;</code>
+ <code>&lt;colspan&gt;</code>
+ <code>&lt;caption&gt;</code>
+ </p>
+ <p>Tables are great&mdash;for a lot of things. Great tables, however, need a bit of markup love to be useful, scalable, and readable (at the code level). Here are a few tips to help.</p>
+ <p>Always wrap your column headers in a <code>thead</code> such that hierarchy is <code>thead</code> > <code>tr</code> > <code>th</code>.</p>
+ <p>Similar to the column headers, all your table's body content should be wrapped in a <code>tbody</code> so your hierarchy is <code>tbody</code> > <code>tr</code> > <code>td</code>.</p>
+ </ul>
+ </div>
+ <div class="span12 columns">
+<h3>Example: Default table styles</h3>
+<p>All tables will be automatically styled with only the essential borders to ensure readability and maintain structure. No need to add extra classes or attributes.</p>
+<table>
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Language</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>1</td>
+ <td>Your</td>
+ <td>Mom</td>
+ <td>English</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Joe</td>
+ <td>Sixpack</td>
+ <td>English</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Stu</td>
+ <td>Dent</td>
+ <td>Code</td>
+ </tr>
+ </tbody>
+</table>
+<pre class="html">
+&lt;table class="common-table"&gt;
+ ...
+&lt;/table&gt;</pre>
+
+<h3>Example: Zebra-striped</h3>
+<p>Get a little fancy with your tables by adding zebra-striping&mdash;just add the <code>.zebra-striped</code> class.</p>
+<table class="zebra-striped">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th>First Name</th>
+ <th>Last Name</th>
+ <th>Language</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>1</td>
+ <td>Your</td>
+ <td>Mom</td>
+ <td>English</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Joe</td>
+ <td>Sixpack</td>
+ <td>English</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Stu</td>
+ <td>Dent</td>
+ <td>Code</td>
+ </tr>
+ </tbody>
+</table>
+<pre class="html">
+&lt;table class="common-table zebra-striped"&gt;
+...
+&lt;/table&gt;</pre>
+
+<h3>Example: Zebra-striped w/ TableSorter.js</h3>
+<p>Taking the previous example, we improve the usefulness of our tables by providing sorting functionality via <a href="http://jquery.com">jQuery</a> and the <a href="http://tablesorter.com/docs/">Tablesorter</a> plugin. <strong>Click any column's header to change the sort.</strong></p>
+<script type="text/javascript" src="http://tablesorter.com/jquery.tablesorter.min.js"></script>
+<script type="text/javascript">
+ $(document).ready(function() {
+ $("table#sortTableExample").tablesorter( {sortList: [[1,0]]} );
+ });
+</script>
+<table class="zebra-striped" id="sortTableExample">
+ <thead>
+ <tr>
+ <th>#</th>
+ <th class="yellow">First Name</th>
+ <th class="blue">Last Name</th>
+ <th class="green">Language</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>1</td>
+ <td>Your</td>
+ <td>Mom</td>
+ <td>English</td>
+ </tr>
+ <tr>
+ <td>2</td>
+ <td>Joe</td>
+ <td>Sixpack</td>
+ <td>English</td>
+ </tr>
+ <tr>
+ <td>3</td>
+ <td>Stu</td>
+ <td>Dent</td>
+ <td>Code</td>
+ </tr>
+ </tbody>
+</table>
+<pre class="html">
+&lt;script type="text/javascript" src="js/jquery/jquery.tablesorter.min.js"&gt;&lt;/script&gt;
+&lt;script type="text/javascript"&gt;
+ $(document).ready(function() {
+ $("table#sortTableExample").tablesorter( {sortList: [[1,0]]} );
+ });
+&lt;/script&gt;
+&lt;table class="common-table zebra-striped"&gt;
+ ...
+&lt;/table&gt;</pre>
+ </div>
+</div>
+</section>
+
+
+
+<section id="forms">
+<! -- JS for the prepend and append boxes -->
+<script type="text/javascript">
+ $(document).ready(function(){
+ $('.add-on :checkbox').click(function() {
+ if ($(this).attr('checked')) {
+ $(this).parents('.add-on').addClass('active');
+ } else {
+ $(this).parents('.add-on').removeClass('active');
+ }
+ });
+ });
+</script>
+<div class="page-header">
+ <h1>Forms</h1>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Default styles</h2>
+ <p>All forms are given default styles to present them in a readable and scalable way. Styles are provided for text inputs, select lists, textareas, radio buttons and checkboxes, and buttons.</p>
+ </div>
+ <div class="span12 columns">
+ <form>
+ <fieldset>
+ <legend>Example form legend</legend>
+ <div class="clearfix">
+ <label for="">X-Large Input</label>
+ <div class="input">
+ <input class="xlarge" id="xlInput" name="xlInput" size="30" type="text" />
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="">Select</label>
+ <div class="input">
+ <select>
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="">Select</label>
+ <div class="input">
+ <select class="medium">
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label>Uneditable Input</label>
+ <div class="input">
+ <span class="uneditable-input">Some Value Here</span>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="disabledInput">Disabled Input</label>
+ <div class="input">
+ <input class="xlarge disabled" id="disabledInput" name="disabledInput" size="30" type="text" placeholder="Disabled input here... carry on." disabled />
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix error">
+ <label for="xlInput">X-Large Input</label>
+ <div class="input">
+ <input class="xlarge error" id="xlInput" name="xlInput" size="30" type="text" />
+ </div>
+ </div> <!-- /clearfix -->
+ </fieldset>
+ <fieldset>
+ <legend>Example form legend</legend>
+ <div class="clearfix">
+ <label for="prependedInput">Prepended Text</label>
+ <div class="input">
+ <div class="input-prepend">
+ <span class="add-on">@</span>
+ <input class="medium" id="prependedInput" name="prependedInput" size="16" type="text" />
+ </div>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="prependedInput2">Prepended Checkbox</label>
+ <div class="input">
+ <div class="input-prepend">
+ <label class="add-on"><input type="checkbox" name="" id="" value="" /></label>
+ <input class="mini" id="prependedInput2" name="prependedInput2" size="16" type="text" />
+ </div>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="appendedInput">Appended Checkbox</label>
+ <div class="input">
+ <div class="input-append">
+ <input class="mini" id="appendedInput" name="appendedInput" size="16" type="text" />
+ <label class="add-on active"><input type="checkbox" name="" id="" value="" checked="checked" /></label>
+ </div>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="xlInput">File Input</label>
+ <div class="input">
+ <input class="input-file" id="fileInput" name="fileInput" type="file" />
+ </div>
+ </div> <!-- /clearfix -->
+ </fieldset>
+ <fieldset>
+ <legend>Example form legend</legend>
+ <div class="clearfix">
+ <label id="optionsCheckboxes">List of Options</label>
+ <div class="input">
+ <ul class="inputs-list">
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option1" />
+ <span>Option one is this and that&mdash;be sure to include why it's great</span>
+ </label>
+ </li>
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option2" />
+ <span>Option two can also be checked and included in form results</span>
+ </label>
+ </li>
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option2" />
+ <span>Option three can&mdash;yes, you guessed it&mdash;also be checked and included in form results</span>
+ </label>
+ </li>
+ <li>
+ <label class="disabled">
+ <input type="checkbox" name="optionsCheckboxes" value="option2" disabled />
+ <span>Option four cannot be checked as it is disabled.</span>
+ </label>
+ </li>
+ </ul>
+ <span class="help-block">
+ <strong>Note:</strong> Labels surround all the options for much larger click areas and a more usable form.
+ </span>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label>Date Range</label>
+ <div class="input">
+ <div class="inline-inputs">
+ <input class="small" type="text" value="May 1, 2011" />
+ <input class="mini" type="text" value="12:00am" />
+ to
+ <input class="small" type="text" value="May 8, 2011" />
+ <input class="mini" type="text" value="11:59pm" />
+ <span class="help-inline">All times are shown as Pacific Standard Time (GMT -08:00).</span>
+ </div>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="textarea">Textarea</label>
+ <div class="input">
+ <textarea class="xxlarge" id="textarea" name="textarea"></textarea>
+ <span class="help-block">
+ Block of help text to describe the field above if need be.
+ </span>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label id="optionsRadio">List of Options</label>
+ <div class="input">
+ <ul class="inputs-list">
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option1" />
+ <span>Option one is this and that&mdash;be sure to include why it's great</span>
+ </label>
+ </li>
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option2" />
+ <span>Option two can also be checked and included in form results</span>
+ </label>
+ </li>
+ </ul>
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="actions">
+ <button type="submit" class="btn primary">Save Changes</button>
+ <button type="reset" class="btn">Cancel</button>
+ </div>
+ </fieldset>
+ </form>
+ </div>
+</div>
+
+<br />
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Stacked forms</h2>
+ <p>Add <code>.form-stacked</code> to your form's HTML and you'll have labels on top of their fields instead of to their left. This works great if your forms are short or you have two columns of inputs for heavier forms.</p>
+ </div>
+ <div class="span12 columns">
+ <form action="" class="form-stacked">
+ <fieldset>
+ <legend>Example form legend</legend>
+ <div class="clearfix">
+ <label for="">X-Large Input</label>
+ <div class="input">
+ <input class="xlarge" id="xlInput" name="xlInput" size="30" type="text" />
+ </div>
+ </div> <!-- /clearfix -->
+ <div class="clearfix">
+ <label for="">Select</label>
+ <div class="input">
+ <select>
+ <option>1</option>
+ <option>2</option>
+ <option>3</option>
+ <option>4</option>
+ <option>5</option>
+ </select>
+ </div>
+ </div> <!-- /clearfix -->
+ </fieldset>
+ <fieldset>
+ <legend>Example form legend</legend>
+ <div class="clearfix">
+ <label id="optionsCheckboxes">List of Options</label>
+ <div class="input">
+ <ul class="inputs-list">
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option1" />
+ <span>Option one is this and that&mdash;be sure to include why it's great</span>
+ </label>
+ </li>
+ <li>
+ <label>
+ <input type="checkbox" name="optionsCheckboxes" value="option2" />
+ <span>Option two can also be checked and included in form results</span>
+ </label>
+ </li>
+ </ul>
+ <span class="help-block">
+ <strong>Note:</strong> Labels surround all the options for much larger click areas and a more usable form.
+ </span>
+ </div>
+ </div> <!-- /clearfix -->
+ </fieldset>
+ <div class="actions">
+ <button type="submit" class="btn primary">Save Changes</button>
+ <button type="reset" class="btn">Cancel</button>
+ </div>
+ </form>
+ </div>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Buttons</h2>
+ <p>As a convention, buttons are used for actions while links are used for objects. For instance, "Download" could be a button and "recent activity" could be a link.</p>
+ <p>All buttons default to a light gray style, but a blue <code>.primary</code> class is available. Plus, rolling your own styles is easy peasy.</p>
+ </div>
+ <div class="span12 columns">
+ <h3>Example buttons</h3>
+ <p>Button styles can be applied to anything with the <code>.btn</code> applied. Typically you'll want to apply these to only <code>a</code>, <code>button</code>, and select <code>input</code> elements. Here's how it looks:</p>
+ <div class="well" style="padding: 14px 19px;">
+ <button type="submit" class="btn primary">Submit</button>
+ <button type="submit" class="btn">Cancel</button>
+ </div>
+ <h3>Alternate sizes</h3>
+ <p>Fancy larger or smaller buttons? Have at it!</p>
+ <div class="well">
+ <a href="#" class="btn large primary">Primary action</a>
+ <a href="#" class="btn large">Action</a>
+ </div>
+ <div class="well" style="padding: 16px 19px;">
+ <a href="#" class="btn small primary">Primary action</a>
+ <a href="#" class="btn small">Action</a>
+ </div>
+ </div>
+</div>
+</section>
+
+
+
+<section id="navigation">
+ <div class="page-header">
+ <h1>Navigation</h1>
+ </div>
+ <h2>Fixed topbar</h2>
+ <div class="topbar-wrapper">
+ <div class="topbar">
+ <div class="container fixed">
+ <h3><a class="logo" href="">Project Name</a></h3>
+ <ul>
+ <li class="active"><a href="">Home</a></li>
+ <li><a href="">Profile</a></li>
+ <li><a href="">Messages</a></li>
+ <li><a href="">Who to Follow</a></li>
+ </ul>
+ <form action="">
+ <input type="text" placeholder="Search" />
+ </form>
+ <ul class="nav secondary-nav">
+ <li class="menu">
+ <a href="#" class="menu">Username</a>
+ <ul class="menu-dropdown">
+ <li><a href="">Secondary link</a></li>
+ <li><a href="">Something else here</a></li>
+ <li class="divider"></li>
+ <li><a href="">Sign Out</a></li>
+ </ul>
+ </li>
+ </ul>
+ </div>
+ </div>
+ </div> <!-- topbar-wrapper -->
+ <div class="row">
+ <div class="span5 columns">
+ <h4>What is it</h4>
+ <p>Our topbar is a fixed bar that houses a website's logo or name, primary navigation, and search form.</p>
+ </div>
+ <div class="span5 columns">
+ <h4>Customizable</h4>
+ <p>All elements within, and the entire topbar as well, are optional. You can choose to include a logo/name, nav, search, and a secondary nav&mdash;or any combination of that.</p>
+ </div>
+ <div class="span6 columns">
+ <h4>Dropdowns included</h4>
+ <p>As part of the main navigation, we've included the ability for you to add dropdowns to your nav. Check out the secondary nav above (right aligned) to see how it's done.</p>
+ </div>
+ </div>
+
+ <br />
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Tabs and pills</h2>
+ <p>Create simple secondary navigation with a <code>ul</code>. Swap between tabs or pills by adding the appropriate class.</p>
+ <p>Great for sub-sections of content like our account settings pages and user timelines for toggling between pages of like content. Available in tabbed or pill styles.</p>
+ </div>
+ <div class="span12 columns">
+<ul class="tabs">
+ <li class="active"><a href="">Home</a></li>
+ <li><a href="">Profile</a></li>
+ <li><a href="">Messages</a></li>
+ <li><a href="">Settings</a></li>
+ <li><a href="">Contact</a></li>
+</ul>
+<pre class="html">
+&lt;ul class="tabs"&gt;
+ &lt;li class="active"&gt;&lt;a href=""&gt;Home&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Profile&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Messages&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Settings&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Contact&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+</pre>
+<ul class="pills">
+ <li class="active"><a href="">Home</a></li>
+ <li><a href="">Profile</a></li>
+ <li><a href="">Messages</a></li>
+ <li><a href="">Settings</a></li>
+ <li><a href="">Contact</a></li>
+</ul>
+<pre class="html">
+&lt;ul class="pills"&gt;
+ &lt;li class="active"&gt;&lt;a href=""&gt;Home&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Profile&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Messages&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Settings&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;Contact&lt;/a&gt;&lt;/li&gt;
+&lt;/ul&gt;
+</pre>
+ </div>
+</div>
+
+<div class="row">
+ <div class="span4 columns">
+ <h2>Pagination</h2>
+ <p>Ultra simplistic and minimally styled pagination inspired by Rdio. The large block is hard to miss, easily scalable, and provides large click areas.</p>
+ </div>
+ <div class="span12 columns">
+ <div class="pagination">
+ <ul>
+ <li class="prev disabled"><a href="">&larr; Previous</a></li>
+ <li class="active"><a href="">1</a></li>
+ <li><a href="">2</a></li>
+ <li><a href="">3</a></li>
+ <li><a href="">4</a></li>
+ <li><a href="">5</a></li>
+ <li class="next"><a href="">Next &rarr;</a></li>
+ </ul>
+ </div>
+ <div class="pagination">
+ <ul>
+ <li class="prev"><a href="">&larr; Previous</a></li>
+ <li class="active"><a href="">10</a></li>
+ <li><a href="">11</a></li>
+ <li><a href="">12</a></li>
+ <li class="disabled"><a href="">...</a></li>
+ <li><a href="">19</a></li>
+ <li><a href="">20</a></li>
+ <li><a href="">21</a></li>
+ <li class="next"><a href="">Next &rarr;</a></li>
+ </ul>
+ </div>
+ <div class="pagination">
+ <ul>
+ <li class="prev"><a href="">&larr; Previous</a></li>
+ <li><a href="">10</a></li>
+ <li><a href="">11</a></li>
+ <li><a href="">12</a></li>
+ <li><a href="">13</a></li>
+ <li><a href="">14</a></li>
+ <li class="active"><a href="">15</a></li>
+ <li><a href="">16</a></li>
+ <li><a href="">17</a></li>
+ <li><a href="">18</a></li>
+ <li><a href="">19</a></li>
+ <li><a href="">20</a></li>
+ <li class="next"><a href="">Next &rarr;</a></li>
+ </ul>
+ </div>
+<pre class="html">
+&lt;div class="pagination"&gt;
+ &lt;ul&gt;
+ &lt;li class="prev disabled"&gt;&lt;a href=""&gt;&amp;larr; Previous&lt;/a&gt;&lt;/li>
+ &lt;li class="active"&gt;&lt;a href=""&gt;1&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;2&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;3&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;4&lt;/a&gt;&lt;/li&gt;
+ &lt;li&gt;&lt;a href=""&gt;5&lt;/a&gt;&lt;/li&gt;
+ &lt;li class="next"&gt;&lt;a href=""&gt;Next &amp;rarr;&lt;/a&gt;&lt;/li>
+ &lt;/ul&gt;
+&lt;/div&gt;
+</pre>
+ </div>
+</div>
+
+</section>
+
+
+
+<section id="alerts">
+ <div class="page-header">
+ <h1>Alerts &amp; Errors <small>Styles for success, warning, and error messages or alerts</small></h1>
+ </div>
+ <div class="row">
+ <div class="span4 columns">
+ <h2>Basic alerts</h2>
+ <p>One-line messages for highlighting the failure, possible failure, or success of an action. Particularly useful for forms.</p>
+ </div>
+ <div class="span12 columns">
+ <div class="alert-message error">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Oh snap!</strong> Change this and that and try again.</p>
+ </div>
+ <div class="alert-message warning">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Holy gaucamole!</strong> Best check yo self, you're not looking too good.</p>
+ </div>
+ <div class="alert-message success">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Well done!</strong> You successfully read this alert message.</p>
+ </div>
+ <div class="alert-message info">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Heads up!</strong> This is an alert that needs your attention, but it's not a huge priority just yet.</p>
+ </div>
+ </div>
+ </div>
+ <div class="row">
+ <div class="span4 columns">
+ <h2>Block messages</h2>
+ <p>For messages that require a bit of explanation, we have paragraph style alerts. These are perfect for bubbling up longer error messages, warning a user of a pending action, or just presenting information for more emphasis on the page.</p>
+ </div>
+ <div class="span12 columns">
+ <div class="alert-message block-message error">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Oh snap! You got an error!</strong> Change this and that and try again. Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum.</p>
+ <p><a class="btn small" href="#">Take This Action</a> <a class="btn small" href="#">Or Do This</a></p>
+ </div>
+ <div class="alert-message block-message warning">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Holy gaucamole! This is a warning!</strong> Best check yo self, you're not looking too good. Nulla vitae elit libero, a pharetra augue. Praesent commodo cursus magna, vel scelerisque nisl consectetur et.</p>
+ <p><a class="btn small" href="#">Take This Action</a> <a class="btn small" href="#">Or Do This</a></p>
+ </div>
+ <div class="alert-message block-message success">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Well done!</strong> You successfully read this alert message. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas faucibus mollis interdum.</p>
+ <p><a class="btn small" href="#">Take This Action</a> <a class="btn small" href="#">Or Do This</a></p>
+ </div>
+ <div class="alert-message block-message info">
+ <a class="close" href="#">&times;</a>
+ <p><strong>Heads up!</strong> This is an alert that needs your attention, but it's not a huge priority just yet.</p>
+ <p><a class="btn small" href="#">Take This Action</a> <a class="btn small" href="#">Or Do This</a></p>
+ </div>
+ </div>
+ </div>
+</section>
+
+
+
+
+ </div> <!-- /container -->
+
+ <div id="footer">
+ <div class="inner">
+ <div class="container">
+ <p>Copyright and all that stuff.</p>
+ </div>
+ </div>
+ </div>
+
+ </body>
+</html> \ No newline at end of file