function calculate_space()
{
	// ---=== Read input / correct input ===--- //
	
	office_type = $('#select_1').val();
	office_plan = $( '#select_2' ).val();
	
	number_of_employees = parseFloat( $( '#calculator_no_employees' ).val() );
	if( isNaN( number_of_employees ) ) 
	{
		number_of_employees = 0;
	}
	$( '#calculator_no_employees' ).val( number_of_employees );
	
	number_of_presidents = parseFloat( $( '#calculator_no_presidents' ).val() );
	if( isNaN( number_of_presidents ) ) 
	{
		number_of_presidents = 0;
	}
	$( '#calculator_no_presidents' ).val( number_of_presidents );
	
	number_of_vicepresidents = parseFloat( $( '#calculator_no_vicepresidents' ).val() );
	if( isNaN( number_of_vicepresidents ) ) 
	{
		number_of_vicepresidents = 0;
	}
	$( '#calculator_no_vicepresidents' ).val( number_of_vicepresidents );
	
	number_of_managers = parseFloat( $( '#calculator_no_managers' ).val() );
	if( isNaN( number_of_managers ) ) 
	{
		number_of_managers = 0;
	}
	$( '#calculator_no_managers' ).val( number_of_managers );
	
	percentage_agile_workers = parseFloat( $( '#calculator_agile_workers' ).val() );
	if( isNaN( percentage_agile_workers ) ) 
	{
		percentage_agile_workers = 0;
	}
	$( '#calculator_agile_workers' ).val( percentage_agile_workers );
	
	
	// ---=== Begin calculation ===--- //
	
	// number_121rooms
	if( office_plan == 'cellular' )
	{
		number_121rooms = 0;
	}
	else
	{
		number_121rooms = Math.ceil( number_of_employees / 40 );
	}
	
	// number_46persons
	if( number_of_employees - 30 > 0 )
	{
		number_46persons = Math.ceil( ( number_of_employees - 30 ) / 25 );
	}
	else
	{
		number_46persons = 0;
	}
	
	// number_68persons
	if( number_of_employees > 149 && office_type == 'hq' )
	{
		number_68persons = Math.ceil( number_of_employees / 300 );
	}
	else
	{
		number_68persons = Math.ceil( number_of_employees / 75 );
	}
	
	// number_1216persons
	number_1216persons = Math.ceil( number_of_employees / 50 );
	
	// number_conference_rooms
	if( number_of_employees > 500 && office_type == 'hq' )
	{
		number_conference_rooms = Math.ceil( number_of_employees / 1250 );
	}
	else if( number_of_employees > 59 && office_type == 'manufacturer' )
	{
		number_conference_rooms = Math.ceil( number_of_employees / 100 );
	}
	else if( number_of_employees > 49 && office_type == 'consultant' )
	{
		number_conference_rooms = Math.ceil( number_of_employees / 75 );
	}
	else
	{
		number_conference_rooms = 0;
	}
	
	// number_workstations
		// by type
	workstations_president = number_of_presidents;
	workstations_vicepresident = number_of_vicepresidents;
	workstations_managers = number_of_managers;
	workstations_standard = number_of_employees - number_of_presidents - number_of_vicepresidents - number_of_managers - (( number_of_employees - number_of_presidents - number_of_vicepresidents - number_of_managers ) * percentage_agile_workers / 100 );
	workstations_touchdown = ( number_of_employees - number_of_presidents - number_of_vicepresidents - number_of_managers ) * percentage_agile_workers / 100 * 0.7;
		// total
	number_workstations = Math.round( workstations_president + workstations_vicepresident + workstations_managers + workstations_standard + workstations_touchdown );
	
	// total_space 
		// space definition by type
		president_open = 13;
		president_cell = 30;
		
		vp_open = 9;
		vp_cell = 20;
		
		manager_open = 5.5; 
		manager_cell = 12; 
		
		std_open = 4.2; 
		std_cell = 8;
		
		touchdown_open = 4;
		touchdown_cell = 0;
		
		carrel_open = 3.25;
		carrel_cell = 0;
		carrel_number = number_of_employees / 50; // no round
		
		personal_storage_open = 1;
		personal_storage_cell = 0; // times number_of_employees
		
		kitchen_open = 18;
		kitchen_cell = 25;
		kitchen_number = Math.ceil( number_of_employees / 100 );
		
		informal_open = 5;
		informal_cell = 0;
		if( office_type == 'hq' )
		{
			informal_number = Math.ceil( number_of_employees / 25 );
		}
		else
		{
			informal_number = Math.ceil( number_of_employees / 12 );
		}
		
		service_open = 9;
		service_cell = 15; 
		service_number = Math.ceil( service_open / 100 );
		
		sup_121rooms_open = 9;
		sup_121rooms_cell = 0;
		if( office_plan == 'cellular' )
		{
			sup_121rooms_number = 0;
		}
		else
		{
			sup_121rooms_number = Math.ceil( number_of_employees / 40 );
		}
		
		sup_46persons_open = 18;
		sup_46persons_cell = 18;
		if( number_of_employees - 30 > 0 )
		{
			sup_46persons_number = Math.ceil( ( number_of_employees - 30 ) / 25 );
		}
		else
		{
			sup_46persons_number = 0;
		}
		
		sup_68persons_open = 21;
		sup_68persons_cell = 21;
		if( number_of_employees > 149 && office_type == 'hq' )
		{
			sup_68persons_number = Math.ceil( number_of_employees / 300 );
		}
		else
		{
			sup_68persons_number = Math.ceil( number_of_employees / 75 );
		}
		
		sup_1216persons_open = 32;
		sup_1216persons_cell = 32;
		sup_1216persons_number = Math.ceil( number_of_employees / 50 );
		
		conference_open = 40;
		conference_cell = 40;
		if( number_of_employees > 500 && office_type == 'hq' )
		{
			conference_number = Math.ceil( number_of_employees / 1250 );
		}
		else if( number_of_employees > 59 && office_type == 'manufacturer' )
		{
			conference_number = Math.ceil( number_of_employees / 100 );
		}
		else if( number_of_employees > 49 && office_type == 'consultant' )
		{
			conference_number = Math.ceil( number_of_employees / 75 );
		}
		else
		{
			conference_number = 0;
		}
		
		storage_area_open = 10;
		storage_area_cell = 10;
		storage_area_number = Math.ceil( number_of_employees / 50 );
		
		comms_open = 8;
		comms_cell = 8;
		comms_number = Math.ceil( number_of_employees / 100 );
		
		reception_open = 25;
		reception_cell = 25;
		reception_number = Math.ceil( number_of_employees / 100 );
		
		
		// space requirements calculation
		if( office_plan == 'full-open-plan' )
		{
			total_space_president = president_open * number_of_presidents;
			total_space_vp = vp_open * number_of_vicepresidents;
			total_space_managers = manager_open * number_of_managers;
			total_space_std = std_open * workstations_standard;
			total_space_touchdowns = touchdown_open * workstations_touchdown;
			total_space_carrels = carrel_open * carrel_number; 
			total_space_personal_storage = personal_storage_open * number_of_employees;
			total_space_kitchen = kitchen_open * kitchen_number;
			total_space_informal = informal_open * informal_number;
			total_space_service = service_open * service_number;
			total_space_121rooms = sup_121rooms_open * sup_121rooms_number;
			total_space_46persons = sup_46persons_open * sup_46persons_number;
			total_space_68persons = sup_68persons_open * sup_68persons_number;
			total_space_1216persons = sup_1216persons_open * sup_1216persons_number;
			total_space_conference = conference_open * conference_number;
		}
		else
		{
			total_space_president = president_cell * number_of_presidents;
			total_space_vp = vp_cell * number_of_vicepresidents;
			total_space_managers = manager_cell * number_of_managers;
			if( office_plan == 'partial-open-plan' )
			{
				total_space_std = std_open * workstations_standard;
				total_space_touchdowns = touchdown_open * workstations_touchdown;
				total_space_carrels = carrel_open * carrel_number; 
				total_space_personal_storage = personal_storage_open * number_of_employees + number_of_presidents + number_of_vicepresidents + number_of_managers;
				total_space_kitchen = kitchen_open * kitchen_number;
				total_space_informal = informal_open * informal_number;
				total_space_service = service_open * service_number;
				total_space_121rooms = sup_121rooms_open * sup_121rooms_number;
				total_space_46persons = sup_46persons_open * sup_46persons_number;
				total_space_68persons = sup_68persons_open * sup_68persons_number;
				total_space_1216persons = sup_1216persons_open * sup_1216persons_number;
				total_space_conference = conference_open * conference_number;
			}
			else
			{
				total_space_std = std_cell * workstations_standard;
				total_space_touchdowns = touchdown_cell * workstations_touchdown;
				total_space_carrels = carrel_cell * carrel_number; 
				total_space_personal_storage = personal_storage_cell * number_of_employees;
				total_space_kitchen = kitchen_cell * kitchen_number;
				total_space_informal = informal_cell * informal_number;
				total_space_service = service_cell * service_number;
				total_space_121rooms = sup_121rooms_cell * sup_121rooms_number;
				total_space_46persons = sup_46persons_cell * sup_46persons_number;
				total_space_68persons = sup_68persons_cell * sup_68persons_number;
				total_space_1216persons = sup_1216persons_cell * sup_1216persons_number;
				total_space_conference = conference_cell * conference_number;
			}
		}
			//~ alert( total_space_president );
			//~ alert( total_space_vp );
			//~ alert( total_space_managers );
			//~ alert( total_space_std );
			//~ alert( total_space_touchdowns );
			//~ alert( total_space_carrels ); 
			//~ alert( total_space_personal_storage );
			//~ alert( total_space_kitchen );
			//~ alert( total_space_informal );
			//~ alert( total_space_service );
			//~ alert( total_space_121rooms );
			//~ alert( total_space_46persons );
			//~ alert( total_space_68persons );
			//~ alert( total_space_1216persons );
			//~ alert( total_space_conference );
		
		space_requirement = total_space_president + total_space_vp + total_space_managers + total_space_std + total_space_touchdowns + total_space_carrels + total_space_personal_storage + total_space_kitchen + total_space_informal + total_space_service + total_space_121rooms + total_space_46persons + total_space_68persons + total_space_1216persons + total_space_conference;
		
		internal_circulation_open = 0.20;
		internal_circulation_cell = 0.25;
		
		shared_common_space_open = 0.15;
		shared_common_space_cell = 0.15;
		
		if( office_plan == 'full-open-plan' )
		{
			total_space_internal_circulation = space_requirement * internal_circulation_open;
			total_space_shared_common = ( space_requirement + total_space_internal_circulation ) * shared_common_space_open;
		}
		else
		{
			if( office_plan == 'partial-open-plan' )
			{
				total_space_internal_circulation = space_requirement * internal_circulation_open;
				total_space_shared_common = ( space_requirement + total_space_internal_circulation ) * shared_common_space_open;
			}
			else
			{
				total_space_internal_circulation = space_requirement * internal_circulation_cell;
				total_space_shared_common = ( space_requirement + total_space_internal_circulation ) * shared_common_space_cell;
			}
		}
		
		total_space_internal_circulation = Math.round( total_space_internal_circulation );
		total_space_shared_common = Math.round( total_space_shared_common );
		
		total_space = Math.round( space_requirement + total_space_internal_circulation + total_space_shared_common );
	
	// space_per_employee 
	space_per_employee = Math.round( total_space / number_of_employees * 100 ) / 100;
	
	// space_per_desk 
	space_per_desk = Math.round( total_space / number_workstations * 100 ) / 100;
	
	// display results
	
	// total space information 
	$( '#calculator_121rooms' ).html( number_121rooms );
	$( '#calculator_46persons' ).html( number_46persons );
	$( '#calculator_68persons' ).html( number_68persons );
	$( '#calculator_1216persons' ).html( number_1216persons );
	$( '#calculator_conference' ).html( number_conference_rooms );
	$( '#calculator_workstations' ).html( number_workstations );
	$( '#calculator_total_space' ).html( total_space );
	$( '#calculator_space_per_employee' ).html( space_per_employee );
	$( '#calculator_space_per_desk' ).html( space_per_desk );
	
	// unit space information
	if( office_plan == 'full-open-plan' )
	{
		$( '#calculator_sup121rooms' ).html( sup_121rooms_open );
		$( '#calculator_sup46persons' ).html( sup_46persons_open );
		$( '#calculator_sup68persons' ).html( sup_68persons_open );
		$( '#calculator_sup1216persons' ).html( sup_1216persons_open );
		$( '#calculator_supconference' ).html( conference_open );
	}
	else
	{
		if( office_plan == 'partial-open-plan' )
		{
			$( '#calculator_sup121rooms' ).html( sup_121rooms_open );
			$( '#calculator_sup46persons' ).html( sup_46persons_open );
			$( '#calculator_sup68persons' ).html( sup_68persons_open );
			$( '#calculator_sup1216persons' ).html( sup_1216persons_open );
			$( '#calculator_supconference' ).html( conference_open );
		}
		else
		{
			$( '#calculator_sup121rooms' ).html( sup_121rooms_cell );
			$( '#calculator_sup46persons' ).html( sup_46persons_cell );
			$( '#calculator_sup68persons' ).html( sup_68persons_cell );
			$( '#calculator_sup1216persons' ).html( sup_1216persons_cell );
			$( '#calculator_supconference' ).html( conference_cell );
		}
	}
	
}
