// submit links activation
	function setSubmitLinksEvents(wrapper)
	{
		if(wrapper)
			var submitLinks = wrapper.find('a.btnSubmit');
		else
			var submitLinks = jQuery('a.btnSubmit');
		
		submitLinks
			.click(function()
					{
						var form = jQuery(this).parents('form');
						form.submit();
						return false;
					})
	}

// replacement of submit buttons with custom submit links
	function replaceSubmitButtons(wrapper, cssClass)
	{
		if(wrapper)
			var submitBtns = wrapper.find('input:submit');
		else
			var submitBtns = jQuery('input:submit');
		
		submitBtns
			.each(function()
					{
						var submitBtn = jQuery(this);
						if (cssClass)
							var submitLink = jQuery('<a href="#" class="' + cssClass + '"><span>' + submitBtn.val() + '</span></a>');
						else
							var submitLink = jQuery('<a href="#" class="DynamicLnkButton"><div class="BoxTop"></div><div class="BoxContent">' + submitBtn.val() + '</div><div class="BoxBtm"></div></a>');
						submitBtn.replaceWith(submitLink);
						
						submitLink
							.click(function()
									{
										var form = jQuery(this).parents('form');
										form.submit();
										return false;
									})
					})
	}

// popup overlays activation

	// forgot password (called from login page and login overlay)
	function initPopupFormOverlays(wrapper)
	{
		if (!wrapper)
			wrapper = jQuery('body');

		wrapper.find('a.BtnInviteFriendAgain')
			.unbind('click')
			.click(function()
					{
						var ngLink = jQuery(this);
						var ngForm = new AJAXForm({
														popupFormTrigger: ngLink,
														dynamicWrapperId: 'AJAXNewGoalForm',
														AJAXpageUrl: ngLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
														{
														        replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
														},
														successCallBack: function(){location.reload()},
														closeCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														customCloseButton: '<a class="BtnBlack" href="#"><span>Cancel</span></a>',
														triggerOffsetX: -90,
														triggerOffsetY: 6
													 });

						return false;
					});

		wrapper.find('a.BtnItemComment')
			.unbind('click')
			.click(function()
					{
						var ngLink = jQuery(this);
						var ngForm = new AJAXForm({
														popupFormTrigger: ngLink,
														dynamicWrapperId: 'AJAXNewGoalForm',
														AJAXpageUrl: ngLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
														{
														        replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
														},
														successCallBack: function(){location.reload()},
														closeCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														customCloseButton: '<a class="BtnBlack" href="#"><span>Cancel</span></a>',
														triggerOffsetX: -65,
														triggerOffsetY: 10
													 });

						return false;
					});

		wrapper.find('a.BtnNewGoal')
			.unbind('click')
			.click(function()
					{
						var ngLink = jQuery(this);
						var ngForm = new AJAXForm({
														popupFormTrigger: ngLink,
														dynamicWrapperId: 'AJAXNewGoalForm',
														AJAXpageUrl: ngLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				initDatePickers(dynamicContentWrapper);
																				initGoalUnitDisplay(dynamicContentWrapper);
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -70,
														triggerOffsetY: 13
													 });

						return false;
					});
			
		wrapper.find('a.BtnNewGoal2')
			.unbind('click')
			.click(function()
					{
						var ng2Link = jQuery(this);
						var ng2Form = new AJAXForm({
														popupFormTrigger: ng2Link,
														dynamicWrapperId: 'AJAXNewGoalForm',
														AJAXpageUrl: getCICacheUrl(ng2Link.attr('href')),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				initDatePickers(dynamicContentWrapper);
																				initGoalUnitDisplay(dynamicContentWrapper);
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -70,
														triggerOffsetY: 15
													 });
						
						return false;
					});	
			
		wrapper.find('a.EditGoal')
			.unbind('click')
			.click(function()
					{
						var egLink = jQuery(this);
						var egForm = new AJAXForm({
														popupFormTrigger: egLink,
														dynamicWrapperId: 'AJAXNewGoalForm',
														AJAXpageUrl: getCICacheUrl(egLink.attr('href')),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				initDatePickers(dynamicContentWrapper);
																				initGoalUnitDisplay(dynamicContentWrapper);
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -96,
														triggerOffsetY: 12
													 });
						
						return false;
					});	
			
		wrapper.find('a.BtnAddNewGroup')
			.unbind('click')
			.click(function()
					{
						var ngLink = jQuery(this);
						var ngForm = new AJAXForm({
														popupFormTrigger: ngLink,
														dynamicWrapperId: 'AJAXNewFavGroupForm',
														AJAXpageUrl: ngLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				initDatePickers(dynamicContentWrapper);
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -20,
														triggerOffsetY: 15
													 });
						
						return false;
					});	
			
		wrapper.find('a.BtnRemove')
			.unbind('click')
			.click(function()
					{
						var rgLink = jQuery(this);
						var rgForm = new AJAXForm({
														popupFormTrigger: rgLink,
														dynamicWrapperId: 'AJAXRemoveGroupForm',
														AJAXpageUrl: getCICacheUrl(rgLink.attr('href')),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				initDatePickers(dynamicContentWrapper);
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -80,
														triggerOffsetY: 15
													 });
						
						return false;
					});	
			
		wrapper.find('a.BtnAddNewItem')
			.unbind('click')
			.click(function()
					{
						var niLink = jQuery(this);
						var niForm = new AJAXForm({
														popupFormTrigger: niLink,
														dynamicWrapperId: 'AJAXNewItemForm',
														AJAXpageUrl: niLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper', //.notice_error, .notice_success, .notice_warning, form are inside the wrapper
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -20,
														triggerOffsetY: 15
													 });
						
						return false;
					});
			
		wrapper.find('a.lnkForgotPassword')
			.unbind('click')
			.click(function()
					{
						var fpLink = jQuery(this);
						var fpForm = new AJAXForm({
														popupFormTrigger: fpLink,
														dynamicWrapperId: 'AJAXForgotPasswordForm',
														AJAXpageUrl: fpLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper',
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');

																			},
														successCallBack: null,
														closeOnSuccessfulSubmit: false,
														triggerOffsetX: -40,
														triggerOffsetY: 10
													 });
						
						return false;
					});
			
		wrapper.find('.MainMenu a.BtnLogIn')
			.unbind('click')
			.click(function()
					{
						var lgLink = jQuery(this);
						var lgForm = new AJAXForm({
														popupFormTrigger: lgLink,
														dynamicWrapperId: 'AJAXLoginForm',
														AJAXpageUrl: lgLink.attr('href'),
														AJAXpageElementsFilter: '.FormArea',
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				//setSubmitLinksEvents(dynamicContentWrapper); // activating submit links from this overlay
																				initPopupFormOverlays(dynamicContentWrapper); // activating overlays called from this overlay
																				//replaceSubmitButtons(jQuery('#AJAXForgotPasswordForm form')); // replacing submit buttons from this overlay
																			},
														successCallBack: function(){location.reload()},
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -390,
														triggerOffsetY: 30
													 });
						
						return false;
					});
			
		wrapper.find('a#lnkShareGoalWithFriends')
			.unbind('click')
			.click(function()
					{
						var sgLink = jQuery(this);
						var sgForm = new AJAXForm({
														popupFormTrigger: sgLink,
														dynamicWrapperId: 'AJAXShareGoalForm',
														AJAXpageUrl: getCICacheUrl(sgLink.attr('href')),
														AJAXpageElementsFilter: '.NewGoalViewWrapper',
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				//setSubmitLinksEvents(dynamicContentWrapper); // activating submit links from this overlay
																				//initPopupFormOverlays(dynamicContentWrapper); // activating overlays called from this overlay
																				//replaceSubmitButtons(jQuery('#AJAXForgotPasswordForm form')); // replacing submit buttons from this overlay
																			},
														successCallBack: function(){location.reload()},
														closeCallBack: function(){location.reload()},
														customCloseButton: '<a class="BtnBlack" href="#"><span>Cancel</span></a>',
														closeOnSuccessfulSubmit: false,
														triggerOffsetX: -90,
														triggerOffsetY: 13
													 });
						
						return false;
					});
			
		wrapper.find('a#lnkShareGoalWithFriendsRemove')
			.unbind('click')
			.click(function()
					{
						var sgLink = jQuery(this);
						var sgForm = new AJAXForm({
														popupFormTrigger: sgLink,
														dynamicWrapperId: 'AJAXShareGoalForm',
														AJAXpageUrl: getCICacheUrl(sgLink.attr('href')),
														AJAXpageElementsFilter: '.NewGoalViewWrapper',
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																				//setSubmitLinksEvents(dynamicContentWrapper); // activating submit links from this overlay
																				//initPopupFormOverlays(dynamicContentWrapper); // activating overlays called from this overlay
																				//replaceSubmitButtons(jQuery('#AJAXForgotPasswordForm form')); // replacing submit buttons from this overlay
																			},
														successCallBack: function(){location.reload()},
														closeCallBack: function(){location.reload()},
														customCloseButton: '<a class="BtnBlack" href="#"><span>Cancel</span></a>',
														closeOnSuccessfulSubmit: false,
														triggerOffsetX: -90,
														triggerOffsetY: 13
													 });
						
						return false;
					});
			
		wrapper.find('a.lnkSendMessage')
			.unbind('click')
			.click(function()
					{
						var smLink = jQuery(this);
						var smForm = new AJAXForm({
														popupFormTrigger: smLink,
														dynamicWrapperId: 'AJAXSendMessageForm',
														AJAXpageUrl: smLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper',
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																			},
														successCallBack: function(){location.reload()},
														closeCallBack: function(){location.reload()},
														customCloseButton: '<a class="BtnBlack" href="#"><span>Cancel</span></a>',
														closeOnSuccessfulSubmit: false,
														triggerOffsetX: -10,
														triggerOffsetY: 14
													 });
						
						return false;
					});
			
		wrapper.find('a.Rep')
			.unbind('click')
			.click(function()
					{
						var rmLink = jQuery(this);
						var rmForm = new AJAXForm({
														popupFormTrigger: rmLink,
														dynamicWrapperId: 'AJAXReplyMessageForm',
														AJAXpageUrl: rmLink.attr('href'),
														AJAXpageElementsFilter: '.NewGoalViewWrapper',
														formLoadCallBack: function(dynamicContentWrapper)
																			{
																				replaceSubmitButtons(dynamicContentWrapper, 'BtnBlack');
																			},
														successCallBack: function(){location.reload()},
														closeCallBack:  function(){location.reload()},
														customCloseButton: '<a class="BtnBlack" href="#"><span>Cancel</span></a>',
														closeOnSuccessfulSubmit: true,
														triggerOffsetX: -70,
														triggerOffsetY: 10
													 });
						
						return false;
					});
	// reply to messages popups
	}
	
