(function( $, undefined ) { //special click handling to make widget work remove after nav changes in 1.4 var href, ele = ""; $( document ).on( "click", "a", function( e ) { href = $( this ).attr( "href" ); var hash = $.mobile.path.parseUrl( href ); if( typeof href !== "undefined" && hash !== "" && href !== href.replace( hash,"" ) && hash.search( "/" ) !== -1 ){ //remove the hash from the link to allow normal loading of the page. var newHref = href.replace( hash,"" ); $( this ).attr( "href", newHref ); } ele = $( this ); }); $( document ).on( "pagebeforechange", function( e, f ){ f.originalHref = href; }); $( document ).on("pagebeforechange", function( e,f ){ var hash = $.mobile.path.parseUrl(f.toPage).hash, hashEl, hashElInPage; try { hashEl = $( hash ); } catch( e ) { hashEl = $(); } try { hashElInPage = $( ".ui-page-active " + hash ); } catch( e ) { hashElInPage = $(); } if( typeof hash !== "undefined" && hash.search( "/" ) === -1 && hash !== "" && hashEl.length > 0 && !hashEl.hasClass( "ui-page" ) && !hashEl.hasClass( "ui-popup" ) && hashEl.data('role') !== "page" && !hashElInPage.hasClass( "ui-panel" ) && !hashElInPage.hasClass( "ui-popup" ) ) { //scroll to the id var pos = hashEl.offset().top; $.mobile.silentScroll( pos ); $.mobile.navigate( hash, '', true ); } else if( typeof f.toPage !== "object" && hash !== "" && $.mobile.path.parseUrl( href ).hash !== "" && !hashEl.hasClass( "ui-page" ) && hashEl.attr('data-role') !== "page" && !hashElInPage.hasClass( "ui-panel" ) && !hashElInPage.hasClass( "ui-popup" ) ) { $( ele ).attr( "href", href ); $.mobile.document.one( "pagechange", function() { if( typeof hash !== "undefined" && hash.search( "/" ) === -1 && hash !== "" && hashEl.length > 0 && hashElInPage.length > 0 && !hashEl.hasClass( "ui-page" ) && hashEl.data('role') !== "page" && !hashElInPage.hasClass( "ui-panel" ) && !hashElInPage.hasClass( "ui-popup" ) ) { hash = $.mobile.path.parseUrl( href ).hash; var pos = hashElInPage.offset().top; $.mobile.silentScroll( pos ); } } ); } }); $( document ).on( "mobileinit", function(){ hash = window.location.hash; $.mobile.document.one( "pageshow", function(){ var hashEl, hashElInPage; try { hashEl = $( hash ); } catch( e ) { hashEl = $(); } try { hashElInPage = $( ".ui-page-active " + hash ); } catch( e ) { hashElInPage = $(); } if( hash !== "" && hashEl.length > 0 && hashElInPage.length > 0 && hashEl.attr('data-role') !== "page" && !hashEl.hasClass( "ui-page" ) && !hashElInPage.hasClass( "ui-panel" ) && !hashElInPage.hasClass( "ui-popup" ) && !hashEl.is( "body" ) ){ var pos = hashElInPage.offset().top; setTimeout( function(){ $.mobile.silentScroll( pos ); }, 100 ); } }); }); //h2 widget $( document ).on( "mobileinit", function(){ $.widget( "mobile.h2linker", { options:{ initSelector: ":jqmData(quicklinks='true')" }, _create:function(){ var self = this, bodyid = "ui-page-top", panel = "", first = true, h2dictionary = new Object(); if(typeof $("body").attr("id") === "undefined"){ $("body").attr("id",bodyid); } else { bodyid = $("body").attr("id"); } this.element.find("div.jqm-content>h2").each(function(){ var id, text = $(this).text(); if(typeof $(this).attr("id") === "undefined"){ id = text.replace(/[^\.a-z0-9:_-]+/gi,""); $(this).attr( "id", id ); } else { id = $(this).attr("id"); } h2dictionary[id] = text; if(!first){ $(this).before( "Top"); } else { $(this).before("Quick Links"); } first = false; }); this._on(".jqm-open-quicklink-panel", { "click": function(){ $(".ui-page-active .jqm-quicklink-panel").panel("open"); return false; } }); this._on( document, { "pagebeforechange": function(){ this.element.find(".jqm-quicklink-panel").panel("close"); this.element.find(".jqm-quicklink-panel .ui-btn-active").removeClass("ui-btn-active"); } }); if( $(h2dictionary).length > 0 ){ this.element.prepend(panel) this.element.find(".jqm-quicklink-panel").panel().find("ul").listview(); } $.each(h2dictionary,function(id,text){ self.element.find(".jqm-quicklink-panel ul").append("
  • "+text+"
  • "); }); self.element.find(".jqm-quicklink-panel ul").listview("refresh"); } }); }); $( document ).bind( "pagecreate create", function( e ) { var initselector = $.mobile.h2linker.prototype.options.initSelector; if($(e.target).data("quicklinks")){ $(e.target).h2linker(); } }); })( jQuery ); // Turn off Ajax for local file browsing if ( location.protocol.substr(0,4) === 'file' || location.protocol.substr(0,11) === '*-extension' || location.protocol.substr(0,6) === 'widget' ) { // Start with links with only the trailing slash and that aren't external links var fixLinks = function() { $( "a[href$='/'], a[href='.'], a[href='..']" ).not( "[rel='external']" ).each( function() { if( !$( this ).attr( "href" ).match("http") ){ this.href = $( this ).attr( "href" ).replace( /\/$/, "" ) + "/index.html"; } }); }; // Fix the links for the initial page $( fixLinks ); // Fix the links for subsequent ajax page loads $( document ).on( "pagecreate", fixLinks ); // Check to see if ajax can be used. This does a quick ajax request and blocks the page until its done $.ajax({ url: '.', async: false, isLocal: true }).error(function() { // Ajax doesn't work so turn it off $( document ).on( "mobileinit", function() { $.mobile.ajaxEnabled = false; var message = $( '
    ' , { 'class': "jqm-content", style: "border:none; padding: 10px 15px; overflow: auto;", 'data-ajax-warning': true }); message .append( "

    Note: Navigation may not work if viewed locally

    " ) .append( "

    The Ajax-based navigation used throughout the jQuery Mobile docs may need to be viewed on a web server to work in certain browsers. If you see an error message when you click a link, please try a different browser.

    " ); $( document ).on( "pagecreate", function( event ) { $( event.target ).append( message ); }); }); }); } $( document ).on( "pagecreate", ".jqm-demos", function( event ) { var search, page = $( this ), that = this, searchUrl = ( $( this ).hasClass( "jqm-home" ) ) ? "_search/" : "../_search/", searchContents = $( ".jqm-search ul.jqm-list" ).find( "li:not(.ui-collapsible)" ), version = $.mobile.version || "dev", words = version.split( "-" ), ver = words[0], str = words[1] || "", text = ver; // Insert jqm version in header if ( str.indexOf( "rc" ) == -1 ) { str = str.charAt( 0 ).toUpperCase() + str.slice( 1 ); } else { str = str.toUpperCase().replace( ".", "" ); } if ( $.mobile.version && str ) { text += " " + str; } $( ".jqm-version" ).html( text ); // Global navmenu panel $( ".jqm-navmenu-panel ul" ).listview(); $( document ).on( "panelopen", ".jqm-search-panel", function() { $( this ).find( "input" ).focus(); }) $( ".jqm-navmenu-link" ).on( "click", function() { page.find( ".jqm-navmenu-panel:not(.jqm-panel-page-nav)" ).panel( "open" ); }); // Turn off autocomplete / correct for demos search $( this ).find( ".jqm-search input" ).attr( "autocomplete", "off" ).attr( "autocorrect", "off" ); // Global search $( ".jqm-search-link" ).on( "click", function() { page.find( ".jqm-search-panel" ).panel( "open" ); }); // Initalize search panel list and filter also remove collapsibles $( this ).find( ".jqm-search ul.jqm-list" ).html( searchContents ).listview({ inset: false, theme: null, dividerTheme: null, icon: false, autodividers: true, autodividersSelector: function ( li ) { return ""; }, arrowKeyNav: true, enterToNav: true, highlight: true, submitTo: searchUrl }).filterable(); // Initalize search page list and remove collapsibles $( this ).find( ".jqm-search-results-wrap ul.jqm-list" ).html( searchContents ).listview({ inset: true, theme: null, dividerTheme: null, icon: false, arrowKeyNav: true, enterToNav: true, highlight: true }).filterable(); // Fix links on homepage to point to sub directories if ( $( event.target ).hasClass( "jqm-home") ) { $( this ).find( "a" ).each( function() { $( this ).attr( "href", $( this ).attr( "href" ).replace( "../", "" ) ); }); } // Search results page get search query string and enter it into filter then trigger keyup to filter if ( $( event.target ).hasClass( "jqm-demos-search-results") ) { search = $.mobile.path.parseUrl( window.location.href ).search.split( "=" )[ 1 ]; setTimeout(function() { e = $.Event( "keyup" ); e.which = 65; $( that ).find( ".jqm-content .jqm-search-results-wrap input" ).val( search ).trigger(e).trigger( "change" ); }, 0 ); } }); // Append keywords list to each list item $( document ).one( "pagecreate", ".jqm-demos", function( event ) { $( this ).find( ".jqm-search-results-list li, .jqm-search li" ).each(function() { var text = $( this ).attr( "data-filtertext" ); $( this ) .find( "a" ) .append( "" + text + "" ); }); }); // Functions for highlighting text used for keywords highlight in search jQuery.fn.highlight = function( pat ) { function innerHighlight( node, pat ) { var skip = 0; if ( node.nodeType == 3 ) { var pos = node.data.toUpperCase().indexOf( pat ); if ( pos >= 0 ) { var spannode = document.createElement( "span" ); spannode.className = "jqm-search-results-highlight"; var middlebit = node.splitText( pos ); var endbit = middlebit.splitText( pat.length ); var middleclone = middlebit.cloneNode( true ); spannode.appendChild( middleclone ); middlebit.parentNode.replaceChild( spannode, middlebit ); skip = 1; } } else if ( node.nodeType == 1 && node.childNodes && !/(script|style)/i.test( node.tagName ) ) { for ( var i = 0; i < node.childNodes.length; ++i ) { i += innerHighlight( node.childNodes[i], pat ); } } return skip; } return this.length && pat && pat.length ? this.each(function() { innerHighlight( this, pat.toUpperCase() ); }) : this; }; // Function to remove highlights in text jQuery.fn.removeHighlight = function() { return this.find( "span.jqm-search-results-highlight" ).each(function() { this.parentNode.firstChild.nodeName; with ( this.parentNode ) { replaceChild( this.firstChild, this ); normalize(); } }).end(); }; // Extension to listview to add keyboard navigation $( document ).on( "mobileinit", function() { (function( $, undefined ) { $.widget( "mobile.listview", $.mobile.listview, { options: { arrowKeyNav: false, enterToNav: false, highlight: false, submitTo: false }, _create: function() { this._super(); if ( this.options.arrowKeyNav ) { this._on( document, { "pageshow": "arrowKeyNav" }); } if ( this.options.enterToNav ) { this._on( document, { "pageshow": "enterToNav" }); } }, submitTo: function() { var url, form = this.element.parent().find( "form" ); form.attr( "method", "get" ) .attr( "action", this.options.submitTo ); url = this.options.submitTo + "?search=" + this.element.parent().find( "input" ).val(); window.location = url; }, enterToNav: function() { var form = this.element.parent().find( "form" ); form.append( "" ) .parent() .trigger( "create" ); this.element.parent().find( "form" ).children( ".ui-btn" ).addClass( "ui-hidden-accessible" ); this._on( form, { "submit": "submitHandler" }); }, enhanced: false, arrowKeyNav: function() { var input = this.element.prev("form").find( "input" ); if ( !this.enhanced ) { this._on( input, { "keyup": "handleKeyUp" }); this.enhanced = true; } }, handleKeyUp: function( e ) { var search, input = this.element.prev("form").find( "input" ); if ( e.which === $.ui.keyCode.DOWN ) { if ( this.element.find( "li.ui-btn-active" ).length === 0 ) { this.element.find( "li:first" ).toggleClass( "ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); } else { this.element.find( "li.ui-btn-active a" ).toggleClass( "ui-btn-active"); this.element.find( "li.ui-btn-active" ).toggleClass( "ui-btn-active" ).next().toggleClass( "ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); } this.highlightDown(); } else if ( e.which === $.ui.keyCode.UP ) { if ( this.element.find( "li.ui-btn-active" ).length !== 0 ) { this.element.find( "li.ui-btn-active a" ).toggleClass( "ui-btn-active"); this.element.find( "li.ui-btn-active" ).toggleClass( "ui-btn-active" ).prev().toggleClass( "ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); } else { this.element.find( "li:last" ).toggleClass( "ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); } this.highlightUp(); } else if ( typeof e.which !== "undefined" ) { this.element.find( "li.ui-btn-active" ).removeClass( "ui-btn-active" ); if ( this.options.highlight ) { search = input.val(); this.element.find( "li" ).each(function() { $( this ).removeHighlight(); $( this ).highlight( search ); }); } } }, submitHandler: function() { if ( this.element.find( "li.ui-btn-active" ).length !== 0 ) { var href = this.element.find( "li.ui-btn-active a" ).attr( "href" ); $( ":mobile-pagecontainer" ).pagecontainer( "change", href ); return false; } if ( this.options.submitTo ) { this.submitTo(); } }, highlightDown: function() { if ( this.element.find( "li.ui-btn-active" ).hasClass( "ui-screen-hidden" ) ) { this.element.find( "li.ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); this.element.find( "li.ui-btn-active" ).toggleClass( "ui-btn-active" ).next().toggleClass( "ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); this.highlightDown(); } return; }, highlightUp: function() { if ( this.element.find( "li.ui-btn-active" ).hasClass( "ui-screen-hidden" ) ) { this.element.find( "li.ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); this.element.find( "li.ui-btn-active" ).toggleClass( "ui-btn-active" ).prev().toggleClass( "ui-btn-active" ).find("a").toggleClass( "ui-btn-active" ); this.highlightUp(); } return; } }); })( jQuery ); }); // View demo source code function attachPopupHandler( popup, sources ) { popup.one( "popupbeforeposition", function() { var collapsibleSet = popup.find( "[data-role='collapsibleset']" ), collapsible, pre; $.each( sources, function( idx, options ) { collapsible = $( "
    " + "

    " + options.title + "

    " + "
    " +
    				"
    " ); pre = collapsible.find( "pre" ); pre.append( options.data.replace( /
    " ).append( el.contents().clone() ).html(); if ( !text ) { text = ""; selector = el.attr( "href" ) || el.attr( "src" ) || ""; } } // If not, try to SJAX in the document referred to by the selector if ( !text && selector ) { absUrl = $.mobile.path.makeUrlAbsolute( selector ); hash = $.mobile.path.parseUrl( absUrl ).hash; // selector is a path to SJAX in $.ajax( absUrl, { async: false, dataType: "text" } ) .success( function( data, textStatus, jqXHR ) { text = data; // If there's a hash we assume this is an HTML document that has a tag // inside whose ID is the hash if ( hash ) { text = $( "
    " ).append( $( data ).find( hash ).contents().clone() ).html(); } }); } return text; } $( document ).bind( "pagebeforechange", function( e, data ) { var popup, sources; if ( data.options && data.options.role === "popup" && data.options.link ) { sources = data.options.link.jqmData( "sources" ); if ( sources ) { popup = $( "
    " + "
    " + "
    " ); attachPopupHandler( popup, sources ); popup .appendTo( $.mobile.activePage ) .popup() .bind( "popupafterclose", function() { popup.remove(); }) .popup( "open" ); e.preventDefault(); } } }); function makeButton() { var d = document.createElement( "div" ) a = document.createElement( "a" ), txt = document.createTextNode( "View Source" ); a.className = "jqm-view-source-link ui-btn ui-corner-all ui-btn-inline ui-mini"; a.setAttribute( "href", "#popupDemo" ); a.setAttribute( "data-rel", "popup" ); a.appendChild( txt ); d.appendChild( a ); return $( d ); } $.fn.viewSourceCode = function() { return $( this ).each( function() { var button = makeButton(), self = $( this ), snippetSource = self.parents( ".ui-page,:jqmData(role='page')" ).add( $( "head" ) ), fixData = function( data ) { return data.replace( /\s+$/gm, "" ); }, data, sources = []; // Collect source code before it becomes enhanced if ( self.is( "[data-demo-html]" ) ) { if ( self.attr( "data-demo-html" ) === "true" ) { data = self.html(); } else { data = $( "
    " ).append( $( self.attr( "data-demo-html" ) ).clone() ).html(); } sources.push( { title: "HTML", theme: "c", brush: "xml", data: fixData( data ) } ); } if ( self.is( "[data-demo-php]" ) ) { $.ajax( self.attr( "data-demo-php" ), { async: false } ) .success( function( incoming ) { data = incoming; }) .error( function() { data = "// Failed to retrieve PHP source code"; }); sources.push( { title: "PHP", theme: "d", brush: "php", data: fixData( data ) } ); } if ( self.is( "[data-demo-js]" ) ) { data = getSnippet( "script", self.attr( "data-demo-js" ), snippetSource ); sources.push( { title: "JS", theme: "e", brush: "js", data: fixData( data ) } ); } if ( self.is( "[data-demo-css]" ) ) { data = getSnippet( "style", self.attr( "data-demo-css" ), snippetSource ); sources.push( { title: "CSS", theme: "f", brush: "css", data: fixData( data ) } ); } button.insertAfter( this ); button.children().jqmData( "sources", sources ); }); }; $( document ).on( "pagebeforecreate", "[data-role='page']", function() { $( this ).find( "[data-demo-html], [data-demo-js], [data-demo-css], [data-demo-php]" ).viewSourceCode(); SyntaxHighlighter.defaults['toolbar'] = false; SyntaxHighlighter.defaults['auto-links'] = false; }); $( document ).on( "pagecreate", function( e ) { // prevent page scroll while scrolling source code $( document ).on( "mousewheel", ".jqm-view-source .ui-collapsible-content", function( event, delta ) { if ( delta > 0 && $( this ).scrollTop() === 0 ) { event.preventDefault(); } else if ( delta < 0 && $( this ).scrollTop() === $( this ).get( 0 ).scrollHeight - $( this ).innerHeight() ) { event.preventDefault(); } }); // reposition when switching between html / js / css $( e.target ).delegate( ".jqm-view-source .ui-collapsible", "expand", function() { $( this ).parents( ":mobile-popup" ).popup( "reposition", { positionTo: "window" } ); }); $( e.target ).delegate( ".jqm-view-source", "popupbeforeposition", function() { // max height: screen height - tolerance (2*30px) - 42px for each collapsible heading var x = $( this ).find( ".ui-collapsible" ).length, maxHeight = $.mobile.getScreenHeight() - 60 - ( x * 42 ); $( this ).find( ".ui-collapsible-content" ).css( "max-height", maxHeight + "px" ); // keep line numbers and code lines in sync $(".ui-collapsible:not(.ui-collapsible-collapsed) .gutter", this ).find( ".line" ).css( "height", ""); $(".ui-collapsible:not(.ui-collapsible-collapsed) .code", this ).find( ".line" ).each( function() { if ( $( this ).height() !== 16 ) { var height = $( this ).height(), linenumber = ".number" + /number(\w+)/.exec( this.className )[1], gutter = $( this ).parents( "tr" ).find( "td.gutter" ).first(), line = $( gutter ).find( linenumber ); $( line ).height( height ); } }); }); }); /** * SyntaxHighlighter * http://alexgorbatchev.com/SyntaxHighlighter * * SyntaxHighlighter is donationware. If you are using it, please donate. * http://alexgorbatchev.com/SyntaxHighlighter/donate.html * * @version * 3.0.83 (July 02 2010) * * @copyright * Copyright (C) 2004-2010 Alex Gorbatchev. * * @license * Dual licensed under the MIT and GPL licenses. */ eval(function(p,a,c,k,e,d){e=function(c){return(c35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--){d[e(c)]=k[c]||e(c)}k=[function(e){return d[e]}];e=function() {return'\\w+'};c=1};while(c--){if(k[c]){p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c])}}return p}('K M;I(M)1S 2U("2a\'t 4k M 4K 2g 3l 4G 4H");(6(){6 r(f,e){I(!M.1R(f))1S 3m("3s 15 4R");K a=f.1w;f=M(f.1m,t(f)+(e||""));I(a)f.1w={1m:a.1m,19:a.19?a.19.1a(0):N};H f}6 t(f){H(f.1J?"g":"")+(f.4s?"i":"")+(f.4p?"m":"")+(f.4v?"x":"")+(f.3n?"y":"")}6 B(f,e,a,b){K c=u.L,d,h,g;v=R;5K{O(;c--;){g=u[c];I(a&g.3r&&(!g.2p||g.2p.W(b))){g.2q.12=e;I((h=g.2q.X(f))&&h.P===e){d={3k:g.2b.W(b,h,a),1C:h};1N}}}}5v(i){1S i}5q{v=11}H d}6 p(f,e,a){I(3b.Z.1i)H f.1i(e,a);O(a=a||0;a-1},3d:6(g){e+=g}};c1&&p(e,"")>-1){a=15(J.1m,n.Q.W(t(J),"g",""));n.Q.W(f.1a(e.P),a,6(){O(K c=1;c<14.L-2;c++)I(14[c]===1d)e[c]=1d})}I(J.1w&&J.1w.19)O(K b=1;be.P&&J.12--}H e};I(!D)15.Z.1A=6(f){(f=n.X.W(J,f))&&J.1J&&!f[0].L&&J.12>f.P&&J.12--;H!!f};1r.Z.1C=6(f){M.1R(f)||(f=15(f));I(f.1J){K e=n.1C.1p(J,14);f.12=0;H e}H f.X(J)};1r.Z.Q=6(f,e){K a=M.1R(f),b,c;I(a&&1j e.58()==="3f"&&e.1i("${")===-1&&y)H n.Q.1p(J,14);I(a){I(f.1w)b=f.1w.19}Y f+="";I(1j e==="6")c=n.Q.W(J,f,6(){I(b){14[0]=1f 1r(14[0]);O(K d=0;dd.L-3;){i=1r.Z.1a.W(g,-1)+i;g=1Q.3i(g/10)}H(g?d[g]||"":"$")+i}Y{g=+i;I(g<=d.L-3)H d[g];g=b?p(b,i):-1;H g>-1?d[g+1]:h}})})}I(a&&f.1J)f.12=0;H c};1r.Z.1e=6(f,e){I(!M.1R(f))H n.1e.1p(J,14);K a=J+"",b=[],c=0,d,h;I(e===1d||+e<0)e=5D;Y{e=1Q.3i(+e);I(!e)H[]}O(f=M.3c(f);d=f.X(a);){I(f.12>c){b.U(a.1a(c,d.P));d.L>1&&d.P=e)1N}f.12===d.P&&f.12++}I(c===a.L){I(!n.1A.W(f,"")||h)b.U("")}Y b.U(a.1a(c));H b.L>e?b.1a(0,e):b};M.1h(/\\(\\?#[^)]*\\)/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"});M.1h(/\\((?!\\?)/,6(){J.19.U(N);H"("});M.1h(/\\(\\?<([$\\w]+)>/,6(f){J.19.U(f[1]);J.2N=R;H"("});M.1h(/\\\\k<([\\w$]+)>/,6(f){K e=p(J.19,f[1]);H e>-1?"\\\\"+(e+1)+(3R(f.2S.3a(f.P+f[0].L))?"":"(?:)"):f[0]});M.1h(/\\[\\^?]/,6(f){H f[0]==="[]"?"\\\\b\\\\B":"[\\\\s\\\\S]"});M.1h(/^\\(\\?([5A]+)\\)/,6(f){J.3d(f[1]);H""});M.1h(/(?:\\s+|#.*)+/,6(f){H n.1A.W(A,f.2S.1a(f.P+f[0].L))?"":"(?:)"},M.1B,6(){H J.2K("x")});M.1h(/\\./,6(){H"[\\\\s\\\\S]"},M.1B,6(){H J.2K("s")})})();1j 2e!="1d"&&(2e.M=M);K 1v=6(){6 r(a,b){a.1l.1i(b)!=-1||(a.1l+=" "+b)}6 t(a){H a.1i("3e")==0?a:"3e"+a}6 B(a){H e.1Y.2A[t(a)]}6 p(a,b,c){I(a==N)H N;K d=c!=R?a.3G:[a.2G],h={"#":"1c",".":"1l"}[b.1o(0,1)]||"3h",g,i;g=h!="3h"?b.1o(1):b.5u();I((a[h]||"").1i(g)!=-1)H a;O(a=0;d&&a\'+c+""});H a}6 n(a,b){a.1e("\\n");O(K c="",d=0;d<50;d++)c+=" ";H a=v(a,6(h){I(h.1i("\\t")==-1)H h;O(K g=0;(g=h.1i("\\t"))!=-1;)h=h.1o(0,g)+c.1o(0,b-g%b)+h.1o(g+1,h.L);H h})}6 x(a){H a.Q(/^\\s+|\\s+$/g,"")}6 D(a,b){I(a.Pb.P)H 1;Y I(a.Lb.L)H 1;H 0}6 y(a,b){6 c(k){H k[0]}O(K d=N,h=[],g=b.2D?b.2D:c;(d=b.1I.X(a))!=N;){K i=g(d,b);I(1j i=="3f")i=[1f e.2L(i,d.P,b.23)];h=h.1O(i)}H h}6 E(a){K b=/(.*)((&1G;|&1y;).*)/;H a.Q(e.3A.3M,6(c){K d="",h=N;I(h=b.X(c)){c=h[1];d=h[2]}H\'\'+c+""+d})}6 z(){O(K a=1E.36("1k"),b=[],c=0;c<1z 4I="1Z://2y.3L.3K/4L/5L"><3J><4N 1Z-4M="5G-5M" 6K="2O/1z; 6J=6I-8" /><1t>6L 1v<3B 1L="25-6M:6Q,6P,6O,6N-6F;6y-2f:#6x;2f:#6w;25-22:6v;2O-3D:3C;">1v3v 3.0.76 (72 73 3x)1Z://3u.2w/1v70 17 6U 71.6T 6X-3x 6Y 6D.6t 61 60 J 1k, 5Z 5R 5V <2R/>5U 5T 5S!\'}},1Y:{2j:N,2A:{}},1U:{},3A:{6n:/\\/\\*[\\s\\S]*?\\*\\//2c,6m:/\\/\\/.*$/2c,6l:/#.*$/2c,6k:/"([^\\\\"\\n]|\\\\.)*"/g,6o:/\'([^\\\\\'\\n]|\\\\.)*\'/g,6p:1f M(\'"([^\\\\\\\\"]|\\\\\\\\.)*"\',"3z"),6s:1f M("\'([^\\\\\\\\\']|\\\\\\\\.)*\'","3z"),6q:/(&1y;|<)!--[\\s\\S]*?--(&1G;|>)/2c,3M:/\\w+:\\/\\/[\\w-.\\/?%&=:@;]*/g,6a:{18:/(&1y;|<)\\?=?/g,1b:/\\?(&1G;|>)/g},69:{18:/(&1y;|<)%=?/g,1b:/%(&1G;|>)/g},6d:{18:/(&1y;|<)\\s*1k.*?(&1G;|>)/2T,1b:/(&1y;|<)\\/\\s*1k\\s*(&1G;|>)/2T}},16:{1H:6(a){6 b(i,k){H e.16.2o(i,k,e.13.1x[k])}O(K c=\'\',d=e.16.2x,h=d.2X,g=0;g";H c},2o:6(a,b,c){H\'<2W>\'+c+""},2b:6(a){K b=a.1F,c=b.1l||"";b=B(p(b,".20",R).1c);K d=6(h){H(h=15(h+"6f(\\\\w+)").X(c))?h[1]:N}("6g");b&&d&&e.16.2x[d].2B(b);a.3N()},2x:{2X:["21","2P"],21:{1H:6(a){I(a.V("2l")!=R)H"";K b=a.V("1t");H e.16.2o(a,"21",b?b:e.13.1x.21)},2B:6(a){a=1E.6j(t(a.1c));a.1l=a.1l.Q("47","")}},2P:{2B:6(){K a="68=0";a+=", 18="+(31.30-33)/2+", 32="+(31.2Z-2Y)/2+", 30=33, 2Z=2Y";a=a.Q(/^,/,"");a=1P.6Z("","38",a);a.2C();K b=a.1E;b.6W(e.13.1x.37);b.6V();a.2C()}}}},35:6(a,b){K c;I(b)c=[b];Y{c=1E.36(e.13.34);O(K d=[],h=0;h(.*?))\\\\]$"),s=1f M("(?<27>[\\\\w-]+)\\\\s*:\\\\s*(?<1T>[\\\\w-%#]+|\\\\[.*?\\\\]|\\".*?\\"|\'.*?\')\\\\s*;?","g");(j=s.X(k))!=N;){K o=j.1T.Q(/^[\'"]|[\'"]$/g,"");I(o!=N&&m.1A(o)){o=m.X(o);o=o.2V.L>0?o.2V.1e(/\\s*,\\s*/):[]}l[j.27]=o}g={1F:g,1n:C(i,l)};g.1n.1D!=N&&d.U(g)}H d},1M:6(a,b){K c=J.35(a,b),d=N,h=e.13;I(c.L!==0)O(K g=0;g")==o-3){m=m.4h(0,o-3);s=R}l=s?m:l}I((i.1t||"")!="")k.1t=i.1t;k.1D=j;d.2Q(k);b=d.2F(l);I((i.1c||"")!="")b.1c=i.1c;i.2G.74(b,i)}}},2E:6(a){w(1P,"4k",6(){e.1M(a)})}};e.2E=e.2E;e.1M=e.1M;e.2L=6(a,b,c){J.1T=a;J.P=b;J.L=a.L;J.23=c;J.1V=N};e.2L.Z.1q=6(){H J.1T};e.4l=6(a){6 b(j,l){O(K m=0;md)1N;Y I(g.P==c.P&&g.L>c.L)a[b]=N;Y I(g.P>=c.P&&g.P\'+c+""},3Q:6(a,b){K c="",d=a.1e("\\n").L,h=2u(J.V("2i-1s")),g=J.V("2z-1s-2t");I(g==R)g=(h+d-1).1q().L;Y I(3R(g)==R)g=0;O(K i=0;i\'+j+"":"")+i)}H a},4f:6(a){H a?"<4a>"+a+"":""},4b:6(a,b){6 c(l){H(l=l?l.1V||g:g)?l+" ":""}O(K d=0,h="",g=J.V("1D",""),i=0;i|&1y;2R\\s*\\/?&1G;/2T;I(e.13.46==R)b=b.Q(h,"\\n");I(e.13.44==R)b=b.Q(h,"");b=b.1e("\\n");h=/^\\s*/;g=4Q;O(K i=0;i0;i++){K k=b[i];I(x(k).L!=0){k=h.X(k);I(k==N){a=a;1N a}g=1Q.4q(k[0].L,g)}}I(g>0)O(i=0;i\'+(J.V("16")?e.16.1H(J):"")+\'<3Z 5z="0" 5H="0" 5J="0">\'+J.4f(J.V("1t"))+"<3T><3P>"+(1u?\'<2d 1g="1u">\'+J.3Q(a)+"":"")+\'<2d 1g="17">\'+b+""},2F:6(a){I(a===N)a="";J.17=a;K b=J.3Y("T");b.3X=J.1H(a);J.V("16")&&w(p(b,".16"),"5c",e.16.2b);J.V("3V-17")&&w(p(b,".17"),"56",f);H b},2Q:6(a){J.1c=""+1Q.5d(1Q.5n()*5k).1q();e.1Y.2A[t(J.1c)]=J;J.1n=C(e.2v,a||{});I(J.V("2k")==R)J.1n.16=J.1n.1u=11},5j:6(a){a=a.Q(/^\\s+|\\s+$/g,"").Q(/\\s+/g,"|");H"\\\\b(?:"+a+")\\\\b"},5f:6(a){J.28={18:{1I:a.18,23:"1k"},1b:{1I:a.1b,23:"1k"},17:1f M("(?<18>"+a.18.1m+")(?<17>.*?)(?<1b>"+a.1b.1m+")","5o")}}};H e}();1j 2e!="1d"&&(2e.1v=1v);',62,441,'||||||function|||||||||||||||||||||||||||||||||||||return|if|this|var|length|XRegExp|null|for|index|replace|true||div|push|getParam|call|exec|else|prototype||false|lastIndex|config|arguments|RegExp|toolbar|code|left|captureNames|slice|right|id|undefined|split|new|class|addToken|indexOf|typeof|script|className|source|params|substr|apply|toString|String|line|title|gutter|SyntaxHighlighter|_xregexp|strings|lt|html|test|OUTSIDE_CLASS|match|brush|document|target|gt|getHtml|regex|global|join|style|highlight|break|concat|window|Math|isRegExp|throw|value|brushes|brushName|space|alert|vars|http|syntaxhighlighter|expandSource|size|css|case|font|Fa|name|htmlScript|dA|can|handler|gm|td|exports|color|in|href|first|discoveredBrushes|light|collapse|object|cache|getButtonHtml|trigger|pattern|getLineHtml|nbsp|numbers|parseInt|defaults|com|items|www|pad|highlighters|execute|focus|func|all|getDiv|parentNode|navigator|INSIDE_CLASS|regexList|hasFlag|Match|useScriptTags|hasNamedCapture|text|help|init|br|input|gi|Error|values|span|list|250|height|width|screen|top|500|tagName|findElements|getElementsByTagName|aboutDialog|_blank|appendChild|charAt|Array|copyAsGlobal|setFlag|highlighter_|string|attachEvent|nodeName|floor|backref|output|the|TypeError|sticky|Za|iterate|freezeTokens|scope|type|textarea|alexgorbatchev|version|margin|2010|005896|gs|regexLib|body|center|align|noBrush|require|childNodes|DTD|xhtml1|head|org|w3|url|preventDefault|container|tr|getLineNumbersHtml|isNaN|userAgent|tbody|isLineHighlighted|quick|void|innerHTML|create|table|links|auto|smart|tab|stripBrs|tabs|bloggerMode|collapsed|plain|getCodeLinesHtml|caption|getMatchesHtml|findMatches|figureOutLineNumbers|removeNestedMatches|getTitleHtml|brushNotHtmlScript|substring|createElement|Highlighter|load|HtmlScript|Brush|pre|expand|multiline|min|Can|ignoreCase|find|blur|extended|toLowerCase|aliases|addEventListener|innerText|textContent|wasn|select|createTextNode|removeChild|option|same|frame|xmlns|dtd|twice|1999|equiv|meta|htmlscript|transitional|1E3|expected|PUBLIC|DOCTYPE|on|W3C|XHTML|TR|EN|Transitional||configured|srcElement|Object|after|run|dblclick|matchChain|valueOf|constructor|default|switch|click|round|execAt|forHtmlScript|token|gimy|functions|getKeywords|1E6|escape|within|random|sgi|another|finally|supply|MSIE|ie|toUpperCase|catch|returnValue|definition|event|border|imsx|constructing|one|Infinity|from|when|Content|cellpadding|flags|cellspacing|try|xhtml|Type|spaces|2930402|hosted_button_id|lastIndexOf|donate|active|development|keep|to|xclick|_s|Xml|please|like|you|paypal|cgi|cmd|webscr|bin|highlighted|scrollbars|aspScriptTags|phpScriptTags|sort|max|scriptScriptTags|toolbar_item|_|command|command_|number|getElementById|doubleQuotedString|singleLinePerlComments|singleLineCComments|multiLineCComments|singleQuotedString|multiLineDoubleQuotedString|xmlComments|alt|multiLineSingleQuotedString|If|https|1em|000|fff|background|5em|xx|bottom|75em|Gorbatchev|large|serif|CDATA|continue|utf|charset|content|About|family|sans|Helvetica|Arial|Geneva|3em|nogutter|Copyright|syntax|close|write|2004|Alex|open|JavaScript|highlighter|July|02|replaceChild|offset|83'.split('|'),0,{})) ;(function() { // CommonJS typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; function Brush() { function process(match, regexInfo) { var constructor = SyntaxHighlighter.Match, code = match[0], tag = new XRegExp('(<|<)[\\s\\/\\?]*(?[:\\w-\\.]+)', 'xg').exec(code), result = [] ; if (match.attributes != null) { var attributes, regex = new XRegExp('(? [\\w:\\-\\.]+)' + '\\s*=\\s*' + '(? ".*?"|\'.*?\'|\\w+)', 'xg'); while ((attributes = regex.exec(code)) != null) { result.push(new constructor(attributes.name, match.index + attributes.index, 'color1')); result.push(new constructor(attributes.value, match.index + attributes.index + attributes[0].indexOf(attributes.value), 'string')); } } if (tag != null) result.push( new constructor(tag.name, match.index + tag[0].indexOf(tag.name), 'keyword') ); return result; } this.regexList = [ { regex: new XRegExp('(\\<|<)\\!\\[[\\w\\s]*?\\[(.|\\s)*?\\]\\](\\>|>)', 'gm'), css: 'color2' }, // { regex: SyntaxHighlighter.regexLib.xmlComments, css: 'comments' }, // { regex: new XRegExp('(<|<)[\\s\\/\\?]*(\\w+)(?.*?)[\\s\\/\\?]*(>|>)', 'sg'), func: process } ]; }; Brush.prototype = new SyntaxHighlighter.Highlighter(); Brush.aliases = ['xml', 'xhtml', 'xslt', 'html']; SyntaxHighlighter.brushes.Xml = Brush; // CommonJS typeof(exports) != 'undefined' ? exports.Brush = Brush : null; })(); ;(function() { // CommonJS typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; function Brush() { var keywords = 'break case catch continue ' + 'default delete do else false ' + 'for function if in instanceof ' + 'new null return super switch ' + 'this throw true try typeof var while with' ; var r = SyntaxHighlighter.regexLib; this.regexList = [ { regex: r.multiLineDoubleQuotedString, css: 'string' }, // double quoted strings { regex: r.multiLineSingleQuotedString, css: 'string' }, // single quoted strings { regex: r.singleLineCComments, css: 'comments' }, // one line comments { regex: r.multiLineCComments, css: 'comments' }, // multiline comments { regex: /\s*#.*/gm, css: 'preprocessor' }, // preprocessor tags like #region and #endregion { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keywords ]; this.forHtmlScript(r.scriptScriptTags); }; Brush.prototype = new SyntaxHighlighter.Highlighter(); Brush.aliases = ['js', 'jscript', 'javascript']; SyntaxHighlighter.brushes.JScript = Brush; // CommonJS typeof(exports) != 'undefined' ? exports.Brush = Brush : null; })(); ;(function() { // CommonJS typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; function Brush() { function getKeywordsCSS(str) { return '\\b([a-z_]|)' + str.replace(/ /g, '(?=:)\\b|\\b([a-z_\\*]|\\*|)') + '(?=:)\\b'; }; function getValuesCSS(str) { return '\\b' + str.replace(/ /g, '(?!-)(?!:)\\b|\\b()') + '\:\\b'; }; var keywords = 'ascent azimuth background-attachment background-color background-image background-position ' + 'background-repeat background baseline bbox border-collapse border-color border-spacing border-style border-top ' + 'border-right border-bottom border-left border-top-color border-right-color border-bottom-color border-left-color ' + 'border-top-style border-right-style border-bottom-style border-left-style border-top-width border-right-width ' + 'border-bottom-width border-left-width border-width border bottom cap-height caption-side centerline clear clip color ' + 'content counter-increment counter-reset cue-after cue-before cue cursor definition-src descent direction display ' + 'elevation empty-cells float font-size-adjust font-family font-size font-stretch font-style font-variant font-weight font ' + 'height left letter-spacing line-height list-style-image list-style-position list-style-type list-style margin-top ' + 'margin-right margin-bottom margin-left margin marker-offset marks mathline max-height max-width min-height min-width opacity orphans ' + 'outline-color outline-style outline-width outline overflow padding-top padding-right padding-bottom padding-left padding page ' + 'page-break-after page-break-before page-break-inside pause pause-after pause-before pitch pitch-range play-during position ' + 'quotes right richness size slope src speak-header speak-numeral speak-punctuation speak speech-rate stemh stemv stress ' + 'table-layout text-align top text-decoration text-indent text-shadow text-transform unicode-bidi unicode-range units-per-em ' + 'vertical-align visibility voice-family volume white-space widows width widths word-spacing x-height z-index'; var values = 'above absolute all always aqua armenian attr aural auto avoid baseline behind below bidi-override black blink block blue bold bolder '+ 'both bottom braille capitalize caption center center-left center-right circle close-quote code collapse compact condensed '+ 'continuous counter counters crop cross crosshair cursive dashed decimal decimal-leading-zero default digits disc dotted double '+ 'embed embossed e-resize expanded extra-condensed extra-expanded fantasy far-left far-right fast faster fixed format fuchsia '+ 'gray green groove handheld hebrew help hidden hide high higher icon inline-table inline inset inside invert italic '+ 'justify landscape large larger left-side left leftwards level lighter lime line-through list-item local loud lower-alpha '+ 'lowercase lower-greek lower-latin lower-roman lower low ltr marker maroon medium message-box middle mix move narrower '+ 'navy ne-resize no-close-quote none no-open-quote no-repeat normal nowrap n-resize nw-resize oblique olive once open-quote outset '+ 'outside overline pointer portrait pre print projection purple red relative repeat repeat-x repeat-y rgb ridge right right-side '+ 'rightwards rtl run-in screen scroll semi-condensed semi-expanded separate se-resize show silent silver slower slow '+ 'small small-caps small-caption smaller soft solid speech spell-out square s-resize static status-bar sub super sw-resize '+ 'table-caption table-cell table-column table-column-group table-footer-group table-header-group table-row table-row-group teal '+ 'text-bottom text-top thick thin top transparent tty tv ultra-condensed ultra-expanded underline upper-alpha uppercase upper-latin '+ 'upper-roman url visible wait white wider w-resize x-fast x-high x-large x-loud x-low x-slow x-small x-soft xx-large xx-small yellow'; var fonts = '[mM]onospace [tT]ahoma [vV]erdana [aA]rial [hH]elvetica [sS]ans-serif [sS]erif [cC]ourier mono sans serif'; this.regexList = [ { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings { regex: /\#[a-fA-F0-9]{3,6}/g, css: 'value' }, // html colors { regex: /(-?\d+)(\.\d+)?(px|em|pt|\:|\%|)/g, css: 'value' }, // sizes { regex: /!important/g, css: 'color3' }, // !important { regex: new RegExp(getKeywordsCSS(keywords), 'gm'), css: 'keyword' }, // keywords { regex: new RegExp(getValuesCSS(values), 'g'), css: 'value' }, // values { regex: new RegExp(this.getKeywords(fonts), 'g'), css: 'color1' } // fonts ]; this.forHtmlScript({ left: /(<|<)\s*style.*?(>|>)/gi, right: /(<|<)\/\s*style\s*(>|>)/gi }); }; Brush.prototype = new SyntaxHighlighter.Highlighter(); Brush.aliases = ['css']; SyntaxHighlighter.brushes.CSS = Brush; // CommonJS typeof(exports) != 'undefined' ? exports.Brush = Brush : null; })(); ;(function() { // CommonJS typeof(require) != 'undefined' ? SyntaxHighlighter = require('shCore').SyntaxHighlighter : null; function Brush() { var funcs = 'abs acos acosh addcslashes addslashes ' + 'array_change_key_case array_chunk array_combine array_count_values array_diff '+ 'array_diff_assoc array_diff_key array_diff_uassoc array_diff_ukey array_fill '+ 'array_filter array_flip array_intersect array_intersect_assoc array_intersect_key '+ 'array_intersect_uassoc array_intersect_ukey array_key_exists array_keys array_map '+ 'array_merge array_merge_recursive array_multisort array_pad array_pop array_product '+ 'array_push array_rand array_reduce array_reverse array_search array_shift '+ 'array_slice array_splice array_sum array_udiff array_udiff_assoc '+ 'array_udiff_uassoc array_uintersect array_uintersect_assoc '+ 'array_uintersect_uassoc array_unique array_unshift array_values array_walk '+ 'array_walk_recursive atan atan2 atanh base64_decode base64_encode base_convert '+ 'basename bcadd bccomp bcdiv bcmod bcmul bindec bindtextdomain bzclose bzcompress '+ 'bzdecompress bzerrno bzerror bzerrstr bzflush bzopen bzread bzwrite ceil chdir '+ 'checkdate checkdnsrr chgrp chmod chop chown chr chroot chunk_split class_exists '+ 'closedir closelog copy cos cosh count count_chars date decbin dechex decoct '+ 'deg2rad delete ebcdic2ascii echo empty end ereg ereg_replace eregi eregi_replace error_log '+ 'error_reporting escapeshellarg escapeshellcmd eval exec exit exp explode extension_loaded '+ 'feof fflush fgetc fgetcsv fgets fgetss file_exists file_get_contents file_put_contents '+ 'fileatime filectime filegroup fileinode filemtime fileowner fileperms filesize filetype '+ 'floatval flock floor flush fmod fnmatch fopen fpassthru fprintf fputcsv fputs fread fscanf '+ 'fseek fsockopen fstat ftell ftok getallheaders getcwd getdate getenv gethostbyaddr gethostbyname '+ 'gethostbynamel getimagesize getlastmod getmxrr getmygid getmyinode getmypid getmyuid getopt '+ 'getprotobyname getprotobynumber getrandmax getrusage getservbyname getservbyport gettext '+ 'gettimeofday gettype glob gmdate gmmktime ini_alter ini_get ini_get_all ini_restore ini_set '+ 'interface_exists intval ip2long is_a is_array is_bool is_callable is_dir is_double '+ 'is_executable is_file is_finite is_float is_infinite is_int is_integer is_link is_long '+ 'is_nan is_null is_numeric is_object is_readable is_real is_resource is_scalar is_soap_fault '+ 'is_string is_subclass_of is_uploaded_file is_writable is_writeable mkdir mktime nl2br '+ 'parse_ini_file parse_str parse_url passthru pathinfo print readlink realpath rewind rewinddir rmdir '+ 'round str_ireplace str_pad str_repeat str_replace str_rot13 str_shuffle str_split '+ 'str_word_count strcasecmp strchr strcmp strcoll strcspn strftime strip_tags stripcslashes '+ 'stripos stripslashes stristr strlen strnatcasecmp strnatcmp strncasecmp strncmp strpbrk '+ 'strpos strptime strrchr strrev strripos strrpos strspn strstr strtok strtolower strtotime '+ 'strtoupper strtr strval substr substr_compare'; var keywords = 'abstract and array as break case catch cfunction class clone const continue declare default die do ' + 'else elseif enddeclare endfor endforeach endif endswitch endwhile extends final for foreach ' + 'function include include_once global goto if implements interface instanceof namespace new ' + 'old_function or private protected public return require require_once static switch ' + 'throw try use var while xor '; var constants = '__FILE__ __LINE__ __METHOD__ __FUNCTION__ __CLASS__'; this.regexList = [ { regex: SyntaxHighlighter.regexLib.singleLineCComments, css: 'comments' }, // one line comments { regex: SyntaxHighlighter.regexLib.multiLineCComments, css: 'comments' }, // multiline comments { regex: SyntaxHighlighter.regexLib.doubleQuotedString, css: 'string' }, // double quoted strings { regex: SyntaxHighlighter.regexLib.singleQuotedString, css: 'string' }, // single quoted strings { regex: /\$\w+/g, css: 'variable' }, // variables { regex: new RegExp(this.getKeywords(funcs), 'gmi'), css: 'functions' }, // common functions { regex: new RegExp(this.getKeywords(constants), 'gmi'), css: 'constants' }, // constants { regex: new RegExp(this.getKeywords(keywords), 'gm'), css: 'keyword' } // keyword ]; this.forHtmlScript(SyntaxHighlighter.regexLib.phpScriptTags); }; Brush.prototype = new SyntaxHighlighter.Highlighter(); Brush.aliases = ['php']; SyntaxHighlighter.brushes.Php = Brush; // CommonJS typeof(exports) != 'undefined' ? exports.Brush = Brush : null; })(); /*! Copyright (c) 2011 Brandon Aaron (http://brandonaaron.net) * Licensed under the MIT License (LICENSE.txt). * * Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers. * Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix. * Thanks to: Seamus Leahy for adding deltaX and deltaY * * Version: 3.0.6 * * Requires: 1.2.2+ */ (function($) { var types = ['DOMMouseScroll', 'mousewheel']; if ($.event.fixHooks) { for ( var i=types.length; i; ) { $.event.fixHooks[ types[--i] ] = $.event.mouseHooks; } } $.event.special.mousewheel = { setup: function() { if ( this.addEventListener ) { for ( var i=types.length; i; ) { this.addEventListener( types[--i], handler, false ); } } else { this.onmousewheel = handler; } }, teardown: function() { if ( this.removeEventListener ) { for ( var i=types.length; i; ) { this.removeEventListener( types[--i], handler, false ); } } else { this.onmousewheel = null; } } }; $.fn.extend({ mousewheel: function(fn) { return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel"); }, unmousewheel: function(fn) { return this.unbind("mousewheel", fn); } }); function handler(event) { var orgEvent = event || window.event, args = [].slice.call( arguments, 1 ), delta = 0, returnValue = true, deltaX = 0, deltaY = 0; event = $.event.fix(orgEvent); event.type = "mousewheel"; // Old school scrollwheel delta if ( orgEvent.wheelDelta ) { delta = orgEvent.wheelDelta/120; } if ( orgEvent.detail ) { delta = -orgEvent.detail/3; } // New school multidimensional scroll (touchpads) deltas deltaY = delta; // Gecko if ( orgEvent.axis !== undefined && orgEvent.axis === orgEvent.HORIZONTAL_AXIS ) { deltaY = 0; deltaX = -1*delta; } // Webkit if ( orgEvent.wheelDeltaY !== undefined ) { deltaY = orgEvent.wheelDeltaY/120; } if ( orgEvent.wheelDeltaX !== undefined ) { deltaX = -1*orgEvent.wheelDeltaX/120; } // Add event and delta to the front of the arguments args.unshift(event, delta, deltaX, deltaY); return ($.event.dispatch || $.event.handle).apply(this, args); } })(jQuery);