﻿/* French initialisation for the jQuery UI date picker plugin. */
/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani (sholby@sholby.net). */
var DEL_CONTACT = _getLocalizable("DEL_CONTACT");


jQuery(function ($) {
    $(".CurrentCulture").click(function () {
        if (($(".AllCulture")).is(":hidden", true)) {
            $(".AllCulture").slideDown();
            $(".DropCulture").attr("src", "/Content/Rambutan/img/dropdown-close.png");
        }
        else {
            $(".AllCulture").slideUp();
            $(".DropCulture").attr("src", "/Content/Rambutan/img/dropdown-open.png");
        }

    });

    
});

jQuery(function($)
{
	$.datepicker.regional['fr'] = {
		closeText: 'Fermer',
		prevText: '&#x3c;Préc',
		nextText: 'Suiv&#x3e;',
		currentText: 'Courant',
		monthNames: ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin',
		'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre'],
		monthNamesShort: ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Jun',
		'Jul', 'Aoû', 'Sep', 'Oct', 'Nov', 'Déc'],
		dayNames: ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'],
		dayNamesShort: ['Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'],
		dayNamesMin: ['Di', 'Lu', 'Ma', 'Me', 'Je', 'Ve', 'Sa'],
		weekHeader: 'Sm',
		dateFormat: 'dd/mm/yy',
		firstDay: 1,
		isRTL: false,
		showMonthAfterYear: false,
		yearSuffix: ''
};

$.datepicker.regional['de'] = {
    closeText: 'Done', 
    prevText: 'Prev', 
    nextText: 'Next', 
    currentText: 'Today', 
    monthNames: ['January', 'February', 'March', 'April', 'May', 'June',
			'July', 'August', 'September', 'October', 'November', 'December'],
    monthNamesShort: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], 
    dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], // For formatting
    dayNamesShort: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], // For formatting
    dayNamesMin: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'], // Column headings for days starting at Sunday
    weekHeader: 'Wk', // Column header for week of the year
    dateFormat: 'dd/mm/yy', // See format options on parseDate
    firstDay: 0, // The first day of the week, Sun = 0, Mon = 1, ...
    isRTL: false, // True if right-to-left language, false if left-to-right
    showMonthAfterYear: false, // True if the year select precedes month, false for month then year
    yearSuffix: '' // Additional text to append to the year in the month headers
};
	$.datepicker.setDefaults($.datepicker.regional[__CurrentCulture]);
});


(function ($) {

$(document).ready(function() {
    $(".FBConnectHeader").click(function () {
        
        
        FB.login(function (response) {
            if (response.authResponse) {
                onFacebookLoginHeader();
            } 
        }, {scope:'email, user_birthday, friends_birthday'});
    });
    
    
    
    
});

})(jQuery);



(function LinkBlockPlugin($)
{
	function Redirect(link)
	{
		window.location.href = link.attr('href');
		return false;
	};

	var defaults =
	{
		linkSelector: 'a',
		clickAction: Redirect
	};

	$.fn.LinkBlock = function LinkBlock(config)
	{
		var options = $.extend({}, defaults, config || {});

		return this.each(function()
		{
			$(this).click(function(e) // TODO: Later, manager the center button : http://www.quirksmode.org/js/events_properties.html
			{
				return options.clickAction($(this).find(options.linkSelector).first());
			});
		});
	};

})(jQuery);

(function FBCommentPlugin($)
{
	var defaults =
	{
		inputSelector: 'textarea, input[type=text]',
		submitSelector: 'button, input[type=submit], input[type=button]',
		containerOpenClass: '',
		containerClosedClass: ''
	};

	$.fn.FBComment = function FBComment(config)
	{
		var options = $.extend({}, defaults, config || {});

		return this.each(function()
		{
			var $block = $(this);

			function BlockClose()
			{
				$block.addClass(options.containerClosedClass)
					.removeClass(options.containerOpenClass);
			}

			BlockClose();

			$(this).find(options.inputSelector).focus(function()
			{
				$block.addClass(options.containerOpenClass)
					.removeClass(options.containerClosedClass);

			}).blur(function()
			{
				if (!$(this).val())
				{
					BlockClose();
				}
			});
		});
	};

})(jQuery);

