

function GridPrinter(myName, prefix, bStyle) {
	var me = this;
	var debug = 0;
	var oldId = null;
	var oldRow = null;
	var oldCol = null;
	var T = 'T';
	var L = 'L';
	var R = 'R';
	var B = 'B';

	var styles = new Array();
	styles[T] = new Array();
	styles[L] = new Array();
	styles[R] = new Array();
	styles[B] = new Array();


	this.buttonClick = function(row, col) {
		
	}
		

	this.onMove = function(evt) {
//		if(debug) logger.dump(myName + '.onMove(' + evt + ')');
		evt = aa.get(evt);
		var elem = aa.getSrcElement(evt);
		elem = aa.seekAttribute(elem, 'id');
		var elemId;
		if (elem == null) {
			elemId = '';
		} else {
			elemId = elem.id;
		}
		if(debug) logger.dump(myName + '.onMove elemId= [' + elemId + '] oldId = [' + oldId + ']');
		if (elemId == oldId) {
			// same button
			return;
		}
		if (oldId != null) {
			// clean old outline
			me.setColor(oldRow, oldCol, null);
			oldId = oldRow = oldCol = null;
		}
		var a = elemId.split('_');
//		if(debug) logger.dumpHash(myName + '.onMove split', a);
		if (a.length != 3 || a[0] != prefix) {
			// not on a button
			return;
		}
		var row = parseInt(a[1], 10);
		var col = parseInt(a[2], 10);
		if (isNaN(row) || isNaN(col)) {
			return;
		}
		me.setColor(row, col, bStyle);
		oldId = elemId;
		oldRow = row;
		oldCol = col;
	}
	
	this.getBorderStyle = function(type, id, newStyle, oldStyle) {
		if (newStyle == null) {
			return styles[type][id];
		} else {
			styles[type][id] = oldStyle;
			return newStyle;
		}
	}

	this.setColor = function(row, col, borderStyle) {
//		if(debug) logger.dump(myName + '.setColor('+row+', '+col+', \''+borderStyle+'\')');
		for (var r = 1; r <= row; r ++) {
			for (var c = 1; c <= col; c ++) {
				var id = me.getId(r, c);
				var button = me.getButton(r, c);
				if (r == 1) {
					button.borderTop = me.getBorderStyle(T, id, borderStyle, button.borderTop)
				}
				if (r == row) {
					button.borderBottom = me.getBorderStyle(B, id, borderStyle, button.borderBottom)
				}
				if (c == 1) {
					button.borderLeft = me.getBorderStyle(L, id, borderStyle, button.borderLeft)
				}
				if (c == col) {
					button.borderRight = me.getBorderStyle(R, id, borderStyle, button.borderRight)
				}
			}
		}
	}
	
	this.getId = function(r, c) {
		return prefix + '_' + r + '_' + c;
	}
	this.getButton = function(r, c) {
		var id = me.getId(r, c);
		var t = aa.get(id);
//		if(debug) logger.dump(myName+'.getButton('+r+', '+c+') id= ['+id+'] button = ['+t+']');
		if (t != null) return aa.getStyle(t);
		return null;
	}
}