/**
 * VCMContest
 * @constructor
 * @param {VCMPage} page
 */
function VCMContest(page) {
	this._page = page;
}

VCMContest.prototype = {
	/**
	 * Reference to VCMPage
	 * @type VCMPage
	 */
	_page: null,
	
	_jForm: null,
	_jRequiredFields: null,
	
	/**
	 * Initialize
	 */
	init: function() {
		console.log('VCMContest.init()');
		// References
		this._jForm = $('#contestForm');
		this._jRequiredFields = $('#contestRequiredFields');
		// Events
		this._jForm.bind('submit', $.proxy(this, 'onFormSubmit'));
	},
	
	/**
	 * Destroy
	 */
	destroy: function() {
		console.log('VCMContest.destroy()');
		// Events
		this._jForm.unbind('submit');
		// References
		this._jForm = null;
		this._jRequiredFields = null;
	},
	
	isRequiredFieldsPresent: function() {
		console.log('VCMContest.isRequiredFieldsPresent()');
		var elements = this._jForm[0].elements,
			isOk = true;
		
		if (elements['email'].value.length == 0)
			isOk = false;
		else if (elements['firstName'].value.length == 0)
			isOk = false;
		else if (elements['lastName'].value.length == 0)
			isOk = false;
		else if (elements['sex'][0].checked == false &&
				 elements['sex'][1].checked == false)
			isOk = false;
		else if (elements['ageGroup'].selectedIndex == 0)
			isOk = false;
		else if (elements['phone'].value.length == 0)
			isOk = false;
		else if (elements['language'][0].checked == false &&
				 elements['language'][1].checked == false)
			isOk = false;
		else if (elements['postalCode'].value.length == 0)
			isOk = false;
		
		return isOk;
	},
	
	/**
	 * On form submit
	 * @param {Event} evt
	 */
	onFormSubmit: function(evt) {
		console.log('VCMContest.onFormSubmit()');
		// Check required fields
		if (this.isRequiredFieldsPresent()) {
			this._jRequiredFields.hide();
			var url = rootPath + 'doJSON?command=submitContest&lang=' + VCMUtils.getLang() + '&' + this._jForm.serialize(),
				me = this;
			$.getJSON(url, function(data) {
				if (data) {
					if (data.success) {
						me._jForm[0].reset();
					}
					alert(data.msg);
				} else {
					alert('Erreur fatale');
				}
			});
		} else {
			this._jRequiredFields.show();
		}
		
		// Cancel default event
		return false;
	}
};