(function LeetchiSelectPlugin($)
{

    
	var defaults =
	{
		empty: true
	};

	$.fn.LeetchiSelect = function LeetchiSelect(config)
	{
	    
		var options = $.extend({}, defaults, config || {});

		return this.each(function()
		{
			//TODO: Set max width for ie7 (check if required or not)

			var $select = $(this).hide();
			var $container = $('<div class="DropDownList"></div>');

			var $button = $('<button class="Button ButtonWithImage" type="button" style="width: ' + $select.css('width') + ';">'
			+ '<span class="Text">Occasion...</span>'
			+ '<span class="Image"><img src="/Content/Rambutan/img/dropdown-open.png" alt="" /></span>'
			+ '</button>');

			var $popup = $('<div class="DropDownPopup"><div class="DropDownPopupContent"><ul></ul></div></div>').hide();

			function Text(text)
			{
				return $button.find('span.Text').text(text);
			}

			function AddItem(text, value, selected)
			{
				var $li = $('<li id="Event_'+value+'"><a href="javascript:void();">' + text + '</a></li>');
				$li.appendTo($popup.find('ul'));

				if (selected)
				{
					$li.addClass('SelectedItem');
				}

				$li.bind('mouseover', function()
				{
					$li.children('a').focus();
				});

				$li.find('a').focus(function()
				{
					if (!closed)
					{
						Text(text);
					}
				})
				.click(function()
				{
					$li.siblings().removeClass('SelectedItem');
					$li.addClass('SelectedItem');
					$select.val(value);
					Toggle();
				});
			}
            
			function SetTextAsSelected()
			{
				Text($select.find('option:selected').text());
			}

			SetTextAsSelected();

			var closed = true;
		    
			function Toggle()
			{
			    
				var callback = null;
				var lastState = closed;

				closed = !closed; // on fast browsers, the link mouseover event can be fire and change the display text

				if (lastState)
				{
					$container.addClass('DropDownListOpen');
				}
				else
				{
					SetTextAsSelected();
					callback = function ToggleCallback()
					{
						$container.removeClass('DropDownListOpen');
					};
				}

				$popup[lastState ? 'show' : 'hide']('slide', { direction: 'up', easing: 'easeOutCubic' }, 500, callback);
			}

			$(document).click(function(e)
			{
			    $("#Event_Tickets").click(function() {
			        window.location = "/TicketSale/Create";
	            });
			    
				if (!$.contains($container[0], e.target))
				{
					if (!closed)
					{
						Toggle();
					}
				    
				}
			});

			//			$(document).keyup(function(e)
			//			{
			//				console.info($button.is(':selected'));
			//				console.info(e);
			//			});

			$select.find('option').each(function(index, item)
			{
				AddItem($(item).text(), $(item).val(), $(item).is(':selected'));
			});

			$button.click(Toggle);

			$container.append($button);
			$container.append($popup);

			$container.insertAfter($select);
		});
	};

})(jQuery);

(function LabelBlockPlugin($)
{
	var defaults =
	{
		inputSelector: 'input[type=checkbox], input[type=radio]',
		labelSelectedClass: ''
	};

	$.fn.LabelBlock = function FBComment(config)
	{
		var options = $.extend({}, defaults, config || {});

		return this.each(function()
		{
			var $label = $(this);
			var $input = $label.find(options.inputSelector).first();

			function UpdateGUI()
			{
				$label[$input.is(':checked') ? "addClass" : "removeClass"](options.labelSelectedClass, 200);
			};

			UpdateGUI();

			$input.data('LabelBlockPlugin', { updateGUI: UpdateGUI });
			$input.click(UpdateGUI);
		});
	};

})(jQuery);

(function LeetchiTabPlugin($)
{
	var defaults =
	{
		itemSelectedClass: 'ItemSelected',
		linksSelector: 'ul:first a',
		linkSelectedSelector: 'ul:first *.ItemSelected a',
		linkContainerSelector: '*.Item',
		tabSelector: 'div.Tab',
		activeTabClass: 'ActiveTab'
	};

	$.fn.LeetchiTab = function LeetchiTab(config)
	{
		var options = $.extend({}, defaults, config || {});
		var $container = $(this);

		function ShowTab(link)
		{
			$container.find(options.tabSelector)
				.hide().removeClass(options.activeTabClass);

			$container.find(options.linksSelector).parents(options.linkContainerSelector).removeClass(options.itemSelectedClass);
			link.parents(options.linkContainerSelector).addClass(options.itemSelectedClass);

			$container.find(link.attr('href'))
				.show().addClass(options.activeTabClass);
		}

		var selected = $container.find(options.linkSelectedSelector).first();
		ShowTab(selected.size() > 0 ? selected : $container.find(options.linksSelector).first());
		delete selected;

		return this.each(function()
		{
			$container.find(options.linksSelector).click(function()
			{
				ShowTab($(this));
				return false;
			});
		});
	};

})(jQuery);

