$ = jQuery context = window context.JK ||= {}; context.JK.SiteValidator = class SiteValidator constructor: (site_type) -> @EVENTS = context.JK.EVENTS @rest = context.JK.Rest() @site_type = site_type @input_div = $(".site_validator#"+site_type+"_validator") @data_input = @input_div.find('input') this.show_format_status() @logger = context.JK.logger @site_status = null @spinner = @input_div.find('span.spinner-small') @checkmark = @input_div.find('.validate-checkmark') init: () => this.renderErrors({}) @spinner.hide() validator = this @data_input.bind 'blur', -> if validator.show_format_status() validator.validate_site() @data_input.bind 'focus', -> validator.show_format_status() data_to_validate: () => url = @data_input.val() if 0 < url.length url.substring(0,2000) else null show_format_status: () => data = this.data_to_validate() yn = true if data && 'url' == @site_type regexp = /(http|https):\/\/(\w+:{0,1}\w*@)?(\S+)(:[0-9]+)?(\/|\/([\w#!:.?+=&%@!\-\/]))?/ yn = regexp.test(this.data_to_validate()) if yn @checkmark.show() else @checkmark.hide() yn validate_site: () => @site_status = null @spinner.show() @checkmark.hide() @rest.validateUrlSite(this.data_to_validate(), @site_type) .done(this.processSiteCheck) .fail(this.processSiteCheckFail) processSiteCheck: (response) => @spinner.hide() if 'Valid Site' == response.message @site_status = 'valid' this.renderErrors({}) else @site_status = 'invalid' this.renderErrors(response) @logger.debug("site_status = "+@site_status) processSiteCheckFail: (response) => @spinner.hide() @checkmark.hide() @logger.error("site check error") @site_status = 'invalid' renderErrors: (errors) => errdiv = @input_div.find('.error') if errmsg = context.JK.format_errors("site", errors) @checkmark.hide() errdiv.show() errdiv.html(errmsg) else @checkmark.show() errdiv.hide() errdiv.html('')