
// When the DOM is ready...
$(function(){
	
	// Hide stuff with the JavaScript. If JS is disabled, the form will still be useable.
	// NOTE:
	// Sometimes using the .hide(); function isn't as ideal as it uses display: none; 
	// which has problems with some screen readers. Applying a CSS class to kick it off the
	// screen is usually prefered, but since we will be UNhiding these as well, this works.
	$(".name_wrap").hide();
	$("#company_name_wrap").hide();
    
	// Reset form elements back to default values
	$("#num_attendees").val('Please Choose');
	$("#num_kids_attendees").val('Please Choose');
    
    // When a dropdown selection is made
	$("#duration").change(function() {
        showRickshawNums();
    });

    // When a dropdown selection is made
	$("#tour").change(function() {
        if ($("#tour option:selected").text() == 'Bike Rentals' ) {
            $('#duration_box').show();
        }
        else {
            $('#duration_box').hide();
        }
    });
    
	// When a dropdown selection is made
	$("#num_attendees").change(function() {
        showRickshawNums();
    });

    $("#num_kids_attendees").change(function() {
        showRickshawNums();
    });

    function validate_email() {
        var email = $("#email_toggle_on").val();
        var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
        
        if (emailPattern.test(email))
           {
               return true;
           }
        else
           {
               alert( 'Please, enter a valid email' );
               $("#email_toggle_on").focus();
           }
    }
    
    $("#email_toggle_on").change(function() {
        validate_email();
    });

    function validate_attendees() {
        if ( $('#tour').val() == 'Central Park Bike Tour' ) {
            if ( parseInt( $("#num_kids_attendees").val() ) + parseInt( $("#num_attendees").val() ) <= 1 ) {
                alert( 'Please, select at least two attendees' );
                return false;
            }

            return true;
        }

        if ( parseInt( $("#num_attendees").val() ) > 0) {
            return true;
        }
        
        alert( 'Please, select at least one attendee' );
        return false;
    }

    function validate_name() {
        if ( $("#personal_name_toggle_on").val() == '' ) {
            alert( 'Please, enter your name' );
            $("#personal_name_toggle_on").focus();
            return false;
        }

        return true;
    }
    
    function validate_phone() {
        if ( $("#phone_toggle_on").val() == '' ) {
            alert( 'Please, enter your phone' );
            $("#phone_toggle_on").focus();
            return false;
        }

        return true;
    }
    
    function validate_tour() {
        if ( $("#datepicker").val() == '' ) {
            alert( 'Please, choose your tour date.' );
            $("#datepicker").focus();
            return false;
        }
        else {
            var current = new Date();

            var day = current.getDate();
            var month = current.getMonth() + 1;
            var year = current.getFullYear();
            
            if (day < 10) {
                day = '0'+day;
            }
            
            if (month < 10) {
                month = '0'+month;
            }
            
            var currentDate = month + '/' + day + '/' + year;
            
            if ( Date.parse( $("#datepicker").val() ) < Date.parse( currentDate ) ) {
                alert( 'Tour date is in the past. Please, choose tour date.' );
                $("#datepicker").focus();
                return false;
            }
            
            return true;
        }

        return true;
    }

    function showRickshawNums() {
        var prices = {
            'Central Park Rickshaw Tour': { 'price': { '1': '79', '2': '189' } },
            'Central Park Walking Tour': { 'price': '47' },
            'Central Park Bike Tour': { 'price': '47' },
            'Bike Rentals': { 'price': { '1': '15', '2': '20', '3': '25', '4': '45' } },
            'Brooklyn Bridge Bike Tour': { 'price': '60' },
        };

        var adults = parseInt( $("#num_attendees option:selected").text() ) || 0;
        var kids   = parseInt( $("#num_kids_attendees option:selected").text() ) || 0;

        var tour   = $("#tour option:selected").text() || $("#tour").val();
        
        var total = adults + kids;
        
        $("#service").text( tour );
        $("#num_kids").text( kids  );
        $("#num_adults").text( adults );
        
        if ( tour == 'Bike Rentals' ) {
            $("#rickshaw_nums").text( "You are reserving " + total + " bikes" );
            $("#duration_txt").text( "Duration: " + $("#duration option:selected").text() );
            
            $("#total_price").text( total * prices[ 'Bike Rentals' ][ 'price' ][ $("#duration option:selected").val() ] + "$" );
        }
        else if ( tour == 'Central Park Bike Tour' ) {
            $("#rickshaw_nums").text( "You are reserving " + total + " bikes" );
            
            $("#total_price").text( total * prices[ 'Central Park Bike Tour' ][ 'price' ] + "$" );
        }
        else if ( tour == 'Central Park Rickshaw Tour' ) {
            var rickshaw_nums = parseInt( (adults + kids + 1) / 2);
            $("#rickshaw_nums").text( "You are reserving " + rickshaw_nums + " rickshaws");
            $("#duration_txt").text( "Duration: " + $("#duration option:selected").text() );
            
            $("#total_price").text( rickshaw_nums * prices[ 'Central Park Rickshaw Tour' ][ 'price' ][ $("#duration option:selected").val() ] + "$" );
        }
        else if ( tour == 'Central Park Walking Tour' ) {
            $("#rickshaw_nums").text( "You are reserving " + total + " tickets");
            
            $("#total_price").text( total * prices[ 'Central Park Walking Tour' ][ 'price' ] + "$" );
        }
        else if ( tour == 'Brooklyn Bridge Bike Tour' ) {
            $("#rickshaw_nums").text( "You are reserving " + total + " bikes");
            
            $("#total_price").text( total * prices[ 'Brooklyn Bridge Bike Tour' ][ 'price' ] + "$" );
        }
        else {
            $("#rickshaw_nums").text( "There is a problem with your reservation. Please, contact us." );
        }
    }
	
	$("#submit_button").click(function(){
        if (! validate_attendees() ) {
            return false;
        }
        if (! validate_name() ) {
            return false;
        }
        if (! validate_email() ) {
            return false;
        }
        if (! validate_phone() ) {
            return false;
        }
        if (! validate_tour() ){
            return false;
        }
        if ( $("#rock:checked").val() == null ) {
            alert( 'Please, accept our terms' );
            return false;
        }
	});
	
});

