

















(function($) {
$.ti.login = {

	loginHTML:	$([ '<div id="swapableContent">',
						'<h2><img src="/shared/resource/images/itinerary_planner/de/text/log-in-trip-planner.png" width="301" height="28" alt="Speichern Sie Ihren Reiseplaner. Wenn Sie Ihren Reiseplaner bereits gespeichert haben, melden Sie sich an."/></h2>',
						'<p>Wenn Sie sich f&uuml;r den Reiseplaner schon registriert haben, melden Sie sich bitte an.</p>',
						'<form method="" action="" id="loginForm">',
							'<fieldset class="login">',
                    '<h3 id="loginHeading" style="display: none"></h3>',
								'<input type="text" id="loginUsername" value="Benutzername (Ihre E-Mail-Adresse)"/>',
								'<div class="passwordOverlay">',
									'<label class="password" for="loginPassword">Passwort eingeben</label>',
									'<input type="password" id="loginPassword" />',
								'</div>',
							'</fieldset>',
							'<input type="image" id="logInButton" class="button" src="/shared/resource/images/itinerary_planner/de/buttons/login.png" alt="Anmelden" />',
                    '<img id="becomeMember" class="button" src="/shared/resource/images/itinerary_planner/de/buttons/sign_up_now.png" alt="Speichern Sie Ihre Reise auf EntdeckeIrland.de." />',
							'<div><a href="#" class="call-to-action" id="forgotPassword">Ich habe mein Passwort  vergessen.</a></div>',
						'</form>',
						'<h3></h3>',
						'<p></p>',
					'</div>'
				].join('')),

	registerHTML:	$([	'<div id="swapableContent">',
						'<h2><img src="/shared/resource/images/itinerary_planner/de/text/overlay-headings/save-your-trip.png" alt="Speichern Sie Ihren Reiseplaner auf EntdeckeIrland.de." height="23" /></h2>',
						'<p id="registerInstructions"><p>Hallo, um Ihre Reise zur sp&auml;teren Ansicht zu speichern, geben Sie einfach Ihre E-Mail-Adresse ein und w&auml;hlen Sie ein Passwort.</p><br/><p> Anschlie&szlig;end k&ouml;nnen Sie Ihre Reise umbenennen, andere Reisen planen, sie f&uuml;r Freunde und Familie freigeben oder andere damit inspirieren.</p> </p>',
						'<form method="" action="" id="registerForm">',
							'<fieldset class="login section">',
								'<h3></h3>',
								'<select id="registerTitle" class="select">',
									'<option selected="selected"></option>',


									'<option>Herr</option>',



									'<option>Frau</option>',







									'<option>Dr</option>',






								'</select>',
								'<input type="text" id="registerFirstName" value="Vorname" />',
								'<input type="text" id="registerLastName" value="Nachname" />',
							'</fieldset>',
							'<fieldset class="login">',
								'<h3>Ihre Zugangsdaten</h3>',
								'<input type="text" id="registerEmail" value="Ihre E-Mail-Adresse (dies wird Ihr Benutzername)" />',
								'<input type="text" id="registerEmailConfirm" value="E-Mail-Adresse best&auml;tigen" />',
								'<div class="passwordOverlay">',
									'<label class="password" for="registerPassword">Passwort</label>',
									'<input type="password" id="registerPassword" value="" />',
								'</div>',
								'<div class="passwordOverlay">',
									'<label class="password" for="registerPasswordConfirm">Passwort  best&auml;tigen</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">Ja, ich möchte mehr Informationen von der Irland Information per E-Mail erhalten.</span></label>',
								
							'</fieldset>',
						'<input type="image" id="registerButton" class="button" src="/shared/resource/images/itinerary_planner/de/buttons/save-now.png" alt="Speichern Sie Ihren Reiseplaner auf EntdeckeIrland.de." style="float: right" />',
                        '<img class="button" id="transitionToLogin" src="/shared/resource/images/itinerary_planner/de/buttons/already_signed_up.png" alt="Anmelden" />',
						'</form>',
						'</div>'
					].join('')),

	forgotHTML: $([ '<div id="swapableContent">',
						'<h2>Neues Passwort erhalten</h2>',
						'<p>Das Passwort  wird an Ihre E-Mail-Adresse gesendet.</p>',
						'<form method="" action="" id="forgotForm">',
							'<fieldset class="login">',
								'<h3>Geben Sie Ihre E-Mail-Adresse ein:</h3>',
								'<input type="text" id="forgotEmail" value="E-Mail Adresse" />',
							'</fieldset>',
								'<input type="image" class="button" value="submit" id="forgotButton" src="/shared/resource/images/itinerary_planner/de/buttons/submit.png" height="22" />',
						'</form>',
					'</div>'
				].join('')),

	emailSentHTML: $([
						'<div id="swapableContent">',
							'<h2>Best&auml;tigen</h2>',
							'<p>Ihr Passwort  wurde an die angegebene E-Mail-Adresse gesendet.</p>',
							'<p>Vielen Dank.</p>',
							'<input type="image" class="button" value="close" id="closeButton" src="/shared/resource/images/itinerary_planner/de/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" : 'Dies ist ein Pflichtfeld.'
					},
					loginPassword: {
						"required" : 'Dies ist ein Pflichtfeld.',
						"minLength": ["6", 'Passwort  muss mindestens 6 Zeichen umfassen.']
					}
				},
				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"	: 'Dies ist ein Pflichtfeld.'
					},
					registerLastName: {
						"required"	: 'Dies ist ein Pflichtfeld.'
					},
					registerEmail: {
						"required"	: 'Dies ist ein Pflichtfeld.',
						"email"		: 'E-Mail-Adresse ist ung&uuml;ltig.'
					},
					registerEmailConfirm: {
						"required"	: 'Dies ist ein Pflichtfeld.',
						"matchVal"	: ['#registerEmail', 'E-Mail-Adressen m&uuml;ssen &uuml;bereinstimmen.']
					},
					registerPassword: {
						"required"	: 'Dies ist ein Pflichtfeld.',
						"minLength"	: ["6", 'Passwort  muss mindestens 6 Zeichen umfassen.'],
						"matchVal"	: ['#registerPasswordConfirm', 'Ihre Kennw&ouml;rter sind nicht korrekt. Versuchen Sie es erneut oder klicken Sie auf "Passwort  vergessen".']
					},
					registerPasswordConfirm: {
						"required"	: 'Dies ist ein Pflichtfeld.',
						"minLength"	: ["6", 'Passwort  muss mindestens 6 Zeichen umfassen.']
					}
				},

				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('/de/trip/', $.ti.tripData, $.ti.login.registerResponse);
	},

	registerResponse: function(response) {
        if (response === 20)
        {
            // Already registered...
            $('#registerInstructions').text(


				'Diese E-Mail-Adresse wurde bereits registiert.'



				).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" : 'Dies ist ein Pflichtfeld.',
						"email" : 'Geben Sie eine g&uuml;ltige E-Mail-Adresse ein.'
					}
				},
				success: $.ti.login.submitForgot
			});
		});
	},

	submitForgot: function() {
		var forgot = {
				login: {
					username: $('#forgotEmail').val()
				}
			};
		$.ti.ajax.postData('/de/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">Diese E-Mail-Adresse ist nicht registriert.</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('/de/trip/?tripId=' + $.ti.tripData.trip.id, $.ti.tripData, $.ti.login.checkLoginResponse);
		} else {
			$.ti.ajax.postData('/de/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">Ihr Benutzername und Passwort  entsprechen nicht unseren Angaben.</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('Hallo,&nbsp;<a id="userName">'


							  + $.ti.tripData.trip.login.title
							  +'&nbsp;'
							  + $.ti.tripData.trip.login.lastname



							  + '</a>')
						  .click(function(){
							$.ti.account.init();
						  });
			// Clear click events
			$('#logIn').unbind('click');
			// Add log out event
			$('#logIn').text('Abmelden')
					   .bind('click.logout', function(event) {
							event.stopPropagation();
							$.ti.login.logOut();
						});

		} else {
			$('#userName').text('Seiten erkunden');
			// Clear click events
			$('#logIn').unbind('click');
			$('#logIn').text('Anmelden')
					   .bind('click.login', function(event){
							event.stopPropagation();
							$.ti.login.openDialogueWithMode("login");
						});
		}
	},

	logOut: function() {
		var logout = {
			username: ''
		};
		$.ti.tripData.trip.login = logout;
		$.ti.ajax.postData('/de/trip/?tripId=-1', $.ti.tripData, $.ti.login.checkLogoutResponse);
	}
};
})(jQuery);
