text:
Ext.define('Ozone.components.admin.widget.WidgetEditPropertiesTab', {
    extend: 'Ozone.components.PropertiesPanel',
    alias: [
        'widget.widgeteditproperties',
        'widget.widgeteditpropertiestab',
        'widget.Ozone.components.admin.widget.WidgetEditPropertiesTab'
    ],
    widgetTypeStore: null,
    cls: 'widgeteditpropertiestab',
    record: null,
    xhr: null,

    initComponent: function () {
        var me = this;
        var newGuid = guid.util.guid();
        this.widgetTypeStore = Ext.create('Ozone.data.WidgetTypeStore');

        Ext.applyIf(this, {
            layout: 'fit',
            title: 'Properties',
            iconCls: 'properties-tab',
            defaults: {
                labelWidth: 155
            },
            items: [
                {
                    xtype: 'component',
                    itemId: 'descriptorUrlInfo',
                    name: 'descriptorUrlInfo',
                    cls: 'descriptorUrlInfo',
                    renderTpl: '
' +
                        '
{descriptorUrlTitle}
<button class="descriptorUrlInfoIcon" ></button>' +
                        '
',
                    renderData: {
                        descriptorUrlTitle: 'Import App Component from Descriptor URL'
                    },
                    renderSelectors: {
                        iconEl: '.descriptorUrlInfoIcon',
                        titleEl: '.descriptorUrlTitle'
                    },
                    listeners: {
                        afterrender: function (cmp) {
                            // After rendering the component will have an iconEl property
                            cmp.iconEl.on('click', function () {
                                var descriptorUrlInfoMsg = cmp.ownerCt.getComponent('descriptorUrlInfoMsg');
                                if (descriptorUrlInfoMsg.isVisible()) {
                                    descriptorUrlInfoMsg.hide();
                                } else {
                                    descriptorUrlInfoMsg.show();
                                }
                            }, this);

                            Ozone.components.focusable.Focusable.setupFocus(cmp.iconEl, this);
                            //pressing enter on the header toggles collapse
                            new Ext.util.KeyMap(cmp.iconEl, {
                                key: [Ext.EventObject.ENTER],
                                fn: function (key, evt) {
                                    // required for IE, focus goes back to active widget for some reason
                                    evt.stopEvent();

                                    var descriptorUrlInfoMsg = this.ownerCt.getComponent('descriptorUrlInfoMsg');
                                    if (descriptorUrlInfoMsg.isVisible()) {
                                        descriptorUrlInfoMsg.hide();
                                    } else {
                                        descriptorUrlInfoMsg.show();
                                    }
                                },
                                scope: cmp
                            });
                        }
                    }
                },
                {
                    xtype: 'component',
                    itemId: 'descriptorUrlInfoMsg',
                    name: 'descriptorUrlInfoMsg',
                    cls: 'descriptorUrlInfoMsg',
                    hidden: true,
                    html: 'Enter the URL of a App Component Descriptor and click the Load button. App Component data is automatically retrieved from a Web-accessible location. To create the App Component Definition in OWF, click Apply.'
                },
                {
                    xtype: 'urlfield',
                    itemId: 'descriptorUrl',
                    name: 'descriptorUrl',
                    cls: 'descriptorUrlField',
                    allowBlank: true,
                    maxLength: 2083,
                    enableKeyEvents: true,
                    preventMark: true,
                    emptyText: 'https://mycompany.com/appcomponent/descriptor.html',
                    usePlaceholderIfAvailable: false,
                    value: '',
                    rawValue: '',
                    anchor: '100%',
                    listeners: {
                        change: {
                            fn: this.handleDescriptorUrlChange,
                            scope: this
                        },
                        specialkey: {
                            fn: function (field, e) {
                                // e.HOME, e.END, e.PAGE_UP, e.PAGE_DOWN,
                                // e.TAB, e.ESC, arrow keys: e.LEFT, e.RIGHT, e.UP, e.DOWN
                                if (e.getKey() == e.ENTER) {
                                    this.loadDescriptor(this);
                                }
                            },
                            scope: this
                        }
                    }
                },
                {
                    xtype: 'toolbar',
                    dock: 'bottom',
                    itemId: 'descriptorUrlToolbar',
                    name: 'descriptorUrlToolbar',
                    cls: 'descriptorUrlToolbar',
                    ui: 'footer',
                    defaults: {minWidth: 75},
                    items: [
                        {
                            text: 'Don\'t have a descriptor URL?',
                            itemId: 'manualEntryLinkBtn',
                            cls: 'manualEntryLinkBtn',
                            handler: function (btn) {
                                var field = this.getComponent('descriptorUrl');
                                field.setValue("");
                                // Show all major properties.
                                this.showProperties(true);
                                this.getComponent('descriptorUrlErrorMsg').hide();
                            },
                            scope: this
                        },
                        '->',
                        {
                            text: 'Load',
                            itemId: 'descriptorUrlBtn',
                            name: 'descriptorUrlBtn',
                            cls: 'descriptorUrlBtn',
                            margin: 0,
                            disabled: true,
                            handler: function (btn) {
                                var btnText = btn.getText();
                                if (btnText == 'Load') {
                                    this.loadDescriptor(this);
                                } else {
                                    var loading = this.getComponent('descriptorUrlLoading');
                                    var field = this.getComponent('descriptorUrl');
                                    if (this.xhr) {
                                        this.xhr.cancel();
                                    }
                                    loading.hide();
                                    field.enable();
                                    btn.setText('Load');
                                }
                            },
                            scope: this
                        }
                    ]
                },
                {
                    xtype: 'component',
                    itemId: 'descriptorUrlLoading',
                    name: 'descriptorUrlLoading',
                    cls: 'descriptorUrlLoading',
                    hidden: true,
                    html: '
Loading...'
                },
                {
                    xtype: 'component',
                    itemId: 'descriptorUrlErrorMsg',
                    name: 'descriptorUrlErrorMsg',
                    cls: 'descriptorUrlErrorMsg',
                    hidden: true,
                    html: 'Unable to retrieve App Component information. Please check your descriptor and try again.'
                },
                {
                    xtype: 'component',
                    name: 'horizontalRule',
                    itemId: 'horizontalRule',
                    cls: 'horizontalRule',
                    hidden: true,
                    html: '
'
                },
                {
                    xtype: 'component',
                    itemId: 'manualEntryTitle',
                    name: 'manualEntryTitle',
                    cls: 'manualEntryTitle',
                    hidden: true,
                    html: 'Enter App Component Description'
                },
                {
                    xtype: 'hidden',
                    name: 'widgetGuid',
                    itemId: 'widgetGuid',
                    value: newGuid,
                    preventMark: true
                },
                {
                    xtype: 'textfield',
                    itemId: 'name',
                    name: 'name',
                    hidden: true,
                    allowBlank: false,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_displayNameField_blankText,
                    maxLength: 256,
                    emptyText: 'MyAppComponent',
                    usePlaceholderIfAvailable: false,
                    fieldLabel: Ozone.util.createRequiredLabel('Name')
                },
                {
                    xtype: 'textarea',
                    itemId: 'description',
                    name: 'description',
                    hidden: true,
                    allowBlank: true,
                    maxLength: 4000,
                    emptyText: 'Describe the App Component',
                    usePlaceholderIfAvailable: false,
                    fieldLabel: 'Description'
                },
                {
                    xtype: 'textfield',
                    name: 'version',
                    itemId: 'version',
                    hidden: true,
                    allowBlank: true,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_widgetVersionField_blankText,
                    maxLength: 256,
                    emptyText: '1.0',
                    usePlaceholderIfAvailable: false,
                    fieldLabel: 'Version'
                },
                {
                    xtype: 'textfield',
                    name: 'universalName',
                    itemId: 'universalName',
                    hidden: true,
                    allowBlank: true,
                    emptyText: 'MyAppComponent.mycompany.com',
                    usePlaceholderIfAvailable: false,
                    fieldLabel: 'Universal Name'
                },
                {
                    xtype: 'displayfield',
                    fieldLabel: 'GUID',
                    itemId: 'guid',
                    hidden: true,
                    value: newGuid,
                    preventMark: true
                },
                {
                    xtype: 'urlfield',
                    name: 'url',
                    itemId: 'url',
                    hidden: true,
                    allowBlank: false,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_widgetUrlField_blankText,
                    fieldLabel: Ozone.util.createRequiredLabel('URL'),
                    emptyText: 'https://mycompany.com/appcomponent/MyAppComponent.html',
                    usePlaceholderIfAvailable: false,
                    maxLength: 2083
                },
                {
                    xtype: 'urlfield',
                    name: 'headerIcon',
                    itemId: 'headerIcon',
                    hidden: true,
                    allowBlank: false,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_imageUrlSmallField_blankText,
                    maxLength: 2083,
                    emptyText: 'https://mycompany.com/appcomponent/images/containerIcon.png',
                    usePlaceholderIfAvailable: false,
                    fieldLabel: Ozone.util.createRequiredLabel('Small Icon URL')
                },
                {
                    xtype: 'urlfield',
                    name: 'image',
                    itemId: 'image',
                    hidden: true,
                    allowBlank: false,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_imageLargeUrlField_blankText,
                    maxLength: 2083,
                    emptyText: 'https://mycompany.com/appcomponent/images/launchMenuIcon.png',
                    usePlaceholderIfAvailable: false,
                    fieldLabel: Ozone.util.createRequiredLabel('Medium Icon URL')
                },
                {
                    xtype: 'numberfield',
                    name: 'width',
                    itemId: 'width',
                    hidden: true,
                    allowBlank: false,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_widthNumberField_blankText,
                    fieldLabel: Ozone.util.createRequiredLabel('Width'),
                    value: 200,
                    minValue: 200,
                    maxValue: 2000
                },
                {
                    xtype: 'numberfield',
                    name: 'height',
                    itemId: 'height',
                    hidden: true,
                    allowBlank: false,
                    blankText: Ozone.layout.DialogMessages.widgetDefinition_heightNumberField_blankText,
                    fieldLabel: Ozone.util.createRequiredLabel('Height'),
                    value: 200,
                    minValue: 200,
                    maxValue: 2000
                },
                {
                    xtype: 'combobox',
                    name: '_types',
                    itemId: '_types',
                    hidden: true,
                    fieldLabel: Ozone.util.createRequiredLabel('App Component Type'),
                    valueNotFoundText: 'invalid App Component type',
                    forceSelection: true,
                    allowBlank: false,
                    editable: false,
                    store: this.widgetTypeStore,
                    displayField: 'displayName',
                    valueField: 'id',
                    autoSelect: true,
                    queryMode: 'local'
                },
                {
                    xtype: 'checkbox',
                    name: 'singleton',
                    itemId: 'singleton',
                    hidden: true,
                    submitValue: true,
                    fieldLabel: 'Singleton',
                    preventMark: true
                },
                {
                    xtype: 'checkbox',
                    name: 'mobileReady',
                    itemId: 'mobileReady',
                    hidden: true,
                    submitValue: true,
                    fieldLabel: 'Mobile Ready',
                    preventMark: true
                },
                {
                    xtype: 'checkbox',
                    name: 'visible',
                    itemId: 'visible',
                    hidden: true,
                    submitValue: true,
                    checked: true,
                    fieldLabel: 'Visible',
                    preventMark: true
                },
                {
                    xtype: 'checkbox',
                    name: 'background',
                    itemId: 'background',
                    hidden: true,
                    submitValue: true,
                    checked: false,
                    fieldLabel: 'Background',
                    preventMark: true
                },
                {
                    xtype: 'hidden',
                    name: 'intents',
                    itemId: 'intents',
                    value: null,
                    preventMark: true
                }
            ]
        });
        this.addEvents('recordupdated');

        this.callParent(arguments);
        //handle auto-selecting widget type for a new widget
        this.on('afterrender',
            function () {
                // Disable apply button until descriptor load or manual entry mode
                var toolbars = this.getDockedItems('toolbar[dock="bottom"]');
                var applyBtn = toolbars[0].getComponent('apply');
                applyBtn.disable();

                if (this.ownerCt.launchData && this.ownerCt.launchData.id) {
                    this.showProperties(true);
                }
                var widgetType = this.getComponent('_types');
                if (!widgetType.value) {
                    this.widgetTypeStore.load({
                        callback: function () {
                            widgetType.setRawValue(widgetType.store.findRecord('name', 'standard').get('displayName'));
                            me.setWidgetType();
                        }
                    });
                }
            }, this, {
                single: true
            }
        );
    },
    initFieldValues: function (record) {
        var component = this;
        var data = record ? record.data : record;
        this.record = data;
        if (data) {
            var newGuid = (data && data.widgetGuid) ? data.widgetGuid : guid.util.guid();
            var widgetGuid = component.getComponent('widgetGuid'),
                name = component.getComponent('name'),
                description = component.getComponent('description'),
                version = component.getComponent('version'),
                universalName = component.getComponent('universalName'),
                guid = component.getComponent('guid'),
                url = component.getComponent('url'),
                headerIcon = component.getComponent('headerIcon'),
                image = component.getComponent('image'),
                width = component.getComponent('width'),
                height = component.getComponent('height'),
                singleton = component.getComponent('singleton'),
                visible = component.getComponent('visible'),
                background = component.getComponent('background'),
                mobileReady = component.getComponent('mobileReady'),
                widgetType = component.getComponent('_types'),
                descriptorUrl = component.getComponent('descriptorUrl'),
                intents = component.getComponent('intents');

            widgetGuid.setValue(newGuid).originalValue = newGuid;
            name.setValue(data.name).originalValue = data.name;
            description.setValue(data.description).originalValue = data.description;
            version.setValue(data.version).originalValue = data.version;
            universalName.setValue(data.universalName).originalValue = data.universalName;
            guid.setValue(newGuid).originalValue = newGuid;
            url.setValue(data.url).originalValue = data.url;
            headerIcon.setValue(data.headerIcon).originalValue = data.headerIcon;
            image.setValue(data.image).originalValue = data.image;
            width.setValue(data.width).originalValue = data.width;
            height.setValue(data.height).originalValue = data.height;
            singleton.setValue(data.singleton).originalValue = data.singleton;
            visible.setValue(data.visible).originalValue = data.visible;
            background.setValue(data.background).originalValue = data.background;
            mobileReady.setValue(data.mobileReady).originalValue = data.mobileReady;
            if (!descriptorUrl.getValue()) {
                descriptorUrl.setValue(data.descriptorUrl).originalValue = data.descriptorUrl;
            }

            var strIntents = Ext.JSON.encode(data.intents);
            intents.setValue(strIntents).originalValue = strIntents;
            this.setWidgetType();

            //Update the descriptorUrlInfo title and help message for editing an existing widget
            component.getComponent('descriptorUrlInfo').titleEl.dom.innerHTML = 'Update App Component from Descriptor URL';
            component.getComponent('descriptorUrlInfoMsg').update('Click Load to update the App Component. If the App Component file changed since it was added to your instance of OWF, clicking Load will retrieve the latest App Component data. To upload it to your OWF, click Apply.');

            //Enable all the intent CRUD buttons
            var intentsTab = component.ownerCt.down('#intents-tab');
            intentsTab.down('#btnCreate').enable();
            intentsTab.down('#btnEdit').enable();
            intentsTab.down('#btnDelete').enable();
            this.getForm().isValid();
        }

        this.ownerCt.fireEvent('recordupdated', this.record);
    },

    loadDescriptor: function (component) {
        var field = component.getComponent('descriptorUrl'),
            loading = component.getComponent('descriptorUrlLoading'),
            text = Ext.String.trim(field.getValue()),
            btn = component.getComponent('descriptorUrlToolbar').getComponent('descriptorUrlBtn'),
            applyBtn = this.getDockedItems('toolbar[dock="bottom"]')[0].getComponent('apply'),
            manualEntryLinkBtn = descriptorUrlToolbar.getComponent('manualEntryLinkBtn');

        component.getComponent('descriptorUrlErrorMsg').hide();
        field.disable();
        component.showProperties(false);
        loading.show();
        component.xhr = Ozone.util.Transport.getDescriptor({
            url: text,
            onSuccess: Ext.bind(component.updatePropertiesFromDescriptor, component),
            onFailure: function (json) {
                if (component.record) {
                    component.showProperties(true);
                }
                else {
                    manualEntryLinkBtn.show();
                }
                loading.hide();
                field.enable();
                btn.setText('Load');
                component.getComponent('descriptorUrlErrorMsg').show();
            }
        });
        btn.setText('Cancel');
        //Disable the apply button while descriptor is loading
        applyBtn.disable();
    },

    updatePropertiesFromDescriptor: function (data) {
        this.loadedFromDescriptor = true;
        this.showProperties(true);
        var component = this;
        var loading = this.getComponent('descriptorUrlLoading');
        loading.hide();
        var btn = this.getComponent('descriptorUrlToolbar').getComponent('descriptorUrlBtn');
        btn.setText('Load');
        var descriptorUrl = component.getComponent('descriptorUrl');
        descriptorUrl.enable();
        this.loadedDecriptorUrl = descriptorUrl.getValue();
        this.record = data;
        if (data) {
            var newGuid = (data && data.widgetGuid) ? data.widgetGuid : this.generateNewGuid();
            var widgetGuid = component.getComponent('widgetGuid'),
                name = component.getComponent('name'),
                description = component.getComponent('description'),
                version = component.getComponent('version'),
                universalName = component.getComponent('universalName'),
                guid = component.getComponent('guid'),
                url = component.getComponent('url'),
                headerIcon = component.getComponent('headerIcon'),
                image = component.getComponent('image'),
                width = component.getComponent('width'),
                height = component.getComponent('height'),
                singleton = component.getComponent('singleton'),
                visible = component.getComponent('visible'),
                background = component.getComponent('background'),
                mobileReady = component.getComponent('mobileReady'),
                widgetType = component.getComponent('_types'),
                intents = component.getComponent('intents');

            // Only change guid and universalId if this is a new record
            if (!this.ownerCt.recordId) {
                widgetGuid.setValue(Ext.String.trim(newGuid));
                guid.setValue(Ext.String.trim(newGuid));
            }

            // Set the description values
            name.setValue(Ext.String.trim(data.displayName));
            description.setValue(Ext.String.trim(data.description || ""));
            version.setValue(Ext.String.trim(data.widgetVersion || ""));
            universalName.setValue(Ext.htmlEncode(data.universalName) || "");
            url.setValue(Ext.String.trim(data.widgetUrl));
            headerIcon.setValue(Ext.String.trim(data.imageUrlSmall));
            image.setValue(Ext.String.trim(data.imageUrlMedium || data.imageUrlLarge));
            width.setValue(data.width);
            height.setValue(data.height);
            singleton.setValue(data.singleton);
            visible.setValue(data.visible);
            background.setValue(data.background);
            mobileReady.setValue(data.mobileReady);
            intents.setValue(Ext.JSON.encode(data.intents || ""));

            this.record.intents = data.intents || {};

            // Set widget type
            var typeId = data.widgetTypes[0];
            if (!Ext.isNumeric(typeId)) {
                widgetType.setRawValue(widgetType.store.findRecord('name', 'standard').get('displayName'));
                typeId = this.widgetTypeStore.getAt(this.widgetTypeStore.find('name', typeId)).get('id');
            }
            this.getComponent('_types').setValue(typeId);

            // Set title because incoming json won't have this value
            data.title = Ext.String.trim(data.displayName);

            // Set record
            this.ownerCt.record = new Ozone.data.WidgetDefinition(data);
            this.ownerCt.record.phantom = true;

            // Enable the apply button.
            var toolbars = this.getDockedItems('toolbar[dock="bottom"]');
            var applyBtn = toolbars[0].getComponent('apply');
            applyBtn.enable();
        }
        this.getForm().isValid();
        this.ownerCt.fireEvent('recordupdated', this.record);
    },

    showProperties: function (show) {
        var descriptorUrlToolbar = this.getComponent('descriptorUrlToolbar');
        var manualEntryLinkBtn = descriptorUrlToolbar.getComponent('manualEntryLinkBtn');
        manualEntryLinkBtn.hide();

        var component = this;
        var horizontalRule = component.getComponent('horizontalRule'),
            manualEntryTitle = component.getComponent('manualEntryTitle'),
            name = component.getComponent('name'),
            description = component.getComponent('description'),
            version = component.getComponent('version'),
            universalName = component.getComponent('universalName'),
            guid = component.getComponent('guid'),
            url = component.getComponent('url'),
            headerIcon = component.getComponent('headerIcon'),
            image = component.getComponent('image'),
            width = component.getComponent('width'),
            height = component.getComponent('height'),
            singleton = component.getComponent('singleton'),
            visible = component.getComponent('visible'),
            background = component.getComponent('background'),
            mobileReady = component.getComponent('mobileReady'),
            widgetType = component.getComponent('_types');

        if (show) {
            // Enable the apply button.
            var toolbars = this.getDockedItems('toolbar[dock="bottom"]');
            var applyBtn = toolbars[0].getComponent('apply');
            applyBtn.enable();

            horizontalRule.show();
            manualEntryTitle.show();
            name.show();
            description.show();
            version.show();
            universalName.show();
            guid.show();
            url.show();
            headerIcon.show();
            image.show();
            width.show();
            height.show();
            singleton.show();
            visible.show();
            background.show();
            mobileReady.show();
            widgetType.show();
        } else {
            horizontalRule.hide();
            manualEntryTitle.hide();
            name.hide();
            description.hide();
            version.hide();
            universalName.hide();
            guid.hide();
            url.hide();
            headerIcon.hide();
            image.hide();
            width.hide();
            height.hide();
            singleton.hide();
            visible.hide();
            background.hide();
            mobileReady.hide();
            widgetType.hide();
        }
    },
    handleDescriptorUrlChange: function (field, newValue, oldValue, eOpts) {
        var me = this,
            form = this.getForm();
        descriptorUrlToolbar = this.getComponent('descriptorUrlToolbar');
        descriptorUrlBtn = descriptorUrlToolbar.getComponent('descriptorUrlBtn');
        if (!field.changed && field.isDirty()) field.changed = true;
        if (field.isValid() && field.getValue()) {
            descriptorUrlBtn.enable();
        } else {
            descriptorUrlBtn.disable();
        }
    },
    onApply: function () {
        this.validateFields();

        if (!this.getForm().hasInvalidField()) {
            var panel = this;
            var widget = panel.ownerCt;
            var record = null;

            // Collect form values. Can't use this.getValues() because if descriptorUrl is used
            // fields may be disabled.
            var formFields = ['widgetGuid', 'name', 'description', 'version', 'universalName',
                'guid', 'url', 'headerIcon', 'image', 'width',
                'height', 'singleton', 'visible',
                'background', '_types', 'intents', 'mobileReady'];

            var formValues = {};
            for (var i = 0; i < formFields.length; i++) {
                var field = formFields[i];
                var cmp = this.getComponent(field);
                var value = cmp.getValue();
                if (Ext.isEmpty(value) || (cmp.inputEl && cmp.inputEl.hasCls(cmp.emptyCls))) {
                    if (field in ['singleton', 'visible', 'background', 'mobileReady']) {
                        formValues[field] = false;
                    } else {
                        formValues[field] = "";
                    }
                } else if (field == 'intents' && value) {
                    formValues[field] = Ozone.util.parseJson(value);
                } else {
                    formValues[field] = value;
                }
            }

            //If descriptor url was successfully loaded save it, otherwise ignore it so we don't change
            //the record's previous value.
            if (panel.loadedDecriptorUrl) {
                formValues['descriptorUrl'] = panel.loadedDecriptorUrl;
            }

            if (widget.store.data.length > 0) {
                record = widget.store.getById(widget.recordId);
                record.beginEdit();
                for (field in formValues) {
                    record.set(field, formValues[field]);
                }
                record.endEdit();
            }
            else {
                widget.store.add(formValues);
                record = widget.store.data.items[0];
                record.phantom = true;
            }

            var types = [];
            var typeId = formValues['_types'];
            if (!Ext.isNumeric(typeId)) {
                typeId = this.widgetTypeStore.getAt(this.widgetTypeStore.find('name', typeId)).get('id');
            }
            types.push({
                id: typeId,
                name: this.widgetTypeStore.getById(typeId).get('name')
            });
            record.beginEdit();
            // Set title because incoming json won't have this value
            record.set('title', formValues['name']);

            record.set('widgetTypes', types);
            record.endEdit();

            widget.record = record;
            widget.store.on({
                write: {
                    fn: function () {
                        if (Ext.isFunction(panel.initFieldValues)) {
                            panel.showProperties(true);
                            panel.initFieldValues(widget.record);
                        }
                        this.refreshWidgetLaunchMenu();
                    },
                    scope: this,
                    single: true
                }
            });
            widget.store.save();
        }
        else {
            this.showApplyAlert('Invalid field, changes cannot be saved.', 3000);
        }
    },
    setWidgetType: function () {
        var widgetTypeCmp = this.getComponent('_types');
        if (widgetTypeCmp) {
            if (this.record && this.record.widgetTypes) {
                var widgetTypeObj = this.record.widgetTypes[0];
                if (widgetTypeObj) {
                    widgetTypeCmp.setValue(widgetTypeObj.id).originalValue = widgetTypeObj.id;
                }
            }
        }
    },
    generateNewGuid: function () {
        return guid.util.guid();
    }
});

