<?php
defined('BASEPATH') OR exit('No direct script access allowed');

if($type == 'url') { ?>

<script type="text/javascript">
    $('#url-encode #submit').click(function() {
        url_encoder(url_getSelected());
    });
    $('#url-encode .radio-inline').change(function() {
        $('#url-encode #submit').text(url_getSelected());
        if(url_getSelected() == '<?= lang('url_encode'); ?>') {
            var input = '<?= lang('url_input2'); ?>';
            var output = '<?= lang('url_output2'); ?>';
        } else if (url_getSelected() == '<?= lang('url_decode'); ?>') {
            var input = '<?= lang('url_input3'); ?>';
            var output = '<?= lang('url_output3'); ?>';
        }
        $('#url-encode #input').attr('placeholder', input);
        $('#url-encode #output').attr('placeholder', output);
    });

    var url_getSelected = function() {
        var selectedMethod = "";
        var selected = $("input[type='radio'][name=encodeDecode]:checked");
        if(selected.length > 0) {
            selectedMethod = selected.val();
        }
        return selectedMethod;
    }

    var url_encoder = function(selectedMethod) {
        var text = $('#url-encode #input').val();

        if(selectedMethod == '<?= lang('url_encode'); ?>') {
            var output = encodeURIComponent(text);
        } else {
            var output = decodeURIComponent(text);
        }

        $('#url-encode #output').text(output);
    }
</script>

<?php } elseif($type == 'base64') { ?>

    <script type="text/javascript">
        jQuery.base64 = (function($) {
            var _PADCHAR = "=",
                _ALPHA = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
                _VERSION = "1.0";

            function _getbyte64(s, i) {
                var idx = _ALPHA.indexOf(s.charAt(i));
                if(idx === -1) {
                    throw "Cannot decode base64";
                }

                return idx;
            }

            function _decode(s) {
                var pads = 0,
                    i,
                    b10,
                    imax = s.length,
                    x = [];

                s = String(s);

                if(imax % 4 !== 0) {
                    throw "Cannot decode base64";
                }
                if(s.charAt(imax - 1) === _PADCHAR) {
                    pads = 1;
                    if(s.charAt(imax-2) === _PADCHAR) {
                        pads = 2;
                    }
                    imax -= 4;
                }

                for(i = 0; i < imax; i += 4) {
                    b10 = (_getbyte64(s,i) << 18) | (_getbyte64(s,i+1) << 12) | (_getbyte64(s,i+2) << 6) | (_getbyte64(s,i + 3));
                    x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));
                }

                switch (pads) {
                    case 1:
                        b10 = (_getbyte64(s,i) << 18) | (_getbyte64(s,i+1) << 12) | (_getbyte64(s,i+2) << 6);
                        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));
                        break;
                    case 2:
                        b10 = (_getbyte64(s,i) << 18) | (_getbyte64(s,i+1) << 12);
                        x.push(String.fromCharCode(b10 >> 16));
                        break;
                }

                return x.join("");
            }

            function _getbyte(s,i) {
                var x = s.charCodeAt(i);

                if(x > 255) {
                    throw "INVALID_CHARACTER_ERR: DOM Exeption 5";
                }

                return x;
            }

            function _encode(s) {
                if(arguments.length !== 1) {
                    throw "SyntaxError: exactly one argument required";
                }

                s = String(s);

                var i,
                    b10,
                    x = [],
                    imax = s.length - s.length % 3;

                if(s.length === 0) {
                    return s;
                }

                for(i = 0; i < imax; i += 3) {
                    b10 = (_getbyte(s,i) << 16) | (_getbyte(s,i+1) << 8) | _getbyte(s,i+2);
                    x.push(_ALPHA.charAt(b10 >> 18));
                    x.push(_ALPHA.charAt((b10 >> 12) & 0x3F));
                    x.push(_ALPHA.charAt((b10 >> 6) & 0x3F));
                    x.push(_ALPHA.charAt(b10 & 0x3F));
                }

                switch (s.length -imax) {
                    case 1:
                        b10 = _getbyte(s,i) << 16;
                        x.push(_ALPHA.charAt(b10 >> 18) + _ALPHA.charAt((b10 >> 12) & 0x3F) + _PADCHAR + _PADCHAR);
                        break;
                    case 2:
                        b10 = (_getbyte(s,i) << 16) (_getbyte(s,i+1) << 8);
                        x.push(_ALPHA.charAt(b10 >> 18) + _ALPHA.charAt((b10 >> 12) & 0x3F) + _ALPHA.charAt((b10 >> 6) & 0x3f) + _PADCHAR);
                        break;
                }

                return x.join("");
            }

            return {
                decode: _decode,
                encode: _encode,
                VERSION: _VERSION
            };

        }(jQuery));


        $('#base64-encode #submit').click(function() {
            base64_encoder(base64_getSelected());
        });
        $('#base64-encode .radio-inline').change(function() {
            $('#base64-encode #submit').text(base64_getSelected());
            if(base64_getSelected() == '<?= lang('base64_encode'); ?>') {
                var input = '<?= lang('base64_input2'); ?>';
                var output = '<?= lang('base64_output2'); ?>';
            } else if (base64_getSelected() == '<?= lang('base64_decode'); ?>') {
                var input = '<?= lang('base64_input3'); ?>';
                var output = '<?= lang('base64_output3'); ?>';
            }
            $('#base64-encode #input').attr('placeholder', input);
            $('#base64-encode #output').attr('placeholder', output);
        });

        var base64_getSelected = function() {
            var selectedMethod = "";
            var selected = $("input[type='radio'][name=encodeDecode]:checked");
            if(selected.length > 0) {
                selectedMethod = selected.val();
            }
            return selectedMethod;
        }

        var base64_encoder = function(selectedMethod) {
            var text = $('#base64-encode #input').val();

            if(selectedMethod == '<?= lang('base64_encode'); ?>') {
                var output = $.base64.encode(text);
            } else {
                var output = $.base64.decode(text);
            }

            $('#base64-encode #output').text(output);
        }
    </script>


<?php }?>