/**
 * @author florent@ezoulou.be 20092010 - feel free to use
 */
/* var used when setting the focus on email field */
//var origEmailStr = null;

/* step nav translations -> included in forms.xsl so you should just translate those in /lang/master.xx.xml 
try {
    if (validate == null) 
        validate = 'valider';
} 
catch (e) {
    validate = 'valider';
}
try {
    if (returnStr == null) 
        returnStr = 'retour';
} 
catch (e) {
    returnStr = 'retour';
}
*/
$(document).ready(function(){
    /*
     *  actions happening on fields focus
     */
    $('.form_field').change(function(){
        // remove error style
        $(this).parent().removeClass('error');
    });

	/*
	 *  store original value in @alt
	 */
    for (var i = 0; i < $('.form_item').length; i++) {
		var node = $('.form_item:eq(' + i + ')').find('.form_field');
		var origVal = node.val();
		node.attr('alt', origVal);
	}	
    
    /*
     * form validation
     */
    $('form.form').submit(function(){
        // we check the current step
        if (formItemsCheck($(this), true)) {
            // we submit
            return true;
        }
        else {
            // form is not validated 
            return false;
        }
    });
});



/*
 * forms functions
 */
function formItemsCheck(node, showMessage){
    var checkedOk = true;
    /*
     * checking the active substep fields
     */
    if (node.find('.form_item').length > 0) {       
        for (var i = 0; i < node.find('.form_item.required').length; i++) {
//			alert('1');

            // current form item (one form item = one field) 
            var formItem = node.find('.form_item.required:eq(' + i + ')');
            if (!formItemCheck(formItem, showMessage)) 
                checkedOk = false;
        }
    }
    return checkedOk;
}

function formItemCheck(formItem, showMessage){
    var checkedOk = true;
    // text or textarea
//			alert('2');
    if (formItem.hasClass('text') || formItem.hasClass('textarea')) {
//			alert('3');
        if (formItem.find('.form_field').val() == '' || formItem.find('.form_field').val() == formItem.find('.form_field').attr('alt')) {
//			alert('4');
            checkedOk = false;
            if (showMessage) {
                formItem.find('.form_field').parent().addClass('error');
            }
        }
    }
    
    
    else {
        // select
        if (formItem.hasClass('select')) {
            if (formItem.find('.form_field option:selected').length == 0) {
                checkedOk = false;
                if (showMessage) {
                    formItem.addClass('error');
//                    formItem.find('.formAlert:first').remove();
//                    formItem.prepend('<div class="formAlert">required</div>');
                }
            }
        }
    }
    
	/*
    else 
        // email
        if (formItem.hasClass('email')) {
            if (formItem.find('.form_field').val() == '' ||
            formItem.find('.form_field').val() == origEmailStr ||
            formItem.find('.form_field').val() == 'required' ||
            !isValidEmailAddress(formItem.find('.form_field').val())) {
                checkedOk = false;
                if (showMessage) {
                    formItem.find('.form_field').parent().addClass('error');
                }
            }
        }
        else 
            // file
            if (formItem.hasClass('file')) {
                if (formItem.find('.form_field').val() == '') {
                    checkedOk = false;
                    if (showMessage) {
                        formItem.find('.form_field').parent().addClass('error');
                        formItem.find('.form_field').parent().find('.formAlert').remove();
                        formItem.find('.form_field').parent().prepend('<div class="formAlert">required</div>');
                    }
                }
            }
            else 
                // substep checkbox 
                if (formItem.hasClass('checkbox') && formItem.hasClass('hasSubstep')) {
                    if (formItem.find('.substepKicker .form_field:checked').length == 0) {
                        checkedOk = false;
                        if (showMessage) {
                            formItem.addClass('error');
                            formItem.find('.formAlert:first').remove();
                            formItem.prepend('<div class="formAlert">required</div>');
                        }
                    }
                }
                else 
                    // default checkbox
                    if (formItem.hasClass('checkbox')) {
                        if (formItem.find('.form_field:checked').length == 0) {
                            checkedOk = false;
                            if (showMessage) {
                                formItem.addClass('error');
                                formItem.find('.formAlert:first').remove();
                                formItem.prepend('<div class="formAlert">required</div>');
                            }
                        }
                    }
                    */
    return checkedOk;
}

function isValidEmailAddress(emailAddress){
    var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
    return pattern.test(emailAddress);
}

