function News(data, config)
{
	this.c = config;
	this.d = data;
	this.page = 1;
	this.container = null;
	this.init = function(mode, results, override)
	{//console.log('inside init');
		this.container = $(this.c.container);
		this.setPref(override);
		this.show = results;
		this.mode = mode;
		var str = "";

		switch(mode)
		{
			case "side":
				str += this.createHeader(mode);
				str += this.sidebar(results);
				break;
			case "sidemenu":
				str += this.createHeader(mode);
				this.createMenu();
				break;
			case "content":
			default:
				this.container.style.marginTop = "1px";
				this.container.style.marginLeft = "1px";
				str += this.createHeader();
				str += this.content();
				break;
		}
		this.container.innerHTML = str + this.container.innerHTML;
		var td = this.container.parentNode;
		var main = td.firstChild;
	};
	this.setPref = function(ov)
	{
		for(key in ov)
		{
			this.c[key] = ov[key];
		}
	};
	this.createHeader = function(mode)
	{
		var str;
		switch(mode)
		{
			case "side":
				str = "<div class=\"news_header\" style=\"padding-left:"+this.c.indent+"; background-color:"+this.c.headerBg+";\"><a href=\"news_archive.html\">News</a></div>";				
				break;
			case "sidemenu":
				str = "<div class=\"news_header\" style=\"padding-left:"+this.c.indent+"; background-color:"+this.c.headerBg+";\"><a href=\"news_archive.html\">News</a></div>";
				break;
			case "content":
			default:
				str = this.pagingHeader();
				break;
		}
		return str;		
	};
	this.sidebar = function(limit)
	{
		var str = "<ul class=\"news_side\" style=\"background-color:"+this.c.bg+";\">";
		for(var i=0; i<((this.d.length>limit)?limit:this.d.length); i++)
		{
			ni = this.d[i];
			//str += "<li style=\"padding-left:"+ (parseFloat(this.c.indent, 10) + parseFloat(this.c.items_indent, 10))  + "px; background:url(resources/images/"+this.getIcon(ni.type)+") no-repeat "+ (parseFloat(this.c.indent, 10) + parseFloat(this.c.items_indent, 10))  + "px "+((ie)?10:5)+"px;\"><span style='padding-left: 3px;'>"+ni.date.formatDate("m.d.Y")+"</span><br /><a href=\""+ni.url+"\">"+ni.title+" &raquo;</a></li>";
			str += "<li style=\"padding-left:"+ (parseFloat(this.c.indent, 10) + parseFloat(this.c.items_indent, 10))  + "px; \"><span style='padding-left: 4px; color: #333'>"+ni.date.formatDate("m.d.Y")+"</span><br /><a href=\""+ni.url+"\">"+ni.title+" &raquo;</a></li>";
		}
		str += "</ul><a href=\"postcard\"><img src=\"resources/images/img-send-postcard.gif\" border=\"0px\" alt=\"Send a Postcard\" title=\"Send a Postcard\"/></a>";
		
		//var imageP = new Image;
		//imageP.src = "/resources/images/img-send-postcard.gif";
		return str;
	};
	this.pagingHeader = function()
	{
		var c = null;
		var str = "<div class=\"pager\" style=\"background:"+this.c.h_bg+"\">";
		str += "<div id=\"pages\" style=\"height:20px; float:left; width:15%; text-align:left;\">";
		for(var i=0; i<(this.d.length/this.show); i++)
		{
			c = ((i+1)==this.page)?"class=\"selected\" ":"";
			str += (i != (Math.round(this.d.length/this.show)))?"<a id=\"p"+(i+1)+"\" "+c+"href=\"javascript:archive.goToPage("+(i+1)+");\">"+(i+1)+"</a> | ":"<a id=\"p"+(i+1)+"\" "+c+"href=\"javascript:archive.goToPage("+(i+1)+");\">"+(i+1)+"</a>";
		}
		str += "</div>";
		str += "<div style=\"width:70%; float:left; text-align:center;\" id=\"pageId\">Page "+this.page+" of "+Math.ceil(this.d.length/this.show)+"</div>";
		str += "<div style=\"float:left; text-align:right; width:15%;\" id=\"vOpt\"><a href=\"javascript:archive.showAll();\">Show all</a></div></div>";
		return str;
	};
	this.createMenu = function()
	{
		var d = [
			["Archive", "news_archive.html", "1"]
		];
		var nm = new snm(d, {
			style:[
				{ li:{"border-bottom":"none;", margin:"0px;", "padding-left":"0px;"}, a:{ "padding-left":"40px;"}},
			],
			//width:"200px",
			indent:"23px",
			container:"nN", 
			prefix:"news_",
			iconPosition:"left",
			bg:["rgb(188, 190, 182)", "", "rgb(201, 203, 197)"]}
		);
		nm.init({}, this.show);
	};
	this.content = function()
	{
		var str = "<div style=\"float:left;\" id=\"articles\"><ul style=\"margin:0; padding:0;\" id=\"news-previews\">";
		var ni = null;
		var si = this.show*(this.page-1);
		for(var i=si; i<(((si+this.show)>this.d.length)?this.d.length:(si+this.show)); i++)
		{
			ni = this.d[i];
			ni.c = (i%2==0)?"odd":"";
			str += this.buildRow(ni);
		}
		str += "</ul></div>";
		return str;
	};
	this.buildRow = function(ni)
	{
		var str = "<li class=\""+ni.c+"\" onmouseover=\"this.originalClass = this.className; this.className = this.className + 'hover';\" onmouseout=\"this.className = this.originalClass;\" onclick=\"window.location = '"+ni.url+"'\"><div style=\"width: 140px; height: 95px; margin-right: 20px; float: left;\"><a href=\""+ni.url+"\"><img width=\"140\" height=\"95\" border=\"0\" valign=\"top\" src=\""+ni.thumb+"\"/></a></div><div style=\"float: left; width: 370px;\"><a href=\""+ni.url+"\">"+ni.title+"</a><br/><strong>"+ni.date.formatDate("m.d.Y")+"</strong> - "+ni.desc+"<br/></div></li>";
		return str;
	};
	this.getIcon = function(type)
	{
		var img;
		switch(type)
		{
			case "news":
				img = (this.mode=="side")?"news_icons.gif":"content_news.gif";
				break;
			case "event":
				img = (this.mode=="side")?"event_icons.gif":"content_event.gif";
				break;
			case "press":
			default:
				img = (this.mode=="side")?"press_icons.gif":"content_press.gif";
				break;				
		}
		return img;
	};
	this.goToPage = function(p)
	{
		/* clear off all class info */
		var ps = $("pages").getElementsByTagName("a");
		for(var i=0; i<ps.length; i++)
			ps[i].className = "";
		
		/* kill current images and show the images for the page selected */
		this.container.style.visibility = "hidden";
		this.page = p;
		this.container.innerHTML = this.createHeader() + this.content();
		this.container.style.visibility = "visible";
		
	};
	this.showAll = function()
	{
		$("pages").innerHTML = "";
		$("pageId").innerHTML = "Page 1 of 1";
		$("vOpt").innerHTML = "<a href=\"javascript:archive.goToPage("+this.page+");\">Show pages</a>";
		
		var str = "<ul style=\"margin:0; padding:0;\" id=\"news-previews\">"; var img; var c; var mt;
		for(var i=0; i<this.d.length; i++)
		{
			na = this.d[i];
			na.c = (i%2==0)?"odd":"";
			str += this.buildRow(na);
		}
		str += "</ul>";
		$("articles").innerHTML = str;
	};
}
var news = new News(n, {
						width:"200px",
						bg:"#D1D4CB",
						h_bg:"#BCBEB6",
						container:"nN",
						indent:"23px",
						items_indent: "0px"
					});
