jQuery(function() {
		
	jQuery('#cffx_fix_attached').submit(function(){
		cffx_fix_postmeta('cffx_fix_attached');
		return false;
	});
	jQuery('#cffx_fix_attachment_metadata').submit(function(){
		cffx_fix_postmeta('cffx_fix_attachment_metadata');
		return false;
	});
	jQuery('#cffx_fix_post_attachments').submit(function() {
		cffx_fix_postmeta('cffx_fix_post_attachments');
		return false;
	});
	jQuery('#cffx_fix_legacy').submit(function() {
		cffx_fix_postmeta('cffx_fix_legacy');
		return false;
	});
	
	function cffx_fix_postmeta(metafix) {
		var batch_offset = 0;
		var batch_increment = 10;
		var finished = false;
		
		params = {'cffx_rebuild_indexes':'1',
				  'cffx_rebuild_offset':'0'
				 }
		cffx_update_status('Processing post meta');
		
		// process posts
		while(!finished) {
			response = cffx_batch_request(batch_offset,batch_increment,metafix);
			if(!response.result && !response.finished) {
				cffx_update_status('Post Meta processing failed. Server said: ' + response.message);
				return;
			}
			else if(!response.result && response.finished) {
				cffx_update_status('Post Meta processing complete.');
				finished = true;
			}
			else if(response.result) {
				cffx_update_status(response.message);
				batch_offset = (batch_offset + batch_increment);
			}
		}
	}
	
	// make a request
	function cffx_batch_request(offset,increment,metafix) {
		var r = jQuery.ajax({type:'post',
								url:'index.php',
								dataType:'json',
								async:false,
								data:'cf_action='+metafix+'&cffx_batch_offset=' + offset + '&cffx_batch_increment=' + increment
							}).responseText;
		var j = eval( '(' + r + ')' );
		return j;
	}
	
	// handle the building of indexes
	function cffx_index_build_callback(response) {
		if(response.result) {
			cffx_update_status('Post Meta Fix Complete');
		}
		else {
			cffx_update_status('Failed to fix post meta');
		}
	}
	
	// update status message
	function cffx_update_status(message) {
		if(!jQuery('#index-status').hasClass('updated')) {
			jQuery('#index-status').addClass('updated');
		}
		jQuery('#index-status p').html(message);
	}
	
});
