void mouseButton(int button, int state, int x, int y) {

	// only start motion if the left button is pressed
	if (button == GLUT_LEFT_BUTTON)
	{
		// when the button is released
		if (state == GLUT_UP) 
		{
			switch (stage)
			{
				case MAIN:
				if ((432 <= x <= 572 && 320 <= y <= 380) || (432 <= Xmouse <= 572 && 220 <= Ymouse <= 280))
				{
					Xmouse = x;
					Ymouse = y;
				}
				else if (450<=x<=675)//if choosing type of building by mouse
				{
					if (400<=y<=450)
						KindOf = garage;
					else if (450 <= y <= 500)
						KindOf = house;
				}
				else if (675 <= x <= 900)
				{
					if (400 <= y <= 450)
						KindOf = storage;
					else if (450 <= y <= 500)
						KindOf = office;
				}
				if (KindOf == house || KindOf == office)
				{
					if (125 <= y <= 175)
					{
						if (482 <= x <= 532)
							Building::numFloors = 1;
						if (552 <= x <= 602)
							Building::numFloors = 2;
						if (622 <= x <= 672)
							Building::numFloors = 3;
						if (KindOf == office)
						{
							if (692 <= x <= 742)
								Building::numFloors = 4;
							if (762 <= x <= 812)
								Building::numFloors = 5;
						}
					}
				}
				if (20 <= y <= 80)
				{
					if (570 <= x <= 690)
						exit(0);
					if (740 <= x <= 860)
					{
						if (KindOf == house)
						{
							delete &CalcObject;
							House CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00, Building::numFloors);
						}
						if (KindOf == office)
						{
							delete &CalcObject;
							Office CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00, Building::numFloors);
						}
						if (KindOf == garage)
						{
							delete &CalcObject;
							Garage CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00);
						}
						if (KindOf == storage)
						{
							delete &CalcObject;
							Storage CalcObject(takeKlen.enteredNum, takeKwid.enteredNum, 3.00);
						}
						stage = FOUND;
					}
				}
				ProgMenu();//mozhet ne nuzhno
				break;
			case FOUND:
				if (0 <= x <= 450)
				{
					if (100 <= y <= 200)
					{
						CalcObject.foundType = concrete40;
						lightPlace = 5;
					}
					if (200 < y <= 300)
					{
						CalcObject.foundType = stone40;
						lightPlace = 3;
					}
					if (300 < y <= 400)
					{
						CalcObject.foundType = block40;
						lightPlace = 1;
					}
				}
				else if (450 < x < 900)
				{
					if (100 <= y <= 200)
					{
						CalcObject.foundType = concrete50;
						lightPlace = 6;
					}
					if (200 < y <= 300)
					{
						CalcObject.foundType = stone50;
						lightPlace = 4;
					}
					if (300 < y <= 400)
					{
						CalcObject.foundType = block50;
						lightPlace = 2;
					}
				}
				if (20 <= y <= 80)
				{
					CalcObject.FoudCalc(CalcObject.foundType,1.0);
					if (570 <= x <= 690)
					{
						stage = MAIN;
						lightPlace = 0;
					}
					if (740 <= x <= 860)
					{
						stage = WALLS;
						lightPlace = 0;
					}
				}
				break;
			case WALLS: 
				if (0 <= x <= 450)
					{
						if (100 <= y <= 200)
						{
							CalcObject.wallType = aeratedBlock40;
							lightPlace = 5;
						}
						if (200 < y <= 300)
						{
							CalcObject.wallType = whiteBrick38;
							lightPlace = 3;
						}
						if (300 < y <= 400)
						{
							CalcObject.wallType = redBrick38;
							lightPlace = 1;
						}
					}
				else if (450 < x < 900)
					{
						if (100 <= y <= 200)//vvod ploshadi proyemov
						{
							Xmouse = x;
							Ymouse = y;
						}
						if (200 < y <= 300)
						{
							CalcObject.wallType = whiteBrick51; 
							lightPlace = 4;
						}
						if (300 < y <= 400)
						{
							CalcObject.wallType = redBrick51;
							lightPlace = 2;
						}
					}
				if (20 <= y <= 80)
				{
					CalcObject.WallCalc(CalcObject.wallType);
					if (570 <= x <= 690)
					{
						stage = FOUND;
						lightPlace = 0;
					}
					if (740 <= x <= 860)
					{
						stage = OVERLAPS; 
						lightPlace = 0;
					}
				}
				break;
			case OVERLAPS:
				if (0 <= x <= 450)
				{
					if (100 <= y <= 200)
					{
						CalcObject.overlapType = panel; 
						lightPlace = 5;
					}
					if (200 < y <= 300)
					{
						CalcObject.overlapType = monolith; 
						lightPlace = 3;
					}
					if (300 < y <= 400)
					{
						CalcObject.overlapType = wood; 
						lightPlace = 1;
					}
				}
				if (20 <= y <= 80)
				{
					CalcObject.OverlapCalc(CalcObject.overlapType);
					if (570 <= x <= 690)
					{
						stage = WALLS; 
						lightPlace = 0;
					}
					if (740 <= x <= 860)
					{
						stage = ROOFS; 
						lightPlace = 0;
					}
				}
				break;
			case ROOFS:
				if (KindOf == house || KindOf == office)
				{
					if (0 <= x <= 450)
					{
						if (100 <= y <= 200)
						{
							CalcObject.roofType = hipBitTile; 
							lightPlace = 5;
						}
						if (200 < y <= 300)
						{
							CalcObject.roofType = hipTile; 
							lightPlace = 3;
						}
						if (300 < y <= 400)
						{
							CalcObject.roofType = flat; 
							lightPlace = 1;
						}
					}
					else if (450 < x < 900)
					{
						if (200 < y <= 300)
						{
							CalcObject.roofType = hipMetTile; 
							lightPlace = 4;
						}
						if (300 < y <= 400)
						{
							CalcObject.roofType = hipSlate; 
							lightPlace = 2;
						}
					}
				}
				if (20 <= y <= 80)
				{
					CalcObject.RoofCalc(CalcObject.roofType);
					if (570 <= x <= 690)
					{
						stage = OVERLAPS; 
						lightPlace = 0;
					}
					if (740 <= x <= 860)
					{
						lightPlace = 0;
						CalcObject.print(); 
					}
				}
				break;
			}
		}
	}
}