/**
 * @author CHNSHL148452DADM
 */
var cellStreamOptions = new Object();
cellStreamOptions.blast = '';
cellStreamOptions.pageSize = 3; // number of items per stream page
cellStreamOptions.pageNumber = 0;
cellStreamOptions.pageCount = 0;
cellStreamOptions.availablePages = 0;
cellStreamOptions.author = ''; // empty string means all

var csCurrentPageElement;
var csCount = 0;
//Variables to set the co-ordinates for an active cellstream cell. 
var csActiveLeftCoor =0 ;
var csActiveTopCoor = [0,175,374];
var csActiveHeight = 253;
var csActiveWidth = 225;
//Variables to set the co-ordinates for a normal cellstream cell. 
var csNormalTopCoor = [0,203,406];
var csNormalHeight = 193;
var csNormalWidth = 129;
var csNormalLeftCoor = 0;

//Cellstream-detail page URL prefix
var csDetailUrlPrefix = '/cellstream?id=';
 
function cellstreamBuildStructureBlastmob(data){	
	    csFeedItems = new Array();
		/* Create Wrapper and Slider */
		cellStreamWrapper = document.createElement('div');
		$(cellStreamWrapper).attr("id", "cellStreamWrapper");
		
		buttonWrap=document.createElement('div');
		$(buttonWrap).attr("id","csButtonWrap");
		$(buttonWrap).attr("class","csButtonWrap");
		$(buttonWrap).append('<a href="#" id="csPrevious" class="csPrevious"><span></span></a>');
		$(buttonWrap).append('<a href="#" id="csNext" class="csNext"><span></span></a>');
		$(buttonWrap).append('<span class="clear"/>');	
		$(cellStreamWrapper).append(buttonWrap);
		
		cellStreamElement = document.createElement('div');
		$(cellStreamElement).attr("id", "cellStreamSlider");
		
		data = data.replace(/image>/g, 'image-url>');	
		/* Handle MicroSoft Browsers */	
		xmlDom = getXMLDOM(data);
		
		/* Obtain the rss and loop through individual posts */
		csTotalPosts = ($('post', xmlDom).length);
		$('post', xmlDom).each(function(){
			csPage = csCount % cellStreamOptions.pageSize;
			if (csPage == 0) {
				csCurrentPageElement = document.createElement('div');
				$(csCurrentPageElement).attr("id", "csPage" + csCount / cellStreamOptions.pageSize);
				$(csCurrentPageElement).attr("class", "csPage");
			}
	        var item = new Object();
			item.postid= $(this).attr("id");
			item.author = $(this).children("author").text();
			item.authorFirstName = $(this).children("authorFirstName").text();
			item.date = $(this).children("date").text();
			item.text = $(this).children("text").text();
			item.image = $(this).children("image-url").text();
			item.video = $(this).children("video");
			item.csCount = csCount;
			item.csPage = csPage;
	        csFeedItems.push(item);			

			feedItemUri = $(this).children("feedItemUri").text();
			if(feedItemUri != null && feedItemUri.indexOf('twitter') >= 0) {
				try {
					author = text.substring(0, text.indexOf(':'));
					author= '<a target="_blank" href="http://twitter.com/' + author + '">from twitter</a>';
				} catch(err) {}
			}
			/* Add the cell contents to the array for future retrival */
			/* Generate the cell element using the data and add to Cellstream Slider */
			/*
			nodeHtml = generateCellStreamCell(author, authorFirstName, date, text, image, video, csCount, csPage,postid);
			$(csCurrentPageElement).append(nodeHtml);
			*/
			if (csPage == cellStreamOptions.pageSize - 1 || csTotalPosts == csCount + 1) {
				$(cellStreamElement).append(csCurrentPageElement)
			}
			csCount++;
		});

		
		/* Set the page count */
		cellStreamOptions.pageCount = csTotalPosts / cellStreamOptions.pageSize - 1;
		csCount = 0;
		$(cellStreamWrapper).append(cellStreamElement);
		appendPreviousNextButtons(cellStreamWrapper);
		sigElement = document.createElement('div');
		$(sigElement).attr("id", "csLogoElement");
		$(sigElement).text("powered by blastmob");		
		$(cellStreamWrapper).append(sigElement);
		return cellStreamWrapper;
}

