/* SM */
var smLocalStorage = null;
var loadingDiv ='<div align="center" style="margin-top: 25px;"><div class="cnn_loadimg30px"><img src="http://i.cdn.turner.com/cnn/.element/img/3.0/global/misc/loading.gif" width="30" height="30" alt="" border="0"></div><div class="cnn_loadimgtxt">Please wait while data loads.</div></div>'

/*MRV tracking options cookie and local storage */
var trackOpt;
var local_mrv_track;

/*local pages will stored in a cookie*/
var local_mrv_pages;

/* Logger function */
function console_log(info) { //so all logging can be turned on or off in one stroke
 console.log(info);
 //alert(info);
}


/* LOAD */
function ms_initMrv() {
	smLocalStorage = StorageManager.getInstance().getStorage();
	
	// Grab the Local page store
	local_mrv_pages = allCookies['mrvPages'] || null;
	var track_mrv;

	$('cnnConnectMrvContent').innerHTML = loadingDiv;	
	if(ms_isLoggedIn() == true) {
		//ms_getMrv('ms_uiGetMrv');		
		//ms_getMrv('ms_uiGetMRVs');
		
		var obj = {
					params: {
						name: 'mrv'
					},
					onSuccess: function(response){
						console.log(response);
						ms_uiGetMRVs(response.responseJSON);
					}
		};
		Member.getData(obj);
		
		getMrvTrack();
		
	} else {		
		ms_getMrvSm();		
		mrvTrackLocalGet();
	}	
	//$('hotTopToggle').setStyle({display: 'block'});
}

function ms_getMrvSm() { //Load local storage and wait to get it
	smLocalStorage.load();
	window.setTimeout( function() {ms_mrvSmOnload();}, 0);
}

function ms_mrvSmOnload() { // Get local storage and send to check before drawing
	if(local_mrv_pages == null ) {
		//Element.update('cnnConnectMrvContent', '<h3>You have no most recently viewed content</h3>');
		showDefaultMRV();
		return false;
	} else {
		ms_uiGetMrvSm(local_mrv_pages);			
	}
}


/* API */
function ms_getMrv(view) { //Get Member Services Recently Viewed
	console.log('something just called an old MRV MS GET function');
}

function ms_setMrv(callback, data) { //Set Member Services Recently Viewed
	console.log('something just called an old MRV MS SET function');
}

function ms_setMrvSm(data) { //Set Local Storage
   smLocalStorage.put('memberservices.mrv', data);
   smLocalStorage.save();
}



/* MRV Tracking Cookie & Local Storage*/

/* local */
function mrvTrackLocalGet() { //gets/sets the mrv tracking value for local storage
	local_mrv_track = allCookies['mrvTrack'] || null;//smLocalStorage.get('userTrackMrv');	
		
	if(local_mrv_track == 'undefined' || local_mrv_track == '' || local_mrv_track == null) {
		local_mrv_track = 'true';
		mrvTrackLocalSet(local_mrv_track);
	}
	else {		
		trackingMRVUpdate(local_mrv_track);
	}
}

function mrvTrackLocalSet(localData) {// this function & local storage not being used
	smLocalStorage.put('userTrackMrv',localData);	
	smLocalStorage.save();
	//console_log('local saved as ' + localData);
}

/* cookie */
function mrvCookieSetter(trackData) {
	CNN_setCookie('mrvTrack', trackData, 24 * 30 * 12, '/', document.domain);
}

function getMrvTrack() { // get's the mrv tracking value from the cookie or sets it if it's not there
	var mrvCookie = allCookies['mrvTrack'] || null;
		
	if(mrvCookie == null || mrvCookie == 'undefined'){
		setTrack(mrvCookie);		
		return false;
	} else {
		trackOpt = mrvCookie;
		trackingMRVUpdate(mrvCookie);		
	}
}

/* both local & cookie use these functions */
function setTrack(value) { // sets the mrv tracking value for cookie only if logged in, and local storage either way
	var tracking;
	
	if(value == 'undefined' || value == null || value == '') {
		tracking = 'true';
	}
	else {
		tracking = value;	
	}
	if ( ms_isLoggedIn() == true ) { 
		mrvCookieSetter(tracking);
	}
	mrvTrackLocalSet(tracking);	
	trackingMRVUpdate(tracking);
}	

