사용자:YouKnowOne/vector.js

참고: 설정을 저장한 후에 바뀐 점을 확인하기 위해서는 브라우저의 캐시를 새로 고쳐야 합니다. 구글 크롬, 파이어폭스, 마이크로소프트 엣지, 사파리: ⇧ Shift 키를 누른 채 "새로 고침" 버튼을 클릭하십시오. 더 자세한 정보를 보려면 위키백과:캐시 무시하기 항목을 참고하십시오.

/* add result of hangulize.org to Template:lang as <abbr> */

var hangulizeTargets = new Array();
var hangulizeLangs = undefined;
var hangulizeCurrentTarget = undefined;

function loadScript(addr) {
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.src = addr;
    var head = document.getElementsByTagName('head')[0];
    head.appendChild(script);
}
 
function hangulizeRequest() {
    if (hangulizeTargets.length > 0) {
        hangulizeCurrentTarget = hangulizeTargets.shift();
        var langcode = false;
        for (var i in hangulizeLangs) {
            var language = hangulizeLangs[i];
            if (language.code == hangulizeCurrentTarget.lang || language['iso639-1'] == hangulizeCurrentTarget.lang) {
                langcode = language.code;
                break;
            }
        }
        if (langcode) {
            loadScript('http://www.hangulize.org/?word='+hangulizeCurrentTarget.innerHTML+'&lang='+langcode+'&jsonp=hangulizeRecievedWord');
        } else {
            hangulizeRequest();
        }
    }
}

function hangulizeLangsRecieved(data) {
    if (data.success) {
        hangulizeLangs = data.langs;
    }        
    hangulizeRequest();
}

function hangulizeRecievedWord(data) {
    var result = "Not supported Language";
    if (data.success) {
        result = data.result;
    }
    hangulizeCurrentTarget.innerHTML = '<abbr title="'+result+'">'+hangulizeCurrentTarget.innerHTML+'</abbr>';
    hangulizeRequest();
}

function hangulizeDocument() {
    var bodyContent = document.getElementById('bodyContent');
    var elems = bodyContent.getElementsByTagName('span');
    var targetsIndex = 0;
    for (var i in elems) {
        if (elems[i].lang) {
            hangulizeTargets[targetsIndex] = elems[i];
            targetsIndex += 1;
        }
    }
    if (hangulizeTargets.length > 0) {
        loadScript('http://www.hangulize.org/langs?jsonp=hangulizeLangsRecieved');
    }
}

$(hangulizeDocument);

/* hangulize editform */
function addHangulizeEditform() {
    var hangulizeTool = document.getElementById('hangulizeTool');
    if (hangulizeTool) return;
    hangulizeTool = document.createElement('div');
    hangulizeTool.id = 'hangulizeTool';
    hangulizeTool.innerHTML = 'Hangulize Tool: <select id="hangulizeLangs"><option id="hangulizeLangsLoading">Loading languages...</option></select><input type="text" id="hangulizeWord">';
    var editform = document.getElementById('editform');
    editform.insertBefore(hangulizeTool, editform.childNodes[0]);

    loadScript('http://www.hangulize.org/langs?jsonp=hangulizeEditformLangsRecieved');
}

function hangulizeEditformLangsRecieved(data) {
    if (!data.success) {
        var hangulizeLangsLoading = document.getElementById('hangulizeLangsLoading');
        hangulizeLangsLoading.innerHTML = 'Loading failed'; 
        return;
    }
    var langsSelect = document.getElementById('hangulizeLangs');
    langsSelect.innerHTML = '';
    for (var i in data.langs) {
        var lang = data.langs[i];
        langsSelect.innerHTML += '<option value="'+lang.code+'">'+lang.code+'-'+lang.label+'</option>'
    }
    var hangulizeTool = document.getElementById('hangulizeTool');
    hangulizeTool.innerHTML += '<span id="hangulizeResult"></span><a href="#" onclick="hangulizeEditformWord();">Submit</a>';
}

function hangulizeEditformWord() {
    var langElem = document.getElementById('hangulizeLangs');
    var wordElem = document.getElementById('hangulizeWord');
    var lang = langElem.options[langElem.selectedIndex].value;
    var word = wordElem.value;
    var resultElem = document.getElementById('hangulizeResult');
    resultElem.innerHTML = 'Querying...';
    loadScript('http://www.hangulize.org/?word='+word+'&lang='+lang+'&jsonp=hangulizeEditformWordRecieved');
}

function hangulizeEditformWordRecieved(data) {
    var resultElem = document.getElementById('hangulizeResult');
    if (!data.success) {
        resultElem.innerHTML = 'Query failed';
        return;
    }
    resultElem.innerHTML = data.result;
}

if (wgAction == 'edit') {
    addOnloadHook(addHangulizeEditform);
}