/**
 *
 * Umożliwia podświetlanie błędnie wypełnionych komórek GRID-a.
 * @author Piotr Krokowski
 * @copyright LGPL
 * @version 1.0
 * @since 20.12.2007
 */

/**
 * Obsługuje odpowiedź z sewera, podświetlając pola w odpowiednich tabelach (grid).
 * @param response Tablicyaasocjacyjna, zawierająca pola:
 * - root - nazwa kluczowa do której doklejamy Store lub Grid - funkcja oczekuje, że w podanym zasięgu (parametr scope) znajdują się nazwaGrid i nazwaStore gdzie nazwa to wartość pola root
 * - row - który wiersz (numerycznie)
 * - col - która kolumna (nazwa)
 * - msg - na razie nie obsługiwane
 * @param scope - zasięg działania, w którym muszą być referncje do Store-ow i Grid-ow
 **/
Ext.grid.handleFeedback = function (response, scope) {
	try {
	 	Ext.select('.x-grid3-cell-invalid').each(function(i) {
	 		i.removeClass('.x-grid3-cell-invalid');
	 		if (typeof(i.tt)!='undefined')
	 			i.tt.destroy();
	 	});
	 	if (response.gridErrors!=null) {
			for (var i=0; i<response.gridErrors.length; i++) {
				try {
					var item = response.gridErrors[i];
					var grid = scope[item.root+'Grid'];
					var columnIndexFinderFn = function (colConfig, index) {
						return (colConfig.dataIndex==item.col);
					}
					var cm = grid.getColumnModel();
					var found = cm.getColumnsBy(columnIndexFinderFn);
					var colIndex = cm.getIndexById(found[0].id);
					grid.highlightCell(item.row, colIndex, item.msg);
				} catch (e) {
					//console.warn(e);
				}
			}
	 	}
	} catch (e) {
		
	}
}

Ext.override(Ext.grid.EditorGridPanel, {
	highlightCell : function(row, col, msg){
		try {
			var view = this.getView();
	        var cell = view.getCell(row, col);
	        if(cell) {
	        	 if (msg) {
		        	 cell.tt = new Ext.ToolTip({
				        target: 	cell,
				        title: 		'Błąd',
				        width:		200,
				        html: 		msg,
				        autoHide:	true,
				        trackMouse:	true,
				        closable:	false,
				        autoShow:	false,
				        showDelay:	100,
				        mouseOffset:[15,25]
				    });
	        	 }
	            view.fly(cell).addClass("x-grid3-cell-invalid");
	        }
		} catch (e) {
			console.warn(e);
		}
    },
    putDownCell : function(row, col){
    	var view = this.getView();
        var cell = view.getCell(row, col);
        if(cell){
            view.fly(cell).removeClass("x-grid3-cell-invalid");
        }
    }/*,
    putDownCells: function () {
    	var columns = this.getColumnModel().getColumnCount();
    	var rows = this.getStore().getCount();
    	for (var i=0; i<rows; i++) {
    		for (var j=0; j<columns; j++) {
    			this.putDownCell(i, j);
    		}
    	}
    }*/
});

