function validateWebToCcForm(form) {
    var filterEmail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    
    var validated = true;
    
    var requiredFields = form.getElements('input[class~=required], select[class~=required], textarea[class~=required]');
    requiredFields.each(function(element) {
        tmpValidated = true;
        initialValue = element.retrieve('initialValue', '');
        
        if (element.hasClass('mail')) {
            if (element.get('value').trim() == initialValue || !element.get('value').test(filterEmail, 'i')) {
                tmpValidated = false;
            }
        } else {
            if (element.get('value').trim() == initialValue || element.get('value').trim() == '') {
                tmpValidated = false;
            }
        }
        
        
        label = element.getPrevious('label[for=' + element.get('name') + ']');
        if (!tmpValidated) {
            if (label) {
                label.addClass('error');
            }
            element.addClass('error');
            
            validated = false;
        } else {
            if (label) {
                label.removeClass('error');
            }
            element.removeClass('error');
        }
    });
    
    
    errorRequired = form.getParent('div[class~=webToCcForm]').getElement('span[class~=webToCcErrorRequired]');
    if (errorRequired) {
        if (!validated) {
            errorRequired.setStyle('display', 'block');
        } else {
            errorRequired.setStyle('display', 'none');
        }
    }
    
    return validated;
}



function webToCcGetCoordinates(formId, elementId) {
    if ($(formId) && $(elementId)) {
        var backH = $(formId).getStyle('height').toInt();
        var backW = $(formId).getStyle('width').toInt();
        
        var loadT = ((backH - $(elementId).getStyle('height').toInt()) / 2).round();
        var loadL = ((backW - $(elementId).getStyle('width').toInt()) / 2).round();
        
        return {backHeight:backH, backWidth:backW, loadTop:loadT, loadLeft:loadL};
    }
}

/**
* Afficher le div de chargement
*/
function webToCcDisplayLoadingBox(div) {
    if (div) {
        // On crée les divs
        var backgroundBox = new Element('div', {
            'id': 'webToCcBackgroundBox'
        });
        var loadingBox = new Element('div', {
            'id': 'webToCcLoadingBox'
        });
        
        // On les insert dans le DOM
        loadingBox.inject(backgroundBox);
        backgroundBox.inject(div, 'top');
        
        var coordinates = webToCcGetCoordinates(div.get('id'), 'webToCcLoadingBox');
        
        var form = div.getElement('form');
        form.setStyle('display', 'none');
        
        backgroundBox.setStyles({
            'display': 'block',
            'width': coordinates.backWidth + 'px',
            'height': coordinates.backHeight + 'px'
        });
        loadingBox.setStyles({
            'display': 'block',
            'top': coordinates.loadTop + 'px',
            'left': coordinates.loadLeft + 'px'
        });
    }
}

/**
* Détruit le div de chargement
*/
function webToCcHideLoadingBox(formId) {
    if ($(formId)) {
        var div = $(formId).getElement('div[class=webToCcBackgroundBox]');
        
        if (div) {
            div.dispose();
        }
    }
    
}