function generateCellStreamCell(author,text,image,video,i,csPage,postid,date){
	
	var cellElement = document.createElement('div');
	var contentElement = document.createElement('div');
	$(contentElement).attr("class","csContent");
	/* Add the image if available */
	if (image != ""){
		image = getNetopsImageUrl(image,'280x210');
		$(contentElement).append('<div class="image"><a href="' + csDetailUrlPrefix + postid+'"><img src="' + image + '"/></a></div>');
	}
	
	/* To add Cell Stream Details 
	   <a href="' + csDetailUrlPrefix + postid+'"></a>
	 */
	/* Add the video if available */
	
	if ($(video).text() !=""){
		var videoElement = document.createElement('div');
		$(videoElement).attr("class","video");
		$(videoElement).attr("id","cellStreamVideoPlayer"+i);
		$(videoElement).append('<img class="image" src="'+ $(video).children("flvUrl").text()+ '.jpg' +'"/>');
		$(contentElement).append(videoElement);

		var videoParams = document.createElement('div');
		$(videoParams).attr("class","csVideoParams");
		$(videoParams).append('<span class="videoParams csFlvUrl">'+ $(video).children("flvUrl").text() +'</span');
		$(videoParams).append('<span class="videoParams csSwfUrl">'+ $(video).children("swfUrl").text() +'</span');
		$(videoParams).append('<span class="videoParams csConfigUrl">'+ $(video).children("configUrl").text() +'</span');
		$(videoParams).append('<span class="videoParams playerId">'+ "cellStreamVideoPlayer"+i +'</span');
		$(contentElement).append(videoParams);
	}
	
	/* Handle Text only case */
	if ($(video).text() != "" || image!= "") {
		$(contentElement).addClass('imageVideo')
	}
	
	/*
	if ($(video).text() == "" && image== "") {
		$(contentElement).append('<div class="fullText text">'+text+'</div>');
	} else {
		$(contentElement).append('<div class="text">'+text+'</div>');
	}*/
	
	$(contentElement).append('<div class="text">'+text+'</div>');
	

	/* Create the Wrapper */
	var wrapperElement = document.createElement('div');
	$(wrapperElement).attr("class","csWrapper");	
	dateString = simpleDate(date);
	$(wrapperElement).append('<div class="timestamp">' + dateString + '</div>');
	$(wrapperElement).append('<div class="user">' + author + '</div>');
	$(wrapperElement).append('<div class="clear"></div>');
	
	/* Adding all of them to the cell element */
	$(cellElement).attr("id", "csCell" + i);
	$(cellElement).attr("class", "csCell");
	$(cellElement).addClass("csCell" + csPage);
	$(cellElement).append(contentElement);
	$(cellElement).append(wrapperElement);
	
	return cellElement;
	
}

/***** Navigation Logic and show CS page Logic************/

function showCSPage(pageNumber){
	/* If the particular page number is not present generate the cellstreams for that particular page. otherwise set it to null or false */
	if($("#cellStreamSlider #csPage"+pageNumber).text() == ""){
		maxCellCount = (pageNumber+1)*cellStreamOptions.pageSize;
		for (i=0; i<3 && maxCellCount < csFeedItems.length;i++){
			csIndex = pageNumber*cellStreamOptions.pageSize+i;
			author = csFeedItems[csIndex].author;
			text = csFeedItems[csIndex].text;
			image = csFeedItems[csIndex].image;
			video = csFeedItems[csIndex].video;
			csPage = csFeedItems[csIndex].csPage;
			postid = csFeedItems[csIndex].postid;
			date = csFeedItems[csIndex].date;
			nodeHtml = generateCellStreamCell(author,text,image,video,csIndex,csPage,postid,date);
			$("#cellStreamSlider #csPage"+pageNumber).append(nodeHtml);
		}
		registerHover(pageNumber);
	}

	$("#cellStreamSlider .csPage").hide();
	$("#cellStreamSlider #csPage"+pageNumber).fadeIn();
	setNavigationButtonState();
}

