[795] | 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> |
---|