XssProxy = Class.create();

XssProxy.prototype = {

	initialize : function(proxy) {
		Event.observe(window, "load", function() {
			var el = document.createElement("iframe");
			el.id = "xss_frame";
			el.style.position = "absolute";
			el.style.visibility = "hidden";
			el.style.top = el.style.left = "0px";
			el.src = proxy;
			el.style.width = el.style.height = "100px";
			document.body.appendChild(el);
		});
	},
		
	send : function(frameId, message) {
		var el = $("xss_frame");
		var src = el.src;
		if (src.indexOf("#") != -1) {
			src = src.substr(0, src.indexOf("#"));
		}
		el.src = src + "#xss|" + frameId + "|" + message; 
		el.style.width = el.style.width == "100px" ? "101px" : "100px";
	}

};

Event.observe(window, "load", function() {
	Event.observe(window, "resize", function() {
		var hash = window.location.hash.substr(1);
		if (hash.indexOf("xss|") == 0) {
			hash = hash.substr(4);
			var delimIndex = hash.indexOf("|");
			var frameName = hash.substr(0, delimIndex);
			hash = hash.substr(delimIndex + 1);
			
			var doc = null;
			if (frameName != "_parent") {
				doc = parent.frames[frameName].document; 
			} else {
				doc = parent.parent.document; 
			}
			
			doc.fire("xss:message", { msg: hash });
		}
	});
});
