/*
 * Ext JS Library 2.0.1 Copyright(c) 2006-2008, Ext JS, LLC. licensing@extjs.com
 * 
 * http://extjs.com/license
 */

var raceOverview = function() {

	return {
		init : function() {
			var grid4;
			var raceID;
			var raceStore;
		},

		raceInfoPanel : function() {

		},

		makeRaceGridPanel : function() {
			// var raceID;
			var response;

			Ext.QuickTips.init();
			raceOverview.raceID = "";
			var xg = Ext.grid;

			// usMoney veranderen in euro euMoney
			Ext.util.Format.euMoney = function(v) {
				v = (Math.round((v - 0) * 100)) / 100;
				v = (v == Math.floor(v)) ? v + ".00" : ((v * 10 == Math.floor(v
						* 10)) ? v + "0" : v);
				return "€ " + v;
			};

			// shared reader
			this.raceStore = new Ext.data.Store({
				proxy : new Ext.data.HttpProxy({
					url : '/includes/ShowRaces.php',
					method : 'POST'
				}),
				reader : new Ext.data.JsonReader({
					root : "data" // The property which contains an Array of
						// row objects
						}, [{
							name : 'ID'
						}, {
							name : 'raceName'
						}, {
							name : 'inzet',
							type : 'float'
						}, {
							name : 'class'
						}, {
							name : 'starter'
						}, {
							name : 'status'
						},{
							name : 'realRaceStatus'
						},{
							name : 'circuitLaps'
						}, {
							name : 'raceType'
						}, {
							name : 'catogorie'
						}, {
							name : 'slots'
						}, {
							name : 'raceType'
						}])
			});

			raceOverview.raceStore.load();
			/*
			 * var sm = new xg.CheckboxSelectionModel({ singleSelect : true,
			 * //addListener : ('beforeupdate', testing) });
			 */
			/*
			 * var startRaceButton = Ext.Button({ text : 'Start een nieuwe
			 * race', handler : function() { alert('shizzelwizzel'); } });
			 */
			/*
			 * this.Toolbar = new Ext.Toolbar({ text : ' tb' });
			 * 
			 * this.Toolbar.add({ text : 'Koop', iconCls : 'buy', handler :
			 * function() { alert('shizel'); } });
			 * 
			 * 
			 */		
			
			//show my started races
			var myStartedRacesButton = new Ext.Button({
				pressed : false,
				minWidth : 195,
				text : 'Administreer mijn Races',
				iconCls : 'edit',
				handler : function() {
					showMyRaces();
				}			
			});		
			
			//show my started races
			var mySignedInRaces = new Ext.Button({
				pressed : false,
				minWidth : 185,
				text : 'Mijn aanmeldingen',
				iconCls : 'add',
				disabled : true,
				handler : function() {
					alert('coming soon..');
				}			
			});	
			
			//show my started races
			var raceHelpButton = new Ext.Button({
				pressed : false,
				minWidth : 30,
				text : '',
				iconCls : 'help',
				disabled : false,
				handler : function() {
					helpItems('race');
				}			
			});				
			
			var startRaceButton = new Ext.Button({
					text : DEF_BUTTON_START_RACE,
					minWidth : 190,
					tooltip : DEF_TOOLTIP_START_RACE,
					iconCls : 'add',
					handler : function() {
						startRace.buildStartRacePanel();
					}
			});
			
			var reLoadButton = new Ext.Button({
					text : "Herlaad",
					minWidth : 195,
					tooltip : "herlaad de race overzicht.",
					iconCls : 'refresh',
					handler : function() {
						raceOverview.raceStore.load();
					}
			});			
			
			this.buttonPanel = new Ext.Panel({
				frame: false,
				buttons: [startRaceButton, myStartedRacesButton, /*mySignedInRaces,*/ reLoadButton, raceHelpButton]
			});			

			this.grid4 = new xg.GridPanel({
				id : 'raceOverviewGridPanel',// do not remove
				store : raceOverview.raceStore,
				onSelect : function(record) {
					alert('test');
				},

				cm : new xg.ColumnModel([{
					header : DEF_GRID_RACE_NAME,
					width : 40,
					sortable : true,
					dataIndex : 'raceName'
				}, {
					id : DEF_GRID_ID,
					width : 40,
					sortable : true,
					dataIndex : 'ID',
					hidden : true
				}, {
					header : DEF_GRID_COMMITMENT,
					width : 40,
					sortable : true,
					renderer : Ext.util.Format.euMoney,
					dataIndex : 'inzet'
				}, {
					header : DEF_GRID_CLASS,
					width : 20,
					sortable : true,
					dataIndex : 'class'
				}, {
					header : DEF_GRID_RACE_STARTER,
					width : 40,
					sortable : true,
					dataIndex : 'starter'
				}, {
					header : DEF_GRID_STATE,
					width : 20,
					sortable : true,
					dataIndex : 'status'
				}, {
					header : DEF_GRID_CATEGORY,
					width : 40,
					sortable : true,
					dataIndex : 'catogorie'
				}, {
					header : DEF_GRID_SLOTS,
					width : 20,
					sortable : true,
					dataIndex : 'slots'
				}, {
					header : DEF_GRID_RACE_TYPE,
					width : 30,
					sortable : true,
					dataIndex : 'raceType'
				}]),

				viewConfig : {
					forceFit : true
				},
				width : 650,
				height : 300,
				frame : true,
				title : DEF_PANEL_RACE_VIEW,
				tbar: this.buttonPanel,
				iconCls : 'icon-grid'/*,				
				loadMask : siteFunctions.gridLoadMask('Laden...', raceOverview.raceStore)*/
			});
			


			this.grid4.on('click', function() {
				var record = raceOverview.grid4.getSelectionModel()
						.getSelected();
				this.raceID = record.get('ID');
				var realRaceStatus = record.get('realRaceStatus');
				var raceName =  record.get('raceName');
				var raceMaxLaps =  record.get('circuitLaps');
				
				if(realRaceStatus == 1){
					showRaceResult(this.raceID, raceName, raceMaxLaps);
				}else{
					showRaceDetails(this.raceID);
				}
				//showRaceDetails(this.raceID);
			});

		},

		showRaceViewGrid : function() {
			
			var panel = new Ext.Panel({
				items : this.grid4,
				renderTo : 'raceOverview'
			});
			
			//this.buttonPanel.render('raceButtonPanel');
			//this.grid4.render('raceOverview');
		},

		// remove race
		removeRace : function(raceID) {

			var ajaxOptions = {
				method : 'post',
				// update : $('debug'),
				onComplete : function(result) {
					siteFunctions.afterEdit(result, raceOverview.racesReload())
				},
				data : {
					'ID' : raceID
				}
			}

			// go!
			new Ajax('/paginas/racing.php?page=removeRace', ajaxOptions)
					.request();
		},

		// reload races
		racesReload : function() {
			raceOverview.raceStore.load();
		},

		getRaceProperties : function() {
			siteFunctions.popupWindowOK('Comming soon..', 'Komt nog', '')
		}

	};
}();
