summaryrefslogtreecommitdiff
path: root/static
diff options
context:
space:
mode:
authorJon Bergli Heier <snakebite@jvnv.net>2010-01-25 01:00:18 +0100
committerJon Bergli Heier <snakebite@jvnv.net>2010-01-25 01:00:18 +0100
commit346b22ddf795f9a5a10ddc6b83bfa3bc15c8d30a (patch)
treef9d9251ea08bc8ad57e7234ca451bcc3eeccc7b5 /static
Initial commit.
Diffstat (limited to 'static')
-rw-r--r--static/edit.js83
-rw-r--r--static/paste.css18
2 files changed, 101 insertions, 0 deletions
diff --git a/static/edit.js b/static/edit.js
new file mode 100644
index 0000000..8e754d8
--- /dev/null
+++ b/static/edit.js
@@ -0,0 +1,83 @@
+function tab_add(t, ti, ss, se) {
+ t.value = t.value.substr(0, ti) + "\t" + t.value.substr(ti);
+ t.selectionStart = ss + 1;
+ t.selectionEnd = se + 1;
+}
+
+function tab_remove(t, ti, ss, se) {
+ t.value = t.value.substr(0, ti-1) + t.value.substr(ti);
+ t.selectionStart = ss - 1;
+ t.selectionEnd = se - 1;
+}
+
+function textarea_handle_tab(t, e) {
+ if(navigator.userAgent.match("Gecko")) {
+ keyCode = e.which;
+ } else {
+ keyCode = e.keyCode;
+ }
+ if(keyCode != 9)
+ return;
+ e.preventDefault();
+ var ss = t.selectionStart;
+ var se = t.selectionEnd;
+ if(ss == se) {
+ if(e.shiftKey) {
+ if(t.value[ss-1] == "\t") {
+ tab_remove(t, ss, ss, se);
+ }
+ } else {
+ tab_add(t, ss, ss, se);
+ }
+ } else {
+ var s;
+ if(ss < se)
+ s = t.value.substr(ss, se - ss);
+ else
+ s = t.value.substr(se, ss - se);
+ if(s.indexOf("\n") > -1) {
+ var nl = s.lastIndexOf("\n");
+ if(e.shiftKey) {
+ while(nl > -1) {
+ if(s[nl+1] == "\t") {
+ tab_remove(t, ss + nl + 2, ss, se);
+ se--;
+ }
+ nl = s.lastIndexOf("\n", nl - 2);
+ }
+ if(t.value[(ss < se ? ss : se)-1] == "\n" && e.shiftKey)
+ tab_remove(t, ss+1, ss, se);
+ if((ss == 0 || se == 0) && t.value[0] == "\t")
+ tab_remove(t, 1, ss, se);
+ } else {
+ while(nl > -1) {
+ tab_add(t, ss + nl + 1, ss, se);
+ se++;
+ if(nl == 0)
+ break;
+ nl = s.lastIndexOf("\n", nl - 2);
+ }
+ if(ss == 0 || se == 0 || t.value[(ss < se ? ss : se)-1] == "\n")
+ tab_add(t, ss, ss-1, se);
+ }
+
+ } else {
+ var nl = t.value.lastIndexOf("\n", (ss < se ? se : ss) - 1) + 1;
+ if(e.shiftKey) {
+ if(t.value[nl] == "\t") {
+ tab_remove(t, nl + 1, ss, se);
+ }
+ } else {
+ tab_add(t, nl, ss, se);
+ }
+ }
+ }
+ setTimeout("document.getElementById('" + t.id + "').focus();", 0);
+}
+
+window.onload = function() {
+ text = document.getElementById("text");
+ text.onkeydown = function(event) {
+ return textarea_handle_tab(text, event);
+ }
+}
diff --git a/static/paste.css b/static/paste.css
new file mode 100644
index 0000000..11e15a0
--- /dev/null
+++ b/static/paste.css
@@ -0,0 +1,18 @@
+html, body { margin: 0; padding: 0; font-family: sans-serif; background-color: #fff; color: #000; }
+div#page { background: #eee; margin: 1em; }
+div#page-header, div#page-content { padding: 1em; }
+div#page-header h1 a { color: inherit; }
+div#page-header h1 a:hover { text-decoration: none; }
+a { color: #00f; text-decoration: none; }
+a:hover { text-decoration: underline; }
+form#pasteform ul { list-style-type: none; }
+div#info { font-size: small; color: #bbb; }
+span#nick, span#date, span#syntax-type { color: #888; }
+div#alt-links { font-size: small; }
+div#alt-links a { color: #44f; }
+.highlighttable { width: 100%; padding-top: 1em; }
+.highlighttable td.code { width: 100%; background-color: #fff; }
+.highlighttable td { vertical-align: top; }
+.highlighttable pre { margin: 0; padding: 0; }
+.highlighttable .linenos { text-align: right; padding-left: .5em; padding-right: .5em; }
+.highlighttable .linenos a { color: #888; }