var newslist = new Array();

function OnShowNews( newsid )
{
	obj = getNewsObject(newsid);
	if(!obj)
	{
		obj = new NewsItem( newsid );
		this.newslist[ this.newslist.length ] = obj;
	}
	obj.load( newsIsReadyForDisplay );
}



function getNewsObject( newsid )
{
	for(i=0;i<newslist.length;i++)
	{
		if(newslist[i].ID == newsid)
		{
			return newslist[i];
		}
	}
	return null;
}



function newsIsReadyForDisplay( newsid )
{
	obj = getNewsObject(newsid);

	if(obj)
	{
		for(i=0;i<newslist.length;i++)
		{
			newslist[i].hideNews();
		}

		obj.showNews();
		
		OnAnimationTimerTick();

		//obj.displayNews(); 
		//maximizeNews( obj.ID, obj.largeContentHeight );
	}
}

 

function OnNewsHttpRequest( obj )
{
	if(obj)
	{
	  	if (obj.readyState == 4) 
		{
			for(i=0;i<newslist.length;i++)	
			{
				if(newslist[i].http == obj)
				{
					newslist[i].HTTPRequestFinished();
				}
			}		
		}
	}
}



function OnAnimationTimerTick()
{
	var motioncount = 0;	

	for(i=0;i<newslist.length;i++)
	{
		if(newslist[i].isInMotion())
		{
			newslist[i].motion();
			motioncount++;
		}

	}


	if(motioncount>0)
	{
		window.setTimeout("OnAnimationTimerTick()", 10);
	}
	else
	{
		//alert("DONE");
	}

}














function NewsItem ( aContentID )
{
	typeNewsItem = true;

	this.http = null;

	this.ID = aContentID;
	this.smallContent = null;
	this.smallContentHeight = null;
	this.largeContent = null;
	this.largeContentHeight = null;
	this.marginTop = 0;
	this.maxContentHeight = 0;
	this.isLoading = false;
	this.isLoaded = false;


	this.isMaximizing = false;
	this.isMaximized = false;
	this.isMinimizing = false;
	this.isMinimized = false;

	this.callbackNewsIsReadyForDisplay = null;

	this.divID = "news-"+this.ID;
	this.divLoader = this.divID +'-loader';
	this.divLoaderParent = this.divID +'-small-content';
	this.divContentContainer = this.divID +"-contentcontainer";
	this.divContent = this.divID +"-content";

	this.httpRequest = "./ajax/news?newsid="+this.ID;



	this.load = function( aCallbackNewsIsReadyForDisplay  )
	{
		this.callbackNewsIsReadyForDisplay = aCallbackNewsIsReadyForDisplay;

		if(!this.isLoading)
		{
			if(!this.isLoaded)
			{
				this.http = new AjaxRequest();

				if (this.http != null) 
				{	
					this.http.open("GET", this.httpRequest , true);
					this.http.onreadystatechange = new Function('fx', 'OnNewsHttpRequest(this)');
					this.http.send(null);

						this.smallContent = document.getElementById( this.divID ).innerHTML;
						this.smallContentHeight = document.getElementById( this.divID ).offsetHeight;

					this.isLoading = true;
					this.showLoader(true);
					return true;
				}
			}
		}

		this.callbackNewsIsReadyForDisplay( this.ID );
		return false;
	}


	this.debug = function()
	{
		var str = " === NewsItem ===\n";
		str += "ID    = "+this.ID+"\n";
		str += "divID = "+this.divID+"\n";
		str += "isLoaded = "+this.isLoaded+"\n";
		str += "isLoading = "+this.isLoading+"\n";
		alert(str);
	}


	this.showLoader = function( show )
	{
		if(!document.getElementById(  this.divLoader ))
			document.getElementById( this.divLoaderParent  ).innerHTML += '<span id="'+this.divLoader +'"></span>';

		if(show)
			document.getElementById( this.divLoader ).innerHTML = '<img src="./dms/templating-kit/themes/pop/img/static/ajax-loader.gif" height="16" width="16" alt="ladeanimation" />';
		else
			document.getElementById( this.divLoader ).innerHTML = '';

	}


	this.HTTPRequestFinished = function()
	{
		var resp = this.http.responseText;
		var json = eval('('+ resp  +')');


		this.largeContent = json.data;
		document.getElementById( this.divID ).innerHTML = this.largeContent ;
		this.largeContentHeight = document.getElementById( this.divID ).offsetHeight;

		var contentHeight = document.getElementById( this.divContentContainer  ).offsetHeight;
		var containerHeight = document.getElementById( this.divID ).offsetHeight;

/*		if(contentHeight >200)
		{
			this.maxContentHeight = 200;
			document.getElementById( this.divContent ).style.height = this.maxContentHeight+'px';
			contentHeight = document.getElementById( this.divContentContainer  ).offsetHeight;
		}

*/
		/*this.marginTop = containerHeight-40-contentHeight;*/
		document.getElementById( this.divID ).innerHTML = this.smallContent ;

		this.showLoader(false);
		this.isLoading=false;
		this.isLoaded = true;

		this.callbackNewsIsReadyForDisplay( this.ID );

	}


	this.canBeDisplayed = function()
	{
		if(this.isLoaded)
			return true;
		else
			return false;
	}


	this.isInMotion = function()
	{
		if(this.isMaximizing || this.isMinimizing)
			return true;
		else
			return false;
	}

	
	this.showNews = function()
	{
		if(this.isMinimized)
		{
	
		}

		this.isMaximizing = true;
		this.isMaximized  = false;
		this.isMinimizing = false;
		this.isMinimized  = false;


		document.getElementById( this.divID ).innerHTML = this.largeContent ;		
		document.getElementById( this.divID ).style.height = this.smallContentHeight+'px';

		document.getElementById( this.divContentContainer ).style.marginTop = this.marginTop+'px';
/*		//document.getElementById( this.divContent ).style.backgroundColor = '#FF0000';
		//document.getElementById( this.divContent ).style.overflow = 'auto';
		if(this.maxContentHeight>0)
			document.getElementById( this.divContent ).style.height = this.maxContentHeight+'px';		
*/
	}


	this.hideNews = function()
	{
		this.isMaximizing = false;
		this.isMaximized  = false;
		this.isMinimizing = true;
		this.isMinimized  = false;
	}



	this.motion = function()
	{
		if(this.isMaximizing)
		{
			element = document.getElementById( this.divID );
			if(element)
			{
				if(element.offsetHeight < this.largeContentHeight )
				{
					element.style.height = (element.offsetHeight+30)+'px';
				}
				else
				{
					element.style.height = this.largeContentHeight +'px';
					this.isMaximizing = false;
					this.isMaximized = true;
					
					//alert(contentHeight+"\n"+containerHeight );
					//document.getElementById( this.divContentContainer  ).style.marginTop = '100px';
					//alert(document.getElementById( this.divID+'-contentcontainer' ).offsetHeight);
				}
			}
		}

		else if(this.isMinimizing)
		{
			element = document.getElementById( this.divID );
			if(element)
			{
				if(element.offsetHeight > this.smallContentHeight+10 )
				{
					element.style.height = (element.offsetHeight-30)+'px';
				}
				else
				{
					element.style.height = this.smallContentHeight +'px';
					element.innerHTML = this.smallContent ;	
					this.isMinimizing = false;
					this.isMinimized = true;
				}
			}
		}

	}

}


