/* Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved. Available via Academic Free License >= 2.1 OR the modified BSD license. see: http://dojotoolkit.org/license for details */ if(!dojo._hasResource["dojox.highlight._base"]){dojo._hasResource["dojox.highlight._base"]=true;dojo.provide("dojox.highlight._base");(function(){var dh=dojox.highlight,_1="\\b(0x[A-Za-z0-9]+|\\d+(\\.\\d+)?)";dh.constants={IDENT_RE:"[a-zA-Z][a-zA-Z0-9_]*",UNDERSCORE_IDENT_RE:"[a-zA-Z_][a-zA-Z0-9_]*",NUMBER_RE:"\\b\\d+(\\.\\d+)?",C_NUMBER_RE:_1,APOS_STRING_MODE:{className:"string",begin:"'",end:"'",illegal:"\\n",contains:["escape"],relevance:0},QUOTE_STRING_MODE:{className:"string",begin:"\"",end:"\"",illegal:"\\n",contains:["escape"],relevance:0},BACKSLASH_ESCAPE:{className:"escape",begin:"\\\\.",end:"^",relevance:0},C_LINE_COMMENT_MODE:{className:"comment",begin:"//",end:"$",relevance:0},C_BLOCK_COMMENT_MODE:{className:"comment",begin:"/\\*",end:"\\*/"},HASH_COMMENT_MODE:{className:"comment",begin:"#",end:"$"},C_NUMBER_MODE:{className:"number",begin:_1,end:"^",relevance:0}};function _2(_3){return _3.replace(/&/gm,"&").replace(//gm,">");};function _4(_5){return dojo.every(_5.childNodes,function(_6){return _6.nodeType==3||String(_6.nodeName).toLowerCase()=="br";});};function _7(_8){var _9=[];dojo.forEach(_8.childNodes,function(_a){if(_a.nodeType==3){_9.push(_a.nodeValue);}else{if(String(_a.nodeName).toLowerCase()=="br"){_9.push("\n");}else{throw "Complex markup";}}});return _9.join("");};function _b(_c){if(!_c.keywordGroups){for(var _d in _c.keywords){var kw=_c.keywords[_d];if(kw instanceof Object){_c.keywordGroups=_c.keywords;}else{_c.keywordGroups={keyword:_c.keywords};}break;}}};function _e(_f){if(_f.defaultMode&&_f.modes){_b(_f.defaultMode);dojo.forEach(_f.modes,_b);}};var _10=function(_11,_12){this.langName=_11;this.lang=dh.languages[_11];this.modes=[this.lang.defaultMode];this.relevance=0;this.keywordCount=0;this.result=[];if(!this.lang.defaultMode.illegalRe){this.buildRes();_e(this.lang);}try{this.highlight(_12);this.result=this.result.join("");}catch(e){if(e=="Illegal"){this.relevance=0;this.keywordCount=0;this.partialResult=this.result.join("");this.result=_2(_12);}else{throw e;}}};dojo.extend(_10,{buildRes:function(){dojo.forEach(this.lang.modes,function(_13){if(_13.begin){_13.beginRe=this.langRe("^"+_13.begin);}if(_13.end){_13.endRe=this.langRe("^"+_13.end);}if(_13.illegal){_13.illegalRe=this.langRe("^(?:"+_13.illegal+")");}},this);this.lang.defaultMode.illegalRe=this.langRe("^(?:"+this.lang.defaultMode.illegal+")");},subMode:function(_14){var _15=this.modes[this.modes.length-1].contains;if(_15){var _16=this.lang.modes;for(var i=0;i<_15.length;++i){var _17=_15[i];for(var j=0;j<_16.length;++j){var _18=_16[j];if(_18.className==_17&&_18.beginRe.test(_14)){return _18;}}}}return null;},endOfMode:function(_19){for(var i=this.modes.length-1;i>=0;--i){var _1a=this.modes[i];if(_1a.end&&_1a.endRe.test(_19)){return this.modes.length-i;}if(!_1a.endsWithParent){break;}}return 0;},isIllegal:function(_1b){var _1c=this.modes[this.modes.length-1].illegalRe;return _1c&&_1c.test(_1b);},langRe:function(_1d,_1e){var _1f="m"+(this.lang.case_insensitive?"i":"")+(_1e?"g":"");return new RegExp(_1d,_1f);},buildTerminators:function(){var _20=this.modes[this.modes.length-1],_21={};if(_20.contains){dojo.forEach(this.lang.modes,function(_22){if(dojo.indexOf(_20.contains,_22.className)>=0){_21[_22.begin]=1;}});}for(var i=this.modes.length-1;i>=0;--i){var m=this.modes[i];if(m.end){_21[m.end]=1;}if(!m.endsWithParent){break;}}if(_20.illegal){_21[_20.illegal]=1;}var t=[];for(i in _21){t.push(i);}_20.terminatorsRe=this.langRe("("+t.join("|")+")");},eatModeChunk:function(_23,_24){var _25=this.modes[this.modes.length-1];if(!_25.terminatorsRe){this.buildTerminators();}_23=_23.substr(_24);var _26=_25.terminatorsRe.exec(_23);if(!_26){return {buffer:_23,lexeme:"",end:true};}return {buffer:_26.index?_23.substr(0,_26.index):"",lexeme:_26[0],end:false};},keywordMatch:function(_27,_28){var _29=_28[0];if(this.lang.case_insensitive){_29=_29.toLowerCase();}for(var _2a in _27.keywordGroups){if(_29 in _27.keywordGroups[_2a]){return _2a;}}return "";},buildLexemes:function(_2b){var _2c={};dojo.forEach(_2b.lexems,function(_2d){_2c[_2d]=1;});var t=[];for(var i in _2c){t.push(i);}_2b.lexemsRe=this.langRe("("+t.join("|")+")",true);},processKeywords:function(_2e){var _2f=this.modes[this.modes.length-1];if(!_2f.keywords||!_2f.lexems){return _2(_2e);}if(!_2f.lexemsRe){this.buildLexemes(_2f);}_2f.lexemsRe.lastIndex=0;var _30=[],_31=0,_32=_2f.lexemsRe.exec(_2e);while(_32){_30.push(_2(_2e.substr(_31,_32.index-_31)));var _33=this.keywordMatch(_2f,_32);if(_33){++this.keywordCount;_30.push(""+_2(_32[0])+"");}else{_30.push(_2(_32[0]));}_31=_2f.lexemsRe.lastIndex;_32=_2f.lexemsRe.exec(_2e);}_30.push(_2(_2e.substr(_31,_2e.length-_31)));return _30.join("");},processModeInfo:function(_34,_35,end){var _36=this.modes[this.modes.length-1];if(end){this.result.push(this.processKeywords(_36.buffer+_34));return;}if(this.isIllegal(_35)){throw "Illegal";}var _37=this.subMode(_35);if(_37){_36.buffer+=_34;this.result.push(this.processKeywords(_36.buffer));if(_37.excludeBegin){this.result.push(_35+"");_37.buffer="";}else{this.result.push("");_37.buffer=_35;}this.modes.push(_37);this.relevance+=typeof _37.relevance=="number"?_37.relevance:1;return;}var _38=this.endOfMode(_35);if(_38){_36.buffer+=_34;if(_36.excludeEnd){this.result.push(this.processKeywords(_36.buffer)+""+_35);}else{this.result.push(this.processKeywords(_36.buffer+_35)+"");}while(_38>1){this.result.push("");--_38;this.modes.pop();}this.modes.pop();this.modes[this.modes.length-1].buffer="";return;}},highlight:function(_39){var _3a=0;this.lang.defaultMode.buffer="";do{var _3b=this.eatModeChunk(_39,_3a);this.processModeInfo(_3b.buffer,_3b.lexeme,_3b.end);_3a+=_3b.buffer.length+_3b.lexeme.length;}while(!_3b.end);if(this.modes.length>1){throw "Illegal";}}});function _3c(_3d,_3e,_3f){if(String(_3d.tagName).toLowerCase()=="code"&&String(_3d.parentNode.tagName).toLowerCase()=="pre"){var _40=document.createElement("div"),_41=_3d.parentNode.parentNode;_40.innerHTML="
"+_3f+"
";_41.replaceChild(_40.firstChild,_3d.parentNode);}else{_3d.className=_3e;_3d.innerHTML=_3f;}};function _42(_43,str){var _44=new _10(_43,str);return {result:_44.result,langName:_43,partialResult:_44.partialResult};};function _45(_46,_47){var _48=_42(_47,_7(_46));_3c(_46,_46.className,_48.result);};function _49(str){var _4a="",_4b="",_4c=2,_4d=str;for(var key in dh.languages){if(!dh.languages[key].defaultMode){continue;}var _4e=new _10(key,_4d),_4f=_4e.keywordCount+_4e.relevance,_50=0;if(!_4a||_4f>_50){_50=_4f;_4a=_4e.result;_4b=_4e.langName;}}return {result:_4a,langName:_4b};};function _51(_52){var _53=_49(_7(_52));if(_53.result){_3c(_52,_53.langName,_53.result);}};dojox.highlight.processString=function(str,_54){return _54?_42(_54,str):_49(str);};dojox.highlight.init=function(_55){_55=dojo.byId(_55);if(dojo.hasClass(_55,"no-highlight")){return;}if(!_4(_55)){return;}var _56=_55.className.split(/\s+/),_57=dojo.some(_56,function(_58){if(_58.charAt(0)!="_"&&dh.languages[_58]){_45(_55,_58);return true;}return false;});if(!_57){_51(_55);}};dh.Code=function(p,n){dh.init(n);};})();}