if (typeof Jiehun == 'undefined') {
	var Jiehun = {};
}
Jiehun.ads = (function($j, $d)
{
	var adsIds = {}
		,prefix = 'jiehun_ad_'
		,$ = function(i){return $d.getElementById(i);}
		,finish = false
		,adsCache = {}
		,cycleTimeout = 5000
		apiUrl = 'http://ad.jiehun.com.cn/replace/replace/'
		;
	
	/**
	 * 预备广告
	 * @param {Object} ids
	 */
	function prepareAd() {
		
		appendCss();
		
		//if (!finish && isFinish()) {
			showAllAds();
		//}
		
	}
	
	/**
	 * 追加css样式
	 */
	function appendCss()
	{
		var head = $d.getElementsByTagName('head')[0];
		var el = $d.createElement('style');
		el.type = 'text/css';
		el.media= 'screen';
		//el.disabled = true;
		var cssCode = '\
		.JH-A{display:inline;}\
		.JH-A a img{border:0;}\
		.JH-CA{position:relative;font-size:12px;overflow:hidden;}\
		.JH-CA .i{display:block;width:100%;height:100%;}\
		.JH-CA .b,.JH-CA .bo{position:absolute;width:100%;bottom:0;left:0;height:30px;}\
		.JH-CA .bo{background:#000;filter:alpha(opacity=10);opacity:0.1;z-index:10}\
		.JH-CA .b{z-index:11}\
		.JH-CA .b .n{position:relative;width:100%;height:100%;}\
		.JH-CA .b a.l{display:block;float:left; padding-left:5px; line-height:30px;color:#FF467B;text-decoration:none;}\
		.JH-CA .b a.l:hover{text-decoration:underline;}\
		.JH-CA ul{position:absolute;right:5px;top:5px;list-style:none;padding:0;margin:0;width:auto;float:right;}\
		.JH-CA ul li{float:left;width:17px;height:18px;line-height:18px;text-align:center;margin-right:10px;_margin-right:7px;}\
		.JH-CA ul li a{display:block;color:#FA769C;text-decoration:none;background:url(http://e.c.jiehun.com.cn/jiehun/mall/img/cycle_bg.png) left -19px no-repeat;}\
		.JH-CA ul li.on a{background:url(http://e.c.jiehun.com.cn/jiehun/mall/img/cycle_bg.png) 0 0 no-repeat;}\
		.JH-CA ul li.on a,.JH-CA ul li a:hover{color:#FFF;}\
		.JH-CA .load-img{position:absolute;margin:0 auto;}\
		#leftDiv,#rightDiv{position:absolute;}\
		.itemFloat{line-height:5px;overflow:hidden}\
		.blogrecommend{width:304px;height:229px;background-color:#fff;overflow:hidden;}\
		.blogrecommend .BR_title{height:50px;overflow:hidden;}\
		.blogrecommend p{line-height:20px;padding-left:10px;overflow:hidden;}\
		#ifm_div{position:absolute; right:0; bottom:0;overflow:hidden;}\
		';
		
//		var sc = $d.createElement('script');//关闭
//		sc.type = 'text/javascript';
//		var jsCode = '\
//		function closeWindow(divid){\
//			var clo = document.getElementById(divid);\
//			clo.style.display = "none";\
//		}\
//		';
//		sc.innerHTML += jsCode;
//		head.appendChild(sc);
		if(el.styleSheet){    //ie
	    	el.styleSheet.cssText = cssCode;//添加新的内部样式
	    	
	  	}else if($d.getBoxObjectFor){
	    	el.innerHTML += cssCode;//火狐支持直接innerHTML添加样式表字串
	  	}else{
	    	el.appendChild($d.createTextNode(cssCode))
	  	} 
		head.appendChild(el);
		
	}
	
	/**
	 * 初始化轮询广告
	 */
	function cycleable(id)
	{
		var elem = $(prefix + id).childNodes[0]
			,lis = elem.getElementsByTagName('li')
			,asOri = elem.getElementsByTagName('a')
			,len = asOri.length - 2
			,stage = asOri[0]
			,stageImg = stage.childNodes[0]
			,stageLink = asOri[1]
			,links = []
			,interval = null
			,curIndex = 0
			,as = []
			;
		var loadImgDiv = $d.createElement('div');/* 创建loadingimg-div */
			loadImgDiv.className = 'load-img';
		var loadImg = $d.createElement('img');
			loadImg.src="http://e.c.jiehun.com.cn/jiehun/common/img/loading.gif";
			loadImgDiv.appendChild(loadImg);
			elem.insertBefore(loadImgDiv, elem.childNodes[0]);
			
			loadImgDiv.style.left = (parseInt(elem.style.width)/2-20)+'px';
			loadImgDiv.style.top = (parseInt(elem.style.height)/2-30)+'px';
		var clone = $d.createElement('div');
		clone.className = 'bo';
		elem.insertBefore(clone, elem.childNodes[elem.childNodes.length - 1]);
			
		for(var i = 2, l = asOri.length; i < l; i++) {
			as.push(asOri[i]);
		}
		delete asOri;
			
		for(var i = 0; i < len; i++) {
			var a = as[i];
			links.push({
				href:a.href,
				title:a.getAttribute('title'),
				src:a.getAttribute('imgsrc')
			});
			a.onmouseover = (function(index) {
				return function() {
					stop();
					showPicture(index, true);
				}
			})(i);
			stageImg.onmouseover = stageLink.onmouseover = function() {
				stop();
			};
			
			a.onmouseout = stageImg.onmouseout = stageLink.onmouseout = function(){
				cycle();
			};
		}
		
		showPicture(curIndex);
		
		/**
		 * 停止轮播
		 */
		function stop()
		{
			if (interval) {
				clearTimeout(interval);
				interval = null;
			}
		}
		/**
		 * 循环
		 */
		function cycle()
		{
			interval = setTimeout(function(){
				showPicture(curIndex);
			}, cycleTimeout);
		}
		
		/**
		 * 显示指定次序的广告
		 * @param {Number} index
		 * @param {Boolean} stop
		 */
		function showPicture(index, stop)
		{
			if (typeof stop == 'undefined') {
				stop = false;
			}
			if (index + 1 > len) {
				index = (index + len) % len;
			}
			
			var a = as[index]
				,link = links[index];
			loadImage(link.src, function(){
				for(var j = 0; j < len; j++) {
					as[j].parentNode.className = as[j].parentNode.className.replace(/\s*on$/, '');
				}
				a.parentNode.className = a.parentNode.className + ' on';
			
				curIndex = index;
				stageLink.href = stage.href = link.href;
				stageLink.innerHTML = link.title;
				stageImg.src = this.src;
				fadeIn(stageImg);
				hideLoadImg();
				curIndex++;
				if (!stop) {
					cycle();
				}
			});
		}
		
		/**
		 * 载入图片
		 * @param {String} url
		 * @param {Function} callback
		 */
		function loadImage(url, callback) {
			showLoadImg();
		    var img = new Image(); //创建一个Image对象，实现图片的预下载
		    img.src = url;
		   
		    if (img.complete) { // 如果图片已经存在于浏览器缓存，直接调用回调函数
		        callback.call(img);
		        return; // 直接返回，不用再处理onload事件
		    }
			img.onerror = img.onload = function () { //图片下载完毕时异步调用callback函数。
		        callback.call(img);//将回调函数的this替换为Image对象
		    };
		};
		
		function showLoadImg(){
			loadImgDiv.style.display = 'block'; 
		};
		function hideLoadImg(){
			loadImgDiv.style.display = 'none'; 
		};
		
		var fi = null;
		function fadeIn(elem, opacity)
		{
			var opacity = opacity | 0;
			if (opacity == 0) {
				elem.style.opacity=0.0;
				elem.style.filter = 'alpha(opacity='+0+')';
				if (fi) {
					clearTimeout(fi);
					fi = null;
				}
			}
			
			fi = setTimeout(function()
			{
				opacity += 8;
				if (setOpacity(elem, opacity) !== false) {
					fadeIn(elem, opacity);
				}
			},20);
			
		}
		
		function setOpacity(elem, opacity)
		{
			if (opacity < 100)
			{
				opacity += 5;
				elem.style.opacity = opacity/100;
				elem.style.filter = 'alpha(opacity=' + opacity + ')';
			} else {
				return false;
			}
		}
		
		function fadeOut(elem)
		{
			
		}
	}
	
	/**
	 * 显示所有广告
	 */
	function showAllAds()
	{
//		if (finish) {
//			return false;
//		}
//		finish = true;
		var ids = [];
		for(var id in adsIds) {
			ids.push(id);
		}
		if(ids!=''){
			var s = $d.createElement('script');
			s.src = apiUrl + '?ids=' + ids.join(',') + '&callback=Jiehun.ads.onFinish&' + (new Date().getTime()/1000);
			s.type = 'text/javascript';
			$d.body.appendChild(s);
		}
	}
	
	/**
	 * 当广告加载完毕时的回调函数
	 * @param {Object} data
	 */
	function onFinish(data) 
	{
		adsCache = data;
		
		for( var id in adsCache ) {
			if (adsCache[id] != null){
				renderAd(id);
			}
		}
	}
	
	/**
	 * 放置一个广告
	 * @param {Object} id
	 */
	function placeAd(id)
	{
		if (!(id in adsIds)) {
			adsIds[id] = 0;
		}
		adsIds[id]++;
		
//		if (!finish && isFinish()) {
//			showAllAds();
//		}
		
		renderAdPlace(id);
	}
	
	/**
	 * 渲染广告位
	 * @param {Object} id
	 */
	function renderAdPlace(id)
	{
		$d.write('<div id="' + prefix + id + '" class="JH-A"></div>');
	}
	
	/**
	 * 渲染广告内容
	 * @param {Object} id
	 */
	function renderAd(id)
	{
		if(id!=''){
			var e = $(prefix + id);
			e.innerHTML = adsCache[id];
			var s = e.getElementsByTagName('script');
			if (s.length > 0) {
				for(var i = 0, l = s.length; i < l; i++) {
					eval(s[i].innerHTML);
				}
			}
		}
	}
	
//	/**
//	 * 是否所有的广告都已经显示完
//	 * @param {Object} ids
//	 */
//	function isFinish() 
//	{
//		for(var id in adsIds) {
//			if (adsIds[id] === 0) return false;
//		}
//		return true;
//	}
	return {
		'placeAd':placeAd,
		'placedAd':prepareAd,
		'onFinish':onFinish,
		'cycleable':cycleable
	};
})(Jiehun, document);
