function submitFormOnEnter(e) {
	if (e.which == 13) {
		e.cancelBubble = true;
		if (e.stopPropagation) {
			e.stopPropagation();
		}
		var submitButtonId = $("#" + e.target.id).attr("submitButton");
		var hiddenFormElementId = $("#" + e.target.id).attr("hiddenFormElement");
		var valGroup = $("#" + e.target.id).attr("validationGroup");
		$("#" + hiddenFormElementId).val(submitButtonId);
		//__doPostBack(submitButtonId,'');
		WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(submitButtonId, "", true, valGroup, "", false, true));
		return false;
	}
}

function hookupSubmitFormOnEnter(clientID, submitButton, hiddenFormElement, validationGroup) {
	var inputTextElements = $("#" + clientID + " input[type=text],#" + clientID + " input[type=password]");
	if (inputTextElements.length > 0) {
		for (var i = 0; i <= inputTextElements.length - 1; i++) {
			$("#" + inputTextElements[i].id).attr("hiddenFormElement", hiddenFormElement);
			$("#" + inputTextElements[i].id).attr("submitButton", submitButton);
			$("#" + inputTextElements[i].id).attr("validationGroup", validationGroup);
			$("#" + inputTextElements[i].id).keypress(submitFormOnEnter);
		}
	}
}

function prepDobControls() {
	$('div.signup,div#form-wrap').each(function() {
		var rc = this;
		rc.optinContainer = $(this).find('.optin');
		rc.dobD = $(this).find('.dob-day');
		rc.dobM = $(this).find('.dob-month');
		rc.dobY = $(this).find('.dob-year');
		rc.init = true;

		//TODO: show/hide options based on optin

		if (rc.optinContainer.length > 0) {
			//rc.optinField[0]._parent = rc;
			rc.dobD[0]._parent = rc;
			rc.dobM[0]._parent = rc;
			rc.dobY[0]._parent = rc;

			rc.dobD.bind('change', { regControl: rc, dobD: rc.dobD[0], dobM: rc.dobM[0], dobY: rc.dobY[0] }, calculateAge);
			rc.dobM.bind('change', { regControl: rc, dobD: rc.dobD[0], dobM: rc.dobM[0], dobY: rc.dobY[0] }, calculateAge);
			rc.dobY.bind('change', { regControl: rc, dobD: rc.dobD[0], dobM: rc.dobM[0], dobY: rc.dobY[0] }, calculateAge);

			rc.optionsVisible = false;

			rc.validate = function() {
				var dt = convertToDate(this.dobD[0], this.dobM[0], this.dobY[0]);
				if (dt != "Invalid Date") {
					return true;
				}
				else {
					checkDobOverride();
					return false;
				}
			};

			rc.shouldValidateOptin = function() {
				return rc.optionsVisible;

			};

			rc.dobD.triggerHandler('change', { regControl: rc, dobD: rc.dobD[0], dobM: rc.dobM[0], dobY: rc.dobY[0] });
		}
	});
}


$(function() {
	prepDobControls();
});


function calculateAge(event) {
	var regctrl = event.data.regControl;
	var isinit = regctrl.init;
	var dt = convertToDate(event.data.dobD, event.data.dobM, event.data.dobY);
	if (dt != "Invalid Date") {
		var now = new Date();
		var years = now.getFullYear() - dt.getFullYear();
		if (now.getMonth() < dt.getMonth() || (now.getMonth() == dt.getMonth() && now.getDate() < dt.getDate())) {
			years--;
		}
		if (years >= 18) {
			hideDobOverride();
			regctrl.optinContainer.show();
		}
		else {
			checkDobOverride();
			regctrl.optinContainer.hide();
		}
	}
	else {
		regctrl.optinContainer.hide();
		hideDobOverride();
	}
	regctrl.init = false;
}

function convertToDate(d, m, y) {
	var dd = parseInt(d.options[d.selectedIndex].value);
	var mm = parseInt(m.options[m.selectedIndex].value) - 1;
	var yy = parseInt(y.options[y.selectedIndex].value);
	var dt = new Date(yy, mm, dd);
	// Detection for bad dates (e.g. feb 31st)
	if (dt.getDate() != dd || dt.getMonth() != mm || dt.getFullYear() != yy) {
	    // if the dob-override box is checked, then the date is 'valid'
		if ($('#dob-container .dob-override input[type=checkbox][checked]').length < 1) {
			dt = "Invalid Date";
		}
	}
	return dt;
}

function hideDobOverride() {
	var $dobOverride = $('#dob-container .dob-override');
	if ($dobOverride.length > 0) {
		$dobOverride.hide();
	}
}

