You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1028 lines
53 KiB
1028 lines
53 KiB
2 years ago
|
(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 = "<div data-role='panel' class='jqm-nav-panel jqm-quicklink-panel' data-position='right' data-display='overlay' data-theme='a'><ul data-role='listview' data-inset='false' data-theme='a' data-divider-theme='a' data-icon='false' class='jqm-list'><li data-role='list-divider'>Quick Links</li></ul></div>",
|
||
|
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( "<a href='#" + bodyid + "' class='jqm-deeplink ui-icon-carat-u ui-alt-icon'>Top</a>");
|
||
|
} else {
|
||
|
$(this).before("<a href='#' data-ajax='false' class='jqm-deeplink jqm-open-quicklink-panel ui-icon-carat-l ui-alt-icon'>Quick Links</a>");
|
||
|
}
|
||
|
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("<li><a href='#"+id+"'>"+text+"</a></li>");
|
||
|
});
|
||
|
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 = $( '<div>' , {
|
||
|
'class': "jqm-content",
|
||
|
style: "border:none; padding: 10px 15px; overflow: auto;",
|
||
|
'data-ajax-warning': true
|
||
|
});
|
||
|
|
||
|
message
|
||
|
.append( "<h3>Note: Navigation may not work if viewed locally</h3>" )
|
||
|
.append( "<p>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.</p>" );
|
||
|
|
||
|
$( 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( "<span class='jqm-search-results-keywords ui-li-desc'>" + text + "</span>" );
|
||
|
});
|
||
|
});
|
||
|
|
||
|
// 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( "<button type='submit' data-icon='carat-r' data-inline='true' class='ui-hidden-accessible' data-iconpos='notext'>Submit</button>" )
|
||
|
.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 = $( "<div data-role='collapsible' data-collapsed='true' data-theme='" + options.theme + "' data-iconpos='right' data-collapsed-icon='carat-l' data-expanded-icon='carat-d' data-content-theme='b'>" +
|
||
|
"<h1>" + options.title + "</h1>" +
|
||
|
"<pre class='brush: " + options.brush + ";'></pre>" +
|
||
|
"</div>" );
|
||
|
pre = collapsible.find( "pre" );
|
||
|
pre.append( options.data.replace( /</gmi, '<' ) );
|
||
|
collapsible
|
||
|
.appendTo( collapsibleSet )
|
||
|
.on( "collapsiblecollapse", function() {
|
||
|
popup.popup( "reposition", { positionTo: "window" } );
|
||
|
})
|
||
|
.on( "collapsibleexpand", function() {
|
||
|
var doReposition = true;
|
||
|
|
||
|
collapsibleSet.find( ":mobile-collapsible" ).not( this ).each( function() {
|
||
|
if ( $( this ).collapsible( "option", "expanded" ) ) {
|
||
|
doReposition = false;
|
||
|
}
|
||
|
});
|
||
|
|
||
|
if ( doReposition ) {
|
||
|
popup.popup( "reposition", { positionTo: "window" } );
|
||
|
}
|
||
|
});
|
||
|
SyntaxHighlighter.highlight( {}, pre[ 0 ] );
|
||
|
});
|
||
|
|
||
|
collapsibleSet.find( "[data-role='collapsible']" ).first().attr( "data-collapsed", "false" );
|
||
|
popup.trigger( "create" );
|
||
|
});
|
||
|
}
|
||
|
|
||
|
function getSnippet( type, selector, source ) {
|
||
|
var text = "", el, absUrl, hash;
|
||
|
|
||
|
if ( selector === "true" ) {
|
||
|
selector = "";
|
||
|
}
|
||
|
|
||
|
// First, try to grab a tag in this document
|
||
|
if ( !$.mobile.path.isPath( selector ) ) {
|
||
|
el = source.find( type + selector );
|
||
|
// If this is not an embedded style, try a stylesheet reference
|
||
|
if ( el.length === 0 && type === "style" ) {
|
||
|
el = source.find( "link[rel='stylesheet']" + selector );
|
||
|
}
|
||
|
text = $( "<div></div>" ).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 = $( "<div></div>" ).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 = $( "<div id='jqm-view-source' class='jqm-view-source' data-role='popup' data-theme='none' data-position-to='window'>" +
|
||
|
"<div data-role='collapsibleset' data-inset='true'></div>" +
|
||
|
"</div>" );
|
||
|
|
||
|
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 = $( "<div></div>" ).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(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?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<f.L;a++)I(f[a]===e)H a;H-1}M=6(f,e){K a=[],b=M.1B,c=0,d,h;I(M.1R(f)){I(e!==1d)1S 3m("2a\'t 5r 5I 5F 5B 5C 15 5E 5p");H r(f)}I(v)1S 2U("2a\'t W 3l M 59 5m 5g 5x 5i");e=e||"";O(d={2N:11,19:[],2K:6(g){H e.1i(g)>-1},3d:6(g){e+=g}};c<f.L;)I(h=B(f,c,b,d)){a.U(h.3k);c+=h.1C[0].L||1}Y I(h=n.X.W(z[b],f.1a(c))){a.U(h[0]);c+=h[0].L}Y{h=f.3a(c);I(h==="[")b=M.2I;Y I(h==="]")b=M.1B;a.U(h);c++}a=15(a.1K(""),n.Q.W(e,w,""));a.1w={1m:f,19:d.2N?d.19:N};H a};M.3v="1.5.0";M.2I=1;M.1B=2;K C=/\\$(?:(\\d\\d?|[$&`\'])|{([$\\w]+)})/g,w=/[^5h]+|([\\s\\S])(?=[\\s\\S]*\\1)/g,A=/^(?:[?*+]|{\\d+(?:,\\d*)?})\\??/,v=11,u=[],n={X:15.Z.X,1A:15.Z.1A,1C:1r.Z.1C,Q:1r.Z.Q,1e:1r.Z.1e},x=n.X.W(/()??/,"")[1]===1d,D=6(){K f=/^/g;n.1A.W(f,"");H!f.12}(),y=6(){K f=/x/g;n.Q.W("x",f,"");H!f.12}(),E=15.Z.3n!==1d,z={};z[M.2I]=/^(?:\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\29-26-f]{2}|u[\\29-26-f]{4}|c[A-3o-z]|[\\s\\S]))/;z[M.1B]=/^(?:\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\29-26-f]{2}|u[\\29-26-f]{4}|c[A-3o-z]|[\\s\\S])|\\(\\?[:=!]|[?*+]\\?|{\\d+(?:,\\d*)?}\\??)/;M.1h=6(f,e,a,b){u.U({2q:r(f,"g"+(E?"y":"")),2b:e,3r:a||M.1B,2p:b||N})};M.2n=6(f,e){K a=f+"/"+(e||"");H M.2n[a]||(M.2n[a]=M(f,e))};M.3c=6(f){H r(f,"g")};M.5l=6(f){H f.Q(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g,"\\\\$&")};M.5e=6(f,e,a,b){e=r(e,"g"+(b&&E?"y":""));e.12=a=a||0;f=e.X(f);H b?f&&f.P===a?f:N:f};M.3q=6(){M.1h=6(){1S 2U("2a\'t 55 1h 54 3q")}};M.1R=6(f){H 53.Z.1q.W(f)==="[2m 15]"};M.3p=6(f,e,a,b){O(K c=r(e,"g"),d=-1,h;h=c.X(f);){a.W(b,h,++d,f,c);c.12===h.P&&c.12++}I(e.1J)e.12=0};M.57=6(f,e){H 6 a(b,c){K d=e[c].1I?e[c]:{1I:e[c]},h=r(d.1I,"g"),g=[],i;O(i=0;i<b.L;i++)M.3p(b[i],h,6(k){g.U(d.3j?k[d.3j]||"":k[0])});H c===e.L-1||!g.L?g:a(g,c+1)}([f],0)};15.Z.1p=6(f,e){H J.X(e[0])};15.Z.W=6(f,e){H J.X(e)};15.Z.X=6(f){K e=n.X.1p(J,14),a;I(e){I(!x&&e.L>1&&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;b<e.L;b++)I(a=J.1w.19[b-1])e[a]=e[b];!D&&J.1J&&!e[0].L&&J.12>e.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;d<b.L;d++)I(b[d])14[0][b[d]]=14[d+1]}I(a&&f.1J)f.12=14[14.L-2]+14[0].L;H e.1p(N,14)});Y{c=J+"";c=n.Q.W(c,f,6(){K d=14;H n.Q.W(e,C,6(h,g,i){I(g)5b(g){24"$":H"$";24"&":H d[0];24"`":H d[d.L-1].1a(0,d[d.L-2]);24"\'":H d[d.L-1].1a(d[d.L-2]+d[0].L);5a:i="";g=+g;I(!g)H h;O(;g>d.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<a.L&&3b.Z.U.1p(b,d.1a(1));h=d[0].L;c=f.12;I(b.L>=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.
|
||
|
|
||
|
;(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\\/\\?]*(?<name>[:\\w-\\.]+)', 'xg').exec(code),
|
||
|
result = []
|
||
|
;
|
||
|
|
||
|
if (match.attributes != null)
|
||
|
{
|
||
|
var attributes,
|
||
|
regex = new XRegExp('(?<name> [\\w:\\-\\.]+)' +
|
||
|
'\\s*=\\s*' +
|
||
|
'(?<value> ".*?"|\'.*?\'|\\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+)(?<attributes>.*?)[\\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);
|