/home/ivoiecob/email.hirewise-va.com/modules/CalendarWebclient/js/views/IcalAttachmentView.js
'use strict';

var
	_ = require('underscore'),
	ko = require('knockout'),
	
	Types = require('%PathToCoreWebclientModule%/js/utils/Types.js'),
	
	App = require('%PathToCoreWebclientModule%/js/App.js'),
	
	CalendarCache = require('modules/%ModuleName%/js/Cache.js'),
	CIcalModel = require('modules/%ModuleName%/js/models/CIcalModel.js')
;

function CIcalAttachmentView()
{
	this.ical = ko.observable(null);
}

CIcalAttachmentView.prototype.ViewTemplate = '%ModuleName%_IcalAttachmentView';

/**
 * Receives properties of the message that is displaying in the message pane. 
 * It is called every time the message is changing in the message pane.
 * Receives null if there is no message in the pane.
 * 
 * @param {Object|null} oMessageProps Information about message in message pane.
 * @param {String} oMessageProps.sFromEmail Message sender email.
 * @param {Array} oMessageProps.aToEmails
 * @param {Object} oMessageProps.oIcal
 */
CIcalAttachmentView.prototype.doAfterPopulatingMessage = function (oMessageProps)
{
	var
		aExtend = (oMessageProps && Types.isNonEmptyArray(oMessageProps.aExtend)) ? oMessageProps.aExtend : [],
		oFoundRawIcal = _.find(aExtend, function (oRawIcal) {
			return oRawIcal['@Object'] === 'Object/Aurora\\Modules\\Calendar\\Classes\\Ics';
		})
	;

	if (oFoundRawIcal)
	{
		var
			sAttendee = null,
			oIcal = CalendarCache.getIcal(oFoundRawIcal.File)
		;
		if (_.isFunction(App.getAttendee))
		{
			sAttendee = App.getAttendee(oMessageProps.aToEmails);
		}

		if (!oIcal)
		{
			oIcal = new CIcalModel(oFoundRawIcal, sAttendee);

			// animation of buttons turns on with delay
			// so it does not trigger when placing initial values
			oIcal.animation(false);
			_.defer(_.bind(function () {
				if (oIcal !== null)
				{
					oIcal.animation(true);
				}
			}, this));

			oIcal.updateAttendeeStatus(oMessageProps.sFromEmail);
		}
		this.ical(oIcal);
	}
	else
	{
		this.ical(null);
	}
};

module.exports = new CIcalAttachmentView();