function trackingMRVUpdate(value) { // updating the mrv tracking module 
	var is_on = value;	
	var el = $('htTogBtn');
	
	if(is_on == 'false'){
		el.removeClassName('htOff').addClassName('htOn');	
		$('htClearBtn').setStyle({display: 'none'});	
		showDefaultMRV();	
		
	} else if (is_on == 'true') {
		el.removeClassName('htOn').addClassName('htOff');	
		$('htClearBtn').setStyle({display: 'inline-block'});
		showUserMRV();
		
	} else {
		el.removeClassName('htOn').addClassName('htOff');
	}
}


function mrvTrackToggle() { // on off toggle button
	var is_on = trackOpt;
	var local_on = local_mrv_track;
	
	if ( ms_isLoggedIn() == true ) { 
		if(is_on == 'true'){
			trackOpt = 'false';
			//showDefaultMRV();
		} else if (is_on == 'false') {
			trackOpt = 'true';
		}
		setTrack(trackOpt);
	}
	else { //local storage
		if(local_on == 'true'){
			local_mrv_track = 'false';
			//showDefaultMRV();
		} else {
			local_mrv_track = 'true';
		}
		setTrack(local_mrv_track);
		ms_mrvSmOnload();
	}
}

function showDefaultMRV() {		
		jQuery('#cnnConnectMrvContent').hide();
		jQuery('#htClearBtn').hide();
		jQuery('#recent_most_popular').css('display','block').show();
		jQuery('.most_pop_today').css('display','block').show();
}

function showUserMRV() {
		jQuery('#cnnConnectMrvContent').css('display','block').show();
		jQuery('#recent_most_popular').hide();
}

/* RESPONSE */

function ms_uiGetMRVs(jsonResponse) { // get Logged in User MRV jSON response
	// member services storage
	msQueueManager.requestReceived();
 	var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
	if(error == false) { // success
	  
		//console.log(jsonResponse.data);
		if (jsonResponse.data == null || jsonResponse.data == "" || jsonResponse.data == "undefined") {
			
			if (local_mrv_pages == null || local_mrv_pages == "" || local_mrv_pages == "undefined") {
				showDefaultMRV();
				return false;
			} else {
				//console.log(local_mrv_pages);
				//var u = scrubMrv(local_mrv_pages);
				//user_data = deDupTrunc(u);
				drawMrv(local_mrv_pages);
				return false;
			}
		} else {
			
			//check for local data and add it to the user data before sort. 	
			var user_data = scrubMrv(jsonResponse.data);			
			
			
			if (local_mrv_pages != null) {
				//console.log(local_mrv_pages);
				var loc_mrvdata = scrubMrv(local_mrv_pages);
				var comboData = loc_mrvdata + '||' + user_data; 
				//var sorted_mrv = sortMRV(comboData);  the sort is now in mynews_storage.js inside the deDupTrunc() function
				var clean_data = deDupTrunc(comboData);				
				drawMrv(clean_data);
				mrvCookieListSetter(clean_data);
			
			} else { 
				//ms_setMrvSm(dater);
				//var dater = sortMRV(user_data);
				var cleanData = deDupTrunc(user_data);
		  
				drawMrv(cleanData);
				mrvCookieListSetter(cleanData);
				//console_log('dater - ' + dater);
			}		
		}	
	  	
	} else {
		// error display
	}

}


function ms_uiGetMrv(jsonResponse) {
	// lets iJax know it can process the next request
	msQueueManager.requestReceived();
 	var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
	if(error == false) {
		// update ui for successful
      var dater = scrubMrv(jsonResponse.data);
      ms_setMrvSm(dater);
      drawMrv(dater);
	  //console_log(dater);
	} else { 
		// error
		//$('cnnConnectMrvLoadingContent').innerHTML = 'The service is temporarily unavailable, please <a href="javascript:void(0)" onclick="window.msReload();">try again</a> soon.<br/>Thank you for your patience!';

	}
}

function ms_uiGetMrvSm(data) { //check local storage before sending to draw UI
	if(data != 'undefined' && data != '') {
	  // update ui for successful
	  var dater = scrubMrv(data);	  
      drawMrv(dater);	  
	} else {
		// error		
	}
}

function ms_uiSetMrv(jsonResponse) {
    msQueueManager.requestReceived(); // lets iJax know it can process the next request
    var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
    if(error) {
		//console_log('error setting mrv');
		//console_log(jsonResponse);
    }	
}



