var FBConnect = {
	c_div: 'profile_thumb',
	
	// TODO Problemi Medio Campidano (non c'è)
	locationsCode: { Agrigento: 1, Alessandria: 2, Ancona: 3, Aosta: 4, Arezzo: 7, 'Ascoli Piceno': 5, Asti: 8, Avellino: 9, Bari: 10, Barletta: 110, Andria: 110, Trani: 110, Belluno: 13, Benevento: 14, Bergamo: 11, Biella: 12, Bologna: 15, Bolzano: 18, Brescia: 17, Brindisi: 16, Cagliari: 19, Caltanissetta: 23, Campobasso: 20, Carbonia: 106, Iglesias: 106, Caserta: 21, Catania: 28, Catanzaro: 29, Chieti: 22, Como: 25, Cosenza: 27, Cremona: 26, Crotone: 41, Cuneo: 24, Enna: 30, Fermo: 109, Ferrara: 32, Firenze: 34, Foggia: 33, 'Forlì': 31, Cesena: 31, Frosinone: 35, Genova: 36, Gorizia: 37, Grosseto: 38, Imperia: 39, Isernia: 40, 'La Spezia': 83, "L'Aquila": 6, Latina: 46, Lecce: 43, Lecco: 42, Livorno: 44, Lodi: 45, Lucca: 47, Macerata: 48, Mantova: 51, Massa: 53, Carrara: 53, Matera: 54, 'Medio Campidano': 107, Messina: 49, Milano: 50, Modena: 52, Monza: 108, Napoli: 55, Novara: 56, Nuoro: 57, Ogliastra: 104, Olbia: 105, 'Tempio Pausania': 105, Oristano: 58, Padova: 61, Palermo: 59, Parma: 67, Pavia: 70, Perugia: 63, Pesaro: 69, Pescara: 62, Piacenza: 60, Pisa: 64, Pistoia: 68, Pordenone: 65, Potenza: 71, Prato: 66, Ragusa: 75, Ravenna: 72, 'Reggio Calabria': 73, 'Reggio Emilia': 74, Rieti: 76, Rimini: 78, Roma: 77, Rovigo: 79, Salerno: 80, Sassari: 85, Savona: 86, Siena: 81, Siracusa: 84, Sondrio: 82, Taranto: 87, Teramo: 88, Terni: 92, Torino: 90, Trapani: 91, Trento: 89, Treviso: 94, Trieste: 93, Udine: 95, Varese: 96, Venezia: 99, Verbania: 97, Vercelli: 98, Verona: 101, 'Vibo Valentia': 103, Vicenza: 100, Viterbo: 102 },
	months: { gennaio: '01', febbraio: '02', marzo: '03', aprile: '04', maggio: '05', giugno: '06', luglio: '07', agosto: '08', settembre: '09', ottobre: 10, novembre: 11, dicembre: 12 },
	
	init: function () {
		FB.ensureInit(function () {
			var session = FB.Facebook.apiClient.get_session();
			
			if(session) {
				var uid = session.uid;
				FBConnect.getUserData(uid);
			}
		});
	},
	
	connect: function (uid, data) {
		var callback = {
			success: function (o) {
				var response = Utilities.jsonParse(o.responseText);
				
				if(response.nick) {	// utente non ancora iscritto
					data.nickname = response.nick;
					FBConnect.showLp(data);
				} else {	// utente già iscritto
					FBConnect.autologin(response.token);
				}
			},
			
			failure: function (o) {
				FBConnect.showLp(data);
			}
		};
		
		var url = 'http://' +  conf.baseUrl + '/gui_manager/facebook_connect';
		// var url = 'http://' +  conf.baseUrl + '/ajaxdemo.php';
		var params = { 'fid': uid, 'nick': data.name };
		Ajax.send(url, callback, params);
	},
	
	autologin: function (token) {
		location.href = 'http://' + conf.baseUrl + '/lps_autologin.php?token=' + token;
	},
	
	showLp: function (params) {
		OverlayManager.show('lp', 'freerider', null, params);
	},
	
	getUserData: function (uid) {
		var fields = [ 'first_name', 'last_name', 'sex', 'meeting_sex', 'current_location', 'birthday', 'contact_email' ];
		
		FB.Facebook.apiClient.users_getInfo(uid, fields, function (result) {
			if(result) {
				var birthday = (result[0] ? result[0].birthday.split(' ') : '');
				
				var params = {
					socialNetworkUserId: uid,
					socialNetwork: 'facebook',
			    	name: result[0].first_name,
			    	surname: result[0].last_name,
			    	email: (result[0].contact_email ? result[0].contact_email : ''),
			    	gender: FBConnect.parseGender(result[0].sex),
			    	targetGender: FBConnect.parseGender(result[0].meeting_sex),
			    	bornDay: (birthday[0] ? (birthday[0].length == 1 ? '0' : '') + birthday[0] : ''),
			    	bornMonth: FBConnect.parseMonth(birthday[1]),
			    	bornYear: (birthday[2] ? birthday[2] : ''),
			    	location: (result[0].current_location ? FBConnect.locationsCode[result[0].current_location] : '')
			    };
				
				FBConnect.connect(uid, params);
			}					
		});
	},
	
	parseGender: function (gender, meeting) {
		if(gender == 'uomo') return 'M';
		if(gender == 'donna') return 'F';
	},
	
	parseMonth: function (month) {
		if(month) return FBConnect.months[month];
		return '';
	}	
};