
var Messages = {
    fr: {
        success: 'Merci de votre demande de contact. Nous vous répondrons dans les plus brefs délais.',
        error: 'Un problème est survenu lors de l\'envoi de votre demande de contact. Nous vous prions de nous excuser de ce désagrément.'
    },
    en: {
        success: 'Thank you for your submit. We will answer your request shortly.',
        error: 'A problem occured during mail sending. We apologize for the inconvenients.'
    } 
};

var IndexPageController = new Class({
    _lightbox: null,
    
    _bigtipOptions: {
        showOnClick: false,
        showOnMouseEnter: true,
        fixed: true,
        offsets: {'x': 15, 'y': 160},
        className: 'bigtip',
        maxTitleChars: 30,
        errTitle: '',
        errText: '',
        loadingText: '...',
        onShow: function(tip) {
            tip.setStyle('visibility', 'visible');
            /*tip.setStyle('opacity', 0);
                   new Fx.Style(tip, 'opacity', {
                       transition: Fx.Transitions.Circ.easeInOut,
                       duration: 500
                   }).start(0, 0.99);*/
               },
        onHide: function(tip) {
            tip.setStyle('visibility', 'hidden');
           /*new Fx.Style(tip, 'opacity', {
               transition: Fx.Transitions.Circ.easeInOut,
               duration: 500,
               onComplete: function() {
                   tip.setStyles({
                       'visibility': 'hidden',
                       'opacity': 0
                   });
               }
           }).start(1, 0);*/
       }
    },
    
    onDomReady: function() {
        this._lightbox = new Lightbox($ES('div.lightbox'), {showControls: true, initialHeight:100});
        var tips = $$('.bigtip');
        if (tips != null && tips.length > 0) {
            new MooTips(tips, this._bigtipOptions);
        }
    }
});

var PortfolioPageController = new Class({
    _lightbox: null,
    
    onDomReady: function() {
        this._lightbox = new Lightbox($ES('div.lightbox'), {showControls: true, initialHeight:100});
        buildSlideEffects('more-info-open', 'more-text');
    }
});

var ServicesPageController = new Class({
    
    onDomReady: function() {
        buildSlideEffects('more-info-open', 'more-text');
    }
});

var AgencePageController = new Class({
    
    _onActiveRegexp: new RegExp('team-toggler-(.+)'),
    _onBackgroundRegexp : new RegExp('team-toggler-(.+)-over'),
    
    onDomReady: function() {
        var accordion = new Accordion('td.team-toggler', 'td.team-pict', {
            opacity: false,
            fixedWidth: 418,
            height: false,
            width: true,
            onActive: function(toggler, element) {
                toggler.className = toggler.className.replace(this._onActiveRegexp, 'team-toggler-$1-over');
            }.bind(this),
            onBackground: function(toggler, element) {
                toggler.className = toggler.className.replace(this._onBackgroundRegexp, 'team-toggler-$1');
            }.bind(this)
        }, $('team-accordion'));
    }
});

var ContactPageController = new Class({
    _shakeFormEffect: null,
    
    onDomReady: function() {
        var sendButton = $('sendButton');
        if (sendButton) {
            sendButton.addEvent('click', this.sendMail.bindWithEvent(this));
        }
        var sendButtonAlt = $('sendButtonAlt');
        if (sendButtonAlt) {
            sendButtonAlt.addEvent('click', this.sendMailAlt.bindWithEvent(this));
        }
        this._shakeFormEffect = new Fx.Style($('contactForm'), 'left', {
            duration: 300,
            transition: Fx.Transitions.Shake,
            onComplete: function() {
                $('contactForm').setStyle('left', '0px');
            }
        });
    },
    
    sendMail: function(event) {
        event.preventDefault();
        
        var nameField = $('nameField');
        var emailField = $('emailField');
        var phoneField = $('phoneField');
        var messageField = $('messageField');
        var lang = $('lang').value;
        var isValid = true;
        
        if (! emailField.getValue().match(/^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i) && phoneField.getValue().length == 0) {
            this._showError(emailField, true);
            isValid = false;
        } else {
            this._showError(emailField, false);
        }
        if (nameField.getValue().length == 0) {
            this._showError(nameField, true);
            isValid = false;
        } else {
            this._showError(nameField, false);
        }
        if (messageField.getValue().length == 0) {
            this._showError(messageField, true);
            isValid = false;
        } else {
            this._showError(messageField, false);
        }
        if (isValid) {
            $('contactForm').send({
                method: 'post',
                'onComplete': function(responseText) {
                    var response = Json.evaluate(responseText);
                    var responseNode = $('responseMessage');
                    if (response.status == 'success') {               
                        nameField.value = "";
                        emailField.value = "";
                        phoneField.value = "";
                        messageField.value = "";
                        if (responseNode) {
                            responseNode.setText(Messages[lang].success);
                            responseNode.removeClass('message-error');
                            responseNode.addClass('message-success');
                        }
                    } else if (response.status == 'error') {
                        if (responseNode) {
                            responseNode.setText(Messages[lang].error);
                            responseNode.removeClass('message-success');
                            responseNode.addClass('message-error');
                        }
                    }
                }
            });
        } else {
            var responseNode = $('responseMessage');
            if (responseNode) {
                responseNode.setText('');
                responseNode.removeClass('message-success');
                responseNode.removeClass('message-error');
            }
            this._shakeFormEffect.start(0, 5);
        }
        return false;
    },
    
    _showError: function(field, showError) {
        var parentField = field.getParent();
        if (showError) {
            parentField.addClass('field-error');
        } else {
            parentField.removeClass('field-error');
        }
    }
});

function buildSlideEffects(togglerClass, slideeClass) {
    $ES('.'+togglerClass).each(function(toggler) {
        var slideeElement = toggler.getNext();
        if(slideeElement && slideeElement.hasClass(slideeClass)) {
            var slideFx = new Fx.Slide(slideeElement, {
                transition: Fx.Transitions.Circ.easeInOut,
                duration: 500,
                onComplete: function() {
                    if (slideFx.open) {
                        toggler.removeClass('more-info-close').addClass('more-info-open');
                    } else {
                        toggler.removeClass('more-info-open').addClass('more-info-close');
                    }
                }
            });
            slideFx.hide();
            slideeElement.setStyle('display', 'block');
            toggler.addEvent('click', function() {
                 slideFx.toggle(); 
            });
        } 
    });
}