﻿function editContent(div){
    Ext.getDom('contentHeader').contentEditable='false';
    Ext.getDom('contentHeader').style.border='none 0';
    Ext.getDom('contentBody').contentEditable='false';
    Ext.getDom('contentBody').style.border='none 0';
    Ext.getDom('contentFooter').contentEditable='false';
    Ext.getDom('contentFooter').style.border='none 0';
    Ext.getDom(div).contentEditable='true';
    Ext.getDom(div).style.border='dashed 1px #007495';
}

function removeLabel(t){
    var element = Ext.get(t);
    if(element) element.removeClass('label');
    return true;
}

Ext.ns('Master','Browser','Content');

Content.Init = function(){}

var noteWindow;
var newsIndex = 0;

function showNews(h,b,t){
	if(noteWindow){
        noteWindow.setTitle(h);
        noteWindow.body.update('<div id="message-window-content">' + b + '</div>');
        noteWindow.syncShadow();
        noteWindow.show(t);
    } else {
       noteWindow = new Ext.Window({
            title: h,
            collapsible: true,
            maximizable: true,
            layout: 'fit',
            width: 920,
            closeAction: 'hide',
            plain: true,
            html: '<div id="message-window-content">' + b + '</div>',
            bodyStyle: 'padding:8px;',
            autoScroll: true,
            y: 100,
            listeners: {
                move: function(w,x,y){
                    if(y < 0) w.setPagePosition(x,0);
                }
            }
        });
        noteWindow.show(t);
    }
}

Content.Panel = {    
    region: 'center',
    contentEl: 'center',
    id: 'contentContainer'
    
};

