function isNumeric(value) {
	if(value == null || !value.toString().match(/^[-]?\d*\.?\d*$/)) {
		return false;
	} else {
		return true;
	}
}

function modulate() {
	
	var module_size = 40;
	var module_gutter = 10;
	
	var modules = $('.module');
	
	modules.each(function() {
		
		var target = $(this);
		
		target.addClass('clearfix');

		if(target.attr('w')) {
			var target_w_spec = target.attr('w');
		} else {
			var target_w_spec = 'auto';
		}
		
		if(target.attr('h')) {
			var target_h_spec = target.attr('h');
		} else {
			var target_h_spec = 'auto';
		}
		
		if(target.attr('x')) {
			var target_x_spec = target.attr('x');
		}
		
		if(target.attr('y')) {
			var target_y_spec = target.attr('y');
		}
		
		if(target_w_spec.length > 0 && isNumeric(target_w_spec)) {
			var target_w = (target_w_spec) * (module_size + module_gutter * 2) - (module_gutter * 2);
		} else {
			var target_w = 'auto';
		}
		
		if(target_h_spec.length > 0 && isNumeric(target_h_spec)) {
			var target_h = (target_h_spec) * (module_size + module_gutter * 2) - (module_gutter * 2);
		} else {
			var target_h = 'auto';
		}
		
		if(isNumeric(target_x_spec)) {
			var target_x = (target_x_spec) * (module_size + module_gutter * 2);
		} else {
			var target_x = 0;
		}
		
		if(isNumeric(target_x_spec)) {
			var target_y = (target_y_spec) * (module_size + module_gutter * 2);
		} else {
			var target_y = 0;
		}

		target.css({
			'width': target_w,
			'height': target_h,
			'position': 'relative',
			'left': target_x,
			'top': target_y
		});
		
		if(!isNumeric(target_w_spec)) {
			
			var target_w = 16 * (module_size + module_gutter * 2);
			
			target.css({
				'width': target_w
			});
			
		}
		
		if(!isNumeric(target_h_spec)) {	
			
			var target_h_auto = target.height();
			var target_h_occupancy = Math.ceil((target_h_auto) / (module_size + module_gutter * 2));
			
			var target_h = (target_h_occupancy) * (module_size + module_gutter * 2) - (module_gutter * 2);
			
			target.css({
				'height': target_h
			});
			
		}
		
	});
	
	modules.each(function() {
		if($(this).children('.module').length == 0) {
			$(this).css({ 'padding': '10px' });
		} else {
			$(this).css({ 'width': $(this).width() + 20 + 'px' });
		}
	});
}

function grid(method) {
	if(method == 'enable') {
		$('#wrapper').css({
			'background-image': 'url(\'images/grid.png\')'
		});

		$('.module').css({
			'background-image': 'url(\'images/10.png\')'
		});
		
		grid_enabled = true;
	} else if(method == 'disable') {
		$('#wrapper').css({
			'background-image': 'none'
		});

		$('.module').css({
			'background-image': 'none'
		});
		
		grid_enabled = false;
	}
}