// Author: Uberteg

num	hOldInj = -1;
num	hNewInj = -1;
num	hOldFp = -1;
num	hNewFp = -1;
num	nInjSave = 0x7A13;
num	nFpSave = 0x7A15;

void open()
{
	num x = 250;
	num y = 110;

	CreateBorder(x, y, 220, 150, 6, 0, "Injectors Calc");
	CreateStatic(x+5, y-5, 100, 20, 6, 0, "Injectors Calc");
	
	x = x + 20;
	y = y + 20;
	hNewInj = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "New Injectors Size");

	y = y + 20;
	hOldInj = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "Old Injectors Size");

	y = y + 20;
	hNewFp = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "New Fuel Pressure");

	y = y + 20;
	hOldFp = CreateEdit(x, y, 40, 20, 6, 0, "");
	CreateStatic(x+50, y, 120, 20, 6, 0, "Old Fuel Pressure");

	y = y + 40;
	CreateBtn(x+120, y, 50, 20, 6, "inj_apply", "Apply");

	SetInjItems();
}

void DisableCRC()
{
	writeword(nInjSave, 240);
	writeword(nFpSave, 42);
}

void inj_apply()
{
	num x;
	num y;
	num fScale = GetItem(hOldInj) / GetItem(hNewInj);
	num fp = (GetItem(hOldFp) / GetItem(hNewFp)) ^ 0.5;
	fScale = fScale * fp;
	x = 0;
	while( x < NEW_TABLELO_x)
	{
		y = 0;
		while(y < NEW_TABLELO_y)
		{
			settablevalue(x, y, 0, gettablevalue(x, y, 0) * fScale);
			settablevalue(x, y, 1, gettablevalue(x, y, 1) * fScale);
			y = y + 1;
		}
		x = x + 1;
	}
	writeword(nInjSave, getitem(hNewInj));
	writeword(nFpSave, getitem(hNewFp));
	SetInjItems();
	GetFuelModSuggestedValue();
}

void SetInjItems()
{
	setitem(hOldInj, readword(nInjSave));
	setitem(hOldFp, readword(nFpSave));
	setitem(hNewInj, readword(nInjSave));
	setitem(hNewFp, readword(nFpSave));
}