/**
* 
* project: jQuery News Ticker
* todo:
* 
*/


jQuery.fn.newsTicker = function() {
    var args = arguments[0] || {};
    var newsLinkText = args.newsLinkText;
    var newsTickerContainer = args.newsTickerContainer;
    var newsContainerHeight = args.newsContainerHeight;
    var newsSingleDateArea = args.newsSingleDateArea;
    var newsSingleLinkArea = args.newsSingleLinkArea;
    var newsSingleDate = args.newsSingleDate;
    var newsSingleLink = args.newsSingleLink;
    var newsLinkLabel = args.newsLinkLabel;
    var autoTick = args.autoTick;
    var autoTickTime = args.autoTickTime;
    var newsHover	= args.newsHover;
    var newsTickerSpeed	= args.newsTickerSpeed;
    var newsTickerEasing	= args.newsTickerEasing;
    var mySelector = jQuery(this);
    var newsTickerFirstChild;
    var myInterval;
    
    var newsHeight = jQuery("> #newsTicker li",mySelector).height()+parseInt(jQuery("> #newsTicker li",mySelector).css("padding-top").replace("px",""))+parseInt(jQuery("> #newsTicker li",mySelector).css("padding-bottom").replace("px",""))+parseInt(jQuery("> #newsTicker li",mySelector).css("margin-top").replace("px",""))+parseInt(jQuery("> #newsTicker li",mySelector).css("margin-bottom").replace("px",""));
    var newsCount = jQuery("> #newsTicker li",mySelector).length;
    
        
    //Tarih ve Link yapılandıramasına göre inline link ve tarihi gizleyelim
    if (newsSingleDateArea) {
		jQuery("> #newsTicker li .newsDate",mySelector).css({"display":"none"});
		jQuery("#announcesDate").html(jQuery("> ul li:first .newsDate",mySelector).text());
    }
    if (newsSingleLinkArea) {
		jQuery("> #newsTicker li .newsLink",mySelector).css({"display":"none"});
		jQuery("#announcesLink").html("<a>"+newsLinkLabel+"</a>").click(function(){
			//jQuery("> #newsTicker > li.activeNews > .newsLink > a",mySelector).trigger("click");
			//jQuery("> #newsTicker > li.activeNews > .newsLink > a",mySelector).click();
			//alert (jQuery("> #newsTicker > li.activeNews > .newsLink > a",mySelector).attr("href"));
			window.location.href = jQuery("> #newsTicker > li.activeNews > .newsLink > a",mySelector).attr("href");
		});
    }
    else
    {
		jQuery(".newsLink").html(newsLinkLabel);
    }
    ///
    
        
    //Slider'ın ilk elemanının en sona kopyasını oluşturalım ki sonsuz döngü elde edebilelim
    newsTickerFirstChild = jQuery("> #newsTicker li:first",mySelector).html();
    newsTickerFirstChild = "<li>"+newsTickerFirstChild+"</li>";
    jQuery("> #newsTicker li:last",mySelector).after(newsTickerFirstChild);
    jQuery("> #newsTicker li:first",mySelector).addClass("activeNews");
    jQuery("> #newsTicker",mySelector).css({
		height: (newsHeight * (newsCount+1))
    })
    ///
    
    
	if (autoTick)
	{
		myInterval = setInterval(function(){
			newsTicker();
		},autoTickTime);
	}
    
	if (autoTick && newsHover)
	{
		$(mySelector).hover(function(){
			clearInterval (myInterval);
			jQuery("> #announcesNavs .announceStatus",mySelector).addClass("announcePaused");
		},function(){
			myInterval = setInterval(function(){
				newsTicker();
			},autoTickTime);
			jQuery("> #announcesNavs .announceStatus",mySelector).removeClass("announcePaused");
		});
	}
	
	
	jQuery("> #announcesNavs div a",mySelector).not("> #announcesNavs .announceStatus",mySelector).click(function(){
		var directionClass = jQuery(this).parent().attr("class");
		directionClass = directionClass.replace("Announce","");
		
		newsTicker(directionClass);
	});
    
    function newsTicker(newsDirection){
		
		var currentMarginTop = parseInt(jQuery("> #newsTicker",mySelector).css("margin-top").replace("px",""));
		var currentNewsTickerHeight = parseInt(jQuery("> #newsTicker",mySelector).height());
		
		
		if (newsDirection == null || newsDirection == "next")
		{		
			if ((currentMarginTop*-1) != (currentNewsTickerHeight - newsHeight))
			{
				jQuery("> #newsTicker",mySelector).stop(true,true).animate({
					"margin-top":"+="+(newsHeight*-1)
				},newsTickerSpeed,newsTickerEasing,function(){
					currentMarginTop = parseInt(jQuery("> #newsTicker",mySelector).css("margin-top").replace("px",""));
					if ((currentMarginTop*-1) == (currentNewsTickerHeight - newsHeight))
					{
						jQuery("> #newsTicker li.activeNews",mySelector).removeClass("activeNews");
						jQuery("> #newsTicker li:first",mySelector).addClass("activeNews");
						
						jQuery("> #newsTicker",mySelector).css({
							"margin-top":0
						});
						
						if (newsSingleDateArea)
						{
							var activeNewsDate = jQuery("> #newsTicker li.activeNews .newsDate",mySelector).text();
							jQuery("#announcesDate").html(activeNewsDate).jTypeWriter({duration:1});
						}
						
					}
					else
					{
						jQuery("> #newsTicker li.activeNews",mySelector).removeClass("activeNews").next("li").addClass("activeNews");
						if (newsSingleDateArea)
						{
							var activeNewsDate = jQuery("> #newsTicker li.activeNews .newsDate",mySelector).text();
							jQuery("#announcesDate").html(activeNewsDate).jTypeWriter({duration:1});
						}
					}
				})	
			}
		}
		else if (newsDirection != null || newsDirection == "prev")
		{
			if (currentMarginTop == 0)
			{
				jQuery("> #newsTicker",mySelector).css({
					"margin-top":(currentNewsTickerHeight - newsHeight)*-1
				});
				jQuery("> #newsTicker li.activeNews",mySelector).removeClass("activeNews");
				jQuery("> #newsTicker li:last",mySelector).addClass("activeNews");
			}
			
			currentMarginTop = parseInt(jQuery("> #newsTicker",mySelector).css("margin-top").replace("px",""));
			
			if (currentMarginTop != 0)
			{
				jQuery("> #newsTicker",mySelector).stop(true,true).animate({
					"margin-top":"+="+(newsHeight)
				},newsTickerSpeed,newsTickerEasing,function(){
					currentMarginTop = parseInt(jQuery("> #newsTicker",mySelector).css("margin-top").replace("px",""));
					if (currentMarginTop == 0)
					{
						jQuery("> #newsTicker li.activeNews",mySelector).removeClass("activeNews");
						jQuery("> #newsTicker li:nth-child("+newsCount+")",mySelector).addClass("activeNews");
						
						jQuery("> #newsTicker",mySelector).css({
							"margin-top":(currentNewsTickerHeight - newsHeight)*-1
						});
						
						if (newsSingleDateArea)
						{
							var activeNewsDate = jQuery("> #newsTicker li.activeNews .newsDate",mySelector).text();
							jQuery("#announcesDate").html(activeNewsDate).jTypeWriter({duration:1});
						}
						
					}
					else
					{
						jQuery("> #newsTicker li.activeNews",mySelector).removeClass("activeNews").prev("li").addClass("activeNews");
						if (newsSingleDateArea)
						{
							var activeNewsDate = jQuery("> #newsTicker li.activeNews .newsDate",mySelector).text();
							jQuery("#announcesDate").html(activeNewsDate).jTypeWriter({duration:1});
						}
					}
				});
			}
		}
    }
}
