var adm = {
	loadAdUrl                  : '', //载入广告url
	adCountUrl                 : '', //统计url
	//adAgentUrl                 : '', //跳转中介url
	sessionName                : 'ganji_uuid',
	postData                   : {},
	showCountIds               : [],
	loadAdCount                : 0,
	loadedAdCount              : 0,
	noResultDivId              : 'no_result', //无结果div的id
	containerIdAdTypeTable     : {},

	AD_TYPE_DOUFU              : 1,  //豆腐块
	AD_TYPE_JINGPIN            : 2,  //精品贴
	AD_TYPE_PINPAI             : 3,  //品牌广告
	AD_TYPE_ZANZHUSHANG        : 4,  //赞助商广告
	AD_TYPE_WENZI              : 5,  //文字链
	AD_TYPE_TOP                : 7,  //十万火急
	AD_TYPE_KEYWORD            : 8,  //关键词
	AD_TYPE_BANNER             : 9,  //Banner
	AD_TYPE_HEADLINE           : 10, //顶部通栏
	AD_TYPE_BUTTOMLINE         : 11, //底部通栏
	AD_TYPE_JINGPINS           : 12, //精品推荐
	AD_TYPE_HUIYUAN            : 13, //会员广告

	AD_COUNT_TYPE_SHOW         : 1,  //按显示统计
	AD_COUNT_TYPE_CLICK        : 2,  //按点击统计
	

	addParam : function(key, val)
	{
		eval('this.postData.'+key+'="'+val+'";');
	},

	/**
	 * 设置广告控制器
	 */
	setAdController : function(adType, containerId)
	{
		switch (adType)
		{
			case this.AD_TYPE_DOUFU:
				$("dt > a", "#"+containerId).click(function(){
					$("#"+containerId).slideUp();
					return false;
				});
				break;
			default:
				break;
		}
	},

	getSessionId : function() 
	{
		var val = null, cookieArr;

		if (document.cookie && document.cookie != '') {
			cookieArr = document.cookie.match(new RegExp("(^| )"+adm.sessionName+"=([^;]*)(;|$)"));
			if(cookieArr != null) {
				val = decodeURIComponent(cookieArr[2]);
			}
		}

		return val ? val : '';
	},

	/**
	 * 统计
	 */
	setCount : function(adId, countType)
	{
		var r = new Date().getTime() + '' + Math.random();
		
		var url = this.adCountUrl;
		url += url.indexOf('?') == -1 ? '?' : '&';		
		url += 'source_code=adm';
		url += '&source_id=' + adId;
		url += '&type=' + countType;
		url += '&session_id=' + adm.getSessionId();
		url += '&random=' + r.replace(/\./g, '');

		$.getJSON(url+'&callback=?', function(data){});
	},
	
	/**
	 * 在页面中显示广告
	 */
	renderAd : function(adType, containerId, data)
	{
		if (!data){
			return;
		}

		//删除无结果提示
		if (adType == this.AD_TYPE_JINGPINS || adType == this.AD_TYPE_TOP || adType == this.AD_TYPE_HUIYUAN)
		{
			$("#"+this.noResultDivId).remove();
		}

		var splitData = data.split('|');
		var ids, htmlStr;
		if (splitData[0] && /^[0-9,]+$/.test(splitData[0]))
		{
			ids = splitData.shift().split(',');				
			$("#"+containerId).html(splitData.join('|'));
			$("#"+containerId).show();

			for (var i=0; i<ids.length; i++) {
				this.showCountIds[this.showCountIds.length] = ids[i];
			}

			if (this.loadedAdCount == this.loadAdCount) {
				this.loadedAdCount = this.loadAdCount = 0;
				var ids = this.showCountIds.join(',');
				this.showCountIds = [];
				this.setCount(ids, this.AD_COUNT_TYPE_SHOW);
			}
		}
		else {
			$("#"+containerId).html(data);
			$("#"+containerId).show();
		}
		
		//点击统计
		$('.log_count', $("#"+containerId)).bind('click', function(){
			//$.getJSON('http://logserver.ganji.com/count/adm_count.php?id='+$(this).attr('log_count_id')+'&type=2&callback=?');
			adm.setCount($(this).attr('log_count_id'), adm.AD_COUNT_TYPE_CLICK);
		});
		
		this.setAdController(adType, containerId);
	},
	
	/**
	 * 远程载入广告
	 */
	loadAd : function(adType, containerId)
	{
		this.loadAdCount++;
		
		adType = parseInt(adType);
		if (isNaN(adType) || adType < 0)
		{
			alert('AdType无效。 ');
			return false;
		}

		if (!this.loadAdUrl)
		{
			alert('未设置loadAdUrl。 ');
			return false;
		}

		eval('this.postData.at="'+adType+'";');
		
		var t = this;
		$.getJSON(this.loadAdUrl+'?callback=?', this.postData, function(data){
			t.loadedAdCount++;
			t.renderAd(adType, containerId, data);
		});
	},
	
	/**
	 * 一次性远程载入多个类型广告
	 */
	loadAds : function(adTypes, containerIds)
	{
		adTypes      = adTypes.split(',');
		containerIds = containerIds.split(',');
		var i, adType;
		for (i in adTypes)
		{
			adType = parseInt(adTypes[i]);
			if (isNaN(adType) || adType < 0)
			{
				alert('AdType无效。 ');
				return false;
			}
			this.containerIdAdTypeTable[adType] = containerIds[i];
			this.loadAdCount++;
		}

		if (!this.loadAdUrl)
		{
			alert('未设置loadAdUrl。 ');
			return false;
		}

		this.postData['at'] = adTypes.join(',');
		//eval('this.postData.at="'+adTypes.join(',')+'";');
		
		var t = this;
		$.getJSON(this.loadAdUrl+'?callback=?', this.postData, function(data){
			data = eval(data);
			for(adType in data){
				t.loadedAdCount++;
				t.renderAd(adType, t.containerIdAdTypeTable[adType], data[adType]);
			}
		});
	}
};

$(window).load(function(){
	if (adm.loadedAdCount != adm.loadAdCount) {
		var ids = adm.showCountIds.join(',');
		adm.showCountIds = [];
		adm.setCount(ids, adm.AD_COUNT_TYPE_SHOW);
	}
});