ExternalInterface workaround

Because Flash cannot correctly convert JS objects to Flash objects and vice versa.

by James Greene

JavaScript

function charToZcHex(inputChar) {
    function pad_four(input) {
        var l = input.length;
        if (l == 0) return '0000';
        if (l == 1) return '000' + input;
        if (l == 2) return '00' + input;
        if (l == 3) return '0' + input;
        return input;
    }
    return "__ZC_HEX_" + pad_four(inputChar.charCodeAt(0).toString(16)) + "__";
}

function zcHexToChar(zcHex) {
    if (/^__ZC_HEX_[0-F]{4}__$/.test(zcHex)) {
        var hex = zcHex.slice(9, 13);
        return String.fromCharCode(parseInt(hex, 16));
    }
    return zcHex;
}

var hexSlash = charToZcHex("/").toUpperCase();
var dehexedSlash = zcHexToChar(hexSlash);

$("body").append($("<div/>").text("/ => " + hexSlash));
$("body").append($("<div/>").text(hexSlash + " => " + dehexedSlash));