﻿function isValidDate(val) {
    return (val.search(/^((((0?[1-9]|[12]\d|3[01])[\.\-\/](0?[13578]|1[02])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|[12]\d|30)[\.\-\/](0?[13456789]|1[012])[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|((0?[1-9]|1\d|2[0-8])[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?\d{2}))|(29[\.\-\/]0?2[\.\-\/]((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00)))|(((0[1-9]|[12]\d|3[01])(0[13578]|1[02])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|[12]\d|30)(0[13456789]|1[012])((1[6-9]|[2-9]\d)?\d{2}))|((0[1-9]|1\d|2[0-8])02((1[6-9]|[2-9]\d)?\d{2}))|(2902((1[6-9]|[2-9]\d)?(0[48]|[2468][048]|[13579][26])|((16|[2468][048]|[3579][26])00)|00))))$/gi) != -1)
}

function changeCode() {
    document.images["imgCaptcha"].src = "/captcha.ashx?xyz=" + (Math.random() * 100);
    return false;
}

function onOrganzationSelected(name, id) {
    var jsonResult = eval("(" + id + ")");
    $("#CompanyName").val(name);
    $("#CompanyNameCheck").val(name);
    $("#OrganizationId").val(jsonResult.organizationId);
    
    if (jsonResult.locationId != '0') {
        $("#CountryId").val(jsonResult.locationId);
        $("#CountryId").attr('disabled', 'disabled');
        $("#CompanyLocationId").val(jsonResult.locationId);                
    }
    if (jsonResult.industryId != '0') {
        $("#IndustryId").val(jsonResult.industryId);
        $("#IndustryId").attr('disabled', 'disabled');
        $("#CompanyIndustryId").val(jsonResult.industryId);
    }
}

var Register = {
    init: function(registerOptions) {
        $(function() {
            Register._init(registerOptions);
        });
    },

    _init: function(registerOptions) {
        $('#CompanyName').bind('blur', function() {
            if ($(this).val() != $('#CompanyNameCheck').val()) {
                $('#IndustryId').removeAttr("disabled");
                $('#CountryId').removeAttr("disabled");
                $("#OrganizationId").val("");
            }
        });

        $('#CompanyName').autocomplete({
            serviceUrl: registerOptions.organizationUrl,
            minChars: 2,
            maxHeight: 400,
            width: 'auto',
            queryParam: 'searchText',
            params: { maxSuggest: 10 },
            deferRequestBy: 200, //miliseconds
            onSelect: onOrganzationSelected
        });

        jQuery.validator.addMethod("validDate", function(value, element) {
            var month = $("#Month").val();
            var year = $("#Year").val();
            if ((value == '0') || (month == '0') || (year == '0') || isValidDate(value + '/' + month + '/' + year))
                return true;
            else
                return false;
        }, '');

        jQuery.validator.addMethod("passwordConfirm", function(value, element) {
            var password = $("#Password").val();
            if (value != password || value == '')
                return false;
            else
                return true;
        }, '');

        $("#frmRegister").validate({
            rules: {
                Password: {
                    minlength: registerOptions.minlength
                }
            },
            messages: {
                Title: {
                    required: ""
                },
                FirstName: {
                    required: ""
                },
                LastName: {
                    required: ""
                },
                Day: {
                    required: "",
                    validDate: ""
                },
                Month: {
                    required: ""
                },
                Year: {
                    required: ""
                },
                EmailAddress: {
                    required: "",
                    email: ""
                },
                CompanyName: {
                    required: ""
                },
                IndustryId: {
                    required: ""
                },
                JobTitle: {
                    required: ""
                },
                CountryId: {
                    required: ""
                },
                Sex: {
                    required: ""
                },
                Password: {
                    required: "",
                    minlength: "Least 6 characters."
                },
                ReTypePassword: {
                    required: ""
                },
                Captcha: {
                    required: ""
                }
            }
        });
    }
}
