softwarekeyboard.

オンラインバンクのログイン時に使うソフトウェアキーボード的なことを書いてみたよ。

//window
window.onload = main;

//variable!
var hiddenStatus = false;
var upperOrLower = false;
var Text = "";
var alphabet = new Array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');


function main() {
    alphabet.shuffle();
    alphabet.keyboardMapping();
}

//keyboardMapping
Array.prototype.keyboardMapping = function() {
    var len = this.length;
    if (upperOrLower) {
        while (len) {
            this[len-1] = this[len-1].toUpperCase();
            --len;
        }
    } else {
        while(len) {
            this[len-1] = this[len-1].toLowerCase();
            --len;
        }
    }
    //lenを使っちゃたんでもう一度宣言(´・ω・`)
    var len = this.length;
    while(len) {
        document.getElementById("char" +len).innerHTML ="<a href=\"javascript:void(0)\" onClick=\"pressKey('" +alphabet[len-1]+ "')\">" +alphabet[len-1]+ "</a>";
        --len;
    }
}


function pressKey(char) {
    if (char == 'delete') {
        Text = Text.substring(0,Text.length-1);
    } else {
        Text = Text.concat(char);
    }
    if (hiddenStatus) {
        document.Form.output.value = Text.hidden();
    } else {
        document.Form.output.value = Text;
    }
}

function getCheck(obj) {
    if (obj.checked) {
        hiddenStatus = true;
        document.Form.output.value = Text.hidden();
    } else {
        hiddenStatus = false;
        document.Form.output.value = Text;
    }
}

function getLowUp(obj) {
    if (obj.checked) {
        upperOrLower = true;
        alphabet.keyboardMapping();
    } else {
        upperOrLower = false;
        alphabet.keyboardMapping();
    }
}

function send2alert() {
    alert(Text);
}

//text hidden
String.prototype.hidden = function() {
    var i = this.length;
    res = "";
    while (i) {
        res = res.concat("*");
        --i;
    }
    return res;
}

//shuffle
Array.prototype.shuffle = function() {
    var i = this.length;
    while(i) {
        var j = Math.floor(Math.random()*i);
        var t = this[--i];
        this[i] = this[j];
        this[j] = t;
    }
    return this;
}

配列のシャッフルとか //shuffle
文字列の置き換えとか //text hidden
なんかjavascript書けるような気がしてきた。
次は非同期通信だぜ☆ミ