EMA.Util = function() {
    return {
        getList: function(json, sort) {
        	if (typeof sort == 'undefined') {
        		sort = true;
        	}
        	
        	var listArray = [];
			for(var key in json){
				if (typeof json[key] != 'function') {
					var a = Array();
					a = [key, json[key]]; 
					listArray.push(a);
				}
			}
			
			if (sort) {
				listArray.sort(EMA.Util.stringSort);
			}
			
			return listArray;
        },
        dateTimeRenderer: function(v) {
			return Ext.util.Format.date(v, 'D, M j, Y, H:i:s');
        },
        dateRenderer: function(v) {
			return Ext.util.Format.date(v, 'D, M j, Y');
        },
		shortDateRenderer: function(v) {
			return Ext.util.Format.date(v, 'M j, Y, H:i');
		},
        timeRenderer: function(v) {
        	if (v){
        		return Ext.util.Format.date('2001/01/01 '+v, 'H:i:s');
        	}
        },
        monthRenderer: function(v) {
        	if (v){
        		return Ext.util.Format.date('2001/'+v+'/01', 'F');
        	}
        },
        shortWeekDayRenderer: function(v) {
        	if (v) {
        		return Date.dayNames[v].substring(0, 3);
        	}
        },
        yesNoStatus: function(bool) {
        	return (bool == 1) ? 'Yes' : (bool == null) ? '': 'No';
        },
        getSelectedIds: function (grid) {
			var sm = grid.getSelectionModel(),
				count = sm.getCount();
				
			var selected = sm.getSelections(),
							selectedIds = [];
						
			for (var i = 0; i < count; i++) {
				selectedIds[i] = selected[i].id;
			}
			
			return Ext.encode(selectedIds);
		},
	    getMoneyAverage: function (total, count) {
	    	if (total > 0 && count > 0) {
	    		return Ext.util.Format.usMoney(total / count);
	    	} else {
	    		return Ext.util.Format.usMoney(0);	    		
	    	}
	    },
	    stringSort: function(a, b) {
			return ((a[1] == b[1]) ? 0 : 
					((a[1] > b[1]) ? 1 : -1 ));
		},
	    addEmptyOption: function (data, title){
			data.unshift(["",title]);
			return data;
		},
		transactionTypes: function(v) {
			var transactionTypes = {
				1: 'Deposit',
				2: 'Withdrawal'
			};
			if (v == 'list') {
				return [
					[1, 'Deposit'],
					[2, 'Withdrawal']
				];
			} else if (v != null) {
				return transactionTypes[v];
			} else {
				return '-Unknown-';
			}
		}
    }
}();
