/*
Rss Usability Options
by Chris Cherry (http://chrischerry.name)

To activate the functionality of this script place rss="rss" in link tags that point to the XML of RSS feeds.

*/

var RSSOpt = {};

function RSSOptClass() {
	if (!document.getElementsByTagName) return false;
	this.e = {};
	preloadHTML = '<img src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif" /><img runat="server" src="http://www.newsgator.com/images/ngsub1.gif" /><img src="http://i.feedster.com/fs10.gif" /><img src="http://www.bloglines.com/images/sub_modern5.gif" /><img src="http://www.rojo.com/skins/static/images/add-to-rojo.gif" /><img src="http://www.2RSS.com/2rss36x14.gif" /><img src="http://i.metarss.com/img/subtometa.png" />';
	
	setupDiv();
	setupLinks();
	
	if (typeof(_ajax_prototype_called) == 'undefined') {
		_ajax_prototype_called = true;
		RSSOptClass.prototype.setupDiv = setupDiv;
		RSSOptClass.prototype.setupLinks = setupLinks;
		RSSOptClass.prototype.addAbstractEvent = addAbstractEvent;
		RSSOptClass.prototype.evshowRssOptions = evshowRssOptions;
		RSSOptClass.prototype.showRssOptions = showRssOptions;
		RSSOptClass.prototype.evhideRssOptions = evhideRssOptions;
		RSSOptClass.prototype.hideRssOptions = hideRssOptions;
	}
	
	function evshowRssOptions(event) {
		if (!event) var e = window.event;
		var elm = event.target ? event.target : event.srcElement;
		if (elm.nodeName != 'A') elm = elm.parentNode;
		RSSOpt.showRssOptions(elm);
		event.cancelBubble = true;
		if (event.stopPropagation) event.stopPropagation();
		if (event.preventDefault) {
		    event.preventDefault();
		} else {
		    event.returnValue = false;
		};
	}
	
	function evhideRssOptions() {
		RSSOpt.hideRssOptions();
	}
	
	function hideRssOptions() {
		e.style.display = 'none';
		e.style.visibility = 'hidden';
	}
	
	function showRssOptions(obj) {
		url = "http://www.nrm.org";
		
		feeds = new Array();
		
		feeds[0] = '<a href="/rss/feed.xml">Raw XML</a>';		
		feeds[1] = '<a href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url='+url+'"><img runat="server" src="http://www.newsgator.com/images/ngsub1.gif" alt="Subscribe in NewsGator Online" /></a>';				feeds[2] = '<a href="http://www.feedster.com/myfeedster.php?action=addrss&rssurl='+url+'&confirm=no"><img border="0" src="http://i.feedster.com/fs10.gif" alt="Subscribe with myFeedster" /></a>';				feeds[3] = '<a href="http://www.bloglines.com/sub/'+url+'"><img src="http://www.bloglines.com/images/sub_modern5.gif" alt="Add to Bloglines" /></a>';			//	feeds[4] = '<a href="http://www.bloxor.com/add.php?url='+url+'" title="Add feed to t3h Blox0r"> <img src="http://www.bloxor.com/img/addbloxor.png" alt="Add feed to t3h Blox0r" /></a>';		
		feeds[5] = '<a href="http://www.rojo.com/add-subscription?resource='+url+'"><img src="http://www.rojo.com/skins/static/images/add-to-rojo.gif" alt="Subscribe in Rojo"></a>';		
		feeds[6] = '<a href="http://www.2RSS.com/news/?rss='+url+'"><img src="http://www.2RSS.com/2rss36x14.gif" /></a>';		
		feeds[7] = '<a href="http://i.metarss.com/options.php?addrss=y&rssfeed='+url+'"><img src="http://i.metarss.com/img/subtometa.png" alt="Add feed to MetaRSS" /></a>';
		
		feeds[8] = '<a href="http://www.feedbucket.com/get.php?src='+url+'&Submit=Get+it%21">FeedBucket</a>';
		feeds[9] = '<a href="http://fusion.google.com/add?feedurl='+url+'"><img src="http://buttons.googlesyndication.com/fusion/add.gif" alt="Add to Google" /></a>';
		feeds[10] = '<a href="http://add.my.yahoo.com/rss?url='+url+'"><img src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif" alt="Add to My Yahoo" /></a>';
		
		newx = getRealPos(obj, "x") + 'px';
		newy = getRealPos(obj, "y") + parseInt(obj.offsetHeight) + 'px';
		currx = e.style.left;
		curry = e.style.top;
		
		if ((curry == newy) && (currx == newx) && e.style.display != 'none') {
			hideRssOptions();
		} else {
			e.innerHTML = feeds.join("<br/>");
			e.style.top = newy;
			e.style.left = newx;
			e.style.display = 'block';
			e.style.visibility = 'visible';
		}

	}
	
	function getRealPos() {
		this.pos = (arguments[1] == 'x') ? arguments[0].offsetLeft : arguments[0].offsetTop;
		this.tmp = arguments[0].offsetParent;
		while(this.tmp != null)
		{
			this.pos += (arguments[1] == 'x') ? parseInt(this.tmp.offsetLeft) : parseInt(this.tmp.offsetTop);
			this.tmp = this.tmp.offsetParent;
		}
		
		return this.pos;
	}
	
	function setupLinks() {
		atags = document.getElementsByTagName("A");
		addAbstractEvent(document, "click", evhideRssOptions);
		for (i=0; i < atags.length; i++) {
			if (atags[i].getAttribute("rss")) {
				addAbstractEvent(atags[i], "click", evshowRssOptions);
			}
		}
	}
	
	function setupDiv() {
		e = document.createElement('div');
		document.getElementsByTagName('body')[0].appendChild(e);
		e.id = "rssoptdiv";
		e.style.position = 'absolute';
		e.style.visibility = 'hidden';
		e.style.display = 'none';
		e.style.font = 'normal .8em sans-serif';
		e.style.backgroundColor = '#fff';
		e.style.border	= "1px solid #999";
		e.style.padding 	= '5px';
		e.style.zIndex		= 10000;
		e.innerHTML = this.preloadHTML;
	}
	
	function addAbstractEvent(obj, evType, fn) {
		if (obj.addEventListener){
			obj.addEventListener(evType, fn, false);
			return true;
		} else if (obj.attachEvent){
			var r = obj.attachEvent("on"+evType, fn);
			return r;
		} else {
			return false;
		}
	}
}

function setupRssOpt() {
	var oldonload = window.onload;
	if (typeof window.onload != 'function') {
		window.onload = function() {RSSOpt = new RSSOptClass();};
	} else {
		window.onload = function() {
			oldonload();
			RSSOpt = new RSSOptClass();
		}
	}
}

setupRssOpt();
