/**
 * @author Andreas Wiemer
 */
function resizer(parent, dest_width, dest_height, dest_font_size, step, pause, style) {
	if (isUndefined(style)) {
		style = 'prozentual';
	}
	var diff_w, diff_h;
	this.parent = parent;
	this.resize = resize;
	this.timeout = false;
	this.dest_width = dest_width;
	this.dest_height = dest_height;
	this.dest_font_size = dest_font_size;
	this.set_size = set_size;
	this.pause = pause;
	this.step = step;
	if (style == "prozentual") {
		this.dest_width = to_num(get_style_value(this.parent.obj_id, 'width')) * dest_width / 100;
		this.dest_height = to_num(get_style_value(this.parent.obj_id, 'height')) * dest_height / 100;
		this.dest_font_size = to_num(get_style_value(this.parent.obj_id, 'fontSize')) * dest_font_size / 100;
	}
	this.width = to_num(get_style_value(this.parent.obj_id, 'width'));
	this.height = to_num(get_style_value(this.parent.obj_id, 'height'));
	this.font_size = to_num(get_style_value(this.parent.obj_id, 'fontSize'));
	diff_w = Math.abs(this.width - this.dest_width);
	diff_h = Math.abs(this.height - this.dest_height);
	diff_f = Math.abs(this.font_size - this.dest_font_size);
	this.step_w = diff_w / 100 * this.step;
	this.step_h = diff_h / 100 * this.step;
	this.step_f = diff_f / 100 * this.step;
}

function resize() {
	var step_w, step_h, step_f, diff_w, diff_h, diff_f, next, self;
    diff_h = Math.abs(this.height - this.dest_height);
    diff_w = Math.abs(this.width - this.dest_width);
    diff_f = Math.abs(this.font_size - this.dest_font_size);
	if (diff_w > this.step_w / 2 || diff_h > this.step_h / 2 || diff_f > this.step_f / 2) {
		if (!wait) {
			step_w = (diff_w > this.step_w) ? this.step_w : diff_w;
			step_h = (diff_h > this.step_h) ? this.step_h : diff_h;
			step_f = (diff_f > this.step_f) ? this.step_f : diff_f;
			this.width += (this.dest_width > this.width) ? step_w : -step_w;
			this.height += (this.dest_height > this.height) ? step_h : -step_h;
			this.font_size += (this.dest_font_size > this.font_size) ? step_f : -step_f;
			this.set_size(this.width, this.height, this.font_size);
		}
		self = this;
		if (!this.timeout) {
			this.timeout = setInterval(
				function() {
					self.resize();
				}, this.pause
			);
		}
		return true;
   	}
	window.clearInterval(this.timeout);
    this.timeout = false;
	return false;
}

function resize_to(w, h, f) {
	var diff_w, diff_h, diff_f;
	this.dest_width = w;
	this.dest_height = h;
	this.dest_font_size = f;
	this.resize();
}

function set_size() {
	set_style_value(this.parent.obj_id, 'width', this.width + "px");
	set_style_value(this.parent.obj_id, 'height', this.height + "px");
	set_style_value(this.parent.obj_id, 'fontSize', this.font_size + "px");
}
