// Oggetto login
// Questo è l'oggetto che gestisce il login

var Login = {

	mail: '',
	Ordine: [],
	logged: false,
	
	StartLogin: function()
	{
	// Prepara i div
	$('Q3').setStyle('display', 'none');
	$('Q3').set('styles',{'top':'21px','height':'417px','width':'413px','left':'87px'});
	
	$('Q4').setStyle('display', 'none');
	$('Q4').set('styles',{'top':'21px','height':'417px','width':'413px','left':'510px'});
	
	var greybar_login = new Element('div',{'id':'greybar_login'});
	var greybar_register = new Element('div',{'id':'greybar_register'});
	var greybar_login_text = new Element('div',{'id':'greybar_login_text','text':'Login'});
	var greybar_register_text = new Element('div',{'id':'greybar_register_text','text':'Register now'});
	greybar_login_text.inject(greybar_login);
	greybar_register_text.inject(greybar_register);
	greybar_login.inject('Q3');
	greybar_register.inject('Q4');
		
	var email_label = new Element('label',{'id':'email_label','for':'email_input','text':'mail'});
	var email_input = new Element('input',{'id':'email_input','type':'text','value':''});
	email_input.inject(email_label);

	var password_label = new Element('label',{'id':'password_label','for':'password_input','text':'password'});
	var password_input = new Element('input',{'id':'password_input','type':'password','value':''});
	password_input.inject(password_label);
	
	var forgot = new Element('div',{'id':'forgot','text':'forgot password?'});
	forgot.addEvents({
					click:function(){
									if ($('email_input').value !== '')
										{
										$('wait_forgot').setStyle('display', 'inline');
										Login.RecuperaPassword($('email_input').value);
										}
									}
								  });		
	
	var login_button = new Element('div',{'id':'login_button','text':'LOGIN'});
	login_button.addEvents({
					click:function(){
									if (($('email_input').value !== '') && ($('password_input').value !== ''))
										{
										$('wait_login').setStyle('display', 'inline');
										Login.Accedi($('email_input').value,$('password_input').value);
										}
									}
								  });
								  
	email_label.inject('Q3');
	password_label.inject('Q3');
	forgot.inject('Q3');
	login_button.inject('Q3');
	
	var emailreg_label = new Element('label',{'id':'emailreg_label','class':'campi_label','for':'emailreg_input','text':'Mail: *'});
	var emailreg_input = new Element('input',{'id':'emailreg_input','class':'campi','type':'text','value':''});
	emailreg_input.inject(emailreg_label);
	
	var firstname_label = new Element('label',{'id':'firstname_label','class':'campi_label','for':'firstname_input','text':'Firstname: *'});
	var firstname_input = new Element('input',{'id':'firstname_input','class':'campi','type':'text','value':''});
	firstname_input.inject(firstname_label);
	
	var lastname_label = new Element('label',{'id':'lastname_label','class':'campi_label','for':'lastname_input','text':'Lastname: *'});
	var lastname_input = new Element('input',{'id':'lastname_input','class':'campi','type':'text','value':''});
	lastname_input.inject(lastname_label);
	
	var street_label = new Element('label',{'id':'street_label','class':'campi_label','for':'street_input','text':'Street: *'});
	var street_input = new Element('input',{'id':'street_input','class':'campi','type':'text','value':''});
	street_input.inject(street_label);
	
	var number_label = new Element('label',{'id':'number_label','class':'campi_label','for':'number_input','text':'Number: *'});
	var number_input = new Element('input',{'id':'number_input','class':'campi','type':'text','value':''});
	number_input.inject(number_label);
	
	var zipcode_label = new Element('label',{'id':'zipcode_label','class':'campi_label','for':'zipcode_input','text':'Zipcode: *'});
	var zipcode_input = new Element('input',{'id':'zipcode_input','class':'campi','type':'text','value':''});
	zipcode_input.inject(zipcode_label);

	var city_label = new Element('label',{'id':'city_label','class':'campi_label','for':'city_input','text':'City: *'});
	var city_input = new Element('input',{'id':'city_input','class':'campi','type':'text','value':''});
	city_input.inject(city_label);
	
	var phone_label = new Element('label',{'id':'phone_label','class':'campi_label','for':'phone_input','text':'Phone: *'});
	var phone_input = new Element('input',{'id':'phone_input','class':'campi','type':'text','value':''});
	phone_input.inject(phone_label);
	
	var country_label = new Element('label',{'id':'country_label','class':'campi_label','for':'country_input','text':'Country: *'});
	//var country_input = new Element('input',{'id':'country_input','class':'campi','type':'text','value':''});
	//country_input.inject(country_label);
	
	var accept_label = new Element('label',{'id':'accept_label','for':'accept_check','text':'Term and conditions:'});
	var accept_read = new Element('span',{'id':'accept_read','text':'read'});
	accept_read.inject(accept_label);
	
	accept_read.addEvents({
					click:function(){
										Login.CaricaTesto('Terms & Conditions');
										//Sito.CambiaColore();
									}
									});
	
	var accept_text = new Element('span',{'id':'accept_text','text':'accept'});
	accept_text.inject(accept_label);
	var accept_check = new Element('input', {'id':'accept_check','type': 'checkbox', 'checked': false});
	accept_check.inject(accept_label);
	
	var password_1_label = new Element('label',{'id':'password_1_label','class':'campi_label','for':'password_1_input','text':'Password (6 characters at least): *'});
	var password_1_input = new Element('input',{'id':'password_1_input','class':'campi','type':'password','value':''});
	password_1_input.inject(password_1_label);
	
	var password_2_label = new Element('label',{'id':'password_2_label','class':'campi_label','for':'password_2_input','text':'Repeat password: *'});
	var password_2_input = new Element('input',{'id':'password_2_input','class':'campi','type':'password','value':''});
	password_2_input.inject(password_2_label);
	
	var register_button = new Element('div',{'id':'register_button','text':'REGISTER'});
	register_button.addEvents({
					click:function(){
									if (
									($('emailreg_input').value !== '') && ($('firstname_input').value !== '') && ($('lastname_input').value !== '') && ($('street_input').value !== '') && ($('number_input').value !== '') && ($('zipcode_input').value !== '') && ($('city_input').value !== '') && ($('phone_input').value !== '') && ($('country_input').value !== '') && ($('password_1_input').value !== '') && ($('password_2_input').value !== ''))
										{
										if ($('password_1_input').value !== $('password_2_input').value)
											{
											alert('Passwords differ.');
											}
										else
											{
											if ($('password_1_input').value.length >= 6)
												{
												if ($('accept_check').checked)
													{
													$('wait_register').setStyle('display', 'inline');
													Login.Registra();
													}
												else
													{
													alert('You must accept term and conditions.');
													}
												}
											else
												{
												alert('Your password must be at least 6 characters.');
												}
											}
										}
									else
										{
										alert('Please make sure you fill in all required fields.');
										}
									}
								  });	
	
	var required = new Element('div',{'id':'required','text':'* These fields are required'});
	
	var term = new Element('div',{'id':'term','text':'Terms & Conditions'});
	var copy = new Element('div',{'id':'copy','text':'Copyright'});
	var legal = new Element('div',{'id':'legal','text':'Legal notice'});
	var returns = new Element('div',{'id':'returns','text':'Returns'});
	var privacy = new Element('div',{'id':'privacy','text':'Privacy policies'});
	
	term.addEvents({
					click:function(){
										Login.CaricaTesto(this.get('text'));
										//Sito.CambiaColore();
									}
								  });
	copy.addEvents({
					click:function(){
										Login.CaricaTesto(this.get('text'));
										//Sito.CambiaColore();
									}
								  });
	legal.addEvents({
					click:function(){
										Login.CaricaTesto(this.get('text'));
										//Sito.CambiaColore();
									}
								  });
	returns.addEvents({
					click:function(){
										Login.CaricaTesto(this.get('text'));
										//Sito.CambiaColore();
									}
								  });
	privacy.addEvents({
					click:function(){
										Login.CaricaTesto(this.get('text'));
										//Sito.CambiaColore();
									}
								  });
	
	term.inject('Q4');
	copy.inject('Q4');
	legal.inject('Q4');
	returns.inject('Q4');
	privacy.inject('Q4');

	var text_space = new Element('div',{'id':'text_space','text':''});
	text_space.inject('Q4');
	
	text_space.addEvents({
					click:function(){
										this.setStyle('display', 'none');
										//Sito.CambiaColore();
									}
								  });	
	
	var wait_forgot = new Element('img',{'id':'wait_forgot','src':'images/shop/spinner.gif'});
	wait_forgot.inject('Q3');
	var wait_login = new Element('img',{'id':'wait_login','src':'images/shop/spinner.gif'});
	wait_login.inject('Q3');
	var wait_register = new Element('img',{'id':'wait_register','src':'images/shop/spinner.gif'});
	wait_register.inject('Q4');
	
	emailreg_label.inject('Q4');
	firstname_label.inject('Q4');
	lastname_label.inject('Q4');
	street_label.inject('Q4');
	number_label.inject('Q4');
	zipcode_label.inject('Q4');
	city_label.inject('Q4');
	phone_label.inject('Q4');
	country_label.inject('Q4');
	accept_label.inject('Q4');
	password_1_label.inject('Q4');
	password_2_label.inject('Q4');
	register_button.inject('Q4');
	required.inject('Q4');
	this.CaricaPaesiISO();
	},
	
	CaricaPaesiISO: function()
	{
		var JSONRequest = '{"ISO":"ISO"}';
		var myRequest = new Request({method: 'get',
									 url: 'php/spedizione.php',
									 onSuccess: function(responseText, responseXML)
										{									
										var myResponse = JSON.decode(responseText);
										if (myResponse.result)
											{
												var combobox = new Element('select',{'id':'country_input','name':'country_input','class':'comboBoo campi'});
												var option_blank = new Element('option',{'value':'','text':''});
												option_blank.inject(combobox);
												var i=0;
												for (i=0;i<myResponse.dati.length;i++)
													{
													var option = new Element('option',{'value':myResponse.dati[i].iso,'text':myResponse.dati[i].name});
													option.inject(combobox);
													}
												combobox.inject('country_label');
											}
										else
											{
												Login.ErroreDB();
											}
										},
									 onFailure: function(xhr)
										{
										Login.ErroreDB();
										},
									 onCancel: function()
										{
										Login.ErroreDB();
										}
									});
									
		myRequest.send('ISO='+escape(JSONRequest));
	},
	
	IsLogged: function()
	{
		return this.logged;
	},
	
	Mostra: function()
	{
	$('Q3').set('styles',{'top':'21px','height':'417px','width':'413px','left':'87px'});
	$('Q4').set('styles',{'top':'21px','height':'417px','width':'413px','left':'510px'});
	
	$('Q3').setStyle('display', 'inline');
	$$('Q3').each(function(el){
									el.setStyle('display', 'inline');	
								  });
	$('Q4').setStyle('display', 'inline');
	$$('Q4').each(function(el){
									el.setStyle('display', 'inline');	
								  });									  
	},
	
	Nascondi: function()
	{
	$('Q3').setStyle('display', 'none');
	$$('Q3').each(function(el){
									el.setStyle('display', 'none');	
								  });
	$('Q4').setStyle('display', 'none');
	$$('Q4').each(function(el){
									el.setStyle('display', 'none');	
								  });	
	},
	
	Accedi: function(email, password)
	{
	this.email = email;
	var JSONRequest = '{ "email" : "' + email + '", "password" : "' + password + '" }';
	
	var myRequest = new Request({method: 'get',
								 url: 'php/login.php',
								 onSuccess: function(responseText, responseXML)
									{
									var myResponse = JSON.decode(responseText);
									if (myResponse.result)
										{
											$('wait_login').setStyle('display', 'none');
											Login.logged = true;
											Login.Nascondi();
											Carrello.Mostra();
										}
									else
										{
											alert('Invalid user or password.');
											this.email = '';
											$('wait_login').setStyle('display', 'none');
										}									
									},
								 onFailure: function(xhr)
									{
										$('wait_login').setStyle('display', 'none');
										this.email = '';
										Login.ErroreDB();
									},
								 onCancel: function()
									{
										$('wait_login').setStyle('display', 'none');
										this.email = '';
										Login.ErroreDB();
									}
									});
									
	myRequest.send('user='+escape(JSONRequest));
	//Sito.CambiaColore();
	},
	
	RecuperaPassword: function(email)
	{
		
	var JSONRequest = '{ "email" : "' + email + '" }';
	
	var myRequest = new Request({method: 'get',
								 url: 'php/recover.php',
								 onSuccess: function(responseText, responseXML)
									{
									$('wait_forgot').setStyle('display', 'none');
									var myResponse = JSON.decode(responseText);
									if (myResponse.result)
										{
											alert('Your password has been sent to your inbox.');
										}
									else
										{
											alert('Email not recorded in our files.');
										}									
									},								 
								 onFailure: function(xhr)
									{
										$('wait_forgot').setStyle('display', 'none');
										Login.ErroreDB();
									},
								 onCancel: function()
									{
										$('wait_forgot').setStyle('display', 'none');
										Login.ErroreDB();
									}
									});
									
	myRequest.send('user='+escape(JSONRequest));
	//Sito.CambiaColore();
	},
	
	CaricaTesto: function(testo)
	{
		
	var JSONRequest = '{ "testo" : "' + testo + '" }';
	
	var myRequest = new Request({method: 'get',
								 url: 'php/testi.php',
								 onSuccess: function(responseText, responseXML)
									{
									var myResponse = JSON.decode(responseText);
									
									if (myResponse.result)
										{
										$('text_space').set('text',myResponse.dati[0].titolo + ' - ' + unescape(myResponse.dati[0].testo));
										$('text_space').setStyle('display', 'inline');
										}
									
									},								 
								 onFailure: function(xhr)
									{
										$('text_space').setStyle('display', 'none');
										Login.ErroreDB();
									},
								 onCancel: function()
									{
										$('text_space').setStyle('display', 'none');
										Login.ErroreDB();
									}
									});
									
	myRequest.send('testo='+escape(JSONRequest));	
		
	},
	
	Registra: function()
	{
	
	// Controlla se l'email è già registrata altrimenti aggiunge
	var JSONRequest = '{ "email" : "' + $('emailreg_input').value + '" }';
	
	var myRequest = new Request({method: 'get',
								 url: 'php/register.php',
								 onSuccess: function(responseText, responseXML)
									{
									$('wait_register').setStyle('display', 'none');
									var myResponse = JSON.decode(responseText);
									if (myResponse.result)
										{
											// Scrivo tutti i campi nel db 
											var JSONRegister = '{ "email" : "' + $('emailreg_input').value + '" ,';
											JSONRegister = JSONRegister + ' "nome" : "' + $('firstname_input').value + '" ,';
											JSONRegister = JSONRegister + ' "cognome" : "' + $('lastname_input').value + '" ,';
											JSONRegister = JSONRegister + ' "via" : "' + $('street_input').value + '" ,';
											JSONRegister = JSONRegister + ' "numero" : "' + $('number_input').value + '" ,';
											JSONRegister = JSONRegister + ' "cap" : "' + $('zipcode_input').value + '" ,';
											JSONRegister = JSONRegister + ' "citta" : "' + $('city_input').value + '" ,';
											JSONRegister = JSONRegister + ' "telefono" : "' + $('phone_input').value + '" ,';
											JSONRegister = JSONRegister + ' "paese" : "' + $('country_input').value + '" ,';
											JSONRegister = JSONRegister + ' "password" : "' + $('password_1_input').value + '" }';

											var myRequest_2 =	new Request({method: 'get',
																			 url: 'php/register.php',
																			 onSuccess: function(responseText, responseXML)
																				{
																				var myResponse = JSON.decode(responseText);
																				if (myResponse.result)
																					{
																					alert('Congratulations your registration has been successful.');
																					$('Q4').setStyle('display', 'none');
																					$('Q3').set('styles',{'top':'21px','height':'417px','width':'836px','left':'87px'});
																					/*$('email_label').setStyle('left','300px');
																					$('password_label').setStyle('left','252px');
																					$('forgot').setStyle('left','340px');
																					$('login_button').setStyle('left','340px');*/																					
																					}
																				else
																					{
																						Login.ErroreDB();
																					}
																				},
																				onFailure: function(xhr)
																					{
																						Login.ErroreDB();
																					},
																				 onCancel: function()
																					{
																						Login.ErroreDB();
																					}
																					});
																					
											myRequest_2.send('user='+escape(JSONRegister)+'&action=register');
										}
									else
										{
											alert('Email already exists in our archives.');
										}									
									},
								 onFailure: function(xhr)
									{
										$('wait_register').setStyle('display', 'none');
										Login.ErroreDB();
									},
								 onCancel: function()
									{
										$('wait_register').setStyle('display', 'none');
										Login.ErroreDB();
									}
									});
									
	myRequest.send('user='+escape(JSONRequest)+'&action=check');
	//Sito.CambiaColore();
	},
	
		ErroreDB: function()
	{
		alert('Error occurred. Please try refreshing the page.');
	}
};

