/**
 * @author Beheerder
 */

Ext.BLANK_IMAGE_URL = '/lib/ext/resources/images/default/s.gif';

Ext.namespace('synt');

synt.initModule = new Object();

synt.layoutModule = new Object();
// asign public function init to layoutModule Object
synt.layoutModule.init = function(){
	// functie na save success
	var savesuccess = function(r, t){
		var p = Ext.getCmp('card-wizard-panel');
		var l = p.getLayout();
		var s = Ext.getCmp('progress-bar');
		s.updateText('Bedankt');
		l.setActiveItem('card-end');
		Ext.getCmp('card-next').setText('Home');
		p.saveMask.hide();
	};

	
	var savefailed = function(r, t){
		var p = Ext.getCmp('card-wizard-panel');		
		p.saveMask.hide();		
		Ext.Msg.alert('Foutmelding', 'Het is niet gelukt om de gegevens op te slaan. Controleer de gegevens en probeer het opnieuw.');
	};
		
	// globale navigatie tussen cards hier declareren
	var cardNav = function(incr){


		var p = Ext.getCmp('card-wizard-panel');
		var l = p.getLayout();
		var numofcards = p.numofcards;
		var i = l.activeItem.id.split('card-')[1];
		if (i == 'summary') {
			var fields_ar = new Object();
			var valid = true;
			for (var n = 0; n <= numofcards; n++) {
				var form = Ext.getCmp('form-card-' + n).getForm();
				if(!form.isValid())
				{
					valid = false;
				}
				else{
					var fields = form.getValues(false);
					for (property in fields) {
						fields_ar[property] = fields[property];
					}			
				}

			}
			var arrLength = synt.layoutModule.imageStores.length;
			for(var i = 0; i < arrLength; i++) {
				var dataArray = new Array();
				var imageStore = synt.layoutModule.imageStores[i];
				var records = imageStore.getRange();
				for (var n = 0; n < records.length; n++){
					dataArray.push(records[n].data);
				}
				fields_ar[imageStore.storeId] = Ext.util.JSON.encode(dataArray);
			}
			fields_ar['rnd_id'] = p.rnd_id; // for security
			fields_ar['jaar'] = synt.jaar;
//			fielda_ar['images']
			// send fields to the server, but only if all forms are valid
			if (valid) {
				p.saveMask = new Ext.LoadMask('card-wizard-panel', {
					msg: 'De gegevens worden opgestuurd...'
				});
				p.saveMask.show();
				Ext.Ajax.request({
					url: '/save-mkbtop100-questions.php',
					success: savesuccess,
					failure: savefailed,
					params: fields_ar
				});
			}
			else {
				Ext.Msg.alert('Melding', 'Een aantal velden (aangegeven in het rood) zijn verplicht.');
			}
		}
		else if (i=='end')
		{
			window.location.reload();
		}
		else if (i=='0' && incr == -1)
		{
			Ext.getCmp('card-wizard-panel').hide();
			Ext.getCmp('div-inleidende-tekst').show();
			newcasebutton.enable();
			searchcasebutton.enable();		
		}
		else {
		
			var f = Ext.getCmp('form-card-' + i).getForm();
			if (incr > 0 && f.isValid() && (parseInt(i) + incr) <= numofcards) {
				var next = parseInt(i) + incr;
				l.setActiveItem(next + 1);
				var s = Ext.getCmp('progress-bar');
				s.updateText((next + 1) + ' van de ' + s.totaal);
				s.updateProgress((next + 1) / (s.totaal));
				Ext.getCmp('card-prev').setDisabled(next == 0);
				if (next == numofcards) {
					Ext.getCmp('card-next').setText('Controleren &raquo;');
				}
			}
			else 
				if (incr < 0) {
					var next = parseInt(i) + incr;
					l.setActiveItem(next + 1);
					var s = Ext.getCmp('progress-bar');
					s.updateText((next + 1) + ' van de ' + s.totaal);
					s.updateProgress((next + 1) / (s.totaal));
					Ext.getCmp('card-prev').setDisabled(next == 0);
					if (next == (numofcards - 1)) {
						Ext.getCmp('card-next').setText('Volgende &raquo;');
					}					
				}
				else 
					if ((parseInt(i) + incr) > numofcards) {
						// einde bereikt
						if (f.isValid()) {
							var card = Ext.getCmp('card-summary');
							for (var i = 0; i < numofcards + 1; i++) {
								var fc = card.add(Ext.getCmp('form-card-' + i));
								fc.addClass('add-border');
								fc.doLayout();
							}
							Ext.getCmp('card-prev').setDisabled(true);
							Ext.getCmp('card-next').setText('Inzenden');
							var s = Ext.getCmp('progress-bar');
							s.updateText('controleren');
							card.doLayout();
							l.setActiveItem(parseInt(i) + 1);						
							p.doLayout();
						}
					}
					else {
					
					}
		}
	};
	
	// vragenscherm, wordt dynamisch gevuld bij het laden
	var wizardlayout = new Ext.Panel({
		id: 'card-wizard-panel',
		title: 'Nieuwe case',
		layout: 'card',
		hidden: true,
		width: 600,
		height: 400,
		bodyStyle: 'padding:10px 20px;',
		defaults: {
			border: false
		},
		bbar: [{
			id: 'card-prev',
			text: '&laquo; Terug',
			handler: cardNav.createDelegate(this, [-1]),
			disabled: true
		}, {
			id: 'progress-bar',
			xtype: 'progress',
			ctCls: 'progressbar',
			text: '- vragenlijst wordt geladen -',
			width: 200
		}, {
			id: 'card-next',
			text: 'Volgende &raquo;',
			cls: 'button-bold',
			handler: cardNav.createDelegate(this, [1]),
			disabled: true
		}],items:[{
			id: 'loading-icon',
			cls: 'loading-icon',
			bodyStyle: 'padding:80px 20px;',
			html: '<p><img src="/images/blue-loading.gif" /><br>- vragenlijst wordt geladen - </p>'
		}]
	});

    var ds = new Ext.data.Store({
		autoLoad: true,
        proxy: new Ext.data.HttpProxy({
            url: 'search-cases.php'
        }),
        reader: new Ext.data.JsonReader({
            root: 'cases',
            totalProperty: 'totalCount',
            id: 'case_id'
        }, [
            {name: 'caseId', mapping: 'case_id'},
            {name: 'bedrijfsnaam', mapping: 'bedrijfsnaam'},
            {name: 'productnaam', mapping: 'productnaam'},
			{name: 'website', mapping:'website'},
			{name: 'link', mapping:'link'},
			{name: 'created', mapping:'created', type: 'date', dateFormat: 'Y-m-d H:i:s'},
			{name: 'gemeente', mapping:'gemeente'}
        ]),

        baseParams: {limit:20,jaar:synt.jaar}
    });

    // Custom rendering Template for the View
    var resultTpl = new Ext.XTemplate(
        '<tpl for=".">',
        '<div class="search-item">',
			'<h3><span>Ingediend op : <br />{created:date("j F Y")}<br />{gemeente}</span>',		
            '<p>{bedrijfsnaam}</p></h3>',
            '<p><i>{productnaam}</i></p>',
            '<a href="{link}" target="_blank">{website}</a>',
        '</div></tpl>'
    );

	var showdetailcase = function(t,i,n,e){
		var caseId = this.getRecord(n).id;
		Ext.getCmp('detail-case-panel').load({
		    url: "get-case.php",
		    params: {caseid: caseId, jaar:synt.jaar}, // or a URL encoded string
		    callback: function()
			{
				reInitLightbox();
			},
//		    scope: yourObject, // optional scope for the callback
//		    discardUrl: false,
		    nocache: false,
		    text: "Case wordt geladen...",
		    timeout: 30,
		    scripts: false
		});		
		Ext.getCmp('div-inleidende-tekst').hide();
		Ext.getCmp('search-case-panel').hide();
		Ext.getCmp('detail-case-panel').show();		
	}
	
	var searchcase = new Ext.Panel({
		id: 'search-case-panel',
		title: 'Case zoeken',
		hidden: true,
		width: 600,
		height: 400,
		bodyStyle: 'padding:10px 20px;',
		defaults: {
			border: false
		},
        autoScroll:true,

        items: new Ext.DataView({
            tpl: resultTpl,
            store: ds,
			overClass:'x-view-over',
			itemSelector: 'div.search-item',
			listeners:{'click':showdetailcase}
        }),

        tbar: [
            'Zoeken: ', ' ',
            new Ext.app.SearchField({
                store: ds,
                width:320
            })
        ],

        bbar: new Ext.PagingToolbar({
            store: ds,
            pageSize: 20,
            displayInfo: true,
            displayMsg: 'Cases {0} - {1} van {2}',
            emptyMsg: "Geen cases gevonden"
        })
	});
	
	var detailcase = new Ext.Panel({
		id: 'detail-case-panel',
		title: 'Case details',
		hidden: true,
		width: 600,
		height: 400,
		bodyStyle: 'padding:10px 20px;',
		defaults: {
			border: false
		},
        autoScroll:true

//       ,items: []
	});
	
	
	// maindiv, vult het de hele body van de browser
	
	var jaarknoppen = function(){
		var htmlstr = '';
		for (var i = 0; i < synt.jaren.length; i++)
		{
			var jr = synt.jaren[i];
			if(jr == synt.jaar)
			{
				htmlstr = htmlstr + '<div class="jaarknop_huidigjaar">' + jr + '</div>';
			}
			else
			{
				htmlstr = htmlstr + '<div class="jaarknop" onclick="javascript:self.location.href=\'index.php?jaar=' + jr + '\';return false;">' + jr + '</div>';
			}
		}
//		htmlstr = '';
		return htmlstr;
	}();

	var p = new Ext.Panel({
		layout: 'table',
		width: 1000,
		layoutConfig: {
			columns:3
		},
		border: false,
		items: [{
			border: false,
			width: 200,
		    html: jaarknoppen
		},{
			html: 'MKB Innovatie Top 100 - ' + synt.jaar,
			cls: 'x-title',
			colspan: 1
		},{
			border: false,
		    width: 200,
			rowspan :2,
		    html: '<div class="logos"><div class="logo"><img src=\'/images/logo_syntens_2011.jpg\' /></div><div class="logo"><img src=\'/images/logo_nrc.png\' /></div><div class="logo"><img src=\'/images/logo_ocnl.png\' /></div><div class="logo"><img src=\'/images/logo_innovatietop100.png\' /></div><div class="logo"><img src=\'/images/logo_mercedez.png\' /></div><div class=\'logotekst\'>Benieuwd naar je innovatievermogen? Ga naar <a target=_blank href=\'http://www.iqs.nl\'>www.iqs.nl</a></div></div>'
		},{
			border: false,
			height:	500,
		    id: 'div-top10'
		},{
			id: 'main-div',
			items:[wizardlayout,{
			border: true,
			width: 600,
			height:	400,			
			id: 'div-inleidende-tekst',
			autoScroll: true,
			bodyStyle: 'padding:10px 20px;',
		    html: ''},searchcase,detailcase]
		},{
			border: false,
			height:	50,
		    html: '',
			colspan: 3
		}],
		renderTo: Ext.get('Content')
	});
	
	p.doLayout();
	Ext.getCmp('div-inleidende-tekst').body.appendChild(Ext.get('inleidende-tekst'));
	Ext.getCmp('div-top10').body.appendChild(Ext.get('top10'));

	if(synt.jaar == synt.inschrijvingsjaar && synt.inschrijvinggeopend)
	{
		var nieuwcase = function(){
			Ext.getCmp('div-inleidende-tekst').hide();
			Ext.getCmp('search-case-panel').hide();
			Ext.getCmp('detail-case-panel').hide();
			var p = Ext.getCmp('card-wizard-panel');
			p.show();
			if(p.cardsloaded){
				Ext.getCmp('card-wizard-panel').getLayout().setActiveItem(1);
			}
			else{
				Ext.getCmp('loading-icon').show();			
				Ext.getCmp('card-wizard-panel').getLayout().setActiveItem(0);
				synt.layoutModule.getCardItems();			
			}
			newcasebutton.disable();
			searchcasebutton.disable();		
			p.doLayout();
		};
	}
	else
	{
		var nieuwcase = function(){
		};
	}
	var casezoeken = function(){
		Ext.getCmp('div-inleidende-tekst').hide();
		Ext.getCmp('card-wizard-panel').hide();
		Ext.getCmp('detail-case-panel').hide();
		var p = Ext.getCmp('search-case-panel');
		p.show();
		p.doLayout();		
	};
	var buttonafsluiten = function(){
		self.close();
	};		
	var home = function(){
		var p = Ext.getCmp('card-wizard-panel');
		var l = p.getLayout();
		var i = l.activeItem.id.split('card-')[1];
		if (i != 'end') {
			Ext.Msg.confirm('Bevestigen', 'U gaat nu terug naar de begin pagina, hiermee komen eventueel ingevulde gegevens te vervallen. Doorgaan?', function(id){
				if (id == 'yes') {
					window.location.reload();
				}
			});
		}
		else{
			window.location.reload();
		}
	};
	
	var newcasebutton = new Ext.Button({text:'Nieuwe Case', handler: nieuwcase, tooltip:'Nieuwe case aanmaken'});
	var searchcasebutton = new Ext.Button({id:'searchcasebutton', disabled:false, text:'Case Zoeken', handler: casezoeken, tooltip:'Zoek door alle gepubliceerde cases'})

	if(synt.jaar == synt.inschrijvingsjaar && synt.inschrijvinggeopend)
	{
		// zet de inschrijving open
		var c = new Ext.Panel({
			layout:'column',
			id: 'actionbuttons',
			cls: 'actionbuttons',
		    items: [{id:'homebutton', cls: 'buttons', hidden: true, columnWidth: .33, items:[new Ext.Button({text:'Home', handler: home, tooltip:'Terug naar het hoofdscherm'})]}
			,{id:'nieuwecasebutton', cls: 'buttons', columnWidth: .33, items:[newcasebutton]}
			,{cls: 'buttons',
				columnWidth: .33, items:[searchcasebutton]
			},{cls: 'buttons',
				columnWidth: .34, items:[new Ext.Button({text:'Afsluiten', handler: buttonafsluiten, tooltip:'Naar de home page van Syntens'})]
			}]		
		});
	}
	else
	{
		// blokeer de inschrijving
		var c = new Ext.Panel({
			layout:'column',
			id: 'actionbuttons',
			cls: 'actionbuttons',
			items: [
			{ cls: 'buttons', columnWidth: .5, items:[new Ext.Button({id:'nieuwecasebutton',text:'Nieuwe Case', handler: nieuwcase, disabled:true, tooltip:'Niet mogelijk om voor dit jaar in te schrijven'})]}
			,{cls: 'buttons',
				columnWidth: .5, items:[searchcasebutton]
			}]		
		});
	}
	
	Ext.getCmp('main-div').add(c);
	p.doLayout();
};

