function init()
{
	wst.modules.load('formValidator');
	
	var validateForm = new wst.formValidator();
	validateForm.returnData = true;
	validateForm.validClassName = 'normal';
	validateForm.unvalidClassName = 'error';
	validateForm.defaultRule = 'discard';

	// dados do contato
	validateForm.inputs['i01'] = {rule : 'required', label : 'Nome do contato'};
	validateForm.inputs['i02'] = {rule : ['required', 'email'], label : 'Email do contato'};
	validateForm.inputs['i03'] = {rule : ['required', 'phone'], label : 'Telefone do contato'};

	// dados do evento
	validateForm.inputs['i04'] = {rule : 'required', label : 'Nome do evento'};
	validateForm.inputs['i05'] = {rule : 'required', label : 'Cidade'};
	validateForm.inputs['i06'] = {rule : 'required', label : 'UF'};
	validateForm.inputs['i07'] = {rule : ['required', 'date'], label : 'Data'};
	validateForm.inputs['i08'] = {rule : 'required', label : 'Evento bilhetado'};
	validateForm.inputs['i09'] = {rule : 'simple', label : 'Mensagem adicional'};
	validateForm.inputs['i100'] = {rule : 'required'};

	wst.get('#submit').on('click', function(evt){
		evt.preventDefault();

		if(validateForm.validate())
		{
			wst.get(this).enable(false).parent().lookup('input').hide();
			wst.get('#loader').show();
			var post = validateForm.data;
			wst.ajax.post('/scripts/server/ajax/add-invite.php', post, {
				displayServerErrors : true
			});
		}
	});

	wst.get('#clear').on('click', function(evt){
		evt.preventDefault();
		wst.get(this.form).reset().lookup('.error').clss('remove:error');
	});

	wst.get('#i03').setMask('00 0000-0000');
	wst.get('#i07').setMask('00/00/0000');

	Calendar.setup({
		weekNumbers : false,
		selection : Calendar.dateToInt(new Date()),
		trigger : 'i07',
		inputField : 'i07',
		onSelect : function(){
			var date = Calendar.intToDate(this.selection.get());
			var dd = date.getDate(); dd = dd < 10 ? '0' + dd : dd;
			var mm = date.getMonth() + 1; mm = mm < 10 ? '0' + mm : mm;
			var yy = date.getFullYear();

			wst.get('#i07').value(dd + '/' + mm + '/' + yy);
			this.hide();
		}
	});
}