redpajama_set_name: RedPajamaGithub


text:
African American Immigrants Persevere Despite Discrimination and Segregation in Fort Wayne
by Joshua Schipper | Oct 4, 2022 | Uncategorized | 0 comments
The local history of Black citizens in Fort Wayne mirrors the national history of Black Americans. Many persevered through slavery until it was outlawed statewide in 1816. In the decades that followed, they faced legalized segregation, restrictions on immigration and settlement, and fights for access to public education.
The earliest record of African Americans in the area which is now Indiana was in 1746, when five black slaves were documented to belong to French settlers, according to The Indiana Historian. Other sources point to people of African descent with occupations in the military encampments of Fort Wayne starting at the time that Gen. Anthony Wayne was victorious at the Battle of Fallen Timbers and built the city's namesake fort.
Records indicate that, in 1835, African Americans Benjamin and Winifred Jones utilized land grants offered by the government, settling in Allen County. Despite this, they still faced discriminatory litigation, as did their neighbors. According to a report by local historian Marsha E. Smiley, the Jones's had failed to comply with an Indiana act that required Black people immigrating to Indiana to pay a $500 bond to "indemnify them against their becoming public charges."
In 1787, the Congress of the Confederation (the governing body under the Articles of Confederation) adopted the Northwest Ordinance, which prohibited slavery north of the Ohio River. Aspects of the Northwest Ordinance, however, still allowed slavery in this territory under certain circumstances. Therefore, despite its anti-slavery objectives, it was generally ineffective at protecting Black residents from the predations of slaveholders and others.
However, from the moment of statehood in 1816, slavery has been illegal in Indiana. The state Supreme Court upheld this article of the constitution through subsequent lawsuits from slaves still illegally held by slaveholders in the state. While the outlawing of slavery at the birth of the state proved mostly effective, the tides turned on Black settlers a few decades later. With the adoption of the second Indiana constitution in 1851, Black immigration and travel to the state became illegal. Other provisions to restrict Black immigration to Indiana were also adopted.
For example, section two of the 1851 constitutional article reads, "All contracts made with any Negro or Mulatto coming into the State, contrary to the provisions of the foregoing section, shall be void; and any person who shall employ such Negro or Mulatto, or otherwise encourage him to remain in the State, shall be fined in any sum not less than ten dollars, nor more than five hundred dollars."
According to research by Patrick J. Furlong, although Article 13 "was unenforceable during and after the Civil War," it was not formally repealed until 1881. Not only was it repealed, but the provision had been rendered null by the 1868 passage of the Fourteenth Amendment to the federal constitution. This amendment guaranteed Black Americans equal protection under the law. Just one year after this new constitution was adopted, the Indiana General Assembly formed the Indiana Colonization Board. According to a document on the state government website, the board was tasked with providing funds for "free blacks" to emigrate to Liberia in West Africa.
The Indiana Quarterly Magazine of History wrote in 1912 that there had been attempts by the state government throughout the 1860s to secure schools for African American children and the growing population of Black Hoosiers. The author of the article, A. C. Shortridge, lamented that, after an 1869 bill had failed to pass, Black families would have to continue paying for white education through their tax dollars.
"So it looked at the moment as if the black children were doomed to run the streets for another term of two years while their fathers and mothers continued to pay their taxes," Shortridge stated, "by the aid of which children of the more favored race were kept in school ten months of the year."
When legislation failed to pass, Gov. Conrad Baker called an "extra session" of the General Assembly with insistence that Black Hoosiers be allowed to attend Indiana schools. The law passed, and Indiana prepared for a large new addition to its school system.
The writer continued that, in Indianapolis, Black teachers were sought to staff the schools, and white teachers were recruited if no one could be found to fill the positions. Throughout the summer, meetings were held in Black churches to give information to parents and guardians as to what was expected of the students when they entered school. "These meetings were largely attended," Shortridge wrote, "and with much enthusiasm in view of what was soon to occur."
African-American girls playing table tennis and reading at Wheatley Center, 1936. (ACPL Collection)
Roberta Ridley, chair of the African American Genealogical Society of Fort Wayne, says that something people might be surprised to find about local African American history is how many businesses were owned by African Americans. She says that, because of discrimination in both service and employment, businesses run by African Americans for African Americans became a prevelant necessity.
Ridley added that, for a long time, "African Americans who had a collegiate-level education and were qualified to do various professional jobs" were not hired to do those jobs in Fort Wayne. "As time passed, they chose African Americans outside of Fort Wayne, which isn't typical.
"A lot of people that I've talked to who received those degrees had to go elsewhere to utilize that degree and later on returned to Fort Wayne. [It's] pretty sad that you get the collegiate education that's required, you show them that you're able to do it, but right in your own hometown they wouldn't hire you."
Ridley emphasized the importance of learning about local African American history and why it is important to contextualize local historical accounts.
"Quite often people are unaware of the contributions of the African American community to Fort Wayne. And for that matter, what the ground level was for them to actually be here and to be motivated to make Fort Wayne their home because they didn't make it easy. They didn't make it easy when you were qualified educationally, when you were qualified intellectually or skilled but you still can't get a job, you can't own property, your voice is basically not being heard purely because of the color of your skin.
"And when you do the history, and you actually know families and you know that communities that existed and what the individuals sought to create, the you have a different perspective than the assumption that African Americans were incompetent or unable to be employed in specific areas when they were actually being shut out."
Biographies published in the Marsha Smiley Collection at the Allen County Public Library also provide insight into local Black history and Black citizens who have made an impact on Fort Wayne. One biography comes from the obituary of John L. Autry, a professional football player who signed with the Fort Wayne Warriors. He later settled his family in Fort Wayne and became the Administrator Supervisor in the Parks and Recreation Department, with significant contributions made to the Jennings Center.
The namesake of the Jennings Center, Albert G. Jennings, is also featured in the collection. According to records in the collection, the McCulloch Recreational Center flourished under his leadership and became the "hub of recreational and cultural activities in the black community." His impact on the community was so significant that the McCulloch Center was renamed to honor Jennings.
Fort Wayne Colored Giants baseball team 1910s. (ACPL Collection)
In 1959, John Nuckols became the first Black city councilperson in Fort Wayne, serving for 23 years. Since then, numerous Black citizens have served on the city council. Hayden Park in the East Central neighborhood was renamed to honor Nuckols in the 1980s and includes a bust of the councilman sculpted by local artist Hector Garcia. According to The Journal-Gazette, these people include Charles Redd, 1983 to 1991; Cletus Edmonds, 1992 to 1999; and Archie Lunsey 1992 to 1999. Incumbent councilman Glynn A. Hines has served since 1999, and incumbent councilwomen Michelle Chambers and Sharon Tucker took office after their wins in the 2019 election.
John Nuckols, who in 1959 became the first Black city councilperson. He served until 1982, and many Black citizens have served since then. (Joshua Schipper)
Today, Black citizens of Fort Wayne continue to build and influence the culture, community and politics of the city. For example, a group of people organized by the MLK Jr. Club aims to change the name of Calhoun Street in Fort Wayne. They say that because Vice President Calhoun ardently supported for slavery as a "positive good" for both slave and slaveholder, as well has his support for the Indian Removal Act, that the street name should be changed to honor Dr. Martin Luther King Jr.
A painting of John C. Calhoun. A local committee under the MLK Jr. Club organization aims to rename Calhoun Street to honor Dr. Martin Luther King Jr. They point toward Vice President Johhn C. Calhoun's attitude toward slavery and African Americans, among other issues, as reason for the change. (Joshua Schipper)
A local committee under the MLK Jr. Club organization aims to rename Calhoun Street to honor Dr. Martin Luther King Jr. They point toward Vice President Johhn C. Calhoun's attitude toward slavery and African Americans, among other issues, as reason for the change. (Joshua Schipper)
Fort Wayne has begun to memorialize Black history through monuments and the dedication of memorial parkways throughout the city. The Dr. Martin Luther King Jr. Bridge has welcomed southbound traffic to downtown since it opened in 2011. It features images of King, as well as several quotes from the civil rights leader's lifetime. (Joshua Schipper)
In recent decades, moves have been made to honor and remember local Black history and important citizens. The building of the iconic Dr. Martin Luther King Jr. bridge on US-27 memorialized the civil rights leader in 2011. Several streets have been dedicated to local Black leaders, and still more continue to be dedicated in their memory. Many Black citizens have become the leaders of major organizations and businesses throughout Fort Wayne. Although legally oppressed for over two centuries, the contributions of the Black citizens of Fort Wayne have abounded and continue to positively impact the Summit City.
This article is distributed in partnership with the Fort Wayne Media Collaborative, a group of media outlets and educational institutions in Fort Wayne committed to solutions-oriented reporting. More information is available at fwmediacollaborative.com.
Joshua Schipper
Joshua Schipper is a local history author and a reporter for several local newspapers. He published his first book when he was 19, he is working on his second volume: a site-by-site history of city parks in Fort Wayne.