function setNavigationButtonState() {
	if (cellStreamOptions.pageNumber > 0) {
		$('.csPrevious').removeClass('csPreviousDisabled');
		$('.csPrevious').addClass('csPreviousEnabled');
	} else {
		$('.csPrevious').removeClass('csPreviousEnabled');
		$('.csPrevious').addClass('csPreviousDisabled');
	}
	if (cellStreamOptions.pageNumber < cellStreamOptions.pageCount) {
		$('.csNext').removeClass('csNextDisabled');
		$('.csNext').addClass('csNextEnabled');
	} else {

		$('.csNext').removeClass('csNextEnabled');
		$('.csNext').addClass('csNextDisabled');
	}
}

//Registering the event for the Previous and Next Button clicks

/* Create the pagination buttons */
function appendPreviousNextButtons(div){
	buttonWrap=document.createElement('div');
	$(buttonWrap).attr("id","csButtonWrapBot");
	$(buttonWrap).attr("class","csButtonWrap");
	$(buttonWrap).append('<a href="#" id="csPrevious" class="csPrevious"><span></span></a>');
	$(buttonWrap).append('<a href="#" id="csNext" class="csNext"><span></span></a>');
	$(buttonWrap).append('<span class="clear"/>');
	$(div).append(buttonWrap);
	registerPreviousNextEvents();
}

function registerPreviousNextEvents(){
	$(
		function (){

			$(".csPrevious").click(function (event){
				if (cellStreamOptions.pageNumber > 0){
					cellStreamOptions.pageNumber--;
					showCSPage(cellStreamOptions.pageNumber);
				}
				event.preventDefault();
			});
			$(".csNext").click(function(event){
				if (cellStreamOptions.pageNumber < cellStreamOptions.pageCount){
					cellStreamOptions.pageNumber++; 
					showCSPage(cellStreamOptions.pageNumber);
				}
				event.preventDefault();
			});
		}
	);
}

/* ******** Hover and Video Player Related Stuff ***********/

function registerHover(pageNumber){
	$('#cellStreamSlider #csPage'+pageNumber +' .csCell').hover(function() { //mouseover
		
		if(!$('#cellStreamSlider .csCell').hasClass('active')){
			className = $(this).attr("class");
			index = className.substring(13); 
			$(this).animate({
					width: csActiveWidth+"px",
					height: csActiveHeight+"px",
					top: csActiveTopCoor[index]+'px',
					left: csActiveLeftCoor+ 'px'
					}, 200, 'swing');
			
			if ($(this).find('.csFlvUrl').text() != '' ){
				csSwfUrl = $(this ).find(".csSwfUrl").text();
				csConfigUrl = $(this).find(".csConfigUrl").text()
				csFlvUrl = $(this).find(".csFlvUrl").text();
				csPlayerId = $(this).find(".playerId").text();
				$("#"+csPlayerId).empty();
				var swf = new SWFObject(csSwfUrl,"cs_player","203","155","8");
                                swf.addVariable("config",csConfigUrl);
                                swf.addParam("allowfullscreen","true");
				swf.addVariable("file",csFlvUrl);
				swf.addVariable("image",csFlvUrl+".jpg");
				swf.addVariable("width","203");
				swf.addVariable("height","155");
				swf.addParam('allowscriptaccess','always');
				swf.write(csPlayerId);
				$("#"+csPlayerId).append('<div class="csFlvClose"><a id="csFlvCloseButton" href="JavaScript:void(0)">X<a/></div>')
				activateCsFlvClose($(this));
			}
		
			$(this).addClass('active');
		}
	}, function() { //mouseout
		if (playerIdle()) {
			$(this).stop();
			$(this).removeClass('active');
			resetActiveToNormal($(this));
			if ($(this).find('.csFlvUrl').text() != '' ){
				hidePlayer($(this));
			}
		}
	})
}