function initDatePickers(wrapper)
{
	if(!wrapper)
		wrapper = jQuery('body');
		
	jQuery('input[name=StartDate], input[name=EndDate], input[name=Date]')
				.datepicker({
								showOn: 'both', 
								buttonImage: '/hsgm-images/common/icoCalendarSelect.gif', 
								//buttonImage: '/brian/goals/hsgm-images/common/icoCalendarSelect.gif', 
								buttonImageOnly: true,
								buttonText: 'Select Date',
								dateFormat: 'mm/dd/yy',
								speed:0, 
								closeAtTop:true
							});
	
}

 // url ajax filtering for code igniter
function getAJAXurl(url)
{
	var ajxUrl = new String(url);
	var filter = new RegExp(".[a-zA-Z]{2,4}$", "mig");
	return ajxUrl.replace(filter, "/ajax");
}

 // url ajax filtering for code igniter
function getCICacheUrl(url)
{
	var u = new String(url);
	var d = new Date();
	return u.replace(".html", "/" + d.getTime() + ".html");
}

function initGoalUnitDisplay(wrapper)
{
	if(!wrapper)
		var wrapper = jQuery('body');		
	var giCombo = wrapper.find('#GoalItemSelect');
	if(giCombo.size() > 0)
	{
		giCombo
			.change(function()
					{
						var combo = jQuery(this);
						updateGoalUnitDisplay(combo)
					});
			
		updateGoalUnitDisplay(giCombo);
	}
}