redpajama_set_name: RedPajamaCommonCrawl


Jun 20, 2018 · Nepheline, Nepheline Suppliers and Manufacturers at high efficiency overflow type ball mill. A wide variety of nepheline options are available to you, such as ball mill, circular, and . conchite, nepheline type, eucryptite, studtite grinding mill, mills grinder, pulverizer, ..
The lattice type ball mill is a ore dressing machine which is mainly used in mineral processing, ceramics, chemicals, cement, glass, refractory material and other industries. There are two types of Ball mill: dry type and wet type. The dry type ball mill is mainly used in the industries such as refractory, cement, stone fertilizer and glass.
Overflow type ball mill is a mineral processing machine, mainly used in the fields like ceramics, chemicals, cement, glass,refractory materialand other industries. There are two types of Ball mill: dry type and wet type. The dry type ball mill is mainly used in the industries such as refractory, cement, stone fertilizer and glass.
Energy Saving Iron Ore Coarse Grinding Ball Mill,China Gold Ore Crusher Milling According to the different ways of ore discharge, it can be divided into lattice type and overflow type. Choose the energy-saving ball mill to the great extent.
My company using ball mill as the second stage of grinding usually experiences high mill mass. we are therefore forced to grind out in order to reduce the mill mass. We also experience excessive overflow of materials/feed entering the ball mill from the feed launder. What could be the causes of these problems we are experiencing.
A ball mill is a type of grinding mill, purposed similarly to the sag mill or other . Materials, parts, and mining equipment components must be in top working condition. . The ball mill can be used in the processing of wet or dry materials, as well as .
Ore dressing grinding classification equipment_Henan ball mill. The mineral processing plant equipment widely used is the ball mill and rod mill. In the ball mill, only the lattice type and the overflow type are adopted. Cone. Get Price And Support Online.
Mar 03, 2018 · Supply Cone Mill _ Tapered Cone Mill saving ball mill _ old brand trusted . sell new mill . wet lattice-type ball mill . mill manufacturers of energy-efficient grid .. Industries Spinning Wheel Carding Weaving Machinery 2 pages from Britain at.
ball mill manufacturer/supplier, China ball mill manufacturer & factory list, find qualified Chinese ball mill manufacturers, suppliers, factories, exporters & wholesalers quickly on Made-in-China., page 12 ... Lattice-Type Ball Mill ... The Overflow Type Ball Mill.
Alibaba offers 554 reasonable price ball mill products. About 77% of these are mine mill, 1% are grinding equipment, and 1% are cast & forged. A wide variety of reasonable price ball mill options are available to you, such as paid samples.
dry type ball mill manufacturer/supplier, China dry type ball mill manufacturer & factory list, find qualified Chinese dry type ball mill manufacturers, suppliers, factories, exporters & wholesalers quickly on Made-in-China.
According to their different discharging end, ball mills can be divided into three types: grid type, overflow type, and peripheral discharge type. In practice, peripheral discharge ball mills are rarely used; while grid ball mills and overflow ball mills are commonly adopted.
overflow type ball mill china mineral ball mill grinding . Traffic Light for sale new Grinding Overflow Type Ball Mill of Shandong Xinhai Mining Technology & Equipment Company from China Wet type overflow ball mill is . Read more. Gold Mining Wet Overflow Ball Mill for Sale.
I am trying to plot a 3x3 grid of levelplots which are all on the same color scale with one combined color key. I have found latticeExtra and its ability to override c and combine trellis objects together, with the merge.legends flag. However, when I do this I get multiple color keys.
A ball mill is a type of grinder used to grind and blend materials for use in mineral dressing . In case of continuously operated ball mill, the material to be ground is fed from the left . A ball mill, a type of grinder, is a cylindrical device used in grinding (or mixing) materials like ores, chemicals, ceramic raw materials and paints.
The determination of the sources of copper ore used in the m . The determination of the sources of copper ore used in the manufacture of copper and bronze artifacts of Bronze Age civilizations would add.
Overflow Type Ball Mill , ball mills for mining , ball mill prices. Chat Online. Ceramic Ball Mill. ceramic ball mill of gold ore processing equipment for kaolin, quartz, feldspar of . Tags: Ball Mill Sizing . Ball Mill Slurry Type Ceramic Ball Mill . Ball Mill Theory. Chat Online.
How do I change the location of the strip in a lattice barchart. The strip defaults to the top of the barchart but I would like to move it to the bottom of the barchart. I've tried playing with barchart(..., strip=strip.custom()) but I can't seem to move it at all.
High efficient widely used ball mill sale with large capacity and good price. Add to Compare .. Lattice type used ball mill sale for hematite fine grinding. Get Price Classifier Mill, Classifier Mill Suppliers and Manufacturers ball mill with low cost for hematite . China manufacturer cheap price ball mill and classifier. Add to Compare.
Lattice Semiconductor revolutionized the PLD industry with the development of ISP™, and is now doing it again by offering the most technologically advanced packaging options available. Ball Grid Array (BGA) packages present numerous benefits previously unobtainable in a single packaging technology.


