$(function() {
var clientes = {
properties: {
form: $("#frmNew"),
fields: {
username: {
field: 'input[name="username"]',
key: 'username',
validation: [0, 1, 3]
},
password1: {
field: 'input[name="password1"]',
key: 'password',
validation: [0, 1, 3]
},
password2: {
field: 'input[name="password2"]',
key: 'password',
validation: [0, 1, 3]
},
nome: {
field: 'input[name="nome"]',
key: 'nome',
validation: [0, 1, 3]
},
orgao_comunicacao_social: {
field: 'input[name="orgao_comunicacao_social"]',
key: 'orgao_comunicacao_social',
validation: [1]
},
empresa: {
field: 'input[name="empresa"]',
key: 'empresa',
validation: [3]
},
email: {
field: 'input[name="email"]',
key: 'email',
validation: [0, 1, 3]
},
telefone: {
field: 'input[name="telefone"]',
key: 'telefone',
validation: [0]
},
telemovel: {
field: 'input[name="telemovel"]',
key: 'telemovel',
validation: [1, 3]
},
contribuinte: {
field: 'input[name="contribuinte"]',
key: 'contribuinte',
validation: [3]
},
morada1: {
field: 'input[name="morada1"]',
key: 'morada',
validation: [0, 1, 3]
},
morada2: {
field: 'input[name="morada2"]',
key: 'morada',
validation: [0, 1, 3]
},
codigopostal1: {
field: 'input[name="codigopostal1"]',
key: 'cp',
validation: [0, 1, 3]
},
codigopostal2: {
field: 'input[name="codigopostal2"]',
key: 'cp',
validation: [0, 1, 3]
},
localidade: {
field: 'input[name="localidade"]',
key: 'localidade',
validation: [0, 1, 3]
}
},
classNames: {
inputError: "input-error"
}
},
init: function(id_perfil) {
// Ini fields
for (var i in clientes.properties.fields) {
if ($.inArray(id_perfil, clientes.properties.fields[i].validation) >= 0) {
clientes.properties.fields[i].field = $(clientes.properties.form).find(clientes.properties.fields[i].field).each(function() {
// Tipsy
$(clientes.properties.fields[i].field).tipsy({
title: function() {
return this.getAttribute('error');
},
trigger: 'focus',
gravity: 'w',
fade: true,
delayIn: 500
});
$(this).bind('blur', {o : clientes.properties.fields[i]}, clientes.validate.methods.validate);
$(this).bind('change', {o : clientes.properties.fields[i]}, clientes.validate.methods.validate);
$(this).bind('keyup', {o : clientes.properties.fields[i]}, clientes.validate.methods.validate);
$(this).bind('focus', {o : clientes.properties.fields[i]}, clientes.validate.methods.validate);
$(this).bind('focus', {obj : clientes.properties.fields[i]}, function(e) {
if (e.data.obj.field.hasClass('input-error')) {
$(e.data.obj.field).tipsy('enable');
} else {
$(e.data.obj.field).tipsy('disable');
}
});
});
}
}
clientes.properties.form.bind('submit', {id_perfil: id_perfil}, clientes.validate.submit);
$(clientes.properties.form).find('input[name="newsletter"]').bind('click', clientes.methods.toggle_newsletter);
},
validate: {
submit: function(e) {
for (var i in clientes.properties.fields) {
if ($.inArray(e.data.id_perfil, clientes.properties.fields[i].validation) >= 0) {
if ($(clientes.properties.fields[i].field, clientes.properties.form).length) {
clientes.validate.fields[clientes.properties.fields[i].key]();
}
}
}
if (clientes.properties.form.find('.' + clientes.properties.classNames.inputError + ':first').length) {
clientes.properties.form.find('.' + clientes.properties.classNames.inputError + ':first').focus();
return false;
} else {
return true;
}
},
fields: {
username: function() {
if ($(clientes.properties.fields.username.field).val().length < 9) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.username.field, 'O Username tem de ter no mínimo 4 letras/números');
}
},
password: function() {
if ($(clientes.properties.fields.password1.field).val().length < 9) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.password1.field, 'A password deve ter no mínimo 9 caracteres');
}
if ($(clientes.properties.fields.password1.field).val() != $(clientes.properties.fields.password2.field).val()) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.password2.field, 'As passwords introduzidas não são iguais');
}
},
nome: function() {
if ($(clientes.properties.fields.nome.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.nome.field, 'Por favor escreva o Nome');
}
},
empresa: function() {
if ($(clientes.properties.fields.empresa.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.empresa.field, 'Campo de preenchimento obrigatório');
}
},
orgao_comunicacao_social: function() {
if ($(clientes.properties.fields.orgao_comunicacao_social.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.orgao_comunicacao_social.field, 'Deve preencher o campo: Orgão de comunicação social');
}
},
email: function() {
if ($(clientes.properties.fields.email.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.email.field, 'Por favor escreva o E-mail');
}
},
telefone: function() {
if ($(clientes.properties.fields.telefone.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.telefone.field, 'Pelo menos um contacto telefónico é obrigatório');
}
},
telemovel: function() {
if ($(clientes.properties.fields.telemovel.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.telemovel.field, 'Campo de preenchimento obrigatório');
}
},
contribuinte: function() {
if ($(clientes.properties.fields.contribuinte.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.contribuinte.field, 'Campo de preenchimento obrigatório');
}
},
morada: function() {
if ($(clientes.properties.fields.morada1.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.morada1.field, 'Por favor escreva a Morada');
}
},
cp: function() {
if ($(clientes.properties.fields.codigopostal1.field).val().length < 4) {
var re = new RegExp('^\\d{4}(-\\d{3})?$');
if (!$(clientes.properties.fields.codigopostal1.field).val().match(re)) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.codigopostal1.field, 'Por favor escreva um Código Postal válido');
}
}
if ($(clientes.properties.fields.codigopostal2.field).val().length < 3) {
var re = new RegExp('^\\d{4}(-\\d{3})?$');
if (!$(clientes.properties.fields.codigopostal2.field).val().match(re)) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.codigopostal2.field, 'Por favor escreva um Código Postal válido');
}
}
},
localidade: function() {
if ($(clientes.properties.fields.localidade.field).val().length == 0) {
clientes.validate.methods.setErrorInput(clientes.properties.fields.localidade.field, 'Por favor escreva a Localidade');
}
}
},
methods: {
validate: function(obj) {
if (typeof obj.data !== "undefined") {
obj = obj.data.o;
}
clientes.validate.methods.cleanErrorInput(obj.field);
clientes.validate.fields[obj.key]();
},
setErrorInput: function(input, error) {
$(input).addClass(clientes.properties.classNames.inputError);
if (!$(input).attr('error')) {
$(input).attr('error', error);
}
},
cleanErrorInput: function(input) {
$(input).removeClass(clientes.properties.classNames.inputError);
}
}
},
methods: {
toggle_newsletter: function(e) {
if ($(e.target).val() == 1) {
$('fieldset.toggle_newsletter').show();
} else {
$('fieldset.toggle_newsletter').hide();
}
}
}
}
clientes.init(0);
});