 /**************************************************************************
 **   Файл сценариев для реализации расчётов калькулятора окон.           **
 **                                                                       **
 **   Авторы: Глумов Артём Геннадьевич (artyom.altair@gmail.com)          **
 **           Коновальчук Дмитрий Владимирович (dmitry.strong@gmail.com)  **
 **************************************************************************/

/*
 * Класс SizeCalculator, описывающий механизм вычисления цены за окно в зависимости от ширины и высоты.
 * =====================================================================================
*/

/*
 * Функция для получения цены за окна размером width x height по графику. Это означает, что
 * если для заданного значения height нет ломаной цен, то результатом будет ошибка.
 * В случае ошибки возвращает -1.
*/
function price_from_graph(width, height)
{
	// Получаем точки ломаной для заданной высоты.
	var widths = this.controlPoints[(height - this.firstHeight) / this.stepHeight];
	// Переменные, которые будут хранить индексы точек в массиве widths (по сути, опорные значения ширины),
	// между которыми находится заданное значение ширины.
	var firstPoint = -1;
	var secondPoint = -1;
	// Ищем эти точки.
	var prev = -1;
	for(key in widths)
	{
		if(key==width && prev==-1) return widths[key];
		if(key >= width)
		{
			// Если мы перескочили искомое значение, то первая точка - предыдущая, а вторая - текущая.
			firstPoint = prev;
			secondPoint = key;
			break;
		}
		prev = key;
		
	}
	//alert(firstPoint+' '+secondPoint);
	// Проверяем ширину на выход за пределы допустимых значений.
	if(firstPoint == -1 || secondPoint == -1) return -1;
	// Вычисляем число от 0 до 1, которое будет показывать на сколько значение цены должно быть смещено
	// к краям firstPoint и secondPoint (0 - смещение к firstPoint, 1 - смещение к secondPoint).
	var percents = (width - firstPoint) / (secondPoint - firstPoint);
	// Получаем искомое значение цены.
	var result = widths[firstPoint] + (widths[secondPoint] - widths[firstPoint]) * percents;
	return result;
}

/*
 * Функция для вычисления цены окна по заданным ширине (width) и высоте (height).
 * В случае ошибки возвращает значение -1.
*/
function price(width, height)
{
	// Проверяем высоту на выход за пределы допустимых значений.
	if(height < this.firstHeight) return -1;
	if(height > this.firstHeight + this.stepHeight * this.controlPoints.length) return -1;
	// Находим две точки (значения ширины), между которыми лежит искомая точка на графике.
	var firstPoint = this.firstHeight + Math.floor((height - this.firstHeight) / (this.controlPoints.length * this.stepHeight) * this.controlPoints.length) * this.stepHeight;
	var secondPoint = ((height - this.firstHeight) % this.stepHeight == 0) ? (firstPoint) : (firstPoint + this.stepHeight);
	
	// Находим цены на этих высотах.
	
	var price1 = this.price_from_graph(width, firstPoint);
	var price2 = this.price_from_graph(width, secondPoint);
	// Проверка результатов вычислений.
	if(price1 == -1 || price2 == -1) return -1;
	// Делаем линейное приближение и получаем настоящую цену.
	var percents = (height - firstPoint) / this.stepHeight;
	var result = price1 + (price2 - price1) * percents;
	return result;
}

//Функция для нахождения границ значений ширины высоты
function getRestrictions(config_index,packet)
{
	// Делаем поправку на однокамерные-двухкамерные окна.
	config_index = parseInt(config_index);
	config_index += (packet - 1) * 9;
	var sc = create_size_calculator(config_index);
	var fHeight = sc.firstHeight;
	var lHeight = (sc.firstHeight + sc.stepHeight * sc.controlPoints.length) - sc.stepHeight;

	var fWidth = 0;
	var lWidth = 0;
	for(key in sc.controlPoints[0])
	{
		key=parseInt(key);
		if(fWidth == 0) fWidth = key;
		if(key < fWidth) fWidth = key;
		if(key > lWidth) lWidth = key;
	}
	
	var result = {
		fHeight: parseInt(fHeight),
		lHeight: parseInt(lHeight),
		fWidth: parseInt(fWidth),
		lWidth: parseInt(lWidth)
	}
	
	return result;
}


