Charter Redirect Redirector

By Tom W.M. Last update Mar 21, 2007 — Installed 148 times.
// ==UserScript==

// @name          Charter Redirect Redirector

// @namespace     http://freecog.net/2007/

// @include       http://*.charter.net/search*

// @description   Replaces Charter's irritating "search" page with something useful.

// ==/UserScript==



function sub_template(template, vars, filters) {
    return template.replace(/{{\s*([^}]+?)\s*}}/g, function(match, expr) {
        var chunks = expr.split(/\|/g);
        if (chunks[0] in vars) {
            var value = vars[chunks[0]];
            for (var i = 1; i < chunks.length; i++) {
                value = filters[chunks[i]](value);
            }
            return value;
        } else {
            return match;
        }
    });
}

var search = document.forms[0].elements.namedItem("qf").value;
var url = 'http://' + search;

var template_vars = {
    'url': url,
    'search': search,
};


var page_template = [
'<html><head><title>Charter Redirect: {{ search|escape }}</title></head>',
'<body>',
'<p>Stupid Charter seems to have redirected you.  Here are some useful tools:</p>',
'<p><input type="button" value="Retry" onclick="void(document.location.href = {{ url|string|escape }});" accesskey="r"></p>',
'<form action="http://www.google.com/search">',
'<p style="text-align: center"><input type="text" name="q", size="200" style="width: 90%" value="{{ search|escape }}"><br>',
    '<input type="submit" name="btnG" value="Google Search" accesskey="s">',
    '<input type="submit" name="btnI" value="I\'m Feeling Lucky" accesskey="l">',
'</p>',
'<hr>',
'<p><small><strong>Shortcuts:</strong> [Alt]+[r]: Retry, [Alt]+[s]: Google Search, [Alt]+[l]: I\'m Feeling Lucky</small></p>'
].join('\n');

var template_filters = {
    'escape': function(s) { return s.replace(/&|>|<|"/g, function(m) {
        return '&#' + m.charCodeAt(0) + ';' }); },
    'string': function(s) { return uneval('' + s); }
};

document.body.parentNode.innerHTML = sub_template(page_template, template_vars, template_filters);