namespace("tv.nordisch.News");

/**
* @author Martin Anderle
*/

tv.nordisch.News = function()
{
	//private
	var _data = null;
	var _newsContent = null;
	var _inited = false;
	var _locked = false;
	var _newsTime = 0;
	var _next   = null;
	var _short  = true;
	var _waitForData = true;
	var _autoSwitchId = -1;
	var _autoSwitchTime = 4000;
	var _pos = -1;
	
	function _contentInit(pos)
	{
		_pos = parseInt(pos);
		loadData(window.base+"/news.php","text",news.newsDataCallback,true);
		_autoSwitchId = setInterval ("news.autoSwitch()", _autoSwitchTime );
	}
	
	function _setContent(entry,contentId,linkId)
	{
		var ret="";
		var content = xmlValue(entry,contentId);
		
		var link = xmlValue(entry,linkId);
		
		if(link.indexOf("http://")>-1)
		{
			if(link.indexOf("http://www.nordisch.tv/")==-1)
				ret="<a href='"+link+"' target='_blank'>"+content+"</a>";
			else
				ret="<a href='"+link+"'>"+content+"</a>";
		}
		else
			ret=content;
			
		return ret;
	}
	
	function _newsUpdate(short)
	{
		if(_newsContent==null)
			return;
			
		
		var newsContainer = document.getElementById("newsSmallContainer");
		newsContainer.innerHTML="";
		l=_newsContent.getElementsByTagName("div").length;
		
		if(short)
		{
			var last=null;
			var winHeight=$(window).height();
			
			for(var i=0;i<l;i++)
			{
				last=newsContainer.appendChild(_newsContent.getElementsByTagName("div")[i].cloneNode(true));
				
				if(i>2)
				{
					if((winHeight-735)<newsContainer.offsetHeight)
					{
						newsContainer.removeChild(last);
						last=null;
						
						var newsItem = document.createElement('div');
						
						var txt = "mehr";
						if(window.lang=="en")
							txt = "more";
						
						newsItem.innerHTML='<a href="javascript:news.contentToggle(false);"><p><span>'+txt+' &gt;</span></p></a>';
						newsContainer.appendChild(newsItem);
						
						break;
					}
				}
			}
		}
		else
		{
			var txt = "weniger";
			if(window.lang=="en")
				txt = "less";
							
			for(var i=0;i<l;i++)
				newsContainer.appendChild(_newsContent.getElementsByTagName("div")[i].cloneNode(true));
			
			var newsItem = document.createElement('div');
			newsItem.innerHTML='<a href="javascript:news.contentToggle(true);"><p><span>'+txt+' &gt;</span></p></a>';
			newsContainer.appendChild(newsItem);
						
		}
	}
	
	function _naviUpdate()
	{
		var container = document.getElementById('newsNavi');
		container.innerHTML = "";
	
		for(var i=0;i<_data.length;i++)
		{
			var itemView = document.createElement('span');
			
			var itemViewContent = '';
			itemViewContent += '<a href="'+SWFAddress.getBaseURL()+SWFAddress.getPath()+'?id='+i+'&auto=false" onclick="news.click(this); return false;" rel="'+SWFAddress.getPath()+'?id='+i+'"><div class="bullet"></div></a>';
			itemView.id = 'newsNavi_'+i;
			itemView.innerHTML=itemViewContent;
			container.appendChild(itemView);
		}
	}
	
	function _copyShow()
	{
		$('#newsHeadline').html(_setContent(_next,"headline_"+window.lang,"link_"+window.lang));
		$('#newsSubline').html(_setContent(_next,"subline_"+window.lang,"link_"+window.lang));
		$('#newsCopy').html(_setContent(_next,"copy_"+window.lang,"link_"+window.lang));
	
		setTimeout("fadeIn('#newsSubline')",5);
		setTimeout("fadeIn('#newsHeadline')",150);
		setTimeout("fadeIn('#newsCopy')",300);
	}
	
	function _leftRightUpdate(pos)
	{
		_pos = parseInt(pos);
		var left  = parseInt(pos)-1;
		var right = parseInt(pos)+1;
		
		$("#newsLeft").children().attr("href",SWFAddress.getBaseURL()+SWFAddress.getPath()+'?id='+left+"&auto=false");
		$("#newsLeft").children().attr("rel",SWFAddress.getPath()+'?id='+left);
		$("#newsRight").children().attr("href",SWFAddress.getBaseURL()+SWFAddress.getPath()+'?id='+right+"&auto=false");
		$("#newsRight").children().attr("rel",SWFAddress.getPath()+'?id='+right);
		
		if(pos==0)
		{
			fadeOut($("#newsLeft"));
			$("#newsRight").fadeIn(5);
		}
		else if(pos==_data.length-1)
		{
			fadeOut($("#newsRight"));
			$("#newsLeft").fadeIn(5);
		}
		else
		{
			$("#newsRight").fadeIn(5);
			$("#newsLeft").fadeIn(5);
		}
	}
	
	//public
	return {
	
	init : function(pos)
	{
		_contentInit(pos);
	},
	
	click : function(item)
	{
		if(!_locked)
			SWFAddress.setValue(item.rel);
	},
	
	update : function(pos)
	{
		if(_data==null)
		{
			loadData(window.base+"/data/highlights.xml","xml",news.contentDataCallback,pos);
			return;
		}
		
		if(!_inited)
		{
			this.init(pos);
		}
		
		_naviUpdate();
		this.lock();
		
		$("#newsNavi_"+pos).html('<div class="bullet_active"></div>');
		_next = _data[pos];
				
		var t=0;
		var p=-(pos*window.contentWidth);
	
		if(!_inited)
		{
			$("#newsBg").css("opacity","0");
			t=2;
			setTimeout(function(){ $("#newsBg").css("opacity","1");},10);
			_inited=true;
		}
		else
		{
			t=1000;
			setTimeout("fadeOut('#newsSubline',news.copyShow)",200);
			setTimeout("fadeOut('#newsHeadline')",100);
			setTimeout("fadeOut('#newsCopy')",0);
			
			if(SWFAddress.getParameter("auto")!="true")
			{
				clearInterval(_autoSwitchId);
				_autoSwitchId = -1;
			}
			else
			{
				trace("AUTO_SWITCH:ID",_autoSwitchId);
				if(_autoSwitchId==-1)
				{
					clearInterval(_autoSwitchId);
					_autoSwitchId = setInterval ("news.autoSwitch()", _autoSwitchTime );
				}
			}
		}
		
		_leftRightUpdate(pos);
		
		if(!jQuery.browser.msie && !($.browser.mozilla && parseInt(jQuery.browser.version) < 2))
			$("#newsBg").animate({left:p,useTranslate3d:true,leaveTransforms:true}, t,"easeOutSine");
		else
			$("#newsBg").animate({left:p}, t);
		
		setTimeout(news.unlock,(t+100));
	},
	
	newsDataCallback : function(data,short)
	{
		try
		{
			_newsContent = document.createElement("p");
			_newsContent.innerHTML = data;
			_newsUpdate(_short);
		}
		catch(e)
		{
			_newsContent = null;
			var newsContainer = document.getElementById("newsSmallContainer");
			newsContainer.innerHTML=data;
		}
	},
	
	contentDataCallback : function(xml,pos)
	{
		if(jQuery.browser.msie)
		{
			_data = xml.documentElement.childNodes;
		}
		else
		{
			_data = xmlIgnoreWhiteSpace(xml.documentElement.childNodes);
		}
	
		news.update(pos);
	},
	
	autoSwitch : function()
	{
		trace(_data.length);
		
		var p = _pos;
		
		if((p+1)==_data.length)
			p=0;
		else
			p=p+1;
		
		SWFAddress.setValue(SWFAddress.getPath()+'?id='+p+"&auto=true");
	},
	
	contentToggle : function(shortBool)
	{
		_newsUpdate(shortBool);
	},
	
	copyShow : function()
	{
		_copyShow();
	},
	
	lock : function()
	{
		_locked=true;
	},
	
	setData : function()
	{
		_data = xmlIgnoreWhiteSpace(xml.firstChild.childNodes);
	},
	
	unlock : function()
	{
		_locked=false;
	},
	
	resize : function()
	{
		_newsUpdate(_short);
	},
	
	reset : function()
	{
		_short  = true;
		_inited = false;
		_locked = false;
		_next   = null;
		clearInterval(_autoSwitchId);
		_autoSwitchId = -1;
	}
};};
