var nowDate = new Date();
var nowDateStr = nowDate.getMonth() + 1 + '/' + nowDate.getDate() + '/' + nowDate.getFullYear();

function readableTime(value) {
	var hour = 0;
	var minute = 0;
	var second = 0;
	var remainder = 0;
	if (value > 3600) {
		remainder = value%3600;
		hour = (value - remainder) / 3600;
		value = remainder;
	}
	if (value > 60) {
		remainder = value%60;
		minute = (value - remainder) / 60;
		value = remainder;
	}
	second = value;
	if (hour < 10) {
		hour = '0' + hour;
	}
	if (minute < 10) {
		minute = '0' + minute;
	}
	if (second < 10) {
		second = '0' + second;
	}
	return hour + ':' + minute + ':' + second;
}

function createJsonReader(r, t, i, f) {
	reader = new Ext.data.JsonReader({
		root: r,
		totalProperty: t,
		id: i,
		fields: f
   	});
	return reader;
}

// params u:url, r:reader
function createStore(u, r) {
	store = new Ext.data.Store({
		proxy: new Ext.data.HttpProxy({
			url: u
		}),
		// create reader that reads the records
		reader: r
	});
	return store;
}

// param t:title, s:store, tb: toolbar
function createGrid(id, hasPaging, width, height, sm, cm, t, s, tb, pageSize) {
	var pt = null;
	var grid = null;
	if (hasPaging == true) {
		pt = new Ext.PagingToolbar({
			pageSize: pageSize,
			store: s,
			displayInfo: true
		});
	}
	grid = new Ext.grid.GridPanel({
		id:id,
		height: height != 0 ? height : 'auto',
		width: width != 0 ? width : 'auto',
		title: t,
		store: s,
		cm: cm,
		trackMouseOver:false,
		autoScroll: true,
		viewConfig: {
			forceFit:true,
			enableRowBody:true,
			showPreview:false
		},
		sm: sm,
		loadMask: true,
		bbar: pt,
		tbar: tb
	});
	return grid;
}

function doActionToGrid(grid_id, delete_url, message_confirm, message_no_selection, message_action_ok, message_aciton_fail, callback){
	var grid = Ext.getCmp(grid_id);
	if (grid == null) {
		return;
	}
	var c = grid.getSelectionModel().getCount();
	if (c > 0) {
		Ext.MessageBox.confirm(i18n_utils.tip, message_confirm, function(btn, text){
			if(btn=='yes'){
				doActualActionToGrid(grid, delete_url, message_action_ok, message_aciton_fail, callback);
			}
		});
	} else {
		Ext.MessageBox.alert(i18n_utils.tip, message_no_selection);
	}
}

function doActualActionToGrid(grid, delete_url, message_action_ok, message_aciton_fail, callback) {
	var sm = grid.getSelectionModel();
	var se = sm.getSelections();
	var data = new Array();
	for (var i = 0; i < se.length; i=i+1 ) {
		data[i] = se[i].id;
	}
	
	var s = grid.getStore();
	var start = grid.getBottomToolbar().paramNames.start;
	
	var conn = new Ext.data.Connection();
	conn.request({
		url: delete_url,
		params:{selectedItems:data},
		method: 'post',
		scope: this,
		callback:function(options,success, response){ 
			if(success) {
				Ext.MessageBox.alert(i18n_utils.tip,message_action_ok);
				
				sm.clearSelections();
				var st = 0;
				if(s.lastOptions && s.lastOptions.params && s.lastOptions.params[start]) {
					st = s.lastOptions.params[start];
					var cur_page_size = s.getTotalCount() - st;
					if (cur_page_size <= PAGESIZE) {
						if (se.length >= cur_page_size) {
							st -= PAGESIZE;
						}
					}
				}
				s.load({params:{start:st, limit:PAGESIZE}});
				
				if (callback != null) {
					callback();
				}
			} else {
				Ext.MessageBox.alert(i18n_utils.tip,message_aciton_fail);
			}
		}
	});
}

function doActualActionToGridNoLoad(grid, delete_url, message_confirm, message_action_ok, message_aciton_fail, callback) {
	Ext.MessageBox.confirm(i18n_utils.tip, message_confirm, function(btn, text){
		if(btn=='yes') {
			var conn = new Ext.data.Connection();
			conn.request({
				url: delete_url,
				method: 'post',
				scope: this,
				callback: function(options,success, response){
					if(success) {
						Ext.MessageBox.alert(i18n_utils.tip,message_action_ok);
						
						var sm = grid.getSelectionModel();
						sm.clearSelections();
						
						if (callback != null) {
							callback();
						}
					} else {
						Ext.MessageBox.alert(i18n_utils.tip,message_aciton_fail);
					}
				}
			});
		}
	});
}

