/**
 * Cookie plugin
 *
 * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
 * Dual licensed under the MIT and GPL licenses:
 * http://www.opensource.org/licenses/mit-license.php
 * http://www.gnu.org/licenses/gpl.html
 *
 */
jQuery.cookie=function(name,value,options){if(typeof value!='undefined'){options=options||{};if(value===null){value='';options.expires=-1}var expires='';if(options.expires&&(typeof options.expires=='number'||options.expires.toUTCString)){var date;if(typeof options.expires=='number'){date=new Date();date.setTime(date.getTime()+(options.expires*24*60*60*1000))}else{date=options.expires}expires='; expires='+date.toUTCString()}var path=options.path?'; path='+(options.path):'';var domain=options.domain?'; domain='+(options.domain):'';var secure=options.secure?'; secure':'';document.cookie=[name,'=',encodeURIComponent(value),expires,path,domain,secure].join('')}else{var cookieValue=null;if(document.cookie&&document.cookie!=''){var cookies=document.cookie.split(';');for(var i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==(name+'=')){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}}return cookieValue}};

/**
 * jQuery.ScrollTo - Easy element scrolling using jQuery.
 * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 5/25/2009
 * @author Ariel Flesler
 * @version 1.4.2
 *
 * http://flesler.blogspot.com/2007/10/jqueryscrollto.html
 */
;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery);

/* Feeds */

var $main;
var $feedsContainer;
var opened = false;
var rFeedsScrollLock = false;
var rFeedsScrollHideLock = false;
var rFeedsTimeout = null;
var rFeedsQueue = 0;
var rFeedsAnimate = true;
var rFeedsAnimationInterval;

function filterFeeds() {
	if (2 == $main.find('div.bottom a').not('.selected').length) {
		$main.find('li.block div.video').parents('li.feed').show();
		$main.find('li.block div.message').parents('li.feed').show();
	} else if (2 == $main.find('div.bottom a.selected').length) {
		$main.find('li.block div.video').parents('li.feed').show();
		$main.find('li.block div.message').parents('li.feed').show();
	} else {
		var filterBy = $main.find('div.bottom a.selected').eq(0).attr('id');
		if ('video' == filterBy) {
			$main.find('li.block div.video').parents('li.feed').hide();
			$main.find('li.block div.message').parents('li.feed').show();
		} else {
			$main.find('li.block div.video').parents('li.feed').show();
			$main.find('li.block div.message').parents('li.feed').hide();
		}
	}
}

function rFeedsUpdateQueueCount() {
	
	var count = 0;
	$feedsContainer.find('li:hidden').each(function () {
		if (!$(this).hasClass('block')) {
			count++;
		}
	});
	rFeedsQueue = count;
	
	$('.queue').html(rFeedsQueue);
}

function rFeedsAnimation() {
	
	var $feed = $();
	$($feedsContainer.find('li:hidden').reverse()).each(function () {
		if (1 != $feed.length) {
			if (2 != $main.find('div.bottom a.selected').length) {
				var filterBy = $main.find('div.bottom a.selected').eq(0).attr('id');
				if ($(this).find('div.' + filterBy).length) {
					//$feed = $(this); the states are reversed
				}
				else {
					$feed = $(this);
				}
			} else {
				$feed = $(this);
			}
		}
	});
	
	clearInterval(rFeedsAnimationInterval);
	rFeedsUpdateQueueCount();
	
	if (1 == $feed.length && true === rFeedsAnimate) {
		$feed.slideDown(500, function () {
			
			// Saving last visible item
			$.cookie("rfeedlast", $(this).find('.hash').text(), {
				path:		'/',
				expires:	365
			});
			
			$(this).addClass('block');
			rFeedsAnimationInterval = setInterval(rFeedsAnimation, 700);
		});
		
	} else {
		rFeedsAnimationInterval = setInterval(rFeedsAnimation, 700);
	}
}

function initStart() {
	$main.animate({ right: "-400px" }, 1000);
	rfeeds_showed = true;
	rFeedsAnimate = opened = false;
	$main.find("#feedsloaded").val('true');
}

