/* ---------------------------------------
 	Pregnancy Due Date Calculator
	Author: apatten@einsteinindustries.com
	Requires the following DocShop Assets:
 	* YUI: yahoo-dom-event version: 2.4.1 (yahoo-dom-event.js)
 	* YUI: calendar version: 2.4.1 (yui-calendar.js)
 	* YUI: skin sam version: 2.4.1 (yui-skin-sam.css)
 	* Tools: Due Date Calculator (due_date_calculator.css) 
--------------------------------------- */

EI.namespace("EI.DocShop.Tools.DueDateCalculator");

EI.DocShop.Tools.DueDateCalculator = {
	_evaluationResultElt:null,
	_period_date:null,
	_due_date:null,
	_evaluationResponse:[],
	
	init : function() {
		var calendar = $('due_date_calendar_container');
		var results_div = new Element('div', { 'id' : 'evaluation_results', 'class' : 'hidden' });
		calendar.insert({after: results_div});
	},
	
	processEvaluation : function(date) {
		this._evaluationResultElt = $('evaluation_results');
		this._period_date = date;
		
		this.calculateDueDate();
		this.displayResult();		
	},
	
	calculateDueDate : function() {
		if(this._period_date) {
			this._due_date = new Date(280 * 86400000 + this._period_date.getTime());
		}
	},
	
	formatDate : function(date) {
		return date.getMonth()+1 + "/" + date.getDate() + "/" + date.getFullYear().toString().slice(2,4);
	},
	
	displayResult : function() {
		if (this._evaluationResultElt) {
			this.resetMessages();
			
			this._evaluationResultElt.removeClassName('hidden');

			this._evaluationResponse.push("<div id='highlighted_result'><span>" + this.formatDate(this._due_date) + "</span><br />Estimated Due Date</div>");
			this._evaluationResponse.push('<p>Keep in mind that the projected pregnancy due date is an estimate. This date was calculated by adding 40 weeks to the first day of your last period. According to the Mayo Clinic, only 5% of babies are born on their actual due date. However, it is estimated that about 80% of babies are born within 10 days of their due date.</p>');

			this._evaluationResultElt.update(this._evaluationResponse.join(''));
			new Effect.Highlight(this._evaluationResultElt, {startcolor:'#ffffff'});
		}
	},

	resetMessages : function() {
		this._evaluationResultElt.innerHTML = '';
		this._evaluationResultElt.addClassName('hidden');
		this._evaluationResponse = [this._evaluationResponse[0]];
	}
};

YAHOO.namespace("dueDate.calendar");

YAHOO.dueDate.calendar.init = function() {

	function handleSelect(type,args,obj) {
		var date = args[0][0];
		var period_date = new Date(date[0], date[1]-1, date[2]);

		EI.DocShop.Tools.DueDateCalculator.processEvaluation(period_date);
	}

	YAHOO.dueDate.calendar.dueDateCalendar = new YAHOO.widget.Calendar("dueDateCalendar","due_date_calendar_container");
	YAHOO.dueDate.calendar.dueDateCalendar.selectEvent.subscribe(handleSelect, YAHOO.dueDate.calendar.dueDateCalendar, true);
	YAHOO.dueDate.calendar.dueDateCalendar.render();
}

YAHOO.util.Event.onDOMReady(YAHOO.dueDate.calendar.init);
YAHOO.util.Event.onDOMReady(EI.DocShop.Tools.DueDateCalculator.init);