synt.layoutModule.addCardItems = function(t, r, o)
{
	// als script hierop hangt, dan eerst controles uitvoeren !
	var rnd_id = Ext.DomQuery.selectValue('rnd_id', t.reader.xmlData, '-1');
	var card_summary_content = Ext.DomQuery.selectValue('card_summary', t.reader.xmlData, '');
	
	var addTextField = function(f, c){
		var r = c.add(new Ext.form.TextField({
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			fieldLabel: f.label,
			allowBlank: f.required==0,
			width: f.width
		}));
		//console.log(r);
	};

	var addLabel = function(f, c){
		c.add(new Ext.form.Label({
			cls:'x-form-item-label',
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			text: f.label,
			width: f.width,
			style: 'padding-bottom:5px;'
		}));
	};

	var addNumberField = function(f, c){
		c.add(new Ext.form.NumberField({
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			fieldLabel: f.label,
			width: f.width,
			allowBlank: f.required==0,
			decimalPrecision: 0,
			allowDecimals: false,
			disableKeyFilter: Ext.isOpera
		}));
	};
	
	var addValutaField = function(f, c){
		c.add(new Ext.form.TextField({
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			fieldLabel: f.label,
			width: f.width,
			cls: 'valuta',
			allowBlank: f.required==0,
			disableKeyFilter: Ext.isOpera,
			vtype: 'euro'
		}));
	};

	
	var addTextArea = function(f, c){
		c.add(new Ext.form.TextArea({
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			fieldLabel: f.label,
			width: f.width,
			height: f.height,
			allowBlank: f.required==0
		}));
	};
		

	var addPhoneField = function(f, c){
		c.add(new Ext.form.TextField({
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			fieldLabel: f.label,
			width: f.width,
			allowBlank: f.required==0,
			vtype:'phone',
			disableKeyFilter: Ext.isOpera		
		}));
	};
	
	var addEmailField = function(f, c){
		c.add(new Ext.form.TextField({
			id: 'carditem-id-' + f.item_id,				
			name: 'carditem-name-' + f.item_id,
			fieldLabel: f.label,
			width: f.width,
			allowBlank: f.required==0,
			vtype:'email',
			disableKeyFilter: Ext.isOpera			
		}));
	};	
	
	
	var addRadioButtons = function(f, c){
		var itemvalues = f.itemvalues;
		var itemradios = [];
		for (var n = 0; n < itemvalues.length; n++) {
			var itemradio = f.itemvalues[n];
			itemradios[n] = new Ext.form.Radio({
				id: 'carditem-id-radio-' + itemradio.itemvalue_id,
				name: 'carditem-name-' + f.item_id,	
				boxLabel: itemradio.text,
				inputValue: itemradio.value
			
			});
		}
		c.add(new Ext.form.RadioGroup({
			fieldLabel: f.label,
			border: true,
			blankText: 'Dit veld is verplicht',
			allowBlank: f.required==0,
			listeners: {
				'change': function(t){
					if(t.isValid()) t.clearInvalid();
				}
			},
			items:itemradios
		}));
		
	};
	
	var addCustomRadioButtons = function(f, c){
		var itemvalues = f.itemvalues;
		var itemradios = [];
		for (var n = 0; n < itemvalues.length-1; n++) {
			var itemradio = f.itemvalues[n];
			itemradios[n] = new Ext.form.Radio({
				id: 'carditem-id-radio-' + itemradio.itemvalue_id,
				name: 'carditem-name-' + f.item_id,	
				boxLabel: itemradio.text,
				inputValue: itemradio.value
			
			});
		}
		
		if (itemvalues.length > 0) {
			var itemradio = f.itemvalues[itemvalues.length-1];
			itemradios[itemvalues.length-1] = new Ext.Panel({
				bodyStyle: 'padding-top: 8px',
				border: false,
				layout: 'column',
				width:500,
				items: [
					new Ext.form.Radio({
						id: 'carditem-id-radio-' + itemradio.itemvalue_id,
						name: 'carditem-name-' + f.item_id,
						boxLabel: itemradio.text + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;',
						inputValue: itemradio.value,
						listeners: {
							'check' : function(t, c){
								Ext.getCmp('carditem-id-text-' + itemradio.itemvalue_id).allowBlank = !c;
								Ext.getCmp('carditem-id-text-' + itemradio.itemvalue_id).clearInvalid();
							}
						}
					}),
					new Ext.form.TextField({
						id: 'carditem-id-text-' + itemradio.itemvalue_id,
						name: 'carditem-name-textvalue-' + f.item_id,
						emptyText: f.empty_text,
						width: f.width-80
					})]
			});
		}
		
		c.add(new Ext.form.RadioGroup({
			fieldLabel: f.label,
			columns: 1,
				width:500,
			vertical : true,
			border: true,
			blankText: 'Dit veld is verplicht',
			allowBlank: f.required==0,
			listeners: {
				'change': function(t){
					if(t.isValid()) t.clearInvalid();
				}
			},
			items:itemradios
		}));
	};
	
	var addVerticalRadioButtons = function(f, c){
		var itemvalues = f.itemvalues;
		var itemradios = [];
		for (var n = 0; n < itemvalues.length; n++) {
			var itemradio = f.itemvalues[n];
			itemradios[n] = new Ext.form.Radio({
				id: 'carditem-id-radio-' + itemradio.itemvalue_id,
				name: 'carditem-name-' + f.item_id,
				boxLabel: itemradio.text,
				inputValue: itemradio.value
			
			});
		}	
		c.add(new Ext.form.RadioGroup({
			fieldLabel: f.label,
			columns: 1,
			vertical : true,
			border: true,
			blankText: 'Dit veld is verplicht',
			allowBlank: f.required==0,
			listeners: {
				'change': function(t){
					if(t.isValid()) t.clearInvalid();
				}
			},
			items:itemradios
		}));		
	};
	
	var addPublishField = function(c, i){
		var itemvalues = [{text:'Ja', value:1},{text:'Nee', value:0}]
		var itemradios = [];
		for (var n = 0; n < itemvalues.length; n++) {
			var itemradio = itemvalues[n];
			itemradios[n] = new Ext.form.Radio({
				id: 'card-publish-radio-' + i + '-' + itemradio.value ,
				name: 'card-publish-' + i,	
				boxLabel: itemradio.text,
				inputValue: itemradio.value
			
			});
		}	
		c.add(new Ext.form.RadioGroup({
			fieldLabel: 'Mag deze informatie worden gepubliceerd',
			columns: 1,
			vertical : true,
			border: true,
			blankText: 'Dit veld is verplicht',
			allowBlank: false,
			listeners: {
				'change': function(t){
					if(t.isValid()) t.clearInvalid();
				}
			},
			items:itemradios
		}));		
	};	
	
	var addImageField = function(f, c){
		
			
		var tpl = new Ext.XTemplate(
			'<tpl for=".">',
	            '<div class="thumb-wrap">',
				'<div class="my-close-button-wrap"><div class="my-close-button" onclick="synt.layoutModule.removeImage({id}, \'imageStore-' +  f.item_id + '\');"></div></div>',
			    '<div class="thumb"><img src="handle-images.php?m=download&filename={thumbfilename}"></div>',
			    '<span>{shortName}</span></div>',
	        '</tpl>',
	        '<div class="x-clear"></div>'
		);
		c.add(new Ext.form.Hidden({
			id: 'carditem-id-' + f.item_id,
			name: 'carditem-name-' + f.item_id
		}));
		c.add(new Ext.ux.form.FileUploadField({
			buttonText: 'Upload',
			buttonOnly:true,
			fieldLabel: f.label,
			listeners: {'fileselected':function(button){
				var imageform = document.createElement('form');
				var input = button.detachFileInput().dom;
				imageform.appendChild(input);
				imageform.style.display = 'none';
				document.body.appendChild(imageform);
				var basicForm = new Ext.form.BasicForm(imageform, {
					fileUpload: true,
					url: 'handle-images.php?m=upload'
				});
				basicForm.submit({
					success: function(frm, a){
						var store = Ext.StoreMgr.lookup('imageStore-' + f.item_id);
						var data = {
							filename: a.result.filename,
							thumbfilename: a.result.thumbfilename,
							smallfilename: a.result.smallfilename,
							basename: a.result.basename
						};
						var r = new store.recordType(data); // create new record
						r.set('id', r.id);
						store.add(r);
					},
					failure: function(frm, a){
						if (a.result.error) {
							Ext.Msg.alert('Error', a.result.error + "\nProbeer het opnieuw of neem contact op via service@bissadvice.nl");
						}
						else {
							Ext.Msg.alert('Error', 'Upload mislukt! Probeer het opnieuw of neem contact op via service@bissadvice.nl');
						}
						document.body.removeChild(imageform);
					}
				});
				reInitLightbox();					
			}},
			inputFileName: 'imageFile',
			id: 'button-carditem-id-' + f.item_id,
			name: 'button-carditem-name-' + f.item_id
		}));
		var imageStore = new Ext.data.SimpleStore({
				// store configs
				autoDestroy: true,
				storeId: 'imageStore-'+  f.item_id,
				// reader configs
				fields: [{
					name: 'id',
					type: 'int'
				}, 'basename', 'filename', 'smallfilename', 'thumbfilename']
			
			});
		synt.layoutModule.imageStores.push(imageStore);
		c.add(new Ext.DataView({
			id:'imageview-carditem-id-'+  f.item_id,
			cls:'images-view',
			store: imageStore,
			prepareData: function(data){
                data.shortName = Ext.util.Format.ellipsis(data.basename, 30);
                return data;
            },
			tpl: tpl,
			autoHeight: true,
			overClass: 'x-view-over',
			itemSelector: 'div.thumb-wrap'
		}));
	};
	
	var s = Ext.getCmp('progress-bar');
	s.updateText('1 van de ' + r.length);
	s.updateProgress(1/r.length);
	s.totaal = r.length;
	
	var p = Ext.getCmp('card-wizard-panel');
	p.rnd_id = rnd_id;
	p.numofcards = r.length - 1;

	for(var i = 0; i <= p.numofcards; i++)
	{
		// add new card
		var card = p.add({id: 'card-'+ i, autoScroll:true, html: '',hideMode:'offsets'});
		var form = card.add(new Ext.FormPanel({
			id: 'form-card-' + i,
			layout: 'form',
			border: false,
			labelAlign: 'top',
			hideMode:'offsets'
		}));
		

		if (r[i].data.content.length > 0) {
			// hier komt de inhoud van de card te staan
			form.add(new Ext.Panel({
				layout: 'anchor',
				bodyStyle: 'padding:0px 0px 20px 0px;',
				bodyBorder: false,
				border: false,
				html: r[i].data.content,
				hideMode:'offsets'
			}));
		}
		
		// hier worden de velden aangemaakt
		var fields = r[i].data.items;
		var card_id = r[i].data.card_id;
		var publish = r[i].data.publish;

		for(var n = 0; n < fields.length; n++)
		{
			var type_id = parseInt(fields[n].type_id);
			switch(type_id)
			{
				case 0:
					// add Label
					addLabel(fields[n], form);
					break;
				case 1:
					// add TextField
					addTextField(fields[n], form);
					break;
				case 2:
					// add NumberField
					addNumberField(fields[n], form);
					break;
				case 3:
					// add RadioButtons
					addRadioButtons(fields[n], form);
					break;						
				case 4:
//						console.log('add checkbox');
					break;
				case 5:
//						console.log('add textarea');
					addTextArea(fields[n], form);
					break;
				case 6:
//						console.log('add phonenumber');
					addPhoneField(fields[n], form);
					break;
				case 7:
//						console.log('add email');
					addEmailField(fields[n], form);
					break;						
				case 8:
//						console.log('add customradio');
					addCustomRadioButtons(fields[n], form);
					break;
				case 9:
//						console.log('add dropdown');
					break;	
				case 10:
//						console.log('add customdropdown');
					break;
				case 11:
//						console.log('add radiovertical');
						addVerticalRadioButtons(fields[n], form);
					break;
				case 12:
//						console.log('add radiovertical');
						addValutaField(fields[n], form);
					break;
				case 13:
//						console.log('add imagefield');
						addImageField(fields[n], form);
					break;														
				default:
//						console.log('Fieldtype not defined!');
			}
		}
		
		if(publish == 1) addPublishField(form, card_id);
	}

	var card = p.add({
		id: 'card-summary',
		cls: 'hide-x-bar',
		html: ''
	});
	var card_summary_content = Ext.DomQuery.selectValue('card_summary', t.reader.xmlData, '');
	card.add(new Ext.Panel({
		layout: 'anchor',
		bodyStyle: 'padding:0px 0px 20px 0px;',
		bodyBorder: false,
		border: false,
		html: card_summary_content
	}));							
	var card = p.add({
		id: 'card-end',
		html: ''
	});
	var card_end_content = Ext.DomQuery.selectValue('card_end', t.reader.xmlData, '');
	card.add(new Ext.Panel({
		layout: 'anchor',
		bodyStyle: 'padding:0px 0px 20px 0px;',
		bodyBorder: false,
		border: false,
		html: card_end_content
	}));		
	p.getLayout().setActiveItem(1);
	Ext.getCmp('card-prev').setDisabled(false);	
	Ext.getCmp('card-next').setDisabled(false);
	p.cardsloaded = 1;
	p.doLayout();
};

