<?xml version="1.0" encoding="UTF-8" ?>

<Module>
<ModulePrefs title="Simple proxy"
             description="Just a simple proxy">
        <Require feature="opensocial-0.7" />

        <Require feature="dynamic-height" />
        <Require feature="analytics" />
        <Require feature="skins" />

</ModulePrefs>
<Content type="html">
<![CDATA[
<script type="text/javascript">


// Not everyone has firebug... if you don't have it, get it at http://getfirebug.com.  If you do, console.log logs error messages.
if(!console) {
  var console = {}
  console.log = function(text){
    return
  }
}

function getDomain(url) {
    var reg = (/http:\/\/[^\/\?]*/);
    return reg.exec(url);
}

if (!NING) { var NING = {}; }
NING.openSocial = NING.openSocial || {};
NING.openSocial.LoadUrl = function(url) {

    var local_url = url;
    var orig_domain = getDomain(url);
    
    function fix_domain(new_domain, url) {
	var reg = new RegExp(new_domain  + "/gadgets", "g");
	url = url.replace(reg, orig_domain);
	reg = new RegExp(new_domain, "g");
	url = url.replace(reg, orig_domain);
	return url;
    }
    return me = {
	    loadPage: function() {
		var tmp = function(obj) {
		    var head = document.getElementsByTagName('head')[0];
		    head.innerHTML = "";
		   
		    var new_domain = getDomain(document.location);
		    var str = obj.text;
		    var div = document.createElement('div');
		    div.innerHTML = str;

		    if (false) {
			str = str.replace(/\</g, '&lt;'); 
			str = str.replace(/\>/g, '&gt;'); 
			str = str.replace(/\n/g, '\n<br />');
			
			str = str.replace(/  /g, ' &nbsp;'); 
			str = str.replace(/\t/g, '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;'); 
		    }
		    var a_tags = div.getElementsByTagName('a');
		    for (var i = 0; i < a_tags.length; i++) {
			var a_tag = a_tags[i];
			if (a_tag.href && a_tag.href != "" && a_tag.href.substr(0, 11) != "javascript:") {
			    var href = fix_domain(new_domain, a_tag.href);
			    if (!a_tag.target) {
				a_tag.href = "javascript:loadurl('" + a_tag.href + "')";
			    } else {
				a_tag.href = href;
			    }
			}
		    }
		    var post_ajaxs = div.getElementsByTagName('script');
		    for (var ajax_i = 0; ajax_i < post_ajaxs.length; ajax_i++) {
			if (post_ajaxs[ajax_i].innerHTML) {
			    setTimeout(post_ajaxs[ajax_i].innerHTML, 0);
			}
			if (post_ajaxs[ajax_i].src) {
			    post_ajaxs[ajax_i].src = fix_domain(new_domain, post_ajaxs[ajax_i].src);
			    head.appendChild(post_ajaxs[ajax_i].cloneNode(true));
			}
		    }
		    document.getElementById('handler').innerHTML = "<base href='" + url + "'>" + div.innerHTML;
		    gadgets.window.adjustHeight();
		};	
		var params = {};
		params[gadgets.io.RequestParameters.CONTENT_TYPE] = gadgets.io.ContentType.DOM;
		// url = "http://www.google.com/ig/api?weather=san+jose+ca";
		// url = "http://javascript.cybersquad.net/open_social.xml";
		// We're calling the XML API - the callback is onLoadAPI.
		gadgets.io.makeRequest(local_url, tmp, params);
	    },
	    
	    init: function() {
                        // We're setting the CSS attributes of devonlyfooter to
                 // the default colors of the theme skin.  We do this in JS.  If you're not using YUI, try the following:

                        // document.getElementById("element").style.bgColor = gadgets.skins.getProperty(gadgets.skins.Property.BG_COLOR);
		this.loadPage();
	    }
        };

        // return me;

};

function loadurl(url) {
    NING.openSocial.LoadUrl(url).init();
    document.getElementById('proxy_url').value = url;
}

function load(form) {
    loadurl(form["url"].value);
    return false;
}
</script>
<base href="" />
<style type="text/css">
#handler {
    position: relative;
}
</style>
<form onsubmit="return load(this);">
<input type=text name="url" id="proxy_url" value="http://www.google.com/" size=60 />
<input type=submit value="Load Url" />
</form>
<div id="handler">
</div>
]]>
</Content>
</Module>
