// <![CDATA[
var appz = {
	version: 0.1,
	post_messages: new Array(),

	required_fields: new Array('firstname','lastname', 'user_email','address1','zip','city', 'country', 'state','phone','username','upwd_1','upwd_2','user_privacy_statement'),
	required_fields_name: new Array('nome','cognome', 'email','indirizzo','cap', 'cittā', 'stato', 'provincia', 'telefono', 'nick name', 'password','password','trattamento dati personali'),
	required_fields_rules: new Array('','', 'E', 'S','S','S','S','S', 'S', 'U','','','C'),
	
	redirect_login: 'page.php?id=signup_ok',
	username_field: 'username',
	password_fields: new Array('upwd_1','upwd_2'),
	submit_id : 'submit_buttons',
	password_min_length: 5,
	alert_id: 'js_alert',
	form_id: 'user_data',
	form_valid : true,

	login_form_ele: Object,
	redir_url_ele: Object,

	form_ele: Object(),
	
	init_post_messages: function(){
		var temp_messages_array = new Array();
		temp_messages_array[1] = "Attenzione!\nIl nome utente utilizzato č giā presente nel nostro database.\n";
		temp_messages_array[2] = "Attenzione!\nControllare la password inserita.\n";
		temp_messages_array[3] = "Attenzione!\nL'email inserita č giā presente nel nostro database.\n";
		temp_messages_array[4] = "";
		temp_messages_array[200] = "Complimenti\nRegistrazione avvenuta correttamente!";
		appz.post_messages = temp_messages_array;
	},
	check_login: function(){
		var login_user = $('user_name').value.strip();
		var login_password = $('pass_word').value.strip();
		var login_redir_url = $('redir_url').value.strip();
		
		if(login_user.blank() || login_password.blank()){
			alert("Inserire l'email e la password.")
			return(false);
		}
		if(!appz.validate_email(login_user)){
			alert("Inserire una email valida.")
			return(false);					
		}
		var	login_data_h = new Hash();
			login_data_h.set('action', "IN");
			login_data_h.set('user_name', login_user);
			login_data_h.set('pass_word', login_password);
			login_data_h.set('redir_url', login_redir_url);
		
		new Ajax.Request(shop_interface.login_url, {
			method: 'post', parameters: login_data_h,
			onComplete: function(transport){
				if(200 == transport.status){
					if(1 == transport.responseText){
						location.href = login_redir_url;
					}
					else{
						alert(transport.responseText);
					}
				}
			}
		});
	},
	init: function(i_parameter){
//		LOGIN
		appz.login_form_ele = $('login_form');
		if(appz.login_form_ele){
			var action = $('action').value;
			if(action == "IN"){
				if(appz.login_form_ele){
					if($("user_name")){ 
						$("user_name").focus();
					}
					new Event.observe(appz.login_form_ele, "submit", function(E){
						Event.stop(E);
						appz.check_login();
					});
				}
			}
		}
	//SIGNUP
		var the_form = $(appz.form_id);
		if(!the_form) return(false);
		appz.init_post_messages();
		appz.form_ele = the_form;
		new Event.observe(appz.form_ele , "submit", function(event){
			event.stop();
			var validation = appz.validate_form();
			
			if(appz.form_valid == true){
				appz.form_ele.request({
					onComplete: function(transport){
						var response = transport.responseText.strip();
						var message_post = appz.post_messages[transport.responseText];
						if(message_post != ""){
							if(200 != response){
								alert(message_post);
							}else{
								if(200 == response){
									appz.form_ele.disable(); // Successfull!!!
									location.href= appz.redirect_login;
								}
							}
						}
					}
				});
			}
			appz.form_valid = true;
		});
		
		var submit_ele =$(appz.submit_id);
		appz.form_ele.focusFirstElement();
		new Effect.Appear(submit_ele,{duration: 0.8, delay: 0.5});
	},
	validate_email: function(email_value){
		if (!email_value.match(/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})$/)){
			return (false);
		}else{
			return(true);
		}
	},
	validate_password: function(){
		var pass_1 = $(appz.password_fields[0]);
		var pass_2 = $(appz.password_fields[1]);
		var pass_message = "";
		if((pass_1.value.length < appz.password_min_length) ||(pass_2.value.length < appz.password_min_length)  ){
			pass_message = "Attenzione!\nLa password inserita deve essere di aleno "+
			(appz.password_min_length + 1) +" caratteri.";
			pass_message += "\nInserire nuovamente la password.";
			appz.form_valid = false;
			pass_1.value="";
			pass_2.value="";
			pass_1.focus();
			alert(pass_message);
			return(false);
		}else if(pass_1.value != pass_2.value){
			pass_message = "Attenzione!\nLa password inserita č diversa da quella inserita nel campo di controllo.";
			pass_message += "\nInserire nuovamente la password.";
			appz.form_valid = false;
			pass_1.value="";
			pass_2.value="";
			pass_1.focus();
			alert(pass_message);
			return(false);
		}
	},
	validate_form: function(){
		var validation_msg = "";
		appz.required_fields.each(function(ele_id, ele_index){
			var check_ele = $(ele_id);
			if(check_ele){
				var field_value = check_ele.value;
				field_value = field_value.strip();
				
				switch (appz.required_fields_rules[ele_index]) {
					case 'E':
						var check_email = appz.validate_email(field_value);
						if(check_email == false){
							field_label = appz.required_fields_name[ele_index];
							validation_msg ="Il campo "+field_label; 
							validation_msg += " non č un indirizzo email valido!\n";
							appz.form_valid = false;
							alert("Attenzione!\n" + validation_msg);
							check_ele.focus();
							throw $break;
						}
						break;
//	Checkbox
					case 'C':
						if(!check_ele.checked){
							field_label = appz.required_fields_name[ele_index];
							validation_msg ="Il campo obbligatorio "+field_label; 
							validation_msg += "  non č stato valorizzato!\n";
							appz.form_valid = false;
							alert("Attenzione!\n" + validation_msg);
							check_ele.focus();
							throw $break;
						}
						break;
//	Username
					case 'U':
						if(field_value == ""){
							field_label = appz.required_fields_name[ele_index];
							validation_msg ="Il campo obbligatorio "+ field_label; 
							validation_msg += " non č stato valorizzato!\n";
							appz.form_valid = false;
							alert("Attenzione!\n" + validation_msg);
							check_ele.focus();
							throw $break;
						}
						break;

					case 'S':
					case '':
					default:
						if(field_value == ""){
							field_label = appz.required_fields_name[ele_index];
							validation_msg ="Il campo obbligatorio "+field_label; 
							validation_msg += " non č stato valorizzato!\n";
							appz.form_valid = false;
							alert("Attenzione!\n" + validation_msg);
							check_ele.focus();
							throw $break;
						}
					break;
				}
			}else{
				appz.form_valid = false;
				return(false);
			}
		});
		
		if(appz.form_valid == true){
			var password_check = appz.validate_password();
		}
	}
};
new Event.observe(document, "dom:loaded", function(){
	var app_init = appz.init();
});
// ]]>