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

var startRace = function() {

	return {

		init : function() {
			var startRaceWindowPanel;

			// fields
			var raceName;
			var commitment;
			var raceClass;
			var verhicleType;
			var racersAmmount;
			var passw;

			var allRound;
			var carRace;
			var motorcyleRace;

			var sprint;
			var drift;
			var langeAfstand;
		},
		
		buildStartRacePanel : function(){
			var conn = new Ext.data.Connection();
			conn.request({
				url : 'paginas/myVerhicles.php',
				method : 'POST',
				params : {
					'page' : 'getCurrentVerhicle'
				}
			});
		
			conn.on('requestcomplete', function(sender, param) {
				response = siteFunctions.jsonDecode(param.responseText);
		
				if (response['result'] == true) {
					/*siteFunctions.checkResultAlert(response['result'],
							response['message']);*/
							
					var verhicleName = response['data']['user_verhicles_verhicle'];
					var verhiclePhoto = response['data']['user_verhicles_photo'];
					var verhicleClass = response['data']['user_verhicles_class'];
					var verhicleType = response['data']['user_verhicles_verhicle_type'];
					
					startRace.reallyDoBuildStartRacePanel(verhicleName, verhiclePhoto, verhicleClass, verhicleType);
				}
			});			
			
			

		},
		
		// create start race panel without a window
		reallyDoBuildStartRacePanel : function(cVerhicleName, cVerhiclePhoto, cVerhicleClass, cVerhicleType) {
			Ext.QuickTips.init();

			var startRaceWindowPanel;

			this.allRound = 'Allround race';
			this.carRace = 'Auto race';
			this.motorcyleRace = 'Motorfiets race';
			
			this.scooter = 'Scooter';
			this.vayline = 'Vayline Car Sport';
			this.dtm = 'DTM Sport';
			this.rally = 'Rally';
			this.formule1 = 'Formule 1';
			this.fia = 'FIA GT';
			this.megane = 'Megane Throphy';
			this.nascar = 'Nascar';
			this.wtcc = 'WTCC';
			this.motogp = 'MotoGP Sport';
			this.moto250cc = 'moto 250cc';
			this.moto125cc = 'moto 125cc';
			this.superbikes = 'Superbikes';
			this.kart = 'Go Kart';
			this.formule3 = 'Formule 3';		

			this.langeAfstand = 'Lange Afstand';
			this.drift = 'Drift';
			this.sprint = 'Sprint';
			this.circuitRacing = 'Circuit';

			var raceTypeStore = new Ext.data.SimpleStore({
				fields : ['name'],
				data : [[startRace.sprint], [startRace.drift],
						[startRace.langeAfstand], [startRace.circuitRacing]]
			});

			var verhicleTypeStore = new Ext.data.SimpleStore({
				fields : ['name'],
				data : [[startRace.allRound], [startRace.scooter], [startRace.carRace],
						[startRace.motorcyleRace],[startRace.kart], [startRace.vayline], [startRace.motogp], [startRace.formule1]/*[startRace.kart], [startRace.moto125cc ], [startRace.moto250cc ], [startRace.superbikes], [startRace.quads ], [startRace.nascar ], [startRace.wtcc ], [startRace.dtm ], [startRace.rally ], [startRace.formule3 ]*/]
			});

			var racersAmmountStore = new Ext.data.SimpleStore({
				fields : ['name'],
				data : [['3'], ['5'], ['10'], ['15'], ['20']]
			});
			
			startRace.raceName = new Ext.form.TextField({
				fieldLabel : 'Race Naam * ',
				maxLength : 16,
				maxLengthText : 'Maximale lengte is 16',
				name : 'raceName',
				width : 130,
				focusClass : 'Voer hier de race naam in',
				allowBlank : false
			});

			startRace.commitment = new Ext.form.TextField({
				fieldLabel : 'Inzet * ',
				maxLength : 10,
				width : 130,
				maxLengthText : 'Maximale lengte is 16',
				name : 'raceName',
				alphanumText : 'Alleen Nummers',
				allowBlank : false
			});

			startRace.raceType = new Ext.form.ComboBox({
				store : raceTypeStore,
				fieldLabel : 'Race Type * ',
				displayField : 'name',// je selecteerd van de SimpleStore
				// de eerste veld of de tweede. Nu
				// kiezen we de ste.
				mode : 'local',
				emptyText : 'Selecteer een race type',
				allowBlank : false,
				triggerAction: 'all',
				editable : false,
				width : 130
			});

			startRace.verhicleType = new Ext.form.ComboBox({
				store : verhicleTypeStore,
				fieldLabel : 'Voertuig Type * ',
				displayField : 'name',// je selecteerd van de SimpleStore
				// de eerste veld of de tweede. Nu
				// kiezen we de 2de.
				mode : 'local',
				emptyText : 'Selecteer een race type',
				allowBlank : false,
				editable : false,
				triggerAction: 'all',
				width : 130
			});

			startRace.racersAmmount = new Ext.form.ComboBox({
				store : racersAmmountStore,
				fieldLabel : 'Aantal Racers * ',
				displayField : 'name',// je selecteerd van de SimpleStore
				// de eerste veld of de tweede. Nu
				// kiezen we de 2de.
				mode : 'local',
				emptyText : 'Selecteer de aantal racers',
				allowBlank : false,
				editable : false,
				triggerAction: 'all',
				width : 130
			});

			startRace.verhicleClass = new Ext.form.ComboBox({
				store : racersAmmountStore,
				fieldLabel : 'Voertuig classe* ',
				displayField : 'name',// je selecteerd van de SimpleStore
				// de eerste veld of de tweede. Nu
				// kiezen we de 2de.
				mode : 'local',
				emptyText : 'Selecteer de classe',
				allowBlank : false,
				editable : false,
				width : 130
			});

			startRace.lapsPercent = new Ext.form.ComboBox({
				store : racersAmmountStore,
				fieldLabel : 'Laps %* ',
				displayField : 'name',// je selecteerd van de SimpleStore
				// de eerste veld of de tweede. Nu
				// kiezen we de 2de.
				mode : 'local',
				emptyText : 'Selecteer de classe',
				allowBlank : false,
				editable : false,
				width : 130
			});

			startRace.passw = new Ext.form.TextField({
				fieldLabel : 'Passwoord',
				maxLength : 16,
				// disabled : true,
				width : 130,
				inputType : 'password',
				maxLengthText : 'Maximale lengte is 16',
				name : 'raceName',
				alphanumText : 'Alleen Nummers'
			});
			
			startRace.passw.on('focus', function(){
				alert('Passwoord zal in de volgende versie beschikbaar zijn');
			});

			var racePanel = new Ext.FormPanel({
				title : 'Start Eigen Race',
				frame : true,
				width : 280,
				region : 'west',
				split : true,
				items : [startRace.raceName, startRace.commitment,
						startRace.raceType, startRace.verhicleType,
						startRace.racersAmmount, startRace.passw],
				buttons : [{
					text : 'Start race',
					iconCls : 'add',
					handler : function() {
						startRace.startNewRace();
					}
				}]
			});
			var tbInfo = new Ext.Toolbar({
				id : 'tbInfo',
				buttons : [{
					text : 'Help',
					iconCls : 'help',
					handler : function() {
						helpItems('createRace');;
					}
				}]
			});
			
			var textPanel = new Ext.Panel({
				//title : 'Info',
				frame : true,
				tbar : tbInfo,
				html : 'Start hieronder je eigen race.  Klik op <b>help</b>  voor meer informatie. Er zijn wat regels voor het starten van een race. Wil je een race alleen toegankelijk maken voor bekenden kan je een password intypen. Deze is echter niet verplicht. Alle andere velden zijn verplichte velden.',
                region : 'north',
				split : true
			});

			var racePanelVerhicle = new Ext.Panel({
				title : cVerhicleName,
				frame : true,
				height : 300,
				region : 'center',
				split : true,
				html : '<center><img class="normalImage" src="' + cVerhiclePhoto  + '" width="220" height="155"></center><br><b>Classe:</b> ' + cVerhicleClass + ' &nbsp; &nbsp; &nbsp; &nbsp; <b>Type:</b> ' +  cVerhicleType
					// autoLoad:'http://www.racefreakz.com/images/cars/suzuki-V-strom650a.jpg'
			});
			
			var panel = new Ext.Panel({
				// title : 'Huidige voasdfasdfasdfasdfertuig',
				frame : false,
				width : 1204,
				height : 310,
				layout : 'border',
				// split : true,
				items : [textPanel, racePanel, racePanelVerhicle]
			});
			
			siteFunctions.showWindow(panel, 500, 550, 'startNewRace', true);
		},

		startNewRace : function() {
			var checkStreetRaceAllow = true;
			var verhicleType = 100;
			
			switch(startRace.verhicleType.getValue()){
				case this.allRound:
					verhicleType = 100;
					checkStreetRaceAllow = false;
					break;
				case this.carRace:
					verhicleType = 1;
					checkStreetRaceAllow = true;
					break;
				case this.motorcyleRace:
					verhicleType = 2;
					checkStreetRaceAllow = true;
					break;
				case this.scooter:
					verhicleType = 6;
					checkStreetRaceAllow = false;
					break;
				case this.vayline:
					verhicleType = 7;
					checkStreetRaceAllow = false;
					break;
				case this.dtm:
					verhicleType = 8;
					checkStreetRaceAllow = false;
					break;
				case this.rally:
					verhicleType = 9;
					checkStreetRaceAllow = false;
					break;
				case this.formule1:
					verhicleType = 10;
					checkStreetRaceAllow = false;
					break;
				case this.fia:
					verhicleType = 11;
					checkStreetRaceAllow = false;
					break;
				case this.megane:
					verhicleType = 12;
					checkStreetRaceAllow = false;
					break;
				case this.nascar:
					verhicleType = 13;
					checkStreetRaceAllow = false;
					break;
				case this.wtcc:
					verhicleType = 14;
					checkStreetRaceAllow = false;
					break;
				case this.motogp:
					verhicleType = 15;
					checkStreetRaceAllow = false;
					break;
				case this.moto250cc:
					verhicleType = 16;
					checkStreetRaceAllow = false;
					break;
				case this.moto125cc:
					verhicleType = 17;
					checkStreetRaceAllow = false;
					break;
				case this.superbikes:
					verhicleType = 18;
					checkStreetRaceAllow = false;
					break;	
				case this.kart:
					verhicleType = 19;
					checkStreetRaceAllow = false;
					break;
				case this.formule3:
					verhicleType = 20;
					checkStreetRaceAllow = false;
					break;						
			}			
		
			// check what raceType to send to php
			switch(startRace.raceType.getValue()){
				case this.sprint:
					racetype = 2;
					break;	
				case this.drift:
					racetype = 1;
					break;	
				case this.langeAfstand:
					racetype = 3;
					break;	
				case this.circuitRacing:
					racetype = 4;
					break;	
				default:
					siteFunctions.popupWindowError('Race', 'Selecteer een race type', '');
					return;
					break;						
			}
			
			//check street race allouwens
			if(!checkStreetRaceAllow){
				if(racetype != 4){					
					if(verhicleType == 100 ){
						siteFunctions.popupWindowError('Race', 'Een allround race mag alleen gereden worden op het circuit. Kies circuit bij "Race Type"', '');
					}else{					
						siteFunctions.popupWindowError('Race', 'Deze race type mag alleen gereden worden op het circuit. Kies circuit bij "Race Type"', '');
					}					
					return;
				}
			}
					
			var conn = new Ext.data.Connection();
			conn.request({
				url : '/paginas/racing.php?page=createRace',
				method : 'POST',
				params : {
					'raceName' : startRace.raceName.getValue(),
					'commitment' : startRace.commitment.getValue(),
					'raceType' : racetype,
					'verhicleType' : verhicleType,
					'racersAmmount' : startRace.racersAmmount.getValue(),
					'passw' : startRace.passw.getValue()
				}
			});
		
			conn.on('requestcomplete', function(sender, param) {
				response = siteFunctions.jsonDecode(param.responseText);
		
				if (!response['result']) {
					siteFunctions.popupWindowError('Race', response['message'], '');
					return;
				}
		
				siteFunctions.popupWindowOK('Race', response['message'], '');
				// reload race overview grid panel
				Ext.getCmp('raceOverviewGridPanel').getStore().load();
				Ext.getCmp('startNewRace').destroy();				
			});					
					
			

		},

		afterEdit : function(result) {
			// decode json values
			var jsonResult = siteFunctions.jsonDecode(result);

			if (jsonResult['result'] == false) {
				siteFunctions.popupWindowError('Resultaat',
						jsonResult['message'], '');
			} else {
				// reload the races
				// raceOverview.racesReload();

				// show message
				siteFunctions.popupWindowOK('Resultaat', jsonResult['message'],
						'');
			}
		},

		// show the start race window panel (add -> .show() function
		showStartRacePanel : function() {
			this.startRaceWindowPanel.show();
		}

	};
}();