1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
/**
* Some browser detection
*/
var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var is_gecko = ((clientPC.indexOf('gecko')!=-1) && (clientPC.indexOf('spoofer')==-1)
&& (clientPC.indexOf('khtml') == -1) && (clientPC.indexOf('netscape/7.0')==-1));
var is_safari = ((clientPC.indexOf('AppleWebKit')!=-1) && (clientPC.indexOf('spoofer')==-1));
var is_khtml = (navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ));
if (clientPC.indexOf('opera')!=-1) {
var is_opera = true;
var is_opera_preseven = (window.opera && !document.childNodes);
var is_opera_seven = (window.opera && document.childNodes);
}
//{{{ insertTags
/**
* apply tagOpen/tagClose to selection in textarea, use sampleText instead
* of selection if there is none copied and adapted from phpBB
*
* @author phpBB development team
* @author MediaWiki development team
* @author Andreas Gohr <andi@splitbrain.org>
* @author Jim Raynor <jim_raynor@web.de>
*/
function insertTags(elID, tagOpen, tagClose, sampleText) {
tagOpen = tagOpen.replace(/bslashN/g,'\n');
tagClose = tagClose.replace(/bslashN/g,'\n');
var txtarea = document.getElementById(elID);
// IE
if(document.selection && !is_gecko) {
var theSelection = document.selection.createRange().text;
var replaced = true;
if(!theSelection){
replaced = false;
theSelection=sampleText;
}
txtarea.focus();
// This has change
text = theSelection;
if(theSelection.charAt(theSelection.length - 1) == " "){// exclude ending space char, if any
theSelection = theSelection.substring(0, theSelection.length - 1);
r = document.selection.createRange();
r.text = tagOpen + theSelection + tagClose + " ";
} else {
r = document.selection.createRange();
r.text = tagOpen + theSelection + tagClose;
}
if(!replaced){
r.moveStart('character',-text.length-tagClose.length);
r.moveEnd('character',-tagClose.length);
}
r.select();
// Mozilla
} else if(txtarea.selectionStart || txtarea.selectionStart == '0') {
var replaced = false;
var startPos = txtarea.selectionStart;
var endPos = txtarea.selectionEnd;
if(endPos - startPos) replaced = true;
var scrollTop=txtarea.scrollTop;
var myText = (txtarea.value).substring(startPos, endPos);
if(!myText) { myText=sampleText;}
if(myText.charAt(myText.length - 1) == " "){ // exclude ending space char, if any
subst = tagOpen + myText.substring(0, (myText.length - 1)) + tagClose + " ";
} else {
subst = tagOpen + myText + tagClose;
}
txtarea.value = txtarea.value.substring(0, startPos) + subst +
txtarea.value.substring(endPos, txtarea.value.length);
txtarea.focus();
//set new selection
if(replaced){
var cPos=startPos+(tagOpen.length+myText.length+tagClose.length);
txtarea.selectionStart=cPos;
txtarea.selectionEnd=cPos;
}else{
txtarea.selectionStart=startPos+tagOpen.length;
txtarea.selectionEnd=startPos+tagOpen.length+myText.length;
}
txtarea.scrollTop=scrollTop;
// All others
} else {
var copy_alertText=alertText;
var re1=new RegExp("\\$1","g");
var re2=new RegExp("\\$2","g");
copy_alertText=copy_alertText.replace(re1,sampleText);
copy_alertText=copy_alertText.replace(re2,tagOpen+sampleText+tagClose);
var text;
if (sampleText) {
text=prompt(copy_alertText);
} else {
text="";
}
if(!text) { text=sampleText;}
text=tagOpen+text+tagClose;
//append to the end
txtarea.value += "\n"+text;
// in Safari this causes scrolling
if(!is_safari) {
txtarea.focus();
}
}
// reposition cursor if possible
if (txtarea.createTextRange) txtarea.caretPos = document.selection.createRange().duplicate();
return false;
}
// }}}
// {{{ moreRows
/**
* Adds 2 more rows to a textarea
*/
function moreRows(textareaId)
{
document.getElementById(textareaId).rows = document.getElementById(textareaId).rows + 2;
} // }}}
// {{{ lessRows
/**
* Reduces a textarea by 2 rows
*/
function lessRows(textareaId)
{
if( document.getElementById(textareaId).rows>2 )
document.getElementById(textareaId).rows = document.getElementById(textareaId).rows - 2;
}// }}}
// {{{ padText
function padText(text, length)
{
var result="";
for(i=0; i<length; i++)
result = result + text;
return result;
}
// }}}
|