function updateGoalUnitDisplay(giCombo)
{
	var giComboSelection = giCombo.find('option:selected');
	var giComboRelatedItem = jQuery(giCombo.attr('rel'));
	giComboRelatedItem.html(giComboSelection.attr('measuringUnit'));
}

function getGroupFavorites(groups)
{
	if(!groups)
		var groups = jQuery('.FavoritesWrapper');
	
	groups
		.each(function()
				{
					var fg = jQuery(this);
					var fgContentUrl = fg.attr('src');
					var fgContentWrapper = fg.find('.Content');
					
					var groupItems = fgContentWrapper.find('.CompactViewWrapper');
					
					groupItems
						.each(function()
							{
								var gi = jQuery(this);
								var src = gi.attr('src');
								var cnt = gi.find('.ItemContent');
								cnt.append('<div class="loading"></div>');
								jQuery
									.ajax({
											type: "GET",
											url: src,
											success: function(html)
														{
															cnt.empty().html(html);
															replaceSubmitButtons(cnt, 'btnYellow');
															setGoalFormsEvents(cnt);
														},
											error: function(err)
													{
														
													}
										  })
							});
				})
}

function setGoalFormsEvents(favoritesGroup)
{
	favoritesGroup
		.find('form')
		.submit(function()
				{
					var frm = jQuery(this);
					var favGroup = frm.parents('.CompactViewWrapper');
					var favRel = favGroup.attr('rel');
					var relatedItems = jQuery('.CompactViewWrapper').filter('[rel=' + favRel + ']');
					var riContent = relatedItems.find('.ItemContent');
					riContent
						.css('height', riContent.height() + 'px')
						.empty()
						.html('<div class="loading">updating...</div>');
					jQuery
						.ajax({
							  	url: frm.attr('action'),
								type: frm.attr('method'),
								data: frm.serialize(),
								success: function(html)
											{
												riContent.html(html);
												replaceSubmitButtons(riContent, 'Arrow');
												setGoalFormsEvents(riContent);
												favGroup.find('.ItemContent').css('height', 'auto');
											},
								error: function(err)
										{
											
										}
							  })
					return false;
				})
}

