1 | <!-- based on insimage.dlg --> |
---|
2 | |
---|
3 | <!DOCTYPE HTML PUBLIC "-//W3C//DTD W3 HTML 3.2//EN"> |
---|
4 | <HTML id=dlgImage STYLE="width: 432px; height: 194px; "> |
---|
5 | <HEAD> |
---|
6 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> |
---|
7 | <meta http-equiv="MSThemeCompatible" content="Yes"> |
---|
8 | <TITLE>Insert Image</TITLE> |
---|
9 | <style> |
---|
10 | html, body, button, div, input, select, fieldset { font-family: MS Shell Dlg; font-size: 8pt; position: absolute; }; |
---|
11 | </style> |
---|
12 | <SCRIPT defer> |
---|
13 | |
---|
14 | function _CloseOnEsc() { |
---|
15 | if (event.keyCode == 27) { window.close(); return; } |
---|
16 | } |
---|
17 | |
---|
18 | function _getTextRange(elm) { |
---|
19 | var r = elm.parentTextEdit.createTextRange(); |
---|
20 | r.moveToElementText(elm); |
---|
21 | return r; |
---|
22 | } |
---|
23 | |
---|
24 | window.onerror = HandleError |
---|
25 | |
---|
26 | function HandleError(message, url, line) { |
---|
27 | var str = "An error has occurred in this dialog." + "\n\n" |
---|
28 | + "Error: " + line + "\n" + message; |
---|
29 | alert(str); |
---|
30 | window.close(); |
---|
31 | return true; |
---|
32 | } |
---|
33 | |
---|
34 | function Init() { |
---|
35 | var elmSelectedImage; |
---|
36 | var htmlSelectionControl = "Control"; |
---|
37 | var globalDoc = window.dialogArguments; |
---|
38 | var grngMaster = globalDoc.selection.createRange(); |
---|
39 | |
---|
40 | // event handlers |
---|
41 | document.body.onkeypress = _CloseOnEsc; |
---|
42 | btnOK.onclick = new Function("btnOKClick()"); |
---|
43 | |
---|
44 | txtFileName.fImageLoaded = false; |
---|
45 | txtFileName.intImageWidth = 0; |
---|
46 | txtFileName.intImageHeight = 0; |
---|
47 | |
---|
48 | if (globalDoc.selection.type == htmlSelectionControl) { |
---|
49 | if (grngMaster.length == 1) { |
---|
50 | elmSelectedImage = grngMaster.item(0); |
---|
51 | if (elmSelectedImage.tagName == "IMG") { |
---|
52 | txtFileName.fImageLoaded = true; |
---|
53 | if (elmSelectedImage.src) { |
---|
54 | txtFileName.value = elmSelectedImage.src.replace(/^[^*]*(\*\*\*)/, "$1"); // fix placeholder src values that editor converted to abs paths |
---|
55 | txtFileName.intImageHeight = elmSelectedImage.height; |
---|
56 | txtFileName.intImageWidth = elmSelectedImage.width; |
---|
57 | txtVertical.value = elmSelectedImage.vspace; |
---|
58 | txtHorizontal.value = elmSelectedImage.hspace; |
---|
59 | txtBorder.value = elmSelectedImage.border; |
---|
60 | txtAltText.value = elmSelectedImage.alt; |
---|
61 | selAlignment.value = elmSelectedImage.align; |
---|
62 | } |
---|
63 | } |
---|
64 | } |
---|
65 | } |
---|
66 | txtFileName.value = txtFileName.value || "http://"; |
---|
67 | txtFileName.focus(); |
---|
68 | } |
---|
69 | |
---|
70 | function _isValidNumber(txtBox) { |
---|
71 | var val = parseInt(txtBox); |
---|
72 | if (isNaN(val) || val < 0 || val > 999) { return false; } |
---|
73 | return true; |
---|
74 | } |
---|
75 | |
---|
76 | function btnOKClick() { |
---|
77 | var elmImage; |
---|
78 | var intAlignment; |
---|
79 | var htmlSelectionControl = "Control"; |
---|
80 | var globalDoc = window.dialogArguments; |
---|
81 | var grngMaster = globalDoc.selection.createRange(); |
---|
82 | |
---|
83 | // error checking |
---|
84 | |
---|
85 | if (!txtFileName.value || txtFileName.value == "http://") { |
---|
86 | alert("Image URL must be specified."); |
---|
87 | txtFileName.focus(); |
---|
88 | return; |
---|
89 | } |
---|
90 | if (txtHorizontal.value && !_isValidNumber(txtHorizontal.value)) { |
---|
91 | alert("Horizontal spacing must be a number between 0 and 999."); |
---|
92 | txtHorizontal.focus(); |
---|
93 | return; |
---|
94 | } |
---|
95 | if (txtBorder.value && !_isValidNumber(txtBorder.value)) { |
---|
96 | alert("Border thickness must be a number between 0 and 999."); |
---|
97 | txtBorder.focus(); |
---|
98 | return; |
---|
99 | } |
---|
100 | if (txtVertical.value && !_isValidNumber(txtVertical.value)) { |
---|
101 | alert("Vertical spacing must be a number between 0 and 999."); |
---|
102 | txtVertical.focus(); |
---|
103 | return; |
---|
104 | } |
---|
105 | |
---|
106 | // delete selected content and replace with image |
---|
107 | if (globalDoc.selection.type == htmlSelectionControl && !txtFileName.fImageLoaded) { |
---|
108 | grngMaster.execCommand('Delete'); |
---|
109 | grngMaster = globalDoc.selection.createRange(); |
---|
110 | } |
---|
111 | |
---|
112 | idstr = "\" id=\"556e697175657e537472696e67"; // new image creation ID |
---|
113 | if (!txtFileName.fImageLoaded) { |
---|
114 | grngMaster.execCommand("InsertImage", false, idstr); |
---|
115 | elmImage = globalDoc.all['556e697175657e537472696e67']; |
---|
116 | elmImage.removeAttribute("id"); |
---|
117 | elmImage.removeAttribute("src"); |
---|
118 | grngMaster.moveStart("character", -1); |
---|
119 | } else { |
---|
120 | elmImage = grngMaster.item(0); |
---|
121 | if (elmImage.src != txtFileName.value) { |
---|
122 | grngMaster.execCommand('Delete'); |
---|
123 | grngMaster = globalDoc.selection.createRange(); |
---|
124 | grngMaster.execCommand("InsertImage", false, idstr); |
---|
125 | elmImage = globalDoc.all['556e697175657e537472696e67']; |
---|
126 | elmImage.removeAttribute("id"); |
---|
127 | elmImage.removeAttribute("src"); |
---|
128 | grngMaster.moveStart("character", -1); |
---|
129 | txtFileName.fImageLoaded = false; |
---|
130 | } |
---|
131 | grngMaster = _getTextRange(elmImage); |
---|
132 | } |
---|
133 | |
---|
134 | if (txtFileName.fImageLoaded) { |
---|
135 | elmImage.style.width = txtFileName.intImageWidth; |
---|
136 | elmImage.style.height = txtFileName.intImageHeight; |
---|
137 | } |
---|
138 | |
---|
139 | if (txtFileName.value.length > 2040) { |
---|
140 | txtFileName.value = txtFileName.value.substring(0,2040); |
---|
141 | } |
---|
142 | |
---|
143 | elmImage.src = txtFileName.value; |
---|
144 | |
---|
145 | if (txtHorizontal.value != "") { elmImage.hspace = parseInt(txtHorizontal.value); } |
---|
146 | else { elmImage.hspace = 0; } |
---|
147 | |
---|
148 | if (txtVertical.value != "") { elmImage.vspace = parseInt(txtVertical.value); } |
---|
149 | else { elmImage.vspace = 0; } |
---|
150 | |
---|
151 | elmImage.alt = txtAltText.value; |
---|
152 | |
---|
153 | if (txtBorder.value != "") { elmImage.border = parseInt(txtBorder.value); } |
---|
154 | else { elmImage.border = 0; } |
---|
155 | |
---|
156 | elmImage.align = selAlignment.value; |
---|
157 | grngMaster.collapse(false); |
---|
158 | grngMaster.select(); |
---|
159 | window.close(); |
---|
160 | } |
---|
161 | </SCRIPT> |
---|
162 | </HEAD> |
---|
163 | <BODY id=bdy onload="Init()" style="background: threedface; color: windowtext;" scroll=no> |
---|
164 | |
---|
165 | <DIV id=divFileName style="left: 0.98em; top: 1.2168em; width: 7em; height: 1.2168em; ">Image URL:</DIV> |
---|
166 | <INPUT ID=txtFileName type=text style="left: 8.54em; top: 1.0647em; width: 21.5em;height: 2.1294em; " tabIndex=10 onfocus="select()"> |
---|
167 | |
---|
168 | <DIV id=divAltText style="left: 0.98em; top: 4.1067em; width: 6.58em; height: 1.2168em; ">Alternate Text:</DIV> |
---|
169 | <INPUT type=text ID=txtAltText tabIndex=15 style="left: 8.54em; top: 3.8025em; width: 21.5em; height: 2.1294em; " onfocus="select()"> |
---|
170 | |
---|
171 | <FIELDSET id=fldLayout style="left: .9em; top: 7.1em; width: 17.08em; height: 7.6em;"> |
---|
172 | <LEGEND id=lgdLayout>Layout</LEGEND> |
---|
173 | </FIELDSET> |
---|
174 | |
---|
175 | <FIELDSET id=fldSpacing style="left: 18.9em; top: 7.1em; width: 11em; height: 7.6em;"> |
---|
176 | <LEGEND id=lgdSpacing>Spacing</LEGEND> |
---|
177 | </FIELDSET> |
---|
178 | |
---|
179 | <DIV id=divAlign style="left: 1.82em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Alignment:</DIV> |
---|
180 | <SELECT size=1 ID=selAlignment tabIndex=20 style="left: 10.36em; top: 8.8218em; width: 6.72em; height: 1.2168em; "> |
---|
181 | <OPTION id=optNotSet value=""> Not set </OPTION> |
---|
182 | <OPTION id=optLeft value=left> Left </OPTION> |
---|
183 | <OPTION id=optRight value=right> Right </OPTION> |
---|
184 | <OPTION id=optTexttop value=textTop> Texttop </OPTION> |
---|
185 | <OPTION id=optAbsMiddle value=absMiddle> Absmiddle </OPTION> |
---|
186 | <OPTION id=optBaseline value=baseline SELECTED> Baseline </OPTION> |
---|
187 | <OPTION id=optAbsBottom value=absBottom> Absbottom </OPTION> |
---|
188 | <OPTION id=optBottom value=bottom> Bottom </OPTION> |
---|
189 | <OPTION id=optMiddle value=middle> Middle </OPTION> |
---|
190 | <OPTION id=optTop value=top> Top </OPTION> |
---|
191 | </SELECT> |
---|
192 | |
---|
193 | <DIV id=divHoriz style="left: 19.88em; top: 9.126em; width: 4.76em; height: 1.2168em; ">Horizontal:</DIV> |
---|
194 | <INPUT ID=txtHorizontal style="left: 24.92em; top: 8.8218em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=25 onfocus="select()"> |
---|
195 | |
---|
196 | <DIV id=divBorder style="left: 1.82em; top: 12.0159em; width: 8.12em; height: 1.2168em; ">Border Thickness:</DIV> |
---|
197 | <INPUT ID=txtBorder style="left: 10.36em; top: 11.5596em; width: 6.72em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=21 onfocus="select()"> |
---|
198 | |
---|
199 | <DIV id=divVert style="left: 19.88em; top: 12.0159em; width: 3.64em; height: 1.2168em; ">Vertical:</DIV> |
---|
200 | <INPUT ID=txtVertical style="left: 24.92em; top: 11.5596em; width: 4.2em; height: 2.1294em; ime-mode: disabled;" type=text size=3 maxlength=3 value="" tabIndex=30 onfocus="select()"> |
---|
201 | |
---|
202 | <BUTTON ID=btnOK style="left: 31.36em; top: 1.0647em; width: 7em; height: 2.2em; " type=submit tabIndex=40>OK</BUTTON> |
---|
203 | <BUTTON ID=btnCancel style="left: 31.36em; top: 3.6504em; width: 7em; height: 2.2em; " type=reset tabIndex=45 onClick="window.close();">Cancel</BUTTON> |
---|
204 | |
---|
205 | </BODY> |
---|
206 | </HTML> |
---|