/* GUI */
function newsToShow() { //determines which tab to display initially
	var p_url =  window.location.search;
	var p_query;
	
	function do_Swap(){
		//set the page ID temporarily so the swap can fire
		var page_id = this.id
		this.id=p_query;
		
		//perform the swap and set the page id back to orignal val (most likely null)
		swapMyNews();
		this.id=page_id;
		return false
	}
	
	//saved & all_followed
	if (p_url == '?view=saved'){
		p_query = 'saved';
		//$('mytopics_right').innerHTML = loadingDiv;
		do_Swap();
	} 
	else if (p_url == "?view=followed") {
		p_query = 'all_followed';
		$('stories_followed_topics_cntr').innerHTML = loadingDiv;
		do_Swap();
	}
	else { 
		//
	}
}



function drawMrv(value) {
	//newsToShow();
	
	mrvtitleurls = [];
	if ( value != undefined && value != "" && value != 'false' ) {
		mrvvalue = value;
		mrvvalue = mrvvalue.split('Black in America - ').join(''); // removes BIA text from elongated title as a requested preference
		//mrvtitleurls = value.split("||");
		mrvtitleurls = mrvvalue.split("||");
	}
   var mrvHtml = '';
	if ( mrvtitleurls.length > 0 ) {

	for(var i=0;i<mrvtitleurls.length && i < 10;i++) {
	 var mtu = mrvtitleurls[i]; 
	 var mrvarray = mtu.split("|");
		mrvHtml+= '<div class="sub_story" id="mrv_story_'+i+'"><h1><a href="'+mrvarray[1]+'">'+mrvarray[0]+'</a><a class="remove_saved_story" href="#" onclick="return false;" ></a></h4></div>';
	}
	
	jQuery("#cnnConnectMrvContent").html(mrvHtml);
	//jQuery('#recent_most_popular').hide();
	
	jQuery("#cnnConnectMrvContent .remove_saved_story").click(function () { // remove stories
		$currentMrvDiv = jQuery(this).parent().parent();
		/*var currentMrv = $currentMrvDiv.children().children().html();
		var currentMrv = currentMrv + "|" + $currentMrvDiv.children().children().attr('href');
		*/
		var currentMrv = $currentMrvDiv.attr('id');
		removeMrv(currentMrv);
	});	
	}
	
	newsToShow();
}


function clearMRV() {// clear the entire set
	var removes = $$('a.remove_saved_story');
	var data='';
	mrvCookieListSetter(data);
	t_data = data;
	if ( ms_isLoggedIn() == true ) {
		  
		  		var obj = {
					params: {
						name : 'mrv',
						data : t_data
					},
					onSuccess: function(response){
						console.log(response);
						setMrvApiDone(response.responseJSON);
					}
		};
		Member.setData(obj);

		
		//  setMrvApi('setMrvApiDone',data);		  
	}
	
	/*		
	jQuery.each(removes, function() {
		$currentMrvDiv = jQuery(this).parent().parent();
		//var currentMrv = $currentMrvDiv.children().children().html();
		//var currentMrv = currentMrv + "|" + $currentMrvDiv.children().children().attr('href');
		var currentMrv = $currentMrvDiv.attr('id');
		removeMrv(currentMrv);
	});
	*/
	showDefaultMRV();
}


