//Объявление класса прямоугольника
function Rectangle(x, y, w, h) {
	/*Функции для работы с координатами
	 * основного прямоугольника */
	function chkVal(val) {
		var a = parseFloat(val);
		return (isNaN(a) || a < 0) ? 0 : a;
	}
	this.X = function (val) {
		if (val === undefined) return x;
		x = chkVal(val);
	};
	this.Y = function (val) {
		if (val === undefined) return y;
		y = chkVal(val);
	};
	this.W = function (val) {
		if (val === undefined) return w;
		w = chkVal(val);
	};
	this.H = function (val) {
		if (val === undefined) return h;
		h = chkVal(val);
	};
	//Функция изменения начальной координаты и размеров прямоугольника
	this.RectParam = function (_x, _y, _w, _h) {
		this.X(_x);
		this.Y(_y);
		this.W(_w);
		this.H(_h);
	};
	//Функция изменения прямоугольника по другому прямоугольнику
	this.Rect = function (val) {
		if (val === undefined) return this;
		this.RectParam(val.X(), val.Y(), val.W(), val.H());
	};
	//Первая инициализация
	if (x === undefined) x = 0;
	else this.X(x);
	if (y === undefined) y = 0;
	else this.Y(y);
	if (w === undefined) w = 0;
	else this.W(w);
	if (h === undefined) h = 0;
	else this.H(h);
}