/**
 * Commet Manager
 * allows to start and stop connections to 
 * comet service at will, is used to load
 * new auctions through ajax calls and add them to comet
 * client bid's update process 
 */

 
var vortalCometManager  = {
	
	/**
	 * current AuctionCommentClient
	 * multi or single
	 * @type AuctionCoometClient
	 */	
	_auctionCometClient: null,


	/**
	 * start single commet client
	 * @return null
	 */
	startSingle: function(){
		this.stop(); //stop any clients if running
		var auctionId = $('input[type=hidden][name=AuctionId]').val();
		this._auctionCometClient = 
			new SingleAuctionCometClient(auctionId, {onUpdate: this._updateSingleAuction});
			
		
		return;
	},
	
	
	/**
	 * start commet client for multiple
	 * items on the page
	 * @return null
	 */
	startMulti: function(){
		this.stop(); //stop any clients if running
		var auctionIdInputs = $('input[type=hidden][name=AuctionId]'),
		auctionIds = [];
		
		for (var i = 0; i < auctionIdInputs.length; i++) { 
			auctionIds.push(auctionIdInputs[i].value); 
		}
		
		this._auctionCometClient =
			 new MultiAuctionCometClient(auctionIds, {onUpdate: this._updateMultiAuction});
		
		return;
	},
	
	
	/**
	 * stop any comment client running on the page
	 * that has been started throug this manager
	 * 
	 * @return null
	 */
	stop: function(){
		
		
		if(null !== this._auctionCometClient){
			//send stop comman to comment client
			
			
			this._auctionCometClient.cometClient.stopStream();
			this._auctionCometClient = null;
				
		}
		
		return;
	},
	
	_updateSingleAuction: function(bidData){
		var bids = bidData.userBids,
		firstBid = bids.shift();
		
		if (!firstBid) { return; }

		var html = '<div id="bidListFirstLine" class="bidListUserName">' + firstBid.userName + '</div>';
		html += '<div id="bidListFirstLine" class="bidListAmount">' + '$' + Tools.FormatCurrency(firstBid.bidAmount) + '</div>';

		for (var i = 0; i < bids.length; i++)
		{
			html += '<div class="bidListUserName">' + bids[i].userName + '</div>';
			html += '<div class="bidListAmount">' + '$' + Tools.FormatCurrency(bids[i].bidAmount) + '</div>';
		}

		$('#bidListArea').html(html);
		
		
		return;
	},
	
	_updateMultiAuction: function(bidData){
		
        for (var i = 0; i < bidData.length; i++){
            var selector = '#AuctionCurrentBid' + bidData[i].auctionId;
            $(selector).html('$' + Tools.FormatCurrency(bidData[i].bidAmount));
            if (bidData[i].newBid) { $(selector).addClass('RowColorGreen'); }
        }

        setTimeout(function(){ $('.RowColorGreen').removeClass('RowColorGreen'); }, 2000);
		
		return;
	}
	
};

 
 
 
 
$(function(){ //commet manager control panel
return; //disable in production

 	var cnt = $('<div style="position:absolute; border:1px solid red; ' +
		'width:300px; height: 250px;">Comet Panel<br /><br /></div>');
		
	cnt.css({'top':5, 'left':10, 'background-color':'#fff', 'text-align':'left', padding:'5px'});
	
	var start = $('<input type="button" value="start multi" />');
	start.click(function(){vortalCometManager.startMulti();});
	cnt.append(start);
	cnt.append('<br /><br />');
	
	var start = $('<input type="button" value="start single" />');
	start.click(function(){
		vortalCometManager.startSingle();
	});
	cnt.append(start);
	cnt.append('<br /><br /><br />');

	
	var stop = $('<input type="button" value="stop" />');
	stop.click(function(){
		vortalCometManager.stop();
	});
	cnt.append(stop);
	
	$(document.body).append(cnt);
	
});
 
 