(function LeetchiSearchPlugin($)
{
	var defaults =
	{
		itemContainerSelector: 'div',
		searchItemSelector: 'span.Text',
		searchItemTextSelector: null,
		searchTextBoxSelector: 'input[type=text]',
		highLightClass: 'HighLight',
		filterNoMatchClass: 'FilterNoMatch',
		filterMatchClass: 'FilterMatch'
	};

	$.fn.LeetchiSearch = function LeetchiSearch(config)
	{
		var options = $.extend({}, defaults, config || {});

		function TextForSearch(text)
		{
			var accents = "àáâãäåàáâãäåòóôõõöøòóôõöøèéêëèéêëðççðìíîïìíîïùúûüùúûüññššÿÿýžž";
			var without = "aaaaaaaaaaaaoooooooooooooeeeeeeeeoccoiiiiiiiiuuuuuuuunnssyyyzz";

			return text.toLowerCase().replace(new RegExp('[' + accents + ']', 'g'), function(c) { return without.charAt(accents.indexOf(c)); });
		}

		function GetContainer($item)
		{
			return $item.parents(options.itemContainerSelector).first();
		}

		function ResetTexts($item, texts)
		{
			if (options.searchItemTextSelector)
			{
				$item.find(options.searchItemTextSelector).each(function(index, itemText)
				{
					$(itemText).text(texts[index]);
				});
			}
			else
			{
				$item.text(texts[0]);
			}
		}

		function Filter($container, search)
		{
			$container.find(options.searchItemSelector).each(function(index, item)
			{
				var $item = $(item);
				var texts = $item.data('Leetchi_SearchText');

				if (search == '')
				{
					ResetTexts($item, texts);

					GetContainer($item)
						.removeClass(options.filterNoMatchClass)
						.removeClass(options.filterMatchClass);
				}
				else
				{
					var matches = 0;

					for (var i = 0; i < texts.length; i++)
					{
						var text = texts[i];

						var searchOn = TextForSearch(text);
						var searchFor = TextForSearch(search);
						var items = options.searchItemTextSelector ? $item.find(options.searchItemTextSelector) : [$item];

						if (searchOn.indexOf(searchFor) != -1)
						{
							var s = '';
							var previousPos = 0;
							var pos = 0;
							var length = search.length;

							while ((pos = searchOn.indexOf(searchFor, pos)) != -1)
							{
								s += text.substring(previousPos, pos);
								s += '<span class="' + options.highLightClass + '">' + text.substr(pos, length) + '</span>';

								previousPos = pos + length;
								pos++;
							}

							s += text.substring(previousPos);

							$(items[i]).html(s);
							GetContainer($item)
							.addClass(options.filterMatchClass)
							.removeClass(options.filterNoMatchClass);

							matches++;
						}
					}

					if (matches == 0)
					{
						ResetTexts($item, texts);

						GetContainer($item)
							.addClass(options.filterNoMatchClass)
							.removeClass(options.filterMatchClass);
					}
				}
			});
		}

		return this.each(function()
		{
			var $container = $(this);
			var $textbox = $container.find(options.searchTextBoxSelector);
			var executeSearch = function() { Filter($container, $textbox.val()); };
			var readSearchTexts = function()
			{
				$container.find(options.searchItemSelector).each(function(index, item)
				{
					var texts = [];
					if (options.searchItemTextSelector)
					{
						$(item).find(options.searchItemTextSelector).each(function(indexText, itemText)
						{
							texts[indexText] = $(itemText).text().trim();
						});
					}
					else
					{
						texts[0] = $(item).text().trim();
					}

					$(item).data('Leetchi_SearchText', texts);
				});

			}

			readSearchTexts();

			var controller =
			{
				$textbox: $textbox,
				executeSearch: executeSearch,
				readSearchTexts: readSearchTexts,
				onSearchExecuted: $.noop
			};

			$(this).data('Leetchi_Search', controller);

			$textbox.keyup(function()
			{
				executeSearch();
				controller.onSearchExecuted();
				return false;
			});
		});
	};

})(jQuery);

// <script type="text/javascript">
//    $(document).ready(function() {
//        $('#LoginPopup').click(function(e) {
//            return false; // We don't want the event to bubble up to body
//        });
//        $(document.body).click(function() {
//            if ($('#LoginPopup').is(':visible'))
//                $('#LoginPopup').hide();
//        });
//    });
//</script>

(function DeletablePlugin($)
{
	var defaults =
	{
		allowShow: function($container) { return true; },
		onDelete: function(deletable) { deletable.Delete(); },
		show: function($container) { $container.show('slide', { direction: 'up', easing: 'easeInOutBack' }, 1550); },
		hide: function($container) { $container.hide('slide', { direction: 'up', easing: 'easeInOutBack' }, 1000); },
		deleteSelector: 'a',
		closeWhenClickOutside: false
	};

	$.Deletable = function(container, options)
	{
		var _$container = $(container);
		var _deletable = this;

		//NotifierError
		//NotifierInfo

		var controller =
		{
			showConfirm: function(message)
			{
				_$container.find('div.NotifierError, div.NotifierInfo').remove();
				_$container.find('div.GlobalMessagesContent').append(
					'<div class="NotifierInfo">'
					+ '<p class="notify-errorBlocItem">' + message + '</p>'
					+ '</div>'
				);
				
				options.show(_$container);
			}
		};

		$(container).data('Leetchi_Deletable', controller);

		function OnDelete() { options.onDelete(_deletable); }
		this.Delete = function Delete() { options.hide(_$container); };

		_$container.find(options.deleteSelector).click(function()
		{
			OnDelete();
			return false;
		});

		if (options.allowShow(_$container))
		{
			options.show(_$container);
		}

		if (options.closeWhenClickOutside)
		{
			$(_$container).click(function() { return false; });
			$(document.body).click(function() { options.hide(_$container); });
		}
	};

	$.fn.Deletable = function BindDeletable(options)
	{
		return this.each(function() { new $.Deletable(this, $.extend({}, defaults, options || {})); });
	};

})(jQuery);