synt.layoutModule.xmlstore = new Ext.data.Store({
    // load using HTTP
    url: '/get-mkbtop100-questions.php',
	listeners: {
		'loadexception': function(t, o, r, e){
			Ext.Msg.alert("Error", "De communicatie met de server is mislukt. Laad de pagina opnieuw in of neem contact op via service@bissadvice.nl");
		},
		'load': synt.layoutModule.addCardItems
	},
    // the return will be XML, so lets set up a reader
    reader: new Ext.data.XmlReader({
           // records will have an "Item" tag
        record: 'card',
        id: 'card_id'
    }, [
        'card_id','title','publish','content',{name:'items', mapping: '', convert: function(v, el) {
				var ar = [];
				var items = Ext.DomQuery.select('item', el);
				for (var n = 0, item; item = items[n]; n++){
					var itemvalues_ar = [];
					var itemvalues = Ext.DomQuery.select('itemvalue', item);
					for (var c = 0, itemvalue; itemvalue = itemvalues[c]; c++){
						itemvalues_ar[c] = {
							itemvalue_id: Ext.DomQuery.selectValue('itemvalue_id', itemvalue),							
							value: Ext.DomQuery.selectValue('value', itemvalue),
							text: Ext.DomQuery.selectValue('text', itemvalue)
						};
					}							
					ar[n] = {
						item_id: Ext.DomQuery.selectValue('item_id', item),							
						label: Ext.DomQuery.selectValue('label', item),
						type_id: Ext.DomQuery.selectValue('type_id', item),
						required: Ext.DomQuery.selectValue('required', item),
						width: Ext.DomQuery.selectValue('width', item),
						height: Ext.DomQuery.selectValue('height', item),						
						empty_text: Ext.DomQuery.selectValue('empty_text', item),
						itemvalues: itemvalues_ar
					};
				}
				return ar;
			}
		}
    ])
});


synt.layoutModule.getCardItems = function()
{
	synt.layoutModule.xmlstore.load({params:{jaar:synt.jaar}});
};



synt.layoutModule.doLayout = function()
{
	var t = Ext.getCmp('card-wizard-panel');
	t.getLayout().setActiveItem(0);
	t.doLayout();
};

synt.layoutModule.removeImage = function(id, storeId)
{
	var store = Ext.StoreMgr.lookup(storeId);
	var r = store.getById(id);
	store.remove(r);
}

synt.layoutModule.imageStores = new Array();