function initExpandCollapseTriggers()
{
	var triggers = jQuery('a#ExpandCollapseItemTrigger, a#ExpandCollapseGoalTrigger, a#ExpandCollapseHistoryTrigger, a#ExpandCollapseChangeTrigger');
	
	triggers
		.each(function()
				{
					var t = jQuery(this);
					var tt = jQuery(t.attr('href'));
					var ttd = tt.css('display');					
					if (ttd == 'none')
					{
						t.removeClass('TriggerCollapse')
						 .addClass('TriggerExpand');
					}
					else
					{
						t.removeClass('TriggerExpand')
						 .addClass('TriggerCollapse');
					}
				})
		.click(function()
				{
					var t = jQuery(this);
					var tt = jQuery(t.attr('href'));
					var ttd = tt.css('display');
					if (ttd == 'none')
					{
						t.removeClass('TriggerExpand')
						 .addClass('TriggerCollapse');
						 tt.slideDown('fast');
						 //tt.css('display', 'block');
					}
					else
					{
						t.removeClass('TriggerCollapse')
						 .addClass('TriggerExpand');
						 tt.slideUp('fast');
						 //tt.css('display', 'none');
					}
					return false;
				})
}

function initRoundedBoxes()
{
	var rb = jQuery('div[class^=RoundedBox]');
	rb.each(function()
			{
				var b = jQuery(this);
				var bc = b.attr('class');
				b.append('<div class="' + bc + '_CornerTopLeft"></div><div class="' + bc + '_CornerTopRight"></div><div class="' + bc + '_CornerBtmLeft"></div><div class="' + bc + '_CornerBtmRight"></div>')
			})
}

