// JavaScript Document

var memorywidth; //scroller width

var memoryspeed=1 //Scroller speed (larger is faster 1-10)
var pauseit=1 //Pause scroller onMousever (0=no. 1=yes)?

var persistlastviewedmsg=1 //should scroller's position persist after users navigate away (1=yes, 0=no)?
var persistmsgbehavior="onload" //set to "onload" or "onclick".

var divonclick=(persistlastviewedmsg && persistmsgbehavior=="onclick")? 'onClick="ticker.savelastmsg()" ' : ''
memoryspeed=(document.all)? memoryspeed : Math.max(1, memoryspeed-1) //slow speed down by 1 for NS
var copyspeed=memoryspeed
var pausespeed=(pauseit==0)? copyspeed: 0
var iedom=document.all||document.getElementById

var actualwidth=''
var memoryscroller
	
	var ticker = {
		items: new Array(),
		tickerData: '',
		init: function() {	
		
			memorywidth = document.getElementById('tickerPH').offsetWidth;
		
			if (!Sarissa || !document.getElementsByTagName) return;
			
			ticker.getItems();
		
			if (persistlastviewedmsg && persistmsgbehavior=="onload")
				addEvent(window, 'unload', ticker.savelastmsg, false)			
				
			if (iedom){
				var p = document.getElementById('tickerPH');
				
				var dMemScr = document.createElement('div');
				dMemScr.id = 'memoryscroller';
				dMemScr.style.position = 'absolute';
				dMemScr.style.left = '0px';
				dMemScr.style.top = '0px';
				dMemScr.onClick = divonclick;
				
				p.appendChild(dMemScr);
				
				//addEvent(document.getElementById('tickerPH'), 'mouseover', function() {"copyspeed=pausespeed"}, false);
				//addEvent(document.getElementById('tickerPH'), 'mouseout', function() {"copyspeed=memoryspeed" }, false); 

			}
							
		},
		getItems: function() {
			ticker.getUrl('http://www.st-johns.org/data/news_ticker.xml', ticker.addItems);	
		},
		getUrl: function(u, fn) {
			var xmlhttp = Sarissa.getXmlHttpRequest();
			xmlhttp.open('GET', u, true);
			xmlhttp.onreadystatechange = function() {
				if (xmlhttp.readyState == 4) {
					fn(xmlhttp.responseText);
				}
			}
			xmlhttp.send(null);
		},
		addItems: function(tickerXml) {
	
			var dom = Sarissa.getDomDocument();
			dom.loadXML(tickerXml);
			
			dom.setProperty('SelectionNamespaces',
				'xmlns:xsl="http://www.w3.org/1999/XSL/Transform"');
			dom.setProperty('SelectionLanguage',
				'XPath');
						
			var newsNodes = dom.selectNodes('//news_item');

			for (var i = 0; i < newsNodes.length; i++) {
						
				var s = '<a href="' + newsNodes[i].selectSingleNode('news_url').firstChild.nodeValue + '" target="_blank">';
				s += newsNodes[i].selectSingleNode('news_txt').firstChild.nodeValue;
				s += '</a>';
				ticker.items[i] = s;				
				s = '';
			
				
			}
			
			ticker.populatescroller();			
			
		},		
		populatescroller: function() {
			memoryscroller = document.getElementById ? 
				document.getElementById('memoryscroller') : document.all.memoryscroller;
			memoryscroller.style.left = parseInt(memorywidth) + 8 + 'px';
			if (persistlastviewedmsg && get_cookie('lastscrollerpos') != '')
				ticker.revivelastmsg()
				
			var s = '<nobr>';
			for (var i = 0; i < ticker.items.length; i++ ) {
				s += ticker.items[i]
				if (i != ticker.items.length -1)
					s += '   |   '
				else
					s += '&nbsp;'
			}
			s += '</nobr>';	
			
			ticker.tickerData = s;
			
			memoryscroller.innerHTML = s;
			
			//actualwidth = document.all ? memoryscroller.offsetWidth : document.getElementById('memoryscroller').offsetWidth
			actualwidth = 520;
			lefttime = setInterval('ticker.scrollmarquee()',20)	
		},
		savelastmsg: function() {
			document.cookie = 'lastscrollerpos=' + memoryscroller.style.left;
		},
		revivelastmsg: function() {
			lastscrollerpos = parseInt(get_cookie('lastscrollerpos'));
			memoryscroller.style.left = parseInt(lastscrollerpos) + 'px';
		},
		scrollmarquee: function() {
			if (parseInt(memoryscroller.style.left) > (actualwidth * (-1) + 8))
				memoryscroller.style.left = parseInt(memoryscroller.style.left) - copyspeed + 'px'
			else
				memoryscroller.style.left = parseInt(memorywidth) + 8 + 'px'
		}			
	}
	
