var reminder = (function() {
	var r = {};

	function parseCron(time) {
		var elements = time.split(' ');
		return {
			minutes:    elements[0],
			hours:      elements[1],
			dayOfMonth: elements[2],
			month:      elements[3],
			dayOfWeek:  elements[4]
		};
	}

	function addForm(type, value, callback) {
		if(type === 'simple') {
			if(typeof value === 'undefined') {
				$('.frequencyDetails>div').slideUp('fast');
				if(typeof callback === "function") callback();
				return;
			}

			$('.times.day input').hide().slice(0,value).show();

			if(!$('.times.day').is(':visible')) {
				$('.frequencyDetails>div').slideUp('fast');
				$('.times.day').slideDown('fast', function() {
					if(typeof callback === "function") callback();
				});
			}
		} else {
			var frequency = $(".reminderForm select[name=advancedFrequency]").val(),
				unit = $(".reminderForm select[name=advancedUnit]").val();

			$('.frequencyDetails>div').slideUp('fast');
			$('.'+frequency+'.'+unit).slideDown('fast', function() {
				if(typeof callback === "function") callback();
			});
		}
	};

	function onceADay(element, name) {
		var type = $('.reminderForm select[name='+name+'_time]').val(),
			hours = $('.reminderForm input[name='+name+'_hours]').val(),
			minutes = $('.reminderForm input[name='+name+'_minutes]').val();

		if(element === 'select') {
			if(type !== "custom") {
				var time = parseCron(type);
				$('.reminderForm input[name='+name+'_hours]').val(time.hours);
				$('.reminderForm input[name='+name+'_minutes]').val(time.minutes);
			}
		} else {
			$('.reminderForm select[name='+name+'_time] option').removeAttr('selected');
			$('.reminderForm select[name='+name+'_time] option[value=custom]').attr('selected', 'selected');
		}
	}

	r.init = function() {
		$('.frequencyDetails>div').hide();
		$('.advanced').hide();

		// Toggle Simple/Advanced Frequency
		var toggling = false,
		    defaultVal;
		$('.toggleAdvancedFrequency').toggle(function() {
			if(toggling) return; else toggling = true;
			$('input[name=frequencyType]').val('advanced');

			$('.frequencyType .simple').slideUp('fast', function() {
				$('.toggleAdvancedFrequency').html('Moins d\'options');
				$('.frequencyType .advanced').slideDown('fast', function() {
					addForm(false, false, function() {toggling = false;});
				});
			});
		}, function() {
			if(toggling) return; else toggling = true;
			$('input[name=frequencyType]').val('simple');

			$('.frequencyType .advanced').slideUp('fast', function() {
				$('.toggleAdvancedFrequency').html('Plus d\'options');
				$('.frequencyType .simple').slideDown('fast', function() {
					addForm('simple', $('input[name=simpleFrequency]:checked').val(), function() {toggling = false;});
				});
			});
		});

		if($('input[name=frequencyType]').val() === 'advanced') {
			$('input[name=frequencyType]').val('simple');
			$('.toggleAdvancedFrequency').trigger('click');
		} else {
			addForm('simple', $('input[name=simpleFrequency]:checked').val());
		}

		// Event Listeners on the Frequency Type
		$('.reminderForm .simple input').click(function() {addForm('simple', $(this).val());});
		$('.reminderForm select[name=advancedFrequency]').change(addForm);
		$('.reminderForm select[name=advancedUnit]').change(addForm);

		// Event Listeners on the select hour
		var hourForm = ['onceADay', 'onceAWeek', 'severalTimesAWeek', 'onceAMonth', 'severalTimesAMonth'];
		for(var i=0;i<hourForm.length;i++) {
			$('.reminderForm select[name='+hourForm[i]+'_time]').change(function() { onceADay('select', $(this).attr('name').slice(0,-5)) });
			$('.reminderForm input[name='+hourForm[i]+'_hours]').change(function() { onceADay('input', $(this).attr('name').slice(0,-6)) });
			$('.reminderForm input[name='+hourForm[i]+'_minutes]').change(function() { onceADay('input', $(this).attr('name').slice(0,-8)) });
		}

		// Event Listeners on the Reminder Type
		$('.reminderForm input.reminderType').focus(function() {
            $(this).prev().attr('checked', 'checked');
    	});
	};

	return r;
})();

var tabs = (function() {
	var t = {};

	function changeTab(menu, next) {
		menu.parent().children('div.tab-content').hide();
		menu.parent().find('.'+next).show();
		menu.find('li').removeClass('active');
		menu.find('a[href='+next+']').parent().addClass('active');
	}

	t.init = function() {
		var active = $('.tabs li.active a').attr('href');
		$('.tabs').parent().find('div.tab-content:not(.'+active+')').hide();
		$('.masante .tabs a').click(function() {
			changeTab($(this).parent().parent(), $(this).attr('href'));
			return false;
		})
	};

	return t;
})();

function slideUpVideo()
{
	$('#player-container').slideUp(1000, "easeOutQuad", function(){
				$('#masante-replay-button').show();
			}
	);
}