/*
 * Конструктор. Создаёт механизм для вычисления цены окна по его размеру.
 * Принимает минимальное значение высоты окна (firstHeight), шаг с которым повторяются
 * остальные значения высоты (stepHeight) и массив опорных точек на графике цен (controlPoints).
 * Массив содержит столько же элементов, сколько существует различных высот окна.
 * Каждый элемент представляет собой массив, ключом которого является значение
 * высоты для опорной точки, а значением - цена на этой опорной точке. Множество
 * опорных точек задаёт ломаную цен.
*/
function SizeCalculator(firstHeight, stepHeight, controlPoints)
{
	// Задаём поля класса.
	this.firstHeight = firstHeight;
	this.stepHeight = stepHeight;
	this.controlPoints = controlPoints;
	// Задаём методы класса.
	this.price = price;
	this.price_from_graph = price_from_graph;
}

/*
 * ======================================================================================
 * Конец описания класса SizeCalculator.
*/

/*
 * Функция для создания калькулятора размеров. Принимает порядковый номер типа
 * оконной конфигурации.
*/
function create_size_calculator(type)
{
	// Определяем параметры конструктора.
	var firstHeight;
	var stepHeight;
	var controlPoints;
	// Заполняем параметры конструктора в зависимости от выбранной конфигурации.
	switch(type)
	{
		// Однокамерные конфигурации окон.
		case 1: // 1_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints =
				[
					{	//700 мм
						500: 118,
						900: 148,
						1100: 165,
						1300: 179,
						1500: 179
					},
					{	//900 мм
						500: 129,
						900: 158,
						1100: 182,
						1300: 196,
						1500: 197
					},
					{	//1100 мм
						500: 148,
						900: 178,
						1100: 203,
						1300: 220,
						1500: 223
					},
					{	//1300 мм
						500: 158,
						900: 193,
						1100: 219,
						1300: 237,
						1500: 240
					},
					{	//1500 мм
						500: 171,
						900: 207,
						1100: 234,
						1300: 253,
						1500: 254
					},
					{	//1700 мм
						500: 187,
						900: 225,
						1100: 254,
						1300: 274,
						1500: 275
					},
					{	//1900 мм
						500: 198,
						900: 239,
						1100: 268,
						1300: 290,
						1500: 294
					}
				];
				break;
		case 2: // 2_1.jpg
				firstHeight = 100;
				stepHeight = 200;
				controlPoints =
				[
					{	//100 мм
						100: 7,
						1900: 59
					},
					{	//300 мм
						100: 12,
						1900: 74
					},
					{	//500 мм
						100: 17,
						1900: 90
					},
					{	//700 мм
						100: 21,
						1900: 115
					},
					{	//900 мм
						100: 25,
						1900: 122
					},
					{	//1100 мм
						100: 30,
						1900: 137
					},
					{	//1300 мм
						100: 35,
						1900: 153
					},
					{	//1500 мм
						100: 40,
						1900: 168
					},
					{	//1700 мм
						100: 44,
						1900: 184
					},
					{	//1900 мм
						100: 49,
						1900: 200
					}
				];
				break;
		case 3: // 3_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints =
				[
					{	//700 мм
						900: 150,
						1300: 173,
						1500: 185,
						1700: 197,
						1900: 216
					},
					{	//900 мм
						900: 170,
						1300: 193,
						1500: 208,
						1700: 220,
						1900: 240
					},
					{	//1100 мм
						900: 193,
						1300: 219,
						1500: 235,
						1700: 249,
						1900: 270
					},
					{	//1300 мм
						900: 210,
						1300: 238,
						1500: 255,
						1700: 270,
						1900: 294
					},
					{	//1500 мм
						900: 228,
						1300: 258,
						1500: 275,
						1700: 292,
						1900: 318
					},
					{	//1700 мм
						900: 248,
						1300: 282,
						1500: 301,
						1700: 318,
						1900: 345
					},
					{	//1900 мм
						900: 265,
						1300: 300,
						1500: 322,
						1700: 340,
						1900: 368
					}
				];
				break;
		case 4: // 4_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints =
				[
					{	//700 мм
						900: 202,
						1500: 241,
						1700: 253,
						1900: 275
					},
					{	//900 мм
						900: 224,
						1500: 268,
						1700: 280,
						1900: 303
					},
					{	//1100 мм
						900: 258,
						1500: 304,
						1700: 320,
						1900: 342
					},
					{	//1300 мм
						900: 280,
						1500: 330,
						1700: 348,
						1900: 372
					},
					{	//1500 мм
						900: 302,
						1500: 355,
						1700: 373,
						1900: 400
					},
					{	//1700 мм
						900: 330,
						1500: 389,
						1700: 408,
						1900: 435
					},
					{	//1900 мм
						900: 360,
						1500: 420,
						1700: 440,
						1900: 470
					}
				];
				break;
		case 5: // 5_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints =
				[
					{	//700 мм
						1300: 188,
						1500: 195,
						1900: 216
					},
					{	//900 мм
						1300: 210,
						1500: 220,
						1900: 243
					},
					{	//1100 мм
						1300: 240,
						1500: 251,
						1900: 277
					},
					{	//1300 мм
						1300: 262,
						1500: 274,
						1900: 303
					},
					{	//1500 мм
						1300: 284,
						1500: 298,
						1900: 329
					},
					{	//1700 мм
						1300: 302,
						1500: 326,
						1900: 359
					},
					{	//1900 мм
						1300: 334,
						1500: 350,
						1900: 385
					}
				];
				break;
		case 6: // 6_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints =
				[
					{	//700 мм
						1300: 238,
						1550: 251,
						1700: 258,
						1900: 270
					},
					{	//900 мм
						1300: 265,
						1550: 280,
						1700: 288,
						1900: 300
					},
					{	//1100 мм
						1300: 303,
						1550: 320,
						1700: 330,
						1900: 343
					},
					{	//1300 мм
						1300: 321,
						1550: 350,
						1700: 360,
						1900: 375
					},
					{	//1500 мм
						1300: 358,
						1550: 378,
						1700: 389,
						1900: 406
					},
					{	//1700 мм
						1300: 392,
						1550: 415,
						1700: 426,
						1900: 444
					},
					{	//1900 мм
						1300: 428,
						1550: 450,
						1700: 463,
						1900: 482
					},
				];
				break;
		case 7: // 7_1.jpg
				firstHeight = 100;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 100мм
						100:  57,
						300:  62,
						500:  69,
						1900: 116
					},
					{ // 300мм
						100:  72,
						300:  77,
						500:  83,
						1900: 135
					},
					{ // 500мм
						100:  88,
						300:  93,
						500:  101,
						1900: 160
					},
					{ // 700мм
						100:  105,
						300:  109,
						500:  117,
						1900: 183
					},
					{ // 900мм
						100:  122,
						300:  125,
						500:  135,
						1900: 207
					},
					{ // 1100мм
						100:  139,
						300:  141,
						500:  152,
						1900: 231
					},
					{ // 1300мм
						100:  156,
						300:  157,
						500:  168,
						1900: 255
					},
					{ // 1500мм
						100:  173,
						300:  174,
						500:  186,
						1900: 278
					},
					{ // 1700мм
						100:  190,
						300:  189,
						500:  203,
						1900: 302
					},
					{ // 1900мм
						100:  207,
						300:  205,
						500:  219,
						1900: 326
					}
				];
				break;
		case 8: // 8_1.jpg
				firstHeight = 100;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 100мм
						100:  44,
						300:  49,
						500:  56,
						1900: 113
					},
					{ // 300мм
						100:  56,
						300:  62,
						500:  68,
						1900: 121
					},
					{ // 500мм
						100:  70,
						300:  75,
						500:  83,
						1900: 142
					},
					{ // 700мм
						100:  83,
						300:  88,
						500:  96,
						1900: 162
					},
					{ // 900мм
						100:  97,
						300:  102,
						500:  110,
						1900: 182
					},
					{ // 1100мм
						100:  111,
						300:  114,
						500:  125,
						1900: 203
					},
					{ // 1300мм
						100:  124,
						300:  128,
						500:  139,
						1900: 224
					},
					{ // 1500мм
						100:  138,
						300:  141,
						500:  153,
						1900: 246
					},
					{ // 1700мм
						100:  152,
						300:  153,
						500:  167,
						1900: 267
					},
					{ // 1900мм
						100:  165,
						300:  166,
						500:  180,
						1900: 288
					}
				];
				break;
		case 9: // 9_1.jpg
				firstHeight = 500;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 500мм
						300:  80,
						1500:  170
					},
					{ // 700мм
						300:  90,
						1500:  190
					},
					{ // 900мм
						300:  102,
						1500:  208
					},
					{ // 1100мм
						300:  118,
						1500:  232
					},
					{ // 1300мм
						300:  130,
						1500:  252
					},
					{ // 1500мм
						300:  142,
						1500:  272
					},
					{ // 1700мм
						300:  154,
						1500:  293
					},
					{ // 1900мм
						300:  173,
						1500:  320
					}
				];
				break;
				
		// Двухкамерные конфигурации окон.
		case 10: // 1_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints =
				[
					{ // 700мм
						500:  120,
						900:  147,
						1100: 173,
						1300: 187,
						1500: 189
					},
					{ // 900мм
						500:  133,
						900:  165,
						1100: 192,
						1300: 208,
						1500: 212
					},
					{ // 1100мм
						500:  153,
						900:  188,
						1100: 216,
						1300: 235,
						1500: 241
					},
					{ // 1300мм
						500:  165,
						900:  205,
						1100: 234,
						1300: 255,
						1500: 262
					},
					{ // 1500мм
						500:  177,
						900:  220,
						1100: 253,
						1300: 275,
						1500: 280
					},
					{ // 1700мм
						500:  194,
						900:  242,
						1100: 275,
						1300: 298,
						1500: 306
					},
					{ // 1900мм
						500:  206,
						900:  257,
						1100: 293,
						1300: 318,
						1500: 328
					}
				];
				break;
		case 11: // 2_1.jpg
				firstHeight = 100;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 100мм
						100:  7.5,
						1900: 59
					},
					{ // 300мм
						100:  12,
						1900: 80
					},
					{ // 500мм
						100:  17,
						1900: 102
					},
					{ // 700мм
						100:  20,
						1900: 123
					},
					{ // 900мм
						100:  25,
						1900: 142
					},
					{ // 1100мм
						100:  30,
						1900: 165
					},
					{ // 1300мм
						100:  35,
						1900: 186
					},
					{ // 1500мм
						100:  42,
						1900: 210
					},
					{ // 1700мм
						100:  47,
						1900: 231
					},
					{ // 1900мм
						100:  52,
						1900: 252.5
					}
				];
				break;
		case 12: // 3_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 700мм
						900:  158.5,
						1100: 168,
						1300: 181,
						1500: 197,
						1700: 210,
						1900: 231
					},
					{ // 900мм
						900:  177.5,
						1100: 190,
						1300: 204,
						1500: 222,
						1700: 237,
						1900: 260
					},
					{ // 1100мм
						900:  203,
						1100: 217,
						1300: 234,
						1500: 254,
						1700: 270,
						1900: 295
					},
					{ // 1300мм
						900:  222,
						1100: 238,
						1300: 257,
						1500: 278,
						1700: 296,
						1900: 323
					},
					{ // 1500мм
						900:  242,
						1100: 261,
						1300: 282,
						1500: 304,
						1700: 325,
						1900: 354
					},
					{ // 1700мм
						900:  266,
						1100: 285,
						1300: 308,
						1500: 333,
						1700: 355,
						1900: 386
					},
					{ // 1900мм
						900:  285,
						1100: 307,
						1300: 331,
						1500: 358,
						1700: 382,
						1900: 414
					}
				];
				break;
		case 13: // 4_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 700мм
						900:  207,
						1100: 220,
						1300: 232,
						1500: 250,
						1700: 264,
						1900: 288
					},
					{ // 900мм
						900:  230,
						1100: 244,
						1300: 260,
						1500: 280,
						1700: 295,
						1900: 320
					},
					{ // 1100мм
						900:  266,
						1100: 282,
						1300: 300,
						1500: 320,
						1700: 338,
						1900: 365
					},
					{ // 1300мм
						900:  290,
						1100: 307,
						1300: 327,
						1500: 350,
						1700: 370,
						1900: 398
					},
					{ // 1500мм
						900:  313,
						1100: 333,
						1300: 354,
						1500: 378,
						1700: 401,
						1900: 432
					},
					{ // 1700мм
						900:  343,
						1100: 365,
						1300: 390,
						1500: 415,
						1700: 439,
						1900: 471
					},
					{ // 1900мм
						900:  373,
						1100: 397,
						1300: 423,
						1500: 450,
						1700: 477,
						1900: 511
					}
				];
				break;
		case 14: // 5_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 700мм
						1300: 197,
						1500: 206,
						1700: 219,
						1900: 231
					},
					{ // 900мм
						1300: 222,
						1500: 234,
						1700: 249,
						1900: 262
					},
					{ // 1100мм
						1300: 255,
						1500: 268,
						1700: 285,
						1900: 301
					},
					{ // 1300мм
						1300: 280,
						1500: 296,
						1700: 314,
						1900: 332
					},
					{ // 1500мм
						1300: 310,
						1500: 328,
						1700: 348,
						1900: 367
					},
					{ // 1700мм
						1300: 340,
						1500: 359,
						1700: 380,
						1900: 402
					},
					{ // 1900мм
						1300: 365,
						1500: 387,
						1700: 410,
						1900: 433
					}
				];
				break;
		case 15: // 6_1.jpg
				firstHeight = 700;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 700мм
						1300: 245,
						1500: 258,
						1700: 269,
						1900: 282
					},
					{ // 900мм
						1300: 275,
						1500: 290,
						1700: 303,
						1900: 318
					},
					{ // 1100мм
						1300: 317,
						1500: 333,
						1700: 348,
						1900: 365
					},
					{ // 1300мм
						1300: 348,
						1500: 366,
						1700: 382,
						1900: 401
					},
					{ // 1500мм
						1300: 380,
						1500: 400,
						1700: 419,
						1900: 440
					},
					{ // 1700мм
						1300: 417,
						1500: 440,
						1700: 460,
						1900: 482
					},
					{ // 1900мм
						1300: 453,
						1500: 478,
						1700: 500,
						1900: 523
					}
				];
				break;
		case 16: // 7_1.jpg
				firstHeight = 100;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 100мм
						100:  57,
						300:  62,
						500:  69,
						1900: 116
					},
					{ // 300мм
						100:  72,
						300:  77,
						500:  83,
						1900: 135
					},
					{ // 500мм
						100:  88,
						300:  93,
						500:  101,
						1900: 160
					},
					{ // 700мм
						100:  105,
						300:  109,
						500:  117,
						1900: 183
					},
					{ // 900мм
						100:  122,
						300:  125,
						500:  135,
						1900: 207
					},
					{ // 1100мм
						100:  139,
						300:  141,
						500:  152,
						1900: 231
					},
					{ // 1300мм
						100:  156,
						300:  157,
						500:  168,
						1900: 255
					},
					{ // 1500мм
						100:  173,
						300:  174,
						500:  186,
						1900: 278
					},
					{ // 1700мм
						100:  190,
						300:  189,
						500:  203,
						1900: 302
					},
					{ // 1900мм
						100:  207,
						300:  205,
						500:  219,
						1900: 326
					}
				];
				break;
		case 17: // 8_1.jpg
				firstHeight = 100;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 100мм
						100:  44,
						300:  49,
						500:  56,
						1900: 113
					},
					{ // 300мм
						100:  56,
						300:  62,
						500:  68,
						1900: 121
					},
					{ // 500мм
						100:  70,
						300:  75,
						500:  83,
						1900: 142
					},
					{ // 700мм
						100:  83,
						300:  88,
						500:  96,
						1900: 162
					},
					{ // 900мм
						100:  97,
						300:  102,
						500:  110,
						1900: 182
					},
					{ // 1100мм
						100:  111,
						300:  114,
						500:  125,
						1900: 203
					},
					{ // 1300мм
						100:  124,
						300:  128,
						500:  139,
						1900: 224
					},
					{ // 1500мм
						100:  138,
						300:  141,
						500:  153,
						1900: 246
					},
					{ // 1700мм
						100:  152,
						300:  153,
						500:  167,
						1900: 267
					},
					{ // 1900мм
						100:  165,
						300:  166,
						500:  180,
						1900: 288
					}
				];
				break;
		case 18: // 9_1.jpg
				firstHeight = 500;
				stepHeight = 200;
				controlPoints = 
				[
					{ // 500мм
						300:  80,
						1500: 174
					},
					{ // 700мм
						300:  90,
						1500: 197
					},
					{ // 900мм
						300:  102,
						1500: 218
					},
					{ // 1100мм
						300:  119,
						1500: 245
					},
					{ // 1300мм
						300:  131,
						1500: 268
					},
					{ // 1500мм
						300:  143,
						1500: 290
					},
					{ // 1700мм
						300:  157,
						1500: 313
					},
					{ // 1900мм
						300:  174,
						1500: 343
					}
				];
				break;
	}
	// Создаём и возвращаем объект.
	return new SizeCalculator(firstHeight, stepHeight, controlPoints);
}

