jQuery(document).ready(function(){
// see svn rev 202 for an alternative implementation
	jQuery('#contact_form').submit( function(event) {
			var json = $.ajax({
					  url: '/contact/validate',
					  data: jQuery('#contact_form').serialize(),
					  type: 'POST',
					  dataType: 'json',
					  async: false
					 }).responseText;

			
			if(json == 'true')
			{
				jQuery('dd ul').remove();
				jQuery('body').append('<iframe id="form_target_iframe" name="uploadTarget"></iframe>');
				jQuery('#contact_form').attr('target', 'uploadTarget' );
				jQuery('#submit-element').append('<div id="upload_progressbar_wrap">Upload Progress: <span id="upload_message"></span><div id="upload_progressbar"></div></div>');
				jQuery('#upload_progressbar').progressbar({value: 0});
				setTimeout(monitorUpload, 1000);
				return true;
			}
			else
			{
				//loop errs and update form
				json = eval(json);
				jQuery.each(json, function(fieldName, errList) {
					var ul = '<ul>';
					jQuery.each(errList, function() {
						ul += '<li>'+this+'</li>';
					});
					ul += '</ul>';
					jQuery('#'+fieldName).after(ul);
				});
				return false;
			
			}
	} );
		
	function monitorUpload()
	{
		var data = { progress_key: jQuery('#progress_key').val() };
		jQuery.get('/contact/uploadprogress', data, uploadProgress, 'json');
	}
	
	function uploadProgress(json)
	{
		if(json.finished)
		{
			jQuery('#upload_progressbar').progressbar('option', 'value', 100);
			jQuery('#upload_message').html('Transfer Complete');
		}
		else
		{
			jQuery('#upload_progressbar').progressbar('option', 'value', json.percent);
			jQuery('#upload_message').html(json.text);
			setTimeout(monitorUpload, 1000);
		}
	}
 });

