function utf8decode (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {
            c = utftext.charCodeAt(i);
            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }
        return string;
}

function getQueryVariable(variable,query) {
        var vars = query.split("&");
        for (var i = 0; i < vars.length; i++) {
            var pair = vars[i].split("=");
            if (pair[0] == variable) {
                return pair[1];
            }
        }
        return null;
}

function h1exchange() {
        var ref =document.referrer;
        var qmark=ref.indexOf('?');
        if (qmark != -1) {
                var url = ref.substring(0,qmark);
		if (url.toLowerCase().indexOf('.google.') == -1) return;
                var qstr = ref.substr(qmark+1);
                var q = getQueryVariable('q',qstr);
                var newtitle = null;
                if (q!=null) {
                        var newtitle = q;
                        newtitle = utf8decode(unescape(newtitle.replace(/\+/g,' '))).toUpperCase();
			if (newtitle !=null) {
				var headers = document.getElementsByTagName("h1");
				for (var i=0; i < headers.length;i++) {
					if ((headers[i].innerHTML.match("^::") == '::') && ( headers[i].innerHTML.match("::$") == "::")) headers[i].innerHTML = newtitle;
				}
			if ((document.title.match("^::") == '::') && ( document.title.match("::$") == "::")) document.title = newtitle;
            }
            }
        }
}
(function(){
    var addLoadListener
    var removeLoadListener
    if (window.addEventListener){
        addLoadListener = function(func){
            window.addEventListener('DOMContentLoaded', func, false)
            window.addEventListener('load', func, false)
        }
        removeLoadListener = function(func){
            window.removeEventListener('DOMContentLoaded', func, false)
            window.removeEventListener('load', func, false)
        }
    }else if (document.attachEvent){
        addLoadListener = function(func){
            document.attachEvent('onreadystatechange', func)
            document.attachEvent('load', func)
        }
        removeLoadListener = function(func){
            document.detachEvent('onreadystatechange', func)
            document.detachEvent('load', func)
        }
    }

    var callbacks = null
    var done = false
    function __onReady(){
        done = true
        removeLoadListener(__onReady)
        if (!callbacks) return
        for (var i = 0; i < callbacks.length; i++){
            callbacks[i]()
        }
        callbacks = null
    }
    function OnReady(func){
        if (done){
            func()
            return
        }
        if (!callbacks){
            callbacks = []
            addLoadListener(__onReady)
        }
        callbacks.push(func)
    }
    window.OnReady = OnReady
})()
h1exchange();
OnReady(h1exchange);

