/**
 * @author dave
 */
Ext.BLANK_IMAGE_URL = 'EXT/resources/images/default/s.gif';
Ext.ns('HCF');

Ext.onReady(function() {
    
    Ext.QuickTips.init();

	var topMenu = Ext.get('top-module').dom.innerHTML;

    new Ext.Viewport({
        layout: 'border',
		id: 'viewport',
		monitorResize: true,
        items: [{
			region:'north',
            xtype: 'box',
            el: 'header',
            autoHeight: 150
        },{
			region: 'west',
			id: 'left-pane',
			width: 200,
			frame: true,
			fill: true,
			defaults: {bodyStyle:'padding:5px'}, 
			items:[new Ext.FormPanel({
				layout: 'form',
				id: 'emailForm',
		        labelAlign: 'top',
		        title: 'Sign up for our Newsletter',
		        bodyStyle:'padding:5px 5px 0',
				method: 'POST',
		        items: [{ 
                    xtype:'textfield',
					id: 'emailField',
                    fieldLabel: 'Email Address',
                    name: 'email',
					vtype: 'email',
                    anchor:'95%'
				}],
				buttons: [{
					text: 'Submit',
					handler: function(){
						Ext.getCmp('emailForm').getForm().submit({
							url: 'saveEmail.php',
							success: function(){
								Ext.getCmp('emailField').reset();
								Ext.Msg.alert('Welcome','You are now signed up for our Newsletter!');
							}							
						});
					}
				}]
			}),{
				title: 'Main Menu',
				contentEl: 'left'
			}]
		},{	
            region:'center',
			id: 'content-pane',
			layout: 'fit',
			fill: true,
			frame: true,
			minWidth: 600,
			autoScroll: true,
			defaults: {bodyStyle:'padding:5px'}, 
			items:[{
				xtype: 'panel',
				id: 'article-pane',
				title: topMenu,
				autoScroll: true,
				contentEl: 'MiddleCol'
			}]
        },{
            region:'south',
            frame: true,
			border: true,
			height: 60,
			items:[{
				contentEl: 'footer'
			}]
        }],
        listeners: {
            render:function(){
                setTimeout(function(){
                    Ext.getCmp('viewport').doLayout();
                }, 100);
            }
        }
    });

	var grid = new Ext.grid.GridPanel({
		title: "Hill Country Fitness Class Schedule",
		id: 'schedule-grid',
		loadMask:true,
        store: new Ext.data.GroupingStore({
			url:  '../getSchedule.php',
			sortInfo:{field: 'date', direction: "ASC"},
			reader: new Ext.data.JsonReader({
			root: 'events',
            	fields: [
                	{name: 'category'},
                	{name: 'order'},
					{name: 'date'},
					{name: 'title'},
					{name: 'start'},
					{name: 'end'}
				]
			}),

            groupField:'date'
	}),
	columns: [
		{header: "Date", dataIndex: 'date', hidden:true},
		{header: "", sortable: true, dataIndex: 'title'},
		{header: "Start",sortable: true, dataIndex: 'start'},
		{header: "End", sortable: true, dataIndex: 'end'}
	],
    view: new Ext.grid.GroupingView({
		forceFit: true,
		groupTextTpl: '{text} ({[values.rs.length]} {[values.rs.length > 1 ? "Classes" : "Class"]})'
    }),
	tbar: [{
		xtype: 'tbbutton',
		text: 'Print Schedule',
		icon: '/images/page_white_acrobat.png',
		iconCls: 'button-icon',
		handler: function(){
			window.open('http://www.hillcountryfitness.com/images/pdfs/master_schedule.pdf')
		}
	}],
	frame:false,
	animCollapse: false,
	autoFill: true
});

	var descriptionsPanel = new Ext.Panel({
		title: 'Class Descriptions',
		frame:true,
		layout: 'fit',
		contentEl: 'descriptions'
	});

	var schedulePanel = new Ext.Panel({
        layout: 'border',
        height: 400,
		defaults: {bodyStyle:'padding:5px'},
		autoWidth: true,
		items:[{
            region:'west',
			width:200,
            autoScroll: true,
            items: [descriptionsPanel]
        },{
            region:'center',
            layout: 'fit',
            items: [grid]
        }]
    });
	// Page Class Suffix is set to _sched in Joomla Menu settings.  Let's look for this
	// before trying to render the schedule grid or load the store
	var scheduleHeader = Ext.select('h1.componentheading_sched');

    if (scheduleHeader.elements.length > 0){
		scheduleHeader.set({style: 'display: none'});
        schedulePanel.render('articlepage');
        grid.store.load();
    }

});

