//-- updated for jQuery 1.4

	page.contact = function () {
	
		var _ = {};
		
		var init = function () {
			render.init();
		};
		
		var config = {
			$content:		$('#content'),
			$body:			$('body'),
			$form_field:	$('#email_form .field'),
			$form_submit:	$('#email_form #submit'),
			emailPattern:	/^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/
		};
		
		var render = {
			init: function () {
				config.$content.empty().append( render.page() );
				config.$body.append( render.popup() );
			},
			page: function () {
				return $('<div />', { id: 'contact_info' })
					.append( render.heading() )
					.append( render.contents() );
			},
			heading: function () {
				return $('<div />', { 'class': 'heading', text: 'Contact Information' });
			},
			contents: function () {
				return $('<div />', { id: 'section_content' })
					.append( render.right_column() )
					.append( render.form() );
			},
			right_column: function () {
				var ret = $('<div />', { id: 'right_column' })
					.append( $('<img />', { 'class': 'contact_icon', 'src': 'img/icons/contact_info.jpg' }) )
					.append( $('<h1 />', { text: 'Information' }) )
					.append( $('<h2 />', { text: 'Phone: (845) 476-8283' }) )
					.append( $('<h2>Email: <a href="mailto:robert.messerle@gmail.com">robert.messerle@gmail.com</a></h2>') );
					//-- try to clean up the email line later
				return ret;
			},
			popup: function () {
				return $('<div />', { id: 'popup' })
					.append( $('<h1 />', { text: 'Your message has been sent' }) );
			},
			form: function () {
				return $('<form />', { id: 'email_form', name: 'email_form', submit: events.submit })
					.append( render.field.name() )
					.append( render.field.email() )
					.append( render.field.body() )
					.append( render.field.submit() );
			},
			field: {
				name: function () {
					return $('<div />')
						.append( $('<label />', { 'for': 'name_field', id: 'name_label', text: 'Name:' } ) )
						.append( $('<input />', { focus: events.field.focus, blur: events.field.blur, keyup: events.field.keyup, css: { opacity: .5 }, autocomplete: 'off', 'class': 'field', type: 'text', name: 'name_field', id: 'name_field' }) );
				},
				email: function () {
					return $('<div />')
						.append( $('<label />', { 'for': 'email_field', id: 'email_label', text: 'Email:' }) )
						.append( $('<input />', { focus: events.field.focus, blur: events.field.blur, keyup: events.field.keyup, css: { opacity: .5 }, autocomplete: 'off', 'class': 'field', type: 'text', name: 'email_field', id: 'email_field' }) );
				},
				body: function () {
					return $('<div />')
						.append( $('<label />', { 'for': 'body_field', id: 'body_label', text: 'Message:' }) )
						.append( $('<textarea />', { focus: events.field.focus, blur: events.field.blur, keyup: events.field.keyup, css: { opacity: .5 }, autocomplete: 'off', 'class': 'field', name: 'body_field', id: 'body_field' }) );
				},
				submit: function () {
					return $('<input />', { type: 'submit', name: 'submit', id: 'submit', 'class': 'inactive', value: 'Send', css: { opacity: .25 } });
				}
			}
		};
		
		var events = {
			field: {
				keyup: function () {
					var valid = true;
					var emailPattern = config.emailPattern;
					
					valid = emailPattern.test($('#email_field').attr('value')) && valid;
					valid = $('#name_field').attr('value').length > 0 && valid;
					valid = $('#body_field').attr('value').length > 0 && valid;
					
					if (valid)
						$('#submit').removeClass('inactive').stop().animate({opacity:1},{duration:350,easing:'none'});
					else
						$('#submit').addClass('inactive').stop().animate({opacity:.25},{duration:350,easing:'none'});
						
					_.valid = valid;
				},
				blur: function () {
					if( !utils.isValid( $(this) ) )
						$(this).stop().animate({opacity:.5},{duration:350,easing:'none'});
					else
						$(this).addClass('valid');
				},
				focus: function () {
					$(this).stop().animate({opacity:1},{duration:350,easing:'none'});
				}
			},
			submit: function () {
				var valid = !$('#submit').hasClass('inactive');
				if (valid) {
					php.sendEmail();
				}
				return false;
			}
		};
		
		var utils = {
			isValid: function (elem) {
				var ret = false;
				switch (elem.attr('id')) {
					case 'name_field':
					case 'body_field':
						if (elem.attr('value').length > 0) ret = true;
						break;
					case 'email_field':
						if (config.emailPattern.test(elem.attr('value'))) ret = true;
						break;
				}
				return ret;
			},
			getValue: function (elem) {
				return utils.isValid(elem) ? .75 : .5;
			}
		};
		
		var php = {
			sendEmail: function () {
				$.ajax({
					url:		'/services/email/',
					data:		{
						name:		$('#name_field').attr('value'),
						email:		$('#email_field').attr('value'),
						message:	$('#body_field').attr('value')
					},
					type:		'POST',
					dataType:	'json',
					success:	function (data) {
						//-- clear form fields
						$('#name_field').attr('value', '').animate({opacity:.5},{duration:350,easing:'none'});
						$('#email_field').attr('value', '').animate({opacity:.5},{duration:350,easing:'none'});
						$('#body_field').attr('value', '').animate({opacity:.5},{duration:350,easing:'none'});
						//-- update the send button
						events.field.keyup();
						//-- display email sent message
						$('#popup').fadeIn(1000, function(){
							setTimeout(function(){
								$('#popup').fadeOut(1000);
							},3000);
						});
					}
				});
			}
		};
		
		init();
		
		return _;
	};