$(function(){

    var field_values = {
            'nome'		: 'nome',
            'via'		: 'via',
            'civico'	: 'civico',
            'citta'		: 'citta',
            'cap'		: 'cap',
            
            'telefono'	: 'telefono',
            'partitaiva': 'partitaiva',
            'sito'		: 'sito',
            
            'email'  : 'email',
    };


    $('input#nome').inputfocus({ value: field_values['nome'] });
    $('input#via').inputfocus({ value: field_values['via'] });
    $('input#civico').inputfocus({ value: field_values['civico'] });
    $('input#citta').inputfocus({ value: field_values['citta'] });
    $('input#cap').inputfocus({ value: field_values['cap'] });

    $('input#telefono').inputfocus({ value: field_values['telefono'] });
    $('input#partitaiva').inputfocus({ value: field_values['partitaiva'] });
    $('input#sito').inputfocus({ value: field_values['sito'] });

    $('input#email').inputfocus({ value: field_values['email'] }); 

    //first_step
    $('form').submit(function(){ return false; });

    $('#submit_zero').click(function(){
			//slide steps
	        $('#zero_step').slideUp();
	        $('#first_step').slideDown()
	       // $('#progress_bar').css('display','block')
	});


    $('#submit_first').click(function(){
        //remove classes
        $('#first_step input').removeClass('error').removeClass('valid');

        //ckeck if inputs aren't empty
        var fields = $('#first_step input[type=text]');
        var error = 0;
        
        var citta = "";
        var via = "";
        var cap = "";
        var civico = "";
        var pizzeria = "";
        var offerta = "";
        var sito = "";
        var cambiaofferta = "";
        var tipo = "";
        
        fields.each(function(){
            var value = $(this).val(),
            	type = $(this).attr('name');
            	
            
            switch (type) {
            	case 'nome':
            		if (!value.match(/^[A-Za-z0-9àèìòù\s\'\\\\]{4,50}$/) || value==type) { 
            		
               			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            			pizzeria=value;
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;

            	case 'via':
            		if (!value.match(/^[A-Za-z0-9àèìòù\s\'\\\\]{4,50}$/) || value==type) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            			via = value;
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
            	
            	case 'civico':
            		if (!value.match(/^[A-Za-z0-9\s\/\-]{1,8}$/) || value==type) { //aggiustare
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            			civico = value;
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
     
            	case 'citta':
            		if (!value.match(/^[A-Za-z0-9àèìòù\s\'\\\\]{4,50}$/) || value==type) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            			citta = value;
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
 
             	case 'cap':
            		if (!value.match(/^[0-9]{5}$/) || value==type) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            			cap = value;
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
            	
            	case 'telefono':
            		if (!value.match(/^[0-9\s\-\/]{7,50}$/) || value==type) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
            }

        });        
        
        if(!error) {  

			  var address = via+' '+civico+', '+cap+', '+citta;
			  
			  
			  
			  var obj = {
			  	lat: 42.12,
			  	lng: 12.11
			  }
			  gmap = new Gmap(obj, "mapcanvas");
			  var infowindow = new google.maps.InfoWindow();
			  gmap.geocode(address, "address", function(results, status){
					if (status == google.maps.GeocoderStatus.OK) {
					
						result = results[0].geometry.location;
						
						var ico = {
							//path: "/images/marker_my.png",
							path: "/images/pizzaria.png",
							size: [32, 37],
							anchor: [16, 37],
							origin: [0, 0]
						};
						
						
						var mark = gmap.add_marker(result, ico);
						mark.setDraggable(true);
						infowindow.setContent(results[0].formatted_address + '<br />' + address);
						infowindow.open(gmap.map, mark);
						
						google.maps.event.addListener(mark, "click", function(){
							infowindow.open(gmap.map, mark);
						});
						
						google.maps.event.addListener(mark, "dragend", function(){
							coor = mark.getPosition();
							gmap.geocode(coor, "latLng", function(marker_results, marker_status){
								if (marker_status == google.maps.GeocoderStatus.OK){
	
									var add = marker_results[0].formatted_address.split(',');
									add.splice((add.length - 1), (add.length - 1) );
									var add2 = add[add.length - 1].split(' ');
									
									$('#via').val(add[0]);
									$('#civico').val(add[1]);
									$('#cap').val(add2[1]);
									$('#citta').val(add2[2]);
									
									infowindow.setContent(marker_results[0].formatted_address);
									mark.setPosition(marker_results[0].geometry.location);
								}
							})
						});
						
						gmap.zoom(14);
						
						gmap.map.panTo(result);
						
						coor = result;

						return result;
					
					} else {
						result = "Geocode was not successful for the following reason: " + status;
						alert(result);
						
						return result;
					}
				});

	        //slide steps
	        $('#first_step').slideUp();
	        $('#second_step').slideDown();

        } else return false;
        
    
    });


    $('#submit_second').click(function(){

        //slide steps
        $('#second_step').slideUp();
        $('#price_step').slideDown();
    });



    $('#submit_price').click(function(){
        $('#submit_price input').removeClass('error').removeClass('valid');

        var fields = $('#submit_price input[type=radio]');
        var error = 0;

      
        fields.each(function(){
            var value = $(this).val();
				type = $(this).attr('name');
				
            switch (type) {
            	
            	case 'offerta':
            			
            			offerta = $('input[type="radio"]:checked').val();
            		
            	break;	
            	
            }
        });

        if(!error) {
                
                //slide steps
                $('#price_step').slideUp();
                $('#third_step').slideDown();     
        } else return false;
    });

    $('#submit_third').click(function(){
        //remove classes
        $('#third_step input').removeClass('error').removeClass('valid');

        var fields = $('#third_step input[type=text], #third_step input[type=checkbox]');
        var error = 0;
      
        fields.each(function(){
            var value = $(this).val();
				type = $(this).attr('name');
				
            switch (type) {

            	case 'partitaiva':
            		if (!value.match(/^[0-9]{11}$/) || value==type) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
                       	
/*
            	case 'sito':
            	
            		sito=value;
            		
            		if((value=='' || value==type) && !$('#sito_wrap').is(':visible')){
            			
            			$('#sito_wrap').show();
            			error++;

            		}
            	
            		else if(value.length>50){
            					            			
	            			$(this).addClass('error');
		                	$(this).effect("shake", { times:3 }, 50);
	            			error++;
	
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;

            	case 'cambiaofferta':
            		
            		cambiaofferta = $('input[type="radio"]:checked').val();
            		
            		if(cambiofferta=='si') offerta='gold'; //
            		
            	break;
*/
            	case 'sito':
            	
            		sito=value;
            		
            		
            	break;
          	
            	            	
	            	case 'tipo':
	            			
	            			tipo = $('input[type="radio"]:checked').val();
	            			if(tipo=='aspedom') tipo='Asporto e Domicilio';

	            	break;	
	            	
	            
            	
            }
        });

        if(!error) {            
                
                //slide steps
                $('#third_step').slideUp();
                $('#fourth_step').slideDown();     
        } else return false;

    });


    $('#submit_fourth').click(function(){
        //remove classes
        $('#fourth_step input').removeClass('error').removeClass('valid');
				
        var fields = $('#fourth_step input[type=text], #fourth_step input[type=password]');
        var error = 0;
                    
        fields.each(function(i){
            var value = $(this).val();
				type = $(this).attr('name');
				
            switch (type) {
            	case 'email':
            		if (!value.match(/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/) || value.length>50 || value==type) {
            		    $(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;

            	case 'semail':
            		if (value!=$(fields[i-1]).val()) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
            	
            	case 'password':
            		if (!value.match(/^[a-zA-Z0-9]{8,50}$/)) {
            		    $(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;

            	case 'spassword':										
            		if (value!=$(fields[i-1]).val()) {
            			$(this).addClass('error');
		                $(this).effect("shake", { times:3 }, 50);
		                
		                error++;
		                
            		} else {
            		
	            		$(this).addClass('valid');
	            		
            		}
            		
            	break;
            	            	
            }
 
        });

	    if(!error) {
               
	        //slide steps
	        $('#fourth_step').slideUp();
	        $('#rules_step').slideDown();  
	    } else return false;
          
    });
    
    
	$('#submit_rules').click(function(){
        var fields = $('input.checkbox[type="checkbox"]');
        var error = 0;
		
        fields.each(function(i){

			var $this = fields.filter(this);

			if(!$this.is(":checked")){
	            $(this).addClass('error');
		       	$(this).effect("shake", { times:3 }, 50);
		       	error++;	
			} else {
				$(this).addClass('valid');
			}
		});
		
		if(!error) {
			
			var print_offerta = $('input[type="radio"][name="offerta"]:checked').val();
			var print_tipo    = $('input[type="radio"][name="tipo"]:checked').val();
			
			switch(print_offerta){
				case "standard":
				case "premium":
				case "gold":
					print_offerta = print_offerta.slice(0,1).toUpperCase() + print_offerta.slice(1);	
				break;
			}
			
			switch(print_tipo){
				case "asporto":
				case "domicilio":
					print_tipo = print_tipo.slice(0,1).toUpperCase() + print_tipo.slice(1);	
				break;

				case "aspedom":
					print_tipo = "Asporto e Domicilio";
				break;
			}
			
	        var fields = new Array(
	            $('#nome').val().toUpperCase(),
	            $('#via').val().slice(0,1).toUpperCase() + $('#via').val().slice(1) + ', ' + $('#civico').val(),
	            $('#citta').val().slice(0,1).toUpperCase() +  $('#citta').val().slice(1) + ', ' + $('#cap').val(),
	            $('#telefono').val(),
	            $('#partitaiva').val(),	            
	            print_offerta,
	            print_tipo,                	        //aspe dom
	            $('#email').val(),                       
	            $('#password').val()                   
	        );
	        
	        var tr = $('#fifth_step tr');
	        tr.each(function(){

	            $(this).children('td:nth-child(2)').html(fields[$(this).index()]);
	        });
	
	
	        $('#rules_step').slideUp();
	        $('#fifth_step').slideDown();
	     } else return false;
	});

    $('#submit_fifth').click(function(){
        //send information to server
        
		var formObj = $('form#reg').serializeArray();

		formObj.push({name: "coordinate", value: coor});
		
		$('#info_form').html("<div id='info_form'><p>Analisi dei dati..</p><br/><div style='margin-top:50px'><img src='../images/loading.gif' /></div></div>");
		
		setTimeout(function(){
	       	$.post("/ajax/reg.php", formObj,
	       		function(data){
	       		
	       			//if (data.status) {
	       				$('#info_form').html(data.msg);
	       			//}
	       			

	       			
				}, "json");
	       	
        }, 500);
        
        $('#fifth_step').slideUp();
		$('#final_step').slideDown();
        
    });
    
    
    //back button
    $('.back').click(function(){
        var container = $(this).parent('div'),
            previous  = container.prev();
            
        $(container).slideUp();
        $(previous).slideDown();
    });

});
