/**
 * @title       Aside scripts
 * @section     Aside
 * @tree        #aside < #content < #contentWrapper 
 */

box.dom(document).ready(function() {


	box.ui('form').addPatterns({
        phoneNumber:/^0[1-68]([\.|\-|\s]*[0-9]{2}){4}$/
		
    });

    /**
     * @section     Project Form
     */
    if ($('#projectForm').length) {
        box.ui('form').create({
            element: '#projectForm'
        }).addReplacement().mustValidate(function(form) {
        	form.field('profile').mustValidate(function(field) {
        		if (field.getValue() == '1-1') {
        			return l10n.errors.badProfile;
        		}
        	});
        	return l10n.errors.form;
        }); 
        $('#projectForm .actions input').click(function(){
            rollupTracker._setCustomVar(2, "push-projet", "Location",2); // Google analytics
        });
    }

    /**
     * @section     Callback Form
     */
    if ($('#callbackForm').length) {
        box.ui('form').create({
            element: '#callbackForm'
        }).addReplacement().mustValidate(function(form) {
            
            form.field('callbackPhoneNumber').mustValidate(function(field) {
                if(field.isEmpty()) {
                    return l10n.errors.required;
                } else if(!field.isMatching('phoneNumber')) {
                    return l10n.errors.badPhoneNumber;
                }
            });
            return l10n.errors.form;
        });
         $('#callbackForm .actions input').click(function(){
            rollupTracker._trackPageview('/popin-callback-confirmation');
        });
        //changeDaysOfMonth();
        //changeMonthOfYear();


        // classe a  ajouter aux eleÂ©ments lors d'une erreur
        var errorCls = 'error';
        
        // recuperer l'eleÂ©ment adequat pour l'insertion de l'icone d'erreur
        var getErrorTarget = function(field) {
            if('radio' != field.type) {
                return field.getLabel();
            } else {
                return field.getElements().parent().parent().prev();
            }
        };
        
        // ajouter l'icone d'erreur ou changer son alt si deja  present
        var addErrorIcon = function(field, target) {
		    var id = field.name + 'Error';
            var img = box.dom('#' + id);
            if(img.length) {
                img.attr('alt', field.getError());
                img.attr('title', field.getError());
            } else {
                target.append('<img id="' + id + '" alt="' + field.getError() + '" title="' + field.getError() + '" src="' + l10n.url.imgError + '" />');
            }
        };

        // ajouter une erreur sur un champ
        var addFieldError = function(e) {
            addErrorIcon(e.source, getErrorTarget(e.source).addClass(errorCls));
        };

        // supprimer une erreur d'un champ
        var removeFieldError = function(e) {
            box.dom('#' + e.source.name + 'Error').remove();
            getErrorTarget(e.source).removeClass(errorCls);
        };

        // ajouter une erreur sur un formulaire
        var addFormError = function(e) {
            var id = e.source.id + 'Error';
            var msg = '<p>' + e.source.msg + '</p>';
            var error = box.dom('#' + id);
            if(error.length) {
                error.html(msg);
            } else {
                e.source.getElement().prepend('<div id="' + id + '" class="' + errorCls + '">' + msg + '</div>');
            }
        };

        // supprimer une erreur d'un formulaire
        var removeFormError = function(e) {
            box.dom('#' + e.source.id + 'Error').remove();
        };
        
        
        box.bind({     
            'error.form': addFormError,
            'valid.form': removeFormError,
            'error.field.text': addFieldError,
            'error.field.select': addFieldError,
            'valid.field.select': removeFieldError,
            'valid.field.text': removeFieldError
            /*,
            'change.field.select.callbackMonth': function(e) {
                changeDaysOfMonth();
            },
			 'change.field.select.callbackYear': function(e) {
                changeMonthOfYear();
            }
            */
        });
    }
});
/*
function changeDaysOfMonth () {

    $.get("/dates.xml.php", {month:$('#callbackMonth').attr('value'), year:$('#callbackYear').attr('value')},
    function(data){
     	var newOptions = new Array();
        newOptions[0] = {value:0,text:"",selected:false};
        
        xmlDocRef = StringtoXML(data).getElementsByTagName("day");
		
		for (i=0; i<xmlDocRef.length; i++) {
            var indexSelected = false;
            
            if (i == box.ui('form.callbackForm').field('callbackDay').getIndex()) {
                indexSelected = true;
                selectedOption = i;
            }
            newOptions[i] = {
                value: xmlDocRef[i].getAttribute("id"),
                text: xmlDocRef[i].firstChild.nodeValue,
                selected: indexSelected
            };
        }

        box.ui('form.callbackForm').field('callbackDay').setOptions(newOptions, true);
        box.ui('form.callbackForm').field('callbackDay').setIndex(selectedOption);
    });
}

function changeMonthOfYear () {
	$.get("/datesmonth.xml.php", {year:$('#callbackYear').attr('value')},
    function(data){
     	var newOptions = new Array();
        newOptions[0] = {value:0,text:"",selected:false};
		box.ui('form.callbackForm').field('callbackDay').setIndex(0);

        xmlDocRef = StringtoXML(data).getElementsByTagName("month");
	    for (i=0; i<xmlDocRef.length; i++) {
            var indexSelected = false;
            if (i == box.ui('form.callbackForm').field('callbackMonth').getIndex()) {
                indexSelected = true;
                selectedOption = i;
            }
            newOptions[i] = {
                value: xmlDocRef[i].getAttribute("id"),
                text: xmlDocRef[i].firstChild.nodeValue,
                selected: indexSelected
            };
        }

        box.ui('form.callbackForm').field('callbackMonth').setOptions(newOptions, true);
     	box.ui('form.callbackForm').field('callbackMonth').setIndex(0);


		});
}
*/