box.dom(document).ready(function() {
	box.ui('form').addPatterns({
		password: /^[a-zA-Z0-9]{6,}$/,
		zipcode: /^[0-9]{1,8}$/
	});
	
    box.ui('form').create({
        element: '#messageForm'
    }).addReplacement().mustValidate(function(form) {

        /*form.field('civility').mustValidate(function(field) {
            if(field.getValue() == 'c0') {
                return l10n.errors.required.msg;
            }
        });*/
		
		form.field('firstname').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_04;
            }
        });
		
		form.field('lastname').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_05;
            }
        });
		
		form.field('address').mustValidate(function(field) {
            if(field.isEmpty() && form.field('createAccount').isChecked()) {
                return l10n.errors.required.EM_SW_11;
            }
        });
		
		form.field('password').mustValidate(function(field) {
		    if(form.field('createAccount').isChecked()) {
    		    if(field.isEmpty()) {
                    return l10n.errors.required.EM_SW_37;
                } else
                if(!field.isMatching('password')) {
                    return l10n.errors.required.EM_SW_37;
                }
		    }
        });
		
		form.field('confirmpassword').mustValidate(function(field) {
		    if(form.field('createAccount').isChecked() && form.field('password').isValid()) {
    		    if(field.isEmpty()){
    				return l10n.errors.required.EM_SW_38;
    			} else if(!field.isEqualTo(form.field('password').getValue())) {
    			    return l10n.errors.required.EM_SW_38;
    			}
		    }
        });
					
		form.field('zip').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_12;
            } else if (!field.isMatching('zipcode')) {
                return l10n.errors.required.EM_SW_12;
            }
        });
		
		form.field('city').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_13;
            }
        });
		
		form.field('phone').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_14;
            }
        });
		
        form.field('email').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_06;
            } else if(!field.isMatching('email')) {
                return l10n.errors.required.EM_SW_06;
            }
        });
		
		form.field('subject').mustValidate(function(field) {
            if(field.getValue() == '' || field.getValue() == null) {
                return l10n.errors.required.EM_SW_08;
            }
        });
		
		form.field('storyMessage').mustValidate(function(field) {
            if(field.isEmpty()) {
				return l10n.errors.required.EM_SW_09;
			}
		});
		
        return l10n.errors.form;
		
    });
	
if(document.getElementById('loginForm')){
    box.ui('form').create({
        element: '#loginForm'
    }).addReplacement().mustValidate(function(form) {


        form.field('email').mustValidate(function(field) {
            if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_06;
            } else if(!field.isMatching('email')) {
                return l10n.errors.required.EM_SW_06;
            }
        });
		
		form.field('password').mustValidate(function(field) {	
			if(field.isEmpty()) {
                return l10n.errors.required.EM_SW_37;
            } else
            if(!field.isMatching('password') ) { 
                return l10n.errors.required.EM_SW_37;
            }
        });

        return l10n.errors.form;
    });
}
    var errorCls = 'error';
    
    var getErrorTarget = function(field) {
        if('radio' != field.type) {
            return field.getLabel();
        } else {
            return field.getElements().parent().parent().prev();
        }
    };
	
	var addErrorIcon = function(field, target) {
		var id = field.name + 'Error';
		var img = box.dom('#' + id);
		if(img.length) {
		  img.attr('alt', field.getError());
		} else {
		  target.append('<span id="' + id + '">- ' + field.getError() + '<br/></span>');
		}
	  };
    
    var addFieldError = function(e) {
		getErrorTarget(e.source).addClass(errorCls);
		var sourceForm = $('#'+e.id).parents('form').attr('id');
		addErrorIcon(e.source, $('#'+sourceForm+' div.alert .content p'));
    };
    
    var removeFieldError = function(e) {
        getErrorTarget(e.source).removeClass(errorCls);
		box.dom('#' + e.source.name + 'Error').remove();
    };
    
    var addFormError = function(e) {
        var id = e.source.id + 'Error';
		var msg = e.source.msg;
        var error = box.dom('#' + id);
        if(error.length) {
            error.html(msg);
        } else {
			//$('#' + e.source.id + ' div.alert .content p').text(msg);
			$('#' + e.source.id + ' div.alert').show();
        }
    };
    
    var removeFormError = function(e) {
        box.dom('#' + e.source.id + 'Error').remove();
    };
    

    // binding des événements
    box.bind({
        'error.form': addFormError,
        'valid.form': removeFormError,
        'error.field': addFieldError,
		'valid.field': removeFieldError,
		'open.generic.popin.forgottenPass' : function(e) {
			box.ui('form').create({
				element: '#askForPasswordForm'
				}).addReplacement().mustValidate(function(form) {
					form.field('emailfp').mustValidate(function(field) {
						if(field.isEmpty()) {
							return l10n.errors.required.EM_SW_06;
						} else if(!field.isMatching('email')) {
							return l10n.errors.required.EM_SW_06;
						}
        			});	
				});
			}
    });
});


$(document).ready (function() {
	$("#newAccount label").click(function() {
		if ($("#optionalFields").hasClass('fieldsOn')) {
			$("#optionalFields").removeClass('fieldsOn');
		} else {
			$("#optionalFields").addClass('fieldsOn');
		}
	});
	if($("#newAccount label").hasClass('checked')){
		$("#optionalFields").addClass('fieldsOn');
	}
});