text:
38 LISTS Film Buff StuffLists for every cinephile and "movie guy" on your trivia team.
Hidden Messages You Never Noticed Ambiguous Endings, Explained Fascinating Alternate Endings Unforgivably Pretentious Why the Most Expensive Movies Cost So Much Insane Details You Missed on Your First Viewing Stupid Movie or Brilliant Satire? Happy Endings with Unhappy Consequences Wild Premises That Came True What Your Fave Movie Genre Says About You Wait, Didn't I Already See This? Jokes Hidden in the Closing Credits Please, Never Remake These Films Movies That Don't Need a Hero Movies That Taught Us Something Cool Photos of Abandoned Sets Should Have Ended Two Scenes Earlier The History of Movie Ratings Films Set in Every US State The Worst Movies to Mix Up
Photo: user uploaded image
Total Nerd Complicated Movie Storylines No One Truly Understands
Stephan Roget
List Rules Vote up the films that don't make any sense.
Movies that confuse people are generally thought of as poorly made, but not all baffling movie plots are bad ones. Some screenwriters and directors purposefully attempt to befuddle their audiences, ensuring people need to think through a storyline - or watch it multiple times - before they really "get" the movie.
Some of the greatest films of all time are also the most confusing movies ever made. These can include surrealist classics, non-chronological tales, or adventures that bend the laws of time and space. If a film is well-made, it doesn't necessarily have to be understood to be enjoyed - but that hasn't stopped people from trying to decode them.
Photo: Libra Films International
The Plot: Henry Spencer (Jack Nance) and Mary X (Charlotte Stewart) have a baby, but the child has a disgusting, inhuman appearance. Henry begins to experience visions of a strange planet, Mary leaves, and his non-baby cries incessantly. Eventually, Henry discovers his baby has no skin when he removes its swaddling clothes only to have its organs spill on the floor. The film ends in unexplainable madness.
Possible Interpretations: Director David Lynch refuses to talk publicly about the meaning behind Eraserhead, stating "I like to have people be able to form their own opinion as to what it means and have their own ideas about things... The interpretation of what it's all about has never been my interpretation."
Thus, the world may never know the truth about this movie's plot - though the most popular theories center around it being a commentary on the fear of parenthood.
Directed by: David Lynch
Is this nonsense?
see more on Eraserhead
Cloud Atlas (2012)
Photo: Warner Bros.
The Plot: Six different stories are told in six different periods spanning literal centuries - from 1849 to a post-apocalyptic 2321 - with each cast of characters connected by literature, birthmarks, and possible reincarnation. The individual plotlines are told out of sequence and become intertwined, with the consequences of the characters' actions affecting those in the past, present, and future.
Possible Interpretations: Cloud Atlas can best be understood by ignoring the actors portraying multiple characters and focusing on factors like birthmarks and the pairing of soulmates that point at the real progression of the story - as highlighted by several online infographics. The viewer also has to accept that this narrative causality works both backward and forward in time.
Directed by: Tom Tykwer, Andy Wachowski, Lana Wachowski
see more on Cloud Atlas
The Best Scottish Actors Working Today
Photo: Universal Pictures
The Plot: A woman (Naomi Watts) crashes her car on Mulholland Drive, develops amnesia, and wanders into an apartment belonging to an aspiring actor (Laura Elena Harring) in the Hollywood Hills. The two begin a love affair, while the actor struggles to ignite her career and the amnesiac tries to regain her memories. Their search leads them to a mysterious blue box and the identities of two other women. Then, the plot starts again, with the original women now living the lives of the other two. It all culminates when infidelity drives one of the new women to hire someone to off the other. But when the job is complete, she takes her own life in despair.
Possible Interpretations: Some of the greatest minds in cinema have struggled to make sense of Mulholland Drive's plot, with explanations ranging from it being half-dream, half-reality to a person reimagining their life at its end. Others, like Roger Ebert, settle on "There is no explanation. There may not even be a mystery."
see more on Mulholland Drive
The Best Lifetime Original Movies of 2019
Birdman (2014)
Photo: Fox Searchlight Pictures
The Plot: Riggan Thomson (Michael Keaton), an actor famed for playing a superhero, is experiencing the twilight of his career. He attempts to resuscitate his fame with a role in a play, while simultaneously rebuilding his relationship with his daughter (Emma Stone). Thomson visualizes his superheroic persona throughout the film, and attempts to end his life on stage during the play's opening night - but he survives. Later, Thomson flies out his hospital window into the sky as his daughter watches and smiles.
Possible Interpretations: The theories about Birdman's twist ending seem to fall into two camps - one assumes Riggan Thomson can use his Birdman powers somehow, the other believes he perishes after exiting the window. Depending on which you agree with, the smile on his daughter's face can be interpreted in numerous ways, ranging from optimistic to tragic.
Directed by: Alejandro González Iñárritu
see more on Birdman
The Best Actors in Film History
Filed Under: Films FilmEntertainmentTotal NerdTotal Nerd On Instagram
The Most Overrated Movies of All Time The Best, Funniest Comedy Movie Trailers of 2019 The Best Movies Based on Books The Best Psychological Thrillers of All Time The Funniest '90s Movies 'Old' Movies Every Young Person Needs To Watch In Their Lifetime List of Black Movies, Ranked Best to Worst The Best Alien Movies Ever Made The Most Anticipated Movies of 2019, Ranked The All-Time Greatest Pixar Characters The Best War Movies Ever The Most Rewatchable Movies The Best Living English Actors
top black movies 2018 sister act 2 cast best Joe Rogan Bigfoot podcasts house at the end of the street cast funniest kids movies actors before and after dublin born poet serbian tennis pro novak hackers movie cast chicken run characters


