$(document).ready(function() {


    $('input[name=data\\[Property\\]\\[keyword\\]]').focus(function() {
        if($(this).val()=="Start new search") {
            $(this).val("");
        }
    });

    $('input[name=data\\[Property\\]\\[keyword\\]]').blur(function() {
        if($(this).val()=="") {
            $(this).val("Start new search");
        }
    });


    $('#startDate').datepicker({
        dateFormat: 'mm/dd/y',
        minDate: 0,
        //maxDate: '+4M +10D',
        onSelect: function(dateText, inst) {
            if($('#endDate').val()=="") {
                var d = new Date(dateText);
                d.setDate(d.getDate()+7);
                $('#endDate').val(formatDate(d,"MM/dd/yy"));
            }
        }
    });
    $('#endDate').datepicker({
        dateFormat: 'mm/dd/y',
        minDate: 0
        //maxDate: '+4M +10D'
    /*onSelect: function(dateText, inst) {
            if($('#startDate').val()=="") {
                $('#startDate').datepicker('setDate',dateText +'-3w -6d');
            }
        }*/
    });

    $('#PropertySortBy').change(function() {
        $('#sort_form').submit();
    });

    jQuery.validator.addMethod("dateonly", function(value, element) {
        return this.optional(element) || /^(0[1-9]|1[012])[\/](0[1-9]|[12][0-9]|3[01])[\/]([0-9][0-9])$/i.test(value);

    }, "Date format mm/dd/y");

    jQuery.validator.addMethod("compareout", function(value, element) {
        var f=false;
        if($('#endDate').val()!="") {
            if(compareDates(value,"MM/dd/yy",$('#endDate').val(),"MM/dd/yy")==0) {
                f=true;
            }
        }
        else {
            f=true;
        }
        return this.optional(element) || f;

    }, "check date range");

    jQuery.validator.addMethod("comparein", function(value, element) {
        var f=false;
        if($('#startDate').val()!="") {
            if(compareDates(value,"MM/dd/yy",$('#startDate').val(),"MM/dd/yy")==1) {
                f=true;
            }
        }
        else {
            f=true;
        }
        return this.optional(element) || f;

    }, "check date range");

    jQuery.validator.addMethod("compareto", function(value, element) {
        var f=false;
        if($('input[name=data\\[Property\\]\\[to_rate\\]]').val()!="") {
            if(parseInt(value) <= parseInt($('input[name=data\\[Property\\]\\[to_rate\\]]').val())) {
                f=true;
            }
        }
        else {
            f=true;
        }
        return this.optional(element) || f;

    }, "check rate range");

    jQuery.validator.addMethod("comparefrom", function(value, element) {
        var f=false;
        if($('input[name=data\\[Property\\]\\[from_rate\\]]').val()!="") {
            if(parseInt(value) >= parseInt($('input[name=data\\[Property\\]\\[from_rate\\]]').val())) {
                f=true;
            }
        }
        else {
            f=true;
        }
        return this.optional(element) || f;

    }, "check rate range");

    jQuery.validator.addMethod("currencyonly", function(value, element) {
        return this.optional(element) || /^[0-9]+$/i.test(value);//\.?[0-9]{2}

    }, "Digits only");


    var validator = $("#filtersearch").validate({
        rules: {
            "data[Property][check_in]": {
                    required: false,
                    dateonly: true,
                    compareout:true
                },

                "data[Property][check_out]": {
                    required:false,
                    dateonly: true,
                    comparein:true
                },
            "data[Property][from_rate]": {
                required:false,
                currencyonly: true,
                compareto:true
            },
            "data[Property][to_rate]": {
                required:false,
                currencyonly: true,
                comparefrom:true
            }
        },
        messages: {
            "data[Property][check_in]": {
                    required: " ",
                    dateonly: " ",
                    compareout:" "
                },

                "data[Property][check_out]": {
                    required: " ",
                    dateonly: " ",
                    comparein: " "
                },
            "data[Property][from_rate]": {
                required: " ",
                compareto: " ",
                currencyonly: " "
            },

            "data[Property][to_rate]": {
                required: " ",
                comparefrom: " ",
                currencyonly: " "
            }
        },

        errorPlacement: function(error, element) {
            if ( element.is(":radio") )
                error.appendTo( element.parent().next());
            else if ( element.is(":checkbox") )
                error.appendTo ( element.next() );
            else
                error.appendTo( element.next());
        },
        submitHandler: function(form) {
            form.submit();
        },
        // set this class to error-labels to indicate valid fields
        success: function(label) {
            // set &nbsp; as text for IE
            label.html("&nbsp;").addClass("checked");
        }
    });
});