
if(typeof(contactController) == 'undefined')
    contactController = new Object();
Object.extend(contactController,
{
    _callback4942551731bee: "/dynamic/forms/proxy.phtml",

    _getJSON: function(r, j)
    {
        j = (j || r.headerJSON || r.responseJSON);
        if(j == null)
            return null;
        if(j.errors || j.failed)
        {
            var f = function(a, c)
            {
                var e = $(c);
                if(a.length > 0)
                {
                    var s = '<ul>';
                    $(a).each(function(e){ s += '<li>'+e+'</li>'; });
                    s += '</ul>';
                    if(e){ e.update(s); e.show(); }
                }
                else
                {
                    if(e){ e.hide(); }
                }
            }
            if(!j.errors)
            {
                j.errors = {error: [], warning: [], info: []}
                if(j.failed)
                    j.errors.error[0] = j.message;
            }

            f(j.errors.error, 'globuleError');
            f(j.errors.warning, 'globuleWarning');
            f(j.errors.info, 'globuleInfo');
        }
        return j;
    },

    _proxy: function(callbackurl, methodName, args, sync)
    {
        var targs = $H();
        for(var i = 0; i < args.length-1; i++){ targs.set('args[' + i + ']', args[i]); }
        callback = args[args.length-1];
        var ar = new Ajax.Request(callbackurl + '?method=' + methodName,
        {
            method: 'post',
            asynchronous: (!sync),
            parameters: targs,
            onComplete: (sync)?null:callback,
            onException: function(request, e){console.debug(request, e);}
        });
        if(sync)
            return new Ajax.Response(ar);
    },

    _saveForm: function(){ this._proxy(this._callback4942551731bee, '_saveForm', arguments, false); },
    _saveForm_sync: function(){ return this._proxy(this._callback4942551731bee, '_saveForm', arguments, true); },

    _t: ''
});

Object.extend(contactController,
{
	init: function()
	{	 
	 	 $('btnContact').observe('click', contactController.showForm);
		 $('annuler').observe('click', contactController.hideForm);
		 this.activeButton('Step1');
		 FormValidate.buildValidators('contactForm');
  	},
  
	showForm:function()
	{
		new Effect.Morph('homeFormStep', {style:{'margin-top':'-185px'},duration: 0.8});
		contactController.activeButton('Step2');
	},
	
	hideForm:function()
	{
		
		new Effect.Morph('homeFormStep', {style:{'margin-top':'0px'},duration: 0.8});
		contactController.activeButton('Step1');

	},
	saveForm:function()
	{
			if(FormValidate.validate('contactForm', true, this.displayError))
			{
					var o=$('contactForm').serialize();
					this._saveForm(o, function(r, j)
					{
							j = this._getJSON(r, j);
							if(!j || j.failed)
							{	
								
							}
							else
							{
									new Effect.Morph('homeFormStep', {style:{'margin-top':'-370px'},duration: 0.8});
									this.activeButton('Step3');
							}
				}.bind(this));
			}
		
	},
	activeButton:function(step)
	{
		$('btStep1').src='/media/interface/step1-off.png';
		$('btStep2').src='/media/interface/step2-off.png';
		$('btStep3').src='/media/interface/step3-off.png';
		$('bt'+step).src='/media/interface/'+step.toLowerCase()+'-on.png';
	},
	
	displayError:function($form,showError, validators)
	{
		
		 var str = '<br/><br/><p>Certains champs sont invalides:</p>';
		 validators.each(function(validator)
		 {
		 str += '<p>* ' + validator.options.message + '</p>';
		 });
		 var buttonTpl='<p><a href="#" onclick="contactController.hideError();return false;">Retour</a></p>';
		 $('errorFormStep2').innerHTML=str+buttonTpl;
		 $('errorFormStep2').show();
		 new Effect.Morph('homeFormStep', {style:{'margin-top':'-370px'},duration: 0.8});
 	},
 	
	hideError:function()
	{
		 new Effect.Morph('homeFormStep', {style:{'margin-top':'-185px'},duration: 0.8, afterFinish: function() { $('errorFormStep2').hide(); } });
		 
 	}
	 
});