├── demo ├── img │ ├── chrome-16.png │ ├── opera-16.png │ ├── safari-16.png │ ├── firefox-16.png │ ├── glyphicons-halflings.png │ └── glyphicons-halflings-white.png ├── js │ ├── scripts.js │ ├── bootstrap.min.js │ └── jquery.snippet.min.js ├── css │ ├── jquery.snippet.min.css │ └── styles.css └── index.html ├── README.md └── lib └── jquery.easyWizard.js /demo/img/chrome-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objects/jquery.easyWizard/master/demo/img/chrome-16.png -------------------------------------------------------------------------------- /demo/img/opera-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objects/jquery.easyWizard/master/demo/img/opera-16.png -------------------------------------------------------------------------------- /demo/img/safari-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objects/jquery.easyWizard/master/demo/img/safari-16.png -------------------------------------------------------------------------------- /demo/img/firefox-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objects/jquery.easyWizard/master/demo/img/firefox-16.png -------------------------------------------------------------------------------- /demo/img/glyphicons-halflings.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objects/jquery.easyWizard/master/demo/img/glyphicons-halflings.png -------------------------------------------------------------------------------- /demo/img/glyphicons-halflings-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/objects/jquery.easyWizard/master/demo/img/glyphicons-halflings-white.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | jquery.easyWizard 2 | ================= 3 | 4 | Documentation 5 | --------------------- 6 | Check out the [documentation](http://st3ph.github.com/jquery.easyWizard/) to find out how easyWizard works. 7 | 8 | About 9 | --------------------- 10 | easyWizard is a [jQuery](http://jquery.com) plugin who try to help you building fast and easy wizards for your website. 11 | 12 | Compatibility 13 | ------------- 14 | Testing and working well with Chrome, Opera, Firefox, Safari and Internet Explorer 15 | 16 | License 17 | --------------------- 18 | Dual licensed under the MIT or GPL Version 2 licenses : 19 | [http://www.opensource.org/licenses/mit-license.php](http://www.opensource.org/licenses/mit-license.php) 20 | [http://www.opensource.org/licenses/GPL-2.0](http://www.opensource.org/licenses/GPL-2.0) -------------------------------------------------------------------------------- /demo/js/scripts.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $('#navbar').affix({ 3 | offset: { 4 | top: 200 5 | } 6 | }); 7 | 8 | $("pre.html").snippet("html", {style:'matlab'}); 9 | $("pre.css").snippet("css", {style:'matlab'}); 10 | $("pre.javascript").snippet("javascript", {style:'matlab'}); 11 | 12 | $('#myWizard').easyWizard({ 13 | buttonsClass: 'btn', 14 | submitButtonClass: 'btn btn-info' 15 | }); 16 | 17 | $('#myWizard2').easyWizard({ 18 | buttonsClass: 'btn', 19 | submitButtonClass: 'btn btn-info', 20 | before: function(wizardObj, currentStepObj, nextStepObj) { 21 | alert('Hello, I\'am the before callback'); 22 | }, 23 | after: function(wizardObj, prevStepObj, currentStepObj) { 24 | alert('Hello, I\'am the after callback'); 25 | }, 26 | beforeSubmit: function(wizardObj) { 27 | alert('Hello, I\'am the beforeSubmit callback'); 28 | } 29 | }); 30 | 31 | $('#myWizard3').easyWizard({ 32 | showSteps: false, 33 | showButtons: false, 34 | submitButton: false 35 | }); 36 | $('#myWizard3Pager .previous a').bind('click', function(e) { 37 | e.preventDefault(); 38 | $('#myWizard3').easyWizard('prevStep'); 39 | }); 40 | $('#myWizard3Pager .page a').bind('click', function(e) { 41 | e.preventDefault(); 42 | $('#myWizard3').easyWizard('goToStep', $(this).attr('rel')); 43 | }); 44 | $('#myWizard3Pager .next a').bind('click', function(e) { 45 | e.preventDefault(); 46 | $('#myWizard3').easyWizard('nextStep'); 47 | }); 48 | }); -------------------------------------------------------------------------------- /demo/css/jquery.snippet.min.css: -------------------------------------------------------------------------------- 1 | /*---------- matlab Styles ---------*/ 2 | .sh_matlab{background:none; padding:0; margin:0; border:0 none;}.sh_matlab .sh_sourceCode{background-color:#fff;color:#000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_keyword{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_type{color:#000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_string{color:#800000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_regexp{color:#800000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_specialchar{color:#000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_number{color:#000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_function{color:#000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_url{color:#800000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_date{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_time{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_file{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_ip{color:#800000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_name{color:#800000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_variable{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_oldfile{color:#000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_newfile{color:#800000;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_difflines{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_selector{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_property{color:#00f;font-weight:normal;font-style:normal;}.sh_matlab .sh_sourceCode .sh_value{color:#800000;font-weight:normal;font-style:normal;} 3 | 4 | /*-------- Snippet Base Styles ----------*/ 5 | .snippet-wrap {position:relative;} 6 | *:first-child+html .snippet-wrap {display:inline-block;} 7 | * html .snippet-wrap {display:inline-block;} 8 | .snippet-reveal{text-decoration:underline;} 9 | .snippet-wrap .snippet-menu, .snippet-wrap .snippet-hide {position:absolute; top:10px; right:15px; font-size:.9em;z-index:1;background-color:transparent;} 10 | .snippet-wrap .snippet-hide {top:auto; bottom:10px;} 11 | *:first-child+html .snippet-wrap .snippet-hide {bottom:25px;} 12 | * html .snippet-wrap .snippet-hide {bottom:25px;} 13 | .snippet-wrap .snippet-menu pre, .snippet-wrap .snippet-hide pre {background-color:transparent; margin:0; padding:0;} 14 | .snippet-wrap .snippet-menu a, .snippet-wrap .snippet-hide a {padding:0 5px; text-decoration:underline;} 15 | .snippet-wrap pre.sh_sourceCode{padding:1em;line-height:1.8em;overflow:auto;position:relative; 16 | -moz-border-radius:15px; 17 | -webkit-border-radius:15px; 18 | border-radius:15px; 19 | box-shadow: 2px 2px 5px #000; 20 | -moz-box-shadow: 2px 2px 5px #000; 21 | -webkit-box-shadow: 2px 2px 5px #000;} 22 | .snippet-wrap pre.snippet-textonly {padding:2em;} 23 | *:first-child+html .snippet-wrap pre.snippet-formatted {padding:2em 1em;} 24 | * html .snippet-wrap pre.snippet-formatted {padding:2em 1em;} 25 | .snippet-reveal pre.sh_sourceCode {padding:.5em 1em; text-align:right;} 26 | .snippet-wrap .snippet-num li{padding-left:1.5em;} 27 | .snippet-wrap .snippet-no-num{list-style:none; padding:.6em 1em; margin:0;} 28 | .snippet-wrap .snippet-no-num li {list-style:none; padding-left:0;} 29 | .snippet-wrap .snippet-num {margin:1em 0 1em 1em; padding-left:3em;} 30 | .snippet-wrap .snippet-num li {list-style:decimal-leading-zero outside none;} 31 | .snippet-wrap .snippet-no-num li.box {padding:0 6px; margin-left:-6px;} 32 | .snippet-wrap .snippet-num li.box {border:1px solid; list-style-position:inside; margin-left:-3em; padding-left:6px;} 33 | *:first-child+html .snippet-wrap .snippet-num li.box {margin-left:-2.4em;} 34 | * html .snippet-wrap .snippet-num li.box {margin-left:-2.4em;} 35 | .snippet-wrap li.box-top {border-width:1px 1px 0 !important;} 36 | .snippet-wrap li.box-bot {border-width:0 1px 1px !important;} 37 | .snippet-wrap li.box-mid {border-width:0 1px !important;} 38 | .snippet-wrap .snippet-num li .box-sp {width:18px; display:inline-block;} 39 | *:first-child+html .snippet-wrap .snippet-num li .box-sp {width:27px;} 40 | * html .snippet-wrap .snippet-num li .box-sp {width:27px;} 41 | .snippet-wrap .snippet-no-num li.box {border:1px solid;} 42 | .snippet-wrap .snippet-no-num li .box-sp {display:none;} 43 | -------------------------------------------------------------------------------- /lib/jquery.easyWizard.js: -------------------------------------------------------------------------------- 1 | /* ======================================================== 2 | * easyWizard v1.1.1 3 | * http://st3ph.github.com/jquery.easyWizard 4 | * ======================================================== 5 | * Copyright 2012 - 214 Stéphane Litou 6 | * http://stephane-litou.com 7 | * 8 | * Dual licensed under the MIT or GPL Version 2 licenses. 9 | * http://www.opensource.org/licenses/mit-license.php 10 | * http://www.opensource.org/licenses/GPL-2.0 11 | * ======================================================== */ 12 | (function( $ ) { 13 | var arrSettings = []; 14 | var easyWizardMethods = { 15 | init : function(options) { 16 | var settings = $.extend( { 17 | 'stepClassName' : 'step', 18 | 'showSteps' : true, 19 | 'stepsText' : '{n}. {t}', 20 | 'showButtons' : true, 21 | 'buttonsClass' : '', 22 | 'prevButton' : '< Back', 23 | 'nextButton' : 'Next >', 24 | 'debug' : false, 25 | 'submitButton': true, 26 | 'submitButtonText': 'Submit', 27 | 'submitButtonClass': '', 28 | before: function(wizardObj, currentStepObj, nextStepObj) {}, 29 | after: function(wizardObj, prevStepObj, currentStepObj) {}, 30 | beforeSubmit: function(wizardObj) { 31 | wizardObj.find('input, textarea').each(function() { 32 | if(!this.checkValidity()) { 33 | this.focus(); 34 | step = $(this).parents('.'+thisSettings.stepClassName).attr('data-step'); 35 | easyWizardMethods.goToStep.call(wizardObj, step); 36 | 37 | return false; 38 | } 39 | }); 40 | } 41 | }, options); 42 | 43 | arrSettings[this.index()] = settings; 44 | 45 | return this.each(function() { 46 | thisSettings = settings; 47 | 48 | $this = $(this); // Wizard Obj 49 | $this.addClass('easyWizardElement'); 50 | $steps = $this.find('.'+thisSettings.stepClassName); 51 | thisSettings.steps = $steps.length; 52 | thisSettings.width = $(this).width(); 53 | 54 | if(thisSettings.steps > 1) { 55 | // Create UI 56 | $this.wrapInner('
'); 57 | $this.find('.easyWizardWrapper').width(thisSettings.width * thisSettings.steps); 58 | $this.css({ 59 | 'position': 'relative', 60 | 'overflow': 'hidden' 61 | }).addClass('easyPager'); 62 | 63 | $stepsHtml = $('")!=-1){v=v.replace("
  • ","")}}v=v.replace(/\t/g,"    ");u.html(v);while(u.find("li").eq(0).html()==""){u.find("li").eq(0).remove()}u.find("li").each(function(){if(a(this).html().length<2){var i=(a(this).html()).replace(/\s/g,"");if(i==""){if(a.browser.opera){a(this).html(" ")}else{a(this).html(" ")}}}});var w="";var r="";u.parent().append(w);u.parent().prepend(r);u.parent().hover(function(){a(this).find(".snippet-menu").fadeIn("fast")},function(){a(this).find(".snippet-menu").fadeOut("fast")});if(d.clipboard!=""&&d.clipboard!=false){var j=u.parent().find("a.snippet-copy");j.show();j.parents(".snippet-menu").show();var s=u.parents(".snippet-wrap").find(".snippet-textonly").text();ZeroClipboard.setMoviePath(d.clipboard);var G=new ZeroClipboard.Client();G.setText(s);G.glue(j[0],j.parents(".snippet-menu")[0]);G.addEventListener("complete",function(i,o){if(o.length>500){o=o.substr(0,500)+"...\n\n("+(o.length-500)+" characters not shown)"}alert("Copied text to clipboard:\n\n "+o)});j.parents(".snippet-menu").hide()}else{u.parent().find("a.snippet-copy").hide()}u.parent().find("a.snippet-text").click(function(){var o=a(this).parents(".snippet-wrap").find(".snippet-formatted");var i=a(this).parents(".snippet-wrap").find(".snippet-textonly");o.toggle();i.toggle();if(i.is(":visible")){a(this).html("html")}else{a(this).html("text")}a(this).blur();return false});u.parent().find("a.snippet-window").click(function(){var i=a(this).parents(".snippet-wrap").find(".snippet-textonly").html();snippetPopup(i);a(this).blur();return false});if(!d.menu){u.prev(".snippet-menu").find("pre,.snippet-clipboard").hide()}if(d.collapse){var n=u.parent().attr("class");var h="
    "+d.showMsg+"
    ";var E="
    "+d.hideMsg+"
    ";u.parents(".snippet-container").append(h);u.parent().append(E);var z=u.parents(".snippet-container");if(d.startCollapsed){z.find(".snippet-reveal").show();z.find(".snippet-wrap").eq(0).hide()}else{z.find(".snippet-reveal").hide();z.find(".snippet-wrap").eq(0).show()}z.find("a.snippet-toggle").click(function(){z.find(".snippet-wrap").toggle();return false})}if(d.transparent){var k={"background-color":"transparent","box-shadow":"none","-moz-box-shadow":"none","-webkit-box-shadow":"none"};u.css(k);u.next(".snippet-textonly").css(k);u.parents(".snippet-container").find(".snippet-reveal pre").css(k)}if(d.startText){u.hide();u.next(".snippet-textonly").show();u.parent().find(".snippet-text").html("html")}if(d.box!=""){var m=" ";var C=d.box.split(",");for(var B=0;B");var q=u.find("li").eq(0);q.unwrap()}}else{var F=u.find("li").eq(0).parent();if(F.hasClass("snippet-num")){F.wrap("");var q=u.find("li").eq(0);q.unwrap()}}if(d.box!=""){var m=" ";var C=d.box.split(",");for(var B=0;B' elements are currently unsupported.";console.log(A);return false}})}})(jQuery);function snippetPopup(a){top.consoleRef=window.open("","myconsole","width=600,height=300,left=50,top=50,menubar=0,toolbar=0,location=0,status=0,scrollbars=1,resizable=1");top.consoleRef.document.writeln("Snippet :: Code View :: "+location.href+'
    '+a+"
    ");top.consoleRef.document.close()}var ZeroClipboard={version:"1.0.7",clients:{},moviePath:"ZeroClipboard.swf",nextId:1,$:function(a){if(typeof(a)=="string"){a=document.getElementById(a)}if(!a.addClass){a.hide=function(){this.style.display="none"};a.show=function(){this.style.display=""};a.addClass=function(b){this.removeClass(b);this.className+=" "+b};a.removeClass=function(d){var e=this.className.split(/\s+/);var b=-1;for(var c=0;c-1){e.splice(b,1);this.className=e.join(" ")}return this};a.hasClass=function(b){return !!this.className.match(new RegExp("\\s*"+b+"\\s*"))}}return a},setMoviePath:function(a){this.moviePath=a},dispatch:function(d,b,c){var a=this.clients[d];if(a){a.receiveEvent(b,c)}},register:function(b,a){this.clients[b]=a},getDOMObjectPosition:function(c,a){var b={left:0,top:0,width:c.width?c.width:c.offsetWidth,height:c.height?c.height:c.offsetHeight};while(c&&(c!=a)){b.left+=c.offsetLeft;b.top+=c.offsetTop;c=c.offsetParent}return b},Client:function(a){this.handlers={};this.id=ZeroClipboard.nextId++;this.movieId="ZeroClipboardMovie_"+this.id;ZeroClipboard.register(this.id,this);if(a){this.glue(a)}}};ZeroClipboard.Client.prototype={id:0,ready:false,movie:null,clipText:"",handCursorEnabled:true,cssEffects:true,handlers:null,glue:function(d,b,e){this.domElement=ZeroClipboard.$(d);var f=99;if(this.domElement.style.zIndex){f=parseInt(this.domElement.style.zIndex,10)+1}if(typeof(b)=="string"){b=ZeroClipboard.$(b)}else{if(typeof(b)=="undefined"){b=document.getElementsByTagName("body")[0]}}var c=ZeroClipboard.getDOMObjectPosition(this.domElement,b);this.div=document.createElement("div");this.div.className="snippet-clipboard";var a=this.div.style;a.position="absolute";a.left=""+c.left+"px";a.top=""+c.top+"px";a.width=""+c.width+"px";a.height=""+c.height+"px";a.zIndex=f;if(typeof(e)=="object"){for(addedStyle in e){a[addedStyle]=e[addedStyle]}}b.appendChild(this.div);this.div.innerHTML=this.getHTML(c.width,c.height)},getHTML:function(d,a){var c="";var b="id="+this.id+"&width="+d+"&height="+a;if(navigator.userAgent.match(/MSIE/)){var e=location.href.match(/^https/i)?"https://":"http://";c+=''}else{c+=''}return c},hide:function(){if(this.div){this.div.style.left="-2000px"}},show:function(){this.reposition()},destroy:function(){if(this.domElement&&this.div){this.hide();this.div.innerHTML="";var a=document.getElementsByTagName("body")[0];try{a.removeChild(this.div)}catch(b){}this.domElement=null;this.div=null}},reposition:function(c){if(c){this.domElement=ZeroClipboard.$(c);if(!this.domElement){this.hide()}}if(this.domElement&&this.div){var b=ZeroClipboard.getDOMObjectPosition(this.domElement);var a=this.div.style;a.left=""+b.left+"px";a.top=""+b.top+"px"}},setText:function(a){this.clipText=a;if(this.ready){this.movie.setText(a)}},addEventListener:function(a,b){a=a.toString().toLowerCase().replace(/^on/,"");if(!this.handlers[a]){this.handlers[a]=[]}this.handlers[a].push(b)},setHandCursor:function(a){this.handCursorEnabled=a;if(this.ready){this.movie.setHandCursor(a)}},setCSSEffects:function(a){this.cssEffects=!!a},receiveEvent:function(d,f){d=d.toString().toLowerCase().replace(/^on/,"");switch(d){case"load":this.movie=document.getElementById(this.movieId);if(!this.movie){var c=this;setTimeout(function(){c.receiveEvent("load",null)},1);return}if(!this.ready&&navigator.userAgent.match(/Firefox/)&&navigator.userAgent.match(/Windows/)){var c=this;setTimeout(function(){c.receiveEvent("load",null)},100);this.ready=true;return}this.ready=true;try{this.movie.setText(this.clipText)}catch(h){}try{this.movie.setHandCursor(this.handCursorEnabled)}catch(h){}break;case"mouseover":if(this.domElement&&this.cssEffects){this.domElement.addClass("hover");if(this.recoverActive){this.domElement.addClass("active")}}break;case"mouseout":if(this.domElement&&this.cssEffects){this.recoverActive=false;if(this.domElement.hasClass("active")){this.domElement.removeClass("active");this.recoverActive=true}this.domElement.removeClass("hover")}break;case"mousedown":if(this.domElement&&this.cssEffects){this.domElement.addClass("active")}break;case"mouseup":if(this.domElement&&this.cssEffects){this.domElement.removeClass("active");this.recoverActive=false}break}if(this.handlers[d]){for(var b=0,a=this.handlers[d].length;b=2&&f.charAt(0)==="<"&&f.charAt(f.length-1)===">"){f=f.substr(1,f.length-2)}if(sh_isEmailAddress(f)){f="mailto:"+f}e[h-2].node.href=f}function sh_konquerorExec(c){var d=[""];d.index=c.length;d.input=c;return d}function sh_highlightString(X,ah){if(/Konqueror/.test(navigator.userAgent)){if(!ah.konquered){for(var T=0;TQ){ab(ao.substring(Q,U.index),null)}var aq=a[ae];var P=aq[1];var au;if(P instanceof Array){for(var r=0;r0){var h=f.split(" ");for(var j=0;j0){g.push(h[j])}}}return g}function sh_addClass(h,f){var g=sh_getClasses(h);for(var e=0;e element with class="'+a+'", but no such language exists');continue}}break}}}if(!this.sh_languages){this.sh_languages={}}sh_languages.c=[[[/\/\/\//g,"sh_comment",1],[/\/\//g,"sh_comment",7],[/\/\*\*/g,"sh_comment",8],[/\/\*/g,"sh_comment",9],[/(\bstruct)([ \t]+)([A-Za-z0-9_]+)/g,["sh_keyword","sh_normal","sh_classname"],-1],[/^[ \t]*#(?:[ \t]*include)/g,"sh_preproc",10,1],[/^[ \t]*#(?:[ \t]*[A-Za-z0-9_]*)/g,"sh_preproc",-1],[/\b[+-]?(?:(?:0x[A-Fa-f0-9]+)|(?:(?:[\d]*\.)?[\d]+(?:[eE][+-]?[\d]+)?))u?(?:(?:int(?:8|16|32|64))|L)?\b/g,"sh_number",-1],[/"/g,"sh_string",13],[/'/g,"sh_string",14],[/\b(?:__asm|__cdecl|__declspec|__export|__far16|__fastcall|__fortran|__import|__pascal|__rtti|__stdcall|_asm|_cdecl|__except|_export|_far16|_fastcall|__finally|_fortran|_import|_pascal|_stdcall|__thread|__try|asm|auto|break|case|catch|cdecl|const|continue|default|do|else|enum|extern|for|goto|if|pascal|register|return|sizeof|static|struct|switch|typedef|union|volatile|while)\b/g,"sh_keyword",-1],[/\b(?:bool|char|double|float|int|long|short|signed|unsigned|void|wchar_t)\b/g,"sh_type",-1],[/~|!|%|\^|\*|\(|\)|-|\+|=|\[|\]|\\|:|;|,|\.|\/|\?|&|<|>|\|/g,"sh_symbol",-1],[/\{|\}/g,"sh_cbracket",-1],[/(?:[A-Za-z]|_)[A-Za-z0-9_]*(?=[ \t]*\()/g,"sh_function",-1],[/([A-Za-z](?:[^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]|[_])*)((?:<.*>)?)(\s+(?=[*&]*[A-Za-z][^`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\s]*\s*[`~!@#$%&*()_=+{}|;:",<.>\/?'\\[\]\^\-\[\]]+))/g,["sh_usertype","sh_usertype","sh_normal"],-1]],[[/$/g,null,-2],[/(?:?)|(?:?)/g,"sh_url",-1],[/<\?xml/g,"sh_preproc",2,1],[//g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z](?:[A-Za-z0-9_:.-]*)/g,"sh_keyword",6,1],[/&(?:[A-Za-z0-9]+);/g,"sh_preproc",-1],[/<(?:\/)?[A-Za-z][A-Za-z0-9]*(?:\/)?>/g,"sh_keyword",-1],[/<(?:\/)?[A-Za-z][A-Za-z0-9]*/g,"sh_keyword",6,1],[/@[A-Za-z]+/g,"sh_type",-1],[/(?:TODO|FIXME|BUG)(?:[:]?)/g,"sh_todo",-1]],[[/\?>/g,"sh_preproc",-2],[/([^=" \t>]+)([ \t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",3]],[[/\\(?:\\|")/g,null,-1],[/"/g,"sh_string",-2]],[[/>/g,"sh_preproc",-2],[/([^=" \t>]+)([ \t]*)(=?)/g,["sh_type","sh_normal","sh_symbol"],-1],[/"/g,"sh_string",3]],[[/-->/g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[//g,"sh_comment",-2],[/