Rock.Web.UI.Controls.PhoneNumberBox.OnInit C# (CSharp) Method

OnInit() protected method

Raises the E:System.Web.UI.Control.Init event.
protected OnInit ( EventArgs e ) : void
e System.EventArgs An object that contains the event data.
return void
        protected override void OnInit( EventArgs e )
        {
            base.OnInit( e );

            var rockPage = Page as RockPage;
            if ( rockPage != null )
            {
                string script = rockPage.GetSharedItem( "org.RockRMS.PhoneNumberBox.script" ) as string;

                if ( script == null )
                {
                    StringBuilder sbScript = new StringBuilder();
                    sbScript.Append( "\tvar phoneNumberFormats = {\n" );

                    var definedType = DefinedTypeCache.Read( Rock.SystemGuid.DefinedType.COMMUNICATION_PHONE_COUNTRY_CODE.AsGuid() );
                    if ( definedType != null )
                    {
                        var definedValues = definedType.DefinedValues;

                        foreach ( var countryCode in definedValues.OrderBy( v => v.Order ).Select( v => v.Value).Distinct() )
                        {
                            sbScript.AppendFormat( "\t\t'{0}' : [\n", countryCode );

                            foreach( var definedValue in definedValues.Where( v => v.Value == countryCode).OrderBy( v => v.Order))
                            {
                                string match = definedValue.GetAttributeValue( "MatchRegEx" );
                                string replace = definedValue.GetAttributeValue( "FormatRegEx" );
                                if ( !string.IsNullOrWhiteSpace( match ) && !string.IsNullOrWhiteSpace( replace ) )
                                {
                                    sbScript.AppendFormat( "\t\t\t{{ 'match' : '{0}', 'replace' : '{1}' }},\n", match.Replace( @"\", @"\\" ), replace.Replace( @"\", @"\\" ) );
                                }
                            }

                            sbScript.Append( "\t\t],\n" );
                        }
                    }

                    sbScript.Append( "\t};\n" );

                    sbScript.Append( @"

            function phoneNumberBoxFormatNumber( tb ) {
            var countryCode = tb.closest('div.input-group').find('input:hidden').val();
            var origValue = tb.val();
            var number = tb.val().replace(/\D/g,'');
            var formats = phoneNumberFormats[countryCode];
            for ( var i = 0; i < formats.length; i++) {
            var matchRegex = new RegExp(formats[i].match);
            number = number.replace(matchRegex, formats[i].replace);
            }
            if (number != origValue) {
            tb.val(number);
            }
            }

            $('div.phone-number-box input:text').on('change', function(e) {
            phoneNumberBoxFormatNumber($(this));
            });

            $('div.phone-number-box ul.dropdown-menu a').click( function(e) {
            e.preventDefault();
            $(this).closest('div.input-group').find('input:hidden').val($(this).html());
            $(this).closest('div.input-group-btn').find('button').html($(this).html() + ' <span class=""caret""></span>');
            phoneNumberBoxFormatNumber($(this).closest('div.input-group').find('input:text').first());
            });
            " );

                    script = sbScript.ToString();
                    rockPage.SaveSharedItem( "org.RockRMS.PhoneNumberBox.script", script );
                }

                ScriptManager.RegisterStartupScript( this, this.GetType(), "phone-number-box", script, true );
            }
        }