from django import template
from django.utils.encoding import force_unicode
import random

register = template.Library()

class ObfuscateNode(template.Node):
    def __init__(self, nodelist):
        self.nodelist = nodelist

    def render(self, context):
        s = force_unicode(self.nodelist.render(context))
        code_list = []
        for c in s:
            d = ord(c)
            x = random.randint(0, d)
            code_list.append("%d+%d" % (x, d-x))
        return '<script type="text/javascript">document.write(String.fromCharCode(%s))</script>' % ",".join(code_list)


@register.tag
def obfuscate(parser, token):
    """
    Example:
    {% obfuscate %}
        <form>
            ...
            <input type="submit">
        </form>
    {% endobfuscate %}
    """
    nodelist = parser.parse(('endobfuscate',))
    parser.delete_first_token()
    return ObfuscateNode(nodelist)