(function ExpandablePlugin($)
{
	var defaults =
	{
		showMoreSelector: 'div.ShowMore a',
		itemSelector: '*.ShowMoreItem'
	};

	$.fn.Expandable = function Expandable(config)
	{
		var options = $.extend({}, defaults, config || {});

		//		var formatters = [];

		//		formatters['/ShowNewEventsJson'] =
		//		{
		//			getItems: function(json) { return json.FeedItems; },
		//			header: function() { return '<div class="LastEvents">'; },
		//			item: function(jsonItem) { return '<li></li>'; },
		//			footer: function() { return '</div>'; }
		//		};

		//		function GetFormatter(url)
		//		{
		//			for (var key in formatters)
		//			{
		//				if (url.indexOf(key) != -1)
		//				{
		//					return formatters[key];
		//				}
		//			}

		//			throw 'Formatter not found for url ' + url;
		//		}

		return $(this).each(function()
		{
			var $container = $(this);
			var open = false;
			var $ajaxDialog = null;
			var ajaxLoaded = false;

			//var $loadingContent = null;

			function $GetAjaxDialog($link)
			{
				if ($ajaxDialog == null)
				{
					var $showMoreDialog = $link.parents('div.ShowMore:first').find('div.ShowMoreDialog:first');
					//$loadingContent = $showMoreDialog.html();

					$ajaxDialog = $showMoreDialog.dialog(
					{
						modal: true,
						width: 'auto',
						resizable: false,
						autoOpen: false,
						title: $link.parents('div.Expandable:first').find('h2, h3, h4').first().text()
					});
				}

				return $ajaxDialog;
			}

			var showMore = $container.find(options.showMoreSelector);

			showMore.filter(':not([href^=#])').each(function()
			{
				$(this).click(function()
				{
					var $dialog = $GetAjaxDialog($(this));
					$dialog.dialog('open');

					if (!ajaxLoaded)
					{
						var $body = $dialog.find('div.DialogBody');
						var url = $(this).attr('href');

						$.post(url, null, function(html)
						{
							$body.html(html);
							ajaxLoaded = true;
						});

						//						$.post(url, null, function(json)
						//						{
						//							var formatter = GetFormatter(url);
						//							var items = formatter.getItems(json);
						//							var buffer = [];

						//							buffer.push(formatter.header());
						//							$(items).each(function(index, jsonItem)
						//							{
						//								buffer.push(formatter.item(jsonItem));
						//							});
						//							buffer.push(formatter.footer());

						//							$body.html(buffer.join(''));
						//							ajaxLoaded = true;
						//						});
					}

					return false;

				});
			});

			showMore.filter('[href^=#]').each(function(index, triggerItem)
			{
				$(triggerItem).data('Expandable_Text', $(triggerItem).text());
				$(triggerItem).click(function()
				{
					if (open)
					{
						$(triggerItem).text($(triggerItem).data('Expandable_Text'));
						
						$container.find(options.itemSelector).each(function(index, item)
						{
							$(item).hide('fade', {}, 420);
						});
					}
					else
					{
						$(triggerItem).text('Voir moins');

						var i = 0;

						$container.find(options.itemSelector).each(function(index, item)
						{
							i++;
							setTimeout(function()
							{
								$(item).show('fade', {}, 320);

							}, i * 100);
						});
					}

					open = !open;
					
					return false;
				});
			});



		});
	};

})(jQuery);


(function LeetchiButtonWithPopup($)
{
	var defaults =
	{
		buttonSelector: 'a',
		popupSelector: 'div',
		closeWhenClickOutside: false
	};

	$.fn.ButtonWithPopup = function ButtonWithPopup(config)
	{
		var options = $.extend({}, defaults, config || {});

		return this.each(function()
		{
			var visible = false;
			var $this = $(this);

			function Toggle()
			{
				visible = !visible;
				$this.find(options.popupSelector).toggle('slide', { direction: 'up', easing: 'easeInOutCirc' }, 750);
			}

			$this.data('LeetchiButtonWithPopup', { toggle: Toggle });

			$this.find(options.buttonSelector).click(function()
			{
				Toggle();
				return false;
			});

			if (options.closeWhenClickOutside && false)
			{
				$($this).click(function() { return false; });

				$(document.body).click(function()
				{
					if (visible)
					{
						Toggle();
					}
				});
			}
		});
	};

})(jQuery);

(function LeetchiSelect($)
{
	$.fn.addOption = function AddOption(value, text, selected)
	{
		return this.each(function()
		{
			value = value ? value : text;
			return $(this).removeOption(value).append('<option' + (selected ? ' selected="selected"' : '') + ' value="' + value + '">' + text + '</option>');
		});
	};

	$.fn.removeOption = function RemoveOption(value)
	{
		return this.each(function()
		{
			return $(this).find('option[value=' + value + ']').remove();
		});
	};

})(jQuery);

(function LeetchiRadioGroup($)
{
	var defaults =
	{
		parentSelector: null,
		selectedClass: 'Selected'
	};

	$.fn.radioGroup = function RadioGroup(config)
	{
		var options = $.extend({}, defaults, config || {});
		var $radios = this;

		function Refresh()
		{
			$radios.each(function()
			{
				//$(this).parents(options.parentSelector).first().toggleClass(options.selectedClass, $(this).is(':checked')); // Can't do it because of ie
				$(this).parents(options.parentSelector).first().removeClass(options.selectedClass);
			});

			$(this).parents(options.parentSelector).first().addClass(options.selectedClass);
		}

		this.bind('click', Refresh);
		$radios.first().click();

		this.data('LeetchiRadioGroup', { refresh: Refresh });

		return this;
	};

})(jQuery);

(function($)
{
	$(document).ready(function()
	{
		$('span.FieldWithImage span.Image').css('cursor', 'pointer').click(function()
		{
			$('input', $(this).parents('span.FieldWithImage:first')).focus();
		});


		$("label img").live("click", function()
		{
			$("#" + $(this).parents("label").attr("for")).click();
		});


		$('div.GlobalMessages').each(function()
		{
			if ($('div.NotifierError', this).size())
			{
				$(this).addClass('GlobalMessagesError');
			}
		});

//		$('input.NumericInput').blur(function()
//		{
//			$(this).val($(this).val().replace(/[^.,0-9]/g, '').replace(',', '.'));
//		});

		$('*.ValidateOnFirstInput').each(function()
		{
			$(this).toArray()[0][Sys.Mvc.FieldContext._hasValidationFiredTag] = true;
		});
	});

})(jQuery);