Our Nutrition consultation focuses on understanding your needs and challenges. We assess your current condition taking into consideration, medical history, current medications, allergies, supplementation, lifestyle options, weight gain, weight loss; as well as your expectations and goals; and much more.
Eating a heart - healthy diet and maintaining a heart-healthy weight are vital to the prevention of cardiovascular disease. Our individualized Nutrition counseling and management program provide the support, education and guidance people need to help get healthy foods into their busy schedules, fine-tune eating habits and make exercise a regular part of their lives.
SpectraCell's micronutrient testing offers a unique means to scientifically assess the intracellular requirements of micronutrients that play an important role in overall health and wellness. The tests measure the biochemical function of vitamins, minerals, amino acids and antioxidants.
Revolutionary blood tests that analyze the lymphocytes, the body's long lived, memory-carrying white blood cells that indicate health and disease in the body.


Manufacturer of Food Processing Machinery - Pulper Machine, Emulsifier Mixing Tank, Pickle Mixing Machine and Steam Jacketed Kettle offered by Pharma Tech International, Kolkata, West Bengal.
Find here online price details of companies selling Spice Grinders. Get info of suppliers, manufacturers, exporters, traders of Spice Grinders for buying in India. ... Kolkata. Pune. Chennai Fully Automatic Mix Masala Grinding System, Capacity 1500 kgs/hr ... Commercial Spice Grinder Machine. Dry Grinders. Commercial Wet Grinder.
Grinder Kolkata Spice . Spice Grinder Machine Manufacturer Exporter & Supplier in Kolkata India Sree Durga Engineering Works is a best Manufacturer Exporter & Supplier of Spice Grinder Machine in Kolkata, Spice Grinder Machine Supplier West Bengal, Spice Grinder Machine Manufacturing Company in India.
Alibaba offers 393 Commercial Spice Grinder Suppliers, and Commercial Spice Grinder Manufacturers, Distributors, Factories, Companies. There are 168 OEM, 147 ODM, 38 Self Patent. Find high quality Commercial Spice Grinder Suppliers on Alibaba.
Business listings of Wet Grinders manufacturers, suppliers and exporters in Kolkata, West Bengal along with their contact details & address. Find here Wet Grinders suppliers, manufacturers, wholesalers, traders with Wet Grinders prices for buying.
Business listings of Spice Grinders manufacturers, suppliers and exporters in Kolkata, West Bengal along with their contact details & address. Find here Spice Grinders suppliers, manufacturers, wholesalers, traders with Spice Grinders prices for buying.
price of industrial grinder in kolkata vibrating sieve separator. ... Spice Grinders Manufacturers in India Spice Grinders Suppliers Also offering seed cleaner machines and seed processing plants Kolkata West Bengal exporting Various Business Spices Grinder Plant Kolkata.
Spice Grinder In this industry, our name is renowned as one of the eminent manufacturers and exporters of a wide gamut of Commercial Spice Grinder. Our wide assortment is manufactured by using most advanced technology and premium quality raw materials.


Climate change has been recognized as one of the greatest challenges of the 21st Century. The International Panel on Climate Change (IPCC) has indicated the projected increase of global mean surface temperatures for 2081–2100 relative to 1986–2005 is likely be in the ranges derived from the concentration-driven CMIP5 model simulations, that is, 0.3°C to 1.7°C (RCP2.6), 1.1°C to 2.6°C (RCP4.5), 1.4°C to 3.1°C (RCP6.0), 2.6°C to 4.8°C (RCP8.5).This is likely to be associated with changes to weather patterns and sea-level rise, which will impact on ecosystems, water resources, agriculture, forests, fisheries, industries, urban and rural settlements, energy usage, tourism and health. During the past 50 years, average temperatures have risen by approximately 0.5 to 0.7°C and sea levels have increased by 20 cm within Vietnam (MONRE, 2009). The government of Vietnam is deeply concerned about the consequences of climate change and is committing considerable efforts to better understand these impacts. As part of this, they have introduced the National Target Program to Respond to Climate Change, which requires the development and update of climate change scenarios to provide a basis for impact assessment by ministries, sectors, cities and provinces. In 2009, climate change and sea-level rise scenarios were developed for the whole of Vietnam. A further update of these scenarios is expected by 2015 (MONRE, 2009). A key priority identified by stakeholders was the need to better understand the likely effects of climate change at the local level, since most of the impacts occur at this scale. More localised climate change projections will help identify the people and sectors at risk, and in doing so, will support Vietnam in the challenging task of prioritising its climate change responses. To address this gap, Australia's Agency for International Development (under the Department of Foreign Affairs and Trade, DFAT) has supported the High-resolution Climate Projections for Vietnam project discussed in this report to help refine Vietnam's climate change projections. The project will provide crucial inputs into the next update of the Climate Change and Sea Level Rise Scenarios for Vietnam by providing more detailed climate change projections at 10 km resolution across Vietnam. The project was funded by the Australian Department of Foreign Affairs and Trade (DFAT) under its Research for Development Alliance with the Commonwealth Scientific and Industrial Research Organisation (CSIRO). Delivery partners were the Institute of Meteorology, Hydrology and Environment (IMHEN) and the Hanoi University of Science – Vietnam National University (HUS) in Vietnam and CSIRO in Australia. This publication is the final volume in a series of High-resolution Climate Projections for Vietnam reports. It contains full details of our approach, results and analysis, targeted towards a more technical audience. Part 1 describes the methods used to produce the climate simulations for Vietnam, while Part 2 contains detailed analyses of the projections for seven sub-regions of Vietnam. Other available reports associated with the project are: 	Summary for Policy Makers, developed for the purpose of communicating the climate projection information to a more general audience 	Regional Brochures, which present climate projections for each of the seven regions in Vietnam.
Katzfey, Jack; McGregor, John; Ramasamy, Suppiah. High-resolution Climate Projections for Vietnam: Technical Report. http://www.hpsc.csiro.au/users: CSIRO; 2014. csiro:EP144686.


