var userMarker = null;
var userMap = null;
var venueMarkers = new Array();
var address = new Array();
var choirs = new Array();
var circle = null;
var radiusMargin = 1.02;
var defaultRadius = 15;


jQuery(function () {
    jQuery("#show_hide").remove();
    jQuery("#suggestion_list_header").remove();
    jQuery("#suggestion_list").remove();
    jQuery("#choir_list_header").hide();
    jQuery("#choir_wrapper").hide();
    jQuery("#choir-list-titles").hide();

    circle = new google.maps.Circle();

    userMap = initializeMap();

    jQuery(".choir_item .choir_name").bind('click', goToMarker);

    jQuery("#search_button").click(function (event) {
        if (userMarker instanceof google.maps.Marker) userMarker.setMap(null);

        userMarker = getMarkerForPostcode(userMap, jQuery("#postcode").attr("value"));
        if (userMarker instanceof google.maps.Marker) {
            var parsedRadius = parseFloat(jQuery("#radius").attr("value"));
            var radiusToExamine = (isNaN(parsedRadius) || parsedRadius <= 0 ? defaultRadius : parsedRadius) * radiusMargin;

            userMarker.setMap(userMap);
            centerMapAroundMarker(userMap, userMarker);
            hideMarkers(venueMarkers);
            var distances = new Array();
            var filteredMarkers = filterVenuesWithinMileRadius(userMarker, radiusToExamine, venueMarkers, distances)
            showMarkersOnMap(userMap, filteredMarkers);
            circle.setRadius(radiusToExamine * 1600);
            circle.setMap(userMap);
            circle.bindTo('center', userMarker, 'position');
            userMap.fitBounds(circle.getBounds());

            jQuery("#radius").attr("value", radiusToExamine / radiusMargin);

            var choirCount = updateResultsTable(filteredMarkers, distances);

            if (filteredMarkers.length == 0) {
                jQuery("#suggest_choir").show();
                jQuery("#choir_list_header").hide();
                jQuery("#choir_wrapper").hide();
                jQuery("#message-box").show();
                jQuery("#found_choir_number").html("");
                jQuery.scrollTo('#description', 800);
                jQuery("#choir-list-titles").hide();
            }
            else {
                jQuery("#message-box").hide();
                jQuery("#suggest_choir").hide();
                jQuery("#choir_list_header").show();
                jQuery("#choir_list").show();
                jQuery("#choir_wrapper").show();
                jQuery("#choir-list-titles").show();
                jQuery("#found_choir_number").html(" " + choirCount + " ");
            }

            if (choirCount > 1) jQuery("#choirs_found").show();
            else jQuery("#choirs_found").hide();

            jQuery(".choir_item .choir_name").bind('click', goToMarker);

            jQuery("#choir_list .join_button").click(function (event) {
                jQuery(this).parents(".choir_item").find(".choir_id:first").each(function (index) {
                    window.location = "/register/step_2.php?cid=" + jQuery(this).val();
                });
            });
            
            jQuery("#choir_list .waiting_list_button").click(function (event) {
                jQuery(this).parents(".choir_item").find(".choir_id:first").each(function (index) {
                    window.location = "/register/wait_list.php?cid=" + jQuery(this).val();
                });
            });
            
            jQuery("#choir_list .taster_button").click(function (event) {
                jQuery(this).parents(".choir_item").find(".choir_id:first").each(function (index) {
                    window.location = "/register/choose_taster.php?cid=" + jQuery(this).val();
                });
            });
        }
        else alert(userMarker.message);
    });

    $("#suggest_choir_form").validate({
        rules: {
            firstname: {
                required: true
            },
            lastname: {
                required: true
            },
            email: {
                required: true,
                email: true
            },
            under18: {
                required: true
            },
            county: {
                required: true
            },
            town: {
                required: true
            },
            postcode: {
                required: true,
                remote: {
                    url: "/session/location/ajax/check_postcode.php",
                    type: "post"
                }
            }
        },
        messages: {
            firstname: "Please enter your first name!",
            lastname: "Please enter your surname!",
            email: "Please enter your e-mail address!",
            under18: "Are you under 18?",
            county: "Please select your region!",
            town: "Please enter your town!",
            postcode: "Please enter your valid UK postcode!"
        }
    });

    jQuery("#suggest_region_select select").html("<option value=\"\">Please select</option>" + jQuery("#suggest_region_select select").html());



});