function initCustomOverlays()
{
	initOverlay('a.trgTermsAndConditions', 'overlayTermsAndConditions');
}

function replaceMainContentSubmitButtons()
{
	replaceSubmitButtons(jQuery('.DashboardTopBoxes .Box1 form'), 'btnYellow');
	replaceSubmitButtons(jQuery('form[name=items]'), 'BtnSaveItems');
	replaceSubmitButtons(jQuery('form.ChooseAnotherDate'), 'BtnSet');
	replaceSubmitButtons(jQuery('form[name=searchForm]'), 'btnSearchSmall');
	replaceSubmitButtons(jQuery('form[name=HeaderLoginForm]'), 'BtnLogInB');
}

function postCommentToFacebook(status, comment) 
{
	alert('postCommentToFacebook(' + status + ', ' + comment + ')');
}

// items page events
	function initItempageEvens()
	{
		setViewMoreExLinkEvents();
		initItemGroupsActions();
		resizeItemBoxes();
	}
	
	function initItemGroupsActions()
	{
		var chkAllTriggers = jQuery('#ItemsPage input[name=CategoryID[]]');
		chkAllTriggers
			.each(function()
					{
						var chk = jQuery(this);
						updateItemGroupChks(chk);
					})
			.click(function()
					{
						var chk = jQuery(this);
						updateItemGroupChks(chk);
					});
	}
	
	function updateItemGroupChks(trigger)
	{
		var flag = trigger.attr('checked');
		var groupWrapper = trigger.parents('.BoxIt');
		var targets = groupWrapper.find('input[name=MasterItemID[]]');
		if (flag)
		{
			targets.attr('checked', flag);
			var viewMoreItemsTrigger = groupWrapper.find('li.LAST');
			if(viewMoreItemsTrigger.css('display') == 'block')
				viewMoreItemsTrigger.find('a.viewMoreExercises').click();
		}
	}
	
	function setViewMoreExLinkEvents()
	{
			var lnksViewMoreEx = jQuery('a.viewMoreExercises');
			lnksViewMoreEx
			.click(function()
			{
					var lnkViewMoreEx = jQuery(this);
					lnkViewMoreEx
							.parents('ul')
							.find('li')
							.css('display', 'block');
							lnkViewMoreEx.parent().css('display', 'none');
							resizeItemBoxes();
							return false
			})
	}
	
	function resizeItemBoxes()
	{
			var WorkoutBoxes = jQuery('div.BoxIt .BoxIt-BG');
			if(WorkoutBoxes.size() > 0)
			{
					var wbMaxH = 0;
					WorkoutBoxes
							.css('height', 'auto')
							.each(function()
							{
									var wbh = jQuery(this).height();
									if(wbh > wbMaxH)
									wbMaxH = wbh;
	
							});
							WorkoutBoxes.css('height', wbMaxH + 'px');
			}
	}

jQuery(function(){
	replaceMainContentSubmitButtons();
	initPopupFormOverlays();
	initGroupSorting();
	initCustomOverlays();
	initDatePickers();
	getGroupFavorites();
	initExpandCollapseTriggers();
	//initRoundedBoxes();
	
	initItempageEvens();
})