	Ext.UpdateManager.defaults.loadScripts = true;        

	var logindlg;

	Xsn.settings = {};

    function submitFailure(o,b){alert('HTTP connection error!')};

    function Page(){
        var layout;
		var addressbookdlg, statusdlg, newdlg, opendlg, maildlg, statusdlg, panel, openConfirmDlg, statisticsdlg;
		var mailbtn, closebtn, loading;		

		var addNewsletterPanel = function(config){

			var r = layout.getRegion('center');
			r.clearPanels();

			r.titleEl.show();

			panel = new Xsn.NewsletterPanel(layout.getEl().createChild({tag:'div'}), config);
			panel.on('ready', function(p){
				layout.getRegion('center').getActivePanel().setTitle('Nieuwsbrief: ' + p.getNewsletter().getTitle());
				if (p.getNewsletter().mode == 'new' || p.getNewsletter().saveAs) opendlg.refresh();
				Page.mask.onLoad();
				mailbtn.enable();				
				//closebtn.enable();
				loading = false;
			}, this);
			
			layout.add('center', panel);

		}
		
		this.init = function(){
			Ext.QuickTips.init();
		    Ext.Ajax.method = 'POST';		    
		    Xsn.BbEditor.init();

			Page.mask = new Ext.LoadMask(document.body, 'Bezig met laden...');

         	logindlg = new LoginDialog();
			logindlg.on('login', onLogin, this);
			logindlg.on('loggedout', function(){
				window.location.href = 'index.php?action=logout';							
			}, this);

			logindlg.authorize();
		}

		var onLogin = function(){
			logindlg.un('login', onLogin, this);  
			load.defer(50);
		}

		var onLogout = function(){
		 	Ext.MessageBox.confirm('Uitloggen', 'Weet u zeker dat u wilt uitloggen ? (Eventuele wijzigingen in een openstaande nieuwsbrief zijn automatisch opgeslagen.)', function(btn){
				if (btn == 'yes') window.location.href = 'index.php?action=logout';							
			}, this);
		}

        var load = function(){
			Ext.get('loading').remove();
			Page.mask.onBeforeLoad();

			newdlg = new Xsn.NewNewsletterDialog();			
			newdlg.on('new', function(id){
				Ext.MessageBox.prompt('Naam', 'Onder welke naam moet de nieuwsbrief worden opgeslagen:', function(btn, text){
					if (btn != "cancel"){
					 	loading = true;
						newdlg.hide();
						Page.mask.onBeforeLoad();
						addNewsletterPanel.defer(50, this, [{mode:'new', template_id: id, title:text, closable:true}]);
					}
				},this); 	
			}, this);
			
			opendlg = new Xsn.OpenNewsletterDialog();
			opendlg.on('open', function(id, name){
			 	loading = true;
				
				if (openConfirmDlg) openConfirmDlg.destroy(true);
				
  				openConfirmDlg = new Ext.BasicDialog('xsn-open-msg-box', {
                    autoCreate : true,
                    shadow: true,
                    draggable: true,
                    resizable:false,
                    title: 'Nieuwsbrief openen',
                    constraintoviewport:false,
                    fixedcenter:true,
                    collapsible : false,
                    shim:true,
                    modal: true,
                    width:525, height:100,
                    buttonAlign:"center"
                });
                openConfirmDlg.addKeyListener(27, openConfirmDlg.hide, openConfirmDlg);
                openConfirmDlg.addButton('Openen', function(){
					opendlg.hide();
					openConfirmDlg.hide();																				
					if (!layout.getRegion('center').getActivePanel() || layout.getRegion('center').getActivePanel().getNewsletter().id != id){
						Page.mask.onBeforeLoad();
						addNewsletterPanel.defer(50, this,[{id: id, closable:true}]);
					}
				}, this);
				
                openConfirmDlg.addButton('Opslaan onder nieuwe naam', function(){
					Ext.MessageBox.show({
		                title : 'Opslaan als...',
		                msg : 'Geef een naam waaronder u deze nieuwsbrief wilt opslaan:',
		                buttons: Ext.MessageBox.OKCANCEL,
		                fn: function(btn, text){
		                 	if (btn == 'ok' && text != ''){
								Page.mask.onBeforeLoad();
								addNewsletterPanel.defer(50, this,[{id: id, title: text, saveAs: true, closable:true}]);
								opendlg.hide();																								
							} else if (btn == 'ok' && text == '') Ext.MessageBox.alert('Opslaan als...', 'U moet een naam opgeven.');
						},
		                value: name,
		                minWidth:250,
		                scope : this,
		                prompt:true,
		                multiline: null
		            });
					openConfirmDlg.hide();																							            						
				}, this);
				
                openConfirmDlg.body.createChild({
                    tag:"div",
                    html:'<span class="ext-mb-text">Wilt u deze nieuwsbrief openen of eerst opslaan onder een nieuwe naam?</span>'
                });

				openConfirmDlg.show();

			}, this);
			
			opendlg.on('updatetitle', function(id, title){
			 	if (panel && panel.getNewsletter().id == id){
					panel.getNewsletter().setTitle(title);			 	 
					layout.getRegion('center').getActivePanel().setTitle('Nieuwsbrief: ' + panel.getNewsletter().getTitle());
				}
			}, this);
			
			opendlg.on('beforedelete', function(id){
			 	return (!panel || panel.getNewsletter().id != id);
			}, this);			
			
			/*
			opendlg.on('ready', function(){
				Page.mask.onLoad();
				if (!panel && !loading){
				 	if (opendlg.isEmpty()) newdlg.show();
				 	else opendlg.show();
				}
			}, this);
			*/
			
         	addressbookdlg = new Xsn.AddressbookDialog();
         	addressbookdlg.on('transfer', function(records){
				maildlg.addContacts(records);
				addressbookdlg.hide();				
			},this);

         	addressbookdlg.on('groupschange', function(){
				maildlg.refresh();
			},this);
			
			maildlg = new Xsn.MailDialog();

			maildlg.on('send', function(){
				statusdlg.show(1);
				panel.getHistoryGrid().getDataSource().reload();
			}, this);
			
			maildlg.on('addcontact', function(){
				addressbookdlg.show(true);
			}, this);

			
			statusdlg = new Xsn.StatusDialog()			
			statisticsdlg = new Xsn.StatisticsDialog();			
			
			layout = new Ext.BorderLayout(document.body, {
			    north: {
			        split:false,
			        titlebar:false, 
			        initialSize: 65,
			        autoScroll:false
			    },
			    center: {
			        margins: {top:4,bottom:5,right:5,left:5},   
					fitToFrame: true,
					hidden:true,
	                closable:true,					
					hideWhenEmpty: true
				}
			});

			layout.getRegion('center').on('panelremoved', function(region, panel){
					region.titleEl.hide();				
					mailbtn.disable();
					maildlg.reset();
					//closebtn.disable();	
			}, this);

			Ext.QuickTips.register({target: layout.getRegion('center').closeBtn, title: 'Nieuwsbrief sluiten', text: 'Eventuele wijzigingen zijn automatisch opgeslagen.'});

			var menuPanel = layout.getEl().createChild({tag:'div', id:'header'});				
			var toolbarsPanel = menuPanel.createChild({tag:'div', id:'header-toolbars'});		
			var headerBodyPanel = menuPanel.createChild({tag:'div', id:'header-bd'});		

			var tbWrapper = new Ext.Toolbar(toolbarsPanel);
			var toolbarPanel1 = toolbarsPanel.createChild({tag:'div', id:'header-titlebar'});
			var tb = new Ext.Toolbar(toolbarPanel1);

			tb.addSeparator();

			tb.addText('Ingelogd als: ' + logindlg.getUserName() + ' ');

			Ext.get(Ext.get(tb.addSpacer().getEl()).dom.parentNode).setStyle('width', '100%');

			if (Xsn.settings.statistiek){
				tb.addButton({cls:'x-btn-text-icon statistics-btn', text: 'Statistiek', handler: function(){
					statisticsdlg.show();				
				}, scope:this, tooltip: 'De statistieken bekijken.'});
	
				tb.addSeparator();
			}
			
			tb.addButton({cls:'x-btn-text-icon status-btn', text: 'Status', handler: function(){
				statusdlg.show();				
			}, scope:this, tooltip: 'De mailing en import status overzichten bekijken.'});

			tb.addSeparator();

			tb.addButton({cls:'x-btn-text-icon logout-btn', text: 'Uitloggen', handler:onLogout, scope:this, tooltip: 'Uitloggen. (Een eventuele openstaande nieuwsbrief is automatisch opgeslagen).'});


			var toolbarPanel2 = toolbarsPanel.createChild({tag:'div', id:'header-toolbar'});

			var tb = new Ext.Toolbar(toolbarPanel2);
			tb.addButton({cls:'x-btn-text-icon newsletter-new-btn', tooltip: 'Een nieuwe nieuwsbrief aanmaken aan de hand van een te kiezen template.', text: 'Nieuw', handler: newdlg.show, scope: newdlg });
			tb.addButton({cls:'x-btn-text-icon newsletter-open-btn', tooltip: 'Een bestaande nieuwsbrief openen.', text: 'Openen', handler: opendlg.show, scope:opendlg});

			/*
			closebtn = tb.addButton({cls:'x-btn-text-icon newsletter-close-btn', tooltip: 'De geopende nieuwsbrief sluiten. (Eventuele wijzigingen zijn automatisch opgeslagen.)', text: 'Sluiten', handler: closeNewsletter, scope:this});
			closebtn.disable();
			*/
			
			tb.addSeparator();

			mailbtn = tb.addButton({cls: 'x-btn-text-icon mail-btn', tooltip: 'Een nieuwe nieuwsbrief-mailing aanmaken.', text: 'Verzenden',handler: function(){
				maildlg.show(panel.getNewsletter());				
			}, scope:this});
			mailbtn.disable();
						
			tb.addSeparator();
			tb.addButton({cls:'x-btn-text-icon addressbook-btn', tooltip:'Het adresboek openen.', text: 'Adresboek', handler: function(){
				addressbookdlg.show(false);				
			}, scope:this});
			
			layout.beginUpdate();
			layout.add('north', new Ext.ContentPanel(menuPanel, {toolbar:tbWrapper, resizeEl: headerBodyPanel, fitToFrame:true, autoScroll:false}));
			layout.endUpdate();

			Page.mask.onLoad();
			//Ext.get('loading').hide();
		}	

	}

	function setIFrameContent(id, res){
	 	var doc = getIFrameDocument(id);
		if (doc){
	        doc.open();
	        doc.write(res);
	        doc.close();				
	    }
	}
	
	function getIFrameDocument(id){
	    if(Ext.isIE||Ext.isIE7) return document.frames(id).document;
		else return Ext.get(id).dom.contentDocument;
	}


	var page = new Page();
	Ext.EventManager.onDocumentReady(page.init, page, true);

/*
		var closeNewsletter = function(region, panel, e){
		 	Ext.MessageBox.confirm('Nieuwsbrief sluiten', 'Weet u zeker dat u de geopende nieuwsbrief wilt sluiten ? (Eventuele wijzigingen in een openstaande nieuwsbrief zijn automatisch opgeslagen.)', function(btn){
				if (btn == 'yes') {
					//var r = layout.getRegion('center');
					//while (r.getActivePanel()) r.remove(r.getActivePanel());
					r.titleEl.hide();				
					//closebtn.disable();
					mailbtn.disable();
					maildlg.reset();
				} else {
					e.cancel = true;
				}
			}, this);
		}
*/