Isle of Wight Challenge – 19th June 2004.
"Just one…" was the reply.
That was how I found myself at Calshot Spit, on the mainland opposite the Northern tip of the Isle of Wight at 1.30am on a Saturday morning, jumping around in front of the security cameras at Calshot Activity Centre, trying to attract the attention of the security guard who could open the gate to the car park to let the others in.
"You guys must be mad" commented the security guard. I couldn't really argue with his astute observation. Particularly, as I had arranged to borrow a demo P & H Bahiya sea kayak from Bournemouth Canoes, which I had not had time to try out before. Still, what could go wrong with trying a borrowed kayak for the first time at 3am in the morning at the start of a 60 mile circumnavigation?
After packing our boats, checking over group communications, a quick look at route timings, and contacting the Coastguard who also probably thought we were mad, we were afloat by 2.50am. I should have spotted the warning signs when Roger announced that we were "already 20 minutes late and we need to catch it up by the Needles", but at that time in the morning I failed to spot the obvious clues that Roger was ex-military or that he had established a plan with typical military obsession to timings.
It was time to try the Bahiya out, to see whether I'd chosen wisely to use a borrowed boat, rather than my own sea kayak. Thankfully, rumours of the boat being very unstable proved to be slightly exaggerated and the boat and I soon settled into a nice partnership. As well as the Romany sea kayak I own and use regularly, I also own a really unstable hard chined wooden Angmassalik sea kayak which put the rumoured instability of the Bahiya into perspective.
Our first problem was to identify the lateral port bouyage marking the main channel, which indicated to us where the major tidal flow was. "It's that one over there, flashing now… now… now.." said Roger, unaware that there were at least two or three others flashing similarly and naturally each of us in the group was now focussed on different flashing lights. Off each of us went, each convinced we were right, and the others were wrong.
We quickly sorted out our flashing red light problem, then set off together. It felt like we'd set a fantastic pace, but without daylight it was impossible to gauge just how fast we were travelling at. However, our 4am rest stop (no doubt scheduled with military precision) was an opportunity to look at GPS logs, which showed we'd hit nearly 8 knots as we made our way towards the Needles.
The Solent narrows and the tide pick up speed through Hurst Gap, created by a spit of land which extends most of the way across the Solent. Just as we came through the Gap, someone said "wow, look at the sunrise behind us". We turned to look and were greeted by a fantastic blood red sunrise, supposedly forecasting bad weather but looking fantastic.
By approx. 5.30am, we were at the Needles. "Approximately" was clearly not good enough for Roger, who informed us we were 3 minutes behind schedule and if we didn't catch it up by our scheduled breakfast stop, we'd have to knock it off the time allocated to breakfast. Harsh, I thought.
The dreaded tidal overfalls at the Bridge were no where to be seen, so we 'threaded' the Needles – paddling through the gaps between the vertical stacks of rocks that form the needles. The weather couldn't have been better for us at this point, and we were greeted by a double rainbow which had formed over the rock formation.
A moment of calm reflection, i.e. "what the hell am I doing at the Needles at 5.30am on a Saturday morning when I could have been in bed!?", then off again, this time to our breakfast stop location – Freshwater Bay. Obviously a misnomer, as the beach smelt nothing like "fresh" water, still it was 6.30am, I'd been paddling since 3am, and nothing was going to put me off my cooked breakfast! Thankfully, Roger allowed us our full amount of scheduled time, as we'd recovered the three minutes lost by the time we got to Freshwater Bay.
Unfortunately, our departure was delayed by 15 minutes due to the skeg on my boat being jammed by the loose stones from the beach. After some cord had been attached to the thankfully pre-drilled hole in the boat's skeg we were off once again.
From Freshwater, our next obvious destination was St Catherine's Point – familiar to anyone who has obtained an inshore waters weather forecast for the South Coast. Thanks to the earlier sunrise, we could now see our destination approx. 15 miles away from where we were and it looked a long way from where we were.
Thankfully the weather was behaving itself, giving us north-westerly, Force 3-4 winds, with plenty of sunshine, so the journey to St Catherine's Point was a pleasant one. With the assistance of the tide, we'd made the point by approx 10am, hitting the overfalls just as they were coming off their strongest flow. Because the weather was behaving itself, the ride through the overfalls at the point was nothing more than a bumpy ride through small standing waves, which gave a welcome relief to the flat water we'd paddled through so far. Our thoughts immediately turned to spending some time playing, however Roger pointed out that we were 8 minutes behind schedule, so couldn't spare the time…!
We stopped for a short rest and comfort break on a beach just east of St Catherine's Point. As we approached the beach we encountered a small following sea and I was quickly able to use this to my advantage as the P&H Bahiya demonstrated its ability to catch the smallest of waves and track perfectly true whilst surfing.
By now we'd turned towards the North East, and were soon making our way past Ventnor, one of the IoW's big resorts. We'd been paddling for over 7hrs, yet I'm sure people on the beach were only just taking their early morning walks!
From Ventnor, a straight paddle across the large bay that Shanklin and Sandown were located in would take us towards Bembridge, the eastern point of the IoW – a tidal gate, and one that ideally we needed to reach by 12.15pm before the tide started to ebb and run against us. At Bembridge the ebb tide separates into two flows, one heading southwest against us if we hadn't made it, and another flow heading northwest, potentially carrying us further on if we'd made it in time.
Unfortunately, the tide started to turn against us with a couple of miles to go. We knew we had to keep going to get past Bembridge so we hugged the coastline to hopefully catch any assistance from any eddies created by the points extending into the sea. Coming around one such point, we were surprised to find a small overfall much like Penrhynmawr on a really calm day only just after it's started to run. Even more surprising was that this was located about a half mile from a public beach where kids were playing in their cheap inflatable dinghies. As an experienced beach lifeguard the thoughts of an offshore winds, combined with an overfall at one end of the beach made me glad that we weren't hanging around for longer. I wondered how many kids in inflatables had made unplanned runs through the overfalls!
Around 1.30pm we rounded Bembridge Point and landed near to the Bembridge lifeboat station, where Roger reminded us that we had to leave by 2.15pm. We'd found shelter from the wind and shortly after we'd eaten our lunches some of us grabbed a quick snooze whilst others kept the public entertained with tales of how far we'd been and where we'd come from.
Bembridge Point was meant to be a psychological boost, as rounding it meant that we were now heading north west on the last leg of the circumnavigation and back to the beach at Calshot. We were on time, unless you were Roger, in which case we were 8 minutes late, and we only had 15 miles less to do having done 45 miles already.
We set off at 2.20pm, newly fuelled up after our lunches; however it soon became apparent that the final 15 miles was not going to be the easy paddle we'd thought it would. We had to paddle quite a distance offshore to avoid the tidal eddy flow near Ryde working against us; however this meant that we were more exposed to the north-westerly head wind, into which we were now paddling. Although, not an overly strong head wind, paddling into a force four wind after 45 earlier miles was rapidly proving to be difficult. We made slow progress along the north east coast of the Isle of Wight, made all the worse by our final destination being so obviously sign posted by the tower at Fawley Power Station. We knew from the tidal atlases that we only had a limited amount of time before the tide joined the wind in opposing us.
We soon realised that we were not going to achieve our estimated time of arrival at Calshot, it becoming rapidly apparent when we barely made it to the end of Ryde Pier without being run down by either the hovercraft or fast catamaran ferry. We regrouped at the end of the pier realising that we had to devise a new plan to take into account our tiredness, the wind and the tide.
As a group, we knew that we had to rest and sit out the worst of the wind. Looking at the tidal atlases, there was an opportunity for some tidal assistance during the crossing from Cowes to Calshot from 7pm onwards. It was now only 4.30pm, so we headed for the nearest beach to grab some rest and more food. Shortly after landing at the beach, I blinked and woke up 45 minutes later to find everyone else asleep on the beach, clearly the 50 or so miles we'd already paddled was taking it's toll!
Around 5.30pm, I phoned Solent Coastguard to get the latest weather report, which still looked manageable. We set off, determined this time to reach Cowes, and make the crossing back to Calshot. We still had the wind against us and to make matters worse it was joined by rain – the first of the day. We reached East Cowes, just as Cunard decided to join in the sustained attack against us, launching the Aurora and one other large cruise liner to pass within a few hundred metres of our bows as we started the crossing. I don't think you truly realise how big these ships are until you're sat that close to them in a sea kayak as it cruises past you. Jokes about how 'the ship's crew wouldn't even notice the little 'speed bumps' we were in as they ran in to us' rang through the group. The laughter soon abated as we refocused on our destination, Calshot.
The final crossing was uneventful, being nothing more than a slog through the wind and tide to get back to Calshot. We arrived at Calshot at 8.20pm – 56 nautical miles and 17 hours 30 minutes after starting. We'd succeeded in our objective of paddling around the Isle of Wight in one day, and the sense of accomplishment combined with the sense of relief that it was over was fantastic! And, just for the record, Roger did not tell us how many minutes we were late to Calshot by!
Throughout the trip, the P & H Bayiha that I had borrowed performed extremely well. The boat tracked well and proved to be a fast sea kayak. Whilst we weren't out to set records that day, the speed of the Bahiya allowed me to paddle very efficiently which definitely assisted me to complete the whole paddle.
· Phil's parents who acted as support crew, circumnavigating the island by car in case we needed assistance.
· Calshot Activity Centre for allowing us to use their car park.
Graham Beckram, 'Bertie..' to his friends, lives in a small village close to the Dorset coastline. By day he is an office boy in Dorset's 'Big City' - Bournemouth, but when not working he is an aspirant Level 5 sea coach, Level 4 inland, sea and surf coach, and a member of Weymouth Canoe Lifeguards and Poole Harbour Canoe Club. When not working or kayaking, he spends his time repaying his brownie point debt to his wife.
Roger Hiley, by day a farrier, but by night clearly a time-obsessed maniac who should never be allowed to look at a watch again.
And finally...Phil, who took time out from his busy schedule of sailing around the world in various tall ships, to join us.


