├── docs ├── nd │ ├── Data │ │ ├── ClassHierarchy.nd │ │ ├── ImageFileInfo.nd │ │ ├── ImageReferenceTable.nd │ │ ├── SymbolTable.nd │ │ ├── ConfigFileInfo.nd │ │ ├── PreviousSettings.nd │ │ ├── IndexInfo.nd │ │ ├── PreviousMenuState.nd │ │ └── FileInfo.nd │ ├── Menu.txt │ ├── Topics.txt │ └── Languages.txt ├── styles │ ├── main.css │ └── 2.css ├── index.html ├── search │ ├── NoResults.html │ ├── GeneralL.html │ ├── GeneralF.html │ ├── GeneralP.html │ ├── GeneralK.html │ ├── GeneralR.html │ ├── EventsH.html │ ├── FilesJ.html │ ├── GeneralJ.html │ ├── FunctionsH.html │ ├── PropertiesS.html │ ├── GeneralE.html │ ├── GeneralH.html │ ├── GeneralS.html │ ├── GeneralD.html │ └── PropertiesD.html ├── javascript │ └── searchdata.js └── index │ ├── Events.html │ ├── Files.html │ ├── Functions.html │ └── Properties.html ├── examples ├── donate.gif ├── config.php ├── bug-webkit-hash-iframe │ ├── index.php │ └── child │ │ └── index.php ├── bug-safari-back-from-diff-domain │ └── index.php ├── hashchange │ └── index.php ├── bug-chrome-back-button │ └── index.php ├── index.php └── document_domain │ └── index.php ├── shared ├── SyntaxHighlighter │ ├── styles │ │ ├── help.png │ │ ├── printer.png │ │ ├── wrapping.png │ │ ├── magnifier.png │ │ ├── page_white_code.png │ │ ├── page_white_copy.png │ │ ├── shThemeEmacs.css │ │ ├── shThemeMidnight.css │ │ ├── shThemeDjango.css │ │ ├── shThemeRDark.css │ │ ├── shThemeFadeToGrey.css │ │ └── shThemeDefault.css │ ├── scripts │ │ ├── clipboard.swf │ │ ├── shBrushPlain.js │ │ ├── shBrushDiff.js │ │ ├── shBrushJScript.js │ │ ├── shBrushPython.js │ │ ├── shBrushScala.js │ │ ├── shBrushJava.js │ │ ├── shBrushXml.js │ │ ├── shBrushRuby.js │ │ ├── shLegacy.js │ │ ├── shBrushJavaFX.js │ │ ├── shBrushCSharp.js │ │ ├── shBrushVb.js │ │ ├── shBrushDelphi.js │ │ ├── shBrushAS3.js │ │ ├── shBrushBash.js │ │ ├── shBrushGroovy.js │ │ ├── shBrushSql.js │ │ ├── shBrushPerl.js │ │ └── shBrushPowerShell.js │ ├── test.html │ └── src │ │ └── shLegacy.js └── json_echo.php ├── document-domain.html ├── LICENSE-MIT ├── jquery.ba-hashchange.min.js ├── unit ├── index.html ├── jquery-1.2.6.html ├── jquery-1.3.2.html ├── jquery-1.4.1.html ├── ie7-compat.html ├── document-domain.html ├── qunit.css └── unit.js └── README.markdown /docs/nd/Data/ClassHierarchy.nd: -------------------------------------------------------------------------------- 1 | ( -------------------------------------------------------------------------------- /docs/nd/Data/ImageFileInfo.nd: -------------------------------------------------------------------------------- 1 | ( -------------------------------------------------------------------------------- /docs/nd/Data/ImageReferenceTable.nd: -------------------------------------------------------------------------------- 1 | ( -------------------------------------------------------------------------------- /docs/styles/main.css: -------------------------------------------------------------------------------- 1 | @import URL("1.css"); 2 | @import URL("2.css"); 3 | -------------------------------------------------------------------------------- /examples/donate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/examples/donate.gif -------------------------------------------------------------------------------- /docs/nd/Data/SymbolTable.nd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/docs/nd/Data/SymbolTable.nd -------------------------------------------------------------------------------- /docs/index.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /docs/nd/Data/ConfigFileInfo.nd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/docs/nd/Data/ConfigFileInfo.nd -------------------------------------------------------------------------------- /docs/nd/Data/PreviousSettings.nd: -------------------------------------------------------------------------------- 1 | ($/srv/projects/jquery-hashchange-beta1)/srv/projects/jquery-hashchange-beta/docsHTML -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/styles/help.png -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/printer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/styles/printer.png -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/wrapping.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/styles/wrapping.png -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/clipboard.swf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/scripts/clipboard.swf -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/magnifier.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/styles/magnifier.png -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/page_white_code.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/styles/page_white_code.png -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/page_white_copy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/cowboy/jquery-hashchange/HEAD/shared/SyntaxHighlighter/styles/page_white_copy.png -------------------------------------------------------------------------------- /docs/nd/Data/IndexInfo.nd: -------------------------------------------------------------------------------- 1 | (GeneralFunctionFileEventProperty -------------------------------------------------------------------------------- /document-domain.html: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /docs/nd/Data/PreviousMenuState.nd: -------------------------------------------------------------------------------- 1 | (jQuery hashchange event 8 | Project Home, 9 | Documentation, 10 | Source 11 | 23 | -------------------------------------------------------------------------------- /docs/search/NoResults.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
No Matches
-------------------------------------------------------------------------------- /LICENSE-MIT: -------------------------------------------------------------------------------- 1 | Copyright (c) 2010 "Cowboy" Ben Alman 2 | 3 | Permission is hereby granted, free of charge, to any person 4 | obtaining a copy of this software and associated documentation 5 | files (the "Software"), to deal in the Software without 6 | restriction, including without limitation the rights to use, 7 | copy, modify, merge, publish, distribute, sublicense, and/or sell 8 | copies of the Software, and to permit persons to whom the 9 | Software is furnished to do so, subject to the following 10 | conditions: 11 | 12 | The above copyright notice and this permission notice shall be 13 | included in all copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES 17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT 19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, 20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING 21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 22 | OTHER DEALINGS IN THE SOFTWARE. 23 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushPlain.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Plain = function() 31 | { 32 | }; 33 | 34 | SyntaxHighlighter.brushes.Plain.prototype = new SyntaxHighlighter.Highlighter(); 35 | SyntaxHighlighter.brushes.Plain.aliases = ['text', 'plain']; 36 | -------------------------------------------------------------------------------- /docs/search/GeneralL.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Loading...
Searching...
No Matches
-------------------------------------------------------------------------------- /docs/search/GeneralF.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Loading...
Searching...
No Matches
-------------------------------------------------------------------------------- /docs/search/GeneralP.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Loading...
Searching...
No Matches
-------------------------------------------------------------------------------- /docs/search/GeneralK.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Loading...
Searching...
No Matches
-------------------------------------------------------------------------------- /docs/search/GeneralR.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Loading...
Searching...
No Matches
-------------------------------------------------------------------------------- /docs/search/EventsH.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Loading...
Searching...
No Matches
-------------------------------------------------------------------------------- /jquery.ba-hashchange.min.js: -------------------------------------------------------------------------------- 1 | /* 2 | * jQuery hashchange event - v1.3 - 7/21/2010 3 | * http://benalman.com/projects/jquery-hashchange-plugin/ 4 | * 5 | * Copyright (c) 2010 "Cowboy" Ben Alman 6 | * Dual licensed under the MIT and GPL licenses. 7 | * http://benalman.com/about/license/ 8 | */ 9 | (function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$(' 87 | 88 | 89 | 100 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushCSharp.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.CSharp = function() 31 | { 32 | var keywords = 'abstract as base bool break byte case catch char checked class const ' + 33 | 'continue decimal default delegate do double else enum event explicit ' + 34 | 'extern false finally fixed float for foreach get goto if implicit in int ' + 35 | 'interface internal is lock long namespace new null object operator out ' + 36 | 'override params private protected public readonly ref return sbyte sealed set ' + 37 | 'short sizeof stackalloc static string struct switch this throw true try ' + 38 | 'typeof uint ulong unchecked unsafe ushort using virtual void while'; 39 | 40 | function fixComments(match, regexInfo) 41 | { 42 | var css = (match[0].indexOf("///") == 0) 43 | ? 'color1' 44 | : 'comments' 45 | ; 46 | 47 | return [new SyntaxHighlighter.Match(match[0], match.index, css)]; 48 | } 49 | 50 | this.regexList = [ 51 | { regex: SyntaxHighlighter.regexLib.singleLineCComments, func : fixComments }, // one line comments 52 | { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments 53 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings 54 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings 55 | { regex: /^\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion 56 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // c# keyword 57 | ]; 58 | 59 | this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); 60 | }; 61 | 62 | SyntaxHighlighter.brushes.CSharp.prototype = new SyntaxHighlighter.Highlighter(); 63 | SyntaxHighlighter.brushes.CSharp.aliases = ['c#', 'c-sharp', 'csharp']; 64 | 65 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushVb.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Vb = function() 31 | { 32 | var keywords = 'AddHandler AddressOf AndAlso Alias And Ansi As Assembly Auto ' + 33 | 'Boolean ByRef Byte ByVal Call Case Catch CBool CByte CChar CDate ' + 34 | 'CDec CDbl Char CInt Class CLng CObj Const CShort CSng CStr CType ' + 35 | 'Date Decimal Declare Default Delegate Dim DirectCast Do Double Each ' + 36 | 'Else ElseIf End Enum Erase Error Event Exit False Finally For Friend ' + 37 | 'Function Get GetType GoSub GoTo Handles If Implements Imports In ' + 38 | 'Inherits Integer Interface Is Let Lib Like Long Loop Me Mod Module ' + 39 | 'MustInherit MustOverride MyBase MyClass Namespace New Next Not Nothing ' + 40 | 'NotInheritable NotOverridable Object On Option Optional Or OrElse ' + 41 | 'Overloads Overridable Overrides ParamArray Preserve Private Property ' + 42 | 'Protected Public RaiseEvent ReadOnly ReDim REM RemoveHandler Resume ' + 43 | 'Return Select Set Shadows Shared Short Single Static Step Stop String ' + 44 | 'Structure Sub SyncLock Then Throw To True Try TypeOf Unicode Until ' + 45 | 'Variant When While With WithEvents WriteOnly Xor'; 46 | 47 | this.regexList = [ 48 | { regex: /'.*$/gm, css: 'comments' }, // one line comments 49 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings 50 | { regex: /^\s*#.*$/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion 51 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // vb keyword 52 | ]; 53 | 54 | this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); 55 | }; 56 | 57 | SyntaxHighlighter.brushes.Vb.prototype = new SyntaxHighlighter.Highlighter(); 58 | SyntaxHighlighter.brushes.Vb.aliases = ['vb', 'vbnet']; 59 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushDelphi.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Delphi = function() 31 | { 32 | var keywords = 'abs addr and ansichar ansistring array as asm begin boolean byte cardinal ' + 33 | 'case char class comp const constructor currency destructor div do double ' + 34 | 'downto else end except exports extended false file finalization finally ' + 35 | 'for function goto if implementation in inherited int64 initialization ' + 36 | 'integer interface is label library longint longword mod nil not object ' + 37 | 'of on or packed pansichar pansistring pchar pcurrency pdatetime pextended ' + 38 | 'pint64 pointer private procedure program property pshortstring pstring ' + 39 | 'pvariant pwidechar pwidestring protected public published raise real real48 ' + 40 | 'record repeat set shl shortint shortstring shr single smallint string then ' + 41 | 'threadvar to true try type unit until uses val var varirnt while widechar ' + 42 | 'widestring with word write writeln xor'; 43 | 44 | this.regexList = [ 45 | { regex: /\(\*[\s\S]*?\*\)/gm, css: 'comments' }, // multiline comments (* *) 46 | { regex: /{(?!\$)[\s\S]*?}/gm, css: 'comments' }, // multiline comments { } 47 | { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line 48 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings 49 | { regex: /\{\$[a-zA-Z]+ .+\}/g, css: 'color1' }, // compiler Directives and Region tags 50 | { regex: /\b[\d\.]+\b/g, css: 'value' }, // numbers 12345 51 | { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // numbers $F5D3 52 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword 53 | ]; 54 | }; 55 | 56 | SyntaxHighlighter.brushes.Delphi.prototype = new SyntaxHighlighter.Highlighter(); 57 | SyntaxHighlighter.brushes.Delphi.aliases = ['delphi', 'pascal']; 58 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushAS3.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.AS3 = function() 31 | { 32 | // Created by Peter Atoria @ http://iAtoria.com 33 | 34 | var inits = 'class interface function package'; 35 | 36 | var keywords = '-Infinity ...rest Array as AS3 Boolean break case catch const continue Date decodeURI ' + 37 | 'decodeURIComponent default delete do dynamic each else encodeURI encodeURIComponent escape ' + 38 | 'extends false final finally flash_proxy for get if implements import in include Infinity ' + 39 | 'instanceof int internal is isFinite isNaN isXMLName label namespace NaN native new null ' + 40 | 'Null Number Object object_proxy override parseFloat parseInt private protected public ' + 41 | 'return set static String super switch this throw true try typeof uint undefined unescape ' + 42 | 'use void while with' 43 | ; 44 | 45 | this.regexList = [ 46 | { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments 47 | { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments 48 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings 49 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings 50 | { regex: /\b([\d]+(\.[\d]+)?|0x[a-f0-9]+)\b/gi, css: 'value' }, // numbers 51 | { regex: new RegExp(this.getKeywords(inits), 'gm'), css: 'color3' }, // initializations 52 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords 53 | { regex: new RegExp('var', 'gm'), css: 'variable' }, // variable 54 | { regex: new RegExp('trace', 'gm'), css: 'color1' } // trace 55 | ]; 56 | 57 | this.forHtmlScript(SyntaxHighlighter.regexLib.scriptScriptTags); 58 | }; 59 | 60 | SyntaxHighlighter.brushes.AS3.prototype = new SyntaxHighlighter.Highlighter(); 61 | SyntaxHighlighter.brushes.AS3.aliases = ['actionscript3', 'as3']; 62 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushBash.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Bash = function() 31 | { 32 | var keywords = 'if fi then elif else for do done until while break continue case function return in eq ne gt lt ge le'; 33 | var commands = 'alias apropos awk bash bc bg builtin bzip2 cal cat cd cfdisk chgrp chmod chown chroot' + 34 | 'cksum clear cmp comm command cp cron crontab csplit cut date dc dd ddrescue declare df ' + 35 | 'diff diff3 dig dir dircolors dirname dirs du echo egrep eject enable env ethtool eval ' + 36 | 'exec exit expand export expr false fdformat fdisk fg fgrep file find fmt fold format ' + 37 | 'free fsck ftp gawk getopts grep groups gzip hash head history hostname id ifconfig ' + 38 | 'import install join kill less let ln local locate logname logout look lpc lpr lprint ' + 39 | 'lprintd lprintq lprm ls lsof make man mkdir mkfifo mkisofs mknod more mount mtools ' + 40 | 'mv netstat nice nl nohup nslookup open op passwd paste pathchk ping popd pr printcap ' + 41 | 'printenv printf ps pushd pwd quota quotacheck quotactl ram rcp read readonly renice ' + 42 | 'remsync rm rmdir rsync screen scp sdiff sed select seq set sftp shift shopt shutdown ' + 43 | 'sleep sort source split ssh strace su sudo sum symlink sync tail tar tee test time ' + 44 | 'times touch top traceroute trap tr true tsort tty type ulimit umask umount unalias ' + 45 | 'uname unexpand uniq units unset unshar useradd usermod users uuencode uudecode v vdir ' + 46 | 'vi watch wc whereis which who whoami Wget xargs yes' 47 | ; 48 | 49 | this.regexList = [ 50 | { regex: SyntaxHighlighter.regexLib.singleLinePerlComments, css: 'comments' }, // one line comments 51 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings 52 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // keywords 53 | { regex: new RegExp(this.getKeywords(commands), 'gm'), css: 'functions' } // commands 54 | ]; 55 | } 56 | 57 | SyntaxHighlighter.brushes.Bash.prototype = new SyntaxHighlighter.Highlighter(); 58 | SyntaxHighlighter.brushes.Bash.aliases = ['bash', 'shell']; 59 | 60 | -------------------------------------------------------------------------------- /docs/nd/Topics.txt: -------------------------------------------------------------------------------- 1 | Format: 1.4 2 | 3 | # This is the Natural Docs topics file for this project. If you change anything 4 | # here, it will apply to THIS PROJECT ONLY. If you'd like to change something 5 | # for all your projects, edit the Topics.txt in Natural Docs' Config directory 6 | # instead. 7 | 8 | 9 | # If you'd like to prevent keywords from being recognized by Natural Docs, you 10 | # can do it like this: 11 | # Ignore Keywords: [keyword], [keyword], ... 12 | # 13 | # Or you can use the list syntax like how they are defined: 14 | # Ignore Keywords: 15 | # [keyword] 16 | # [keyword], [plural keyword] 17 | # ... 18 | 19 | 20 | #------------------------------------------------------------------------------- 21 | # SYNTAX: 22 | # 23 | # Topic Type: [name] 24 | # Alter Topic Type: [name] 25 | # Creates a new topic type or alters one from the main file. Each type gets 26 | # its own index and behavior settings. Its name can have letters, numbers, 27 | # spaces, and these charaters: - / . ' 28 | # 29 | # Plural: [name] 30 | # Sets the plural name of the topic type, if different. 31 | # 32 | # Keywords: 33 | # [keyword] 34 | # [keyword], [plural keyword] 35 | # ... 36 | # Defines or adds to the list of keywords for the topic type. They may only 37 | # contain letters, numbers, and spaces and are not case sensitive. Plural 38 | # keywords are used for list topics. You can redefine keywords found in the 39 | # main topics file. 40 | # 41 | # Index: [yes|no] 42 | # Whether the topics get their own index. Defaults to yes. Everything is 43 | # included in the general index regardless of this setting. 44 | # 45 | # Scope: [normal|start|end|always global] 46 | # How the topics affects scope. Defaults to normal. 47 | # normal - Topics stay within the current scope. 48 | # start - Topics start a new scope for all the topics beneath it, 49 | # like class topics. 50 | # end - Topics reset the scope back to global for all the topics 51 | # beneath it. 52 | # always global - Topics are defined as global, but do not change the scope 53 | # for any other topics. 54 | # 55 | # Class Hierarchy: [yes|no] 56 | # Whether the topics are part of the class hierarchy. Defaults to no. 57 | # 58 | # Page Title If First: [yes|no] 59 | # Whether the topic's title becomes the page title if it's the first one in 60 | # a file. Defaults to no. 61 | # 62 | # Break Lists: [yes|no] 63 | # Whether list topics should be broken into individual topics in the output. 64 | # Defaults to no. 65 | # 66 | # Can Group With: [type], [type], ... 67 | # Defines a list of topic types that this one can possibly be grouped with. 68 | # Defaults to none. 69 | #------------------------------------------------------------------------------- 70 | 71 | # The following topics are defined in the main file, if you'd like to alter 72 | # their behavior or add keywords: 73 | # 74 | # Generic, Class, Interface, Section, File, Group, Function, Variable, 75 | # Property, Type, Constant, Enumeration, Event, Delegate, Macro, 76 | # Database, Database Table, Database View, Database Index, Database 77 | # Cursor, Database Trigger, Cookie, Build Target 78 | 79 | # If you add something that you think would be useful to other developers 80 | # and should be included in Natural Docs by default, please e-mail it to 81 | # topics [at] naturaldocs [dot] org. 82 | -------------------------------------------------------------------------------- /docs/styles/2.css: -------------------------------------------------------------------------------- 1 | /* 2 | bg: #FDEBDC 3 | bg1: #FFD6AF 4 | bg2: #FFAB59 5 | orange: #FF7F00 6 | brown: #913D00 7 | lt. brown: #C4884F 8 | */ 9 | 10 | .IndexPage #Index { 11 | margin-left: 31ex !important; 12 | } 13 | 14 | #MSelected { 15 | -webkit-border-top-right-radius: 10px; 16 | -webkit-border-bottom-right-radius: 10px; 17 | } 18 | 19 | .MGroup #MSelected { 20 | -webkit-border-top-left-radius: 10px; 21 | -webkit-border-bottom-left-radius: 10px; 22 | } 23 | 24 | .Safari #MSelected { 25 | border-width: 1px; 26 | border-left-width: 0; 27 | } 28 | 29 | .Safari .MGroup #MSelected { 30 | border-left-width: 1px; 31 | } 32 | 33 | .SBorder { 34 | -webkit-border-radius: 20px; 35 | } 36 | 37 | 38 | body { 39 | font-size: 0.75em; 40 | line-height: 1.6em; 41 | font-family: Arial, sans-serif; 42 | } 43 | 44 | a:link, a:visited { 45 | color: #913D00; 46 | text-decoration: underline; 47 | } 48 | 49 | a:hover { 50 | color: #FF7F00; 51 | } 52 | 53 | p { 54 | margin-left: 5ex; 55 | text-indent: 0; 56 | margin-bottom: 0.6em; 57 | } 58 | 59 | .Summary a:link, .Summary a:visited { 60 | text-decoration: none; 61 | } 62 | 63 | .CClass .CTitle, .CInterface .CTitle, .CDatabase .CTitle, .CDatabaseTable .CTitle, .CSection .CTitle, 64 | #MainTopic .CTitle, 65 | .STitle { 66 | text-transform: uppercase; 67 | font-family: "Gill Sans", "Gill Sans MT", Arial, Helvetica, sans-serif; 68 | } 69 | 70 | .CClass .CTitle, .CInterface .CTitle, .CDatabase .CTitle, .CDatabaseTable .CTitle, .CSection .CTitle, 71 | .IPageTitle, 72 | #MainTopic .CTitle { 73 | color: #913D00; 74 | font-size: 22px; 75 | font-weight: 400; 76 | 77 | background: #FDEBDC; 78 | border: none; 79 | } 80 | 81 | .CClass .CTitle, .CInterface .CTitle, .CDatabase .CTitle, .CDatabaseTable .CTitle, .CSection .CTitle { 82 | border-top: 2px solid #913D00; 83 | } 84 | 85 | .CGroup .CTitle { 86 | color: #913D00; 87 | font-family: "Gill Sans", "Gill Sans MT", Arial, Helvetica, sans-serif; 88 | font-weight: 700; 89 | font-size: 130%; 90 | font-variant: none; 91 | border-bottom: 2px solid #913D00; 92 | } 93 | 94 | .CTitle { 95 | border-color: #C4884F; 96 | line-height: 1.2em; 97 | } 98 | 99 | .ContentPage #Content { 100 | background: #FDEBDC; 101 | } 102 | 103 | .STitle { 104 | color: #FF7F00; 105 | font-size: 140%; 106 | font-weight: 700; 107 | margin: 1.2em 0 0.3em; 108 | } 109 | 110 | .CBody pre { 111 | margin-left: 5ex; 112 | } 113 | 114 | .CBody pre, 115 | .CDLEntry { 116 | color: #913D00; 117 | font-family: Monaco, "Courier New", Courier, monospace; 118 | font-size: 9pt; 119 | } 120 | 121 | .SBorder { 122 | background-color: #fff; 123 | border: 1px solid #913D00; 124 | padding: 15px; 125 | } 126 | 127 | .SMarked { 128 | background-color: #eee; 129 | } 130 | 131 | .ContentPage, .IndexPage, .FramedMenuPage { 132 | background-color: #FFAB59; 133 | } 134 | 135 | .MEntry a:link, .MEntry a:hover, .MEntry a:visited, 136 | .MGroup a:link, .MGroup a:hover, .MGroup a:visited { 137 | color: #000; 138 | } 139 | 140 | #MSearchField { 141 | color: #913D00; 142 | background: #FDEBDC; 143 | } 144 | 145 | #Footer a:link, #Footer a:hover, #Footer a:visited { 146 | color: #913D00; 147 | } 148 | 149 | .INavigationBar { 150 | background: #FFD6AF; 151 | border-top: 1px solid #000; 152 | border-bottom: 1px solid #000; 153 | } 154 | 155 | #MSelected { 156 | color: #913D00; 157 | border-color: #913D00; 158 | } 159 | 160 | 161 | 162 | -------------------------------------------------------------------------------- /docs/javascript/searchdata.js: -------------------------------------------------------------------------------- 1 | var indexSectionsWithContent = { 2 | "General": { 3 | "Symbols": false, 4 | "Numbers": false, 5 | "A": false, 6 | "B": false, 7 | "C": false, 8 | "D": false, 9 | "E": true, 10 | "F": false, 11 | "G": false, 12 | "H": true, 13 | "I": false, 14 | "J": true, 15 | "K": false, 16 | "L": true, 17 | "M": false, 18 | "N": false, 19 | "O": true, 20 | "P": true, 21 | "Q": false, 22 | "R": true, 23 | "S": true, 24 | "T": false, 25 | "U": false, 26 | "V": false, 27 | "W": false, 28 | "X": false, 29 | "Y": false, 30 | "Z": false 31 | }, 32 | "Functions": { 33 | "Symbols": false, 34 | "Numbers": false, 35 | "A": false, 36 | "B": false, 37 | "C": false, 38 | "D": false, 39 | "E": false, 40 | "F": false, 41 | "G": false, 42 | "H": true, 43 | "I": false, 44 | "J": false, 45 | "K": false, 46 | "L": false, 47 | "M": false, 48 | "N": false, 49 | "O": false, 50 | "P": false, 51 | "Q": false, 52 | "R": false, 53 | "S": false, 54 | "T": false, 55 | "U": false, 56 | "V": false, 57 | "W": false, 58 | "X": false, 59 | "Y": false, 60 | "Z": false 61 | }, 62 | "Files": { 63 | "Symbols": false, 64 | "Numbers": false, 65 | "A": false, 66 | "B": false, 67 | "C": false, 68 | "D": false, 69 | "E": false, 70 | "F": false, 71 | "G": false, 72 | "H": false, 73 | "I": false, 74 | "J": true, 75 | "K": false, 76 | "L": false, 77 | "M": false, 78 | "N": false, 79 | "O": false, 80 | "P": false, 81 | "Q": false, 82 | "R": false, 83 | "S": false, 84 | "T": false, 85 | "U": false, 86 | "V": false, 87 | "W": false, 88 | "X": false, 89 | "Y": false, 90 | "Z": false 91 | }, 92 | "Events": { 93 | "Symbols": false, 94 | "Numbers": false, 95 | "A": false, 96 | "B": false, 97 | "C": false, 98 | "D": false, 99 | "E": false, 100 | "F": false, 101 | "G": false, 102 | "H": true, 103 | "I": false, 104 | "J": false, 105 | "K": false, 106 | "L": false, 107 | "M": false, 108 | "N": false, 109 | "O": false, 110 | "P": false, 111 | "Q": false, 112 | "R": false, 113 | "S": false, 114 | "T": false, 115 | "U": false, 116 | "V": false, 117 | "W": false, 118 | "X": false, 119 | "Y": false, 120 | "Z": false 121 | }, 122 | "Properties": { 123 | "Symbols": false, 124 | "Numbers": false, 125 | "A": false, 126 | "B": false, 127 | "C": false, 128 | "D": true, 129 | "E": false, 130 | "F": false, 131 | "G": false, 132 | "H": false, 133 | "I": false, 134 | "J": false, 135 | "K": false, 136 | "L": false, 137 | "M": false, 138 | "N": false, 139 | "O": false, 140 | "P": false, 141 | "Q": false, 142 | "R": false, 143 | "S": true, 144 | "T": false, 145 | "U": false, 146 | "V": false, 147 | "W": false, 148 | "X": false, 149 | "Y": false, 150 | "Z": false 151 | } 152 | } -------------------------------------------------------------------------------- /docs/index/Events.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Event Index 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Event Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 hashchange event
15 | 16 |
Fired when location.hash changes.
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /docs/index/Files.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | File Index 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
File Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
J
 jQuery hashchange event
15 | 16 |
Version: 1.3, Last updated: 7/21/2010
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushGroovy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Groovy = function() 31 | { 32 | // Contributed by Andres Almiray 33 | // http://jroller.com/aalmiray/entry/nice_source_code_syntax_highlighter 34 | 35 | var keywords = 'as assert break case catch class continue def default do else extends finally ' + 36 | 'if in implements import instanceof interface new package property return switch ' + 37 | 'throw throws try while public protected private static'; 38 | var types = 'void boolean byte char short int long float double'; 39 | var constants = 'null'; 40 | var methods = 'allProperties count get size '+ 41 | 'collect each eachProperty eachPropertyName eachWithIndex find findAll ' + 42 | 'findIndexOf grep inject max min reverseEach sort ' + 43 | 'asImmutable asSynchronized flatten intersect join pop reverse subMap toList ' + 44 | 'padRight padLeft contains eachMatch toCharacter toLong toUrl tokenize ' + 45 | 'eachFile eachFileRecurse eachB yte eachLine readBytes readLine getText ' + 46 | 'splitEachLine withReader append encodeBase64 decodeBase64 filterLine ' + 47 | 'transformChar transformLine withOutputStream withPrintWriter withStream ' + 48 | 'withStreams withWriter withWriterAppend write writeLine '+ 49 | 'dump inspect invokeMethod print println step times upto use waitForOrKill '+ 50 | 'getText'; 51 | 52 | this.regexList = [ 53 | { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments 54 | { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments 55 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings 56 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings 57 | { regex: /""".*"""/g, css: 'string' }, // GStrings 58 | { regex: new RegExp('\\b([\\d]+(\\.[\\d]+)?|0x[a-f0-9]+)\\b', 'gi'), css: 'value' }, // numbers 59 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' }, // goovy keyword 60 | { regex: new RegExp(this.getKeywords(types), 'gm'), css: 'color1' }, // goovy/java type 61 | { regex: new RegExp(this.getKeywords(constants), 'gm'), css: 'constants' }, // constants 62 | { regex: new RegExp(this.getKeywords(methods), 'gm'), css: 'functions' } // methods 63 | ]; 64 | 65 | this.forHtmlScript(SyntaxHighlighter.regexLib.aspScriptTags); 66 | } 67 | 68 | SyntaxHighlighter.brushes.Groovy.prototype = new SyntaxHighlighter.Highlighter(); 69 | SyntaxHighlighter.brushes.Groovy.aliases = ['groovy']; 70 | -------------------------------------------------------------------------------- /docs/index/Functions.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Function Index 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Function Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
H
 hashchange, jQuery.fn
15 | 16 |
Bind a handler to the window.onhashchange event or trigger all bound window.onhashchange event handlers.
17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushSql.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Sql = function() 31 | { 32 | var funcs = 'abs avg case cast coalesce convert count current_timestamp ' + 33 | 'current_user day isnull left lower month nullif replace right ' + 34 | 'session_user space substring sum system_user upper user year'; 35 | 36 | var keywords = 'absolute action add after alter as asc at authorization begin bigint ' + 37 | 'binary bit by cascade char character check checkpoint close collate ' + 38 | 'column commit committed connect connection constraint contains continue ' + 39 | 'create cube current current_date current_time cursor database date ' + 40 | 'deallocate dec decimal declare default delete desc distinct double drop ' + 41 | 'dynamic else end end-exec escape except exec execute false fetch first ' + 42 | 'float for force foreign forward free from full function global goto grant ' + 43 | 'group grouping having hour ignore index inner insensitive insert instead ' + 44 | 'int integer intersect into is isolation key last level load local max min ' + 45 | 'minute modify move name national nchar next no numeric of off on only ' + 46 | 'open option order out output partial password precision prepare primary ' + 47 | 'prior privileges procedure public read real references relative repeatable ' + 48 | 'restrict return returns revoke rollback rollup rows rule schema scroll ' + 49 | 'second section select sequence serializable set size smallint static ' + 50 | 'statistics table temp temporary then time timestamp to top transaction ' + 51 | 'translation trigger true truncate uncommitted union unique update values ' + 52 | 'varchar varying view when where with work'; 53 | 54 | var operators = 'all and any between cross in join like not null or outer some'; 55 | 56 | this.regexList = [ 57 | { regex: /--(.*)$/gm, css: 'comments' }, // one line and multiline comments 58 | { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings 59 | { regex: SyntaxHighlighter.regexLib.multiLineSingleQuotedString, css: 'string' }, // single quoted strings 60 | { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'color2' }, // functions 61 | { regex: new RegExp(this.getKeywords(operators), 'gmi'), css: 'color1' }, // operators and such 62 | { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' } // keyword 63 | ]; 64 | }; 65 | 66 | SyntaxHighlighter.brushes.Sql.prototype = new SyntaxHighlighter.Highlighter(); 67 | SyntaxHighlighter.brushes.Sql.aliases = ['sql']; 68 | 69 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushPerl.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.Perl = function() 31 | { 32 | // Contributed by David Simmons-Duffin and Marty Kube 33 | 34 | var funcs = 35 | 'abs accept alarm atan2 bind binmode chdir chmod chomp chop chown chr ' + 36 | 'chroot close closedir connect cos crypt defined delete each endgrent ' + 37 | 'endhostent endnetent endprotoent endpwent endservent eof exec exists ' + 38 | 'exp fcntl fileno flock fork format formline getc getgrent getgrgid ' + 39 | 'getgrnam gethostbyaddr gethostbyname gethostent getlogin getnetbyaddr ' + 40 | 'getnetbyname getnetent getpeername getpgrp getppid getpriority ' + 41 | 'getprotobyname getprotobynumber getprotoent getpwent getpwnam getpwuid ' + 42 | 'getservbyname getservbyport getservent getsockname getsockopt glob ' + 43 | 'gmtime grep hex index int ioctl join keys kill lc lcfirst length link ' + 44 | 'listen localtime lock log lstat map mkdir msgctl msgget msgrcv msgsnd ' + 45 | 'oct open opendir ord pack pipe pop pos print printf prototype push ' + 46 | 'quotemeta rand read readdir readline readlink readpipe recv rename ' + 47 | 'reset reverse rewinddir rindex rmdir scalar seek seekdir select semctl ' + 48 | 'semget semop send setgrent sethostent setnetent setpgrp setpriority ' + 49 | 'setprotoent setpwent setservent setsockopt shift shmctl shmget shmread ' + 50 | 'shmwrite shutdown sin sleep socket socketpair sort splice split sprintf ' + 51 | 'sqrt srand stat study substr symlink syscall sysopen sysread sysseek ' + 52 | 'system syswrite tell telldir time times tr truncate uc ucfirst umask ' + 53 | 'undef unlink unpack unshift utime values vec wait waitpid warn write'; 54 | 55 | var keywords = 56 | 'bless caller continue dbmclose dbmopen die do dump else elsif eval exit ' + 57 | 'for foreach goto if import last local my next no our package redo ref ' + 58 | 'require return sub tie tied unless untie until use wantarray while'; 59 | 60 | this.regexList = [ 61 | { regex: new RegExp('#[^!].*$', 'gm'), css: 'comments' }, 62 | { regex: new RegExp('^\\s*#!.*$', 'gm'), css: 'preprocessor' }, // shebang 63 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, 64 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, 65 | { regex: new RegExp('(\\$|@|%)\\w+', 'g'), css: 'variable' }, 66 | { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, 67 | { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } 68 | ]; 69 | 70 | this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags); 71 | } 72 | 73 | SyntaxHighlighter.brushes.Perl.prototype = new SyntaxHighlighter.Highlighter(); 74 | SyntaxHighlighter.brushes.Perl.aliases = ['perl', 'Perl', 'pl']; -------------------------------------------------------------------------------- /unit/qunit.css: -------------------------------------------------------------------------------- 1 | 2 | body { 3 | font-family:"Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial; 4 | } 5 | 6 | h3, 7 | p, 8 | #qunit-userAgent, 9 | #qunit-banner, 10 | ol { 11 | margin: 0; 12 | padding: 0; 13 | } 14 | 15 | li { 16 | list-style-position: inside; 17 | } 18 | 19 | #qunit-tests { 20 | font-size: smaller; 21 | /* IE6/7 seem to have trouble displaying an OL with no LI children */ 22 | #border-bottom: 1px solid #fff; 23 | #margin-bottom: -1px; 24 | } 25 | 26 | #qunit-tests li { 27 | padding: 0.4em 2.5em; 28 | border-bottom: 1px solid #fff; 29 | font-size: small; 30 | } 31 | 32 | #qunit-tests li ol { 33 | margin-top: 0.5em; 34 | padding: 0.5em; 35 | background-color: #fff; 36 | -moz-box-shadow: inset 0px 1px 8px #ccc; 37 | -webkit-box-shadow: inset 0px 1px 8px #ccc; 38 | box-shadow: inset 0px 1px 8px #ccc; 39 | } 40 | 41 | #qunit-tests li ol, 42 | #qunit-header, 43 | #qunit-testresult { 44 | -moz-border-radius: 10px; 45 | -webkit-border-radius: 10px; 46 | border-radius: 10px; 47 | } 48 | 49 | #qunit-tests li li { 50 | border-bottom: none; 51 | margin: 0.5em; 52 | background-color: #fff; 53 | list-style-position: inside; 54 | padding: 0.4em 0.5em; 55 | } 56 | 57 | #qunit-tests li li.pass { 58 | border-left: 26px solid #0a0; 59 | background-color: #fff; 60 | color: #0a0; 61 | } 62 | 63 | #qunit-tests li li.fail { 64 | border-left: 26px solid #f00; 65 | background-color: #fff; 66 | color: #f00; 67 | } 68 | 69 | #qunit-tests li.pass, 70 | h3, 71 | p { 72 | color: #913D00; 73 | background-color: #FDEBDC; 74 | } 75 | 76 | h3, 77 | p { 78 | font-size: small; 79 | padding: 0.4em 0.5em 0.4em 2.5em; 80 | border-bottom: 1px solid #fff; 81 | } 82 | 83 | h3 a, 84 | p a { 85 | color: #FF7F00; 86 | } 87 | 88 | h3 a:hover, 89 | p a:hover { 90 | color: #000; 91 | } 92 | 93 | #qunit-tests li.fail { 94 | background-color: #f99; 95 | color: #000; 96 | } 97 | 98 | #qunit-tests li strong { 99 | cursor: pointer; 100 | } 101 | 102 | #qunit-header { 103 | color: #fff; 104 | background-color: #FF7F00; 105 | margin: 0; 106 | padding: 0.5em 2em; 107 | -moz-border-radius-bottomright: 0; 108 | -moz-border-radius-bottomleft: 0; 109 | -webkit-border-bottom-right-radius: 0; 110 | -webkit-border-bottom-left-radius: 0; 111 | border-bottom-right-radius: 0; 112 | border-bottom-left-radius: 0; 113 | } 114 | 115 | #qunit-header h1 { 116 | float: left; 117 | margin: 0; 118 | padding: 0; 119 | line-height: 2em; 120 | font-size: x-large; 121 | } 122 | 123 | #qunit-header small { 124 | float: right; 125 | font-weight: 700; 126 | line-height: 3.5em; 127 | } 128 | 129 | #qunit-header a { 130 | color: #fff; 131 | } 132 | 133 | #qunit-header a:hover { 134 | color: #000; 135 | } 136 | 137 | /* Added span inside #qunit-banner to work around IE6 #id.class bug */ 138 | #qunit-banner span { 139 | display: block; 140 | height: 5px; 141 | _overflow: hidden; 142 | } 143 | 144 | #qunit-banner.qunit-pass span { 145 | background-color: #0a0; 146 | } 147 | 148 | #qunit-banner.qunit-fail span, 149 | #qunit-testrunner-toolbar { 150 | background-color: #f99; 151 | } 152 | 153 | #qunit-testrunner-toolbar { 154 | padding: 0; 155 | /*width: 80%;*/ 156 | padding: 0em 0 0.5em 2em; 157 | font-size: small; 158 | } 159 | 160 | #qunit-userAgent { 161 | background-color: #913D00; 162 | color: #fff; 163 | font-size: small; 164 | padding: 0.5em 0 0.5em 2.5em; 165 | } 166 | 167 | #qunit-testresult { 168 | margin: 0; 169 | font-size: small; 170 | color: #913D00; 171 | background-color: #FDEBDC; 172 | padding: 0.5em 0.5em 0.5em 2.5em; 173 | -moz-border-radius-topright: 0; 174 | -moz-border-radius-topleft: 0; 175 | -webkit-border-top-right-radius: 0; 176 | -webkit-border-top-left-radius: 0; 177 | border-top-right-radius: 0; 178 | border-top-left-radius: 0; 179 | } 180 | 181 | strong b.fail { 182 | color: #f00; 183 | } 184 | 185 | strong b.pass { 186 | color: #0a0; 187 | } 188 | -------------------------------------------------------------------------------- /examples/bug-safari-back-from-diff-domain/index.php: -------------------------------------------------------------------------------- 1 | 15 | 16 | 26 | 27 | (function(window){ 28 | 29 | // A convenient shortcut. 30 | var win_loc = window.location, 31 | loc = location, 32 | state; 33 | 34 | (function loopy(){ 35 | console.log([ 36 | 'win_loc.href: ' + typeof win_loc.href, 37 | 'loc.href: ' + typeof loc.href, 38 | 'location.href: ' + typeof location.href, 39 | 'window.location.href: ' + typeof window.location.href 40 | ].join(', ')); 41 | timeout_id = setTimeout( loopy, 1000 ); 42 | })(); 43 | 44 | })(this); 45 | 46 | 56 | 68 | 95 | 105 | 106 | 107 |

108 | 1 109 | Open this page in Safari 4. 110 |

111 | 112 |

113 | 2 114 | Open the debugging Error Console (cmd-opt-C) 115 |

116 | 117 |

118 | 3 119 | Notice that win_loc.href: string, loc.href: string, location.href: string, window.location.href: string is getting printed to the console. 120 | This is expected. 121 |

122 | 123 |

124 | 4 125 | Navigate to a page on a different domain, like Google or GitHub. 126 |

127 | 128 |

129 | 5 130 | Press the back button. 131 |

132 | 133 |

134 | 6 135 | Notice that win_loc.href: undefined, loc.href: undefined, location.href: string, window.location.href: string is getting printed to the console. 136 | What's up with those undefined, Safari? 137 |

138 | 139 |

Tested in Safari Version 4.0.4 (5531.21.10) / WebKit nightly r54415. 140 | Submitted to WebKit Bugzilla as Bug 34679.

141 | 142 |

The code

143 | 144 |
145 | 
146 | 
147 | 148 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/scripts/shBrushPowerShell.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | SyntaxHighlighter.brushes.PowerShell = function() 31 | { 32 | // Contributes by B.v.Zanten, Getronics 33 | // http://confluence.atlassian.com/display/CONFEXT/New+Code+Macro 34 | 35 | var keywords = 'Add-Content Add-History Add-Member Add-PSSnapin Clear(-Content)? Clear-Item ' + 36 | 'Clear-ItemProperty Clear-Variable Compare-Object ConvertFrom-SecureString Convert-Path ' + 37 | 'ConvertTo-Html ConvertTo-SecureString Copy(-Item)? Copy-ItemProperty Export-Alias ' + 38 | 'Export-Clixml Export-Console Export-Csv ForEach(-Object)? Format-Custom Format-List ' + 39 | 'Format-Table Format-Wide Get-Acl Get-Alias Get-AuthenticodeSignature Get-ChildItem Get-Command ' + 40 | 'Get-Content Get-Credential Get-Culture Get-Date Get-EventLog Get-ExecutionPolicy ' + 41 | 'Get-Help Get-History Get-Host Get-Item Get-ItemProperty Get-Location Get-Member ' + 42 | 'Get-PfxCertificate Get-Process Get-PSDrive Get-PSProvider Get-PSSnapin Get-Service ' + 43 | 'Get-TraceSource Get-UICulture Get-Unique Get-Variable Get-WmiObject Group-Object ' + 44 | 'Import-Alias Import-Clixml Import-Csv Invoke-Expression Invoke-History Invoke-Item ' + 45 | 'Join-Path Measure-Command Measure-Object Move(-Item)? Move-ItemProperty New-Alias ' + 46 | 'New-Item New-ItemProperty New-Object New-PSDrive New-Service New-TimeSpan ' + 47 | 'New-Variable Out-Default Out-File Out-Host Out-Null Out-Printer Out-String Pop-Location ' + 48 | 'Push-Location Read-Host Remove-Item Remove-ItemProperty Remove-PSDrive Remove-PSSnapin ' + 49 | 'Remove-Variable Rename-Item Rename-ItemProperty Resolve-Path Restart-Service Resume-Service ' + 50 | 'Select-Object Select-String Set-Acl Set-Alias Set-AuthenticodeSignature Set-Content ' + 51 | 'Set-Date Set-ExecutionPolicy Set-Item Set-ItemProperty Set-Location Set-PSDebug ' + 52 | 'Set-Service Set-TraceSource Set(-Variable)? Sort-Object Split-Path Start-Service ' + 53 | 'Start-Sleep Start-Transcript Stop-Process Stop-Service Stop-Transcript Suspend-Service ' + 54 | 'Tee-Object Test-Path Trace-Command Update-FormatData Update-TypeData Where(-Object)? ' + 55 | 'Write-Debug Write-Error Write(-Host)? Write-Output Write-Progress Write-Verbose Write-Warning'; 56 | var alias = 'ac asnp clc cli clp clv cpi cpp cvpa diff epal epcsv fc fl ' + 57 | 'ft fw gal gc gci gcm gdr ghy gi gl gm gp gps group gsv ' + 58 | 'gsnp gu gv gwmi iex ihy ii ipal ipcsv mi mp nal ndr ni nv oh rdr ' + 59 | 'ri rni rnp rp rsnp rv rvpa sal sasv sc select si sl sleep sort sp ' + 60 | 'spps spsv sv tee cat cd cp h history kill lp ls ' + 61 | 'mount mv popd ps pushd pwd r rm rmdir echo cls chdir del dir ' + 62 | 'erase rd ren type % \\?'; 63 | 64 | this.regexList = [ 65 | { regex: /#.*$/gm, css: 'comments' }, // one line comments 66 | { regex: /\$[a-zA-Z0-9]+\b/g, css: 'value' }, // variables $Computer1 67 | { regex: /\-[a-zA-Z]+\b/g, css: 'keyword' }, // Operators -not -and -eq 68 | { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // strings 69 | { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // strings 70 | { regex: new RegExp(this.getKeywords(keywords), 'gmi'), css: 'keyword' }, 71 | { regex: new RegExp(this.getKeywords(alias), 'gmi'), css: 'keyword' } 72 | ]; 73 | }; 74 | 75 | SyntaxHighlighter.brushes.PowerShell.prototype = new SyntaxHighlighter.Highlighter(); 76 | SyntaxHighlighter.brushes.PowerShell.aliases = ['powershell', 'ps']; 77 | -------------------------------------------------------------------------------- /examples/hashchange/index.php: -------------------------------------------------------------------------------- 1 | 15 | $(function(){ 16 | 17 | // Bind an event to window.onhashchange that, when the hash changes, gets the 18 | // hash and adds the class "selected" to any matching nav link. 19 | $(window).hashchange( function(){ 20 | var hash = location.hash; 21 | 22 | // Set the page title based on the hash. 23 | document.title = 'The hash is ' + ( hash.replace( /^#/, '' ) || 'blank' ) + '.'; 24 | 25 | // Iterate over all nav links, setting the "selected" class as-appropriate. 26 | $('#nav a').each(function(){ 27 | var that = $(this); 28 | that[ that.attr( 'href' ) === hash ? 'addClass' : 'removeClass' ]( 'selected' ); 29 | }); 30 | }) 31 | 32 | // Since the event is only triggered when the hash changes, we need to trigger 33 | // the event now, to handle the hash the page may have loaded with. 34 | $(window).hashchange(); 35 | 36 | }); 37 | 47 | 48 | 60 | 103 | 113 | 114 | 115 |

116 | jQuery hashchange event enables very basic bookmarkable #hash history via a cross-browser window.onhashchange event. 117 |

118 | 119 |

Click, and watch as the magic happens!

120 | 121 | 127 | 128 |
129 | 130 |

131 | Note that there is absolutely no JavaScript attached to the click event of these links. All they do is set the location.hash via href, and the callback bound to the window.onhashchange event does the rest. Once you've clicked one or more of these links, fool around with your browser's back and next buttons. 132 |

133 | 134 |

The code

135 | 136 |
137 | 
138 | 
139 | 140 |

That's it!

141 | 142 |

143 | This plugin is, by design, very basic. If you want to add lot of extra utility around getting and setting the hash as a state, and parsing and merging fragment params, check out the jQuery BBQ plugin. It includes this plugin at its core, plus a whole lot more, and has thorough documentation and examples as well. You can't have too much of a good thing! 144 |

145 | 146 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/shThemeEmacs.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | /** 31 | * Emacs SyntaxHighlighter theme based on theme by Joshua Emmons 32 | * http://www.skia.net/ 33 | */ 34 | 35 | /************************************ 36 | * Interface elements. 37 | ************************************/ 38 | 39 | .syntaxhighlighter 40 | { 41 | background-color: #000000 !important; 42 | } 43 | 44 | /* Gutter line numbers */ 45 | .syntaxhighlighter .line .number 46 | { 47 | color: #D3D3D3 !important; 48 | } 49 | 50 | /* Add border to the lines */ 51 | .syntaxhighlighter .line .content 52 | { 53 | border-left: 3px solid #990000 !important; 54 | color: #B9BDB6 !important; 55 | } 56 | 57 | .syntaxhighlighter.printing .line .content 58 | { 59 | border: 0 !important; 60 | } 61 | 62 | /* First line */ 63 | .syntaxhighlighter .line.alt1 .content 64 | { 65 | } 66 | 67 | /* Second line */ 68 | .syntaxhighlighter .line.alt2 .content 69 | { 70 | background-color: #0f0f0f !important; 71 | } 72 | 73 | .syntaxhighlighter .line .content .block 74 | { 75 | background: url(wrapping.png) 0 1.1em no-repeat !important; 76 | } 77 | 78 | /* Highlighed line number */ 79 | .syntaxhighlighter .line.highlighted .number 80 | { 81 | background-color: #435A5F !important; 82 | color: #fff !important; 83 | } 84 | 85 | /* Highlighed line */ 86 | .syntaxhighlighter .line.highlighted.alt1 .content, 87 | .syntaxhighlighter .line.highlighted.alt2 .content 88 | { 89 | background-color: #435A5F !important; 90 | } 91 | 92 | .syntaxhighlighter .ruler 93 | { 94 | color: silver !important; 95 | background-color: #000000 !important; 96 | border-left: 3px solid #990000 !important; 97 | } 98 | 99 | .syntaxhighlighter.nogutter .ruler 100 | { 101 | border: 0 !important; 102 | } 103 | 104 | .syntaxhighlighter .toolbar 105 | { 106 | background-color: #000000 !important; 107 | border: #000000 solid 1px !important; 108 | } 109 | 110 | .syntaxhighlighter .toolbar a 111 | { 112 | color: #646763 !important; 113 | } 114 | 115 | .syntaxhighlighter .toolbar a:hover 116 | { 117 | color: #9CCFF4 !important; 118 | } 119 | 120 | /************************************ 121 | * Actual syntax highlighter colors. 122 | ************************************/ 123 | .syntaxhighlighter .plain, 124 | .syntaxhighlighter .plain a 125 | { 126 | color: #D3D3D3 !important; 127 | } 128 | 129 | .syntaxhighlighter .comments, 130 | .syntaxhighlighter .comments a 131 | { 132 | color: #FF7D27 !important; 133 | } 134 | 135 | .syntaxhighlighter .string, 136 | .syntaxhighlighter .string a 137 | { 138 | color: #FF9E7B !important; 139 | } 140 | 141 | .syntaxhighlighter .keyword 142 | { 143 | color: #00FFFF !important; 144 | } 145 | 146 | .syntaxhighlighter .preprocessor 147 | { 148 | color: #AEC4DE !important; 149 | } 150 | 151 | .syntaxhighlighter .variable 152 | { 153 | color: #FFAA3E !important; 154 | } 155 | 156 | .syntaxhighlighter .value 157 | { 158 | color: #090 !important; 159 | } 160 | 161 | .syntaxhighlighter .functions 162 | { 163 | color: #81CEF9 !important; 164 | } 165 | 166 | .syntaxhighlighter .constants 167 | { 168 | color: #FF9E7B !important; 169 | } 170 | 171 | .syntaxhighlighter .script 172 | { 173 | background-color: #990000 !important; 174 | } 175 | 176 | .syntaxhighlighter .color1, 177 | .syntaxhighlighter .color1 a 178 | { 179 | color: #EBDB8D !important; 180 | } 181 | 182 | .syntaxhighlighter .color2, 183 | .syntaxhighlighter .color2 a 184 | { 185 | color: #FF7D27 !important; 186 | } 187 | 188 | .syntaxhighlighter .color3, 189 | .syntaxhighlighter .color3 a 190 | { 191 | color: #AEC4DE !important; 192 | } 193 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/shThemeMidnight.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | /** 31 | * Midnight SyntaxHighlighter theme based on theme by J.D. Myers 32 | * http://webdesign.lsnjd.com/ 33 | */ 34 | 35 | /************************************ 36 | * Interface elements. 37 | ************************************/ 38 | 39 | .syntaxhighlighter 40 | { 41 | background-color: #0F192A !important; 42 | } 43 | 44 | /* Gutter line numbers */ 45 | .syntaxhighlighter .line .number 46 | { 47 | color: #38566F !important; 48 | } 49 | 50 | /* Add border to the lines */ 51 | .syntaxhighlighter .line .content 52 | { 53 | border-left: 3px solid #435A5F !important; 54 | color: #B9BDB6 !important; 55 | } 56 | 57 | .syntaxhighlighter.printing .line .content 58 | { 59 | border: 0 !important; 60 | } 61 | 62 | /* First line */ 63 | .syntaxhighlighter .line.alt1 .content 64 | { 65 | background-color: #0F192A !important; 66 | } 67 | 68 | /* Second line */ 69 | .syntaxhighlighter .line.alt2 .content 70 | { 71 | background-color: #0F192A !important; 72 | } 73 | 74 | .syntaxhighlighter .line .content .block 75 | { 76 | background: url(wrapping.png) 0 1.1em no-repeat !important; 77 | } 78 | 79 | /* Highlighed line number */ 80 | .syntaxhighlighter .line.highlighted .number 81 | { 82 | background-color: #253E5A !important; 83 | color: #fff !important; 84 | } 85 | 86 | /* Highlighed line */ 87 | .syntaxhighlighter .line.highlighted.alt1 .content, 88 | .syntaxhighlighter .line.highlighted.alt2 .content 89 | { 90 | background-color: #253E5A !important; 91 | } 92 | 93 | .syntaxhighlighter .ruler 94 | { 95 | color: #38566F !important; 96 | background-color: #0F192A !important; 97 | border-left: 3px solid #435A5F !important; 98 | } 99 | 100 | .syntaxhighlighter.nogutter .ruler 101 | { 102 | border: 0 !important; 103 | } 104 | 105 | .syntaxhighlighter .toolbar 106 | { 107 | background-color: #0F192A !important; 108 | } 109 | 110 | .syntaxhighlighter .toolbar a 111 | { 112 | color: #38566F !important; 113 | } 114 | 115 | .syntaxhighlighter .toolbar a:hover 116 | { 117 | color: #8AA6C1 !important; 118 | } 119 | 120 | /************************************ 121 | * Actual syntax highlighter colors. 122 | ************************************/ 123 | .syntaxhighlighter .plain, 124 | .syntaxhighlighter .plain a 125 | { 126 | color: #D1EDFF !important; 127 | } 128 | 129 | .syntaxhighlighter .comments, 130 | .syntaxhighlighter .comments a 131 | { 132 | color: #428BDD !important; 133 | } 134 | 135 | .syntaxhighlighter .string, 136 | .syntaxhighlighter .string a 137 | { 138 | color: #1DC116 !important; 139 | } 140 | 141 | .syntaxhighlighter .keyword 142 | { 143 | color: #B43D3D !important; 144 | } 145 | 146 | .syntaxhighlighter .preprocessor 147 | { 148 | color: #8AA6C1 !important; 149 | } 150 | 151 | .syntaxhighlighter .variable 152 | { 153 | color: #FFAA3E !important; 154 | } 155 | 156 | .syntaxhighlighter .value 157 | { 158 | color: #F7E741 !important; 159 | } 160 | 161 | .syntaxhighlighter .functions 162 | { 163 | color: #FFAA3E !important; 164 | } 165 | 166 | .syntaxhighlighter .constants 167 | { 168 | color: #E0E8FF !important; 169 | } 170 | 171 | .syntaxhighlighter .script 172 | { 173 | background-color: #404040 !important; 174 | } 175 | 176 | .syntaxhighlighter .color1, 177 | .syntaxhighlighter .color1 a 178 | { 179 | color: #F8BB00 !important; 180 | } 181 | 182 | .syntaxhighlighter .color2, 183 | .syntaxhighlighter .color2 a 184 | { 185 | color: #FFFFFF !important; 186 | } 187 | 188 | .syntaxhighlighter .color3, 189 | .syntaxhighlighter .color3 a 190 | { 191 | color: #FFAA3E !important; 192 | } 193 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/shThemeDjango.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | /** 31 | * Django SyntaxHighlighter theme 32 | */ 33 | 34 | /************************************ 35 | * Interface elements. 36 | ************************************/ 37 | 38 | .syntaxhighlighter 39 | { 40 | background-color: #0B2F20 !important; 41 | } 42 | 43 | /* Gutter line numbers */ 44 | .syntaxhighlighter .line .number 45 | { 46 | color: #497958 !important; 47 | } 48 | 49 | /* Add border to the lines */ 50 | .syntaxhighlighter .line .content 51 | { 52 | border-left: 3px solid #41A83E !important; 53 | color: #B9BDB6 !important; 54 | } 55 | 56 | .syntaxhighlighter.printing .line .content 57 | { 58 | border: 0 !important; 59 | } 60 | 61 | /* First line */ 62 | .syntaxhighlighter .line.alt1 .content 63 | { 64 | } 65 | 66 | /* Second line */ 67 | .syntaxhighlighter .line.alt2 .content 68 | { 69 | background-color: #0a2b1d !important; 70 | } 71 | 72 | .syntaxhighlighter .line .content .block 73 | { 74 | background: url(wrapping.png) 0 1.1em no-repeat !important; 75 | } 76 | 77 | /* Highlighed line number */ 78 | .syntaxhighlighter .line.highlighted .number 79 | { 80 | background-color: #336442 !important; 81 | color: #fff !important; 82 | } 83 | 84 | /* Highlighed line */ 85 | .syntaxhighlighter .line.highlighted.alt1 .content, 86 | .syntaxhighlighter .line.highlighted.alt2 .content 87 | { 88 | background-color: #336442 !important; 89 | } 90 | 91 | .syntaxhighlighter .ruler 92 | { 93 | color: #C4B14A !important; 94 | background-color: #245032 !important; 95 | border-left: 3px solid #41A83E !important; 96 | } 97 | 98 | .syntaxhighlighter.nogutter .ruler 99 | { 100 | border: 0 !important; 101 | } 102 | 103 | .syntaxhighlighter .toolbar 104 | { 105 | background-color: #245032 !important; 106 | border: #0B2F20 solid 1px !important; 107 | } 108 | 109 | .syntaxhighlighter .toolbar a 110 | { 111 | color: #C4B14A !important; 112 | } 113 | 114 | .syntaxhighlighter .toolbar a:hover 115 | { 116 | color: #FFE862 !important; 117 | } 118 | 119 | /************************************ 120 | * Actual syntax highlighter colors. 121 | ************************************/ 122 | .syntaxhighlighter .plain, 123 | .syntaxhighlighter .plain a 124 | { 125 | color: #F8F8F8 !important; 126 | } 127 | 128 | .syntaxhighlighter .comments, 129 | .syntaxhighlighter .comments a 130 | { 131 | color: #336442 !important; 132 | font-style: italic !important; 133 | } 134 | 135 | .syntaxhighlighter .string, 136 | .syntaxhighlighter .string a 137 | { 138 | color: #9DF39F !important; 139 | } 140 | 141 | .syntaxhighlighter .keyword 142 | { 143 | color: #96DD3B !important; 144 | font-weight: bold !important; 145 | } 146 | 147 | .syntaxhighlighter .preprocessor 148 | { 149 | color: #91BB9E !important; 150 | } 151 | 152 | .syntaxhighlighter .variable 153 | { 154 | color: #FFAA3E !important; 155 | } 156 | 157 | .syntaxhighlighter .value 158 | { 159 | color: #F7E741 !important; 160 | } 161 | 162 | .syntaxhighlighter .functions 163 | { 164 | color: #FFAA3E !important; 165 | } 166 | 167 | .syntaxhighlighter .constants 168 | { 169 | color: #E0E8FF !important; 170 | } 171 | 172 | .syntaxhighlighter .script 173 | { 174 | background-color: #497958 !important; 175 | } 176 | 177 | .syntaxhighlighter .color1, 178 | .syntaxhighlighter .color1 a 179 | { 180 | color: #EB939A !important; 181 | } 182 | 183 | .syntaxhighlighter .color2, 184 | .syntaxhighlighter .color2 a 185 | { 186 | color: #91BB9E !important; 187 | } 188 | 189 | .syntaxhighlighter .color3, 190 | .syntaxhighlighter .color3 a 191 | { 192 | color: #EDEF7D !important; 193 | } 194 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/shThemeRDark.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | /** 31 | * RDark SyntaxHighlighter theme based on theme by Radu Dineiu 32 | * http://www.vim.org/scripts/script.php?script_id=1732 33 | */ 34 | 35 | /************************************ 36 | * Interface elements. 37 | ************************************/ 38 | 39 | .syntaxhighlighter 40 | { 41 | background-color: #1B2426 !important; 42 | } 43 | 44 | /* Gutter line numbers */ 45 | .syntaxhighlighter .line .number 46 | { 47 | color: #B9BDB6 !important; 48 | } 49 | 50 | /* Add border to the lines */ 51 | .syntaxhighlighter .line .content 52 | { 53 | border-left: 3px solid #435A5F !important; 54 | color: #B9BDB6 !important; 55 | } 56 | 57 | .syntaxhighlighter.printing .line .content 58 | { 59 | border: 0 !important; 60 | } 61 | 62 | /* First line */ 63 | .syntaxhighlighter .line.alt1 .content 64 | { 65 | background-color: #1B2426 !important; 66 | } 67 | 68 | /* Second line */ 69 | .syntaxhighlighter .line.alt2 .content 70 | { 71 | background-color: #1B2426 !important; 72 | } 73 | 74 | .syntaxhighlighter .line .content .block 75 | { 76 | background: url(wrapping.png) 0 1.1em no-repeat !important; 77 | } 78 | 79 | /* Highlighed line number */ 80 | .syntaxhighlighter .line.highlighted .number 81 | { 82 | background-color: #435A5F !important; 83 | color: #fff !important; 84 | } 85 | 86 | /* Highlighed line */ 87 | .syntaxhighlighter .line.highlighted.alt1 .content, 88 | .syntaxhighlighter .line.highlighted.alt2 .content 89 | { 90 | background-color: #435A5F !important; 91 | } 92 | 93 | .syntaxhighlighter .ruler 94 | { 95 | color: silver !important; 96 | background-color: #1B2426 !important; 97 | border-left: 3px solid #435A5F !important; 98 | } 99 | 100 | .syntaxhighlighter.nogutter .ruler 101 | { 102 | border: 0 !important; 103 | } 104 | 105 | .syntaxhighlighter .toolbar 106 | { 107 | background-color: #1B2426 !important; 108 | } 109 | 110 | .syntaxhighlighter .toolbar a 111 | { 112 | color: #646763 !important; 113 | } 114 | 115 | .syntaxhighlighter .toolbar a:hover 116 | { 117 | color: #E0E8FF !important; 118 | } 119 | 120 | /************************************ 121 | * Actual syntax highlighter colors. 122 | ************************************/ 123 | .syntaxhighlighter .plain, 124 | .syntaxhighlighter .plain a 125 | { 126 | color: #B9BDB6 !important; 127 | } 128 | 129 | .syntaxhighlighter .comments, 130 | .syntaxhighlighter .comments a 131 | { 132 | color: #878A85 !important; 133 | } 134 | 135 | .syntaxhighlighter .string, 136 | .syntaxhighlighter .string a 137 | { 138 | color: #5CE638 !important; 139 | } 140 | 141 | .syntaxhighlighter .keyword 142 | { 143 | color: #5BA1CF !important; 144 | } 145 | 146 | .syntaxhighlighter .preprocessor 147 | { 148 | color: #435A5F !important; 149 | } 150 | 151 | .syntaxhighlighter .variable 152 | { 153 | color: #FFAA3E !important; 154 | } 155 | 156 | .syntaxhighlighter .value 157 | { 158 | color: #090 !important; 159 | } 160 | 161 | .syntaxhighlighter .functions 162 | { 163 | color: #FFAA3E !important; 164 | } 165 | 166 | .syntaxhighlighter .constants 167 | { 168 | color: #E0E8FF !important; 169 | } 170 | 171 | .syntaxhighlighter .script 172 | { 173 | background-color: #435A5F !important; 174 | } 175 | 176 | .syntaxhighlighter .color1, 177 | .syntaxhighlighter .color1 a 178 | { 179 | color: #E0E8FF !important; 180 | } 181 | 182 | .syntaxhighlighter .color2, 183 | .syntaxhighlighter .color2 a 184 | { 185 | color: #FFFFFF !important; 186 | } 187 | 188 | .syntaxhighlighter .color3, 189 | .syntaxhighlighter .color3 a 190 | { 191 | color: #FFAA3E !important; 192 | } 193 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/shThemeFadeToGrey.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | /** 31 | * Fade to Grey SyntaxHighlighter theme based on theme by Brasten Sager 32 | * http://www.ibrasten.com/ 33 | */ 34 | 35 | /************************************ 36 | * Interface elements. 37 | ************************************/ 38 | 39 | .syntaxhighlighter 40 | { 41 | background-color: #121212 !important; 42 | } 43 | 44 | /* Gutter line numbers */ 45 | .syntaxhighlighter .line .number 46 | { 47 | color: #C3C3C3 !important; 48 | } 49 | 50 | /* Add border to the lines */ 51 | .syntaxhighlighter .line .content 52 | { 53 | border-left: 3px solid #3185B9 !important; 54 | color: #B9BDB6 !important; 55 | } 56 | 57 | .syntaxhighlighter.printing .line .content 58 | { 59 | border: 0 !important; 60 | } 61 | 62 | /* First line */ 63 | .syntaxhighlighter .line.alt1 .content 64 | { 65 | } 66 | 67 | /* Second line */ 68 | .syntaxhighlighter .line.alt2 .content 69 | { 70 | background-color: #000000 !important; 71 | } 72 | 73 | .syntaxhighlighter .line .content .block 74 | { 75 | background: url(wrapping.png) 0 1.1em no-repeat !important; 76 | } 77 | 78 | /* Highlighed line number */ 79 | .syntaxhighlighter .line.highlighted .number 80 | { 81 | background-color: #3A3A00 !important; 82 | color: #fff !important; 83 | } 84 | 85 | /* Highlighed line */ 86 | .syntaxhighlighter .line.highlighted.alt1 .content, 87 | .syntaxhighlighter .line.highlighted.alt2 .content 88 | { 89 | background-color: #3A3A00 !important; 90 | } 91 | 92 | .syntaxhighlighter .ruler 93 | { 94 | color: silver !important; 95 | border-left: 3px solid #3185B9 !important; 96 | } 97 | 98 | .syntaxhighlighter.nogutter .ruler 99 | { 100 | border: 0 !important; 101 | } 102 | 103 | .syntaxhighlighter .toolbar 104 | { 105 | background-color: #000000 !important; 106 | border: #000000 solid 1px !important; 107 | } 108 | 109 | .syntaxhighlighter .toolbar a 110 | { 111 | color: #808080 !important; 112 | } 113 | 114 | .syntaxhighlighter .toolbar a:hover 115 | { 116 | color: #96DAFF !important; 117 | } 118 | 119 | /************************************ 120 | * Actual syntax highlighter colors. 121 | ************************************/ 122 | .syntaxhighlighter .plain, 123 | .syntaxhighlighter .plain a 124 | { 125 | color: #FFFFFF !important; 126 | } 127 | 128 | .syntaxhighlighter .comments, 129 | .syntaxhighlighter .comments a 130 | { 131 | color: #696854 !important; 132 | } 133 | 134 | .syntaxhighlighter .string, 135 | .syntaxhighlighter .string a 136 | { 137 | color: #E3E658 !important; 138 | } 139 | 140 | .syntaxhighlighter .keyword 141 | { 142 | color: #D01D33 !important; 143 | } 144 | 145 | .syntaxhighlighter .preprocessor 146 | { 147 | color: #435A5F !important; 148 | } 149 | 150 | .syntaxhighlighter .variable 151 | { 152 | color: #898989 !important; 153 | } 154 | 155 | .syntaxhighlighter .value 156 | { 157 | color: #090 !important; 158 | } 159 | 160 | .syntaxhighlighter .functions 161 | { 162 | color: #AAAAAA !important; 163 | font-weight: bold !important; 164 | } 165 | 166 | .syntaxhighlighter .constants 167 | { 168 | color: #96DAFF !important; 169 | } 170 | 171 | .syntaxhighlighter .script 172 | { 173 | background-color: #C3C3C3 !important; 174 | color: #000 !important; 175 | } 176 | 177 | .syntaxhighlighter .color1, 178 | .syntaxhighlighter .color1 a 179 | { 180 | color: #FFC074 !important; 181 | } 182 | 183 | .syntaxhighlighter .color2, 184 | .syntaxhighlighter .color2 a 185 | { 186 | color: #4A8CDB !important; 187 | } 188 | 189 | .syntaxhighlighter .color3, 190 | .syntaxhighlighter .color3 a 191 | { 192 | color: #96DAFF !important; 193 | } 194 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/styles/shThemeDefault.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | /************************************ 31 | * Default Syntax Highlighter theme. 32 | * 33 | * Interface elements. 34 | ************************************/ 35 | 36 | .syntaxhighlighter 37 | { 38 | background-color: #E7E5DC !important; 39 | } 40 | 41 | /* Highlighed line number */ 42 | .syntaxhighlighter .line.highlighted .number 43 | { 44 | background-color: #6CE26C !important; 45 | color: black !important; 46 | } 47 | 48 | /* Highlighed line */ 49 | .syntaxhighlighter .line.highlighted.alt1 .content, 50 | .syntaxhighlighter .line.highlighted.alt2 .content 51 | { 52 | background-color: #6CE26C !important; 53 | } 54 | 55 | /* Gutter line numbers */ 56 | .syntaxhighlighter .line .number 57 | { 58 | color: #5C5C5C !important; 59 | } 60 | 61 | /* Add border to the lines */ 62 | .syntaxhighlighter .line .content 63 | { 64 | border-left: 3px solid #6CE26C !important; 65 | color: #000 !important; 66 | } 67 | 68 | .syntaxhighlighter.printing .line .content 69 | { 70 | border: 0 !important; 71 | } 72 | 73 | /* First line */ 74 | .syntaxhighlighter .line.alt1 .content 75 | { 76 | background-color: #fff !important; 77 | } 78 | 79 | /* Second line */ 80 | .syntaxhighlighter .line.alt2 .content 81 | { 82 | background-color: #F8F8F8 !important; 83 | } 84 | 85 | .syntaxhighlighter .line .content .block 86 | { 87 | background: url(wrapping.png) 0 1.1em no-repeat !important; 88 | } 89 | 90 | .syntaxhighlighter .ruler 91 | { 92 | color: silver !important; 93 | background-color: #F8F8F8 !important; 94 | border-left: 3px solid #6CE26C !important; 95 | } 96 | 97 | .syntaxhighlighter.nogutter .ruler 98 | { 99 | border: 0 !important; 100 | } 101 | 102 | .syntaxhighlighter .toolbar 103 | { 104 | background-color: #F8F8F8 !important; 105 | border: #E7E5DC solid 1px !important; 106 | } 107 | 108 | .syntaxhighlighter .toolbar a 109 | { 110 | color: #a0a0a0 !important; 111 | } 112 | 113 | .syntaxhighlighter .toolbar a:hover 114 | { 115 | color: red !important; 116 | } 117 | 118 | /************************************ 119 | * Actual syntax highlighter colors. 120 | ************************************/ 121 | .syntaxhighlighter .plain, 122 | .syntaxhighlighter .plain a 123 | { 124 | color: #000 !important; 125 | } 126 | 127 | .syntaxhighlighter .comments, 128 | .syntaxhighlighter .comments a 129 | { 130 | color: #008200 !important; 131 | } 132 | 133 | .syntaxhighlighter .string, 134 | .syntaxhighlighter .string a 135 | { 136 | color: blue !important; 137 | } 138 | 139 | .syntaxhighlighter .keyword 140 | { 141 | color: #069 !important; 142 | font-weight: bold !important; 143 | } 144 | 145 | .syntaxhighlighter .preprocessor 146 | { 147 | color: gray !important; 148 | } 149 | 150 | .syntaxhighlighter .variable 151 | { 152 | color: #a70 !important; 153 | } 154 | 155 | .syntaxhighlighter .value 156 | { 157 | color: #090 !important; 158 | } 159 | 160 | .syntaxhighlighter .functions 161 | { 162 | color: #ff1493 !important; 163 | } 164 | 165 | .syntaxhighlighter .constants 166 | { 167 | color: #0066CC !important; 168 | } 169 | 170 | .syntaxhighlighter .script 171 | { 172 | background-color: yellow !important; 173 | } 174 | 175 | .syntaxhighlighter .color1, 176 | .syntaxhighlighter .color1 a 177 | { 178 | color: #808080 !important; 179 | } 180 | 181 | .syntaxhighlighter .color2, 182 | .syntaxhighlighter .color2 a 183 | { 184 | color: #ff1493 !important; 185 | } 186 | 187 | .syntaxhighlighter .color3, 188 | .syntaxhighlighter .color3 a 189 | { 190 | color: red !important; 191 | } 192 | -------------------------------------------------------------------------------- /examples/bug-chrome-back-button/index.php: -------------------------------------------------------------------------------- 1 | 15 | Read more about the issue here! 16 | 26 | 27 | var delay = 250; 28 | 29 | // Set the browser title. 30 | function set_title( i ) { 31 | document.title = document.title.replace( /\s*\d*$/, '' ) + ' ' + i; 32 | } 33 | 34 | // Add new history entries by changing window.location.hash, in an 35 | // asynchronous loop. 36 | function add_history_entries( start, end ) { 37 | (function loopy(){ 38 | window.location.hash = '#' + start; 39 | set_title( start ); 40 | ++start <= end && setTimeout( loopy, delay ); 41 | })(); 42 | }; 43 | 44 | // Go back in the history, in an asynchronous loop. 45 | function go_back( i ) { 46 | (function loopy(){ 47 | window.history.go(-1); 48 | --i && setTimeout( loopy, delay ); 49 | })(); 50 | }; 51 | 52 | // Some window.onhashchange stuff. Not really important here. 53 | function handler() { 54 | var i = window.location.hash.replace( /^#/, '' ); 55 | set_title( i ); 56 | }; 57 | 58 | if ( window.addEventListener ) { 59 | window.addEventListener( 'hashchange', handler, false ); 60 | } else if ( window.attachEvent ) { 61 | window.attachEvent( 'onhashchange', handler ); 62 | } 63 | 64 | 74 | 86 | 102 | 112 | 113 | 114 |

First, open this page in a new window or tab, to clear any current window or tab history. Make your window wide enough so that you can see the full URL in the address bar, with some extra space left over.

115 | 116 |

117 | Add ten history entries 118 |

119 | 120 |
    121 |
  • Hash should change from #1 .. #10, once every 250ms.
  • 122 |
  • Browser title should change from "Back Button Test 1" .. "Back Button Test 10" at the same time.
  • 123 |
  • Ten new history entries should be added.
  • 124 |
  • Verify that pages "Back Button Test 0" .. "Back Button Test 9" are now in the history.
  • 125 |
126 | 127 |

128 | Go back 10 times 129 |

130 | 131 |
    132 |
  • Hash should change from #10 .. #1 then disappear.
  • 133 |
  • Browser title should only change from "Back Button Test 10" .. "Back Button Test 1" if window.onhashchange is supported.
  • 134 |
  • History entries "Back Button Test 9" .. "Back Button Test 0" should be removed.
  • 135 |
136 | 137 |

Notes

138 | 139 |
    140 |
  • No new history entries are added in IE6/7, so there's nothing to "go back" to.
  • 141 |
  • Only IE8 and FF 3.6 support window.onhashchange.
  • 142 |
  • Chrome 3 / Chromium randomly "loses" history entries. Chromium issue 1016
  • 143 |
144 | 145 |

The code

146 | 147 |
148 | 
149 | 
150 | 151 | -------------------------------------------------------------------------------- /docs/index/Properties.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | Property Index 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
Property Index
$#! · 0-9 · A · B · C · D · E · F · G · H · I · J · K · L · M · N · O · P · Q · R · S · T · U · V · W · X · Y · Z
D
 delay, jQuery.fn.hashchange
 domain, jQuery.fn.hashchange
S
 src, jQuery.fn.hashchange
15 | 16 |
The numeric interval (in milliseconds) at which the hashchange event polling loop executes.
If you’re setting document.domain in your JavaScript, and you want hash history to work in IE6/7, not only must this property be set, but you must also set document.domain BEFORE jQuery is loaded into the page.
17 | 18 | 19 | 20 |
If, for some reason, you need to specify an Iframe src file (for example, when setting document.domain as in jQuery.fn.hashchange.domain), you can do so using this property.
21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 31 | 32 | 33 | 34 | 35 | 36 | -------------------------------------------------------------------------------- /README.markdown: -------------------------------------------------------------------------------- 1 | # jQuery hashchange event # 2 | [http://benalman.com/projects/jquery-hashchange-plugin/](http://benalman.com/projects/jquery-hashchange-plugin/) 3 | 4 | Version: 1.3, Last updated: 7/21/2010 5 | 6 | This jQuery plugin enables very basic bookmarkable #hash history via a cross-browser window.onhashchange event. 7 | 8 | Visit the [project page](http://benalman.com/projects/jquery-hashchange-plugin/) for more information and usage examples! 9 | 10 | 11 | ## Documentation ## 12 | [http://benalman.com/code/projects/jquery-hashchange/docs/](http://benalman.com/code/projects/jquery-hashchange/docs/) 13 | 14 | 15 | ## Examples ## 16 | These working examples, complete with fully commented code, illustrate a few 17 | ways in which this plugin can be used. 18 | 19 | [http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/](http://benalman.com/code/projects/jquery-hashchange/examples/hashchange/) 20 | [http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/](http://benalman.com/code/projects/jquery-hashchange/examples/document_domain/) 21 | 22 | ## Support and Testing ## 23 | Information about what version or versions of jQuery this plugin has been 24 | tested with, what browsers it has been tested in, and where the unit tests 25 | reside (so you can test it yourself). 26 | 27 | ### jQuery Versions ### 28 | 1.2.6, 1.3.2, 1.4.1, 1.4.2 29 | 30 | ### Browsers Tested ### 31 | Internet Explorer 6-8, Firefox 2-4, Chrome 5-6, Safari 3.2-5, Opera 9.6-10.60, iPhone 3.1, Android 1.6-2.2, BlackBerry 4.6-5. 32 | 33 | ### Unit Tests ### 34 | [http://benalman.com/code/projects/jquery-hashchange/unit/](http://benalman.com/code/projects/jquery-hashchange/unit/) 35 | 36 | 37 | ## A more robust solution ## 38 | 39 | This plugin is, by design, very basic. If you want to add lot of extra utility around getting and setting the hash as a state, and parsing and merging fragment params, check out the [jQuery BBQ](http://benalman.com/projects/jquery-bbq-plugin/) plugin. It includes this plugin at its core, plus a whole lot more, and has thorough documentation and examples as well. You can't have too much of a good thing! 40 | 41 | 42 | ## Known issues ## 43 | 44 | While this jQuery hashchange event implementation is quite stable and robust, there are a few unfortunate browser bugs surrounding expected hashchange event-based behaviors, independent of any JavaScript window.onhashchange abstraction. See the following examples for more information: 45 | 46 | Chrome: Back Button 47 | [http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/](http://benalman.com/code/projects/jquery-hashchange/examples/bug-chrome-back-button/) 48 | 49 | Firefox: Remote XMLHttpRequest 50 | [http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/](http://benalman.com/code/projects/jquery-hashchange/examples/bug-firefox-remote-xhr/) 51 | 52 | WebKit: Back Button in an Iframe 53 | [http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/](http://benalman.com/code/projects/jquery-hashchange/examples/bug-webkit-hash-iframe/) 54 | 55 | Safari: Back Button from a different domain 56 | [http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/](http://benalman.com/code/projects/jquery-hashchange/examples/bug-safari-back-from-diff-domain/) 57 | 58 | Also note that should a browser natively support the window.onhashchange 59 | event, but not report that it does, the fallback polling loop will be used. 60 | 61 | 62 | ## Release History ## 63 | 64 | 1.3 - (7/21/2010) Reorganized IE6/7 Iframe code to make it more "removable" for mobile-only development. Added IE6/7 document.title support. Attempted to make Iframe as hidden as possible by using techniques from http://www.paciellogroup.com/blog/?p=604. Added support for the "shortcut" format $(window).hashchange( fn ) and $(window).hashchange() like jQuery provides for built-in events. Renamed jQuery.hashchangeDelay to jQuery.fn.hashchange.delay and lowered its default value to 50. Added jQuery.fn.hashchange.domain and jQuery.fn.hashchange.src properties plus document-domain.html file to address access denied issues when setting document.domain in IE6/7. 65 | 1.2 - (2/11/2010) Fixed a bug where coming back to a page using this plugin from a page on another domain would cause an error in Safari 4. Also, IE6/7 Iframe is now inserted after the body (this actually works), which prevents the page from scrolling when the event is first bound. Event can also now be bound before DOM ready, but it won't be usable before then in IE6/7. 66 | 1.1 - (1/21/2010) Incorporated document.documentMode test to fix IE8 bug where browser version is incorrectly reported as 8.0, despite inclusion of the X-UA-Compatible IE=EmulateIE7 meta tag. 67 | 1.0 - (1/9/2010) Initial Release. Broke out the jQuery BBQ event.special window.onhashchange functionality into a separate plugin for users who want just the basic event & back button support, without all the extra awesomeness that BBQ provides. This plugin will be included as part of jQuery BBQ, but also be available separately. 68 | 69 | 70 | ## License ## 71 | Copyright (c) 2010 "Cowboy" Ben Alman 72 | Dual licensed under the MIT and GPL licenses. 73 | [http://benalman.com/about/license/](http://benalman.com/about/license/) 74 | -------------------------------------------------------------------------------- /shared/SyntaxHighlighter/src/shLegacy.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SyntaxHighlighter 3 | * http://alexgorbatchev.com/ 4 | * 5 | * SyntaxHighlighter is donationware. If you are using it, please donate. 6 | * http://alexgorbatchev.com/wiki/SyntaxHighlighter:Donate 7 | * 8 | * @version 9 | * 2.0.320 (May 03 2009) 10 | * 11 | * @copyright 12 | * Copyright (C) 2004-2009 Alex Gorbatchev. 13 | * 14 | * @license 15 | * This file is part of SyntaxHighlighter. 16 | * 17 | * SyntaxHighlighter is free software: you can redistribute it and/or modify 18 | * it under the terms of the GNU Lesser General Public License as published by 19 | * the Free Software Foundation, either version 3 of the License, or 20 | * (at your option) any later version. 21 | * 22 | * SyntaxHighlighter is distributed in the hope that it will be useful, 23 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 24 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 25 | * GNU General Public License for more details. 26 | * 27 | * You should have received a copy of the GNU General Public License 28 | * along with SyntaxHighlighter. If not, see . 29 | */ 30 | var dp = { 31 | SyntaxHighlighter : {} 32 | }; 33 | 34 | dp.SyntaxHighlighter = { 35 | parseParams: function( 36 | input, 37 | showGutter, 38 | showControls, 39 | collapseAll, 40 | firstLine, 41 | showColumns 42 | ) 43 | { 44 | function getValue(list, name) 45 | { 46 | var regex = new XRegExp('^' + name + '\\[(?\\w+)\\]$', 'gi'), 47 | match = null 48 | ; 49 | 50 | for (var i = 0; i < list.length; i++) 51 | if ((match = regex.exec(list[i])) != null) 52 | return match.value; 53 | 54 | return null; 55 | }; 56 | 57 | function defaultValue(value, def) 58 | { 59 | return value != null ? value : def; 60 | }; 61 | 62 | function asString(value) 63 | { 64 | return value != null ? value.toString() : null; 65 | }; 66 | 67 | var parts = input.split(':'), 68 | brushName = parts[0], 69 | options = {}, 70 | straight = { 'true' : 'true' } 71 | reverse = { 'true' : 'false' }, 72 | result = null, 73 | defaults = SyntaxHighlighter.defaults 74 | ; 75 | 76 | for (var i in parts) 77 | options[parts[i]] = 'true'; 78 | 79 | showGutter = asString(defaultValue(showGutter, defaults.gutter)); 80 | showControls = asString(defaultValue(showControls, defaults.toolbar)); 81 | collapseAll = asString(defaultValue(collapseAll, defaults.collapse)); 82 | showColumns = asString(defaultValue(showColumns, defaults.ruler)); 83 | firstLine = asString(defaultValue(firstLine, defaults['first-line'])); 84 | 85 | result = { 86 | brush : brushName, 87 | gutter : defaultValue(reverse[options.nogutter], showGutter), 88 | toolbar : defaultValue(reverse[options.nocontrols], showControls), 89 | collapse : defaultValue(straight[options.collapse], collapseAll), 90 | ruler : defaultValue(straight[options.showcolumns], showColumns), 91 | 'first-line' : defaultValue(getValue(parts, 'firstline'), firstLine) 92 | }; 93 | 94 | return result; 95 | }, 96 | 97 | HighlightAll: function( 98 | name, 99 | showGutter /* optional */, 100 | showControls /* optional */, 101 | collapseAll /* optional */, 102 | firstLine /* optional */, 103 | showColumns /* optional */ 104 | ) 105 | { 106 | function findValue() 107 | { 108 | var a = arguments; 109 | 110 | for (var i = 0; i < a.length; i++) 111 | { 112 | if (a[i] === null) 113 | continue; 114 | 115 | if (typeof(a[i]) == 'string' && a[i] != '') 116 | return a[i] + ''; 117 | 118 | if (typeof(a[i]) == 'object' && a[i].value != '') 119 | return a[i].value + ''; 120 | } 121 | 122 | return null; 123 | }; 124 | 125 | function findTagsByName(list, name, tagName) 126 | { 127 | var tags = document.getElementsByTagName(tagName); 128 | 129 | for (var i = 0; i < tags.length; i++) 130 | if (tags[i].getAttribute('name') == name) 131 | list.push(tags[i]); 132 | } 133 | 134 | var elements = [], 135 | highlighter = null, 136 | registered = {}, 137 | propertyName = 'innerHTML' 138 | ; 139 | 140 | // for some reason IE doesn't find
 by name, however it does see them just fine by tag name... 
141 | 		findTagsByName(elements, name, 'pre');
142 | 		findTagsByName(elements, name, 'textarea');
143 | 
144 | 		if (elements.length === 0)
145 | 			return;
146 | 		
147 | 		for (var i = 0; i < elements.length; i++)
148 | 		{
149 | 			var element = elements[i],
150 | 				params = findValue(
151 | 					element.attributes['class'], element.className, 
152 | 					element.attributes['language'], element.language
153 | 					),
154 | 				language = ''
155 | 				;
156 | 			
157 | 			if (params === null) 
158 | 				continue;
159 | 
160 | 			params = dp.SyntaxHighlighter.parseParams(
161 | 				params,
162 | 				showGutter, 
163 | 				showControls, 
164 | 				collapseAll, 
165 | 				firstLine, 
166 | 				showColumns
167 | 				);
168 | 
169 | 			SyntaxHighlighter.highlight(params, element);
170 | 		}
171 | 	}
172 | };
173 | 


--------------------------------------------------------------------------------
/examples/index.php:
--------------------------------------------------------------------------------
  1 | 
 13 |     
 23 | 
 31 | 
 32 | 
 33 |   
 34 |   Ben Alman » <?= $shell['title1'] ?><? if ( $shell['title2'] ) { print ' » ' . $shell['title2']; } ?><? if ( $shell['title3'] ) { print ' » ' . $shell['title3']; } ?>
 35 |   
 36 |   
 37 | 
 38 |   
 39 |   
 52 |   
 53 |   
 54 |   
 55 |   
 56 | 
 57 | 
 58 | 
 59 | 
 60 | 
 61 | 
62 | 87 |
88 | 89 |
90 | 98 |
99 | 100 | 101 | $title
"; 120 | } 121 | } 122 | 123 | $base = ''; 124 | draw_shell(); 125 | } 126 | 127 | ?> 128 | -------------------------------------------------------------------------------- /unit/unit.js: -------------------------------------------------------------------------------- 1 | // Not sure why this isn't set by default in qunit.js.. 2 | QUnit.jsDump.HTML = false; 3 | 4 | (function($){ // START CLOSURE 5 | 6 | var back_broken = /(?:chrome|blackberry)/i.test( navigator.userAgent ), 7 | aps = Array.prototype.slice, 8 | opt = Object.prototype.toString; 9 | 10 | function notice( txt ) { 11 | if ( txt ) { 12 | $('#notice').html( txt ); 13 | } else { 14 | $('#notice').hide(); 15 | } 16 | }; 17 | 18 | function run_many_tests() { 19 | var tests = aps.call( arguments ), 20 | delay = typeof tests[0] === 'number' && tests.shift(), 21 | func_each = $.isFunction( tests[0] ) && tests.shift(), 22 | func_done = $.isFunction( tests[0] ) && tests.shift(), 23 | result; 24 | 25 | function set_result( i, test ) { 26 | result = opt.call( test ) === '[object Array]' // 1.2.6 didn't have $.isArray() 27 | ? func_each.apply( this, test ) 28 | : $.isFunction( test ) 29 | ? test( result ) 30 | : ''; 31 | }; 32 | 33 | function next(){ 34 | test && test.func && test.func( result ); 35 | if ( tests.length ) { 36 | set_result( 0, tests.shift() ); 37 | setTimeout( next, delay ); 38 | } else { 39 | func_done && func_done(); 40 | start(); 41 | } 42 | }; 43 | 44 | if ( delay ) { 45 | QUnit.stop(); // BlackBerry 5 explodes if "stop()" is called by itself. 46 | next(); 47 | 48 | } else { 49 | $.each( tests, set_result ); 50 | func_done && func_done(); 51 | } 52 | } 53 | 54 | //////////////////////////////////////////////////////////////////////////////// 55 | //////////////////////////////////////////////////////////////////////////////// 56 | 57 | var hash; 58 | 59 | // Pulled out of the plugin, pretty much. 60 | function get_fragment( url ) { 61 | url = url || location.href; 62 | return url.replace( /^[^#]*#?(.*)$/, '$1' ); 63 | }; 64 | 65 | if ( window.document_domain_set ) { 66 | $.fn.hashchange.src = '../document-domain.html'; 67 | $.fn.hashchange.domain = document.domain; 68 | } 69 | 70 | // Event can be bound before DOM ready. 71 | $(window).bind( 'hashchange', function(e) { 72 | hash = get_fragment(); 73 | }); 74 | 75 | $(function(){ 76 | $('#jq_version').html( $.fn.jquery ); 77 | 78 | module( 'jQuery hashchange event' ); 79 | 80 | test( 'window.onhashchange', function() { 81 | expect( 8 ); 82 | 83 | var expected_hash, arr = [], msg = 'Testing window.onhashchange and history'; 84 | 85 | location.hash = '#a'; 86 | equals( get_fragment(), 'a', 'hash should be set properly' ); 87 | 88 | $(window).trigger( 'hashchange' ); 89 | equals( hash, 'a', 'hashchange triggered manually (long form)' ); 90 | 91 | hash = false; 92 | $(window).hashchange(); 93 | equals( hash, 'a', 'hashchange triggered manually (short form)' ); 94 | 95 | run_many_tests( 96 | // run asynchronously 97 | 250, 98 | 99 | // execute this for each array item 100 | function( new_hash ){ 101 | notice( msg += '.' ); 102 | expected_hash = new_hash; 103 | location.hash = '#' + new_hash; 104 | }, 105 | 106 | // execute this at the end 107 | function(){ 108 | notice(); 109 | }, 110 | 111 | // tests: 112 | 113 | function(result){ 114 | // pause at the start, since the hash was just set to '#a'. 115 | }, 116 | 117 | ['b'], 118 | 119 | function(result){ 120 | equals( hash, expected_hash, 'hash should be set properly' ); 121 | }, 122 | 123 | [''], 124 | 125 | function(result){ 126 | equals( hash, expected_hash, 'hash should be set properly' ); 127 | }, 128 | 129 | ['d'], 130 | 131 | function(result){ 132 | equals( hash, expected_hash, 'hash should be set properly' ); 133 | }, 134 | 135 | function(result){ 136 | $(window).unbind( 'hashchange' ); 137 | }, 138 | 139 | function(result){ 140 | $(window).hashchange( function(evt){ 141 | arr.push( get_fragment() ); 142 | }); 143 | }, 144 | 145 | function(result){ 146 | !back_broken && history.go( -1 ); 147 | }, 148 | 149 | function(result){ 150 | !back_broken && history.go( -1 ); 151 | }, 152 | 153 | function(result){ 154 | !back_broken && history.go( -1 ); 155 | }, 156 | 157 | function(result){ 158 | if ( back_broken ) { 159 | // Read about this issue here: http://benalman.com/news/2009/09/chrome-browser-history-buggine/ 160 | // and here: http://supportforums.blackberry.com/t5/Web-Development/Bold-Browser-Broken-history-go-1/td-p/107541 161 | ok( true, 'back button support inconsistent in chrome / blackberry (skip test)' ); 162 | } else { 163 | same( arr, ['', 'b', 'a'], 'back button and history.go(-1) should work' ); 164 | } 165 | 166 | $(window).unbind( 'hashchange' ); 167 | var events = $.data( window, 'events' ); 168 | ok( !events || !events.hashchange, 'hashchange event unbound' ); 169 | }, 170 | 171 | ['all_done'] 172 | 173 | ); 174 | 175 | }); 176 | 177 | }); 178 | 179 | })(jQuery); // END CLOSURE -------------------------------------------------------------------------------- /docs/nd/Languages.txt: -------------------------------------------------------------------------------- 1 | Format: 1.4 2 | 3 | # This is the Natural Docs languages file for this project. If you change 4 | # anything here, it will apply to THIS PROJECT ONLY. If you'd like to change 5 | # something for all your projects, edit the Languages.txt in Natural Docs' 6 | # Config directory instead. 7 | 8 | 9 | # You can prevent certain file extensions from being scanned like this: 10 | # Ignore Extensions: [extension] [extension] ... 11 | 12 | 13 | #------------------------------------------------------------------------------- 14 | # SYNTAX: 15 | # 16 | # Unlike other Natural Docs configuration files, in this file all comments 17 | # MUST be alone on a line. Some languages deal with the # character, so you 18 | # cannot put comments on the same line as content. 19 | # 20 | # Also, all lists are separated with spaces, not commas, again because some 21 | # languages may need to use them. 22 | # 23 | # Language: [name] 24 | # Alter Language: [name] 25 | # Defines a new language or alters an existing one. Its name can use any 26 | # characters. If any of the properties below have an add/replace form, you 27 | # must use that when using Alter Language. 28 | # 29 | # The language Shebang Script is special. It's entry is only used for 30 | # extensions, and files with those extensions have their shebang (#!) lines 31 | # read to determine the real language of the file. Extensionless files are 32 | # always treated this way. 33 | # 34 | # The language Text File is also special. It's treated as one big comment 35 | # so you can put Natural Docs content in them without special symbols. Also, 36 | # if you don't specify a package separator, ignored prefixes, or enum value 37 | # behavior, it will copy those settings from the language that is used most 38 | # in the source tree. 39 | # 40 | # Extensions: [extension] [extension] ... 41 | # [Add/Replace] Extensions: [extension] [extension] ... 42 | # Defines the file extensions of the language's source files. You can 43 | # redefine extensions found in the main languages file. You can use * to 44 | # mean any undefined extension. 45 | # 46 | # Shebang Strings: [string] [string] ... 47 | # [Add/Replace] Shebang Strings: [string] [string] ... 48 | # Defines a list of strings that can appear in the shebang (#!) line to 49 | # designate that it's part of the language. You can redefine strings found 50 | # in the main languages file. 51 | # 52 | # Ignore Prefixes in Index: [prefix] [prefix] ... 53 | # [Add/Replace] Ignored Prefixes in Index: [prefix] [prefix] ... 54 | # 55 | # Ignore [Topic Type] Prefixes in Index: [prefix] [prefix] ... 56 | # [Add/Replace] Ignored [Topic Type] Prefixes in Index: [prefix] [prefix] ... 57 | # Specifies prefixes that should be ignored when sorting symbols in an 58 | # index. Can be specified in general or for a specific topic type. 59 | # 60 | #------------------------------------------------------------------------------ 61 | # For basic language support only: 62 | # 63 | # Line Comments: [symbol] [symbol] ... 64 | # Defines a space-separated list of symbols that are used for line comments, 65 | # if any. 66 | # 67 | # Block Comments: [opening sym] [closing sym] [opening sym] [closing sym] ... 68 | # Defines a space-separated list of symbol pairs that are used for block 69 | # comments, if any. 70 | # 71 | # Package Separator: [symbol] 72 | # Defines the default package separator symbol. The default is a dot. 73 | # 74 | # [Topic Type] Prototype Enders: [symbol] [symbol] ... 75 | # When defined, Natural Docs will attempt to get a prototype from the code 76 | # immediately following the topic type. It stops when it reaches one of 77 | # these symbols. Use \n for line breaks. 78 | # 79 | # Line Extender: [symbol] 80 | # Defines the symbol that allows a prototype to span multiple lines if 81 | # normally a line break would end it. 82 | # 83 | # Enum Values: [global|under type|under parent] 84 | # Defines how enum values are referenced. The default is global. 85 | # global - Values are always global, referenced as 'value'. 86 | # under type - Values are under the enum type, referenced as 87 | # 'package.enum.value'. 88 | # under parent - Values are under the enum's parent, referenced as 89 | # 'package.value'. 90 | # 91 | # Perl Package: [perl package] 92 | # Specifies the Perl package used to fine-tune the language behavior in ways 93 | # too complex to do in this file. 94 | # 95 | #------------------------------------------------------------------------------ 96 | # For full language support only: 97 | # 98 | # Full Language Support: [perl package] 99 | # Specifies the Perl package that has the parsing routines necessary for full 100 | # language support. 101 | # 102 | #------------------------------------------------------------------------------- 103 | 104 | # The following languages are defined in the main file, if you'd like to alter 105 | # them: 106 | # 107 | # Text File, Shebang Script, C/C++, C#, Java, JavaScript, Perl, Python, 108 | # PHP, SQL, Visual Basic, Pascal, Assembly, Ada, Tcl, Ruby, Makefile, 109 | # ActionScript, ColdFusion, R, Fortran 110 | 111 | # If you add a language that you think would be useful to other developers 112 | # and should be included in Natural Docs by default, please e-mail it to 113 | # languages [at] naturaldocs [dot] org. 114 | -------------------------------------------------------------------------------- /examples/bug-webkit-hash-iframe/child/index.php: -------------------------------------------------------------------------------- 1 | 16 | $(function(){ 17 | 18 | // Show the current location.hash. 19 | setInterval(function(){ $('#status').text( location.hash ); }, 100); 20 | 21 | }); 22 | 32 | 62 | 97 | 107 |

This page is part of a full example. If you didn't see a "step 1", click here to reset!

108 | 109 |

110 | 2 111 | Click these links to change the Iframe location.hash: 112 | #middle and 113 | #end. 114 |

115 |

116 | The location.hash should go from #begin → #middle → #end as you click the 117 | links above. 118 |

119 | 120 |

The current Iframe location.hash is:

121 | 122 |

123 | Now, in most modern browsers (not IE6 or 7), in an Iframe or not, each hash change 124 | creates a new history entry, so that the back button becomes enabled and you 125 | can press it to return to a previous entry. 126 |

127 | 128 |

129 | 3 130 | After clicking #middle and #end, press the back button twice. 131 |

132 |

133 | The location.hash should go from #end → #middle → #begin as you press the 134 | back button 135 |

136 | 137 |

138 | When the #middle or #end links are clicked, and the location.hash is changed, the back button 139 | should be enabled. In Firefox, IE8 and Opera this works as expected. In Safari and 140 | Chrome, in an Iframe, the back button stays disabled.. and in the latest WebKit 141 | nightly (r51669), the back button is enabled, but only partially. 142 |

143 |

144 | For whatever reason, when the location.hash is changed inside an Iframe in Safari 145 | or Chrome, no new history entries are created (and the back button stays disabled). 146 | In the latest WebKit nightly, new history entries are created, but not for the initial 147 | location.hash. Meaning you can go back, but never to #begin. 148 |

149 | 150 |

151 | 4 152 | Click here to load this page in the "top" and 153 | you'll see that everything works as-expected. Repeat steps 2 and 3 there, and you'll 154 | see that the location.hash goes from #begin → #middle → #end → #middle → #begin. When 155 | you're done, press the back button again to return to the "in an Iframe" page. 156 |

157 | 158 |

159 | 5 160 | Now that you've returned to the "in an Iframe" page, repeat steps 2 and 3 a final time.. 161 | and see that the history now works! Well, almost works, because you still can't 162 | get to the initial #begin location.hash in Safari, Chrome, or the WebKit nightly. 163 |

164 | 165 |

What's up with that, WebKit?

166 | 167 |

The code

168 | 169 |
170 | 
171 | 
172 | 173 | 184 | -------------------------------------------------------------------------------- /examples/document_domain/index.php: -------------------------------------------------------------------------------- 1 | 15 | $(function(){ 16 | 17 | // These two properties, set after jQuery and the hashchange event plugin are 18 | // loaded, only need to be used when document.domain is set (to fix the "access 19 | // denied" error in IE6/7). 20 | $.fn.hashchange.src = '../../document-domain.html'; 21 | $.fn.hashchange.domain = document.domain; 22 | 23 | // Bind an event to window.onhashchange that, when the hash changes, gets the 24 | // hash and adds the class "selected" to any matching nav link. 25 | $(window).hashchange( function(){ 26 | var hash = location.hash; 27 | 28 | // Set the page title based on the hash. 29 | document.title = 'The hash is ' + ( hash.replace( /^#/, '' ) || 'blank' ) + '.'; 30 | 31 | // Iterate over all nav links, setting the "selected" class as-appropriate. 32 | $('#nav a').each(function(){ 33 | var that = $(this); 34 | that[ that.attr( 'href' ) === hash ? 'addClass' : 'removeClass' ]( 'selected' ); 35 | }); 36 | }) 37 | 38 | // Since the event is only triggered when the hash changes, we need to trigger 39 | // the event now, to handle the hash the page may have loaded with. 40 | $(window).hashchange(); 41 | 42 | }); 43 | 53 | 57 | 63 | 64 | 76 | 119 | 129 | 130 | 131 |

132 | jQuery hashchange event enables very basic bookmarkable #hash history via a cross-browser window.onhashchange event. This example is exactly like the basic hashchange event example except that document.domain is set, and the example code has been modifed accordingly. 133 |

134 | 135 |

Click, and watch as the magic happens!

136 | 137 | 143 | 144 |
145 | 146 |

147 | Note that there is absolutely no JavaScript attached to the click event of these links. All they do is set the location.hash via href, and the callback bound to the window.onhashchange event does the rest. Once you've clicked one or more of these links, fool around with your browser's back and next buttons. 148 |

149 | 150 |

The code

151 | 152 |
153 | 
154 | 
155 | 156 |

That's it!

157 | 158 |

159 | This plugin is, by design, very basic. If you want to add lot of extra utility around getting and setting the hash as a state, and parsing and merging fragment params, check out the jQuery BBQ plugin. It includes this plugin at its core, plus a whole lot more, and has thorough documentation and examples as well. You can't have too much of a good thing! 160 |

161 | 162 | --------------------------------------------------------------------------------