// JavaScript Document
/**
	Uniwits System, 2011.  All rights reserved.
	http://www.uniwits.com
	* This is NOT a general purpose library, and is project specific.
**/

var RSS_LOADING_OBJS=new Array();

function updateRSSPanel(RSSPanelContainer_obj,rssurl,options)
{
	var RSSPanelContainer=RSSPanelContainer_obj;
	var loadingdivobj=document.createElement('DIV');
	if (options.loaderimg)
	{
		loadingdivobj.align='center';
		loadingdivobj.appendChild(document.createElement('IMG')).src=options.loaderimg;
	}
	RSSPanelContainer.appendChild(loadingdivobj);
	var idx=RSS_LOADING_OBJS.length++;
	var rlo=RSS_LOADING_OBJS[idx]={
		RSSPanelContainer_obj: RSSPanelContainer_obj,
		rssurl: rssurl,
		loadingdivobj: loadingdivobj,
		options: options,
		xmlhttprequest : null,
		scrollStepCount: 0,
		scrollStepSize: 0
	};
	window.setTimeout('updateRSSPanel_load_event('+idx+')',100);
	UNIWITS.Toolbox.preload_image(UNIWITS.Toolbox.getopt(rlo.options,'scrollUpImg',''),UNIWITS.Toolbox.getopt(rlo.options,'scrollDownImg',''));
}

function updateRSSPanel_load_event(idx)
{
	var rlo=RSS_LOADING_OBJS[idx];
	var f,url=rlo.rssurl;
	eval("f=function () {updateRSSPanel_load_event_handler("+idx+");}");
	rlo.xmlhttprequest=UNIWITS.Toolbox.getXMLHttpRequest(f);
	rlo.xmlhttprequest.open('GET',url,true,null,null);
	rlo.xmlhttprequest.send();
}

function updateRSSPanel_load_event_handler(idx)
{
	var rlo=RSS_LOADING_OBJS[idx];
	if (rlo.xmlhttprequest.readyState==4 && rlo.xmlhttprequest.status==200)
		updateRSSPanel_fulfill(idx,rlo.xmlhttprequest.responseXML);
}

