var smLocalStorage = null;

function ms_initFllwT() { }

function ms_getFllwT(view) {
	var queueItem = new ms_QueueItem(ms_baseStandard+'user.api', 'get');
	queueItem.addParam('action', 'getData');
	queueItem.addParam('name', 'topics');
	queueItem.addParam('callback', view);
	var queueItemObj = queueItem.getQueueItem();
	msQueueManager.addRequest(queueItemObj);
}

function ms_setFllwT(callback, data) {
   var queueItem = new ms_QueueItem(ms_baseStandard+'user.api', 'get');
   queueItem.addParam('action', 'setData');
   queueItem.addParam('name', 'topics');
	queueItem.addParam('data', data );
   queueItem.addParam('callback', callback);
   var queueItemObj = queueItem.getQueueItem();
   msQueueManager.addRequest(queueItemObj);
}

function ms_getSaveS(view) {
	var queueItem = new ms_QueueItem(ms_baseStandard+'user.api', 'get');
	queueItem.addParam('action', 'getData');
	queueItem.addParam('name', 'stories');
	queueItem.addParam('callback', view);
	var queueItemObj = queueItem.getQueueItem();
	msQueueManager.addRequest(queueItemObj);
}

function ms_setSaveS(callback, data) {
   var queueItem = new ms_QueueItem(ms_baseStandard+'user.api', 'get');
   queueItem.addParam('action', 'setData');
   queueItem.addParam('name', 'stories');
	queueItem.addParam('data', data );
   queueItem.addParam('callback', callback);
   var queueItemObj = queueItem.getQueueItem();
   msQueueManager.addRequest(queueItemObj);
}

var ms_scrubdata = function(data) {
   //alert( data );
   //console.log( data );
   var swapChar = function (data) {
      var result = data;
      switch ( data ) {
         case '#':
            result = '&#35;';
            break;
         case '&':
            result = '&#38;';
            break;
         case '(':
            result = '&#40;';
            break;
         case ')':
            result = '&#41;';
            break;
         case '"':
            result = '&#34;';
            break;
         case "'":
            result = '&#39;';
            break;
         case '<':
            result = '&#60;';
            break;
         case '>':
            result = '&#62;';
            break;
      }
      return result;
   };
	var swapAmp = function (data) {
		var r = data.replace( /[#&]/g, swapChar );
		//console.log('returning: ' + r );
		return r;
	};
   var replacement = data.replace( /[\n\r]/g, '' )
                     .replace( /javascript:/gi, '' )
                     .replace( /<\/?script\s*([^>]+)?>/gi, '' )
                     .replace( /eval\s*\(.+?\)/g, '' )
                     .replace( /[()\"'<>]/g, swapChar )
							.replace( /&[^#]|[^&]#/g, swapAmp )
   ;
	//console.log( replacement );
	//alert( replacement );
   return replacement;
};

var scrubMrv = ms_scrubdata;

/* LEGACY CODE FOR MRV */

var baseStandardApi = 'http://audience.cnn.com/services/cnn/';
//var baseStandardApi = 'http://aud-ite.cnn.com/services/cnn/';
var storage = null;

function saveMrvUrl(title,url)
{
	var data = (title + "|" + url);
   storage = StorageManager.getInstance().getStorage();
	storage.load();
	window.setTimeout( function() { mrvSmOnload( data ); }, 1000 );
}

function mrvSmOnload(data)
{
	var mrvdata = storage.get('memberservices.mrv');
   if(mrvdata == undefined) {
		if(ms_isLoggedIn() == true) {
			getMrvApi('doMrvSave');
			return;
		}
		mrvdata = data;
   } else {
		mrvdata = (data + '||' + mrvdata);
	}

	doMrvSave({sync:true,data:mrvdata});
}

function doMrvSave(jsonResponse)
{
	if(!jsonResponse.sync) {
	   msQueueManager.requestReceived();
	}
   var error = (typeof jsonResponse.errors == 'undefined') ? false : true;
   if(!error) {
		var mrvdata = jsonResponse.data;
		var truncds = deDupTrunc(mrvdata);
	   storage.put('memberservices.mrv', truncds);
	   storage.save();

		if ( ms_isLoggedIn() == true ) {
	      setMrvApi('setMrvApiDone',truncds);
		}
   } else {
      // console.log('get mrv failure');
      // console.log(jsonResponse);
   }
}

function getMrvApi(view) {
   var queueItem = new ms_QueueItem(baseStandardApi+'user.api', 'get');
   queueItem.addParam('action', 'getData');
   queueItem.addParam('name', 'mrv');
   queueItem.addParam('callback', view);
   var queueItemObj = queueItem.getQueueItem();
   msQueueManager.addRequest(queueItemObj);
}

function setMrvApi(callback, data) {
   var queueItem = new ms_QueueItem(baseStandardApi+'user.api', 'get');
   queueItem.addParam('action', 'setData');
   queueItem.addParam('name', 'mrv');
   queueItem.addParam('data', data );
   queueItem.addParam('callback', callback);
   var queueItemObj = queueItem.getQueueItem();
   msQueueManager.addRequest(queueItemObj);
}

function setMrvApiDone(jsonResponse) {
    msQueueManager.requestReceived();
}

function deDupTrunc(mrvdater) {
	// console.log(mrvdater);
   var dater = ms_scrubdata(mrvdater).split('||');
//	var dater = mrvdater.split('||');
	var dedups = [];
	
	// dedup our array
	for(var i = 0 ; i < dater.length ; ++i ) {
	   if(dater[i].length > 0 && dedups.indexOf( dater[i], 0, false ) < 0 ) {
	      dedups.push( dater[i] );
	   }
	}
	// trunc our array
	mrvdater = dedups.splice(0,10);
	var r = mrvdater.join('||');
	// console.log(r);
	return r; // mrvdater.join('||');
}
