

















(function($) {
$.ti.login = {

	loginHTML:	$([ '<div id="swapableContent">',
						'<h2><img src="/shared/resource/images/itinerary_planner/fr/text/log-in-trip-planner.png" width="301" height="28" alt="Sauvegardez votre Trip Planner. Si vous l&#39;avez déjà enregistré, vous pouvez vous connecter directement."/></h2>',
						'<p>Si vous êtes déjà inscrit au Trip Planner, vous pouvez vous connecter directement.</p>',
						'<form method="" action="" id="loginForm">',
							'<fieldset class="login">',
                    '<h3 id="loginHeading" style="display: none"></h3>',
								'<input type="text" id="loginUsername" value="Utilisateur (votre adresse email)"/>',
								'<div class="passwordOverlay">',
									'<label class="password" for="loginPassword">Entrer votre mot de passe</label>',
									'<input type="password" id="loginPassword" />',
								'</div>',
							'</fieldset>',
							'<input type="image" id="logInButton" class="button" src="/shared/resource/images/itinerary_planner/fr/buttons/login.png" alt="Se connecter" />',
                    '<img id="becomeMember" class="button" src="/shared/resource/images/itinerary_planner/fr/buttons/sign_up_now.png" alt="Sauvagardez votre projet de voyage sur Irlande-tourisme.fr" />',
							'<div><a href="#" class="call-to-action" id="forgotPassword">J&#39;ai oublié mon mot de passe</a></div>',
						'</form>',
						'<h3></h3>',
						'<p></p>',
					'</div>'
				].join('')),

	registerHTML:	$([	'<div id="swapableContent">',
						'<h2><img src="/shared/resource/images/itinerary_planner/fr/text/overlay-headings/save-your-trip.png" alt="Sauvagardez votre projet de voyage sur Irlande-tourisme.fr" height="23" /></h2>',
						'<p id="registerInstructions">Bonjour, pour enregistrer votre projet et revenir le consulter ultérieurement, entrez simplement votre adresse email et choisissez un mot de passe. Pour pourrer ensuite renommer votre projet, en créer d&#39;autres, les partager avec vos amis ou votre famille et inspirer d&#39;autres personnes.</p>',
						'<form method="" action="" id="registerForm">',
							'<fieldset class="login section">',
								'<h3></h3>',
								'<select id="registerTitle" class="select">',
									'<option selected="selected">Titre</option>',


									'<option>Monsieur</option>',



									'<option>Madame</option>',





									'<option>Mademoiselle</option>',








								'</select>',
								'<input type="text" id="registerFirstName" value="Prénom" />',
								'<input type="text" id="registerLastName" value="Nom" />',
							'</fieldset>',
							'<fieldset class="login">',
								'<h3>Les détails de votre Trip Planner</h3>',
								'<input type="text" id="registerEmail" value="Votre adresse email (= votre identifiant de connexion)" />',
								'<input type="text" id="registerEmailConfirm" value="Merci de confirmer votre adresse email" />',
								'<div class="passwordOverlay">',
									'<label class="password" for="registerPassword">Mot de passe</label>',
									'<input type="password" id="registerPassword" value="" />',
								'</div>',
								'<div class="passwordOverlay">',
									'<label class="password" for="registerPasswordConfirm">Confirmer votre mot de passe</label>',
									'<input type="password" id="registerPasswordConfirm" value="" />',
								'</div>',

									'<input type="checkbox" class="checkbox" path="marketing" id="marketing" />',
									'<label for="marketing"><span style="font-size : 8pt;line-height:14pt">J&#39;aimerais recevoir les informations et offres spéciales du Tourisme Irlandais par e-mail (newsletter mensuelle). </span></label>',
								
							'</fieldset>',
						'<input type="image" id="registerButton" class="button" src="/shared/resource/images/itinerary_planner/fr/buttons/save-now.png" alt="Sauvagardez votre projet de voyage sur Irlande-tourisme.fr" style="float: right" />',
                        '<img class="button" id="transitionToLogin" src="/shared/resource/images/itinerary_planner/fr/buttons/already_signed_up.png" alt="Se connecter" />',
						'</form>',
						'</div>'
					].join('')),

	forgotHTML: $([ '<div id="swapableContent">',
						'<h2>Obtenir un nouveau mot de passe</h2>',
						'<p>Le nouveau mot de passe vous sera envoyé à l&#39;adresse indiquée ci-dessous</p>',
						'<form method="" action="" id="forgotForm">',
							'<fieldset class="login">',
								'<h3>Merci d&#39;entrer votre adresse email:</h3>',
								'<input type="text" id="forgotEmail" value="Adresse e-mail" />',
							'</fieldset>',
								'<input type="image" class="button" value="submit" id="forgotButton" src="/shared/resource/images/itinerary_planner/fr/buttons/submit.png" height="22" />',
						'</form>',
					'</div>'
				].join('')),

	emailSentHTML: $([
						'<div id="swapableContent">',
							'<h2>Confirmation</h2>',
							'<p>Le mot de passe a été envoyé sur l&#39;adresse email que vous avez fournie</p>',
							'<p>Merci</p>',
							'<input type="image" class="button" value="close" id="closeButton" src="/shared/resource/images/itinerary_planner/fr/buttons/close.png" height"22" />',
						'</div>'
					].join('')),

    init: function() {
		// Is user logged in?
        if($.ti.tripData.trip.login) {
			$.ti.login.loggedIn = true;
        }
		this.setUserStatus();
	},

	loggedIn: false,

	afterLogin: function() {$.ti.popup.close();},

    openDialogue: function()
    {
        $.ti.login.openDialogueWithMode("register");
    },

    openDialogueWithMode: function(mode)
    {
        var content = $.ti.login.registerHTML;
        var events = $.ti.login.registerEvents;

        if (mode === "login")
        {
            content = $.ti.login.loginHTML;
            events = $.ti.login.events;
        }

        $.ti.popup.init({
            content: content,
            callback: events,
            width: '360px'
        });
    },


/*
    openDialogue: function() {
		$.ti.popup.init({
			content: $.ti.login.loginHTML,
			callback: $.ti.login.events,
			width:'360px'
		});
	},
    */

	events: function() {
		$('#loginForm').bind('submit.submitLogin', function(event){
			event.preventDefault();
			$.ti.validate.check('#loginForm', {
				rules: {
					loginUsername: {
						"required" : 'Champs obligatoire'
					},
					loginPassword: {
						"required" : 'Champs obligatoire',
						"minLength": ["6", 'Le mot de passe doit comporter au minimum 6 caractères']
					}
				},
				success: $.ti.login.submitLogin,
				failure: $.ti.login.throwError
				});
		});

		$('#forgotPassword').click(function(){
			$.ti.popup.swapContent($.ti.login.forgotHTML, "360px", $.ti.login.forgotEvents);
		});

		$('#becomeMember').click(function(){
			$.ti.popup.swapContent($.ti.login.registerHTML,"360px", $.ti.login.registerEvents);
		});
	},

	registerEvents: function() {
		$('#registerButton').click(function(event){
			event.preventDefault();
			$.ti.validate.check('#registerForm', {
				rules: {
					registerFirstName: {
						"required"	: 'Champs obligatoire'
					},
					registerLastName: {
						"required"	: 'Champs obligatoire'
					},
					registerEmail: {
						"required"	: 'Champs obligatoire',
						"email"		: 'Adresse email invalide'
					},
					registerEmailConfirm: {
						"required"	: 'Champs obligatoire',
						"matchVal"	: ['#registerEmail', '']
					},
					registerPassword: {
						"required"	: 'Champs obligatoire',
						"minLength"	: ["6", 'Le mot de passe doit comporter au minimum 6 caractères'],
						"matchVal"	: ['#registerPasswordConfirm', 'Désolé, le mot de passe saisi ne vous permet pas d&#39;accéder à votre Trip Planner. Essayez à nouveau ou cliquez sur "j&#39;ai oublié mon mot de passe"']
					},
					registerPasswordConfirm: {
						"required"	: 'Champs obligatoire',
						"minLength"	: ["6", 'Le mot de passe doit comporter au minimum 6 caractères']
					}
				},

				success: $.ti.login.submitRegister
				});
		});

        $("#transitionToLogin").unbind("click");
        $("#transitionToLogin").click(function(event) {
            event.preventDefault();
            $.ti.popup.swapContent($.ti.login.loginHTML, "360px", $.ti.login.events);
        });
	},

	submitRegister: function() {
		var login = {
			username: $('#registerEmail').val(),
			title: $('#registerTitle').val(),
			firstname: $('#registerFirstName').val(),
			lastname: $('#registerLastName').val(),
			password: $('#registerPassword').val(),
                                                marketing: false
		};

                                if ($('#marketing').is(':checked'))
                                     login.marketing = true;

		$.ti.tripData.trip.login = login;
		$.ti.ajax.postData('/fr/trip/', $.ti.tripData, $.ti.login.registerResponse);
	},

	registerResponse: function(response) {
        if (response === 20)
        {
            // Already registered...
            $('#registerInstructions').text(



				'This email address has already been registered'


				).css('color', 'red');
        } else if(response !== 0) {
			$.ti.popup.close();
			$.ti.login.loggedIn = true;
			$.ti.login.setUserStatus();
		} else {
			// ToDo - need to represent this to user
			$.ti.console.log('failed login');
		}
	},

	forgotEvents: function() {
		$('#forgotButton').click(function(event){
			event.preventDefault();
			$.ti.validate.check('#forgotForm', {
				rules: {
					forgotEmail: {
						"required" : 'Champs obligatoire',
						"email" : 'Merci d&#39;entrer une adresse email valide'
					}
				},
				success: $.ti.login.submitForgot
			});
		});
	},

	submitForgot: function() {
		var forgot = {
				login: {
					username: $('#forgotEmail').val()
				}
			};
		$.ti.ajax.postData('/fr/trip/', forgot, $.ti.login.forgotResponse);
	},

	forgotResponse: function(response) {
		if(response !== 0) {
			$.ti.popup.swapContent($.ti.login.emailSentHTML, "360px", $.ti.login.emailSentEvents);
		} else {
			var errorLabel = $('<label for="forgotEmail" class="error">Cette adresse email n&#39;a pas été enregistrée</label>').hide();
            $('#forgotEmail').before(errorLabel);
            errorLabel.fadeIn(500);
		}
	},

	emailSentEvents: function() {
		$('#closeButton').click(function(){
			$.ti.popup.close();
		});
	},

	submitLogin: function() {
		var login = {
			login: {
				username: $('#loginUsername').val(),
				password: $('#loginPassword').val()
			}
		};

		$.ti.tripData.trip.login = login.login;
		if($.ti.tripData.trip.tripActivities) {
			$.ti.ajax.postData('/fr/trip/?tripId=' + $.ti.tripData.trip.id, $.ti.tripData, $.ti.login.checkLoginResponse);
		} else {
			$.ti.ajax.postData('/fr/trip/?tripId=', $.ti.tripData, $.ti.login.checkLoginResponse);
		}
	},

	checkLoginResponse: function(data) {
		if(data !== 0) {
			$('#loginForm').unbind('submit.submitLogin');
			// run the temporary after login function
			$.ti.login.afterLogin();
			// reset the after login function to it's normal close popup behaviour
			$.ti.login.afterLogin = function() {$.ti.popup.close();};
			// Todo - stop using this item - work from main trip object
			$.ti.login.loggedIn = true;
			$.ti.panel.saveTripAndPromos(data, $.ti.panel.useTripData);
		} else {
			var error = $('<label for="loginUsername" class="error">Désolé, votre nom d&#39;utilisateur et mot de passe ne sont pas reconnus</label>');
			$('#loginHeading').html(error).show();
		}
	},

	checkLogoutResponse: function(data) {
		if(data !== 0) {
			$.ti.login.loggedIn = false;
			$.ti.login.setUserStatus();
			$.ti.recalculateCalendarGrid.clearGrid();
            $('.day', '#calendarDays').remove();
			$.ti.panel.saveTripAndPromos(data, $.ti.panel.useTripData);
		}
	},

	setUserStatus: function() {
		if($.ti.login.loggedIn === true) {
			// Set username and account management event
			$('#userName').empty()
						  .append('Bonjour:&nbsp;<a id="userName">'



							  + $.ti.tripData.trip.login.firstname


							  + '</a>')
						  .click(function(){
							$.ti.account.init();
						  });
			// Clear click events
			$('#logIn').unbind('click');
			// Add log out event
			$('#logIn').text('Se déconnecter')
					   .bind('click.logout', function(event) {
							event.stopPropagation();
							$.ti.login.logOut();
						});

		} else {
			$('#userName').text('Voir vos projets sauvegardés');
			// Clear click events
			$('#logIn').unbind('click');
			$('#logIn').text('Se connecter')
					   .bind('click.login', function(event){
							event.stopPropagation();
							$.ti.login.openDialogueWithMode("login");
						});
		}
	},

	logOut: function() {
		var logout = {
			username: ''
		};
		$.ti.tripData.trip.login = logout;
		$.ti.ajax.postData('/fr/trip/?tripId=-1', $.ti.tripData, $.ti.login.checkLogoutResponse);
	}
};
})(jQuery);
