var G4G = {
    setDefaults: function(){
        jQuery.validator.addMethod("phone", function(value, element){
            return this.optional(element) || /^[0-9\s\+\(\)\.]+$/i.test(value);
        }, "Please enter a valid phone number");

        jQuery.validator.messages.required = "";
        jQuery.validator.messages.email = "";
        jQuery.validator.messages.phone = "";
        jQuery.validator.messages.url = "";

        jQuery.validator.setDefaults({
            errorElement: "em"
        });

        $("a[href=#]").click(function(e){e.preventDefault();});
    },

    seo: function(str){
        return $.trim(str).toLowerCase().replace(/[^a-z0-9\_\.\-\+\&\;]+/g, '-');
    },

    formatSearchUri: function(form){
        var uri = "/find/", ob = $(form).serializeObject(), q = [];

        uri += (ob.where ? G4G.seo(ob.where) : "uk") + '/';
        uri += (ob.what ? G4G.seo(ob.what) : "*") + '/';
        uri += (ob.who ? G4G.seo(ob.who)  + '/' : "");

        if(ob.page) q.push("page=" + ob.page);
        if(ob.ob) q.push("ob=" + ob.ob);
        if(ob.radius) q.push("radius=" + ob.radius);

        if(ob.category){
            if(!$.isArray(ob.category)) ob.category = [ob.category];
            q.push("categories=" + ob.category.join(","));
        }

        if(q.length > 0) uri += "?" + q.join("&");

        return uri;
    },

    initSearch: function(){
        $("#search-form").submit(function(e) {
            e.preventDefault();
        }).validate({
            rules: {
                what:{
                    required: function(element){
                        return $.trim($("#who").val()).length == 0;
                    }
                },
                who:{
                    required: function(element){
                        return $.trim($("#what").val()).length == 0;
                    }
                },
                where: "required"
            },
            messages: {what: "", where: "", who: ""},
            submitHandler: function(form) {
                document.location.href = G4G.formatSearchUri(form);
            }
        });
    },

    alert: function(content){
        $("#alert").html(content).dialog({
            autoOpen: true,
            modal: true,
            title: "Info",
            draggable: false,
            resizable: false,
            buttons: [
                {
                    text: "Ok",
                    click: function() { $(this).dialog("close"); }
                }

            ]
        });
    }
};

jQuery(function($) {
    G4G.setDefaults();
    G4G.initSearch();
});

