(function($)
{
    function htmlEncode(value)
    { 
        return $('<div/>').text(value).html(); 
    } 
    
    function htmlDecode(value)
    {
        return $('<div/>').html(value).text(); 
    }

    
    var kstream = KStream.init(
        'kpublisher_chess', 
        "http://live.chess.no/ape-jsf", 
        "live.chess.no:5234");
    
    /**
     * Returns how many miliseconds until the next
     * stream event should render
     */
    kstream.setDelayHandler(function(stackSize,catchup)
    {
        if (catchup)
            return 1;
        return 250;
    });
    
    var container = $('#stream-content');
    var renderLiveStream = function (data, speed)
    {        
        if (typeof(data) == 'undefined') return;
        
        var classesArray = [data.entity, 'rel', 'hid'];
        var html = '';
        
        switch(data.entity)
        {
	        case 'chess_service':
                var classes = classesArray;
                var img = '';
	        	if((data.data.type).length)
	        	{
	        		switch (data.data.type)
	        		{
	        			case 'chess_kino':
	        			    classes.push('cinema');
	        				break;
	        			
	        			case 'chess_order_abonnement':
	        			    classes.push('plan');
	        			    img = '<img src="' + data.data.image + '" />';
	        			    break;
	        			    
        				default:
        				    break;
	        		}
	        	}
	        	
	        	html =
	        	'<div class="item ' + classes.join(' ') + '">'+
                    '<div class="message message-small rel hid clear">'+
                        '<p>' + data.message + '</p>'+
                        '<div class="edge edge-left abs hid clear"></div><div class="edge edge-right abs hid clear"></div>'+
                    '</div>'+
                    '<a target="_top" href="' + data.data.link + '" class="banner rel hid clear">'+
                        img+
                    '</a>'+
                '</div>';
	        	
                break;
                
            case 'chess_stream_twitter':
            case 'chess_stream_facebook':
            case 'chess_stream_tv2':
                var imageSrc = '';
                var message = '';
                if(data.entity == 'chess_stream_facebook' || data.data.title == 'Chess_no')
                {
                    imageSrc = '/sitefiles/1/gfx/chessno-stream/avatar-chess.png';
                }
                else
                {
                    imageSrc = data.data.image;
                }
                
                message = htmlDecode(data.message);
                
                html =
                '<div class="item ' + classesArray.join(' ') + '">'+
                    '<div class="message message-big rel hid clear">'+
                        '<a target="_blank" class="img rel hid" href="' + data.data.link + '">'+
                            '<img src="' + imageSrc + '" />'+
                        '</a>'+
                        '<div class="text-right rel hid">'+
                            '<p><a target="_blank" href="' + data.data.link + '">' + (data.entity == 'chess_stream_twitter' ? '@' : '') + data.data.title + '</a> ' + message + '</p>'+
                        '</div>'+
                        '<div class="edge edge-left abs hid clear"></div><div class="edge edge-right abs hid clear"></div>'+
                    '</div>'
                '</div>';
                
                break;
            
            default:
                html =
                html =
                '<div class="item ' + classesArray.join(' ') + '">'+
                    '<div class="message message-big rel hid clear">'+
                        '<p>' + data.message + '</p>'+
                        '<div class="edge edge-left abs hid clear"></div><div class="edge edge-right abs hid clear"></div>'+
                    '</div>'+
                '</div>';
        }

        if(data.catchup == true)
        {
            container.append(html);
        }
        else
        {
            if($(container).find('.item').length > 4)
            {
                $(container).find('.item').eq(5).remove();
            }
            container.prepend(html);
            
            container.find('.item').eq(0)
                .css('width', '0px')
                .animate(
                {
                    width: ((data.entity == 'chess_service') ? '350' : '260') + 'px'
                },
                500);
        }
    }
    
    kstream.bind('receive', renderLiveStream);
    
})(jQuery);