function updateRSSPanel_fulfill(idx,feedxml)
{
	var rlo=RSS_LOADING_OBJS[idx];
	
	RSSPanelContainer_obj=rlo.RSSPanelContainer_obj;
	loadingdivobj=rlo.loadingdivobj;
	options=rlo.options;
	
	var RSSPanelContainer=RSSPanelContainer_obj;

	var items=feedxml.getElementsByTagName('item');

	RSSPanelContainer.removeChild(loadingdivobj);
	delete loadingdivobj;

	if (items.length>0)
	{
		var totaltitle=feedxml.getElementsByTagName('title');
	
		var RSSPanelTitle=document.createElement('DIV');
		var RSSPanel=document.createElement('DIV');
		var RSSContents=document.createElement('DIV');
		rlo.RSSPanelTitle=RSSPanelTitle;
		rlo.RSSPanel=RSSPanel;
		rlo.RSSContents=RSSContents;
		RSSPanelContainer.style.display='block';
		RSSPanelTitle.className="normallabelBG";
		RSSPanelTitle.appendChild(document.createElement('SPAN')).innerHTML=options.usetitletext?options.usetitletext:totaltitle[0].childNodes[0].data;
		RSSPanel.className="normalinputBG fullwidthScrollPatch thinborder";
		
		for (var ii=0;ii<items.length;ii++)
		{
			var title=items[ii].getElementsByTagName('title');
			var link=items[ii].getElementsByTagName('link');
			var pubDate=items[ii].getElementsByTagName('pubDate');
			var description=items[ii].getElementsByTagName('description');
			var localDate=new Date();
			localDate.setTime(Date.parse(pubDate[0].childNodes[0].data));
	
			var titledivobj=document.createElement('DIV');
			var titleanchorobj=document.createElement('A');
			var datedivobj=document.createElement('SPAN');
			var descriptionobj=document.createElement('DIV');
			var emptylineobj=document.createElement('DIV');
			titleanchorobj.href=link[0].childNodes[0].data;
			titleanchorobj.appendChild(document.createElement('SPAN')).innerHTML=title[0].childNodes[0].data;
			titleanchorobj.target='rsssource';
			titledivobj.align="left";
			if (options.hidetitle!='1')
			{
				titledivobj.appendChild(titleanchorobj);
				titledivobj.appendChild(document.createElement('SPAN')).innerHTML='&nbsp;&nbsp;&nbsp;&nbsp;';
			}
			datedivobj.appendChild(document.createElement('SPAN')).innerHTML=localDate.toLocaleString();
			titledivobj.appendChild(datedivobj);
			descriptionobj.appendChild(document.createElement('SPAN')).innerHTML=UNIWITS.Toolbox.linkify(description[0].childNodes[0].data,'rsslink'+ii);
			emptylineobj.innerHTML='&nbsp;';
			
			RSSContents.appendChild(titledivobj);
			RSSContents.appendChild(descriptionobj);
			RSSContents.appendChild(emptylineobj);
			
		}
	
		var buttonUpImg=UNIWITS.Toolbox.createElement('IMG',{src: UNIWITS.Toolbox.getopt(rlo.options,'scrollUpImg',''), border: '0', alt: '^'});
		var buttonDownImg=UNIWITS.Toolbox.createElement('IMG',{src: UNIWITS.Toolbox.getopt(rlo.options,'scrollDownImg',''), border: '0', alt: 'v'});
		var f;
		rlo.buttonUp=UNIWITS.Toolbox.createElement('DIV',{onclick: eval("f=function(){updateRSSPanel_scroll("+idx+",13,-14);}"), ondblclick: eval("f=function(){updateRSSPanel_scroll("+idx+",9999,-12);}")},buttonUpImg,{position: 'absolute'});
		rlo.buttonDown=UNIWITS.Toolbox.createElement('DIV',{onclick: eval("f=function(){updateRSSPanel_scroll("+idx+",13,14);}"), ondblclick: eval("f=function(){updateRSSPanel_scroll("+idx+",9999,12);}")},buttonDownImg,{position: 'absolute'});
		document.body.appendChild(rlo.buttonUp);
		document.body.appendChild(rlo.buttonDown);
		
		RSSPanel.appendChild(RSSContents);
		RSSPanelContainer.appendChild(RSSPanelTitle);
		RSSPanelContainer.appendChild(RSSPanel);
		
		eval("f=function(){updateRSSPanel_place_scroll_buttons("+idx+");}");
		UNIWITS.Toolbox.installWrapperEvent(window,'onresize',f);
		setTimeout("updateRSSPanel_place_scroll_buttons("+idx+")",100);
	}
}

function updateRSSPanel_place_scroll_buttons(idx)
{
	for (idx=0;idx<RSS_LOADING_OBJS.length;idx++)
	{
		var rlo=RSS_LOADING_OBJS[idx];
		UNIWITS.Toolbox.dockElement(rlo.buttonUp,rlo.RSSPanel,{horz: 'right', vert: 'above', vside: 'outer'});
		UNIWITS.Toolbox.dockElement(rlo.buttonDown,rlo.RSSPanel,{horz: 'right', vert: 'below', vside: 'outer'});
	}
	adjust_mainfooter();
}

function updateRSSPanel_scroll(idx,stepcount,stepsize)
{
	var rlo=RSS_LOADING_OBJS[idx];

	if (rlo.scrollStepCount>0)
	{
		rlo.scrollStepCount=0;
		return;
	}

	rlo.scrollStepCount=stepcount;
	rlo.scrollStepSize=stepsize;
	
	updateRSSPanel_scroll_step(idx);
}

function updateRSSPanel_scroll_step(idx)
{
	var rlo=RSS_LOADING_OBJS[idx];
	if (rlo.scrollStepCount>0)
	{
		rlo.RSSPanel.scrollTop+=rlo.scrollStepSize;
		rlo.scrollStepCount--;
		if (rlo.scrollStepSize<0 && rlo.RSSPanel.scrollTop>0 ||
			rlo.scrollStepSize>0 && rlo.RSSPanel.scrollTop+rlo.RSSPanel.clientHeight<rlo.RSSPanel.scrollHeight)
			window.setTimeout("updateRSSPanel_scroll_step("+idx+")",20);
		else
			rlo.scrollStepCount=0;
	}
}

