var contactFadeDuration = 300;
var contactUrl = '/contact/'
var contactFocusField = null;

function contactStart() {
	$('contact-form').set('morph', { duration: contactFadeDuration, 
		onComplete: function() {
			if ( ! contactValidate() ) {
				$('contact-form').set('morph', { duration: contactFadeDuration, 
					onComplete: function() {
						contactFocusField.focus();
						contactFocusField = null; 
					}
				});
				setTimeout ( function () { $('contact-form').morph( { opacity: 1 } ); }, contactFadeDuration );
				return;
			}
			contactSend();
		} 
	} );
	$('contact-form').morph( { opacity: 0 } );
}

function contactValidate() {
	
	var fields = $('contact-form').getElements('.formrow input.text, .formrow textarea');
	var rows = $('contact-form').getElements('.formrow');

	var errorMessages = new Array();

	for ( var i = 0; i < fields.length; i++ ) {
		var field = fields[i];
		if(field.id == 'send') continue;
		switch(field.id) {
			case 'email':
				if ( field.value == '' || field.value == field.title || field.value.length < 3 ) {
					errorMessages[i] = 'This field is mandatory';
				} else {
					var regex = /^[\w\.\_\+-]*@[\w\_\+-]+(\.[\w\_\+-]+)*\.[\w\+-]+$/;
					if ( field.value.search( regex ) == -1 ) {
						errorMessages[i] = 'Please provide a valid email address';
					}
				}
				break;
			default:
				if ( field.value == '' || field.value == field.title || field.value.length < 3 ) {
					errorMessages[i] = 'This field is mandatory';
				}
				break;
		}
	}
		
	if (errorMessages.length == 0) return true;
	
	for ( var i = 0; i < fields.length; i++ ) {
		var field = fields[i];
		if(field.id == 'send') continue;
		
		if ( errorMessages[i] == '' || errorMessages[i] == undefined  ) continue;
		
		if( contactFocusField == null ) contactFocusField = field;
		
		field.className = field.className.split(' invalid').join('') + ' invalid';
		
		var errorMsgDiv = new Element('div', {
			'class': 'error-msg',
			'html': errorMessages[i],
			'styles': {
				'top': fields[i].getPosition().y + 'px',
				'left': ( fields[i].getPosition().x + fields[i].getSize().x + 15) + 'px'
			}
		} );
		rows[i].grab(errorMsgDiv);
	}
	
	return false;
}

function contactSend() {
	var fields = $('contact-form').getElements('.formrow input.text, .formrow textarea');
	var rows = $('contact-form').getElements('.formrow');

	$('contact-form').style.display = 'none';
	
	var workingDiv = new Element( 'div', { 'class': 'element-loading', 'styles': { 'height': '100px', 'display': 'none' } } );
	workingDiv.set('reveal', { duration: contactFadeDuration, 
		onComplete: function() {
			var data = 'sessid=' + sessid;
			data += '&content-only=' + sessid;
			data += '&process=' + sessid;
			for ( var i = 0; i < fields.length; i++ ) {
				var field = fields[i];
				data += '&' + field.id + '=' + escape( field.value );
				field.value = field.title;
			}
			
			var ajaxContact = getNewXMLHttp();
			ajaxContact.open("POST", contactUrl, true);
			ajaxContact.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");	    
			ajaxContact.onreadystatechange = function() {
				if(ajaxContact.readyState != 4) return;
				
				var resultDiv = new Element('div', { 'html':ajaxContact.responseText, 'styles': { 'display': 'none', 'margin':'20px auto' } } );
				resultDiv.set('reveal', { duration: contactFadeDuration,
					onComplete: function() {
						setTimeout( function() {
							resultDiv.set('reveal', { duration: contactFadeDuration,
								onComplete: function() {
									resultDiv.dispose();
									$('contact-form').set('morph', { duration: contactFadeDuration } );
									$('contact-form').style.display = '';
									$('contact-form').morph( { opacity: 1 } );
								} 
							});
							resultDiv.dissolve();
						}, 10 * contactFadeDuration );
					} 
				} );				
				
				workingDiv.set('reveal', { duration: contactFadeDuration, 
					onComplete: function() {
						workingDiv.dispose();
						$$('.contact-content')[0].grab(resultDiv);			
						resultDiv.reveal();
					}
				} );
				workingDiv.dissolve();
								
			}	
			ajaxContact.send(data);
		} 
	} );
	
	$$('.contact-content')[0].grab(workingDiv);
	workingDiv.reveal();
}

function contactClearInvalidField(field) {
	if(field.id == 'send') return;
	if ( field.className.search('invalid') == -1 ) return;
	
	field.className = field.className.split(' invalid').join('');
	
	var elem = field.getParent().getElements('.error-msg');
	if(elem.length == 0) return;
	
	elem.set('morph', {duration: Math.floor(contactFadeDuration / 2), onComplete: function() { elem.dispose() } } );
	elem.morph( { opacity: 0 } );
}

function contactSendMail() {
	location.href="mailto:info@mariusbudu.com";
}