Ext.onReady(function(){
   
Ext.QuickTips.init();
   
Ext.form.Field.prototype.msgTarget = 'side';

   
/* Language chooser combobox  */
   
var store = new Ext.data.ArrayStore({
        fields
: ['code', 'language', 'charset'],
        data
: Ext.exampledata.languages // from languages.js
   
});
   
var combo = new Ext.form.ComboBox({
        store
: store,
        displayField
:'language',
        typeAhead
: true,
        mode
: 'local',
        triggerAction
: 'all',
        emptyText
: 'Select a language...',
        selectOnFocus
: true,
        onSelect
: function(record) {
            window
.location.search = Ext.urlEncode({"lang":record.get("code"),"charset":record.get("charset")});
       
}
   
});
    combo
.render('languages');

   
// get the selected language code parameter from url (if exists)
   
var params = Ext.urlDecode(window.location.search.substring(1));
   
   
if (params.lang) {
       
// check if there's really a language with that language code
        record
= store.data.find(function(item, key){
           
if (item.data.code == params.lang) {
               
return true;
           
}
           
return false;
       
});
       
// if language was found in store assign it as current value in combobox
       
if (record) {
            combo
.setValue(record.data.language);
       
}
   
}

   
/* Email field */
   
var emailfield = new Ext.FormPanel({
        labelWidth
: 100, // label settings here cascade unless overridden
        frame
: true,
        title
: 'Email Field',
        bodyStyle
: 'padding:5px 5px 0',
        width
: 360,
        defaults
: {width: 220},
        defaultType
: 'textfield',

        items
: [
           
{
                fieldLabel
: 'Email',
                name
: 'email',
                vtype
: 'email'
           
}
       
]
   
});
    emailfield
.render('emailfield');

   
/* Datepicker */
   
var datefield = new Ext.FormPanel({
        labelWidth
: 100, // label settings here cascade unless overridden
        frame
: true,
        title
: 'Datepicker',
        bodyStyle
: 'padding:5px 5px 0',
        width
: 360,
        defaults
: {width: 220},
        defaultType
: 'datefield',
        items
: [
           
{
                fieldLabel
: 'Date',
                name
: 'date'
           
}
       
]
   
});
    datefield
.render('datefield');

   
// shorthand alias
   
var fm = Ext.form, Ed = Ext.grid.GridEditor;

   
var monthArray = Date.monthNames.map(function (e) { return [e]; });

   
var ds = new Ext.data.Store({
        proxy
: new Ext.ux.data.PagingMemoryProxy(monthArray),
        reader
: new Ext.data.ArrayReader({}, [
           
{name: 'month'}
       
])
   
});

   
var cm = new Ext.grid.ColumnModel([{
           header
: "Months of the year",
           dataIndex
: 'month',
           editor
: new Ed(new fm.TextField({
               allowBlank
: false
           
})),
           width
: 240
       
}]);

    cm
.defaultSortable = true;

   
var grid = new Ext.grid.GridPanel({
    width
: 360,
    height
: 203,
    title
:'Month Browser',
    store
: ds,
    cm
: cm,
    sm
: new Ext.grid.RowSelectionModel({selectRow:Ext.emptyFn}),

    bbar
: new Ext.PagingToolbar({
            pageSize
: 6,
            store
: ds,
            displayInfo
: true
       
})
   
});
   
    grid
.render('grid');

   
// trigger the data store load
    ds
.load({params:{start:0, limit:6}});
});