// Map html tags to plugins
(function($) {
    $(document).ready(function() {
        $('div.FundraisingSynthesis').LinkBlock({ linkSelector: 'h2 a' });
        $('div.PreviousFundraising').LinkBlock();
        $('div.BirthdaysToComes div.Current').LinkBlock();

        $('input, textarea').placeholder();

        $('div.CommentForm textarea').autogrow();
        $('div.CommentForm').FBComment({ containerOpenClass: 'CommentFormOpened', containerClosedClass: 'CommentFormClosed' });

        $('label.Contributor').LabelBlock({ labelSelectedClass: 'ContributorSelected' });
        $('select.LeetchiSelect').LeetchiSelect();

        $('div.Tabs').LeetchiTab();
        $('div.GlobalMessages').Deletable({ deleteSelector: 'a.Close', allowShow: function($container) { return $container.find('p').text().trim(); } });

        // For tests, remove it later
        $('div.FriendSearch').LeetchiSearch(
		{
		    searchTextBoxSelector: 'div.Options input[type=text]',
		    searchItemSelector: 'div.Friends span.Friend',
		    searchItemTextSelector: 'strong.Name',
		    itemContainerSelector: 'span.Friend'
		});

        $('div.resultGmail').LeetchiSearch(
		{
            searchTextBoxSelector: 'div.InvitesSearchFilters input[type=text]',
		    searchItemSelector: 'div#MailImport-InvitesContainer div.ContributorMail',
		    searchItemTextSelector: 'span.ContributorMail b',
		    itemContainerSelector: 'div.ContributorMail'
		});
        
        $('div.InvitesSearch').LeetchiSearch(
		{
		    searchTextBoxSelector: 'div.InvitesSearchFilters input[type=text]',
		    searchItemSelector: 'div.InvitesContainer a.Contributor',
		    searchItemTextSelector: 'span.Content strong, span.Content span.MoreInfo',
		    itemContainerSelector: 'div.LayoutPart'
		});

        $('div.Expandable').Expandable();
        $('div.LoginBlock').ButtonWithPopup(
		{
		    buttonSelector: 'div.Account a.Connect, div.Account a.FB, div.LoginPopup a.Close',
		    popupSelector: 'div.LoginPopup',
		    closeWhenClickOutside: true
		});

        $.datepicker.setDefaults($.datepicker.regional[__CurrentCulture]);
        $('input[type=text].Calendar').datepicker();
        $('input[type=text].BirthdayCalendar').datepicker('option', {
            changeMonth: true,
            changeYear: true,
            yearRange: '1900:2000'
        });
        nextYear = new Date();
        today = new Date();
        nextYear.setFullYear(nextYear.getFullYear() + 1);
        tomorrow = new Date();
        tomorrow.setDate(tomorrow.getDate() + 1);
        $('input[type=text].FundraisingCalendar').datepicker('option', {
            minDate: today,
            maxDate: nextYear
        });


        $('div.PaymentMediumMethods input[type=radio]').radioGroup({ parentSelector: 'span.PaymentMediumMethod', selectedClass: 'PaymentMediumMethodSelected' });

        $('label.Help').tipTip({ defaultPosition: 'bottom' });
        $('div.BirthdaysToComes div.Nexts span.Thumb img').tipTip({ defaultPosition: 'bottom' });
    });

})(jQuery);


// ListContributors page code
(function($)
{
	$(document).ready(function()
	{
		$('#ListContributors').each(function()
		{
			$('div.Contributors a', this).click(function()
			{
				$('input[type=checkbox]:not(:checked)', $($(this).attr('href'))).each(function(index)
				{
					(function($element, i)
					{
						window.setTimeout(function()
						{
							$element.click();
							$element.data('LabelBlockPlugin').updateGUI();

						}, 10 + i * 75);

					})($(this), index);

				});

				return false;
			});
		});
	});

})(jQuery);


