diff --git a/app.rb b/app.rb
index 17b9b16..1e568eb 100644
--- a/app.rb
+++ b/app.rb
@@ -155,6 +155,13 @@ get "/recips" do
erb :receips
end
+get "/rcpcreate" do
+ @page_name = "Создать новый рецепт"
+ @error_data = session[:rcpcreate_error]
+ session[:gitcreate_error] = nil
+ erb :rcpcrt
+end
+
not_found do
status 404
@page_name = "Кто-то потерялся"
diff --git a/classes/db.rb b/classes/db.rb
index ee1bab5..c57ac48 100644
--- a/classes/db.rb
+++ b/classes/db.rb
@@ -37,4 +37,13 @@ class DBase
{ :fname => item[:filepath], :descr => item[:descr], :id => item[:id] }
end
end
+
+ def delete_repo_by_name(repo_name)
+ rep_id = Repos.where(reponame: repo_name).first
+ unless rep_id[:id].nil?
+ id = rep_id[:id]
+ RepocRecips.where(repo_id: id).delete
+ Repos.where(id: id).delete
+ end
+ end
end
diff --git a/classes/gitinfo.rb b/classes/gitinfo.rb
index c99a559..91f0f86 100644
--- a/classes/gitinfo.rb
+++ b/classes/gitinfo.rb
@@ -145,6 +145,7 @@ class GitRepo
f.flock(File::LOCK_EX)
if File.exist?(git_path)
FileUtils.rm_rf(git_path, secure: true)
+ @db.delete_repo_by_name(reponame)
end
end
end
diff --git a/public/js/edit_area_full.js b/public/js/edit_area_full.js
new file mode 100755
index 0000000..1b5bf0f
--- /dev/null
+++ b/public/js/edit_area_full.js
@@ -0,0 +1,134 @@
+function EAL() {
+ var t = this; t.version = "0.8.2"; date = new Date(); t.start_time = date.getTime(); t.win = "loading"; t.error = false; t.baseURL = ""; t.template = ""; t.lang = {}; t.load_syntax = {}; t.syntax = {}; t.loadedFiles = []; t.waiting_loading = {}; t.scripts_to_load = []; t.sub_scripts_to_load = []; t.syntax_display_name = { 'basic': 'Basic', 'brainfuck': 'Brainfuck', 'c': 'C', 'coldfusion': 'Coldfusion', 'cpp': 'CPP', 'css': 'CSS', 'html': 'HTML', 'java': 'Java', 'js': 'Javascript', 'pas': 'Pascal', 'perl': 'Perl', 'php': 'Php', 'python': 'Python', 'robotstxt': 'Robots txt', 'ruby': 'Ruby', 'sql': 'SQL', 'tsql': 'T-SQL', 'vb': 'Visual Basic', 'xml': 'XML', 'bash': 'Bash' }; t.resize = []; t.hidden = {}; t.default_settings = { debug: false, smooth_selection: true, font_size: "10", font_family: "monospace", start_highlight: false, toolbar: "search,go_to_line,fullscreen,|,undo,redo,|,select_font,|,change_smooth_selection,highlight,reset_highlight,word_wrap,|,help", begin_toolbar: "", end_toolbar: "", is_multi_files: false, allow_resize: "both", show_line_colors: false, min_width: 400, min_height: 125, replace_tab_by_spaces: false, allow_toggle: true, language: "en", syntax: "", syntax_selection_allow: "basic,brainfuck,c,coldfusion,cpp,css,html,java,js,pas,perl,php,python,ruby,robotstxt,sql,tsql,vb,xml,bash", display: "onload", max_undo: 30, browsers: "known", plugins: "", gecko_spellcheck: false, fullscreen: false, is_editable: true, cursor_position: "begin", word_wrap: false, autocompletion: false, load_callback: "", save_callback: "", change_callback: "", submit_callback: "", EA_init_callback: "", EA_delete_callback: "", EA_load_callback: "", EA_unload_callback: "", EA_toggle_on_callback: "", EA_toggle_off_callback: "", EA_file_switch_on_callback: "", EA_file_switch_off_callback: "", EA_file_close_callback: "" }; t.advanced_buttons = [['new_document', 'newdocument.gif', 'new_document', false], ['search', 'search.gif', 'show_search', false], ['go_to_line', 'go_to_line.gif', 'go_to_line', false], ['undo', 'undo.gif', 'undo', true], ['redo', 'redo.gif', 'redo', true], ['change_smooth_selection', 'smooth_selection.gif', 'change_smooth_selection_mode', true], ['reset_highlight', 'reset_highlight.gif', 'resync_highlight', true], ['highlight', 'highlight.gif', 'change_highlight', true], ['help', 'help.gif', 'show_help', false], ['save', 'save.gif', 'save', false], ['load', 'load.gif', 'load', false], ['fullscreen', 'fullscreen.gif', 'toggle_full_screen', false], ['word_wrap', 'word_wrap.gif', 'toggle_word_wrap', true], ['autocompletion', 'autocompletion.gif', 'toggle_autocompletion', true]]; t.set_browser_infos(t); if (t.isIE >= 6 || t.isGecko || (t.isWebKit && !t.isSafari < 3) || t.isOpera >= 9 || t.isCamino) t.isValidBrowser = true;
+ else t.isValidBrowser = false; t.set_base_url(); for (var i = 0; i < t.scripts_to_load.length; i++) { setTimeout("eAL.load_script('" + t.baseURL + t.scripts_to_load[i] + ".js');", 1); t.waiting_loading[t.scripts_to_load[i] + ".js"] = false; } t.add_event(window, "load", EAL.prototype.window_loaded);
+}; EAL.prototype = {
+ has_error: function () { this.error = true; for (var i in EAL.prototype) { EAL.prototype[i] = function () { }; } }, set_browser_infos: function (o) { ua = navigator.userAgent; o.isWebKit = /WebKit/.test(ua); o.isGecko = !o.isWebKit && /Gecko/.test(ua); o.isMac = /Mac/.test(ua); o.isIE = (navigator.appName == "Microsoft Internet Explorer"); if (o.isIE) { o.isIE = ua.replace(/^.*?MSIE\s+([0-9\.]+).*$/, "$1"); if (o.isIE < 6) o.has_error(); } if (o.isOpera = (ua.indexOf('Opera') != -1)) { o.isOpera = ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i, "$1"); if (o.isOpera < 9) o.has_error(); o.isIE = false; } if (o.isFirefox = (ua.indexOf('Firefox') != -1)) o.isFirefox = ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('Iceweasel') != -1) o.isFirefox = ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('GranParadiso') != -1) o.isFirefox = ua.replace(/^.*?GranParadiso.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('BonEcho') != -1) o.isFirefox = ua.replace(/^.*?BonEcho.*?([0-9\.]+).*$/i, "$1"); if (ua.indexOf('SeaMonkey') != -1) o.isFirefox = (ua.replace(/^.*?SeaMonkey.*?([0-9\.]+).*$/i, "$1")) + 1; if (o.isCamino = (ua.indexOf('Camino') != -1)) o.isCamino = ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i, "$1"); if (o.isSafari = (ua.indexOf('Safari') != -1)) o.isSafari = ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i, "$1"); if (o.isChrome = (ua.indexOf('Chrome') != -1)) { o.isChrome = ua.replace(/^.*?Chrome.*?([0-9\.]+).*$/i, "$1"); o.isSafari = false; } }, window_loaded: function () { eAL.win = "loaded"; if (document.forms) { for (var i = 0; i < document.forms.length; i++) { var form = document.forms[i]; form.edit_area_replaced_submit = null; try { form.edit_area_replaced_submit = form.onsubmit; form.onsubmit = ""; } catch (e) { } eAL.add_event(form, "submit", EAL.prototype.submit); eAL.add_event(form, "reset", EAL.prototype.reset); } } eAL.add_event(window, "unload", function () { for (var i in eAs) { eAL.delete_instance(i); } }); }, init_ie_textarea: function (id) { var a = document.getElementById(id); try { if (a && typeof (a.focused) == "undefined") { a.focus(); a.focused = true; a.selectionStart = a.selectionEnd = 0; get_IE_selection(a); eAL.add_event(a, "focus", IE_textarea_focus); eAL.add_event(a, "blur", IE_textarea_blur); } } catch (ex) { } }, init: function (settings) { var t = this, s = settings, i; if (!s["id"]) t.has_error(); if (t.error) return; if (eAs[s["id"]]) t.delete_instance(s["id"]); for (i in t.default_settings) { if (typeof (s[i]) == "undefined") s[i] = t.default_settings[i]; } if (s["browsers"] == "known" && t.isValidBrowser == false) { return; } if (s["begin_toolbar"].length > 0) s["toolbar"] = s["begin_toolbar"] + "," + s["toolbar"]; if (s["end_toolbar"].length > 0) s["toolbar"] = s["toolbar"] + "," + s["end_toolbar"]; s["tab_toolbar"] = s["toolbar"].replace(/ /g, "").split(","); s["plugins"] = s["plugins"].replace(/ /g, "").split(","); for (i = 0; i < s["plugins"].length; i++) { if (s["plugins"][i].length == 0) s["plugins"].splice(i, 1); } t.get_template(); t.load_script(t.baseURL + "langs/" + s["language"] + ".js"); if (s["syntax"].length > 0) { s["syntax"] = s["syntax"].toLowerCase(); t.load_script(t.baseURL + "reg_syntax/" + s["syntax"] + ".js"); } eAs[s["id"]] = { "settings": s }; eAs[s["id"]]["displayed"] = false; eAs[s["id"]]["hidden"] = false; t.start(s["id"]); }, delete_instance: function (id) { var d = document, fs = window.frames, span, iframe; eAL.execCommand(id, "EA_delete"); if (fs["frame_" + id] && fs["frame_" + id].editArea) { if (eAs[id]["displayed"]) eAL.toggle(id, "off"); fs["frame_" + id].editArea.execCommand("EA_unload"); } span = d.getElementById("EditAreaArroundInfos_" + id); if (span) span.parentNode.removeChild(span); iframe = d.getElementById("frame_" + id); if (iframe) { iframe.parentNode.removeChild(iframe); try { delete fs["frame_" + id]; } catch (e) { } } delete eAs[id]; }, start: function (id) {
+ var t = this, d = document, f, span, father, next, html = '', html_toolbar_content = '', template, content, i; if (t.win != "loaded") { setTimeout("eAL.start('" + id + "');", 50); return; } for (i in t.waiting_loading) { if (t.waiting_loading[i] != "loaded" && typeof (t.waiting_loading[i]) != "function") { setTimeout("eAL.start('" + id + "');", 50); return; } } if (!t.lang[eAs[id]["settings"]["language"]] || (eAs[id]["settings"]["syntax"].length > 0 && !t.load_syntax[eAs[id]["settings"]["syntax"]])) { setTimeout("eAL.start('" + id + "');", 50); return; } if (eAs[id]["settings"]["syntax"].length > 0) t.init_syntax_regexp(); if (!d.getElementById("EditAreaArroundInfos_" + id) && (eAs[id]["settings"]["debug"] || eAs[id]["settings"]["allow_toggle"])) {
+ span = d.createElement("span"); span.id = "EditAreaArroundInfos_" + id; if (eAs[id]["settings"]["allow_toggle"]) { checked = (eAs[id]["settings"]["display"] == "onload") ? "checked='checked'" : ""; html += "
"; html += ""; html += "
"; } if (eAs[id]["settings"]["debug"]) html += "
"; html = t.translate(html, eAs[id]["settings"]["language"]); span.innerHTML = html; father = d.getElementById(id).parentNode; next = d.getElementById(id).nextSibling; if (next == null) father.appendChild(span);
+ else father.insertBefore(span, next);
+ } if (!eAs[id]["initialized"]) { t.execCommand(id, "EA_init"); if (eAs[id]["settings"]["display"] == "later") { eAs[id]["initialized"] = true; return; } } if (t.isIE) { t.init_ie_textarea(id); } var area = eAs[id]; for (i = 0; i < area["settings"]["tab_toolbar"].length; i++) { html_toolbar_content += t.get_control_html(area["settings"]["tab_toolbar"][i], area["settings"]["language"]); } html_toolbar_content = t.translate(html_toolbar_content, area["settings"]["language"], "template"); if (!t.iframe_script) { t.iframe_script = ""; for (i = 0; i < t.sub_scripts_to_load.length; i++)t.iframe_script += ''; } for (i = 0; i < area["settings"]["plugins"].length; i++) { if (!t.all_plugins_loaded) t.iframe_script += ''; t.iframe_script += ''; } if (!t.iframe_css) { t.iframe_css = ""; } template = t.template.replace(/\[__BASEURL__\]/g, t.baseURL); template = template.replace("[__TOOLBAR__]", html_toolbar_content); template = t.translate(template, area["settings"]["language"], "template"); template = template.replace("[__CSSRULES__]", t.iframe_css); template = template.replace("[__JSCODE__]", t.iframe_script); template = template.replace("[__EA_VERSION__]", t.version); area.textarea = d.getElementById(area["settings"]["id"]); eAs[area["settings"]["id"]]["textarea"] = area.textarea; if (typeof (window.frames["frame_" + area["settings"]["id"]]) != 'undefined') delete window.frames["frame_" + area["settings"]["id"]]; father = area.textarea.parentNode; content = d.createElement("iframe"); content.name = "frame_" + area["settings"]["id"]; content.id = "frame_" + area["settings"]["id"]; content.style.borderWidth = "0px"; setAttribute(content, "frameBorder", "0"); content.style.overflow = "hidden"; content.style.display = "none"; next = area.textarea.nextSibling; if (next == null) father.appendChild(content);
+ else father.insertBefore(content, next); f = window.frames["frame_" + area["settings"]["id"]]; f.document.open(); f.eAs = eAs; f.area_id = area["settings"]["id"]; f.document.area_id = area["settings"]["id"]; f.document.write(template); f.document.close();
+ }, toggle: function (id, toggle_to) {
+ if (!toggle_to) toggle_to = (eAs[id]["displayed"] == true) ? "off" : "on"; if (eAs[id]["displayed"] == true && toggle_to == "off") { this.toggle_off(id); }
+ else if (eAs[id]["displayed"] == false && toggle_to == "on") { this.toggle_on(id); } return false;
+ }, toggle_off: function (id) {
+ var fs = window.frames, f, t, parNod, nxtSib, selStart, selEnd, scrollTop, scrollLeft; if (fs["frame_" + id]) {
+ f = fs["frame_" + id]; t = eAs[id]["textarea"]; if (f.editArea.fullscreen['isFull']) f.editArea.toggle_full_screen(false); eAs[id]["displayed"] = false; t.wrap = "off"; setAttribute(t, "wrap", "off"); parNod = t.parentNode; nxtSib = t.nextSibling; parNod.removeChild(t); parNod.insertBefore(t, nxtSib); t.value = f.editArea.textarea.value; selStart = f.editArea.last_selection["selectionStart"]; selEnd = f.editArea.last_selection["selectionEnd"]; scrollTop = f.document.getElementById("result").scrollTop; scrollLeft = f.document.getElementById("result").scrollLeft; document.getElementById("frame_" + id).style.display = 'none'; t.style.display = "inline"; try { t.focus(); } catch (e) { }; if (this.isIE) { t.selectionStart = selStart; t.selectionEnd = selEnd; t.focused = true; set_IE_selection(t); }
+ else { if (this.isOpera && this.isOpera < 9.6) { t.setSelectionRange(0, 0); } try { t.setSelectionRange(selStart, selEnd); } catch (e) { }; } t.scrollTop = scrollTop; t.scrollLeft = scrollLeft; f.editArea.execCommand("toggle_off");
+ }
+ }, toggle_on: function (id) {
+ var fs = window.frames, f, t, selStart = 0, selEnd = 0, scrollTop = 0, scrollLeft = 0, curPos, elem; if (fs["frame_" + id]) {
+ f = fs["frame_" + id]; t = eAs[id]["textarea"]; area = f.editArea; area.textarea.value = t.value; curPos = eAs[id]["settings"]["cursor_position"]; if (t.use_last == true) { selStart = t.last_selectionStart; selEnd = t.last_selectionEnd; scrollTop = t.last_scrollTop; scrollLeft = t.last_scrollLeft; t.use_last = false; }
+ else if (curPos == "auto") { try { selStart = t.selectionStart; selEnd = t.selectionEnd; scrollTop = t.scrollTop; scrollLeft = t.scrollLeft; } catch (ex) { } } this.set_editarea_size_from_textarea(id, document.getElementById("frame_" + id)); t.style.display = "none"; document.getElementById("frame_" + id).style.display = "inline"; area.execCommand("focus"); eAs[id]["displayed"] = true; area.execCommand("update_size"); f.document.getElementById("result").scrollTop = scrollTop; f.document.getElementById("result").scrollLeft = scrollLeft; area.area_select(selStart, selEnd - selStart); area.execCommand("toggle_on");
+ }
+ else { elem = document.getElementById(id); elem.last_selectionStart = elem.selectionStart; elem.last_selectionEnd = elem.selectionEnd; elem.last_scrollTop = elem.scrollTop; elem.last_scrollLeft = elem.scrollLeft; elem.use_last = true; eAL.start(id); }
+ }, set_editarea_size_from_textarea: function (id, frame) { var elem, width, height; elem = document.getElementById(id); width = Math.max(eAs[id]["settings"]["min_width"], elem.offsetWidth) + "px"; height = Math.max(eAs[id]["settings"]["min_height"], elem.offsetHeight) + "px"; if (elem.style.width.indexOf("%") != -1) width = elem.style.width; if (elem.style.height.indexOf("%") != -1) height = elem.style.height; frame.style.width = width; frame.style.height = height; }, set_base_url: function () { var t = this, elems, i, docBasePath; if (!this.baseURL) { elems = document.getElementsByTagName('script'); for (i = 0; i < elems.length; i++) { if (elems[i].src && elems[i].src.match(/edit_area_[^\\\/]*$/i)) { var src = unescape(elems[i].src); src = src.substring(0, src.lastIndexOf('/')); this.baseURL = src; this.file_name = elems[i].src.substr(elems[i].src.lastIndexOf("/") + 1); break; } } } docBasePath = document.location.href; if (docBasePath.indexOf('?') != -1) docBasePath = docBasePath.substring(0, docBasePath.indexOf('?')); docBasePath = docBasePath.substring(0, docBasePath.lastIndexOf('/')); if (t.baseURL.indexOf('://') == -1 && t.baseURL.charAt(0) != '/') { t.baseURL = docBasePath + "/" + t.baseURL; } t.baseURL += "/"; }, get_button_html: function (id, img, exec, isFileSpecific, baseURL) { var cmd, html; if (!baseURL) baseURL = this.baseURL; cmd = 'editArea.execCommand(\'' + exec + '\')'; html = ''; html += '
'; return html; }, get_control_html: function (button_name, lang) { var t = this, i, but, html, si; for (i = 0; i < t.advanced_buttons.length; i++) { but = t.advanced_buttons[i]; if (but[0] == button_name) { return t.get_button_html(but[0], but[1], but[2], but[3]); } } switch (button_name) { case "*": case "return": return "
"; case "|": case "separator": return '
'; case "select_font": html = ""; return html; case "syntax_selection": html = ""; return html; }return "[" + button_name + "]"; }, get_template: function () {
+ if (this.template == "") {
+ var xhr_object = null; if (window.XMLHttpRequest) xhr_object = new XMLHttpRequest();
+ else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
+ else { alert("XMLHTTPRequest not supported. EditArea not loaded"); return; } xhr_object.open("GET", this.baseURL + "template.html", false); xhr_object.send(null); if (xhr_object.readyState == 4) this.template = xhr_object.responseText;
+ else this.has_error();
+ }
+ }, translate: function (text, lang, mode) {
+ if (mode == "word") text = eAL.get_word_translation(text, lang);
+ else if (mode = "template") { eAL.current_language = lang; text = text.replace(/\{\$([^\}]+)\}/gm, eAL.translate_template); } return text;
+ }, translate_template: function () { return eAL.get_word_translation(EAL.prototype.translate_template.arguments[1], eAL.current_language); }, get_word_translation: function (val, lang) { var i; for (i in eAL.lang[lang]) { if (i == val) return eAL.lang[lang][i]; } return "_" + val; }, load_script: function (url) { var t = this, d = document, script, head; if (t.loadedFiles[url]) return; try { script = d.createElement("script"); script.type = "text/javascript"; script.src = url; script.charset = "UTF-8"; d.getElementsByTagName("head")[0].appendChild(script); } catch (e) { d.write(''); } t.loadedFiles[url] = true; }, add_event: function (obj, name, handler) {
+ try {
+ if (obj.attachEvent) { obj.attachEvent("on" + name, handler); }
+ else { obj.addEventListener(name, handler, false); }
+ } catch (e) { }
+ }, remove_event: function (obj, name, handler) {
+ try {
+ if (obj.detachEvent) obj.detachEvent("on" + name, handler);
+ else obj.removeEventListener(name, handler, false);
+ } catch (e) { }
+ }, reset: function (e) { var formObj, is_child, i, x; formObj = eAL.isIE ? window.event.srcElement : e.target; if (formObj.tagName != 'FORM') formObj = formObj.form; for (i in eAs) { is_child = false; for (x = 0; x < formObj.elements.length; x++) { if (formObj.elements[x].id == i) is_child = true; } if (window.frames["frame_" + i] && is_child && eAs[i]["displayed"] == true) { var exec = 'window.frames["frame_' + i + '"].editArea.textarea.value=document.getElementById("' + i + '").value;'; exec += 'window.frames["frame_' + i + '"].editArea.execCommand("focus");'; exec += 'window.frames["frame_' + i + '"].editArea.check_line_selection();'; exec += 'window.frames["frame_' + i + '"].editArea.execCommand("reset");'; window.setTimeout(exec, 10); } } return; }, submit: function (e) {
+ var formObj, is_child, fs = window.frames, i, x; formObj = eAL.isIE ? window.event.srcElement : e.target; if (formObj.tagName != 'FORM') formObj = formObj.form; for (i in eAs) { is_child = false; for (x = 0; x < formObj.elements.length; x++) { if (formObj.elements[x].id == i) is_child = true; } if (is_child) { if (fs["frame_" + i] && eAs[i]["displayed"] == true) document.getElementById(i).value = fs["frame_" + i].editArea.textarea.value; eAL.execCommand(i, "EA_submit"); } } if (typeof (formObj.edit_area_replaced_submit) == "function") {
+ res = formObj.edit_area_replaced_submit(); if (res == false) {
+ if (eAL.isIE) return false;
+ else e.preventDefault();
+ }
+ } return;
+ }, getValue: function (id) {
+ if (window.frames["frame_" + id] && eAs[id]["displayed"] == true) { return window.frames["frame_" + id].editArea.textarea.value; }
+ else if (elem = document.getElementById(id)) { return elem.value; } return false;
+ }, setValue: function (id, new_val) {
+ var fs = window.frames; if ((f = fs["frame_" + id]) && eAs[id]["displayed"] == true) { f.editArea.textarea.value = new_val; f.editArea.execCommand("focus"); f.editArea.check_line_selection(false); f.editArea.execCommand("onchange"); }
+ else if (elem = document.getElementById(id)) { elem.value = new_val; }
+ }, getSelectionRange: function (id) {
+ var sel, eA, fs = window.frames; sel = { "start": 0, "end": 0 }; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { eA = fs["frame_" + id].editArea; sel["start"] = eA.textarea.selectionStart; sel["end"] = eA.textarea.selectionEnd; }
+ else if (elem = document.getElementById(id)) { sel = getSelectionRange(elem); } return sel;
+ }, setSelectionRange: function (id, new_start, new_end) {
+ var fs = window.frames; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { fs["frame_" + id].editArea.area_select(new_start, new_end - new_start); if (!this.isIE) { fs["frame_" + id].editArea.check_line_selection(false); fs["frame_" + id].editArea.scroll_to_view(); } }
+ else if (elem = document.getElementById(id)) { setSelectionRange(elem, new_start, new_end); }
+ }, getSelectedText: function (id) { var sel = this.getSelectionRange(id); return this.getValue(id).substring(sel["start"], sel["end"]); }, setSelectedText: function (id, new_val) {
+ var fs = window.frames, d = document, sel, text, scrollTop, scrollLeft, new_sel_end; new_val = new_val.replace(/\r/g, ""); sel = this.getSelectionRange(id); text = this.getValue(id); if (fs["frame_" + id] && eAs[id]["displayed"] == true) { scrollTop = fs["frame_" + id].document.getElementById("result").scrollTop; scrollLeft = fs["frame_" + id].document.getElementById("result").scrollLeft; }
+ else { scrollTop = d.getElementById(id).scrollTop; scrollLeft = d.getElementById(id).scrollLeft; } text = text.substring(0, sel["start"]) + new_val + text.substring(sel["end"]); this.setValue(id, text); new_sel_end = sel["start"] + new_val.length; this.setSelectionRange(id, sel["start"], new_sel_end); if (new_val != this.getSelectedText(id).replace(/\r/g, "")) { this.setSelectionRange(id, sel["start"], new_sel_end + new_val.split("\n").length - 1); } if (fs["frame_" + id] && eAs[id]["displayed"] == true) { fs["frame_" + id].document.getElementById("result").scrollTop = scrollTop; fs["frame_" + id].document.getElementById("result").scrollLeft = scrollLeft; fs["frame_" + id].editArea.execCommand("onchange"); }
+ else { d.getElementById(id).scrollTop = scrollTop; d.getElementById(id).scrollLeft = scrollLeft; }
+ }, insertTags: function (id, open_tag, close_tag) {
+ var old_sel, new_sel; old_sel = this.getSelectionRange(id); text = open_tag + this.getSelectedText(id) + close_tag; eAL.setSelectedText(id, text); new_sel = this.getSelectionRange(id); if (old_sel["end"] > old_sel["start"]) this.setSelectionRange(id, new_sel["end"], new_sel["end"]);
+ else this.setSelectionRange(id, old_sel["start"] + open_tag.length, old_sel["start"] + open_tag.length);
+ }, hide: function (id) {
+ var fs = window.frames, d = document, t = this, scrollTop, scrollLeft, span; if (d.getElementById(id) && !t.hidden[id]) {
+ t.hidden[id] = {}; t.hidden[id]["selectionRange"] = t.getSelectionRange(id); if (d.getElementById(id).style.display != "none") { t.hidden[id]["scrollTop"] = d.getElementById(id).scrollTop; t.hidden[id]["scrollLeft"] = d.getElementById(id).scrollLeft; } if (fs["frame_" + id]) {
+ t.hidden[id]["toggle"] = eAs[id]["displayed"]; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { scrollTop = fs["frame_" + id].document.getElementById("result").scrollTop; scrollLeft = fs["frame_" + id].document.getElementById("result").scrollLeft; }
+ else { scrollTop = d.getElementById(id).scrollTop; scrollLeft = d.getElementById(id).scrollLeft; } t.hidden[id]["scrollTop"] = scrollTop; t.hidden[id]["scrollLeft"] = scrollLeft; if (eAs[id]["displayed"] == true) eAL.toggle_off(id);
+ } span = d.getElementById("EditAreaArroundInfos_" + id); if (span) { span.style.display = 'none'; } d.getElementById(id).style.display = "none";
+ }
+ }, show: function (id) {
+ var fs = window.frames, d = document, t = this, span; if ((elem = d.getElementById(id)) && t.hidden[id]) {
+ elem.style.display = "inline"; elem.scrollTop = t.hidden[id]["scrollTop"]; elem.scrollLeft = t.hidden[id]["scrollLeft"]; span = d.getElementById("EditAreaArroundInfos_" + id); if (span) { span.style.display = 'inline'; } if (fs["frame_" + id]) {
+ elem.style.display = "inline"; if (t.hidden[id]["toggle"] == true) eAL.toggle_on(id); scrollTop = t.hidden[id]["scrollTop"]; scrollLeft = t.hidden[id]["scrollLeft"]; if (fs["frame_" + id] && eAs[id]["displayed"] == true) { fs["frame_" + id].document.getElementById("result").scrollTop = scrollTop; fs["frame_" + id].document.getElementById("result").scrollLeft = scrollLeft; }
+ else { elem.scrollTop = scrollTop; elem.scrollLeft = scrollLeft; }
+ } sel = t.hidden[id]["selectionRange"]; t.setSelectionRange(id, sel["start"], sel["end"]); delete t.hidden[id];
+ }
+ }, getCurrentFile: function (id) { return this.execCommand(id, 'get_file', this.execCommand(id, 'curr_file')); }, getFile: function (id, file_id) { return this.execCommand(id, 'get_file', file_id); }, getAllFiles: function (id) { return this.execCommand(id, 'get_all_files()'); }, openFile: function (id, file_infos) { return this.execCommand(id, 'open_file', file_infos); }, closeFile: function (id, file_id) { return this.execCommand(id, 'close_file', file_id); }, setFileEditedMode: function (id, file_id, to) { var reg1, reg2; reg1 = new RegExp('\\\\', 'g'); reg2 = new RegExp('"', 'g'); return this.execCommand(id, 'set_file_edited_mode("' + file_id.replace(reg1, '\\\\').replace(reg2, '\\"') + '",' + to + ')'); }, execCommand: function (id, cmd, fct_param) {
+ switch (cmd) { case "EA_init": if (eAs[id]['settings']["EA_init_callback"].length > 0) eval(eAs[id]['settings']["EA_init_callback"] + "('" + id + "');"); break; case "EA_delete": if (eAs[id]['settings']["EA_delete_callback"].length > 0) eval(eAs[id]['settings']["EA_delete_callback"] + "('" + id + "');"); break; case "EA_submit": if (eAs[id]['settings']["submit_callback"].length > 0) eval(eAs[id]['settings']["submit_callback"] + "('" + id + "');"); break; }if (window.frames["frame_" + id] && window.frames["frame_" + id].editArea) {
+ if (fct_param != undefined) return eval('window.frames["frame_' + id + '"].editArea.' + cmd + '(fct_param);');
+ else return eval('window.frames["frame_' + id + '"].editArea.' + cmd + ';');
+ } return false;
+ }
+}; var eAL = new EAL(); var eAs = {}; function getAttribute(elm, aName) { var aValue, taName, i; try { aValue = elm.getAttribute(aName); } catch (exept) { } if (!aValue) { for (i = 0; i < elm.attributes.length; i++) { taName = elm.attributes[i].name.toLowerCase(); if (taName == aName) { aValue = elm.attributes[i].value; return aValue; } } } return aValue; }; function setAttribute(elm, attr, val) {
+ if (attr == "class") { elm.setAttribute("className", val); elm.setAttribute("class", val); }
+ else { elm.setAttribute(attr, val); }
+}; function getChildren(elem, elem_type, elem_attribute, elem_attribute_match, option, depth) {
+ if (!option) var option = "single"; if (!depth) var depth = -1; if (elem) {
+ var children = elem.childNodes; var result = null; var results = []; for (var x = 0; x < children.length; x++) {
+ strTagName = new String(children[x].tagName); children_class = "?"; if (strTagName != "undefined") {
+ child_attribute = getAttribute(children[x], elem_attribute); if ((strTagName.toLowerCase() == elem_type.toLowerCase() || elem_type == "") && (elem_attribute == "" || child_attribute == elem_attribute_match)) {
+ if (option == "all") { results.push(children[x]); }
+ else { return children[x]; }
+ } if (depth != 0) {
+ result = getChildren(children[x], elem_type, elem_attribute, elem_attribute_match, option, depth - 1); if (option == "all") { if (result.length > 0) { results = results.concat(result); } }
+ else if (result != null) { return result; }
+ }
+ }
+ } if (option == "all") return results;
+ } return null;
+}; function isChildOf(elem, parent) { if (elem) { if (elem == parent) return true; while (elem.parentNode != 'undefined') { return isChildOf(elem.parentNode, parent); } } return false; }; function getMouseX(e) {
+ if (e != null && typeof (e.pageX) != "undefined") { return e.pageX; }
+ else { return (e != null ? e.x : event.x) + document.documentElement.scrollLeft; }
+}; function getMouseY(e) {
+ if (e != null && typeof (e.pageY) != "undefined") { return e.pageY; }
+ else { return (e != null ? e.y : event.y) + document.documentElement.scrollTop; }
+}; function calculeOffsetLeft(r) { return calculeOffset(r, "offsetLeft") }; function calculeOffsetTop(r) { return calculeOffset(r, "offsetTop") }; function calculeOffset(element, attr) { var offset = 0; while (element) { offset += element[attr]; element = element.offsetParent } return offset; }; function get_css_property(elem, prop) {
+ if (document.defaultView) { return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop); }
+ else if (elem.currentStyle) { var prop = prop.replace(/-\D/gi, function (sMatch) { return sMatch.charAt(sMatch.length - 1).toUpperCase(); }); return elem.currentStyle[prop]; }
+ else return null;
+} var _mCE; function start_move_element(e, id, frame) { var elem_id = (e.target || e.srcElement).id; if (id) elem_id = id; if (!frame) frame = window; if (frame.event) e = frame.event; _mCE = frame.document.getElementById(elem_id); _mCE.frame = frame; frame.document.onmousemove = move_element; frame.document.onmouseup = end_move_element; mouse_x = getMouseX(e); mouse_y = getMouseY(e); _mCE.start_pos_x = mouse_x - (_mCE.style.left.replace("px", "") || calculeOffsetLeft(_mCE)); _mCE.start_pos_y = mouse_y - (_mCE.style.top.replace("px", "") || calculeOffsetTop(_mCE)); return false; }; function end_move_element(e) { _mCE.frame.document.onmousemove = ""; _mCE.frame.document.onmouseup = ""; _mCE = null; }; function move_element(e) { var newTop, newLeft, maxLeft; if (_mCE.frame && _mCE.frame.event) e = _mCE.frame.event; newTop = getMouseY(e) - _mCE.start_pos_y; newLeft = getMouseX(e) - _mCE.start_pos_x; maxLeft = _mCE.frame.document.body.offsetWidth - _mCE.offsetWidth; max_top = _mCE.frame.document.body.offsetHeight - _mCE.offsetHeight; newTop = Math.min(Math.max(0, newTop), max_top); newLeft = Math.min(Math.max(0, newLeft), maxLeft); _mCE.style.top = newTop + "px"; _mCE.style.left = newLeft + "px"; return false; }; var nav = eAL.nav; function getSelectionRange(textarea) { return { "start": textarea.selectionStart, "end": textarea.selectionEnd }; }; function setSelectionRange(t, start, end) { t.focus(); start = Math.max(0, Math.min(t.value.length, start)); end = Math.max(start, Math.min(t.value.length, end)); if (nav.isOpera && nav.isOpera < 9.6) { t.selectionEnd = 1; t.selectionStart = 0; t.selectionEnd = 1; t.selectionStart = 0; } t.selectionStart = start; t.selectionEnd = end; if (nav.isIE) set_IE_selection(t); }; function get_IE_selection(t) { var d = document, div, range, stored_range, elem, scrollTop, relative_top, line_start, line_nb, range_start, range_end, tab; if (t && t.focused) { if (!t.ea_line_height) { div = d.createElement("div"); div.style.fontFamily = get_css_property(t, "font-family"); div.style.fontSize = get_css_property(t, "font-size"); div.style.visibility = "hidden"; div.innerHTML = "0"; d.body.appendChild(div); t.ea_line_height = div.offsetHeight; d.body.removeChild(div); } range = d.selection.createRange(); try { stored_range = range.duplicate(); stored_range.moveToElementText(t); stored_range.setEndPoint('EndToEnd', range); if (stored_range.parentElement() == t) { elem = t; scrollTop = 0; while (elem.parentNode) { scrollTop += elem.scrollTop; elem = elem.parentNode; } relative_top = range.offsetTop - calculeOffsetTop(t) + scrollTop; line_start = Math.round((relative_top / t.ea_line_height) + 1); line_nb = Math.round(range.boundingHeight / t.ea_line_height); range_start = stored_range.text.length - range.text.length; tab = t.value.substr(0, range_start).split("\n"); range_start += (line_start - tab.length) * 2; t.selectionStart = range_start; range_end = t.selectionStart + range.text.length; tab = t.value.substr(0, range_start + range.text.length).split("\n"); range_end += (line_start + line_nb - 1 - tab.length) * 2; t.selectionEnd = range_end; } } catch (e) { } } if (t && t.id) { setTimeout("get_IE_selection(document.getElementById('" + t.id + "'));", 50); } }; function IE_textarea_focus() { event.srcElement.focused = true; } function IE_textarea_blur() { event.srcElement.focused = false; } function set_IE_selection(t) { var nbLineStart, nbLineStart, nbLineEnd, range; if (!window.closed) { nbLineStart = t.value.substr(0, t.selectionStart).split("\n").length - 1; nbLineEnd = t.value.substr(0, t.selectionEnd).split("\n").length - 1; try { range = document.selection.createRange(); range.moveToElementText(t); range.setEndPoint('EndToStart', range); range.moveStart('character', t.selectionStart - nbLineStart); range.moveEnd('character', t.selectionEnd - nbLineEnd - (t.selectionStart - nbLineStart)); range.select(); } catch (e) { } } }; eAL.waiting_loading["elements_functions.js"] = "loaded";
+EAL.prototype.start_resize_area = function () { var d = document, a, div, width, height, father; d.onmouseup = eAL.end_resize_area; d.onmousemove = eAL.resize_area; eAL.toggle(eAL.resize["id"]); a = eAs[eAL.resize["id"]]["textarea"]; div = d.getElementById("edit_area_resize"); if (!div) { div = d.createElement("div"); div.id = "edit_area_resize"; div.style.border = "dashed #888888 1px"; } width = a.offsetWidth - 2; height = a.offsetHeight - 2; div.style.display = "block"; div.style.width = width + "px"; div.style.height = height + "px"; father = a.parentNode; father.insertBefore(div, a); a.style.display = "none"; eAL.resize["start_top"] = calculeOffsetTop(div); eAL.resize["start_left"] = calculeOffsetLeft(div); }; EAL.prototype.end_resize_area = function (e) { var d = document, div, a, width, height; d.onmouseup = ""; d.onmousemove = ""; div = d.getElementById("edit_area_resize"); a = eAs[eAL.resize["id"]]["textarea"]; width = Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"], div.offsetWidth - 4); height = Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"], div.offsetHeight - 4); if (eAL.isIE == 6) { width -= 2; height -= 2; } a.style.width = width + "px"; a.style.height = height + "px"; div.style.display = "none"; a.style.display = "inline"; a.selectionStart = eAL.resize["selectionStart"]; a.selectionEnd = eAL.resize["selectionEnd"]; eAL.toggle(eAL.resize["id"]); return false; }; EAL.prototype.resize_area = function (e) { var allow, newHeight, newWidth; allow = eAs[eAL.resize["id"]]["settings"]["allow_resize"]; if (allow == "both" || allow == "y") { newHeight = Math.max(20, getMouseY(e) - eAL.resize["start_top"]); document.getElementById("edit_area_resize").style.height = newHeight + "px"; } if (allow == "both" || allow == "x") { newWidth = Math.max(20, getMouseX(e) - eAL.resize["start_left"]); document.getElementById("edit_area_resize").style.width = newWidth + "px"; } return false; }; eAL.waiting_loading["resize_area.js"] = "loaded";
+EAL.prototype.get_regexp = function (text_array) { res = "(\\b)("; for (i = 0; i < text_array.length; i++) { if (i > 0) res += "|"; res += this.get_escaped_regexp(text_array[i]); } res += ")(\\b)"; reg = new RegExp(res); return res; }; EAL.prototype.get_escaped_regexp = function (str) { return str.toString().replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g, "\\$1"); }; EAL.prototype.init_syntax_regexp = function () {
+ var lang_style = {}; for (var lang in this.load_syntax) {
+ if (!this.syntax[lang]) {
+ this.syntax[lang] = {}; this.syntax[lang]["keywords_reg_exp"] = {}; this.keywords_reg_exp_nb = 0; if (this.load_syntax[lang]['KEYWORDS']) { param = "g"; if (this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE'] === false) param += "i"; for (var i in this.load_syntax[lang]['KEYWORDS']) { if (typeof (this.load_syntax[lang]['KEYWORDS'][i]) == "function") continue; this.syntax[lang]["keywords_reg_exp"][i] = new RegExp(this.get_regexp(this.load_syntax[lang]['KEYWORDS'][i]), param); this.keywords_reg_exp_nb++; } } if (this.load_syntax[lang]['OPERATORS']) { var str = ""; var nb = 0; for (var i in this.load_syntax[lang]['OPERATORS']) { if (typeof (this.load_syntax[lang]['OPERATORS'][i]) == "function") continue; if (nb > 0) str += "|"; str += this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]); nb++; } if (str.length > 0) this.syntax[lang]["operators_reg_exp"] = new RegExp("(" + str + ")", "g"); } if (this.load_syntax[lang]['DELIMITERS']) { var str = ""; var nb = 0; for (var i in this.load_syntax[lang]['DELIMITERS']) { if (typeof (this.load_syntax[lang]['DELIMITERS'][i]) == "function") continue; if (nb > 0) str += "|"; str += this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]); nb++; } if (str.length > 0) this.syntax[lang]["delimiters_reg_exp"] = new RegExp("(" + str + ")", "g"); } var syntax_trace = []; this.syntax[lang]["quotes"] = {}; var quote_tab = []; if (this.load_syntax[lang]['QUOTEMARKS']) { for (var i in this.load_syntax[lang]['QUOTEMARKS']) { if (typeof (this.load_syntax[lang]['QUOTEMARKS'][i]) == "function") continue; var x = this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]); this.syntax[lang]["quotes"][x] = x; quote_tab[quote_tab.length] = "(" + x + "(\\\\.|[^" + x + "])*(?:" + x + "|$))"; syntax_trace.push(x); } } this.syntax[lang]["comments"] = {}; if (this.load_syntax[lang]['COMMENT_SINGLE']) { for (var i in this.load_syntax[lang]['COMMENT_SINGLE']) { if (typeof (this.load_syntax[lang]['COMMENT_SINGLE'][i]) == "function") continue; var x = this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]); quote_tab[quote_tab.length] = "(" + x + "(.|\\r|\\t)*(\\n|$))"; syntax_trace.push(x); this.syntax[lang]["comments"][x] = "\n"; } } if (this.load_syntax[lang]['COMMENT_MULTI']) { for (var i in this.load_syntax[lang]['COMMENT_MULTI']) { if (typeof (this.load_syntax[lang]['COMMENT_MULTI'][i]) == "function") continue; var start = this.get_escaped_regexp(i); var end = this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]); quote_tab[quote_tab.length] = "(" + start + "(.|\\n|\\r)*?(" + end + "|$))"; syntax_trace.push(start); syntax_trace.push(end); this.syntax[lang]["comments"][i] = this.load_syntax[lang]['COMMENT_MULTI'][i]; } } if (quote_tab.length > 0) this.syntax[lang]["comment_or_quote_reg_exp"] = new RegExp("(" + quote_tab.join("|") + ")", "gi"); if (syntax_trace.length > 0) this.syntax[lang]["syntax_trace_regexp"] = new RegExp("((.|\n)*?)(\\\\*(" + syntax_trace.join("|") + "|$))", "gmi"); if (this.load_syntax[lang]['SCRIPT_DELIMITERS']) { this.syntax[lang]["script_delimiters"] = {}; for (var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']) { if (typeof (this.load_syntax[lang]['SCRIPT_DELIMITERS'][i]) == "function") continue; this.syntax[lang]["script_delimiters"][i] = this.load_syntax[lang]['SCRIPT_DELIMITERS']; } } this.syntax[lang]["custom_regexp"] = {}; if (this.load_syntax[lang]['REGEXPS']) { for (var i in this.load_syntax[lang]['REGEXPS']) { if (typeof (this.load_syntax[lang]['REGEXPS'][i]) == "function") continue; var val = this.load_syntax[lang]['REGEXPS'][i]; if (!this.syntax[lang]["custom_regexp"][val['execute']]) this.syntax[lang]["custom_regexp"][val['execute']] = {}; this.syntax[lang]["custom_regexp"][val['execute']][i] = { 'regexp': new RegExp(val['search'], val['modifiers']), 'class': val['class'] }; } } if (this.load_syntax[lang]['STYLES']) {
+ lang_style[lang] = {}; for (var i in this.load_syntax[lang]['STYLES']) {
+ if (typeof (this.load_syntax[lang]['STYLES'][i]) == "function") continue; if (typeof (this.load_syntax[lang]['STYLES'][i]) != "string") { for (var j in this.load_syntax[lang]['STYLES'][i]) { lang_style[lang][j] = this.load_syntax[lang]['STYLES'][i][j]; } }
+ else { lang_style[lang][i] = this.load_syntax[lang]['STYLES'][i]; }
+ }
+ } var style = ""; for (var i in lang_style[lang]) { if (lang_style[lang][i].length > 0) { style += "." + lang + " ." + i.toLowerCase() + " span{" + lang_style[lang][i] + "}\n"; style += "." + lang + " ." + i.toLowerCase() + "{" + lang_style[lang][i] + "}\n"; } } this.syntax[lang]["styles"] = style;
+ }
+ }
+}; eAL.waiting_loading["reg_syntax.js"] = "loaded";
+var editAreaLoader = eAL; var editAreas = eAs; EditAreaLoader = EAL; editAreaLoader.iframe_script = "".replace(/Á/g, 'this').replace(/Â/g, 'textarea').replace(/Ã/g, 'function').replace(/Ä/g, 'prototype').replace(/Å/g, 'settings').replace(/Æ/g, 'length').replace(/Ç/g, 'style').replace(/È/g, 'parent').replace(/É/g, 'last_selection').replace(/Ê/g, 'value').replace(/Ë/g, 'true').replace(/Ì/g, 'false');
+editAreaLoader.template = " EditArea [__CSSRULES__] [__JSCODE__] ";
+editAreaLoader.iframe_css = "";
diff --git a/public/js/images/autocompletion.gif b/public/js/images/autocompletion.gif
new file mode 100755
index 0000000..f3dfc2e
Binary files /dev/null and b/public/js/images/autocompletion.gif differ
diff --git a/public/js/images/close.gif b/public/js/images/close.gif
new file mode 100755
index 0000000..679ca2a
Binary files /dev/null and b/public/js/images/close.gif differ
diff --git a/public/js/images/fullscreen.gif b/public/js/images/fullscreen.gif
new file mode 100755
index 0000000..66fa6d9
Binary files /dev/null and b/public/js/images/fullscreen.gif differ
diff --git a/public/js/images/go_to_line.gif b/public/js/images/go_to_line.gif
new file mode 100755
index 0000000..06042ec
Binary files /dev/null and b/public/js/images/go_to_line.gif differ
diff --git a/public/js/images/help.gif b/public/js/images/help.gif
new file mode 100755
index 0000000..51a1ee4
Binary files /dev/null and b/public/js/images/help.gif differ
diff --git a/public/js/images/highlight.gif b/public/js/images/highlight.gif
new file mode 100755
index 0000000..16491f6
Binary files /dev/null and b/public/js/images/highlight.gif differ
diff --git a/public/js/images/load.gif b/public/js/images/load.gif
new file mode 100755
index 0000000..461698f
Binary files /dev/null and b/public/js/images/load.gif differ
diff --git a/public/js/images/move.gif b/public/js/images/move.gif
new file mode 100755
index 0000000..d15f9f5
Binary files /dev/null and b/public/js/images/move.gif differ
diff --git a/public/js/images/newdocument.gif b/public/js/images/newdocument.gif
new file mode 100755
index 0000000..a9d2938
Binary files /dev/null and b/public/js/images/newdocument.gif differ
diff --git a/public/js/images/opacity.png b/public/js/images/opacity.png
new file mode 100755
index 0000000..b4217cb
Binary files /dev/null and b/public/js/images/opacity.png differ
diff --git a/public/js/images/processing.gif b/public/js/images/processing.gif
new file mode 100755
index 0000000..cce32f2
Binary files /dev/null and b/public/js/images/processing.gif differ
diff --git a/public/js/images/redo.gif b/public/js/images/redo.gif
new file mode 100755
index 0000000..3af9069
Binary files /dev/null and b/public/js/images/redo.gif differ
diff --git a/public/js/images/reset_highlight.gif b/public/js/images/reset_highlight.gif
new file mode 100755
index 0000000..0fa3cb7
Binary files /dev/null and b/public/js/images/reset_highlight.gif differ
diff --git a/public/js/images/save.gif b/public/js/images/save.gif
new file mode 100755
index 0000000..2777beb
Binary files /dev/null and b/public/js/images/save.gif differ
diff --git a/public/js/images/search.gif b/public/js/images/search.gif
new file mode 100755
index 0000000..cfe76b5
Binary files /dev/null and b/public/js/images/search.gif differ
diff --git a/public/js/images/smooth_selection.gif b/public/js/images/smooth_selection.gif
new file mode 100755
index 0000000..8a532e5
Binary files /dev/null and b/public/js/images/smooth_selection.gif differ
diff --git a/public/js/images/spacer.gif b/public/js/images/spacer.gif
new file mode 100755
index 0000000..3884865
Binary files /dev/null and b/public/js/images/spacer.gif differ
diff --git a/public/js/images/statusbar_resize.gif b/public/js/images/statusbar_resize.gif
new file mode 100755
index 0000000..af89d80
Binary files /dev/null and b/public/js/images/statusbar_resize.gif differ
diff --git a/public/js/images/undo.gif b/public/js/images/undo.gif
new file mode 100755
index 0000000..520796d
Binary files /dev/null and b/public/js/images/undo.gif differ
diff --git a/public/js/images/word_wrap.gif b/public/js/images/word_wrap.gif
new file mode 100755
index 0000000..8f256cc
Binary files /dev/null and b/public/js/images/word_wrap.gif differ
diff --git a/public/js/langs/ru.js b/public/js/langs/ru.js
new file mode 100755
index 0000000..fcd381d
--- /dev/null
+++ b/public/js/langs/ru.js
@@ -0,0 +1,48 @@
+editAreaLoader.lang["ru"]={
+new_document: "новый пустой документ",
+search_button: "поиск и замена",
+search_command: "искать следующий / открыть панель поиска",
+search: "поиск",
+replace: "замена",
+replace_command: "заменить / открыть панель поиска",
+find_next: "найти следующее",
+replace_all: "заменить все",
+reg_exp: "регулярное выражение",
+match_case: "учитывать регистр",
+not_found: "не найдено.",
+occurrence_replaced: "вхождение заменено.",
+search_field_empty: "Поле поиска пустое",
+restart_search_at_begin: "Достигнут конец документа. Начинаю с начала.",
+move_popup: "переместить окно поиска",
+font_size: "--Размер шрифта--",
+go_to_line: "перейти к строке",
+go_to_line_prompt: "перейти к строке номер:",
+undo: "отменить",
+redo: "вернуть",
+change_smooth_selection: "включить/отключить некоторые функции просмотра (более красиво, но больше использует процессор)",
+highlight: "переключить подсветку синтаксиса включена/выключена",
+reset_highlight: "восстановить подсветку (если разсинхронизирована от текста)",
+word_wrap: "toggle word wrapping mode",
+help: "о программе",
+save: "сохранить",
+load: "загрузить",
+line_abbr: "Стр",
+char_abbr: "Стлб",
+position: "Позиция",
+total: "Всего",
+close_popup: "закрыть всплывающее окно",
+shortcuts: "Горячие клавиши",
+add_tab: "добавить табуляцию в текст",
+remove_tab: "убрать табуляцию из текста",
+about_notice: "Внимание: функция подсветки синтаксиса только для небольших текстов",
+toggle: "Переключить редактор",
+accesskey: "Горячая клавиша",
+tab: "Tab",
+shift: "Shift",
+ctrl: "Ctrl",
+esc: "Esc",
+processing: "Обработка...",
+fullscreen: "полный экран",
+syntax_selection: "--Синтакс--",
+close_tab: "Закрыть файл"
+};
diff --git a/public/js/plugins/charmap/charmap.js b/public/js/plugins/charmap/charmap.js
new file mode 100755
index 0000000..df42822
--- /dev/null
+++ b/public/js/plugins/charmap/charmap.js
@@ -0,0 +1,90 @@
+/**
+ * Charmap plugin
+ * by Christophe Dolivet
+ * v0.1 (2006/09/22)
+ *
+ *
+ * This plugin allow to use a visual keyboard allowing to insert any UTF-8 characters in the text.
+ *
+ * - plugin name to add to the plugin list: "charmap"
+ * - plugin name to add to the toolbar list: "charmap"
+ * - possible parameters to add to EditAreaLoader.init():
+ * "charmap_default": (String) define the name of the default character range displayed on popup display
+ * (default: "arrows")
+ *
+ *
+ */
+
+var EditArea_charmap= {
+ /**
+ * Get called once this file is loaded (editArea still not initialized)
+ *
+ * @return nothing
+ */
+ init: function(){
+ this.default_language="Arrows";
+ }
+
+ /**
+ * Returns the HTML code for a specific control string or false if this plugin doesn't have that control.
+ * A control can be a button, select list or any other HTML item to present in the EditArea user interface.
+ * Language variables such as {$lang_somekey} will also be replaced with contents from
+ * the language packs.
+ *
+ * @param {string} ctrl_name: the name of the control to add
+ * @return HTML code for a specific control or false.
+ * @type string or boolean
+ */
+ ,get_control_html: function(ctrl_name){
+ switch(ctrl_name){
+ case "charmap":
+ // Control id, button img, command
+ return parent.editAreaLoader.get_button_html('charmap_but', 'charmap.gif', 'charmap_press', false, this.baseURL);
+ }
+ return false;
+ }
+ /**
+ * Get called once EditArea is fully loaded and initialised
+ *
+ * @return nothing
+ */
+ ,onload: function(){
+ if(editArea.settings["charmap_default"] && editArea.settings["charmap_default"].length>0)
+ this.default_language= editArea.settings["charmap_default"];
+ }
+
+ /**
+ * Is called each time the user touch a keyboard key.
+ *
+ * @param (event) e: the keydown event
+ * @return true - pass to next handler in chain, false - stop chain execution
+ * @type boolean
+ */
+ ,onkeydown: function(e){
+
+ }
+
+ /**
+ * Executes a specific command, this function handles plugin commands.
+ *
+ * @param {string} cmd: the name of the command being executed
+ * @param {unknown} param: the parameter of the command
+ * @return true - pass to next handler in chain, false - stop chain execution
+ * @type boolean
+ */
+ ,execCommand: function(cmd, param){
+ // Handle commands
+ switch(cmd){
+ case "charmap_press":
+ win= window.open(this.baseURL+"popup.html", "charmap", "width=500,height=270,scrollbars=yes,resizable=yes");
+ win.focus();
+ return false;
+ }
+ // Pass to next handler in chain
+ return true;
+ }
+
+};
+
+// Adds the plugin class to the list of available EditArea plugins
+editArea.add_plugin("charmap", EditArea_charmap);
diff --git a/public/js/plugins/charmap/css/charmap.css b/public/js/plugins/charmap/css/charmap.css
new file mode 100755
index 0000000..fc8d666
--- /dev/null
+++ b/public/js/plugins/charmap/css/charmap.css
@@ -0,0 +1,64 @@
+body{
+ background-color: #F0F0EE;
+ font: 12px monospace, sans-serif;
+}
+
+select{
+ background-color: #F9F9F9;
+ border: solid 1px #888888;
+}
+
+h1, h2, h3, h4, h5, h6{
+ margin: 0;
+ padding: 0;
+ color: #2B6FB6;
+}
+
+h1{
+ font-size: 1.5em;
+}
+
+div#char_list{
+ height: 200px;
+ overflow: auto;
+ padding: 1px;
+ border: 1px solid #0A246A;
+ background-color: #F9F9F9;
+ clear: both;
+ margin-top: 5px;
+}
+
+a.char{
+ display: block;
+ float: left;
+ width: 20px;
+ height: 20px;
+ line-height: 20px;
+ margin: 1px;
+ border: solid 1px #888888;
+ text-align: center;
+ cursor: pointer;
+}
+
+a.char:hover{
+ background-color: #CCCCCC;
+}
+
+.preview{
+ border: solid 1px #888888;
+ width: 50px;
+ padding: 2px 5px;
+ height: 35px;
+ line-height: 35px;
+ text-align:center;
+ background-color: #CCCCCC;
+ font-size: 2em;
+ float: right;
+ font-weight: bold;
+ margin: 0 0 5px 5px;
+}
+
+#preview_code{
+ font-size: 1.1em;
+ width: 70px;
+}
diff --git a/public/js/plugins/charmap/images/charmap.gif b/public/js/plugins/charmap/images/charmap.gif
new file mode 100755
index 0000000..3cdc4ac
Binary files /dev/null and b/public/js/plugins/charmap/images/charmap.gif differ
diff --git a/public/js/plugins/charmap/jscripts/map.js b/public/js/plugins/charmap/jscripts/map.js
new file mode 100755
index 0000000..6c194a4
--- /dev/null
+++ b/public/js/plugins/charmap/jscripts/map.js
@@ -0,0 +1,373 @@
+var editArea;
+
+
+/**
+ * UTF-8 list taken from http://www.utf8-chartable.de/unicode-utf8-table.pl?utf8=dec
+ */
+
+
+/*
+var char_range_list={
+"Basic Latin":"0021,007F",
+"Latin-1 Supplement":"0080,00FF",
+"Latin Extended-A":"0100,017F",
+"Latin Extended-B":"0180,024F",
+"IPA Extensions":"0250,02AF",
+"Spacing Modifier Letters":"02B0,02FF",
+
+"Combining Diacritical Marks":"0300,036F",
+"Greek and Coptic":"0370,03FF",
+"Cyrillic":"0400,04FF",
+"Cyrillic Supplement":"0500,052F",
+"Armenian":"0530,058F",
+"Hebrew":"0590,05FF",
+"Arabic":"0600,06FF",
+"Syriac":"0700,074F",
+"Arabic Supplement":"0750,077F",
+
+"Thaana":"0780,07BF",
+"Devanagari":"0900,097F",
+"Bengali":"0980,09FF",
+"Gurmukhi":"0A00,0A7F",
+"Gujarati":"0A80,0AFF",
+"Oriya":"0B00,0B7F",
+"Tamil":"0B80,0BFF",
+"Telugu":"0C00,0C7F",
+"Kannada":"0C80,0CFF",
+
+"Malayalam":"0D00,0D7F",
+"Sinhala":"0D80,0DFF",
+"Thai":"0E00,0E7F",
+"Lao":"0E80,0EFF",
+"Tibetan":"0F00,0FFF",
+"Myanmar":"1000,109F",
+"Georgian":"10A0,10FF",
+"Hangul Jamo":"1100,11FF",
+"Ethiopic":"1200,137F",
+
+"Ethiopic Supplement":"1380,139F",
+"Cherokee":"13A0,13FF",
+"Unified Canadian Aboriginal Syllabics":"1400,167F",
+"Ogham":"1680,169F",
+"Runic":"16A0,16FF",
+"Tagalog":"1700,171F",
+"Hanunoo":"1720,173F",
+"Buhid":"1740,175F",
+"Tagbanwa":"1760,177F",
+
+"Khmer":"1780,17FF",
+"Mongolian":"1800,18AF",
+"Limbu":"1900,194F",
+"Tai Le":"1950,197F",
+"New Tai Lue":"1980,19DF",
+"Khmer Symbols":"19E0,19FF",
+"Buginese":"1A00,1A1F",
+"Phonetic Extensions":"1D00,1D7F",
+"Phonetic Extensions Supplement":"1D80,1DBF",
+
+"Combining Diacritical Marks Supplement":"1DC0,1DFF",
+"Latin Extended Additional":"1E00,1EFF",
+"Greek Extended":"1F00,1FFF",
+"General Punctuation":"2000,206F",
+"Superscripts and Subscripts":"2070,209F",
+"Currency Symbols":"20A0,20CF",
+"Combining Diacritical Marks for Symbols":"20D0,20FF",
+"Letterlike Symbols":"2100,214F",
+"Number Forms":"2150,218F",
+
+"Arrows":"2190,21FF",
+"Mathematical Operators":"2200,22FF",
+"Miscellaneous Technical":"2300,23FF",
+"Control Pictures":"2400,243F",
+"Optical Character Recognition":"2440,245F",
+"Enclosed Alphanumerics":"2460,24FF",
+"Box Drawing":"2500,257F",
+"Block Elements":"2580,259F",
+"Geometric Shapes":"25A0,25FF",
+
+"Miscellaneous Symbols":"2600,26FF",
+"Dingbats":"2700,27BF",
+"Miscellaneous Mathematical Symbols-A":"27C0,27EF",
+"Supplemental Arrows-A":"27F0,27FF",
+"Braille Patterns":"2800,28FF",
+"Supplemental Arrows-B":"2900,297F",
+"Miscellaneous Mathematical Symbols-B":"2980,29FF",
+"Supplemental Mathematical Operators":"2A00,2AFF",
+"Miscellaneous Symbols and Arrows":"2B00,2BFF",
+
+"Glagolitic":"2C00,2C5F",
+"Coptic":"2C80,2CFF",
+"Georgian Supplement":"2D00,2D2F",
+"Tifinagh":"2D30,2D7F",
+"Ethiopic Extended":"2D80,2DDF",
+"Supplemental Punctuation":"2E00,2E7F",
+"CJK Radicals Supplement":"2E80,2EFF",
+"Kangxi Radicals":"2F00,2FDF",
+"Ideographic Description Characters":"2FF0,2FFF",
+
+"CJK Symbols and Punctuation":"3000,303F",
+"Hiragana":"3040,309F",
+"Katakana":"30A0,30FF",
+"Bopomofo":"3100,312F",
+"Hangul Compatibility Jamo":"3130,318F",
+"Kanbun":"3190,319F",
+"Bopomofo Extended":"31A0,31BF",
+"CJK Strokes":"31C0,31EF",
+"Katakana Phonetic Extensions":"31F0,31FF",
+
+"Enclosed CJK Letters and Months":"3200,32FF",
+"CJK Compatibility":"3300,33FF",
+"CJK Unified Ideographs Extension A":"3400,4DBF",
+"Yijing Hexagram Symbols":"4DC0,4DFF",
+"CJK Unified Ideographs":"4E00,9FFF",
+"Yi Syllables":"A000,A48F",
+"Yi Radicals":"A490,A4CF",
+"Modifier Tone Letters":"A700,A71F",
+"Syloti Nagri":"A800,A82F",
+
+"Hangul Syllables":"AC00,D7AF",
+"High Surrogates":"D800,DB7F",
+"High Private Use Surrogates":"DB80,DBFF",
+"Low Surrogates":"DC00,DFFF",
+"Private Use Area":"E000,F8FF",
+"CJK Compatibility Ideographs":"F900,FAFF",
+"Alphabetic Presentation Forms":"FB00,FB4F",
+"Arabic Presentation Forms-A":"FB50,FDFF",
+"Variation Selectors":"FE00,FE0F",
+
+"Vertical Forms":"FE10,FE1F",
+"Combining Half Marks":"FE20,FE2F",
+"CJK Compatibility Forms":"FE30,FE4F",
+"Small Form Variants":"FE50,FE6F",
+"Arabic Presentation Forms-B":"FE70,FEFF",
+"Halfwidth and Fullwidth Forms":"FF00,FFEF",
+"Specials":"FFF0,FFFF",
+"Linear B Syllabary":"10000,1007F",
+"Linear B Ideograms":"10080,100FF",
+
+"Aegean Numbers":"10100,1013F",
+"Ancient Greek Numbers":"10140,1018F",
+"Old Italic":"10300,1032F",
+"Gothic":"10330,1034F",
+"Ugaritic":"10380,1039F",
+"Old Persian":"103A0,103DF",
+"Deseret":"10400,1044F",
+"Shavian":"10450,1047F",
+"Osmanya":"10480,104AF",
+
+"Cypriot Syllabary":"10800,1083F",
+"Kharoshthi":"10A00,10A5F",
+"Byzantine Musical Symbols":"1D000,1D0FF",
+"Musical Symbols":"1D100,1D1FF",
+"Ancient Greek Musical Notation":"1D200,1D24F",
+"Tai Xuan Jing Symbols":"1D300,1D35F",
+"Mathematical Alphanumeric Symbols":"1D400,1D7FF",
+"CJK Unified Ideographs Extension B":"20000,2A6DF",
+"CJK Compatibility Ideographs Supplement":"2F800,2FA1F",
+"Tags":"E0000,E007F",
+"Variation Selectors Supplement":"E0100,E01EF"
+};
+*/
+var char_range_list={
+"Aegean Numbers":"10100,1013F",
+"Alphabetic Presentation Forms":"FB00,FB4F",
+"Ancient Greek Musical Notation":"1D200,1D24F",
+"Ancient Greek Numbers":"10140,1018F",
+"Arabic":"0600,06FF",
+"Arabic Presentation Forms-A":"FB50,FDFF",
+"Arabic Presentation Forms-B":"FE70,FEFF",
+"Arabic Supplement":"0750,077F",
+"Armenian":"0530,058F",
+"Arrows":"2190,21FF",
+"Basic Latin":"0020,007F",
+"Bengali":"0980,09FF",
+"Block Elements":"2580,259F",
+"Bopomofo Extended":"31A0,31BF",
+"Bopomofo":"3100,312F",
+"Box Drawing":"2500,257F",
+"Braille Patterns":"2800,28FF",
+"Buginese":"1A00,1A1F",
+"Buhid":"1740,175F",
+"Byzantine Musical Symbols":"1D000,1D0FF",
+"CJK Compatibility Forms":"FE30,FE4F",
+"CJK Compatibility Ideographs Supplement":"2F800,2FA1F",
+"CJK Compatibility Ideographs":"F900,FAFF",
+"CJK Compatibility":"3300,33FF",
+"CJK Radicals Supplement":"2E80,2EFF",
+"CJK Strokes":"31C0,31EF",
+"CJK Symbols and Punctuation":"3000,303F",
+"CJK Unified Ideographs Extension A":"3400,4DBF",
+"CJK Unified Ideographs Extension B":"20000,2A6DF",
+"CJK Unified Ideographs":"4E00,9FFF",
+"Cherokee":"13A0,13FF",
+"Combining Diacritical Marks Supplement":"1DC0,1DFF",
+"Combining Diacritical Marks for Symbols":"20D0,20FF",
+"Combining Diacritical Marks":"0300,036F",
+"Combining Half Marks":"FE20,FE2F",
+"Control Pictures":"2400,243F",
+"Coptic":"2C80,2CFF",
+"Currency Symbols":"20A0,20CF",
+"Cypriot Syllabary":"10800,1083F",
+"Cyrillic Supplement":"0500,052F",
+"Cyrillic":"0400,04FF",
+"Deseret":"10400,1044F",
+"Devanagari":"0900,097F",
+"Dingbats":"2700,27BF",
+"Enclosed Alphanumerics":"2460,24FF",
+"Enclosed CJK Letters and Months":"3200,32FF",
+"Ethiopic Extended":"2D80,2DDF",
+"Ethiopic Supplement":"1380,139F",
+"Ethiopic":"1200,137F",
+"General Punctuation":"2000,206F",
+"Geometric Shapes":"25A0,25FF",
+"Georgian Supplement":"2D00,2D2F",
+"Georgian":"10A0,10FF",
+"Glagolitic":"2C00,2C5F",
+"Gothic":"10330,1034F",
+"Greek Extended":"1F00,1FFF",
+"Greek and Coptic":"0370,03FF",
+"Gujarati":"0A80,0AFF",
+"Gurmukhi":"0A00,0A7F",
+"Halfwidth and Fullwidth Forms":"FF00,FFEF",
+"Hangul Compatibility Jamo":"3130,318F",
+"Hangul Jamo":"1100,11FF",
+"Hangul Syllables":"AC00,D7AF",
+"Hanunoo":"1720,173F",
+"Hebrew":"0590,05FF",
+"High Private Use Surrogates":"DB80,DBFF",
+"High Surrogates":"D800,DB7F",
+"Hiragana":"3040,309F",
+"IPA Extensions":"0250,02AF",
+"Ideographic Description Characters":"2FF0,2FFF",
+"Kanbun":"3190,319F",
+"Kangxi Radicals":"2F00,2FDF",
+"Kannada":"0C80,0CFF",
+"Katakana Phonetic Extensions":"31F0,31FF",
+"Katakana":"30A0,30FF",
+"Kharoshthi":"10A00,10A5F",
+"Khmer Symbols":"19E0,19FF",
+"Khmer":"1780,17FF",
+"Lao":"0E80,0EFF",
+"Latin Extended Additional":"1E00,1EFF",
+"Latin Extended-A":"0100,017F",
+"Latin Extended-B":"0180,024F",
+"Latin-1 Supplement":"0080,00FF",
+"Letterlike Symbols":"2100,214F",
+"Limbu":"1900,194F",
+"Linear B Ideograms":"10080,100FF",
+"Linear B Syllabary":"10000,1007F",
+"Low Surrogates":"DC00,DFFF",
+"Malayalam":"0D00,0D7F",
+"Mathematical Alphanumeric Symbols":"1D400,1D7FF",
+"Mathematical Operators":"2200,22FF",
+"Miscellaneous Mathematical Symbols-A":"27C0,27EF",
+"Miscellaneous Mathematical Symbols-B":"2980,29FF",
+"Miscellaneous Symbols and Arrows":"2B00,2BFF",
+"Miscellaneous Symbols":"2600,26FF",
+"Miscellaneous Technical":"2300,23FF",
+"Modifier Tone Letters":"A700,A71F",
+"Mongolian":"1800,18AF",
+"Musical Symbols":"1D100,1D1FF",
+"Myanmar":"1000,109F",
+"New Tai Lue":"1980,19DF",
+"Number Forms":"2150,218F",
+"Ogham":"1680,169F",
+"Old Italic":"10300,1032F",
+"Old Persian":"103A0,103DF",
+"Optical Character Recognition":"2440,245F",
+"Oriya":"0B00,0B7F",
+"Osmanya":"10480,104AF",
+"Phonetic Extensions Supplement":"1D80,1DBF",
+"Phonetic Extensions":"1D00,1D7F",
+"Private Use Area":"E000,F8FF",
+"Runic":"16A0,16FF",
+"Shavian":"10450,1047F",
+"Sinhala":"0D80,0DFF",
+"Small Form Variants":"FE50,FE6F",
+"Spacing Modifier Letters":"02B0,02FF",
+"Specials":"FFF0,FFFF",
+"Superscripts and Subscripts":"2070,209F",
+"Supplemental Arrows-A":"27F0,27FF",
+"Supplemental Arrows-B":"2900,297F",
+"Supplemental Mathematical Operators":"2A00,2AFF",
+"Supplemental Punctuation":"2E00,2E7F",
+"Syloti Nagri":"A800,A82F",
+"Syriac":"0700,074F",
+"Tagalog":"1700,171F",
+"Tagbanwa":"1760,177F",
+"Tags":"E0000,E007F",
+"Tai Le":"1950,197F",
+"Tai Xuan Jing Symbols":"1D300,1D35F",
+"Tamil":"0B80,0BFF",
+"Telugu":"0C00,0C7F",
+"Thaana":"0780,07BF",
+"Thai":"0E00,0E7F",
+"Tibetan":"0F00,0FFF",
+"Tifinagh":"2D30,2D7F",
+"Ugaritic":"10380,1039F",
+"Unified Canadian Aboriginal Syllabics":"1400,167F",
+"Variation Selectors Supplement":"E0100,E01EF",
+"Variation Selectors":"FE00,FE0F",
+"Vertical Forms":"FE10,FE1F",
+"Yi Radicals":"A490,A4CF",
+"Yi Syllables":"A000,A48F",
+"Yijing Hexagram Symbols":"4DC0,4DFF"
+};
+
+var insert="charmap_insert";
+
+function map_load(){
+ editArea=opener.editArea;
+ // translate the document
+ insert= editArea.get_translation(insert, "word");
+ //alert(document.title);
+ document.title= editArea.get_translation(document.title, "template");
+ document.body.innerHTML= editArea.get_translation(document.body.innerHTML, "template");
+ //document.title= editArea.get_translation(document.getElementBytitle, "template");
+
+ var selected_lang=opener.EditArea_charmap.default_language.toLowerCase();
+ var selected=0;
+
+ var select= document.getElementById("select_range")
+ for(var i in char_range_list){
+ if(i.toLowerCase()==selected_lang)
+ selected=select.options.length;
+ select.options[select.options.length]=new Option(i, char_range_list[i]);
+ }
+ select.options[selected].selected=true;
+/* start=0;
+ end=127;
+ content="";
+ for(var i=start; i"+ String.fromCharCode(i) +"";
+ }
+ document.getElementById("char_list").innerHTML= html;
+ document.getElementById("preview_char").innerHTML="";
+}
+
+function previewChar(i){
+ document.getElementById("preview_char").innerHTML= String.fromCharCode(i);
+ document.getElementById("preview_code").innerHTML= "&#"+ i +";";
+}
+
+function insertChar(i){
+ opener.parent.editAreaLoader.setSelectedText(editArea.id, String.fromCharCode( i));
+ range= opener.parent.editAreaLoader.getSelectionRange(editArea.id);
+ opener.parent.editAreaLoader.setSelectionRange(editArea.id, range["end"], range["end"]);
+ window.focus();
+}
diff --git a/public/js/plugins/charmap/langs/bg.js b/public/js/plugins/charmap/langs/bg.js
new file mode 100755
index 0000000..eaba0f9
--- /dev/null
+++ b/public/js/plugins/charmap/langs/bg.js
@@ -0,0 +1,12 @@
+/*
+ * Bulgarian translation
+ * Author: Valentin Hristov
+ * Company: SOFTKIT Bulgarian
+ * Site: http://www.softkit-bg.com
+ */
+editArea.add_lang("bg",{
+charmap_but: "Виртуална клавиатура",
+charmap_title: "Виртуална клавиатура",
+charmap_choose_block: "избери езиков блок",
+charmap_insert:"постави този символ"
+});
diff --git a/public/js/plugins/charmap/langs/cs.js b/public/js/plugins/charmap/langs/cs.js
new file mode 100755
index 0000000..6b1c907
--- /dev/null
+++ b/public/js/plugins/charmap/langs/cs.js
@@ -0,0 +1,6 @@
+editArea.add_lang("cs",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/de.js b/public/js/plugins/charmap/langs/de.js
new file mode 100755
index 0000000..6dfe69c
--- /dev/null
+++ b/public/js/plugins/charmap/langs/de.js
@@ -0,0 +1,6 @@
+editArea.add_lang("de",{
+charmap_but: "Sonderzeichen",
+charmap_title: "Sonderzeichen",
+charmap_choose_block: "Bereich auswählen",
+charmap_insert: "dieses Zeichen einfügen"
+});
diff --git a/public/js/plugins/charmap/langs/dk.js b/public/js/plugins/charmap/langs/dk.js
new file mode 100755
index 0000000..ebcde25
--- /dev/null
+++ b/public/js/plugins/charmap/langs/dk.js
@@ -0,0 +1,6 @@
+editArea.add_lang("dk",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/en.js b/public/js/plugins/charmap/langs/en.js
new file mode 100755
index 0000000..335ec28
--- /dev/null
+++ b/public/js/plugins/charmap/langs/en.js
@@ -0,0 +1,6 @@
+editArea.add_lang("en",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/eo.js b/public/js/plugins/charmap/langs/eo.js
new file mode 100755
index 0000000..9a30841
--- /dev/null
+++ b/public/js/plugins/charmap/langs/eo.js
@@ -0,0 +1,6 @@
+editArea.add_lang("eo",{
+charmap_but: "Ekranklavaro",
+charmap_title: "Ekranklavaro",
+charmap_choose_block: "Elekto de lingvo",
+charmap_insert:"enmeti tiun signaron"
+});
diff --git a/public/js/plugins/charmap/langs/es.js b/public/js/plugins/charmap/langs/es.js
new file mode 100755
index 0000000..be04b4b
--- /dev/null
+++ b/public/js/plugins/charmap/langs/es.js
@@ -0,0 +1,6 @@
+editArea.add_lang("es",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/fr.js b/public/js/plugins/charmap/langs/fr.js
new file mode 100755
index 0000000..8131e30
--- /dev/null
+++ b/public/js/plugins/charmap/langs/fr.js
@@ -0,0 +1,6 @@
+editArea.add_lang("fr",{
+charmap_but: "Clavier visuel",
+charmap_title: "Clavier visuel",
+charmap_choose_block: "choix du language",
+charmap_insert:"insérer ce caractère"
+});
diff --git a/public/js/plugins/charmap/langs/hr.js b/public/js/plugins/charmap/langs/hr.js
new file mode 100755
index 0000000..4d74354
--- /dev/null
+++ b/public/js/plugins/charmap/langs/hr.js
@@ -0,0 +1,6 @@
+editArea.add_lang("hr",{
+charmap_but: "Virtualna tipkovnica",
+charmap_title: "Virtualna tipkovnica",
+charmap_choose_block: "Odaberi blok s jezikom",
+charmap_insert:"Ubaci taj znak"
+});
diff --git a/public/js/plugins/charmap/langs/it.js b/public/js/plugins/charmap/langs/it.js
new file mode 100755
index 0000000..b05abb9
--- /dev/null
+++ b/public/js/plugins/charmap/langs/it.js
@@ -0,0 +1,6 @@
+editArea.add_lang("it",{
+charmap_but: "Tastiera visuale",
+charmap_title: "Tastiera visuale",
+charmap_choose_block: "seleziona blocco",
+charmap_insert:"inserisci questo carattere"
+});
diff --git a/public/js/plugins/charmap/langs/ja.js b/public/js/plugins/charmap/langs/ja.js
new file mode 100755
index 0000000..efe060e
--- /dev/null
+++ b/public/js/plugins/charmap/langs/ja.js
@@ -0,0 +1,6 @@
+editArea.add_lang("ja",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/mk.js b/public/js/plugins/charmap/langs/mk.js
new file mode 100755
index 0000000..f533116
--- /dev/null
+++ b/public/js/plugins/charmap/langs/mk.js
@@ -0,0 +1,6 @@
+editArea.add_lang("mkn",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/nl.js b/public/js/plugins/charmap/langs/nl.js
new file mode 100755
index 0000000..70d7968
--- /dev/null
+++ b/public/js/plugins/charmap/langs/nl.js
@@ -0,0 +1,6 @@
+editArea.add_lang("nl",{
+charmap_but: "Visueel toetsenbord",
+charmap_title: "Visueel toetsenbord",
+charmap_choose_block: "Kies een taal blok",
+charmap_insert:"Voeg dit symbool in"
+});
diff --git a/public/js/plugins/charmap/langs/pl.js b/public/js/plugins/charmap/langs/pl.js
new file mode 100755
index 0000000..9feabbb
--- /dev/null
+++ b/public/js/plugins/charmap/langs/pl.js
@@ -0,0 +1,6 @@
+editArea.add_lang("pl",{
+charmap_but: "Klawiatura ekranowa",
+charmap_title: "Klawiatura ekranowa",
+charmap_choose_block: "wybierz grupę znaków",
+charmap_insert:"wstaw ten znak"
+});
diff --git a/public/js/plugins/charmap/langs/pt.js b/public/js/plugins/charmap/langs/pt.js
new file mode 100755
index 0000000..5d3eaa3
--- /dev/null
+++ b/public/js/plugins/charmap/langs/pt.js
@@ -0,0 +1,6 @@
+editArea.add_lang("pt",{
+charmap_but: "Visual keyboard",
+charmap_title: "Visual keyboard",
+charmap_choose_block: "select language block",
+charmap_insert:"insert this character"
+});
diff --git a/public/js/plugins/charmap/langs/ru.js b/public/js/plugins/charmap/langs/ru.js
new file mode 100755
index 0000000..3163f36
--- /dev/null
+++ b/public/js/plugins/charmap/langs/ru.js
@@ -0,0 +1,6 @@
+editArea.add_lang("ru",{
+charmap_but: "Визуальная клавиатура",
+charmap_title: "Визуальная клавиатура",
+charmap_choose_block: "выбрать языковой блок",
+charmap_insert:"вставить этот символ"
+});
diff --git a/public/js/plugins/charmap/langs/sk.js b/public/js/plugins/charmap/langs/sk.js
new file mode 100755
index 0000000..8513641
--- /dev/null
+++ b/public/js/plugins/charmap/langs/sk.js
@@ -0,0 +1,6 @@
+editArea.add_lang("sk",{
+charmap_but: "Vizuálna klávesnica",
+charmap_title: "Vizuálna klávesnica",
+charmap_choose_block: "vyber jazykový blok",
+charmap_insert: "vlož tento znak"
+});
diff --git a/public/js/plugins/charmap/langs/zh.js b/public/js/plugins/charmap/langs/zh.js
new file mode 100755
index 0000000..2a20233
--- /dev/null
+++ b/public/js/plugins/charmap/langs/zh.js
@@ -0,0 +1,6 @@
+editArea.add_lang("zh",{
+charmap_but: "软键盘",
+charmap_title: "软键盘",
+charmap_choose_block: "选择一个语言块",
+charmap_insert:"插入此字符"
+});
diff --git a/public/js/plugins/charmap/popup.html b/public/js/plugins/charmap/popup.html
new file mode 100755
index 0000000..4b549db
--- /dev/null
+++ b/public/js/plugins/charmap/popup.html
@@ -0,0 +1,24 @@
+
+
+
+
+{$charmap_title}
+
+
+
+
+
+
+
+{$charmap_title}:
+
+
+
+
+
+
+
+
+
diff --git a/public/js/plugins/test/css/test.css b/public/js/plugins/test/css/test.css
new file mode 100755
index 0000000..01245eb
--- /dev/null
+++ b/public/js/plugins/test/css/test.css
@@ -0,0 +1,3 @@
+select#test_select{
+ background-color: #FF0000;
+}
diff --git a/public/js/plugins/test/images/Thumbs.db b/public/js/plugins/test/images/Thumbs.db
new file mode 100755
index 0000000..863ae41
Binary files /dev/null and b/public/js/plugins/test/images/Thumbs.db differ
diff --git a/public/js/plugins/test/images/test.gif b/public/js/plugins/test/images/test.gif
new file mode 100755
index 0000000..1ab5da4
Binary files /dev/null and b/public/js/plugins/test/images/test.gif differ
diff --git a/public/js/plugins/test/langs/bg.js b/public/js/plugins/test/langs/bg.js
new file mode 100755
index 0000000..56e049e
--- /dev/null
+++ b/public/js/plugins/test/langs/bg.js
@@ -0,0 +1,10 @@
+/*
+ * Bulgarian translation
+ * Author: Valentin Hristov
+ * Company: SOFTKIT Bulgarian
+ * Site: http://www.softkit-bg.com
+ */
+editArea.add_lang("bg",{
+test_select: "избери таг",
+test_but: "тествай копието"
+});
diff --git a/public/js/plugins/test/langs/cs.js b/public/js/plugins/test/langs/cs.js
new file mode 100755
index 0000000..026ef04
--- /dev/null
+++ b/public/js/plugins/test/langs/cs.js
@@ -0,0 +1,4 @@
+editArea.add_lang("cs",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/de.js b/public/js/plugins/test/langs/de.js
new file mode 100755
index 0000000..bd0857c
--- /dev/null
+++ b/public/js/plugins/test/langs/de.js
@@ -0,0 +1,4 @@
+editArea.add_lang("de",{
+test_select: "Tag auswählen",
+test_but: "Test Button"
+});
diff --git a/public/js/plugins/test/langs/dk.js b/public/js/plugins/test/langs/dk.js
new file mode 100755
index 0000000..e765cf9
--- /dev/null
+++ b/public/js/plugins/test/langs/dk.js
@@ -0,0 +1,4 @@
+editArea.add_lang("dk",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/en.js b/public/js/plugins/test/langs/en.js
new file mode 100755
index 0000000..7d5d157
--- /dev/null
+++ b/public/js/plugins/test/langs/en.js
@@ -0,0 +1,4 @@
+editArea.add_lang("en",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/eo.js b/public/js/plugins/test/langs/eo.js
new file mode 100755
index 0000000..8b4914f
--- /dev/null
+++ b/public/js/plugins/test/langs/eo.js
@@ -0,0 +1,4 @@
+editArea.add_lang("eo",{
+test_select:"elekto de marko",
+test_but: "provo-butono"
+});
diff --git a/public/js/plugins/test/langs/es.js b/public/js/plugins/test/langs/es.js
new file mode 100755
index 0000000..73e30f1
--- /dev/null
+++ b/public/js/plugins/test/langs/es.js
@@ -0,0 +1,4 @@
+editArea.add_lang("es",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/fr.js b/public/js/plugins/test/langs/fr.js
new file mode 100755
index 0000000..ea08a93
--- /dev/null
+++ b/public/js/plugins/test/langs/fr.js
@@ -0,0 +1,4 @@
+editArea.add_lang("fr",{
+test_select:"choix balise",
+test_but: "bouton de test"
+});
diff --git a/public/js/plugins/test/langs/hr.js b/public/js/plugins/test/langs/hr.js
new file mode 100755
index 0000000..fbffd98
--- /dev/null
+++ b/public/js/plugins/test/langs/hr.js
@@ -0,0 +1,4 @@
+editArea.add_lang("hr",{
+test_select: "Odaberi tag",
+test_but: "Probna tipka"
+});
diff --git a/public/js/plugins/test/langs/it.js b/public/js/plugins/test/langs/it.js
new file mode 100755
index 0000000..90926fe
--- /dev/null
+++ b/public/js/plugins/test/langs/it.js
@@ -0,0 +1,4 @@
+editArea.add_lang("it",{
+test_select: "seleziona tag",
+test_but: "pulsante di test"
+});
diff --git a/public/js/plugins/test/langs/ja.js b/public/js/plugins/test/langs/ja.js
new file mode 100755
index 0000000..2eb856c
--- /dev/null
+++ b/public/js/plugins/test/langs/ja.js
@@ -0,0 +1,4 @@
+editArea.add_lang("ja",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/mk.js b/public/js/plugins/test/langs/mk.js
new file mode 100755
index 0000000..058ad4b
--- /dev/null
+++ b/public/js/plugins/test/langs/mk.js
@@ -0,0 +1,4 @@
+editArea.add_lang("mk",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/nl.js b/public/js/plugins/test/langs/nl.js
new file mode 100755
index 0000000..3217c35
--- /dev/null
+++ b/public/js/plugins/test/langs/nl.js
@@ -0,0 +1,4 @@
+editArea.add_lang("nl",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/pl.js b/public/js/plugins/test/langs/pl.js
new file mode 100755
index 0000000..5c73732
--- /dev/null
+++ b/public/js/plugins/test/langs/pl.js
@@ -0,0 +1,4 @@
+editArea.add_lang("pl",{
+test_select: "wybierz tag",
+test_but: "test"
+});
diff --git a/public/js/plugins/test/langs/pt.js b/public/js/plugins/test/langs/pt.js
new file mode 100755
index 0000000..7f85172
--- /dev/null
+++ b/public/js/plugins/test/langs/pt.js
@@ -0,0 +1,4 @@
+editArea.add_lang("pt",{
+test_select: "select tag",
+test_but: "test button"
+});
diff --git a/public/js/plugins/test/langs/ru.js b/public/js/plugins/test/langs/ru.js
new file mode 100755
index 0000000..0aaf542
--- /dev/null
+++ b/public/js/plugins/test/langs/ru.js
@@ -0,0 +1,4 @@
+editArea.add_lang("ru",{
+test_select: "выбрать тэг",
+test_but: "тестировать кнопку"
+});
diff --git a/public/js/plugins/test/langs/sk.js b/public/js/plugins/test/langs/sk.js
new file mode 100755
index 0000000..fe0a727
--- /dev/null
+++ b/public/js/plugins/test/langs/sk.js
@@ -0,0 +1,4 @@
+editArea.add_lang("sk",{
+test_select: "vyber tag",
+test_but: "testovacie tlačidlo"
+});
diff --git a/public/js/plugins/test/langs/zh.js b/public/js/plugins/test/langs/zh.js
new file mode 100755
index 0000000..798d175
--- /dev/null
+++ b/public/js/plugins/test/langs/zh.js
@@ -0,0 +1,4 @@
+editArea.add_lang("zh",{
+test_select: "选择标签",
+test_but: "测试按钮"
+});
diff --git a/public/js/plugins/test/test.js b/public/js/plugins/test/test.js
new file mode 100755
index 0000000..46e71ef
--- /dev/null
+++ b/public/js/plugins/test/test.js
@@ -0,0 +1,110 @@
+/**
+ * Plugin designed for test prupose. It add a button (that manage an alert) and a select (that allow to insert tags) in the toolbar.
+ * This plugin also disable the "f" key in the editarea, and load a CSS and a JS file
+ */
+var EditArea_test= {
+ /**
+ * Get called once this file is loaded (editArea still not initialized)
+ *
+ * @return nothing
+ */
+ init: function(){
+ // alert("test init: "+ this._someInternalFunction(2, 3));
+ editArea.load_css(this.baseURL+"css/test.css");
+ editArea.load_script(this.baseURL+"test2.js");
+ }
+ /**
+ * Returns the HTML code for a specific control string or false if this plugin doesn't have that control.
+ * A control can be a button, select list or any other HTML item to present in the EditArea user interface.
+ * Language variables such as {$lang_somekey} will also be replaced with contents from
+ * the language packs.
+ *
+ * @param {string} ctrl_name: the name of the control to add
+ * @return HTML code for a specific control or false.
+ * @type string or boolean
+ */
+ ,get_control_html: function(ctrl_name){
+ switch(ctrl_name){
+ case "test_but":
+ // Control id, button img, command
+ return parent.editAreaLoader.get_button_html('test_but', 'test.gif', 'test_cmd', false, this.baseURL);
+ case "test_select":
+ html= "";
+ return html;
+ }
+ return false;
+ }
+ /**
+ * Get called once EditArea is fully loaded and initialised
+ *
+ * @return nothing
+ */
+ ,onload: function(){
+ alert("test load");
+ }
+
+ /**
+ * Is called each time the user touch a keyboard key.
+ *
+ * @param (event) e: the keydown event
+ * @return true - pass to next handler in chain, false - stop chain execution
+ * @type boolean
+ */
+ ,onkeydown: function(e){
+ var str= String.fromCharCode(e.keyCode);
+ // desactivate the "f" character
+ if(str.toLowerCase()=="f"){
+ return true;
+ }
+ return false;
+ }
+
+ /**
+ * Executes a specific command, this function handles plugin commands.
+ *
+ * @param {string} cmd: the name of the command being executed
+ * @param {unknown} param: the parameter of the command
+ * @return true - pass to next handler in chain, false - stop chain execution
+ * @type boolean
+ */
+ ,execCommand: function(cmd, param){
+ // Handle commands
+ switch(cmd){
+ case "test_select_change":
+ var val= document.getElementById("test_select").value;
+ if(val!=-1)
+ parent.editAreaLoader.insertTags(editArea.id, "<"+val+">", ""+val+">");
+ document.getElementById("test_select").options[0].selected=true;
+ return false;
+ case "test_cmd":
+ alert("user clicked on test_cmd");
+ return false;
+ }
+ // Pass to next handler in chain
+ return true;
+ }
+
+ /**
+ * This is just an internal plugin method, prefix all internal methods with a _ character.
+ * The prefix is needed so they doesn't collide with future EditArea callback functions.
+ *
+ * @param {string} a Some arg1.
+ * @param {string} b Some arg2.
+ * @return Some return.
+ * @type unknown
+ */
+ ,_someInternalFunction : function(a, b) {
+ return a+b;
+ }
+};
+
+// Adds the plugin class to the list of available EditArea plugins
+editArea.add_plugin("test", EditArea_test);
diff --git a/public/js/plugins/test/test2.js b/public/js/plugins/test/test2.js
new file mode 100755
index 0000000..9a1ce51
--- /dev/null
+++ b/public/js/plugins/test/test2.js
@@ -0,0 +1 @@
+alert("test2.js is loaded from test plugin");
diff --git a/public/js/reg_syntax/bash.js b/public/js/reg_syntax/bash.js
new file mode 100755
index 0000000..2c54eb8
--- /dev/null
+++ b/public/js/reg_syntax/bash.js
@@ -0,0 +1,66 @@
+/**
+ * Bash syntax v 1.0
+ *
+**/
+editAreaLoader.load_syntax["bash"] = {
+ 'DISPLAY_NAME': 'Bash'
+ , 'COMMENT_SINGLE': { 1: '#' }
+ , 'COMMENT_MULTI': {}
+ , 'QUOTEMARKS': { 1: "'", 2: '"' }
+ , 'KEYWORD_CASE_SENSITIVE': true
+ , 'KEYWORDS': {
+ 'reserved': [
+ 'case', 'easc', 'if', 'fi', 'function', 'else', 'elif', 'for', 'while', 'until', 'let',
+ 'expr', 'echo', 'export', 'true', 'false', 'done', 'declare',
+ '-a', '-i', '-l', '-u', '-r', 'exit', 'read', 'printf',
+ 'return', 'grep', 'ps', 'do', 'kill', 'cat', 'cut', 'tr'
+ ]
+ }
+ , 'OPERATORS': [
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ','
+ ]
+ , 'DELIMITERS': [
+ '(', ')', '[', ']', '{', '}'
+ ]
+ , 'REGEXPS': {
+ 'constants': {
+ 'search': '()([A-Z]\\w*)()'
+ , 'class': 'constants'
+ , 'modifiers': 'g'
+ , 'execute': 'before'
+ }
+ , 'variables': {
+ 'search': '()([\$\@\%]+\\w+)()'
+ , 'class': 'variables'
+ , 'modifiers': 'g'
+ , 'execute': 'before'
+ }
+ , 'numbers': {
+ 'search': '()(-?[0-9]+)()'
+ , 'class': 'numbers'
+ , 'modifiers': 'g'
+ , 'execute': 'before'
+ }
+ , 'symbols': {
+ 'search': '()(:\\w+)()'
+ , 'class': 'symbols'
+ , 'modifiers': 'g'
+ , 'execute': 'before'
+ }
+ }
+ , 'STYLES': {
+ 'COMMENTS': 'color: #AAAAAA;'
+ , 'QUOTESMARKS': 'color: #660066;'
+ , 'KEYWORDS': {
+ 'reserved': 'font-weight: bold; color: #0000FF;'
+ }
+ , 'OPERATORS': 'color: #993300;'
+ , 'DELIMITERS': 'color: #993300;'
+ , 'REGEXPS': {
+ 'variables': 'color: #E0BD54;'
+ , 'numbers': 'color: green;'
+ , 'constants': 'color: #00AA00;'
+ , 'symbols': 'color: #879EFA;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/basic.js b/public/js/reg_syntax/basic.js
new file mode 100755
index 0000000..d8082f7
--- /dev/null
+++ b/public/js/reg_syntax/basic.js
@@ -0,0 +1,70 @@
+editAreaLoader.load_syntax["basic"] = {
+ 'DISPLAY_NAME' : 'Basic'
+ ,'COMMENT_SINGLE' : {1 : "'", 2 : 'rem'}
+ ,'COMMENT_MULTI' : { }
+ ,'QUOTEMARKS' : {1: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements' : [
+ 'if','then','for','wend','while',
+ 'else','elseif','select','case','end select',
+ 'until','next','step','to','end if', 'call'
+ ]
+ ,'keywords' : [
+ 'sub', 'end sub', 'function', 'end function', 'exit',
+ 'exit function', 'dim', 'redim', 'shared', 'const',
+ 'is', 'absolute', 'access', 'any', 'append', 'as',
+ 'base', 'beep', 'binary', 'bload', 'bsave', 'chain',
+ 'chdir', 'circle', 'clear', 'close', 'cls', 'color',
+ 'com', 'common', 'data', 'date', 'declare', 'def',
+ 'defdbl', 'defint', 'deflng', 'defsng', 'defstr',
+ 'double', 'draw', 'environ', 'erase', 'error', 'field',
+ 'files', 'fn', 'get', 'gosub', 'goto', 'integer', 'key',
+ 'kill', 'let', 'line', 'list', 'locate', 'lock', 'long',
+ 'lprint', 'lset', 'mkdir', 'name', 'off', 'on', 'open',
+ 'option', 'out', 'output', 'paint', 'palette', 'pcopy',
+ 'poke', 'preset', 'print', 'pset', 'put', 'random',
+ 'randomize', 'read', 'reset', 'restore', 'resume',
+ 'return', 'rmdir', 'rset', 'run', 'screen', 'seg',
+ 'shell', 'single', 'sleep', 'sound', 'static', 'stop',
+ 'strig', 'string', 'swap', 'system', 'time', 'timer',
+ 'troff', 'tron', 'type', 'unlock', 'using', 'view',
+ 'wait', 'width', 'window', 'write'
+ ]
+ ,'functions' : [
+ 'abs', 'asc', 'atn', 'cdbl', 'chr', 'cint', 'clng',
+ 'cos', 'csng', 'csrlin', 'cvd', 'cvdmbf', 'cvi', 'cvl',
+ 'cvs', 'cvsmbf', 'eof', 'erdev', 'erl', 'err', 'exp',
+ 'fileattr', 'fix', 'fre', 'freefile', 'hex', 'inkey',
+ 'inp', 'input', 'instr', 'int', 'ioctl', 'lbound',
+ 'lcase', 'left', 'len', 'loc', 'lof', 'log', 'lpos',
+ 'ltrim', 'mid', 'mkd', 'mkdmbf', 'mki', 'mkl', 'mks',
+ 'mksmbf', 'oct', 'peek', 'pen', 'play', 'pmap', 'point',
+ 'pos', 'right', 'rnd', 'rtrim', 'seek', 'sgn', 'sin',
+ 'space', 'spc', 'sqr', 'stick', 'str', 'tab', 'tan',
+ 'ubound', 'ucase', 'val', 'varptr', 'varseg'
+ ]
+ ,'operators' : [
+ 'and', 'eqv', 'imp', 'mod', 'not', 'or', 'xor'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '!', '&'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #99CC00;'
+ ,'QUOTESMARKS': 'color: #333399;'
+ ,'KEYWORDS' : {
+ 'keywords' : 'color: #3366FF;'
+ ,'functions' : 'color: #0000FF;'
+ ,'statements' : 'color: #3366FF;'
+ ,'operators' : 'color: #FF0000;'
+ }
+ ,'OPERATORS' : 'color: #FF0000;'
+ ,'DELIMITERS' : 'color: #0000FF;'
+
+ }
+};
diff --git a/public/js/reg_syntax/brainfuck.js b/public/js/reg_syntax/brainfuck.js
new file mode 100755
index 0000000..6f8f063
--- /dev/null
+++ b/public/js/reg_syntax/brainfuck.js
@@ -0,0 +1,45 @@
+editAreaLoader.load_syntax["brainfuck"] = {
+ 'DISPLAY_NAME' : 'Brainfuck'
+ ,'COMMENT_SINGLE' : {}
+ ,'COMMENT_MULTI' : {}
+ ,'QUOTEMARKS' : {}
+ ,'KEYWORD_CASE_SENSITIVE' : true
+ ,'OPERATORS' :[
+ '+', '-'
+ ]
+ ,'DELIMITERS' :[
+ '[', ']'
+ ]
+ ,'REGEXPS' : {
+ 'bfispis' : {
+ 'search' : '()(\\.)()'
+ ,'class' : 'bfispis'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ ,'bfupis' : {
+ 'search' : '()(\\,)()'
+ ,'class' : 'bfupis'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ ,'bfmemory' : {
+ 'search' : '()([<>])()'
+ ,'class' : 'bfmemory'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'OPERATORS' : 'color: #88AA00;'
+ ,'DELIMITERS' : 'color: #00C138;'
+ ,'REGEXPS' : {
+ 'bfispis' : 'color: #EE0000;'
+ ,'bfupis' : 'color: #4455ee;'
+ ,'bfmemory' : 'color: #DD00DD;'
+ }
+ }
+};
+
diff --git a/public/js/reg_syntax/c.js b/public/js/reg_syntax/c.js
new file mode 100755
index 0000000..0e0f843
--- /dev/null
+++ b/public/js/reg_syntax/c.js
@@ -0,0 +1,63 @@
+editAreaLoader.load_syntax["c"] = {
+ 'DISPLAY_NAME' : 'C'
+ ,'COMMENT_SINGLE' : {1 : '//'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : true
+ ,'KEYWORDS' : {
+ 'constants' : [
+ 'NULL', 'false', 'stdin', 'stdout', 'stderr', 'true'
+ ]
+ ,'types' : [
+ 'FILE', 'auto', 'char', 'const', 'double',
+ 'extern', 'float', 'inline', 'int', 'long', 'register',
+ 'short', 'signed', 'size_t', 'static', 'struct',
+ 'time_t', 'typedef', 'union', 'unsigned', 'void',
+ 'volatile'
+ ]
+ ,'statements' : [
+ 'do', 'else', 'enum', 'for', 'goto', 'if', 'sizeof',
+ 'switch', 'while'
+ ]
+ ,'keywords' : [
+ 'break', 'case', 'continue', 'default', 'delete',
+ 'return'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ 'precompiler' : {
+ 'search' : '()(#[^\r\n]*)()'
+ ,'class' : 'precompiler'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+/* ,'precompilerstring' : {
+ 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])'
+ ,'class' : 'precompilerstring'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }*/
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ 'constants' : 'color: #EE0000;'
+ ,'types' : 'color: #0000EE;'
+ ,'statements' : 'color: #60CA00;'
+ ,'keywords' : 'color: #48BDDF;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #0038E1;'
+ ,'REGEXPS' : {
+ 'precompiler' : 'color: #009900;'
+ ,'precompilerstring' : 'color: #994400;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/coldfusion.js b/public/js/reg_syntax/coldfusion.js
new file mode 100755
index 0000000..792f10b
--- /dev/null
+++ b/public/js/reg_syntax/coldfusion.js
@@ -0,0 +1,120 @@
+editAreaLoader.load_syntax["coldfusion"] = {
+ 'DISPLAY_NAME' : 'Coldfusion'
+ ,'COMMENT_SINGLE' : {1 : '//', 2 : '#'}
+ ,'COMMENT_MULTI' : {''}
+ ,'COMMENT_MULTI2' : {''}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements' : [
+ 'include', 'require', 'include_once', 'require_once',
+ 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
+ 'endif', 'switch', 'case', 'endswitch',
+ 'return', 'break', 'continue'
+ ]
+ ,'reserved' : [
+ 'AND', 'break', 'case', 'CONTAIN', 'CONTAINS', 'continue', 'default', 'do',
+ 'DOES', 'else', 'EQ', 'EQUAL', 'EQUALTO', 'EQV', 'FALSE', 'for', 'GE',
+ 'GREATER', 'GT', 'GTE', 'if', 'IMP', 'in', 'IS', 'LE', 'LESS', 'LT', 'LTE',
+ 'MOD', 'NEQ', 'NOT', 'OR', 'return', 'switch', 'THAN', 'TO', 'TRUE', 'var',
+ 'while', 'XOR'
+ ]
+ ,'functions' : [
+ 'Abs', 'ACos', 'ArrayAppend', 'ArrayAvg', 'ArrayClear', 'ArrayDeleteAt', 'ArrayInsertAt',
+ 'ArrayIsEmpty', 'ArrayLen', 'ArrayMax', 'ArrayMin', 'ArrayNew', 'ArrayPrepend', 'ArrayResize',
+ 'ArraySet', 'ArraySort', 'ArraySum', 'ArraySwap', 'ArrayToList', 'Asc', 'ASin', 'Atn', 'AuthenticatedContext',
+ 'AuthenticatedUser', 'BitAnd', 'BitMaskClear', 'BitMaskRead', 'BitMaskSet', 'BitNot', 'BitOr',
+ 'BitSHLN', 'BitSHRN', 'BitXor', 'Ceiling', 'Chr', 'CJustify', 'Compare', 'CompareNoCase', 'Cos',
+ 'CreateDate', 'CreateDateTime', 'CreateODBCDate', 'CreateODBCDateTime', 'CreateODBCTime',
+ 'CreateTime', 'CreateTimeSpan', 'DateAdd', 'DateCompare', 'DateConvert', 'DateDiff',
+ 'DateFormat', 'DatePart', 'Day', 'DayOfWeek', 'DayOfWeekAsString', 'DayOfYear', 'DaysInMonth',
+ 'DaysInYear', 'DE', 'DecimalFormat', 'DecrementValue', 'Decrypt', 'DeleteClientVariable',
+ 'DirectoryExists', 'DollarFormat', 'Duplicate', 'Encrypt', 'Evaluate', 'Exp', 'ExpandPath',
+ 'FileExists', 'Find', 'FindNoCase', 'FindOneOf', 'FirstDayOfMonth', 'Fix', 'FormatBaseN',
+ 'GetBaseTagData', 'GetBaseTagList', 'GetBaseTemplatePath', 'GetClientVariablesList',
+ 'GetCurrentTemplatePath', 'GetDirectoryFromPath', 'GetException', 'GetFileFromPath',
+ 'GetFunctionList', 'GetHttpTimeString', 'GetHttpRequestData', 'GetLocale', 'GetMetricData',
+ 'GetProfileString', 'GetTempDirectory', 'GetTempFile', 'GetTemplatePath', 'GetTickCount',
+ 'GetTimeZoneInfo', 'GetToken', 'Hash', 'Hour', 'HTMLCodeFormat', 'HTMLEditFormat', 'IIf',
+ 'IncrementValue', 'InputBaseN', 'Insert', 'Int', 'IsArray', 'IsAuthenticated', 'IsAuthorized',
+ 'IsBoolean', 'IsBinary', 'IsCustomFunction', 'IsDate', 'IsDebugMode', 'IsDefined', 'IsLeapYear',
+ 'IsNumeric', 'IsNumericDate', 'IsProtected', 'IsQuery', 'IsSimpleValue', 'IsStruct', 'IsWDDX',
+ 'JavaCast', 'JSStringFormat', 'LCase', 'Left', 'Len', 'ListAppend', 'ListChangeDelims',
+ 'ListContains', 'ListContainsNoCase', 'ListDeleteAt', 'ListFind', 'ListFindNoCase', 'ListFirst',
+ 'ListGetAt', 'ListInsertAt', 'ListLast', 'ListLen', 'ListPrepend', 'ListQualify', 'ListRest',
+ 'ListSetAt', 'ListSort', 'ListToArray', 'ListValueCount', 'ListValueCountNoCase', 'LJustify',
+ 'Log', 'Log10', 'LSCurrencyFormat', 'LSDateFormat', 'LSEuroCurrencyFormat', 'LSIsCurrency',
+ 'LSIsDate', 'LSIsNumeric', 'LSNumberFormat', 'LSParseCurrency', 'LSParseDateTime', 'LSParseNumber',
+ 'LSTimeFormat', 'LTrim', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'MonthAsString', 'Now', 'NumberFormat',
+ 'ParagraphFormat', 'ParameterExists', 'ParseDateTime', 'Pi', 'PreserveSingleQuotes', 'Quarter',
+ 'QueryAddRow', 'QueryNew', 'QuerySetCell', 'QuotedValueList', 'Rand', 'Randomize', 'RandRange',
+ 'REFind', 'REFindNoCase', 'RemoveChars', 'RepeatString', 'Replace', 'ReplaceList', 'ReplaceNoCase',
+ 'REReplace', 'REReplaceNoCase', 'Reverse', 'Right', 'RJustify', 'Round', 'RTrim', 'Second', 'SetLocale',
+ 'SetProfileString', 'SetVariable', 'Sgn', 'Sin', 'SpanExcluding', 'SpanIncluding', 'Sqr', 'StripCR',
+ 'StructAppend', 'StructClear', 'StructCopy', 'StructCount', 'StructDelete', 'StructFind', 'StructFindKey',
+ 'StructFindValue', 'StructGet', 'StructInsert', 'StructIsEmpty', 'StructKeyArray', 'StructKeyExists',
+ 'StructKeyList', 'StructNew', 'StructSort', 'StructUpdate', 'Tan', 'TimeFormat', 'ToBase64', 'ToBinary',
+ 'ToString', 'Trim', 'UCase', 'URLDecode', 'URLEncodedFormat', 'Val', 'ValueList', 'Week', 'WriteOutput',
+ 'XMLFormat', 'Year', 'YesNoFormat'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '%', '!', '&&', '||'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ 'doctype' : {
+ 'search' : '()(]*>)()'
+ ,'class' : 'doctype'
+ ,'modifiers' : ''
+ ,'execute' : 'before' // before or after
+ }
+ ,'cftags' : {
+ 'search' : '(<)(/cf[a-z][^ \r\n\t>]*)([^>]*>)'
+ ,'class' : 'cftags'
+ ,'modifiers' : 'gi'
+ ,'execute' : 'before' // before or after
+ }
+ ,'cftags2' : {
+ 'search' : '(<)(cf[a-z][^ \r\n\t>]*)([^>]*>)'
+ ,'class' : 'cftags2'
+ ,'modifiers' : 'gi'
+ ,'execute' : 'before' // before or after
+ }
+ ,'tags' : {
+ 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+ ,'class' : 'tags'
+ ,'modifiers' : 'gi'
+ ,'execute' : 'before' // before or after
+ }
+ ,'attributes' : {
+ 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+ ,'class' : 'attributes'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ 'reserved' : 'color: #48BDDF;'
+ ,'functions' : 'color: #0000FF;'
+ ,'statements' : 'color: #60CA00;'
+ }
+ ,'OPERATORS' : 'color: #E775F0;'
+ ,'DELIMITERS' : ''
+ ,'REGEXPS' : {
+ 'attributes': 'color: #990033;'
+ ,'cftags': 'color: #990033;'
+ ,'cftags2': 'color: #990033;'
+ ,'tags': 'color: #000099;'
+ ,'doctype': 'color: #8DCFB5;'
+ ,'test': 'color: #00FF00;'
+ }
+ }
+};
+
+
diff --git a/public/js/reg_syntax/cpp.js b/public/js/reg_syntax/cpp.js
new file mode 100755
index 0000000..6b176e8
--- /dev/null
+++ b/public/js/reg_syntax/cpp.js
@@ -0,0 +1,66 @@
+editAreaLoader.load_syntax["cpp"] = {
+ 'DISPLAY_NAME' : 'CPP'
+ ,'COMMENT_SINGLE' : {1 : '//'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : true
+ ,'KEYWORDS' : {
+ 'constants' : [
+ 'NULL', 'false', 'std', 'stdin', 'stdout', 'stderr',
+ 'true'
+ ]
+ ,'types' : [
+ 'FILE', 'auto', 'char', 'class', 'const', 'double',
+ 'extern', 'float', 'friend', 'inline', 'int',
+ 'iterator', 'long', 'map', 'operator', 'queue',
+ 'register', 'short', 'signed', 'size_t', 'stack',
+ 'static', 'string', 'struct', 'time_t', 'typedef',
+ 'union', 'unsigned', 'vector', 'void', 'volatile'
+ ]
+ ,'statements' : [
+ 'catch', 'do', 'else', 'enum', 'for', 'goto', 'if',
+ 'sizeof', 'switch', 'this', 'throw', 'try', 'while'
+ ]
+ ,'keywords' : [
+ 'break', 'case', 'continue', 'default', 'delete',
+ 'namespace', 'new', 'private', 'protected', 'public',
+ 'return', 'using'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ 'precompiler' : {
+ 'search' : '()(#[^\r\n]*)()'
+ ,'class' : 'precompiler'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+/* ,'precompilerstring' : {
+ 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])'
+ ,'class' : 'precompilerstring'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }*/
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ 'constants' : 'color: #EE0000;'
+ ,'types' : 'color: #0000EE;'
+ ,'statements' : 'color: #60CA00;'
+ ,'keywords' : 'color: #48BDDF;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #0038E1;'
+ ,'REGEXPS' : {
+ 'precompiler' : 'color: #009900;'
+ ,'precompilerstring' : 'color: #994400;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/css.js b/public/js/reg_syntax/css.js
new file mode 100755
index 0000000..087186b
--- /dev/null
+++ b/public/js/reg_syntax/css.js
@@ -0,0 +1,85 @@
+editAreaLoader.load_syntax["css"] = {
+ 'DISPLAY_NAME' : 'CSS'
+ ,'COMMENT_SINGLE' : {1 : '@'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : ['"', "'"]
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'attributes' : [
+ 'aqua', 'azimuth', 'background-attachment', 'background-color',
+ 'background-image', 'background-position', 'background-repeat',
+ 'background', 'border-bottom-color', 'border-bottom-style',
+ 'border-bottom-width', 'border-left-color', 'border-left-style',
+ 'border-left-width', 'border-right', 'border-right-color',
+ 'border-right-style', 'border-right-width', 'border-top-color',
+ 'border-top-style', 'border-top-width','border-bottom', 'border-collapse',
+ 'border-left', 'border-width', 'border-color', 'border-spacing',
+ 'border-style', 'border-top', 'border', 'caption-side',
+ 'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset',
+ 'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
+ 'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
+ 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
+ 'font-weight', 'font', 'height', 'letter-spacing', 'line-height',
+ 'list-style', 'list-style-image', 'list-style-position', 'list-style-type',
+ 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin',
+ 'marker-offset', 'marks', 'max-height', 'max-width', 'min-height',
+ 'min-width', 'opacity', 'orphans', 'outline', 'outline-color', 'outline-style',
+ 'outline-width', 'overflow', 'padding-bottom', 'padding-left',
+ 'padding-right', 'padding-top', 'padding', 'page', 'page-break-after',
+ 'page-break-before', 'page-break-inside', 'pause-after', 'pause-before',
+ 'pause', 'pitch', 'pitch-range', 'play-during', 'position', 'quotes',
+ 'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation',
+ 'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration',
+ 'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi',
+ 'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows',
+ 'width', 'word-spacing', 'z-index', 'bottom', 'left'
+ ]
+ ,'values' : [
+ 'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid',
+ 'baseline', 'behind', 'below', 'bidi-override', 'black', 'blue', 'blink', 'block', 'bold', 'bolder', 'both',
+ 'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic',
+ 'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive',
+ 'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
+ 'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded',
+ 'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia',
+ 'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher',
+ 'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline',
+ 'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana',
+ 'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low',
+ 'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace',
+ 'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize',
+ 'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline',
+ 'pointer', 'portrait', 'purple', 'px',
+ 'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards',
+ 's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square',
+ 'static', 'status-bar', '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', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent',
+ 'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url',
+ 'visible',
+ 'w-resize', 'wait', 'white', 'wider',
+ 'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small',
+ 'yellow', 'yes'
+ ]
+ ,'specials' : [
+ 'important'
+ ]
+ }
+ ,'OPERATORS' :[
+ ':', ';', '!', '.', '#'
+ ]
+ ,'DELIMITERS' :[
+ '{', '}'
+ ]
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ 'attributes' : 'color: #48BDDF;'
+ ,'values' : 'color: #2B60FF;'
+ ,'specials' : 'color: #FF0000;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #60CA00;'
+
+ }
+};
diff --git a/public/js/reg_syntax/html.js b/public/js/reg_syntax/html.js
new file mode 100755
index 0000000..defab6b
--- /dev/null
+++ b/public/js/reg_syntax/html.js
@@ -0,0 +1,51 @@
+/*
+* last update: 2006-08-24
+*/
+
+editAreaLoader.load_syntax["html"] = {
+ 'DISPLAY_NAME' : 'HTML'
+ ,'COMMENT_SINGLE' : {}
+ ,'COMMENT_MULTI' : {''}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ }
+ ,'OPERATORS' :[
+ ]
+ ,'DELIMITERS' :[
+ ]
+ ,'REGEXPS' : {
+ 'doctype' : {
+ 'search' : '()(]*>)()'
+ ,'class' : 'doctype'
+ ,'modifiers' : ''
+ ,'execute' : 'before' // before or after
+ }
+ ,'tags' : {
+ 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+ ,'class' : 'tags'
+ ,'modifiers' : 'gi'
+ ,'execute' : 'before' // before or after
+ }
+ ,'attributes' : {
+ 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+ ,'class' : 'attributes'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ }
+ ,'OPERATORS' : 'color: #E775F0;'
+ ,'DELIMITERS' : ''
+ ,'REGEXPS' : {
+ 'attributes': 'color: #B1AC41;'
+ ,'tags': 'color: #E62253;'
+ ,'doctype': 'color: #8DCFB5;'
+ ,'test': 'color: #00FF00;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/java.js b/public/js/reg_syntax/java.js
new file mode 100755
index 0000000..2c01928
--- /dev/null
+++ b/public/js/reg_syntax/java.js
@@ -0,0 +1,57 @@
+editAreaLoader.load_syntax["java"] = {
+ 'DISPLAY_NAME' : 'Java'
+ ,'COMMENT_SINGLE': { 1: '//', 2: '@' }
+ , 'COMMENT_MULTI': { '/*': '*/' }
+ , 'QUOTEMARKS': { 1: "'", 2: '"' }
+ , 'KEYWORD_CASE_SENSITIVE': true
+ , 'KEYWORDS': {
+ 'constants': [
+ 'null', 'false', 'true'
+ ]
+ , 'types': [
+ 'String', 'int', 'short', 'long', 'char', 'double', 'byte',
+ 'float', 'static', 'void', 'private', 'boolean', 'protected',
+ 'public', 'const', 'class', 'final', 'abstract', 'volatile',
+ 'enum', 'transient', 'interface'
+ ]
+ , 'statements': [
+ 'this', 'extends', 'if', 'do', 'while', 'try', 'catch', 'finally',
+ 'throw', 'throws', 'else', 'for', 'switch', 'continue', 'implements',
+ 'break', 'case', 'default', 'goto'
+ ]
+ , 'keywords': [
+ 'new', 'return', 'import', 'native', 'super', 'package', 'assert', 'synchronized',
+ 'instanceof', 'strictfp'
+ ]
+ }
+ , 'OPERATORS': [
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&'
+ ]
+ , 'DELIMITERS': [
+ '(', ')', '[', ']', '{', '}'
+ ]
+ , 'REGEXPS': {
+ 'precompiler': {
+ 'search': '()(#[^\r\n]*)()'
+ , 'class': 'precompiler'
+ , 'modifiers': 'g'
+ , 'execute': 'before'
+ }
+ }
+ , 'STYLES': {
+ 'COMMENTS': 'color: #AAAAAA;'
+ , 'QUOTESMARKS': 'color: #6381F8;'
+ , 'KEYWORDS': {
+ 'constants': 'color: #EE0000;'
+ , 'types': 'color: #0000EE;'
+ , 'statements': 'color: #60CA00;'
+ , 'keywords': 'color: #48BDDF;'
+ }
+ , 'OPERATORS': 'color: #FF00FF;'
+ , 'DELIMITERS': 'color: #0038E1;'
+ , 'REGEXPS': {
+ 'precompiler': 'color: #009900;'
+ , 'precompilerstring': 'color: #994400;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/js.js b/public/js/reg_syntax/js.js
new file mode 100755
index 0000000..cf7533a
--- /dev/null
+++ b/public/js/reg_syntax/js.js
@@ -0,0 +1,94 @@
+editAreaLoader.load_syntax["js"] = {
+ 'DISPLAY_NAME' : 'Javascript'
+ ,'COMMENT_SINGLE' : {1 : '//'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements' : [
+ 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
+ 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
+ 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
+ 'while', 'write', 'with'
+ ]
+ ,'keywords' : [
+ 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
+ 'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
+ 'protected', 'public', 'super', 'true', 'use', 'var', 'window', 'document',
+ // the list below must be sorted and checked (if it is a keywords or a function and if it is not present twice
+ 'Link ', 'outerHeight ', 'Anchor', 'FileUpload',
+ 'location', 'outerWidth', 'Select', 'Area', 'find', 'Location', 'Packages', 'self',
+ 'arguments', 'locationbar', 'pageXoffset', 'Form',
+ 'Math', 'pageYoffset', 'setTimeout', 'assign', 'Frame', 'menubar', 'parent', 'status',
+ 'blur', 'frames', 'MimeType', 'parseFloat', 'statusbar', 'Boolean', 'Function', 'moveBy',
+ 'parseInt', 'stop', 'Button', 'getClass', 'moveTo', 'Password', 'String', 'callee', 'Hidden',
+ 'name', 'personalbar', 'Submit', 'caller', 'history', 'NaN', 'Plugin', 'sun', 'captureEvents',
+ 'History', 'navigate', 'print', 'taint', 'Checkbox', 'home', 'navigator', 'prompt', 'Text',
+ 'Image', 'Navigator', 'prototype', 'Textarea', 'clearTimeout', 'Infinity',
+ 'netscape', 'Radio', 'toolbar', 'close', 'innerHeight', 'Number', 'ref', 'top', 'closed',
+ 'innerWidth', 'Object', 'RegExp', 'toString', 'confirm', 'isFinite', 'onBlur', 'releaseEvents',
+ 'unescape', 'constructor', 'isNan', 'onError', 'Reset', 'untaint', 'Date', 'java', 'onFocus',
+ 'resizeBy', 'unwatch', 'defaultStatus', 'JavaArray', 'onLoad', 'resizeTo', 'valueOf', 'document',
+ 'JavaClass', 'onUnload', 'routeEvent', 'watch', 'Document', 'JavaObject', 'open', 'scroll', 'window',
+ 'Element', 'JavaPackage', 'opener', 'scrollbars', 'Window', 'escape', 'length', 'Option', 'scrollBy'
+ ]
+ ,'functions' : [
+ // common functions for Window object
+ 'alert', 'Array', 'back', 'blur', 'clearInterval', 'close', 'confirm', 'eval ', 'focus', 'forward', 'home',
+ 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
+ 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'scrollTo', 'setInterval', 'status',
+ 'stop'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '%', '!'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ 'statements' : 'color: #60CA00;'
+ ,'keywords' : 'color: #48BDDF;'
+ ,'functions' : 'color: #2B60FF;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #0038E1;'
+
+ }
+ ,'AUTO_COMPLETION' : {
+ "default": { // the name of this definition group. It's posisble to have different rules inside the same definition file
+ "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.|
+ ,"possible_words_letters": "[a-zA-Z0-9_]+"
+ ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+ ,"prefix_separator": "\\."
+ }
+ ,"CASE_SENSITIVE": true
+ ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position
+ ,"KEYWORDS": {
+ '': [ // the prefix of thoses items
+ /**
+ * 0 : the keyword the user is typing
+ * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous )
+ * If empty the keyword will be displayed
+ * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed)
+ */
+ ['Array', '§()', '']
+ ,['alert', '§({@})', 'alert(String message)']
+ ,['document']
+ ,['window']
+ ]
+ ,'window' : [
+ ['location']
+ ,['document']
+ ,['scrollTo', 'scrollTo({@})', 'scrollTo(Int x,Int y)']
+ ]
+ ,'location' : [
+ ['href']
+ ]
+ }
+ }
+ }
+};
diff --git a/public/js/reg_syntax/pas.js b/public/js/reg_syntax/pas.js
new file mode 100755
index 0000000..0efaed9
--- /dev/null
+++ b/public/js/reg_syntax/pas.js
@@ -0,0 +1,83 @@
+editAreaLoader.load_syntax["pas"] = {
+ 'DISPLAY_NAME' : 'Pascal'
+ ,'COMMENT_SINGLE' : {}
+ ,'COMMENT_MULTI' : {'{' : '}', '(*':'*)'}
+ ,'QUOTEMARKS' : {1: '"', 2: "'"}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'constants' : [
+ 'Blink', 'Black', 'Blue', 'Green', 'Cyan', 'Red',
+ 'Magenta', 'Brown', 'LightGray', 'DarkGray',
+ 'LightBlue', 'LightGreen', 'LightCyan', 'LightRed',
+ 'LightMagenta', 'Yellow', 'White', 'MaxSIntValue',
+ 'MaxUIntValue', 'maxint', 'maxLongint', 'maxSmallint',
+ 'erroraddr', 'errorcode', 'LineEnding'
+ ]
+ ,'keywords' : [
+ 'in', 'or', 'div', 'mod', 'and', 'shl', 'shr', 'xor',
+ 'pow', 'is', 'not','Absolute', 'And_then', 'Array',
+ 'Begin', 'Bindable', 'Case', 'Const', 'Do', 'Downto',
+ 'Else', 'End', 'Export', 'File', 'For', 'Function',
+ 'Goto', 'If', 'Import', 'Implementation', 'Inherited',
+ 'Inline', 'Interface', 'Label', 'Module', 'Nil',
+ 'Object', 'Of', 'Only', 'Operator', 'Or_else',
+ 'Otherwise', 'Packed', 'Procedure', 'Program',
+ 'Protected', 'Qualified', 'Record', 'Repeat',
+ 'Restricted', 'Set', 'Then', 'To', 'Type', 'Unit',
+ 'Until', 'Uses', 'Value', 'Var', 'Virtual', 'While',
+ 'With'
+ ]
+ ,'functions' : [
+ 'Abs', 'Addr', 'Append', 'Arctan', 'Assert', 'Assign',
+ 'Assigned', 'BinStr', 'Blockread', 'Blockwrite',
+ 'Break', 'Chdir', 'Chr', 'Close', 'CompareByte',
+ 'CompareChar', 'CompareDWord', 'CompareWord', 'Concat',
+ 'Continue', 'Copy', 'Cos', 'CSeg', 'Dec', 'Delete',
+ 'Dispose', 'DSeg', 'Eof', 'Eoln', 'Erase', 'Exclude',
+ 'Exit', 'Exp', 'Filepos', 'Filesize', 'FillByte',
+ 'Fillchar', 'FillDWord', 'Fillword', 'Flush', 'Frac',
+ 'Freemem', 'Getdir', 'Getmem', 'GetMemoryManager',
+ 'Halt', 'HexStr', 'Hi', 'High', 'Inc', 'Include',
+ 'IndexByte', 'IndexChar', 'IndexDWord', 'IndexWord',
+ 'Insert', 'IsMemoryManagerSet', 'Int', 'IOresult',
+ 'Length', 'Ln', 'Lo', 'LongJmp', 'Low', 'Lowercase',
+ 'Mark', 'Maxavail', 'Memavail', 'Mkdir', 'Move',
+ 'MoveChar0', 'New', 'Odd', 'OctStr', 'Ofs', 'Ord',
+ 'Paramcount', 'Paramstr', 'Pi', 'Pos', 'Power', 'Pred',
+ 'Ptr', 'Random', 'Randomize', 'Read', 'Readln',
+ 'Real2Double', 'Release', 'Rename', 'Reset', 'Rewrite',
+ 'Rmdir', 'Round', 'Runerror', 'Seek', 'SeekEof',
+ 'SeekEoln', 'Seg', 'SetMemoryManager', 'SetJmp',
+ 'SetLength', 'SetString', 'SetTextBuf', 'Sin', 'SizeOf',
+ 'Sptr', 'Sqr', 'Sqrt', 'SSeg', 'Str', 'StringOfChar',
+ 'Succ', 'Swap', 'Trunc', 'Truncate', 'Upcase', 'Val',
+ 'Write', 'WriteLn'
+ ]
+ ,'types' : [
+ 'Integer', 'Shortint', 'SmallInt', 'Longint',
+ 'Longword', 'Int64', 'Byte', 'Word', 'Cardinal',
+ 'QWord', 'Boolean', 'ByteBool', 'LongBool', 'Char',
+ 'Real', 'Single', 'Double', 'Extended', 'Comp',
+ 'String', 'ShortString', 'AnsiString', 'PChar'
+ ]
+ }
+ ,'OPERATORS' :[
+ '@', '*', '+', '-', '/', '^', ':=', '<', '=', '>'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']'
+ ]
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ 'specials' : 'color: #EE0000;'
+ ,'constants' : 'color: #654321;'
+ ,'keywords' : 'color: #48BDDF;'
+ ,'functions' : 'color: #449922;'
+ ,'types' : 'color: #2B60FF;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #60CA00;'
+ }
+};
diff --git a/public/js/reg_syntax/perl.js b/public/js/reg_syntax/perl.js
new file mode 100755
index 0000000..d9cc0b6
--- /dev/null
+++ b/public/js/reg_syntax/perl.js
@@ -0,0 +1,88 @@
+/***************************************************************************
+ * (c) 2008 - file created by Christoph Pinkel, MTC Infomedia OHG.
+ *
+ * You may choose any license of the current release or any future release
+ * of editarea to use, modify and/or redistribute this file.
+ *
+ * This language specification file supports for syntax checking on
+ * a large subset of Perl 5.x.
+ * The basic common syntax of Perl is fully supported, but as for
+ * the highlighting of built-in operations, it's mainly designed
+ * to support for hightlighting Perl code in a Safe environment (compartment)
+ * as used by CoMaNet for evaluation of administrative scripts. This Safe
+ * compartment basically allows for all of Opcode's :default operations,
+ * but little others. See http://perldoc.perl.org/Opcode.html to learn
+ * more.
+ ***************************************************************************/
+
+editAreaLoader.load_syntax["perl"] = {
+ 'DISPLAY_NAME' : 'Perl',
+ 'COMMENT_SINGLE' : {1 : '#'},
+ 'QUOTEMARKS' : {1: "'", 2: '"'},
+ 'KEYWORD_CASE_SENSITIVE' : true,
+ 'KEYWORDS' :
+ {
+ 'core' :
+ [ "if", "else", "elsif", "while", "for", "each", "foreach",
+ "next", "last", "goto", "exists", "delete", "undef",
+ "my", "our", "local", "use", "require", "package", "keys", "values",
+ "sub", "bless", "ref", "return" ],
+ 'functions' :
+ [
+ //from :base_core
+ "int", "hex", "oct", "abs", "substr", "vec", "study", "pos",
+ "length", "index", "rindex", "ord", "chr", "ucfirst", "lcfirst",
+ "uc", "lc", "quotemeta", "chop", "chomp", "split", "list", "splice",
+ "push", "pop", "shift", "unshift", "reverse", "and", "or", "dor",
+ "xor", "warn", "die", "prototype",
+ //from :base_mem
+ "concat", "repeat", "join", "range",
+ //none from :base_loop, as we'll see them as basic statements...
+ //from :base_orig
+ "sprintf", "crypt", "tie", "untie", "select", "localtime", "gmtime",
+ //others
+ "print", "open", "close"
+ ]
+ },
+ 'OPERATORS' :
+ [ '+', '-', '/', '*', '=', '<', '>', '!', '||', '.', '&&',
+ ' eq ', ' ne ', '=~' ],
+ 'DELIMITERS' :
+ [ '(', ')', '[', ']', '{', '}' ],
+ 'REGEXPS' :
+ {
+ 'packagedecl' : { 'search': '(package )([^ \r\n\t#;]*)()',
+ 'class' : 'scopingnames',
+ 'modifiers' : 'g', 'execute' : 'before' },
+ 'subdecl' : { 'search': '(sub )([^ \r\n\t#]*)()',
+ 'class' : 'scopingnames',
+ 'modifiers' : 'g', 'execute' : 'before' },
+ 'scalars' : { 'search': '()(\\\$[a-zA-Z0-9_:]*)()',
+ 'class' : 'vars',
+ 'modifiers' : 'g', 'execute' : 'after' },
+ 'arrays' : { 'search': '()(@[a-zA-Z0-9_:]*)()',
+ 'class' : 'vars',
+ 'modifiers' : 'g', 'execute' : 'after' },
+ 'hashs' : { 'search': '()(%[a-zA-Z0-9_:]*)()',
+ 'class' : 'vars',
+ 'modifiers' : 'g', 'execute' : 'after' },
+ },
+
+ 'STYLES' :
+ {
+ 'COMMENTS': 'color: #AAAAAA;',
+ 'QUOTESMARKS': 'color: #DC0000;',
+ 'KEYWORDS' :
+ {
+ 'core' : 'color: #8aca00;',
+ 'functions' : 'color: #2B60FF;'
+ },
+ 'OPERATORS' : 'color: #8aca00;',
+ 'DELIMITERS' : 'color: #0038E1;',
+ 'REGEXPS':
+ {
+ 'scopingnames' : 'color: #ff0000;',
+ 'vars' : 'color: #00aaaa;',
+ }
+ } //'STYLES'
+};
diff --git a/public/js/reg_syntax/php.js b/public/js/reg_syntax/php.js
new file mode 100755
index 0000000..1d35ddb
--- /dev/null
+++ b/public/js/reg_syntax/php.js
@@ -0,0 +1,157 @@
+editAreaLoader.load_syntax["php"] = {
+ 'DISPLAY_NAME' : 'Php'
+ ,'COMMENT_SINGLE' : {1 : '//', 2 : '#'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements' : [
+ 'include', 'require', 'include_once', 'require_once',
+ 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
+ 'endif', 'switch', 'case', 'endswitch',
+ 'return', 'break', 'continue'
+ ]
+ ,'reserved' : [
+ '_GET', '_POST', '_SESSION', '_SERVER', '_FILES', '_ENV', '_COOKIE', '_REQUEST',
+ 'null', '__LINE__', '__FILE__',
+ 'false', '<?php', '?>', '<?',
+ '<script language', '</script>',
+ 'true', 'var', 'default',
+ 'function', 'class', 'new', '&new', 'this',
+ '__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION',
+ 'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR',
+ 'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR',
+ 'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+ 'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
+ 'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR',
+ 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+
+ ]
+ ,'functions' : [
+ 'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
+ 'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
+ 'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
+ 'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
+ 'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
+ 'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
+ 'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
+ 'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
+ 'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
+ 'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
+ 'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
+ 'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
+ 'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '&&', '||'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ // highlight all variables ($...)
+ 'variables' : {
+ 'search' : '()(\\$\\w+)()'
+ ,'class' : 'variables'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #879EFA;'
+ ,'KEYWORDS' : {
+ 'reserved' : 'color: #48BDDF;'
+ ,'functions' : 'color: #0040FD;'
+ ,'statements' : 'color: #60CA00;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #2B60FF;'
+ ,'REGEXPS' : {
+ 'variables' : 'color: #E0BD54;'
+ }
+ }
+ ,'AUTO_COMPLETION' : {
+ "default": { // the name of this definition group. It's posisble to have different rules inside the same definition file
+ "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.|
+ ,"possible_words_letters": "[a-zA-Z0-9_\$]+"
+ ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+ ,"prefix_separator": "\\-\\>|\\:\\:"
+ }
+ ,"CASE_SENSITIVE": true
+ ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position
+ ,"KEYWORDS": {
+ '': [ // the prefix of thoses items
+ /**
+ * 0 : the keyword the user is typing
+ * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous )
+ * If empty the keyword will be displayed
+ * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed)
+ */
+ ['$_POST']
+ ,['$_GET']
+ ,['$_SESSION']
+ ,['$_SERVER']
+ ,['$_FILES']
+ ,['$_ENV']
+ ,['$_COOKIE']
+ ,['$_REQUEST']
+ // magic methods
+ ,['__construct', '§( {@} )']
+ ,['__destruct', '§( {@} )']
+ ,['__sleep', '§( {@} )']
+ ,['__wakeup', '§( {@} )']
+ ,['__toString', '§( {@} )']
+ // include
+ ,['include', '§ "{@}";']
+ ,['include_once', '§ "{@}";']
+ ,['require', '§ "{@}";']
+ ,['require_once', '§ "{@}";']
+ // statements
+ ,['for', '§( {@} )']
+ ,['foreach', '§( {@} )']
+ ,['if', '§( {@} )']
+ ,['elseif', '§( {@} )']
+ ,['while', '§( {@} )']
+ ,['switch', '§( {@} )']
+ ,['break']
+ ,['case']
+ ,['continue']
+ ,['do']
+ ,['else']
+ ,['endif']
+ ,['endswitch']
+ ,['endwhile']
+ ,['return']
+ // function
+ ,['unset', '§( {@} )']
+ ]
+ }
+ }
+ ,"live": {
+
+ // class NAME: /class\W+([a-z]+)\W+/gi
+ // method: /^(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi
+ // static: /^(public|private|protected)?\s+static\s+(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi
+ // attributes: /(\$this\-\>|(?:var|public|protected|private)\W+\$)([a-z0-9\_]+)(?!\()\b/gi
+ // v1 : /(\$this\-\>|var\W+|public\W+|protected\W+|private\W+)([a-z0-9\_]+)\W*(=|;)/gi
+ // var type: /(\$(this\-\>)?[a-z0-9\_]+)\s*\=\s*new\s+([a-z0-9\_])+/gi
+
+
+ "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.|
+ ,"possible_words_letters": "[a-zA-Z0-9_\$]+"
+ ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+ ,"prefix_separator": "\\-\\>"
+ }
+ ,"CASE_SENSITIVE": true
+ ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position
+ ,"KEYWORDS": {
+ '$this': [ // the prefix of thoses items
+ ['test']
+ ]
+ }
+ }
+ }
+};
diff --git a/public/js/reg_syntax/python.js b/public/js/reg_syntax/python.js
new file mode 100755
index 0000000..1a5e7fb
--- /dev/null
+++ b/public/js/reg_syntax/python.js
@@ -0,0 +1,145 @@
+/**
+ * Python syntax v 1.1
+ *
+ * v1.1 by Andre Roberge (2006/12/27)
+ *
+**/
+editAreaLoader.load_syntax["python"] = {
+ 'DISPLAY_NAME' : 'Python'
+ ,'COMMENT_SINGLE' : {1 : '#'}
+ ,'COMMENT_MULTI' : {}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : true
+ ,'KEYWORDS' : {
+ /*
+ ** Set 1: reserved words
+ ** http://python.org/doc/current/ref/keywords.html
+ ** Note: 'as' and 'with' have been added starting with Python 2.5
+ */
+ 'reserved' : [
+ 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif',
+ 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if',
+ 'import', 'is', 'in', 'lambda', 'not', 'or', 'pass', 'print', 'raise',
+ 'return', 'try', 'while', 'with', 'yield'
+ //the following are *almost* reserved; we'll treat them as such
+ , 'False', 'True', 'None'
+ ]
+ /*
+ ** Set 2: builtins
+ ** http://python.org/doc/current/lib/built-in-funcs.html
+ */
+ ,'builtins' : [
+ '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp',
+ 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile',
+ 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help',
+ 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals',
+ 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range',
+ 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice',
+ 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode',
+ 'vars', 'xrange', 'zip',
+ // Built-in constants: http://www.python.org/doc/2.4.1/lib/node35.html
+ //'False', 'True', 'None' have been included in 'reserved'
+ 'NotImplemented', 'Ellipsis',
+ // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html
+ 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError',
+ 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError',
+ 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError',
+ 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError',
+ 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError',
+ 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError',
+ 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning',
+ 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning',
+ 'RuntimeWarning', 'FutureWarning',
+ // we will include the string methods as well
+ // http://python.org/doc/current/lib/string-methods.html
+ 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs',
+ 'find', 'index', 'isalnum', 'isaplpha', 'isdigit', 'islower', 'isspace', 'istitle',
+ 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust',
+ 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title',
+ 'translate', 'upper', 'zfill'
+ ]
+ /*
+ ** Set 3: standard library
+ ** http://python.org/doc/current/lib/modindex.html
+ */
+ ,'stdlib' : [
+ '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm',
+ 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer',
+ 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi',
+ 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop',
+ 'collections', 'colorsys', 'commands', 'compileall', 'compiler', 'compiler',
+ 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt',
+ 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE',
+ 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm',
+ 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl',
+ 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl',
+ 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob',
+ 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib',
+ 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect',
+ 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap',
+ 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify',
+ 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator',
+ 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes',
+ 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile',
+ 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random',
+ 're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter',
+ 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve',
+ 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd',
+ 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string',
+ 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev',
+ 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios',
+ 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token',
+ 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2',
+ 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings',
+ 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml',
+ 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib'
+
+ ]
+ /*
+ ** Set 4: special methods
+ ** http://python.org/doc/current/ref/specialnames.html
+ */
+ ,'special' : [
+ // Basic customization: http://python.org/doc/current/ref/customization.html
+ '__new__', '__init__', '__del__', '__repr__', '__str__',
+ '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__',
+ '__hash__', '__nonzero__', '__unicode__', '__dict__',
+ // Attribute access: http://python.org/doc/current/ref/attribute-access.html
+ '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__',
+ '__delete__', '__slots__',
+ // Class creation, callable objects
+ '__metaclass__', '__call__',
+ // Container types: http://python.org/doc/current/ref/sequence-types.html
+ '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__',
+ '__getslice__', '__setslice__', '__delslice__',
+ // Numeric types: http://python.org/doc/current/ref/numeric-types.html
+ '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__',
+ '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__',
+ '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__',
+ '__long__','__lshift__',
+ '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__',
+ '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__',
+ '__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__',
+ '__sub__','__xor__'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ','
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #660066;'
+ ,'KEYWORDS' : {
+ 'reserved' : 'color: #0000FF;'
+ ,'builtins' : 'color: #009900;'
+ ,'stdlib' : 'color: #009900;'
+ ,'special': 'color: #006666;'
+ }
+ ,'OPERATORS' : 'color: #993300;'
+ ,'DELIMITERS' : 'color: #993300;'
+
+ }
+};
diff --git a/public/js/reg_syntax/robotstxt.js b/public/js/reg_syntax/robotstxt.js
new file mode 100755
index 0000000..9b141f0
--- /dev/null
+++ b/public/js/reg_syntax/robotstxt.js
@@ -0,0 +1,25 @@
+editAreaLoader.load_syntax["robotstxt"] = {
+ 'DISPLAY_NAME' : 'Robots txt',
+ 'COMMENT_SINGLE' : {1 : '#'},
+ 'COMMENT_MULTI' : {},
+ 'QUOTEMARKS' : [],
+ 'KEYWORD_CASE_SENSITIVE' : false,
+ 'KEYWORDS' : {
+ 'attributes' : ['User-agent', 'Disallow', 'Allow', 'Crawl-delay'],
+ 'values' : ['*'],
+ 'specials' : ['*']
+ },
+ 'OPERATORS' :[':'],
+ 'DELIMITERS' :[],
+ 'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;',
+ 'QUOTESMARKS': 'color: #6381F8;',
+ 'KEYWORDS' : {
+ 'attributes' : 'color: #48BDDF;',
+ 'values' : 'color: #2B60FF;',
+ 'specials' : 'color: #FF0000;'
+ },
+ 'OPERATORS' : 'color: #FF00FF;',
+ 'DELIMITERS' : 'color: #60CA00;'
+ }
+};
diff --git a/public/js/reg_syntax/ruby.js b/public/js/reg_syntax/ruby.js
new file mode 100755
index 0000000..bca0140
--- /dev/null
+++ b/public/js/reg_syntax/ruby.js
@@ -0,0 +1,68 @@
+/**
+ * Ruby syntax v 1.0
+ *
+ * v1.0 by Patrice De Saint Steban (2007/01/03)
+ *
+**/
+editAreaLoader.load_syntax["ruby"] = {
+ 'DISPLAY_NAME' : 'Ruby'
+ ,'COMMENT_SINGLE' : {1 : '#'}
+ ,'COMMENT_MULTI' : {}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : true
+ ,'KEYWORDS' : {
+ 'reserved' : [
+ 'alias', 'and', 'BEGIN', 'begin', 'break', 'case', 'class', 'def', 'defined', 'do', 'else',
+ 'elsif', 'END', 'end', 'ensure', 'false', 'for', 'if',
+ 'in', 'module', 'next', 'not', 'or', 'redo', 'rescue', 'retry',
+ 'return', 'self', 'super', 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ','
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ 'constants' : {
+ 'search' : '()([A-Z]\\w*)()'
+ ,'class' : 'constants'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ ,'variables' : {
+ 'search' : '()([\$\@\%]+\\w+)()'
+ ,'class' : 'variables'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ ,'numbers' : {
+ 'search' : '()(-?[0-9]+)()'
+ ,'class' : 'numbers'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ ,'symbols' : {
+ 'search' : '()(:\\w+)()'
+ ,'class' : 'symbols'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before'
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #660066;'
+ ,'KEYWORDS' : {
+ 'reserved' : 'font-weight: bold; color: #0000FF;'
+ }
+ ,'OPERATORS' : 'color: #993300;'
+ ,'DELIMITERS' : 'color: #993300;'
+ ,'REGEXPS' : {
+ 'variables' : 'color: #E0BD54;'
+ ,'numbers' : 'color: green;'
+ ,'constants' : 'color: #00AA00;'
+ ,'symbols' : 'color: #879EFA;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/sql.js b/public/js/reg_syntax/sql.js
new file mode 100755
index 0000000..118ad5b
--- /dev/null
+++ b/public/js/reg_syntax/sql.js
@@ -0,0 +1,56 @@
+editAreaLoader.load_syntax["sql"] = {
+ 'DISPLAY_NAME' : 'SQL'
+ ,'COMMENT_SINGLE' : {1 : '--'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : {1: "'", 2: '"', 3: '`'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements' : [
+ 'select', 'SELECT', 'where', 'order', 'by',
+ 'insert', 'from', 'update', 'grant', 'left join', 'right join',
+ 'union', 'group', 'having', 'limit', 'alter', 'LIKE','IN','CASE'
+ ]
+ ,'reserved' : [
+ 'null', 'enum', 'int', 'boolean', 'add', 'varchar'
+
+ ]
+ ,'functions' : [
+ 'ABS','ACOS','ADDDATE','ADDTIME','AES_DECRYPT','AES_ENCRYPT','ASCII','ASIN','ATAN2 ATAN','ATAN','AVG','BENCHMARK','DISTINCT','BIN','BIT_AND','BIT_COUNT','BIT_LENGTH','BIT_OR','BIT_XOR','CAST','CEILING CEIL','CHAR_LENGTH','CHAR',
+'CHARACTER_LENGTH','CHARSET','COALESCE','COERCIBILITY','COLLATION','COMPRESS','CONCAT_WS','CONCAT','CONNECTION_ID','CONV','CONVERT_TZ','COS','COT','COUNT','CRC32','CURDATE','CURRENT_DATE','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER','CURTIME','DATABASE','DATE_ADD','DATE_FORMAT','DATE_SUB','DATE','DATEDIFF','DAY','DAYNAME','DAYOFMONTH',
+'DAYOFWEEK','DAYOFYEAR','DECODE','DEFAULT','DEGREES','DES_DECRYPT','DES_ENCRYPT','ELT','ENCODE','ENCRYPT','EXP','EXPORT_SET','EXTRACT','FIELD','FIND_IN_SET','FLOOR','FORMAT','FOUND_ROWS','FROM_DAYS','FROM_UNIXTIME','GET_FORMAT','GET_LOCK','GREATEST','GROUP_CONCAT','HEX','HOUR','IF','IFNULL','INET_ATON','INET_NTOA',
+'INSERT','INSTR','INTERVAL','IS_FREE_LOCK','IS_USED_LOCK','ISNULL','LAST_DAY','LAST_INSERT_ID','LCASE','LEAST','LEFT','LENGTH','LN','LOAD_FILE','LOCALTIME','LOCALTIMESTAMP','LOCATE','LOG10','LOG2','LOG','LOWER','LPAD','LTRIM','MAKE_SET','MAKEDATE','MAKETIME','MASTER_POS_WAIT','MAX','MD5','MICROSECOND',
+'MID','MIN','MINUTE','MOD','MONTH','MONTHNAME','NOW','NULLIF','OCT','OCTET_LENGTH','OLD_PASSWORD','ORD','PASSWORD','PERIOD_ADD','PERIOD_DIFF','PI','POSITION','POW','POWER','PROCEDURE ANALYSE','QUARTER','QUOTE','RADIANS','RAND','RELEASE_LOCK','REPEAT','REPLACE','REVERSE','RIGHT','ROUND',
+'RPAD','RTRIM','SEC_TO_TIME','SECOND','SESSION_USER','SHA1','SHA','SIGN','SIN','SOUNDEX','SOUNDS LIKE','SPACE','SQRT','STD','STDDEV','STR_TO_DATE','STRCMP','SUBDATE','SUBSTRING_INDEX','SUBSTRING','SUBSTR','SUBTIME','SUM','SYSDATE','SYSTEM_USER','TAN','TIME_FORMAT','TIME_TO_SEC','TIME','TIMEDIFF',
+'TIMESTAMP','TO_DAYS','TRIM','TRUNCATE','UCASE','UNCOMPRESS','UNCOMPRESSED_LENGTH','UNHEX','UNIX_TIMESTAMP','UPPER','USER','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','UUID','VALUES','VARIANCE','WEEK','WEEKDAY','WEEKOFYEAR','YEAR','YEARWEEK'
+ ]
+ }
+ ,'OPERATORS' :[
+ 'AND','&&','BETWEEN','BINARY','&','|','^','/','DIV','<=>','=','>=','>','<<','>>','IS','NULL','<=','<','-','%','!=','<>','!','||','OR','+','REGEXP','RLIKE','XOR','~','*'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ // highlight all variables (@...)
+ 'variables' : {
+ 'search' : '()(\\@\\w+)()'
+ ,'class' : 'variables'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #879EFA;'
+ ,'KEYWORDS' : {
+ 'reserved' : 'color: #48BDDF;'
+ ,'functions' : 'color: #0040FD;'
+ ,'statements' : 'color: #60CA00;'
+ }
+ ,'OPERATORS' : 'color: #FF00FF;'
+ ,'DELIMITERS' : 'color: #2B60FF;'
+ ,'REGEXPS' : {
+ 'variables' : 'color: #E0BD54;'
+ }
+ }
+};
diff --git a/public/js/reg_syntax/tsql.js b/public/js/reg_syntax/tsql.js
new file mode 100755
index 0000000..868567d
--- /dev/null
+++ b/public/js/reg_syntax/tsql.js
@@ -0,0 +1,88 @@
+editAreaLoader.load_syntax["tsql"] = {
+ 'DISPLAY_NAME' : 'T-SQL'
+ ,'COMMENT_SINGLE' : {1 : '--'}
+ ,'COMMENT_MULTI' : {'/*' : '*/'}
+ ,'QUOTEMARKS' : {1: "'" }
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements': [
+ 'ADD', 'EXCEPT', 'PERCENT', 'EXEC', 'PLAN', 'ALTER', 'EXECUTE', 'PRECISION',
+ 'PRIMARY', 'EXIT', 'PRINT', 'AS', 'FETCH', 'PROC', 'ASC',
+ 'FILE', 'PROCEDURE', 'AUTHORIZATION', 'FILLFACTOR', 'PUBLIC', 'BACKUP', 'FOR', 'RAISERROR',
+ 'BEGIN', 'FOREIGN', 'READ', 'FREETEXT', 'READTEXT', 'BREAK', 'FREETEXTTABLE',
+ 'RECONFIGURE', 'BROWSE', 'FROM', 'REFERENCES', 'BULK', 'FULL', 'REPLICATION', 'BY',
+ 'FUNCTION', 'RESTORE', 'CASCADE', 'GOTO', 'RESTRICT', 'CASE', 'GRANT', 'RETURN',
+ 'CHECK', 'GROUP', 'REVOKE', 'CHECKPOINT', 'HAVING', 'RIGHT', 'CLOSE', 'HOLDLOCK', 'ROLLBACK',
+ 'CLUSTERED', 'IDENTITY', 'ROWCOUNT', 'IDENTITY_INSERT', 'ROWGUIDCOL', 'COLLATE',
+ 'IDENTITYCOL', 'RULE', 'COLUMN', 'IF', 'SAVE', 'COMMIT', 'SCHEMA', 'COMPUTE', 'INDEX',
+ 'SELECT', 'CONSTRAINT', 'CONTAINS', 'INSERT', 'SET',
+ 'CONTAINSTABLE', 'INTERSECT', 'SETUSER', 'CONTINUE', 'INTO', 'SHUTDOWN', 'SOME',
+ 'CREATE', 'STATISTICS', 'KEY', 'CURRENT', 'KILL', 'TABLE',
+ 'CURRENT_DATE', 'TEXTSIZE', 'CURRENT_TIME', 'THEN', 'LINENO',
+ 'TO', 'LOAD', 'TOP', 'CURSOR', 'NATIONAL', 'TRAN', 'DATABASE', 'NOCHECK',
+ 'TRANSACTION', 'DBCC', 'NONCLUSTERED', 'TRIGGER', 'DEALLOCATE', 'TRUNCATE',
+ 'DECLARE', 'TSEQUAL', 'DEFAULT', 'UNION', 'DELETE', 'OF', 'UNIQUE',
+ 'DENY', 'OFF', 'UPDATE', 'DESC', 'OFFSETS', 'UPDATETEXT', 'DISK', 'ON', 'USE', 'DISTINCT', 'OPEN',
+ 'DISTRIBUTED', 'OPENDATASOURCE', 'VALUES', 'DOUBLE', 'OPENQUERY', 'VARYING', 'DROP',
+ 'OPENROWSET', 'VIEW', 'DUMMY', 'OPENXML', 'WAITFOR', 'DUMP', 'OPTION', 'WHEN', 'ELSE', 'WHERE',
+ 'END', 'ORDER', 'WHILE', 'ERRLVL', 'WITH', 'ESCAPE', 'OVER', 'WRITETEXT'
+ ],
+ 'functions': [
+ 'COALESCE', 'SESSION_USER', 'CONVERT', 'SYSTEM_USER', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'NULLIF', 'USER',
+ 'AVG', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG', 'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'GROUPING', 'VARP', 'MAX',
+ '@@DATEFIRST', '@@OPTIONS', '@@DBTS', '@@REMSERVER', '@@LANGID', '@@SERVERNAME', '@@LANGUAGE', '@@SERVICENAME', '@@LOCK_TIMEOUT',
+ '@@SPID', '@@MAX_CONNECTIONS', '@@TEXTSIZE', '@@MAX_PRECISION', '@@VERSION', '@@NESTLEVEL',
+ '@@CURSOR_ROWS', 'CURSOR_STATUS', '@@FETCH_STATUS',
+ 'DATEADD', 'DATEDIFF', 'DATENAME', 'DATEPART', 'DAY', 'GETDATE', 'GETUTCDATE', 'MONTH', 'YEAR',
+ 'ABS', 'DEGREES', 'RAND', 'ACOS', 'EXP', 'ROUND', 'ASIN', 'FLOOR', 'SIGN', 'ATAN', 'LOG', 'SIN', 'ATN2', 'LOG10', 'SQRT',
+ 'CEILING', 'PI ', 'SQUARE', 'COS', 'POWER', 'TAN', 'COT', 'RADIANS',
+ '@@PROCID', 'COL_LENGTH', 'FULLTEXTCATALOGPROPERTY', 'COL_NAME', 'FULLTEXTSERVICEPROPERTY', 'COLUMNPROPERTY', 'INDEX_COL',
+ 'DATABASEPROPERTY', 'INDEXKEY_PROPERTY', 'DATABASEPROPERTYEX', 'INDEXPROPERTY', 'DB_ID', 'OBJECT_ID', 'DB_NAME', 'OBJECT_NAME',
+ 'FILE_ID', 'OBJECTPROPERTY', 'OBJECTPROPERTYEX', 'FILE_NAME', 'SQL_VARIANT_PROPERTY', 'FILEGROUP_ID', 'FILEGROUP_NAME',
+ 'FILEGROUPPROPERTY', 'TYPEPROPERTY', 'FILEPROPERTY',
+ 'CURRENT_USER', 'SUSER_ID', 'SUSER_SID', 'IS_MEMBER', 'SUSER_SNAME', 'IS_SRVROLEMEMBER', 'PERMISSIONS', 'SYSTEM_USER',
+ 'SUSER_NAME', 'USER_ID', 'SESSION_USER', 'USER_NAME', 'ASCII', 'SOUNDEX', 'PATINDEX', 'SPACE', 'CHARINDEX', 'QUOTENAME',
+ 'STR', 'DIFFERENCE', 'REPLACE', 'STUFF', 'REPLICATE', 'SUBSTRING', 'LEN', 'REVERSE', 'UNICODE', 'LOWER',
+ 'UPPER', 'LTRIM', 'RTRIM', 'APP_NAME', 'CAST', 'CONVERT', 'COALESCE', 'COLLATIONPROPERTY', 'COLUMNS_UPDATED', 'CURRENT_TIMESTAMP',
+ 'CURRENT_USER', 'DATALENGTH', '@@ERROR', 'FORMATMESSAGE', 'GETANSINULL', 'HOST_ID', 'HOST_NAME', 'IDENT_CURRENT', 'IDENT_INCR',
+ 'IDENT_SEED', '@@IDENTITY', 'ISDATE', 'ISNULL', 'ISNUMERIC', 'NEWID', 'NULLIF', 'PARSENAME', '@@ROWCOUNT',
+ 'SCOPE_IDENTITY', 'SERVERPROPERTY', 'SESSIONPROPERTY', 'SESSION_USER', 'STATS_DATE', 'SYSTEM_USER', '@@TRANCOUNT', 'USER_NAME',
+ '@@CONNECTIONS', '@@PACK_RECEIVED', '@@CPU_BUSY', '@@PACK_SENT', '@@TIMETICKS', '@@IDLE', '@@TOTAL_ERRORS', '@@IO_BUSY', '@@TOTAL_READ',
+ '@@PACKET_ERRORS', '@@TOTAL_WRITE', 'PATINDEX', 'TEXTVALID', 'TEXTPTR'
+ ],
+ 'reserved': [
+ 'RIGHT', 'INNER', 'IS', 'JOIN', 'CROSS', 'LEFT', 'NULL', 'OUTER'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '*', '/', '%', '=', '&' ,'|', '^', '>', '<', '>=', '<=', '<>', '!=', '!<', '!>', 'ALL', 'AND', 'ANY', 'BETWEEN', 'EXISTS', 'IN', 'LIKE', 'NOT', 'OR', '~'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'REGEXPS' : {
+ // highlight all variables (@...)
+ 'variables' : {
+ 'search' : '()(\\@\\w+)()'
+ ,'class' : 'variables'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #008000;'
+ ,'QUOTESMARKS': 'color: #FF0000;'
+ ,'KEYWORDS' : {
+ 'reserved' : 'color: #808080;'
+ ,'functions' : 'color: #FF00FF;'
+ ,'statements' : 'color: #0000FF;'
+ }
+ ,'OPERATORS' : 'color: #808080;'
+ ,'DELIMITERS' : 'color: #FF8000;'
+ ,'REGEXPS' : {
+ 'variables' : 'color: #E0BD54;'
+ }
+ }
+};
+
+
diff --git a/public/js/reg_syntax/vb.js b/public/js/reg_syntax/vb.js
new file mode 100755
index 0000000..c831300
--- /dev/null
+++ b/public/js/reg_syntax/vb.js
@@ -0,0 +1,53 @@
+editAreaLoader.load_syntax["vb"] = {
+ 'DISPLAY_NAME' : 'Visual Basic'
+ ,'COMMENT_SINGLE' : {1 : "'"}
+ ,'COMMENT_MULTI' : { }
+ ,'QUOTEMARKS' : {1: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ 'statements' : [
+ 'if','then','for','each','while','do','loop',
+ 'else','elseif','select','case','end select',
+ 'until','next','step','to','in','end if'
+ ]
+ ,'keywords' : [
+ 'empty','isempty','nothing','null','isnull','true','false',
+ 'set','call',
+ 'sub','end sub','function','end function','exit','exit function',
+ 'dim','Mod','In','private','public','shared','const'
+ ]
+
+ ,'functions' : [
+ 'CDate','Date','DateAdd','DateDiff','DatePart','DateSerial','DateValue','Day','FormatDateTime',
+ 'Hour','IsDate','Minute','Month',
+ 'MonthName','Now','Second','Time','Timer','TimeSerial','TimeValue','Weekday','WeekdayName ','Year',
+ 'Asc','CBool','CByte','CCur','CDate','CDbl','Chr','CInt','CLng','CSng','CStr','Hex','Oct','FormatCurrency',
+ 'FormatDateTime','FormatNumber','FormatPercent','Abs','Atn','Cos','Exp','Hex','Int','Fix','Log','Oct',
+ 'Rnd','Sgn','Sin','Sqr','Tan',
+ 'Array','Filter','IsArray','Join','LBound','Split','UBound',
+ 'InStr','InStrRev','LCase','Left','Len','LTrim','RTrim','Trim','Mid','Replace','Right','Space','StrComp',
+ 'String','StrReverse','UCase',
+ 'CreateObject','Eval','GetLocale','GetObject','GetRef','InputBox','IsEmpty','IsNull','IsNumeric',
+ 'IsObject','LoadPicture','MsgBox','RGB','Round','ScriptEngine','ScriptEngineBuildVersion','ScriptEngineMajorVersion',
+ 'ScriptEngineMinorVersion','SetLocale','TypeName','VarType'
+ ]
+ }
+ ,'OPERATORS' :[
+ '+', '-', '/', '*', '=', '<', '>', '!', '&'
+ ]
+ ,'DELIMITERS' :[
+ '(', ')', '[', ']', '{', '}'
+ ]
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #99CC00;'
+ ,'QUOTESMARKS': 'color: #333399;'
+ ,'KEYWORDS' : {
+ 'keywords' : 'color: #3366FF;'
+ ,'functions' : 'color: #0000FF;'
+ ,'statements' : 'color: #3366FF;'
+ }
+ ,'OPERATORS' : 'color: #FF0000;'
+ ,'DELIMITERS' : 'color: #0000FF;'
+
+ }
+};
diff --git a/public/js/reg_syntax/xml.js b/public/js/reg_syntax/xml.js
new file mode 100755
index 0000000..03f6076
--- /dev/null
+++ b/public/js/reg_syntax/xml.js
@@ -0,0 +1,57 @@
+/*
+* last update: 2006-08-24
+*/
+
+editAreaLoader.load_syntax["xml"] = {
+ 'DISPLAY_NAME' : 'XML'
+ ,'COMMENT_SINGLE' : {}
+ ,'COMMENT_MULTI' : {''}
+ ,'QUOTEMARKS' : {1: "'", 2: '"'}
+ ,'KEYWORD_CASE_SENSITIVE' : false
+ ,'KEYWORDS' : {
+ }
+ ,'OPERATORS' :[
+ ]
+ ,'DELIMITERS' :[
+ ]
+ ,'REGEXPS' : {
+ 'xml' : {
+ 'search' : '()(<\\?[^>]*?\\?>)()'
+ ,'class' : 'xml'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ ,'cdatas' : {
+ 'search' : '()()()'
+ ,'class' : 'cdata'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ ,'tags' : {
+ 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+ ,'class' : 'tags'
+ ,'modifiers' : 'gi'
+ ,'execute' : 'before' // before or after
+ }
+ ,'attributes' : {
+ 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+ ,'class' : 'attributes'
+ ,'modifiers' : 'g'
+ ,'execute' : 'before' // before or after
+ }
+ }
+ ,'STYLES' : {
+ 'COMMENTS': 'color: #AAAAAA;'
+ ,'QUOTESMARKS': 'color: #6381F8;'
+ ,'KEYWORDS' : {
+ }
+ ,'OPERATORS' : 'color: #E775F0;'
+ ,'DELIMITERS' : ''
+ ,'REGEXPS' : {
+ 'attributes': 'color: #B1AC41;'
+ ,'tags': 'color: #E62253;'
+ ,'xml': 'color: #8DCFB5;'
+ ,'cdata': 'color: #50B020;'
+ }
+ }
+};
diff --git a/views/rcpcrt.erb b/views/rcpcrt.erb
new file mode 100644
index 0000000..4240a5d
--- /dev/null
+++ b/views/rcpcrt.erb
@@ -0,0 +1,36 @@
+<%= erb :header %>
+
+
+ <% unless @error_data.nil? %>
+
+ <% end %>
+
+<%= erb :footer %>
\ No newline at end of file