function slideDownVideo()
{
	$('#masante-replay-button').hide();
	$("#player-container").slideDown(1000, "easeOutQuad");
}

/**
 * Subscribe to PIN reminder. Promo landing page for brunet-masante.
 */
function subscribePINReminder(submitElement)
{
	var form = $(submitElement).parent('form');
	//var formContainer = $(submitElement).parent('form').parent('div');
	
	$.ajax({
		type: "POST",
		url: "/prescriptions/subscribePINReminder/" + language,
		data: form.serialize(),
		success: function(response){
			form.html(response);
		},
		error: function(response){
			form.html(response);
		},
		complete: function(response){
			$("input").placeholder();
		}
	});
	return false;
}

$(document).ready(function() {
	if($('#player-container').length > 0){
		$('#masante-replay-button').hide();
	}


	$('a[rel~="external"]').click(function(){
        $(this).attr('target','_blank');
      });

    $('a.delete').click(function() {
		if( !confirm('Supprimer ?') ) return false;
	});



	var renewalForm = $('form.renewalForm');

	$("select[name=addPrescription]", renewalForm).click(function() {
		var prescriptionId = $(this).val();
		if (prescriptionId == '') return false;

		var option = $(this).children('option[value=' + prescriptionId + ']');
		var rxNumber = option.attr('title');
		var prescription = option.html();

		var html = '<tr><td>' + rxNumber + '</td>'
			+ '<td>' + prescription + '</td>'
			+ '<td class="left">'
			+	'<input type="hidden" name="renewals[]" value="' + prescriptionId + '" />'
			+	'<input type="text" name="comments[]" value="" /> '
			+	'<a href="#' + prescriptionId + '" class="removeRenewal" style="display:none;">Enlever</a>'
			+ '</td></tr>';

		$('tr.addPrescription', renewalForm).before(html);
		$(".removeRenewal", renewalForm).show();
		option.remove();
		if ($('option', $(this)).length == 1)
			$('tr.addPrescription', renewalForm).hide();

		return false;
	});

	$(".removeRenewal", renewalForm).hide().live('click', function() {
		var prescriptionId = $(this).attr('href').slice(1);
		var rxNumber = $(this).parent().prev().prev().html();
		var prescription = $(this).parent().prev('td').html();

		var html = '<option value="' + prescriptionId + '" title="' + rxNumber + '">'
			+ prescription+'</option>';

		var select = $("select[name=addPrescription]", renewalForm);
		select.append(html);
		$(this).parent().parent().remove();

		if ($('option', select).length > 1) {
			$('tr.addPrescription', renewalForm).show();
		}

		if ($('input[name="renewals[]"]', renewalForm).length <= 1) {
			$(".removeRenewal", renewalForm).hide();
		}

		return false;
	});

	// Styles additions
	$(".listing tr:even td").css("background-color", "#d7ebf0");
	if($('input.calendar').length > 0)
	{
		$('input.calendar').datepicker({
			dateFormat: 'yy-mm-dd'
		});
	}
	$('.renewalForm input.reminderType').focus(function() {
        $(this).prev().prev().attr('checked', 'checked');
	});

	adjustRenewalForm();

	reminder.init();
	tabs.init();
});

function adjustRenewalForm() {
	var form = $('.renewalForm');
	if (form.length == 0) return; // Form is not on page.
	if (form.find('input[name=deliveryType]:checked').val() == 'pickup') {
		form.find('select[name=deliveryTime]').addClass('disabled');
		form.find('select[name=pickupTime]').removeClass('disabled');
	} else {
		form.find('select[name=pickupTime]').addClass('disabled');
		form.find('select[name=deliveryTime]').removeClass('disabled');
	}
}

$(document).ready(function() {
	var found = false;
	if (/\/masante\.html$/.test(document.location.href)) {
		$('#masante_menu a').each(function (index, el) {
			if (found) return;
			if (/masante$/.test($(el).attr('href'))) {
				$(el).addClass('on');
				found = true;
			}
		});
	}
	$('#masante_menu a').each(function (index, el) {
		if (found) return;
		if ($(el).attr('href') == document.location.href) {
			$(el).addClass('on');
			found = true;
		}
	});
});