/*
 * Функция для корректировки цены с учётом профиля. Принимает цену без учёта профиля, делает
 * перерасчёт и возвращает результат.
*/
function add_profile(price,profile,changeArgs)
{
	switch(profile)
	{
		case 1: return price;
		case 2: return price + price * (changeArgs["kbe70perc"] / 100);
		case 3: return price + price * (changeArgs["veka60perc"] / 100);
		case 4: return price + price * (changeArgs["veka70perc"] / 100);
		case 5: return price + price * (changeArgs["trocal70perc"] / 100);
	}
}

/*
 * Функция для получения цены за отделку.
*/
function get_trim_price(config_index,changeArgs)
{
	if(config_index >= 1 && config_index <= 2)
	{ //одностворчатые
		return changeArgs["otk1"];
	}
	else if(config_index >= 3 && config_index <= 4)
	{ //двустворчатые
		return changeArgs["otk2"];
	}
	else if(config_index >= 5 && config_index <= 6)
	{ //трехстворчатые
		return changeArgs["otk3"];
	}
	else if(config_index >= 7 && config_index <= 8)
	{ //раздвижки
		return changeArgs["otkAl"];
	}
	else if(config_index == 9)
	{ //дверь
		return changeArgs["otkDoor"];
	}
	else return -1;
}

