(function(){
	var timer = (function(){
		var _items = {};
		var _start = new Date().getTime();
		
		return {
			start: function(item){
				if(typeof _items[item] === 'object'){return ;}
				_items[item] = {
					start: new Date().getTime(),
					time: '-1'
				};
			},
			stop: function(item){
				if(typeof _items[item] === 'undefined'){
					_items[item] = {};
				}
				if(typeof _items[item]['start'] === 'undefined'){
					_items[item]['start'] = _start;
				}
				_items[item]['stop'] = new Date().getTime();		
				_items[item]['time'] = _items[item]['stop'] - _items[item]['start'];
			},
			getItems: function(){
				return _items;
			},
			setStart: function(){
				var obj = document.getElementsByName('imgtime');
				for (var i = 0, len = obj.length; i < len; i++){
					timer.start(obj[i].id);
				}
			}
		};
	})();

	var reporter = (function(){
		var _data = {};
		var _timerObj = {};
		return {
			setTimeObj: function(k,v){
				if(typeof _timerObj[k] === 'undefined'){
					_timerObj[k] = [];
				}
				if(typeof v === 'object'){
					for (var i in v){
						if(typeof _timerObj[i] === 'undefined'){
							_timerObj[k].push(v[i]);
						}
					}
				}
				else{
					_timerObj[k].push(v);
				}
			},
			removeTimeObj: function(k){
				if(typeof _timerObj[k] != 'undefined'){
					_timerObj[k] = null;
				}else{
					_timerObj = {};
				}	
			},
			clearTimeObj: function(){
				_timerObj = {};
			},
			setData: function(k,v){
				if(typeof _data[k] === 'undefined'){
					_data[k] = [];
				}
				var t = typeof v;
				if(t === 'string' || t === 'number'){
					_data[k] = v;
				}
			},
			setDatas: function(arr){
				if(typeof arr === 'object'){
					for (k in arr){
						this.setData(k,arr[k]);
					}
				}
			},
			removeDatas: function(obj){
				if(obj === undefined) {
					_data = {};
				}
				if(typeof obj === 'string'){
					delete _data[obj];
				}
			},
			report: function(){
				timer.setStart();
				var timeItem = timer.getItems(),
					repStr = '',
					imgStr = '',
					sep = '&';
				for(key in timeItem) {
					if(timeItem[key]['time'] != '-1') {
						reporter.setTimeObj(key,timeItem[key]['time']);
					}
				}
				for(k in _timerObj) {
					if(_timerObj[k] === null) {
						continue;
					}
					imgStr += k + ':';
					var i = 0,
						l = _timerObj[k].length;
					if (1 == l) {
						imgStr += + _timerObj[k][0] + '::'; 
						continue;
					} 
					for (i = 0; i < l-1; i++){
						imgStr += _timerObj[k][i] + ';';
					}
					imgStr += _timerObj[k][i] + '::';
				}
				reporter.setData('img',imgStr);
				if(typeof _data['dead'] === 'undefined'){
					_data['dead'] = 0;
				}
				for (k in _data) {
					repStr += k + '=';
					repStr += _data[k] + sep; 
				}
				
				ajax({
					type: 'GET',
					dataType: 'script',
					url: 'http://v.dr.soso.com/?_pid=img&' + repStr 
				});	
			},
			pingback: function(obj){
				if(typeof obj != 'object'){return;}
				var url = '';
				for (k in obj){
					url += k + '=' + obj[k] +'&';
				}
				ajax({
					type: 'GET',
					dataType: 'script',
					url: 'http://v.dr.soso.com/?_pid=img&' + url 
				});
			}
		};
	})();

	var isdReport = function(url, timeScales) {
		var img, s = [];
		for(var i = 0; i < timeScales.length; i++){
			if(!!timeScales[i])
				s.push((i+1) + "=" + timeScales[i]);
		}
		var url = url + "&" + s.join("&");//ÉÏ±¨cgiµÄµØÖ·
		if(Math.random() < 0.1){
			img = new Image();
			img.src = url;
		}
	};

	window['reporter'] = reporter;
	window['isdReport'] = isdReport;
})(); 