function hiderfeed() {
	$main.hide();
}

function showrfeed() {
	$main.show();
}

function close() {
	
	if($("#main").scrollLeft() > (1300 + $("#home").width() - $(window).width())) {
		$main.animate({ right: "-460px" }, 400, function () {
			$main.find('div.bottom a').addClass('selected');
			filterFeeds();
			rfeeds_showed = false;
		});
	}
	else {
		$main.animate({ right: "-400px" }, 400, function () {
			$main.find('div.bottom a').addClass('selected');
			filterFeeds();
			rfeeds_showed = true;
		});
	}
		
	rFeedsAnimate = opened = rfeeds_opened = false;
}

function open() {
	$main.animate({ right: "0px" }, 400);
	rFeedsAnimate = opened = rfeeds_opened = true;
}

function loadFeeds(fid, init) {
	rFeedsGatewayUrl = 'royalelive/js/json/id/3/';
    if (undefined != fid) {
        rFeedsGatewayUrl += "fid/" + fid + "/";
    }
    rFeedsGatewayUrl += "filter/all/";
    
    $.ajax({
        dataType:   "jsonp",
        url:        rFeedsGatewayUrl, 
        cache:      false,
        success:    function(data) {
            $.each(data.items, function(i, item) {
            	$feedsContainer.prepend(item);
            	var $newItem = $feedsContainer.find('li:first');
            	$newItem.addClass('added');
            });
            
            var $addedFeeds = $feedsContainer.find('li.added');
            $addedFeeds.hide();
            
            // Init phase
            if (true === init) {
            	
            	initStart();
            	
            	// Checking for valid cookie
            	if (null !== $.cookie("rfeedlast") && 32 == $.cookie("rfeedlast").length) {
            		var $lastVisible = $lastVisible = $feedsContainer.find('div.hash:contains(' + $.cookie("rfeedlast") + ')');
            		if ($lastVisible.length) {
            			$lastVisible = $lastVisible.parents('li.feed');
            			$lastVisible.nextAll().addClass('block').show();
            			$lastVisible.addClass('block').show();
            		}
            	} else {
            		var $reverseFeeds = $($addedFeeds.reverse());
            		for (var n = 0; n < 10; n++) {
            			if ($reverseFeeds.eq(n).length) {
            				$reverseFeeds.eq(n).show();
            				$reverseFeeds.eq(n).addClass('block');
            			}
            		}
//            		$.cookie("rfeedlast", $feedsContainer.find('li:first div.hash').text(), {path: '/'});
            	}
            }
            
            $addedFeeds.removeClass('added');
            
            rFeedsTimeout = setTimeout(function() {
                loadFeeds(data.fid);
            }, 30000);
        }
    });
}

$(document).ready(function() {
	
	// Array reverse function
	$.fn.reverse = [].reverse;
	
	$main = $("#royalelivefeeds");
	$feedsContainer = $('ul.feeds');
	
	rFeedsAnimationInterval = setInterval(rFeedsAnimation, 700);
	
	$main.find('.opener').click(function() {
		if(!opened) {
			_gaq.push(['_trackPageview', 'Click_Open_WarnerNewsFeed']);
			open();
		} else {
			_gaq.push(['_trackPageview', 'Click_Close_WarnerNewsFeed']);
			close();
		}
	});
	
	$main.find(".filter .top a").click(function() {
		close();
	});
	
	if (false === opened) {
		rFeedsAnimate = false;
	}
	
	$main.find("div.container").hover(function () {
		rFeedsAnimate = false;
	}, function () {
		rFeedsAnimate = true;
	});
	
	// Filter buttons
	$main.find('div.bottom a').click(function () {
		$sibling = $(this).siblings('a');
		if ($(this).hasClass('selected')) {
			$(this).removeClass('selected');
			if (!$sibling.hasClass('selected')) {
				$sibling.addClass('selected');
			}
			filterFeeds();
		}
	});
	
	loadFeeds(undefined, true);
});