// MaSanté jQuery Dialog Closure
(function(){
	var builtDialogs = {};
	var inSubmit = {};
	var baseModelDialogOptions = {autoOpen: false, width: 400, modal: true, resizable: false, draggable: false};

	var grayHelpTextColor = 'rgb(175, 175, 175)';
	var originalTextColor = null;
	
	var camelCaseString = function(str) {
		return str.replace(/^([a-z])/g, function($1){return $1.toUpperCase();}).replace(/(\-[a-z])/g, function($1){return $1.toUpperCase().replace('-','');});
	};
	
	var dateFieldFocusHandler = function() {
		$(this).css('color', originalTextColor).unbind('focus').val('');
	};
	
	var dayFieldChangeHandler = function() {
		var field = $(this);
		if(field.val() != 'JJ' && field.val() != 'DD'){
			field.css('color', originalTextColor).unbind('keydown').unbind('change').unbind('blur').unbind('click');
		}
	};

	var dayFieldClickHandler = function() {
		$(this).css('color', originalTextColor).unbind('keydown').unbind('change').unbind('blur').unbind('click').val('');
	};

	var dayFieldBlurHandler = function() {
		$(this).unbind('keydown').unbind('click').unbind('change').unbind('blur').bind('focus', dateFieldFocusHandler);
	};
	
	var showFormDialog = function(formName) {
		if(builtDialogs[formName] === undefined) {
			var callbackUrl = getFormCallbackUrl(formName);
		
			var dialogDiv = $('<div>').css("padding-right", 30);
			
			inSubmit[formName] = true;
			
			dialogDiv.load(callbackUrl, function() {
				var dialogTitle = dialogDiv.find('h3');
				
				dialogDiv.attr('title', dialogTitle.text());
				dialogTitle.remove();
				
				var dialogForm = dialogDiv.find('form');
				
				// Fix for watermark text in date fields
				var dateFields = dialogForm.find('li:first input.textfield[onfocus]');
				originalTextColor = dateFields.css('color');

				dateFields.unbind('focus').attr('onfocus', '');
				dateFields.first().val((language == 'en') ? 'DD' : 'JJ').css('color', grayHelpTextColor).click(dayFieldClickHandler).keydown(dayFieldChangeHandler).change(dayFieldChangeHandler).blur(dayFieldBlurHandler);
				dateFields.filter(':not(:first)').css('color', grayHelpTextColor).focus(dateFieldFocusHandler);
				
				// Setting the form "submit" handler. Since "submit" isn't an event
				// that supports bubbling, we cannot use .live()				
				var dialogFormSubmitHandler = function(event) {
					event.preventDefault();
					
					inSubmit[formName] = true;
					
					$.post(callbackUrl, dialogForm.serialize(), function(data) {
						if(data.result) {
							window.location.reload();
						} else {
							dialogDiv.html(data.html).find('h3').remove();
							
							dialogForm = dialogDiv.find('form');
							
							// Fix for watermark text in date fields
							var dateFields = dialogForm.find('li:first input.textfield[onfocus]');
							dateFields.unbind('focus').attr('onfocus', '');
							
							dateFields.each(function() {
								var field = $(this);
								var dateFieldId = field.attr('id');
								var isDefaultValue;
								
								switch(dateFieldId)
								{
									case 'dd':
										isDefaultValue = (field.val() == 'DD' || field.val() == 'JJ');
										break;
									
									case 'mm':
										isDefaultValue = (field.val() == 'MM');
										break;
									
									case 'yy':
										isDefaultValue = (field.val() == 'YYYY' || field.val() == 'AAAA');
										break;
								}
								
								if(isDefaultValue) {
									field.css('color', grayHelpTextColor).focus(dateFieldFocusHandler);
								}
							});						

							dialogForm.submit(dialogFormSubmitHandler);
						}
						
						inSubmit[formName] = false;
					}, 'json');
				};
				
				dialogForm.submit(dialogFormSubmitHandler);
				
				var modelDialogOptions = $.extend({open: (function() {
					$(this).find('li:first input.textfield:first').select();
				})}, baseModelDialogOptions);
				
				builtDialogs[formName] = dialogDiv;
				
				inSubmit[formName] = false;
				
				builtDialogs[formName].dialog(modelDialogOptions);
				builtDialogs[formName].dialog('open');
			});
		} else {
			builtDialogs[formName].dialog('open');
		}
	};
	
	var getFormCallbackUrl = function(formName) {
		return '/brunet_health_management/get' + formName + 'Form/' + language + '.html';
	};
	
	$(document).ready(function() {
		var followUpButtons = $('.js-followup-button');

		if(followUpButtons.length)
		{
			$('.ui-widget-overlay').live('click', function () {
				$('.ui-dialog-content').dialog('close');
			});

			followUpButtons.each(function() {
				var formButton = $(this);

				var formName = camelCaseString(formButton.attr('id').substring(16));

				inSubmit[formName] = false;

				formButton.click(function(event) {
					// Prevent default button click handler (do not navigate to href)
					event.preventDefault();

					if(!inSubmit[formName])
						showFormDialog(formName);
				});
			});
		}
	});
})();

// MaSanté Promo Dialog
(function(){
	var dialogDiv = null;
	var modelDialogOptions = {width: 600, modal: true, resizable: false, draggable: false};

	$(document).ready(function() {
		dialogDiv = $('#Dialog_NIP_Signup_Skip');

		if(dialogDiv.length)
		{
			$('#Dialog_NIP_Signup_Skip a').live('click', function(event) {
				var anchor = $(event.currentTarget);

				if(anchor.attr('href') === '#')
					event.preventDefault();

				$('.ui-dialog-content').dialog('close');
			});

			dialogDiv.dialog(modelDialogOptions);
		}
	});
})();