function checkDobOverride() {
	var $dobOverride = $('#dob-container .dob-override');
	if ($dobOverride.length > 0) {
		$dobOverride.show();
	}
}


function validatePassword(source, args) {
	var pwd = String(args.Value);
	args.IsValid = pwd.length >= 6;
}

function validateOptin(source, args) {
	if ($('#' + source.controltovalidate)[0]._parent.shouldValidateOptin()) {
		args.IsValid = !(args.Value == null || args.Value == '')
	}
	else {
		args.IsValid = true;
	}
}

function validateDob(source, args) {
    args.IsValid = $('#' + source.controltovalidate)[0]._parent.validate();

    var dobOverride = $('#dob-container .dob-override input[type=checkbox]');
    if (dobOverride.length > 0) 
    {
        // If override is checked then pass validation no matter what
        if (dobOverride.is(":checked")) 
        {
            args.IsValid = true;
        }
    }
}

function validatePrivacyPolicy(source, args) 
{
         if ($(".chkList").attr("checked")) {
			args.IsValid = true;
         }
		 else
		 {
			args.IsValid = false;
		 }
}

function initForumAddComment() {
	var radioButtons = $("#forum-add-comment input[type=radio]");
	if (radioButtons.length == 2) {
		if (radioButtons[0].checked) {
			$("#forum-add-comment #add-comment-email").show();
		} else {
			$("#forum-add-comment #add-comment-email").hide();
		}
	}
}

function searchMeals(mealSnackTypeId, tagId, searchText, orderby) {
	$.ajax({
		type: "POST",
		url: searchMealUrl,
		data: "{mealSnackTypeId:" + mealSnackTypeId + ",tagId:" + tagId + ",searchText:'" + searchText + "', orderBy:'" + orderby + "'}",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(msg) {
			searchMealSuccess(msg);
		},
		error: function(msg) {
			searchMealError(msg);
		}
	});
}

function searchMealSuccess(msg) {
	if (msg.d != null) {
		if (msg.d.length == 0) {
			$("#meal-finder-meals *").remove();
			$("#meal-finder-meals").append("<li class='ms_blue'>Sorry, we couldn't find any meals that matched your selection</li>");
		} else {
			// Remove current items
			$("#meal-finder-meals *").remove();
			// Add search results
			for (i = 0; i < msg.d.length; i++) {
				var mealItem = msg.d[i];
				var mealSnackId = mealItem[0];
				var mealName = mealItem[1];
				var mealRating = mealItem[2];
				var summerTag = (mealItem[3] != "") ? "<span class=\"meal-finder-summer-tag\" />" : "";
				var blueClass = " class='ms_blue'";
				if (i % 2 == 1) blueClass = "";
				$("#meal-finder-meals").append("<li" + blueClass + "><span class=\"stars-static\">" + mealRating + "</span> <input id='meal-finder-meals-radio-" + mealSnackId + "' type='radio' name='meal-finder-meals-radio' value='" + mealSnackId + "' /> &nbsp; " + summerTag + "<label for='meal-finder-meals-radio-" + mealSnackId + "'>" + mealName + "</label> </li>");
			}
			InjectStars();
		}
	} else {
		$("#meal-finder-meals *").remove();
		$("#meal-finder-meals").append("<li class='ms_blue'>Sorry, we couldn't find any meals that matched your selection</li>");
	}
}

function InjectStars() {
	var rating = $('.stars-static').each(function(idx, el) {
		var container = $(el);
		var rate = container.text();
		var star_html = '';
		for (i = 0; i < 5; i++) {
			if (i < rate) {
				star_html += '<div class="star star_on"><a title="' + (i + 1) + '">' + (i + 1) + '</a></div>';
			}
			else {
				star_html += '<div class="star"><a title="' + (i + 1) + '">' + (i + 1) + '</a></div>';
			}
		}
		container.html(star_html);
	});
}

function searchMealError(msg) {

}

function bernard(feeling) {
	$.ajax({
		type: "POST",
		url: parent.setFeelingForDayUrl,
		data: "{day:'" + parent.displayDate + "',feelingId:-1,feelingText:'" + feeling + "'}",
		contentType: "application/json; charset=utf-8",
		dataType: "json",
		success: function(msg) {
			bernardSuccess(msg);
		},
		error: function(msg) {
			bernardError(msg);
		}
	});
}

function bernardSuccess(msg) {
	parent.refreshMeals();
}

function bernardError(msg) {
	parent.refreshMeals();
}

function postBackHiddenField(hiddenFieldID) {
	var hiddenField = $get(hiddenFieldID);
	if (hiddenField) {
		hiddenField.value = (new Date()).getTime();
		__doPostBack(hiddenFieldID, '');
	}
}