// Select page code
(function($)
{
	$(document).ready(function()
	{
	    
		$('#SelectPage').each(function()
		{
			var $containers = $('#SelectPage div.InvitesContainer'); //,div.SelectFacebook
		    var $containersFacebook = $('#SelectPage div.SelectFacebook'); //,
			var $selectedItems = $('#SelectPage div.SelectedInvites div.SelectedInvitesItems');
			var $counter = $('#SelectPage div.SelectedInvites span.InviteCount');
			var $selects = $('#selectedFriends');
			var defaultPicture = '/Content/Rambutan/img/no-picture.png';
			var usersCache = {};

			$('#SelectPage div.InvitesSearch').each(function()
			{
			    var $invitesSearch = $(this);
				var searcher = $invitesSearch.data('Leetchi_Search');

				searcher.$textbox.val('');

				if ($invitesSearch.parents('div.ActiveTab').size() == 1)
				{
					searcher.$textbox.focus();
				}

				searcher.onSearchExecuted = function() { FocusFirstContributor($invitesSearch); };

				searcher.$textbox.keydown(function(e)
				{
					if ((e.keycode || e.which) == 13)
					{
						var $contributor = $invitesSearch.find('a.ContributorSelected').first();

						if ($contributor.size() == 0)
						{
							$contributor = $invitesSearch.find((searcher.$textbox.val() ? '.FilterMatch ' : '') + 'a.Contributor').first();
						}

						$contributor.click();

						if ($invitesSearch.find('.FilterMatch').size() == 1)
						{
							searcher.$textbox.val('');
							searcher.executeSearch();
						}
					}
				});
			});

			function $CreateContributorHtml(invite, guest)
			{
				var html = [];

				html.push('<a href="#Invite/');
				html.push(invite.id);
				html.push('" class="Contributor');

				if (guest)
				{
					html.push(' ContributorGuest');
				}

				html.push('">');

				if (guest)
				{
					html.push('<span class="GuestAction">'+ DEL_CONTACT + '</span>');
				}
				else
				{
					html.push('<span class="Action">Inviter</span>');
				}

				html.push('<span class="Thumb"><img src="');
				html.push(invite.picture);
				html.push('" alt="" /></span> <span class="Content"><strong>');
				html.push(invite.name);
				html.push('</strong>');

				if (invite.email)
				{
					html.push('<span class="MoreInfo">');
					html.push(invite.email);
					html.push('</span>');
				}

				html.push('</span></a>');

				return $(html.join(''));
			}

			function RefreshCounter()
			{
				var count = $selectedItems.find('a.Contributor:not(.ItemRemoving)').size();
				$counter.text(count);

				var $invites = $counter.parents('div.SelectedInvites');
				$invites.find('.EmptyTemplate').toggle(count == 0);
				$invites.find('.NotEmptyTemplate').toggle(count != 0);

				UpdateEmptyTemplate($containers);
			}

			function AddSelected(invite)
			{
			    var value = null;
                if(isNaN(invite.id) && invite.email != "") {
                    value = '[{name: \'' + invite.name.replace( /\'/ , '\\\'') + '\', email: \'' + invite.email + '\'}]';
                } else value = invite.id.toString();
				$selects.addOption(value, value, true);

				var html = $CreateContributorHtml(invite, true);
				html.hide();

				$selectedItems.append(html);
				
			    //$selectedItems.find('a.Contributor').tsort('a.Contributor strong');

				html.show('fade', 200);
				FocusSearchTextBox();
				RefreshCounter();
			}

			function AddInvite(invite)
			{
			    $selects.removeOption(invite.id);
			    $selects.find("option:contains('" + invite.id + "')").remove(); // Remove json fount by email, will fail if the name of somebody else match the email, but it should not happens

			    var html = $('<div class="LayoutPart"><div class="LayoutContent"></div></div>');
			    $('div.LayoutContent', html).append($CreateContributorHtml(invite, false));


			    html.hide();
			    var $container = null;
			    
		        if(invite.email == "") $container = $('#SelectFacebook');
			    else $container = $(isNaN(invite.id) ? '#MailImport-InvitesContainer' : '#Leetchi-InvitesContainer'); 
				
			    
			    $container.append(html);

				var searcher = $container.parents('div.InvitesSearch:first').data('Leetchi_Search');

				searcher.readSearchTexts();
				searcher.$textbox.val('');
				searcher.executeSearch();

				html.hide();
				//$container.find('div.LayoutPart').tsort('a.Contributor strong');

				html.show('fade', 200); // TODO: Not working anymore :/
				FocusSearchTextBox();
				RefreshCounter();

				UpdateEmptyTemplate($container);

			}

			function UpdateEmptyTemplate($invitesContainer) // One or many
			{
				$invitesContainer.parents('div.Tab').each(function()
				{
					var $tab = $(this);
					var count = $tab.find('div.LayoutPart:not(.ItemRemoving)').size();

					$tab.find('.EmptyTemplate').toggle(count == 0);
					$tab.find('.NotEmptyTemplate').toggle(count != 0);
				});
			}

			function GetInviteFromDom(element)
			{
				var $element = $(element);
				var id = $element.attr('href').split('/')[1];

				return {
					id: isNaN(id) ? id : parseInt(id),
					name: $('strong', $element).text().trim(),
					email: $('span.MoreInfo', $element).text().trim(),
					picture: $('img', $element).attr('src')
				};
			}

			function RemoveItem($element, callback)
			{
				$element.addClass('ItemRemoving');
				$element.data('LeetchSelectPage_Removing', true);
				$element.hide('fade', 200, function()
				{
					$element.remove();

					if (callback)
					{
						callback();
					}
				});
			}

			function FocusSearchTextBox()
			{
				$('#tabs-Invite div.ActiveTab div.InvitesSearch div.InvitesSearchFilters input[type=text]').focus();
			}

			function AddToCache(invite)
			{
				if (!usersCache[invite.id])
				{
					usersCache[invite.id] = true;
					return true;
				}

				return false;
			}

		    
		    
		    
		    // TODO BLEECE => ICI POUR SUPPRIMER DE LA LISTE
			$selectedItems.find('a.ContributorGuest')
			.each(function() { AddToCache(GetInviteFromDom(this)); })
			.live('click', function()
			{
				if (!$(this).data('LeetchSelectPage_Removing'))
				{
					var invite = GetInviteFromDom($(this));
					RemoveItem($(this));
					AddInvite(invite);
				}

				return false;
			});
		    
		    
		    
		    
		    

			function FocusFirstContributor($invitesSearch)
			{
				var $contributor = $invitesSearch.find('.FilterMatch a.Contributor');
				var found = false;

				$contributor.each(function()
				{
					var $daddy = $(this).closest('div.LayoutPart');

					if (!$daddy.data('LeetchSelectPage_Removing'))
					{
						found = true;
						return false;
					}
				});

				if (!found)
				{
					$contributor = $invitesSearch.find('a.Contributor:first');
				}

				FocusContributor($contributor.first());
			}

			function FocusContributor($contributor)
			{
				$contributor.parents('div.InvitesContainer').find('a.Contributor').removeClass('ContributorSelected');
				$contributor.addClass('ContributorSelected');
			}

			$containers.find('a.Contributor')
			.each(function() { AddToCache(GetInviteFromDom(this)); })
			.live('mouseover', function() { FocusContributor($(this)); })
			.live('click', function()
			{
				var $daddy = $(this).closest('div.LayoutPart');
				if (!$daddy.data('LeetchSelectPage_Removing'))
				{
					var $invitesSearch = $(this).parents('div.InvitesSearch:first');
					var invite = GetInviteFromDom($(this));

					RemoveItem($daddy, function() { FocusFirstContributor($invitesSearch); });
					AddSelected(invite);
				}

				return false;
			});

		    
		    $containersFacebook.find('a.Contributor')
			.each(function() { AddToCache(GetInviteFromDom(this)); })
			.live('click', function()
			{
				var $daddy = $(this).closest('div.LayoutPart');
				if (!$daddy.data('LeetchSelectPage_Removing'))
				{
					var $invitesSearch = $(this).parents('div.InvitesSearch:first');
					var invite = GetInviteFromDom($(this));

					RemoveItem($daddy, function() { FocusFirstContributor($invitesSearch); });
					AddSelected(invite);
				}

				return false;
			});
		    
			UpdateEmptyTemplate($containers);

			$('#SelectPage div.ImportContacts div.ImportContactsFrom ul li a').each(function()
			{
				var $importForm = $($(this).attr('href')).dialog(
			{
				modal: true,
				width: 500,
				resizable: false,
				autoOpen: false,
				title: $(this).attr('title')
			});

				$(this).click(function()
				{
					$importForm.dialog('open');
					return false;
				});
			});

			$('#ImportContactsFromEmailSubmit').click(function()
			{
				var $input = $('#ImportContactsFromEmailInput');
				var tokens = $input.val().split(/[,|;|\n]+/img);

				var mailExp = "([a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*)@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?";
				var regex = "\\s*(?:\"?([\\w|\\s]*\\w+)\"?\\s+)?<?(" + mailExp + ")>?";

				var guys = [];
				var nomatch = [];

				for (var i = 0, j = tokens.length; i < j; i++)
				{
					var token = tokens[i];
					var result = new RegExp(regex, 'ig').exec(token);

					if (result)
					{
						guys.push(
					{
						name: result[1] ? result[1] : result[3],
						email: result[2]
					});
					}
					else
					{
						nomatch.push(token.trim());
					}
				}

				$input.val(nomatch.join('; '));

				var added = 0;

				for (var i = 0; i < guys.length; i++)
				{
					var guy = guys[i];

					var invite =
				{
					id: guy.email,
					name: guy.name,
					email: guy.email,
					picture: defaultPicture
				};

					if (AddToCache(invite))
					{
						AddSelected(invite);
						//window.setTimeout(function() { AddSelected(invite); }, 10 + 150 * i);
						added++;
					}
				}

				var $resultContainer = $input.parents('div.DialogBody').find('div.ImportResult p');
				$resultContainer.toggleClass('ResultNoMatch', added);
				$resultContainer.text(added.toString() + ' ' + (added > 1 ? _getLocalizable("ADD_CONTACTS") : _getLocalizable("ADD_CONTACT")));

				return false;
			});

			$('#ContactImportSubmit').parents('form:first').submit(function()
			{
				var data =
				{
					service: 'GMail',
					login: $('#ContactImportLogin').val(),
					password: $('#ContactImportPassword').val()
				};

				var $form = $(this);

				function ShowMessage(message, isError, isLoading)
				{
					var $p = $('div.ImportResult p', $form);

					$p.toggleClass('Error', isError);
					$p.toggleClass('Loading', isLoading);

					$p.text(message);
				}

				function MakeEditable(editable)
				{
					var $inputs = $('input, button, textarea', $form);

					if (editable)
					{
						$inputs.removeAttr('disabled');
					}
					else
					{
						$inputs.attr('disabled', 'disabled');
					}
				}

				ShowMessage("Import des contacts en cours...", false, true);
				MakeEditable(false);

				$.post($form.attr('action'), data, function(result)
				{
					MakeEditable(true);

					if (result.error)
					{
						ShowMessage(result.error, true, false);
						$('input[type=password]', $form).blur().select();
					}
					else
					{
						var added = 0;
						for (var i = 0; i < result.contacts.length; i++)
						{
							var contact = result.contacts[i];
							var invite =
						{
							id: contact.email,
							name: contact.name,
							email: contact.email,
							picture: defaultPicture
						};

							if (AddToCache(invite))
							{
								AddInvite(invite);
								//window.setTimeout(function() { AddInvite(invite); }, 10 + 150 * i);
								added++;
							}
						}

						ShowMessage(added.toString() + ' ' + (added > 1 ? 'nouveaux contacts trouvés' : 'nouveau contact trouvé'), false, false);
						$form.parents('div.ImportDialog:first').dialog('close');
					}
				});

				return false;
			});

		});
	    
	    
	    
	    

	});
    
    
    
  
})(jQuery);









