var MenuController = new Class({
	currentMenu: '',
	selectedMenu: null,
	
	changeMenu: function(menu, submenu) {
		submenu = $(submenu);
		if (menu.id != this.currentMenu.id) {
			$('sub' + this.currentMenu.id).setStyle('display', 'none');
			submenu.setStyle('display', 'block');
			
			this.currentMenu = menu;
		}
	},
	
	onRollover: function(img, over) {
		var src = img.src;
		if (over) {
			var reg = new RegExp("(.+)/off/(.+)","i");
			var matches = reg.exec(src);		
			img.src = matches[1] + "/on/" + matches[2];		
		} else {
			var reg = new RegExp("(.+)/on/(.+)","i");
			var matches = reg.exec(src);		
			img.src = matches[1] + "/off/" + matches[2];				
		}
	},
	
	onDomReady: function() {
		$$("img.menu").each(function(menu){
			menu.onmouseover = function() { this.onRollover(menu, true); }.create({bind: this})
			menu.onmouseout = function() { this.onRollover(menu); }.create({bind: this});
		}, this);	
		
		if (this.selectedMenu) {
			this.currentMenu = $('menu' + this.selectedMenu);
		}
        
        $$('div.menu').each(function(menu){
		    menu.onmouseover = function() {this.changeMenu(menu, 'sub' + menu.id);}.create({bind: this});
        }, this);			
	}
});

var ContactPageController = new Class({
    _shakeFormEffect: null,
    
    onDomReady: function() {
        $('sendButton').addEvent('click', this.sendMail.bindWithEvent(this));
        $('clearButton').addEvent('click', this.clearForm.bindWithEvent(this));
    },
    
    clearForm: function() {
        var nameField = $('nameField');
        var firstNameField = $('firstNameField');
        var emailField = $('emailField');
        var messageField = $('messageField');
		nameField.set('value', '');
        nameField.parentNode.removeClass('field-error');
		firstNameField.set('value', '');
        firstNameField.parentNode.removeClass('field-error');
		emailField.set('value', '');
        emailField.parentNode.removeClass('field-error');
		messageField.set('value', '');
        messageField.parentNode.removeClass('field-error');
    },
    
    sendMail: function(event) {
        event.preventDefault();
        
        var nameField = $('nameField');
        var firstNameField = $('firstNameField');
        var emailField = $('emailField');
        var messageField = $('messageField');
        var isValid = true;
        
        if (nameField.get('value').length == 0) {
            this._showError(nameField, true);
            isValid = false;
        } else {
            this._showError(nameField, false);
        }
        
        if (firstNameField.get('value').length == 0) {
            this._showError(firstNameField, true);
            isValid = false;
        } else {
            this._showError(firstNameField, false);
        }
        if (! emailField.get('value').match(/^[a-z0-9._%-]+@[a-z0-9.-]+\.[a-z]{2,4}$/i)) {
            this._showError(emailField, true);
            isValid = false;
        } else {
            this._showError(emailField, false);
        }
        if (messageField.get('value').length == 0) {
            this._showError(messageField, true);
            isValid = false;
        } else {
            this._showError(messageField, false);
        }
        
        if (isValid) {
        	
        	new Request.JSON({
        		url:'../php/sendmail.php',
                'onComplete': function(response) {
                    var responseNode = $('responseMessage');
                    if (response.status == 'success') {               
                        firstNameField.value = "";
                        nameField.value = "";
                        emailField.value = "";
                        messageField.value = "";
                        $('contactForm').setStyle('display', 'none');
                        if (responseNode) {
                            responseNode.set('text', response.message);
                            responseNode.removeClass('message-error');
                            responseNode.addClass('message-success');
                        }
                    } else if (response.status == 'error') {
                        if (responseNode) {
                            responseNode.set('text', response.message);
                            responseNode.removeClass('message-success');
                            responseNode.addClass('message-error');
                        }
                    }
                }
        	}).post( $('contactForm'));
        } else {
//            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');
        }
    }
});