function panelNeedsInit(targetPanel, args) {
	if (targetPanel == null) return false;
	if (args == null) return false;
	var c = '';
	var u = '';
	for (var i = 0; i < args.get_panelsCreated().length; i++) {
		c += args.get_panelsCreated()[i].id + ',';
	}
	for (var i = 0; i < args.get_panelsUpdated().length; i++) {
		u += args.get_panelsUpdated()[i].id + ',';
	}
	if (c.indexOf(targetPanel) != -1) return true;
	if (u.indexOf(targetPanel) != -1) return true;
}

function clickTryAnythingCereal(checkbox) {
	if (checkbox.attr("checked")) {
		$("#chkSweet").attr("checked", "");
		$("#chkFruity").attr("checked", "");
		$("#chkFilling").attr("checked", "");
	}
}

function clickSpecificCereal(checkbox) {
	if (checkbox.attr("checked")) {
		$("#chkTryAnythingCereal").attr("checked", "");
	}
}

function clickTryAnythingSnack(checkbox) {
	if (checkbox.attr("checked")) {
		$("#chkSweetSnacks").attr("checked", "");
		$("#chkSavourySnacks").attr("checked", "");
		$("#chkFruitySnacks").attr("checked", "");
	}
}

function clickSpecificSnack(checkbox) {
	if (checkbox.attr("checked")) {
		$("#chkTryAnythingSnack").attr("checked", "");
	}
}

function setupDirtyDataCheck() {
	// Every time we click a radio button or checkbox set the isDirty flag
	$("input[type=radio],input[type=checkbox]").click(function() { isDirty = true; });
	// Every time we change a text box or dropdown set the isDirty flag
	$("input[type=text],select,textarea").bind("change", function() { isDirty = true; });

	// When we click on one of the tabs check whether the flag is true, if so then warn
	// the user that they need to save first
	$("#settings-menu li a").click(function() { return checkDirtyBeforeNavigate($(this)); });
	$("#settings-menu li.active a").unbind("click");
}

var layerHtml;

function checkDirtyBeforeNavigate(el) {
	if (isDirty) {
		var destinationUrl = el.attr("href");
		if ($("#hiddenModalContent").html().trim().length > 0) {
			layerHtml = $("#hiddenModalContent").html();
		} else {
			$("#hiddenModalContent").html(layerHtml);
		}
		$("#btnDirtySaveYes").attr("goTo", destinationUrl);
		$("#btnDirtySaveYes").click(function() { $("#ctlSaveDestination").val($(this).attr("goTo")); var saveButtonId = $(".settings-save-holder input").attr("name"); __doPostBack(saveButtonId, null); });
		$("#btnDirtySaveNo").attr("goTo", destinationUrl);
		$("#btnDirtySaveNo").click(function() { document.location.href = $(this).attr("goTo"); });
		var inlineUrl = "#TB_inline?height=135&amp;width=600&amp;inlineId=hiddenModalContent&amp;modal=true";
		tb_show(null, inlineUrl, false);
		return false;
	} else {
		return true;
	}
}

function setupVeggieCheckbox() {
	$("#chkVegetarian").click(function() { clickVeggie($(this)); });
	clickVeggie($("#chkVegetarian"));
}

function clickVeggie(checkbox) {
	if (checkbox.attr("checked")) {
		$("#chkFish").attr("checked", "");
		$("#chkRedMeat").attr("checked", "");
		$("#chkWhiteMeat").attr("checked", "");
		$("#chkFish").attr("disabled", "disabled");
		$("#chkRedMeat").attr("disabled", "disabled");
		$("#chkWhiteMeat").attr("disabled", "disabled");
		$("#lblFish").attr("disabled", "disabled");
		$("#lblRedMeat").attr("disabled", "disabled");
		$("#lblWhiteMeat").attr("disabled", "disabled");
		$("#lblFish").fadeTo("normal", 0.5);
		$("#lblRedMeat").fadeTo("normal", 0.5);
		$("#lblWhiteMeat").fadeTo("normal", 0.5);
	} else {
		$("#chkFish").attr("disabled", "");
		$("#chkRedMeat").attr("disabled", "");
		$("#chkWhiteMeat").attr("disabled", "");
		$("#lblFish").attr("disabled", "");
		$("#lblRedMeat").attr("disabled", "");
		$("#lblWhiteMeat").attr("disabled", "");
		$("#lblFish").fadeTo("normal", 1);
		$("#lblRedMeat").fadeTo("normal", 1);
		$("#lblWhiteMeat").fadeTo("normal", 1);
	}
}