/*
 * Функция для получения цены подоконника. Принимает ширину окна.
*/
function get_sill_price(width,sillInd)
{
	width = width * 0.1;
	var rounded_width = Math.round((width + 200) * sillInd);
	
	return rounded_width;
}

/*
 * Функция для получения цены монтажа окна.
 * Принимает цену за окно (window), цену за отделку (trim) и цену за подоконник (sill).
*/
function get_assembly_price(window, trim, sill)
{
	window = parseInt(window);
	trim = parseInt(trim);
	sill = parseInt(sill);
	return Math.round((window + trim + sill) * 0.2);
}

/*
 * Функция, которая запускает расчёт цены на окно и заполняет соответствующие ценам поля на странице.
*/
function calculate_window(config_index,packet,width,height,profile,changeArgs)
{
	// Получаем цену за окно.
	config_index = parseInt(config_index);
	config_num=config_index;
	
	// Делаем поправку на однокамерные-двухкамерные окна.
	config_index += (packet - 1) * 9;

	var sc = create_size_calculator(config_index);
	var window_price = sc.price(parseInt(width), parseInt(height));
	if(window_price != -1) window_price = add_profile(window_price,profile,changeArgs);
	var window_price_rub = Math.round(window_price * changeArgs["euro"]);
	
	// Получаем цену за отделку(откосы).
	var trim_price = get_trim_price(config_num,changeArgs);
	
	// Получаем цену за подоконник.
	var sill_price = get_sill_price(parseInt(width),changeArgs["sillInd"]);
	
	// Получаем цену за монтаж.
	var assembly_price = get_assembly_price(window_price_rub, trim_price, sill_price);
	
	var res_data = {
		win_price: window_price_rub,
		trim_price: trim_price,
		sill_price: sill_price,
		assembly_price: assembly_price
	}
	
	return res_data;
}