function removeMrv(mrvitem) { // removes selected item from MRV -- needs update to remove dates from storage for match removal, or just add jquery.data to the elements on draw, then add that to match query

	//storage = StorageManager.getInstance().getStorage();
	//storage.load();
	var mrvdata = local_mrv_pages; //storage.get('memberservices.mrv');
	mrvdata = mrvdata.replace(/&#39;/gi,"'").replace(/&#35;/gi,"#").replace(/&#38;/gi,"&").replace(/&#40;/gi,"(").replace(/&#41;/gi,")").replace(/&#34;/gi,'"').replace(/&#60;/gi,"<").replace(/&#62;/gi,">"); // descrub for mrv match
	mrvdata = mrvdata.split("||");
	var position = mrvitem.replace('mrv_story_', '') * 1;//jQuery.inArray(mrvitem, mrvdata);
	if (position != -1) { // only proceed if no match
		$currentMrvDiv.remove(); // remove mrv html from UI
		mrvdata.splice(position,1);
		if (mrvdata.length < 1) {showDefaultMRV();}
		new_mrvdata = mrvdata.join('||');

		if ( ms_isLoggedIn() == true ) {
		 
		 
		 		  		var obj = {
					params: {
						name : 'mrv',
						data : new_mrvdata
					},
					onSuccess: function(response){
						console.log(response);
						setMrvApiDone(response.responseJSON);
					}
		};
		Member.setData(obj);

		//  setMrvApi('setMrvApiDone',new_mrvdata);		  
		
		
		}
		//save the new data to the cookie
		window.setTimeout(function () {mrvCookieListSetter(new_mrvdata);}, 500); // function located in mynews_storage.js
		//console.log(new_mrvdata);
	}
}

function setMrv(data) { // temp to set MRV to the intended MRV string with time/dates
	storage = StorageManager.getInstance().getStorage();
	storage.load();
	//mrvdata = 'Bush weeps|http://www.cnn.com|1/9/2009-10:22||Karzai Speaks|http://www.cnn.com|1/6/2009-10:22||Obama meeps|http://www.cnn.com|1/3/2009-10:25||McCain deflates|http://www.cnn.com|1/3/2009-10:23||SA procreates|http://www.cnn.com|1/3/2009-10:21';
	mrvdata = data;
	storage.put('memberservices.mrv', mrvdata);
	storage.save();
	if ( ms_isLoggedIn() == true ) {
	  setMrvApi('setMrvApiDone',mrvdata);
	}
}

function localMrv() { // temp
	smLocalStorage = StorageManager.getInstance().getStorage();
	smLocalStorage.load();
   var mrvdata1 = smLocalStorage.get('memberservices.mrv');
   //console_log(mrvdata1);

}
function msMrv() { // temp
	ms_getMrv('ms_uiGetMrv');
}

var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
function sortByDateA(a, b){ // sort dates ascending
	a = a.replace(dateRE,"$3$2$1");
	b = b.replace(dateRE,"$3$2$1");
	if (a>b) {return 1;}
	if (a <b) {return -1;}
	return 0;
}
function sortByDateD(a, b){ // sort dates descending
	a = a.replace(dateRE,"$3$2$1");
	b = b.replace(dateRE,"$3$2$1");
	if (a>b) {return -1;}
	if (a <b) {return 1;}
	return 0;
}

function getAndSortMRV() { 
	//storage = StorageManager.getInstance().getStorage();
	//storage.load();
	var mrvdata = local_mrv_pages;//storage.get('memberservices.mrv');
	sortMRV(mrvdata);
}

//bypassing this sort for now, something about it was causing too many duplicates
function sortMRV(mrvdata) { // gets then sorts MRVs based on time/date, and updates MRV storage.. combine local and user MRVs and pass it as mrvdata
	
	MRVarray = new Array();
	MRVarray = mrvdata;
	MRVarray = MRVarray.split("||");
	sortedMRVarray = new Array();
	for (i=0;i<MRVarray.length;i++) {
		sortedMRVarray[i] = MRVarray[i].split("|");
	}
	arrayTimes = new Array();
	for (i=0;i<sortedMRVarray.length;++i) { // create array of just dates
		arrayTimes.push(sortedMRVarray[i][2]);
		//console.log(sortedMRVarray[i][2]);
	}

	arrayTimes.sort(sortByDateD); // sort the dates - sortByDateD

	var sortedMRVcomplete = '';
	var len = arrayTimes.length;
	for (i=0;i<len;++i) {
		var len2 = sortedMRVarray.length;
		for (n=0;n<len2;++n) {
			if (sortedMRVarray[n][2] == arrayTimes[i]) { // find matched date and add by sorted value
				sortedMRVcomplete += sortedMRVarray[n][0] +"|"+ sortedMRVarray[n][1] +"|"+ sortedMRVarray[n][2]; // create new MRV array with sorted values
				if (i < arrayTimes.length-1) { 
					sortedMRVcomplete += "||";
				}
			}
		}
	}
	//sortedMRVcompleteArray = sortedMRVcomplete.split("||");
	
	
	if ( ms_isLoggedIn() == true ) {
		setMrvApi('setMrvApiDone',sortedMRVcomplete);
		ms_getMrv('ms_uiGetMrv'); // get then draw/redraw mrv ui

	} else { 
		mrvCookieListSetter(sortedMRVcomplete);
		//storage.put('memberservices.mrv', sortedMRVcomplete);
		//storage.save();
		ms_getMrvSm();
	}
	
	return sortedMRVcomplete;
}

function setMrvApiDone(jsonResponse) { }
