define(['jquery'],function($){
	var http = {};
	http.isLoading = {};
	http.cache = {};
	http.ajax = function(conf,callback){
		var _this = this;
		var url = conf.url;
		var data = conf.data || {};	
		var type = conf.type || 'get';
		var dataType = conf.dataType  || 'json';
		var cache = conf.cache || false;

		if(typeof _this.cache[url] !== 'undefined' && cache){
			callback && callback({'code':2,'codeMsg':'cache','data':_this.cache[url]});
			return;
		}
		if(typeof _this.isLoading[url] !== 'undefined' && _this.isLoading[url] === 1){
			return;
		}
		_this.isLoading[url+''] = 1;
		callback && callback({'code':0,'codeMsg':'loading','data':''})
		
		var XHR = $.ajax({
			'type': type,
			'dataType': dataType,
			'url': url,
			'data':data,
			'cache': cache,
			'timeout':5000		
		}).done(function(re){
			if(cache){
				http.cache[url] = re;
			}
			_this.isLoading[url] = 0;
			callback && callback({'code':1,'codeMsg':'success','data':re});
		}).fail(function(re){
			_this.isLoading[url] = 0;
			if(re.statusText === 'timeout'){
				callback && callback({'code':-2,'codeMsg':'timeout','data':''})
			}else{
				callback && callback({'code':-1,'codeMsg':'fail','data':''})
			}	
		})
	}
	return http;
})