To the Leadership of the Parliament of the World's Religions - We commend to you Friend Robert ("Sunfire") Kazmayer, who is a member of the Easton Meeting of the Religious Society of Friends (a meeting within New York Yearly Meeting) and a member of New York Yearly Meeting's Earthcare Working Group.
Sunfire has shared with New York Yearly Meeting his leading to attend the 2015 Parliament of the World's Religions, October 15-19, 2015, in Salt Lake City, Utah. This leading has grown out of his conviction, expressed to us, that all of the world's spiritual leaders have a vital role in combating the hatred that is tearing the world apart. He has noted the call of the Parliament's leadership to "all faith communities to move against violence and hate," and that this call is in harmony with Quaker testimony since the start of our movement in the seventeenth century.
We look forward to hearing a report from him about the 2015 Parliament and trust that what he brings to us will help us work with other faith communities to achieve the world of peace that we seek.


Late June, writers from all over the country met in Pasadena, CA, for the California Crime Writers Conference--a joint effort between the Southern California chapters of Sisters in Crime and Mystery Writers of America. Dozens of panels to choose from, high-quality speakers, and the comradere of fellow writers made the weekend worth every penny.
In which way has the conference helped you the most - tangibly (facts, techniques, contacts) or intangibly (inspiration, support)?
A good conference benefits the writer in many ways. You learn, you relearn, you're invigorated, you're humbled. You reconnect with old friends and meet new ones. That's all part of the appeal, whether you've just decided to begin writing, you're shopping your latest novel or any point in between. And, as has often happened to me, I found some of the most helpful information came from the least likely source.
Note: The elusive Jackie Houchin takes many of the pictures for our blog. We will capture her on camera...eventually.
I chose the "Learning the Craft" track because it fit what I am interested in. No, I haven't written any crime fiction since the junior detective series I wrote for my grandchildren ten years ago. But I do review mystery and thriller books, so I wanted to learn from the professionals what makes a terrific best-seller.
The tips I learned in these two sessions will help me better understand and review the next crime or suspense novel I read...if I can just remember to apply them.
I have to say that the information she gave on marketing was the most valuable concrete information I received at the conference because she was talking about steps I can take today to get my "brand" out to people so they will be interested by the time my book comes out.
Everyone inspired me in one way or another--the speakers with useful information, the other attendees with their stories and eternal optimism. I learned long ago that mystery writers are a close community, always willing to encourage and share tips. I highly recommend that writers get out of their cloistered writing rooms and step into this conference in two years when it is offered again.
Got the IWOSC notice about your new group blog. Looks like your having fun. I look forward to checking in again.


Yuma Risk Management Group, LLC provides insurance coverage for employees to businesses in Yuma, Foothills, Somerton, San Luis, Wellton, Phoenix, and surrounding areas.
Your business is a multifaceted machine that requires protection at every level. The people who make your business go deserve the assurance that they are covered at all costs. At Yuma Risk Management Group, LLC, we understand that quality coverage options for your employees will ensure that your business attracts and maintains the best workers.


your ability to provide services?
Are manual processes impacting your ability to provide services?
Social Service Programs administered by non-profit organizations and the types of funding organizations they work with use different processes and systems for managing cases, participants, outcomes, and other requirements. Outdated IT and case management systems can exacerbate the complications caused by a network of care and funders that rely on multiple processes and systems—many of which are manual and paper-based. This results in duplication of effort and errors. Worse, it can negatively impact the level of care and outcomes.
Client-focused. Client intake, assessments, and personalized action plans improve client service and experience.
Data-driven. Baseline and milestone data provide outcomes to funders and trends to improve program and service performance.
Flexible. A robust, flexible framework supports a wide variety of programs, supporting rapid onboarding of new services while providing program-specific workflows and data collection requirements.
Powered by the security of Microsoft Dynamics 365, Social Services Case Management is transparent and contains reporting functionality to meet all administrative and financial oversight procedure requirements. Additionally, security at each step can be locked down to suit the needs of a particular organization's processes and help them comply with HIPAA and other privacy requirements.
Operations. Improve provider and partner relations and better manage funding with self-service portals and relationship insights, as well as accessible and informative reporting. Monitor and manage workloads and time spent to improve operational efficiency and team sizes.
Front Desk. Streamline client interactions with global appointment management and visibility, as well as client fee and balance tracking. Route and manage requests for internal and external services.
Intake. Standardized and extensive intake data provides valuable milestones for measuring outcomes throughout service. Flexible processes and checklists allow lines of business to collect as much or as little intake data as is applicable to their services.
Client and Case Management. Collaborate with other case managers to define a collective action plan for personal growth. Shared client data allows all service providers the most complete information possible to improve understanding and better tailor services.
This webcast details how case management solutions designed with Microsoft Dynamics bridge the gap in the network of care to help HHS agencies.


text:
Q: How can I get a variable of a class from an abstract class? if I have an abstract class and a class that extends it, how can I get variable of the class that extends it to the class that is extended, something like this:
abstract class A {
    void getVariable () {
        //get *variable* from class B and print it out
    }
}

class B extends A {
    int variable = 5;
}

A: You cannot access variable field from child class directly but you can do like this
abstract class A {
   abstract int getVariable ();

   void anotherMethod() {

       System.out.println("Variable from child: " + getVariable());
   }
}

class B extends A {
    int variable = 5;

    @Override
    int getVariable() {
        return variable;
    }
}

A: Forget about variables: What you might inherit and override is behaviours (=methods). Try this:
abstract class A {
    protected abstract int getVariable ();
}

class B extends A {
    private int variable = 5;
    protected int getVariable ()
    {
        return variable;
    }
}

class C extends A {
    protected int getVariable ()
    {
        return 0; // This class might decide not to define its own variable.
    }
}

A: variable is only known to class B. Its superclass A has no knowledge of it. If you move variable to the superclass A and don't mark it private, then you can access it from B.

redpajama_set_name: RedPajamaStackExchange


text:
Bonnie J. Smith
March 5, 1944 - November 16, 2016
Bonnie J. Smith, age 72, of Carpentersville passed away un-expectedly on Wednesday, November 16, 2016 at her home. Bonnie was born on March 5, 1944 in Chicago and was the daughter of the late James & Eva Robertson. On March 28, 1987 Bonnie... View Obituary & Service Information
The family of Bonnie J. Smith created this Life Tributes page to make it easy to share your memories.
Bonnie J. Smith, age 72, of Carpentersville passed away un-expectedly...
Send flowers to the Smith's family.
Miller Funeral Home: (847) 426-3436
Obituaries Flowers & Gifts What We Do About Us Grief & Healing Resources Plan Ahead Contact Us Coronavirus Notice
© 2021 Miller Funeral Home - Funeral Home Website Design by funeralOne


Tungsten Rings are the most wear-resistant available on the planet. Tungsten is about 10 times harder than 18K Gold, 5 times harder than tool steel, and 4 times harder than titanium. Due to their extreme hardness, Our Tungsten Rings will hold their shape and shine longer than any ring on the market . This tungsten ring is scratch resistant and four times harder than titanium. This jewellery piece features a highly polished finish with a KOA design.


Changes to the UK pharma industry's Code of Practice are to be introduced as part of pan-European reforms to make dealings with healthcare professionals more transparent.
The UK's industry association the ABPI and the self-regulatory body the PMCPA have just published a consultation on a series of amendments and additions to the existing Code.
However the European changes are not the only spur for the consultation – proposals for amendments have also arisen from work done by a group established by the ABPI Board to review the Code.
Finally, there is a third source of proposed amendments: changes to UK law aimed at reducing red tape will also need the industry Code to be updated.
The changes at European level are based on a new pan-European Code agreed by industry organisations on 6 June, and co-ordinated by Europe's industry association, EFPIA.
The new regulations go by the title of 'Code on Disclosure of Transfers of Value from Pharmaceutical Companies to Healthcare Professionals and Healthcare Organisations' and correspond closely with US regulations known as the Physician Payment Sunshine Act. The new European rules centre on detailed disclosure of payments to doctors and other healthcare professionals – and are ultimately aimed at clearing up suspicions of inappropriate payments to doctors from the industry.
Among the many proposed amendments are a few significant ones which reflect the growing use of electronic marketing. Amendment 31 proposes supplementary information added to Clause 9.9 of the ABPI Code relating to prior permission for a promotional phone call, webchat or online call.
It suggests permission must be obtained in these circumstances, and full details of the company the caller will represent, their role and the purpose of the call must also be supplied in advance. Arrangements made to discuss a specific product should be adhered to.
There has been a tightening-up on stationery branded with the names of companies and drug brands in recent years, and this will now be updated to reflect the new EFPIA Code.
Clause 18.3 Notebooks, Pens and Pencils will be amended to make clear that any pens and pads provided in conference bags at third-party organised events must not include the names of the donor companies, the name of any medicine or any information about medicines.
One of the changes arising from the UK reviews is an easing of the paperwork needed for pharma in joint working projects with the NHS.
The ABPI's Review Group says this change will help ease the certification burden without affecting the quality of such agreements.
Pharmaceutical companies are increasingly offering services to the UK's health service, in an effort to meet the needs of their customers above and beyond the supply of medicines.
The UK review has suggested amendments aimed at clarifying the rules around these services – either directly or indirectly related to the medicines supplied.
The ABPI says services linked to the use of specific medicines can be provided under the rules laid out in Clause 18.1 of the Code.
On services not directly related to their medicines, the ABPI says an example might be the provision of a smoking cessation service linked to the purchase of a medicine for COPD.
It continues that for products not covered by NICE, AWMSG or SMC guidance/guidelines, relevant independent guidelines from a national medical organisation such as a royal college can be used as a basis for providing product related services.
Whatever the nature of the services proposed, the ABPI makes it clear that the development of guidance/guidelines from a national medical organisation must not be funded by a pharmaceutical company, and must support high quality clinical care.
The new European rules mean that a new central platform for disclosing payments will be established. UK companies must use this platform, and not their own websites, and must also use a template supplied by the PMCPA. All of the relevant documents and templates can be found here.
The proposed amendments were sent to ABPI members and other relevant stakeholders on 11 July, and the consultation will run until Friday 5 September.
The outcome of the consultation will then be reviewed by the ABPI Board of Management in October and the ABPI Half-Yearly General Meeting in November, with the new Code coming into force on 1 January 2015.


