define([
    '/common/cryptget.js',
    '/bower_components/chainpad-crypto/crypto.js',
    '/bower_components/jquery/dist/jquery.min.js',
], function (Crypt, Crypto) {
    var $ = window.jQuery;
    var Nacl = window.nacl;

    var key = Nacl.randomBytes(32);

    var handleFile = function (body) {
        //console.log("plaintext");
        //console.log(body);

/*
        0 && Crypt.put(body, function (e, out) {
            if (e) { return void console.error(e); }
            if (out) {
                console.log(out);
            }
        }); */

        var data = {};

(function () {
        var cyphertext = data.payload = Crypto.encrypt(body, key);
        console.log("encrypted");
        console.log(cyphertext);

        console.log(data);

        var decrypted = Crypto.decrypt(cyphertext, key);
        //console.log('decrypted');
        //console.log(decrypted);


        if (decrypted !== body) {
            throw new Error("failed to maintain integrity with round trip");
        }

        // finding... files are entirely too large.


        console.log(data.payload.length, body.length); // 1491393, 588323
        console.log(body.length / data.payload.length); // 0.3944788529918003
        console.log(data.payload.length / body.length); // 2.534990132971174

/*

http://stackoverflow.com/questions/19959072/sending-binary-data-in-javascript-over-http

        // Since we deal with Firefox and Chrome only 
        var bytesToSend = [253, 0, 128, 1];
        var bytesArray = new Uint8Array(bytesToSend);

        $.ajax({
           url: '%your_service_url%',
           type: 'POST',
           contentType: 'application/octet-stream',  
           data: bytesArray,
           processData: false
        });
*/
})();
    };

    var $file = $('input[type="file"]');
    $file.on('change', function (e) { 
        var file = e.target.files[0];
        var reader = new FileReader();
        reader.onload = function (e) {
            handleFile(e.target.result);
        };
        reader.readAsText(file);
    });
});