Files
2017-01-18 10:30:17 +09:00

126 lines
3.9 KiB
JavaScript

// ================================================================
// CHEditor 5
// ================================================================
var oEditor = null,
button = [
{ alt : "", img : 'submit.gif', cmd : returnSelected },
{ alt : "", img : 'cancel.gif', cmd : popupClose }
];
function resetValues() {
document.getElementById('fm_link_value').value = 'http://';
document.getElementById("fm_title").value = '';
}
function popupClose() {
oEditor.popupWinCancel();
}
function updateProtocol() {
var selectedItem = protocolSel.selectedIndex,
selectedItemValue = protocolSel.options[selectedItem].value,
inputtedText = document.getElementById("fm_link_value").value,
datum,
protocol = inputtedText.split(":");
if (protocol[1]) {
datum = protocol[1].replace(/^\/\//, "");
datum = datum.replace(/\\/, "");
datum = datum.replace(/^\//, "");
} else {
if (inputtedText.indexOf(":") > 0) {
datum = "";
} else {
datum = protocol[0].replace(/^\/\/\//, "//");
}
}
document.getElementById("fm_link_value").value = selectedItemValue + datum;
document.getElementById("fm_link_value").focus();
}
function returnSelected() {
var text, target = '', title = '';
if (document.getElementById("fm_link_value").value !== "") {
text = document.getElementById("fm_link_value").value;
} else {
alert("링크 URL을 입력하여 주십시오.");
return false;
}
if (document.getElementById("fm_target").value !== "") {
target = document.getElementById("fm_target").value;
}
if (document.getElementById("fm_title").value !== "") {
title = document.getElementById("fm_title").value;
}
if ((/^(http|https|file|ftp|mailto|gopher|news|telnet|):\/\//i.test(text)) === false &&
(/^(wias|javascript):/i.test(text) === false))
{
text = "http://" + text;
}
oEditor.hyperLink(text, target, title);
oEditor.popupWinClose();
}
function getSelected() {
var rng = oEditor.range, link = null, protocol, protocolSel, i, oldTarget, targetSel, j;
if (window.getSelection) {
link = oEditor.getElement(rng.startContainer, "A");
} else {
link = rng.parentElement ? oEditor.getElement(rng.parentElement(), "A") : oEditor.getElement(rng.item(0), "A");
}
if (link === null || link.nodeName.toLowerCase() !== 'a') {
return;
}
protocol = link.href.split(":");
if (protocol[0]) {
protocolSel = document.getElementById("fm_protocol");
for (i = 0; i < protocolSel.length; i++) {
if (protocolSel[i].value.indexOf(protocol[0].toLowerCase()) !== -1) {
oldTarget = link.target;
targetSel = document.getElementById("fm_target");
if (oldTarget) {
for (j = 0; j < targetSel.length; j++) {
if (targetSel[j].value === oldTarget.toLowerCase()) {
targetSel[j].selected = true;
break;
}
}
} else {
targetSel[0].selected = true;
}
protocolSel[i].selected = true;
if (link.title) {
document.getElementById("fm_title").value = link.title;
}
break;
}
}
}
document.getElementById("fm_link_value").value = link.href;
}
function init(dialog) {
oEditor = this;
oEditor.dialog = dialog;
resetValues();
getSelected();
var dlg = new Dialog(oEditor);
dlg.showButton(button);
dlg.setDialogHeight();
}