function resetActiveToNormal(cell){
	className = cell.attr("class");
	index = className.substring(13); 
	cell.css({
		width: csNormalWidth+'px',
		height: csNormalHeight+'px',
		top: csNormalTopCoor[index]+'px',
		left: csNormalLeftCoor+'px'
	})
	
}

function activateCsFlvClose(cell){
	$('#csFlvCloseButton').click(function(){
		cell=$("#cellStreamSlider").find('.active');
		cell.stop();
		cell.removeClass('active');
		resetActiveToNormal(cell);
		if (cell.find('.csFlvUrl').text() != '' ){
			hidePlayer(cell);
		}
	});
}


/* Function to hide the player */
function hidePlayer(cell) {
    if (!playerIdle()) {
   		sendEvent('cs_player','stop')
   	}
	state=-1;
	csPlayerId = cell.find(".playerId").text();
	csFlvUrl = cell.find(".csFlvUrl").text();
	$("#"+csPlayerId).empty();
	$("#"+csPlayerId).append('<img class="image" src="'+ csFlvUrl + '.jpg' +'"/>');
}

/* Check if the player is idle */	
var state=-1;
function playerIdle(){
	if (state <1){
		return true;
	}else {
		return false;
	}
}
 
function sendEvent(swf,typ,prm) { 
  try {
  thisMovie(swf).sendEvent(typ,prm); 
  }catch(err){
	writeToConsole(err);
  }
};
 
function getUpdate(typ,pr1,pr2,swf) {
if (typ=='state'){
       state = pr1;
  };
};
function thisMovie(swf) {
  if(navigator.appName.indexOf("Microsoft") != -1) {
    return window[swf];
  } else {
    return document[swf];
  }
};



/* **************** Utility Functions ***********/

function getXMLDOM(xml){
    if( window.ActiveXObject && window.GetObject ) {
        var dom = new ActiveXObject( 'Microsoft.XMLDOM' );
        dom.loadXML( xml );
        return dom;
    }
    if( window.DOMParser )
        return new DOMParser().parseFromString( xml, 'text/xml' );
    throw new Error( 'No XML parser available' );
}

function simpleDate(timestamp) {

	currentDate = new Date();
	postedDate = new Date(timestamp);
	
	offset = currentDate.getTime() - postedDate.getTime();
	
	/*display full timestamp if posted Date is in the future or more than 10 days ago*/
	if(offset < 0 || offset > 10 * 24 * 60 * 60 * 1000) {
		return postedDate.getMonth() + '/' + postedDate.getDate() + '/' + (postedDate.getYear() + 1900)
	}
	
	//display mins if less then an hour ago
	if(offset < 60 * 60 * 1000) {
		mins = Math.round(offset / (60 * 1000));
		return  mins + ' min' + (mins > 1 ? 's' : '') + ' ago';
	}
	
	//display hours if less than a day ago
	if(offset < 24 * 60 * 60 * 1000) {
		hrs = Math.round(offset / (60 * 60 * 1000));
		return  hrs + ' hr' + (hrs > 1 ? 's' : '') + ' ago';
	}

	//display days
	days = Math.round(offset / (24 * 60 * 60 * 1000));
	return days + ' day' + (days > 1 ? 's' : '') + ' ago';
}

function getNetopsImageUrl(image,size){
    tmp = image.substring(image.indexOf("_open") + 5);
	image='http://blastmob.com/warner/allseanpaul_open/netothumbs/'+ size + tmp;
	return image;
}