Ext.onReady(function() {
    
    Ext.state.Manager.setProvider(new Ext.state.CookieProvider());

    var input = Ext.get('username');
    if(input) if(input.getValue().length==0) input.addClass('label');
    input = Ext.get('password');
    if(input) if(input.getValue().length==0) input.addClass('label');
    input = Ext.get('la_premise');
    if(input) if(input.getValue().length==0) input.addClass('label');
    input = Ext.get('la_postcode');
    if(input) if(input.getValue().length==0) input.addClass('label');
    
    if(showEast){
        Master.NewsPanel = Ext.extend(Ext.DataView, {
            autoHeight: true,
            frame:true,
            cls:'news',
            itemSelector: 'dd',
            overClass: 'over',
            tpl : new Ext.XTemplate(
                '<div id="all-news">',
                '<div id="news-ct">',
                '<dl>',
                    '<tpl for=".">',
                        '<tpl if="Type == 4">',
                            '<dd id="{Type}:{ID}">',
                                '<div><p class="news-date">{Class}</p><p class="news-subject">{Subject}</p><p class="news-strap">{Strapline}</p></div>',
                            '</dd>',
                        '</tpl>',
                    '</tpl>',
                '<div style="clear:left"></div></dl></div></div>'
            ),
            onClick : function(e){
                var t = e.getTarget('dd', 5, true);
                var id = t.getAttributeNS('', 'id');
                Master.showMessageWindow(id,t);
                return Master.NewsPanel.superclass.onClick.apply(this, arguments);
            }
        });
    
        Master.newsStore = new Ext.data.Store({
            proxy: new Ext.data.HttpProxy({
                url: 'ajax/Handler.ashx?action=GetInbox'
                ,method: 'GET'
            })
            ,reader: new Ext.data.XmlReader(
                {
                    record: 'Message'
                    ,id: '@id'
                }
                ,[
                    {name: 'ID', mapping: '@id',type:'int'}
                    ,{name: 'Type', mapping: '@typeid',type:'int'}
                    ,{name: 'Subject'}
                    ,{name: 'Strapline', mapping: 'Summary'}
                    ,{name: 'Content'}
                    ,{name: 'Date', mapping: '@created',type:'date',dateFormat:'c'}
                    ,{name: 'RequiresAcknowledgement', mapping:'@requiresacknowledgement',type:'boolean'}
                    ,{name: 'IsAcknowledged', mapping:'@isacknowledged',type:'boolean'}
                    ,{name: 'Class'}
                ]
            )
            ,sortInfo: {
                field: "Date"
                ,direction: "DESC"
            }
            ,autoLoad: true
        });
    
        Master.setMessage = function(r){
            var dateString = '';
            var type = r.data['Type'];
            Master.noteWindow.body.applyStyles(type=='SplashScreen'?'padding:0;':'padding:12px;');
            Master.noteWindow.setSize(type=='SplashScreen'?720:460,'auto');
            if(r.data['Date']) dateString = ' [' + r.data['Date'].format('d/m/Y') + ']';
            Master.noteWindow.setTitle(r.data['Subject'] + dateString);
            Master.noteWindow.body.update('<div id="message-window-content">' + r.data['Content'] + '</div>');
            Master.buttonPreviousNews.setDisabled(newsIndex==0);
            Master.buttonNextNews.setDisabled(newsIndex==Master.newsStore.getCount()-1);
            var buttonRead = Ext.getCmp('buttonRead');
            if(buttonRead){
                buttonRead.toggle(r.data['IsAcknowledged']=='true');
                buttonRead.setDisabled(type!='SplashScreen');
            }
            Master.checkWindowHeight(Master.noteWindow);
        };
        
        Master.buttonPreviousNews = new Ext.Button({
            text: 'Newer Item'
            ,iconCls: 'icon-next'
            ,disabled: newsIndex==0
            ,handler: function(){
                var r = Master.newsStore.getAt(--newsIndex);
                Master.setMessage(r);
            }
        });
        
        Master.buttonNextNews = new Ext.Button({
            text: 'Older Item'
            ,iconCls: 'icon-previous'
            ,disabled: newsIndex==Master.newsStore.getCount()-1
            ,handler: function(){
                var r = Master.newsStore.getAt(++newsIndex);
                Master.setMessage(r);
            }
        });
    
        Master.checkWindowHeight = function(w){
            var vph = Master.Viewport.getSize().height - 200;
            if(w.getSize().height > vph) w.setHeight(vph);
            w.syncShadow();
        };
    
        Master.showMessageWindow = function(id,t){
            var type = id.split(':')[0];
            var mid = id.split(':')[1];
            Master.newsStore.suspendEvents();
            Master.newsStore.filter('Type',type);
            Master.newsStore.resumeEvents();
            var i = Master.newsStore.findBy(function(r,i){
                return (r.data['ID']==mid&&r.data['Type']==type);
            });
            newsIndex = i;
            var r = Master.newsStore.getAt(i);
            if(Master.noteWindow){
                Master.setMessage(r);
                Master.noteWindow.show(t);
            } else {
                var dateString = '';
                if(r.data['Date']) dateString = ' [' + r.data['Date'].format('d/m/Y') + ']';
                Master.noteWindow = new Ext.Window({
                    title:r.data['Subject'] + dateString,
                    collapsible:true,
                    maximizable:true,
                    layout:'fit',
                    width: type=='SplashScreen'?920:460,
                    bodyStyle: type=='SplashScreen'?'padding:0;':'padding:12px;',
                    height: 'auto',
                    plain: true,
                    html: '<div id="message-window-content">' + r.data['Content'] + '</div>',
                    autoScroll: true,
                    constrainHeader: true,
                    hideMode: 'offsets',
                    closeAction: 'hide',
                    y: 100,
                    listeners: {
                        hide: function(w){
                            Master.newsStore.suspendEvents();
                            Master.newsStore.clearFilter();
                            Master.newsStore.resumeEvents();
                        },
                        resize: Master.checkWindowHeight
                    },
                    tbar:[
                        '->'
                        ,Master.buttonNextNews
                        ,Master.buttonPreviousNews
                        ,'-'
                        ,{
                            id: 'buttonClose'
                            ,text: 'Close'
                            ,iconCls: 'cancel'
                            ,handler: function(){
                                Master.noteWindow.hide();
                            }
                        }
                    ]
                });
                Master.noteWindow.show(t);
            }
        };
    
        Master.newsPanel = new Master.NewsPanel({
            store: Master.newsStore
        });
    } else {
        Master.newsPanel = new Ext.Panel({
            border: false
        });
    }

    Master.panelInbox = new Ext.Panel({
        id: 'news-panel'
        ,region: 'east'
        ,width: showEast?275:0
        ,margins: '6 0 6 9'
        ,autoScroll: true
        ,border: false
        ,items: [
            Master.newsPanel
        ]
    });
 
    //Create our layout
    Master.Viewport = new Ext.Panel({
        cls: 'vp',
        renderTo: 'mainViewport',
        layout:'border',
        border: false,
        monitorResize: true,
        defaults: {
            collapsible: false,
            split: false,
            border: false
        },
        listeners: {
            render: function(p){
                var h = Math.max(
                    Ext.get('west').getHeight(),
                    Ext.get('center').getHeight() + 175,
                    Ext.lib.Dom.getViewHeight(true)
                )
                p.setHeight(h);
                var w = Math.max(
                    1000,
                    Ext.lib.Dom.getViewWidth(true)
                )
                p.el.setWidth(w);
                Ext.get('north').removeClass('x-hide-offsets');
                Ext.get('west').removeClass('x-hide-offsets');
                Ext.get('center').removeClass('x-hide-offsets');
                Ext.get('south').removeClass('x-hide-offsets');
            }
        },
        items: [
            
                {    
                    region: 'west',
                    contentEl: 'west',
                    width: 202
                },
                {    
                    id: 'regionHolder',
                    region: 'center',
                    layout: 'border',
                    margins: '-6 12 0 22',
                    defaults: {
                        collapsible: false,
                        split: false,
                        border: false
                    },
                     items: [
                              Content.Panel,
                              Master.panelInbox
                           ]    
                },
                {
                    id: 'headerBanner'
                    ,region: 'north'
	                ,height: _headerHeight
	                ,margins: '12 12 12 225'
                    ,bodyStyle: 'background: #CC0033 url(../img/tmgroup-banner-background.gif) no-repeat top right;'
                    ,layout: 'border'
                    ,defaults:{
                        border: false
                    }
                    ,items: [
                                {
                                    region: 'north'
                                    ,height: 141
                                    ,margins: '0 0 5 0'
                                    ,bodyStyle: 'background:#CC0033 url(../img/tmgroup-banner1.jpg) no-repeat top left;'
                                }
                                ,{
                                    region: 'center'
                                    ,id: 'form-main-toolbar'
                                    ,bodyStyle: 'background: transparent url(../img/main-toolbar-login.gif) no-repeat top left;text-align:center;'
                                    ,layout: 'column'
                                    ,autoWidth: true
                                    ,defaults: {
                                        layout: 'form'
                                        ,layoutConfig: {
                                            labelWidth: 50
                                            ,labelSeparator: ''
                                        }
                                        ,border: false
                                        ,height: 29
                                        ,bodyStyle: 'background-color:transparent;padding-top:4px;'
                                        
                                    }
                                    ,items: [{
                                        width: 125
                                        ,html:'&#0160;'
                                        ,bodyStyle: 'background-color:transparent;'
                                    }
                                    
                                    ,{
                                        id: 'usernamePanel'
                                        ,width: 250
                                        ,items: [{
                                            xtype:'textfield'
                                            ,labelStyle: 'background:url(../img/main-toolbar-username.gif) no-repeat 100% 4px;'
                                            ,id: 'username'
                                            ,fieldLabel: '&nbsp;'
                                            ,stateful: true
                                            ,stateEvents: ['valid','blur']
                                            ,getState: function() {
                                                return {value: this.getValue()};
                                            }
	                                        ,width: 140
                                            ,enableKeyEvents: true
	                                        ,listeners: {
	                                            keydown: function(tf,e){
	                                                if(e.keyCode == 13) Ext.getCmp('main-toolbar-button-ok').fireEvent('click',null);
	                                            }
	                                        }
                                        }]
                                    },{
                                        id: 'passwordPanel'
                                        ,width: 270
                                        ,items: [{
                                            xtype:'textfield'
                                            ,labelStyle: 'background:url(../img/main-toolbar-password.gif) no-repeat 100% 4px;'
                                            ,inputType:'password'
                                            ,id: 'password'
                                            ,fieldLabel: '&nbsp;'
	                                        ,width: 160
                                            ,enableKeyEvents: true
	                                        ,listeners: {
	                                            keydown: function(tf,e){
	                                                if(e.keyCode == 13) Ext.getCmp('main-toolbar-button-ok').fireEvent('click',null);
	                                            }
	                                        }
                                        }]
                                    },{
                                        id: 'okPanel1'
                                        ,width: 50
                                        ,bodyStyle: 'background-color:transparent;padding-left:10px;padding-top:6px;'
                                        ,items: [{
                                            xtype:'button'
                                            ,id: 'main-toolbar-button-ok'
                                            ,cls: 'mt-button-ok'
	                                        ,iconCls: 'main-toolbar-button-ok'
	                                        ,listeners: {
	                                            click: function(){
	                                                Ext.get('hdnusername').dom.value = Ext.getCmp('username').getValue();
	                                                Ext.get('hdnpassword').dom.value = Ext.getCmp('password').getValue();
	                                                Ext.get('loginContainer').dom.submit();
                                                }
	                                        }
                                        }]
                                    }                                    
                                    ]
                                }
                            ]
                }
                ,
                {    
                    region: 'south',
                    height: 52,
                    items: [
                                {
                                    region: 'north'
                                    ,html:'<div valign="left" align="center"><p style="font-family:helvetica;font-size:0.5em;letter-spacing:0.05em;"><b>Google analytics:</b> So that we can continue to provide the best possible service, we use Google Analytics on our websites. Click here to see the terms of use:<a style="color:blue;cursor:hand;" onclick="javascript:win1.show();">Disclaimer Google Analytics</a></p></div>'
                                }
                                ,
                                {
                                    region: 'center',
                                    contentEl: 'south'
                                }
                           ]  
                                
                }
                 
        ]
    });   
    
    new Ext.ux.Menu('navigationMenu', {
        direction: 'vertical',
        minWidth: 192
    });
    
    Ext.EventManager.onWindowResize(function(w,h){
            var ph = Math.max(
            Ext.get('west').getHeight(),
            showEast?Ext.get('news-panel').getHeight() + 140:0,
            Ext.get('center').getHeight() + 175,
            Ext.lib.Dom.getViewHeight(true)
        )
        resethomepageHeight();
        Master.Viewport.setHeight(ph);
    });
    
    Ext.EventManager.onDocumentReady(function(w1,h1)
        {
          resethomepageHeight();  
        }
    );
    
    function resethomepageHeight(){
        if (document.location.pathname=='/Home.aspx' || document.location.pathname=='/' || document.location.pathname=='/TMOSS/Home.aspx')
            {
                  var md=Ext.getCmp('contentContainer');
                    if(md){
                        var mdbody = md.body;
                        var h=mdbody.getHeight();
                        var offh=-2;
                        if(h>580) offh=h-645;
                        if(offh<-2) offh=-2;
                        if(offh>0) offh=0;
                        
                        mdbody.setStyle('background-position','center '+offh+'px')
                        Ext.get('contentBodyHomePage').setHeight( h+"px");
                        
                    }
            }     
    
    } 
    
    Content.Init();
    Ext.getCmp('username').getValue()==''?Ext.getCmp('username').focus():Ext.getCmp('password').focus(); 
});

 