(function(){function keywords(str){var obj={},words=str.split(" ");for(var i=0;i",false))stream.next();return"comment";},"/":function(stream,state){if(stream.eat("/")){while(!stream.eol()&&!stream.match("?>",false))stream.next();return"comment";} return false;}}};CodeMirror.defineMode("php",function(config,parserConfig){var htmlMode=CodeMirror.getMode(config,{name:"xml",htmlMode:true});var jsMode=CodeMirror.getMode(config,"javascript");var cssMode=CodeMirror.getMode(config,"css");var phpMode=CodeMirror.getMode(config,phpConfig);function dispatch(stream,state){var isPHP=state.curMode==phpMode;if(stream.sol()&&state.pending!='"')state.pending=null;if(state.curMode==htmlMode){if(stream.match(/^<\?\w*/)){state.curMode=phpMode;state.curState=state.php;state.curClose="?>";return"meta";} if(state.pending=='"'){while(!stream.eol()&&stream.next()!='"'){} var style="string";}else if(state.pending&&stream.pos/.test(cur))state.pending='"';else state.pending={end:stream.pos,style:style};stream.backUp(cur.length-openPHP);}else if(style=="tag"&&stream.current()==">"&&state.curState.context){if(/^script$/i.test(state.curState.context.tagName)){state.curMode=jsMode;state.curState=jsMode.startState(htmlMode.indent(state.curState,""));state.curClose=/^<\/\s*script\s*>/i;} else if(/^style$/i.test(state.curState.context.tagName)){state.curMode=cssMode;state.curState=cssMode.startState(htmlMode.indent(state.curState,""));state.curClose=/^<\/\s*style\s*>/i;}} return style;}else if((!isPHP||state.php.tokenize==null)&&stream.match(state.curClose,isPHP)){state.curMode=htmlMode;state.curState=state.html;state.curClose=null;if(isPHP)return"meta";else return dispatch(stream,state);}else{return state.curMode.token(stream,state.curState);}} return{startState:function(){var html=htmlMode.startState();return{html:html,php:phpMode.startState(),curMode:parserConfig.startOpen?phpMode:htmlMode,curState:parserConfig.startOpen?phpMode.startState():html,curClose:parserConfig.startOpen?/^\?>/:null,mode:parserConfig.startOpen?"php":"html",pending:null};},copyState:function(state){var html=state.html,htmlNew=CodeMirror.copyState(htmlMode,html),php=state.php,phpNew=CodeMirror.copyState(phpMode,php),cur;if(state.curState==html)cur=htmlNew;else if(state.curState==php)cur=phpNew;else cur=CodeMirror.copyState(state.curMode,state.curState);return{html:htmlNew,php:phpNew,curMode:state.curMode,curState:cur,curClose:state.curClose,mode:state.mode,pending:state.pending};},token:dispatch,indent:function(state,textAfter){if((state.curMode!=phpMode&&/^\s*<\//.test(textAfter))||(state.curMode==phpMode&&/^\?>/.test(textAfter))) return htmlMode.indent(state.html,textAfter);return state.curMode.indent(state.curState,textAfter);},electricChars:"/{}:",innerMode:function(state){return{state:state.curState,mode:state.curMode};}};},"xml","clike","javascript","css");CodeMirror.defineMIME("application/x-httpd-php","php");CodeMirror.defineMIME("application/x-httpd-php-open",{name:"php",startOpen:true});CodeMirror.defineMIME("text/x-php",phpConfig);})();