text:
Home › Y: The Last Man Omnibus
Y: The Last Man Omnibus
Brian K. Vaughn's classic 60-issue post-apocalyptic series is now available in this new omnibus.
WINNER OF THREE EISNER AWARDS. A WORLD WITHOUT MEN... In 2002, the world changes forever. Every man, every boy, every mammal with a Y chromosome everywhere on Earth suddenly collapses and dies. With the loss of nearly half the planet's population, the gears of society grind to a halt, and a world of women are left to pick up the pieces and try to keep civilization from collapsing entirely. The "gendercide," however, is not absolutely complete. For some unknown reason, one young man named Yorick Brown and his pet male monkey, Ampersand, are spared. Overnight, this anonymous twentysomething becomes the most important person on the planet--the key, it is hoped, to unlocking the secret of the mysterious sex-specific plague. For Yorick himself, the most important person on the planet is 10,000 miles away--and he will stop at nothing to find her. In setting off across the post-male landscape, however, man and monkey are about to learn just how valuable they are--both as a prize and as a target. Collected for the first time in a single, comprehensive omnibus, writer Brian K. Vaughan and artist Pia Guerra's Eisner Award-winning Vertigo series Y: The Last Man brings to vivid life the age-old speculation: What would really happen to the last man on Earth? Collects Y: The Last Man #1-60 and a sketchbook featuring behind-the-scenes art by Pia Guerra.
WATCHMEN (1986-1987) #1-12 COMPLETE SET BUNDLE
LOVE & ROCKETS LIBRARY JAIME GN VOL 02 GIRL FROM HOPPERS
SANDMAN TP BOOK 03 (direct marked edition)
SANDMAN TP BOOK 04 (direct market edition)
LOVE & ROCKETS LIBRARY GILBERT JAIME MARIO GN AMOR COHETES


Unique guest house in beautiful barn conversions combining traditional buildings with contemporary style in Somerset. Situated close to Longleat Estate and Safari Park in Somerset UK.
A one bedroomed self catering cottage situated in a car free conservation area in one of the oldest parts of Frome.
5 star self catering cottages and holiday homes available in the Somerset countryside. 10 properties available, sleeping from 2 to 22 people.


Brigittenau is the 20th district of Vienna and is located between the Danube and the Danube Canal. Brigittenau is astonishingly good connected with the other districts, not only because of 25 bridges, busses, tramway lines and the subway lines U4 and U6, but also very good reachable by car. The dynamic building development of the district led to a distinct population increase (in 2015: 85,525 citizens) and, thus, to a rise in the demand for living space. As a result, there arose also one of two very important city development zone on the area of the former railway station Nordwestbahnhof which has a size of 44 hectare (the other city development zone is on the former railway station Nordbahnhof). There is planned to arise a new part of town with living space for 12,000 people and 5,000 jobs (amongst others by building new education institutions).
In total, there are 2,102 residential buildings in the 20th district, 827 of them were built before 1919 and 289 after 1991. The highest building of the district is the "Millenium Tower" with a height of 202m. The building offers a shopping centre, a cinema and gastronomy area, apartments, offices and retail space. The average living space in Brigittenau is approx. 61m² and, thus, 30m² per head. The average purchase price is around € 4,321/m² and the rental price is approx. 15.85/m².
The 20th district offers a few distinct tourist attractions: The Nussdorf Weir and waterways lockage with the famous lion pylons, the Rivergate (a modern office complex, which feature is the astonishing architecture and the received certification "LEED Platin") and the church Brigittakirche which is built from 1866 to 1873 in the neo-Gothic style. In Brigittenau, there is also the accident hospital Lorenz Böhler which enhances the medical tourism. The close proximity to the Danube and Danube Canal offers Natural Recreation Areas with numerous cycle paths.


text:
Kaiserhof Restaurant
Manufacturer: Bauscher Brothers
User: Kaiserhof Restaurant
Notes: This small sauce boat was used at the Kaiserhof Restaurant located at 242-244 Nicollet Avenue in Minneapolis, Minn.
According to the book, Minnesota Eats Out: An Illustrated History, by Kathryn Koutsky, Linda Koutsky and Eleanor Ostman, the grand restaurant opened circa 1900. The building facade and interior were designed in the American Beaux-Arts style, with a "Renaissance-style coffered ceiling, molded plaster details with garlands of flowers, and grand windows [that] were reminiscent of a French chateau or an Italian palazzo."
By 1915, the Kaiserhof site at 244 Nicollet Avenue had been taken over by dry-goods business merchant Jacob Deutsch.
Minnesota Eats Out: An Illustrated History, by Kathryn Koutsky, Linda Koutsky & Eleanor Ostman, published by Minnesota Historical Society, 2003
Minnesota, Its Story and Biography, by Henry Anson Castle, published by Lewis Pub. Co., 1915, pp. 1316-1317
White body, topmarked by a gray-black crowned, spread-winged eagle with a shield-shaped body, above an ornate banner with the word "Kaiserhof" and the word "Minneapolis" beneath.


If your legs swim in the shaft (top part) part of boots, you can always have them taken in. An old school shoe repair person can do this for you. The process is similar to tailoring clothes.
The above pair of boots were modified to narrow the shaft by Gino at Anthony's Shoe Service, Union Square, San Francisco. Well worth the $80 cost of getting a perfect boot, calf fit.
If you have trouble finding boots that fit snug, a talented shoe repair person, can be your new best friend. Ask around, chances are there is just such a person in your City or Town.
Special thanks to patient, reader and author Dan for asking me to highlight common "Shoe Fallacies". I usually only think about these when I hear them, which isn't every day, so I am going to outline them in lists as they arise. Here's shoe fallacy post #1.
There is one brand of shoe that will always work for you each and every time. No. No. No. Is there one manufacture of clothing that works for every body type? No. No. No. The same goes for shoes. If one pair of Nike doesn't fit right, that doesn't mean that every pair of Nike won't fit right. Conversely, If you have one pair of New Balance running shoes that fit perfectly, it doesn't mean that every pair of New Balance shoes will fit perfectly.
Non-career shoe salespeople care about your feet. Usually, what they care about is their commission, which in San Francisco hovers around 6%. So, be your own best advocate. Buy with minimal help from a salesperson. Sale racks (Nordstrom to Bloomingdales), big box stores (Costco) and those help yourself shoe stores (Payless, Shoe Pavilion, DSW). I'm not saying that all shoe salespeople are in it for the money, but c'mon, 6%, what does that tell you?
I wear down the outsides of my heels – What's wrong with me? Rest assured, everyone, wears down the outside of their heels. This is normal. This is why taps are usually placed on the outside of the heels. What isn't normal is when one heel wears faster than the other creating asymmetrical wear.
The more expensive the shoe, the better fitting or longer lasting it will be. I've seen $15 dollar shoes from K-Mart fit better and last longer than exclusive boutique $400 pair of shoes. The adage you get what you pay for, doesn't always apply, especially when it comes to shoes.
I'm always on the lookout for men's narrow running shoes. Searching through Zappos.com I found the New Balance 645 running shoes and the Brooks Infiniti running shoes for a patient of mine. Both have narrow outsoles with the New Balance being slightly narrower overall than the the Brooks.
Next comes the upper. The New Balance toebox is deep, whereas the Brooks toebox is shallow which was exactly what I was looking for.
I also like the Brooks Infiniti because it has a firm medial (grey) outsole. The Brooks Adrenaline (not shown) is similar in upper design, but will be much less long lasting because of its softer the outsole.
The only downside with the Infiniti? The price tag. $124 on Zappos. com. I usually prefer a more affordable running shoes (Asics 2130), but if this is your foot, then it's probably worth it to you. Especially given how difficult shopping for a well fitting running shoe can be.
I was helping a runner find a new running shoe for her narrow shallow feet. Her old running shoes were Nike Air Zoom and fit her to a "T".
The problem? Her perfectly fitting running shoes were discontinued and she was forced to buy the men's version, which were similar, but much too wide for her narrow foot.
Armed with Zappos.com multi-view feature, I found two pair of potential replacement running shoes, both in a size 10.
Once again, even though both shoes were made by Nike and both shoes were sized 10, they were not the same length. The Katana Cage was easily 2 sizes shorter in the toe box and one size shorter in heel to ball measurement than the Air Refresh+. The Air Refresh+ on the other hand was proportional and fit perfectly, just like the original Air Zoom's.
If you've got a very narrow, shallow foot, the Air Refresh+ is a great shoe for you. It's also got the + technology, so grab your iPod Nano and go for a refreshing run!
Running shoes are made shock absorptive by the use of ethyl vinyl acetate (EVA). Outsole EVA and midsole EVA can range from firm to soft. This shoe came it today where the firm EVA outsole wore through to the softer EVA outsole underneath.
Firm EVA on the outsole is a great way to prolong the life of shoe, however if applied thinly, it won't withstand wear for very long.
Once you wear through into the soft EVA in the outsole, the structure of the heel will quickly deteriorate.
If you ever wear running shoes, be sure to monitor your shoes outsole wear.
Dave's right, Puma's are lightweight but they are very narrow and shallow.
These images show two similarly designed shoes. Saucony are the deepest and widest, but the Asics are still better than the very shallow, narrow Puma, both in depth and outsole width. Just like the Puma, Saucony and Asics are also affordable.
Fortunately, most designers make similar styles, so if you've got your heart set on a certain style don't despair, just try another manufacturer.


This intensive program thoroughly covers a wide range of areas. The courses are based on real life situations!
in2bar works alongside you, observes your daily operations for a period of time, then, will structure and implement the necessary procedures requisite to improving your business and its income.
Roberto Gonzalez is the director of in2bar. He has for the past 20 years worked on perfecting knowledge for the effective governing of bar businesses.