//файл описывает объект для ротации новостей
//чтобы им воспользоваться, надо на странице создать объект new NewsTicker()
//в качестве параметров передается идентификатор элемента <div>,
//идентификатор должен иметь формат "#id"
//и источник подгрузки списка новостей. 
//источник должен возвращать список в формате xml.
//каждая новость должна содержаться в элементе <item>, краткое содержание новости
//в элементе <title>, ссылка на новость в элементе <link>

NewsTicker = function(newsLinkId, feedURL)
{	
    		this.items = [];
    		this.init(this, newsLinkId, feedURL);
}

NewsTicker.prototype = 
{
		thisObj : null,
    	newsLinkId: null, 
    	newsHref: "/hotnews/", //если в испочнике не указана ссылка на новость, то переадресация будет по указанному адресу
    	feedURL: null,
    	pauseLength: 4000, //пауза, после которой новость начинает исчезать
    	timer: 0,
    	currentTitle: 0,
    	items: null,
    	init : function(obj, _newsLinkId, _feedURL) {
    		thisObj = obj;
    		this.feedURL = _feedURL;
    		this.newsLinkId = _newsLinkId;
    		var f1 = this.parseXML;
    		var f2 = this.buildTicker;
    		if ((this.feedURL) && (this.newsLinkId))
    		{
    			$.ajax({
					url: this.feedURL,
					type: 'GET',
					dataType: 'xml',
					success: function(data) {
						f1(data);
						f2();
				}
				})
			}
    	},
    	buildTicker: function() {
    		if (thisObj.items[thisObj.currentTitle]) {
    			var str = "<a href='" + thisObj.items[thisObj.currentTitle]['link'] + "'>" + thisObj.items[thisObj.currentTitle]['title'] + "</a>";
    			$(thisObj.newsLinkId).html(str);
    			if (thisObj.items.length > 1) thisObj.start();
    		}
    	},
    	parseXML: function(a) {    		
    		$(a.getElementsByTagName('item')).each(function() {
    			title = this.getElementsByTagName('title')[0].childNodes[0].nodeValue;
    			if (this.getElementsByTagName('link')[0].childNodes[0])
    			{
    				link = this.getElementsByTagName('link')[0].childNodes[0].nodeValue;
    				thisObj.items.push({ title: title, link: link })
				}
    			else
    			{
    			    thisObj.items.push({ title: title, link: thisObj.newsHref })
				}
    		} 
    		)
    	},
    	start: function() {
    		thisObj.interval = setInterval(this.showNext, thisObj.pauseLength)
    	},
    	stop: function() { clearInterval(thisObj.interval) },
    	showNext: function() {
    		if (thisObj.currentTitle < thisObj.items.length - 1) {
    			thisObj.currentTitle = thisObj.currentTitle + 1
    		} else { thisObj.currentTitle = 0 }
    		$(thisObj.newsLinkId).fadeOut('slow', function()
                { 
                	thisObj.switchData();
                	$(thisObj.newsLinkId).fadeIn();
                }
            )
    	},
    	switchData: function() {
    		if (thisObj.items[thisObj.currentTitle]) {
    			var str = "<a href='" + thisObj.items[thisObj.currentTitle]['link'] + "'>" + thisObj.items[thisObj.currentTitle]['title'] + "</a>";
    			$(thisObj.newsLinkId).html(str);
    		}
    	}
}
