/**
 * jquery.sv.ares.js defines javascript used for the ares widget
 */
;(function($){
	$.fn.extend({
		svAres: function(options) {
			var defaults = {};

			var options = $.extend(defaults, options);

			var _bindDates = function(el) {
				if (typeof $.fn.datepicker != 'undefined') {
					$(el).find('.ares-dates .input input')
						.attr('readonly','readonly')
						.datepicker({
							dateFormat: 'mm/dd/yy'
							,minDate: new Date()
						}).siblings('img').click(function(){
							$(this).siblings('input').datepicker('show');
						});
					$(el).find('.ares-dates #start-date')
						.datepicker(
							'option'
							,'onSelect'
							,function(dateText, inst) {
								var sbmtFrm = $(this).parents('.ares-widget');
								sbmtFrm.find('#sDay').val(inst.selectedDay);
								sbmtFrm.find('#sMonth').val(inst.selectedMonth + 1);
								sbmtFrm.find('#sYear').val(inst.selectedYear);
								sbmtFrm.find('#end-date').datepicker(
									'option'
									,'minDate'
									,$(this).datepicker('getDate')
								);
							}
						);
				}
			};

			var _validateForm = function(el) {
				var success = false;
				var frmFields = {};
				// get all fields
				for (var ii = 0 ; ii < el.length ; ii++) {
					frmFields[el[ii].name] = el[ii];
				}

				// check that dates are filled in
				if(typeof frmFields['start-date'] != 'undefined'
						&& typeof frmFields['end-date'] != 'undefined'
						) {
					var startDate = $(frmFields['start-date']).datepicker('getDate');
					var endDate = $(frmFields['end-date']).datepicker('getDate');
					
					// check that dates are valid and calculate nights
					if (typeof startDate == 'object' && typeof endDate == 'object' && endDate > startDate) {
						if (typeof frmFields['nights'] != 'undefined')
							frmFields['nights'].value = Math.floor((endDate)/86400000) - Math.floor((startDate)/86400000);
						success = true;
					}
				}
				return success;
			}

			var _bindSubmit = function(el) {
				$(el).find('form').bind('submit',function(ev){
					return _validateForm(this);
				});
			};

			return this.each(function() {
				var o = options;

				// date label bind and show
				_bindDates(this);

				// filter data
				_bindSubmit(this);

				return this;
			});

		}
	});
})(jQuery);

$(document).ready(function(){
	$('.ares-widget').svAres();
});

