define([
    "dojo/_base/declare",
	"dojo/window",
	"dojo/dom-geometry"
], function(declare, win, geom){
    return declare("chy._base._ScrollMixin", [], {
	
	//methods
	
	/* Scroll via dojo zodanig dat het element met id zichtbaar is.
	   De eventuele extraIds komen ook zoveel mogelijk in beeld, maar niet ten koste van id.
	*/
	scrollIntoView: function(id, extraIds) {
		require(["dojo/window", "dojo/dom-geometry"], function(win, geom) {
			var pos = geom.position(id);
			if (extraIds) {
				// vergroot pos zodat deze de extraIds ook omvat
				var top = pos.y;
				var bottom = top + pos.h;
				for (var i=0; i < extraIds.length; i++) {
					var posExtra = geom.position(extraIds[i]);
					top = Math.min(top, posExtra.y);
					bottom = Math.max(bottom, posExtra.y + posExtra.h);
				}
				pos.y = top;
				pos.h = bottom - top;
			}
			win.scrollIntoView(id, pos);
		});
	}

    });
});