// Fundraising Edit page code
(function($)
{
	$(document).ready(function()
	{
		$('#FundraisingEdit').each(function()
		{
			var $beneficiary = $('#FormDto\\.Beneficiary');
			var replaceBeneficiary = true;

			function UpdateReplaceBeneficiaryFlag()
			{
				replaceBeneficiary = $beneficiary.hasClass('placeholder') || $beneficiary.val() == '';
			}

			UpdateReplaceBeneficiaryFlag();

			$beneficiary.keypress(function(e)
			{
				window.setTimeout(function() { UpdateReplaceBeneficiaryFlag(); }, 0); // Will be call after the current stack
			});

			$('#FormDto\\.Name').keypress(function(e)
			{
				window.setTimeout(function()
				{
					if (replaceBeneficiary && !$('#FormDto\\.Name').hasClass('placeholder'))
					{
						var value = $('#FormDto\\.Name').val();
						var pos = value.indexOf('de ');

						if (pos != -1)
						{
							$beneficiary.val(value.substring(pos + 3));
							$beneficiary.removeClass('placeholder');
						}
					}

				}, 0); // Will be call after the current stack
			});
		});
	});

})(jQuery);


// Choose medium page
(function($)
{
	$(document).ready(function()
	{
		$('#ChooseMedium').each(function()
		{
			var $chooseMedium = $(this);
			
			function updateParticipateButton()
			{
				var manualAmount = $('span.PaymentAmount input[type=text]', $chooseMedium).val();
				var $voucherSelector = $("INPUT[name='FormDto.voucher_id']:checked")

				var voucherAmount = ($voucherSelector.length > 0) ? $voucherSelector.data("amount") : 0;
				var amount = parseFloat(manualAmount) + parseFloat(voucherAmount);
				$('div.Commands button[type=submit]', $chooseMedium).html('Participer'
					+ (amount ? ' de ' + amount.toString() + '&nbsp;&euro;' : ''));
			}		

			$('span.PaymentAmount input[type=text]', $chooseMedium)
				.keypress(function() { window.setTimeout(updateParticipateButton, 0); });
			$("INPUT[name='FormDto.voucher_id']", $chooseMedium).change(function()
            {
                var state = this.checked;
                
                // exclusive selection for checkboxes
                $("INPUT[name='FormDto.voucher_id']").attr('checked', false);
                $(this).attr('checked', state);

                window.setTimeout(updateParticipateButton, 100);
            });
		});
	});

})(jQuery);


//(function($)
//{
//	$(document).ready(function()
//	{
//		$('#LoginPopup form:first').submit(function()
//		{
//			var data = $(this).serialize();

//			var $inputs = $(this).find(':input, span.Input');
//			var $errors = $(this).find('p.ValidationSummary');
//			var $submit = $(this).find('span.Submit');

//			$submit.addClass('SubmitLoading');
//			$inputs.attr('disabled', 'disabled');

//			$.post($(this).attr('data-ajax-url'), data, function(result)
//			{
//				if (result.success)
//				{
//					window.location.href = (result.redirect == '' || result.redirect == '/') ? window.location.href : result.redirect;
//				}
//				else
//				{
//					$errors.show();
//					$errors.html(result.errors.join(' - '));
//				}

//				window.setTimeout(function()
//				{
//					$inputs.removeAttr('disabled');
//					$submit.removeClass('SubmitLoading');
//				}, 444);
//			});

//			return false;
//		});
//	});

//})(jQuery);

(function($)
{
	if (Sys && Sys.Mvc)
	{
		if (Sys.Mvc.FieldContext)
		{
			function $Rambutan_GetValidationMark($field)
			{
				var $mark = $field.find('span.FieldValidation');

				if (!$mark.size())
				{
					$mark = $('<span class="FieldValidation"></span>');
					$mark.appendTo($field);
				}

				return $mark;
			}

			var parentSelector = 'span.Field:first, span.Input:first, div.CheckboxField:first, span.TextBoxWithButton:first';

			var oldDisplayError = Sys.Mvc.FieldContext.prototype._displayError;
			var oldDisplaySuccess = Sys.Mvc.FieldContext.prototype._displaySuccess;

			Sys.Mvc.FieldContext.prototype._displayError = function Rambutan_FieldContext__displayError()
			{
				var $field = $(this.elements).parents(parentSelector).first();

				if ($field.size())
				{
					$field.addClass('FieldError');

					var $mark = $Rambutan_GetValidationMark($field);
					$mark.attr('title', this._errors[0]);
					$mark.tipTip({ defaultPosition: 'right' });
				}
				else
				{
					oldDisplayError.call(this, arguments);
				}
			};

			Sys.Mvc.FieldContext.prototype._displaySuccess = function Rambutan_FieldContext__displaySuccess()
			{
				var callOld = true;

				if (this.validations.length > 0)
				{
					var $field = $(this.elements).parents(parentSelector).first();

					if ($field.size())
					{
						$field.removeClass('FieldError');

						var $mark = $Rambutan_GetValidationMark($field);
						$mark.attr('title', '');
						$mark.tipTip({ defaultPosition: 'right' });
						callOld = false;
					}
				}

				if (callOld)
				{
					oldDisplaySuccess.call(this, arguments);
				}
			};
		}

		if (Sys.Mvc.ValidatorRegistry)
		{
			Sys.Mvc.ValidatorRegistry.validators["mustBeChecked"] = function(rule)
			{
				return function(value, context)
				{
					if (context.fieldContext.elements[0].checked)
					{
						return true;
					}

					return false;
				};
			};

			Sys.Mvc.ValidatorRegistry.validators["mustMatch"] = function(rule)
			{
				return function(value, context)
				{
					var $element = $(context.fieldContext.elements[0]);

					var $other = $element.parents('form:first').find('#' + $element.attr('id')
						.replace(rule.ValidationParameters.currentPropertyName, rule.ValidationParameters.mustMatchPropertyName).replace('.', '\\.'));

					return $element.val() == $other.val();
				};
			};
		}
	}
})(jQuery);


function ShowLoginPanel()
{
	$('html,body').animate({ "scrollTop": 0 }, 600, function()
	{
		if ($('#LoginPopup').is(':hidden'))
		{
			$('a.Connect').click();
		}
	});
}
