var wzcast = {

	__ADSERVER:'g.51network.com/wits',
	//__ADSERVER:'192.168.0.159:8888/51network',
	__TRACKURL:'http://track.51network.com/',
	//__TRACKURL:'http://174.129.214.195/',
	_w:window,

	site:{
		_location:'', _domain:'', _keywords:'', _referer:'', _sitecategory:'',
		getSite:function (ctx) {
			var u = ctx.document.location.href;
			var patt = /([\w-]+\.(com|net|org|gov|cc|biz|info|cn|tv)(\.(cn|hk))*)[\/|:]/;
			var arr = u.match(patt);
			if (!arr) return '';
			return (arr.length > 0) ? arr[1] : '';
		},
		getLocation:function (ctx) {
			return encodeURIComponent(ctx.document.location.href);
		},
		getKeyword:function (ctx) {
			var u = ctx.document.referrer;
			var pickupKeyword = function (param_name) {
				var index = u.indexOf(param_name + "=");
				if (index  == -1) {
					return '';
				}
				var a = u.substr(index);
				var arr = a.split("&");
				var kw = arr[0].substr(param_name.length + 1);
				if (hasChinese(kw)) {
					if (wzcast.site._referer.indexOf("baidu.com") != -1) {
						wzcast.site._referer += encodeURIComponent("&ie=utf-8");
					}
					return encodeURIComponent(kw);
				} else {
					return kw;
				}
			};
			var hasChinese = function (s) {
				for(var i = 0; i < s.length; i++) {
					if(s.charCodeAt(i) >= 0x4E00 && s.charCodeAt(i) <= 0x9FA5) {
						return true;
					}
				}
				return false;
			}

			var patt_gg = /^http:\/\/[\w-]+\.google.(cn|com)\/.*$/;
			var patt_db = /^http:\/\/[\w-]+\.baidu.com.*$/;
			if (u.match(patt_gg)) {
				var ggkw = pickupKeyword("q");
				if (ggkw == '') ggkw = pickupKeyword("query");
				return ggkw;
			} else if (u.match(patt_db)) {
				var baidukw = pickupKeyword("wd");
				if (baidukw == '') baidukw = pickupKeyword("word");
				if (baidukw == '') baidukw = pickupKeyword("q1");
				if (baidukw == '') baidukw = pickupKeyword("kw");
				return baidukw;
			} else {
				return '';
			}
		},
		getReferer:function (ctx) {
			return (ctx.document.referrer) ? encodeURIComponent(ctx.document.referrer) : '';
		},
		initAttribute:function (ctx) {
			this._location = this.getLocation(ctx);
			this._domain = this.getSite(ctx);
			this._referer = this.getReferer(ctx);
			this._keywords = this.getKeyword(ctx);
		}
	},

	person:{

		generateGUID:function (m) {
			a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ".split(''); 
			n = '';
			for (i=0; i<m; i++) {
				n += a[Math.floor(Math.random()*a.length)].toString();
			}
			return n;
		},

		convertPeriod:function (b) {
			if (b == "undefined" || b == '' || b == '0000-00-00') {
				return '';
			}
			var now = new Date().getTime();
			var s = b.split("-");
			var birth = new Date(s[0], s[1]-1, s[2]);
			var diff = Math.floor((now - birth)/1000/3600/24/365);
			if (diff <= 18) {
				return 1;
			} else if (diff <= 24) {
				return 2;
			} else if (diff <= 30) {
				return 3;
			} else if (diff <= 35) {
				return 4;
			} else if (diff <= 40) {
				return 5;
			} else {
				return 6;
			}
		},

		processSO:function () {
			var s = (navigator.userAgent.indexOf("MSIE")>0) ? document.getElementById('beaconswf') : document['beaconswf'];
			if (typeof s == 'undefined' || s == 'null' || !s) return;
			
			try {
				so_guid = s.readSharedObject("guid");
				so_gendar = s.readSharedObject("gendar");
				so_birthday = s.readSharedObject("birthday");
				so_edu = s.readSharedObject("edu");
				so_income = s.readSharedObject("income");
				so_email = s.readSharedObject("email");
				so_cell = s.readSharedObject("cell");
				so_pdcttrend = s.readSharedObject("pdcttrend");
				if (so_guid == 'undefined') so_guid = '';
				if (so_gendar == 'undefined') so_gendar = '';
				if (so_birthday == 'undefined') so_birthday = '';
				if (so_edu == 'undefined') so_edu = '';
				if (so_income == 'undefined') so_income = '';
				if (so_email == 'undefined') so_email = '';
				if (so_cell == 'undefined') so_cell = '';
				if (so_pdcttrend == 'undefined') so_pdcttrend = '';

				if (so_guid) {
					wz_guid = so_guid;
					var n1 = 0;
					var n2 = 0;
					if (so_gendar) {
						if (wz_gendar && wz_gendar != so_gendar) {
							n1 = n1 || 1;
							n2 = n2 || 1;
							s.writeSharedObject("gendar", wz_gendar);
						} else {
							wz_gendar = so_gendar;
						}
					} else {
						if (wz_gendar) {
							n1 = n1 || 1;
							n2 = n2 || 1;
							s.writeSharedObject("gendar", wz_gendar);
						}
					}
					if (so_birthday) {
						if (wz_birthday && wz_birthday != so_birthday) {
							n1 = n1 || 1;
							n2 = n2 || 1;
							s.writeSharedObject("birthday", wz_birthday);
						} else {
							wz_birthday = so_birthday;
						}
					} else {
						if (wz_birthday) {
							n1 = n1 || 1;
							n2 = n2 || 1;
							s.writeSharedObject("birthday", wz_birthday);
						}
					}
					if (wz_birthday && !wz_period) {
						wz_period = this.convertPeriod(wz_birthday);
					}
					if (so_edu) {
						if (wz_edu && wz_edu != so_edu) {
							n1 = n1 || 1;
							s.writeSharedObject("edu", wz_edu);
						} else {
							wz_edu = so_edu;
						}
					} else {
						if (wz_edu) {
							n1 = n1 || 1;
							s.writeSharedObject("edu", wz_edu);
						}
					}
					if (so_income) {
						if (wz_income && wz_income != so_income) {
							n1 = n1 || 1;
							s.writeSharedObject("income", wz_income);
						} else {
							wz_income = so_income;
						}
					} else {
						if (wz_income) {
							n1 = n1 || 1;
							s.writeSharedObject("income", wz_income);
						}
					}
					if (so_email) {
						if (wz_email && wz_email != so_email) {
							n1 = n1 || 1;
							s.writeSharedObject("email", wz_email);
						} else {
							wz_email = so_email;
						}
					} else {
						if (wz_email) {
							n1 = n1 || 1;
							s.writeSharedObject("email", wz_email);
						}
					}
					if (so_cell) {
						if (wz_cell && wz_cell != so_cell) {
							n1 = n1 || 1;
							s.writeSharedObject("cell", wz_cell);
						} else {
							wz_cell = so_cell;
						}
					} else {
						if (wz_cell) {
							n1 = n1 || 1;
							s.writeSharedObject("cell", wz_cell);
						}
					}

					if (n1) wz_sa = "update";
					if (n2) wz_cl = 1;
				} else {
					wz_guid = this.generateGUID(16);
					s.writeSharedObject("guid", wz_guid);
					s.writeSharedObject("gendar", wz_gendar);
					s.writeSharedObject("birthday", wz_birthday);
					s.writeSharedObject("edu", wz_edu);
					s.writeSharedObject("income", wz_income);
					s.writeSharedObject("email", wz_email);
					s.writeSharedObject("cell", wz_cell);
					wz_sa = "new";
				}
				s.writeSharedObject("province", wz_province);
				s.writeSharedObject("city", wz_city);
			} catch (e) {
				//alert (e);
			}

		}
	},

	trackimpression:function (z, b, c) {
		this.site.initAttribute(this._w);
		var s =  (navigator.userAgent.indexOf("MSIE")>0) ? document.getElementById('beaconswf') : document['beaconswf'];
		if (typeof s == 'undefined' || s == 'null' || !s) {
			beacondiv = document.createElement('div');
			var targetdiv = 'tk_' + z;
			beacondiv.setAttribute('id', targetdiv + '_beaconwrap');
			beacondiv.setAttribute('name', targetdiv + '_beaconwrap');
			document.getElementById(targetdiv).appendChild(beacondiv);
			beacondiv.innerHTML = "<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width=1 height=1 id='beaconswf' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab'><param name='allowScriptAccess' value='always'><param name='swLiveConnect' value='true'><param name='movie' value='http://static.51network.com/beacon.swf'><param name='FlashVars' value='z=" + z + "&b=" + b + "&c=" + c + "'><embed name='beaconswf' src='http://static.51network.com/beacon.swf' FlashVars='z=" + z + "&b=" + b + "&c=" + c + "' width=1 height=1 allowscriptaccess='always' swLiveConnect='true' type='application/x-shockwave-flash' pluginspage='http://www.macromedia.com/go/getflashplayer'></embed></object>";
		} else {
			this.doImpressionTrackAction(z, b, c);
		}
	},

	castAdCode:function (z) {
		if (wz_mode != 2) {
			ajsscript = document.createElement('script');
			ajsscript.src = 'http://' + this.__ADSERVER + '/www/delivery/ajs4.php?zoneid=' + z + "&province=" + wz_province + "&city=" + wz_city;
			//ajsscript.src = "testajs.txt";
			document.getElementsByTagName('head')[0].appendChild(ajsscript);
		}
	},

	renderAd:function (arr_castparams) {
		var b = this.chooseBanner(arr_castparams);
		if (!b) return;
		if (b.bannerid) {
			var result = '';
			var cb = Math.round(Math.random()*2147483647).toString(36);
			if (b.storagetype == 'html') {
				result += decodeURIComponent(b.htmltemplate);
			} else {
				var clicktag = "http://" + this.__ADSERVER + "/www/delivery/ck.php?oaparams=2__bannerid=" + b.bannerid + "__zoneid=" + b.zoneid;
				if (b.needtracker) {
					clicktag += "__OXLCA=1";
				}
				clicktag += "__cb=" + cb + "__oadest=" + encodeURIComponent(b.url);

				if (b.contenttype == 'txt') {
					result += "<a href='" + clicktag + "' target='_blank' id='tk_adtarget' name='tk_adtarget'>" + decodeURIComponent(b.htmltemplate) + "</a>";
				} else if (b.contenttype == 'swf') {
					result += "<embed height=" + b.height + " width=" + b.width;
					result += " flashvars='clickTARGET=_blank&amp;clickTAG=" + encodeURIComponent(clicktag) + "'";
					result += " allowscriptaccess='always'";
					if (b.transparent == 1) {
						result += " wmode='transparent'";
					} else {
						result += " wmode='opaque'";
					}
					result + " quality='high' name='tkad' style=''";
					result += " src=" + b.fileurl + " type='application/x-shockwave-flash' />";
				} else {
					result += "<a href='" + clicktag + "' target='_blank' id='tk_adtarget' name='tk_adtarget'>";
					result += "<img src='" + b.fileurl + "' width='" + b.width + "' height='" + b.height + "' alt='" + decodeURIComponent(b.alt) + "' title='' border='0' /></a>";
				}
			}

			var targetdivid = 'tk_' + b.zoneid;
			var targetdiv = document.getElementById(targetdivid);

			var inner_direct_lg_dotimg = '';//内部如果是51network的direct code，则把lg代码取出，统一放到外部的lgwrap的div里去。改变量存储内部的lg代码。

			if (wz_mode == 3) {
				this.showFloatAd(targetdivid, result, b);
			} else {
				var addivid = targetdivid + '_adwrap';
				var addiv = document.createElement("div");
				addiv.setAttribute('id', addivid);
				addiv.setAttribute('name', addivid);
				addiv.style.display = 'inline';
				addiv.style.height = '0px';
				addiv.style.background = '#FFFFFF';
				targetdiv.appendChild(addiv);

				if (window.attachEvent) {
					addiv.attachEvent("onmousedown", function () {
						wzcast.sendTrackRequest(b.zoneid, b.bannerid, b.campaignid, "c");
						if (b.storagetype == 'html' && result.indexOf('script') == -1) {
							wzcast.sendClickRequest(b);
						}
					});
				} else {
					addiv.addEventListener("mousedown", function () {
						wzcast.sendTrackRequest(b.zoneid, b.bannerid, b.campaignid, "c");
						if (b.storagetype == 'html' && result.indexOf('script') == -1) {
							wzcast.sendClickRequest(b);
						}
					}, false);
				}
				
				if (wz_mode == 4) {
					setTimeout(function(){wzcast.showFullScreenAd(addivid, result);}, 5000);
				} else {
					if (b.storagetype == 'html') {
						//如果内部是51network的direct code，则取出lg相关代码，统一放入下面lgwrap的div。
						var patt_directcode_lg = /<img height=\"0\" width=\"0\".*? src=\"http:\/\/g.51network.com\/wits\/www\/delivery\/lg.php.*?\" \/>/g;
						var lg_arr = result.match(patt_directcode_lg);
						if (lg_arr) {
							for (var i=0; i<lg_arr.length; i++) {
								inner_direct_lg_dotimg += lg_arr[i];
							}
							result = result.replace(patt_directcode_lg, '');
						}

						var jsiframeid = 'tk_iframe_' + b.zoneid;
						var jsIframe = this.createIframe(jsiframeid, jsiframeid, b.width, b.height, 0, 'no');
						addiv.appendChild(jsIframe);
						if (window.attachEvent) {
							jsIframe.attachEvent("onactivate", function () {
								wzcast.sendTrackRequest_OuterWindow(b.zoneid, b.bannerid, b.campaignid, "c");
								wzcast.sendClickRequest(b);
							});
						} else {
							jsIframe.contentWindow.addEventListener("focus", function () {
								wzcast.sendTrackRequest_OuterWindow(b.zoneid, b.bannerid, b.campaignid, "c");
								wzcast.sendClickRequest(b);
							}, false);
						}
						
						var jsiframeobj = window.frames[jsiframeid];
						jsiframeobj.document.open();
						var reg_wz = /wz_zoneid = (\d+)\;/;
						var arrr = result.match(reg_wz);
						if (arrr) {
							var inner_zoneid = arrr[1];
							jsiframeobj.document.write("<html><body TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0><div id='tk_" + inner_zoneid + "'></div>" + result + "</body></html>");
						} else {
							jsiframeobj.document.write("<html><body TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>" + result + "</body></html>");
						}
						jsiframeobj.document.close();
					} else {
						addiv.innerHTML = result;
					}
				}
			}

			var lgdiv = document.createElement("div");
			var lgdivid = targetdivid + '_lgwrap';
			lgdiv.setAttribute('id', lgdivid);
			lgdiv.setAttribute('name', lgdivid);
			lgdiv.style.width = '0px';
			lgdiv.style.height = '0px';
			lgdiv.visibility = 'hidden';
			targetdiv.appendChild(lgdiv);

			var strdivhtml = "<img src='http://" + this.__ADSERVER + "/www/delivery/lg.php?bannerid=" + b.bannerid + "&amp;campaignid=" + b.campaignid + "&amp;zoneid=" + b.zoneid;
			if (b.needtracker) {
				strdivhtml += "&amp;OXLIA=1";
			}
			strdivhtml += "&amp;cb=" + cb + "' width='0' height='0' alt='' />";
			if (inner_direct_lg_dotimg) {
				strdivhtml += inner_direct_lg_dotimg;
			}
			
			if (b.appcode_b) {
				try {
					var appendbframeid = 'tk_iframe_appendb_' + b.bannerid;
					var appendbframe = this.createIframe(appendbframeid, appendbframeid, 0, 0, 0, 'no');
					lgdiv.appendChild(appendbframe);
					var appendbframeobj = window.frames[appendbframeid];
					appendbframeobj.document.open();				
					appendbframeobj.document.write("<html><head></head><body TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>" + decodeURIComponent(b.appcode_b) + "</body></html>");
					appendbframeobj.document.close();
				} catch (e) {
					var ihc = this.pickupHtmlAndRunScript(decodeURIComponent(b.appcode_b));
					if (ihc) strdivhtml += ihc;
				}
				
			}
			if (b.appcode_z) {
				//前一种方法是放在本页用eval执行，后一种方法是在一个创建的新iframe里直接document.write，目前采用第二种方法
				//var ihc = this.pickupHtmlAndRunScript(decodeURIComponent(b.appcode_z));
				//if (ihc) strdivhtml += ihc;

				var appendzframeid = 'tk_iframe_appendz_' + b.zoneid;
				var appendzframe = this.createIframe(appendzframeid, appendzframeid, 0, 0, 0, 'no');
				lgdiv.appendChild(appendzframe);
				var appendzframeobj = window.frames[appendzframeid];
				appendzframeobj.document.open();				
				appendzframeobj.document.write("<html><head></head><body TOPMARGIN=0 LEFTMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>" + decodeURIComponent(b.appcode_z) + "</body></html>");
				appendzframeobj.document.close();
			}

			lgdiv.innerHTML = strdivhtml;
		}
		this.trackimpression(b.zoneid, b.bannerid, b.campaignid);
	},

	chooseBanner:function(arr_castparams) {

		var getViewed = function() {
			var banners = wzcast.getCookie('wz_tdbs');
			if (banners) {
				var viewed = new Array();
				var arr_b = banners.split('|');
				for (var i=0;i<arr_b.length;i++) {
					var arr_c = arr_b[i].split('-');
					viewed[arr_c[0]] = arr_c[1];
				}
				return viewed;
			}
			return new Array();
		};
		
		var chooseBySeq = function(candidate) {
			var arr_bid = wzcast.getCookie('wz_lastbid').split('-');
			var lastbid = arr_bid[0];
			var lastseqtimes = parseInt(arr_bid[1]);
			var lastbanner = candidate[lastbid];

			if (lastbanner && lastseqtimes < lastbanner.seqtimes) return lastbanner;

			var sortSeq = new Array();
			var lastseq = 0;
			var candidate_seq = new Array();
			for (var i=0;i<arr_castparams.length;i++) {
				var obj = arr_castparams[i];
				if (obj.bannerid == lastbid) {
					lastseq = obj.seq;
				}
				if (candidate[obj.bannerid]) {
					sortSeq.push(obj.seq);
					candidate_seq[obj.seq] = obj;
				}
			}
			sortSeq.sort();

			var nextseq = 0;
			for (var i=0; i<sortSeq.length; i++) {
				if (sortSeq[i] > lastseq) {
					nextseq = sortSeq[i];
					break;
				}
			}
			if (!nextseq) nextseq = sortSeq[0];

			return candidate_seq[nextseq];
		};
		
		var chooseMinSeq = function(candidate) {
			var obj = '';
			for (key1 in candidate) {
				if (!obj) {
					obj = candidate[key1];
				} else {
					if (obj.seq > candidate[key1].seq) {
						obj = candidate[key1];
					}
				}
			}
			return obj;
		};

		var chooseByWeight = function(candidate) {

			var totalweight = 0;
			for (key1 in candidate) {
				totalweight += parseInt(candidate[key1].weight);
			}

			var ran = Math.ceil(Math.random()*totalweight);
			var curson = 0;
			for (key2 in candidate) {
				var obj = candidate[key2];
				curson += parseInt(obj.weight);
				if (ran <= curson) {
					return obj;
				}
			}

			return null;
		};

		var chooseByRandom = function() {
			var r = Math.floor(Math.random()*arr_castparams.length);
			return arr_castparams[r];
		};

		var updateCookieDate = function(bid) {
			
			var arr_bid = wzcast.getCookie('wz_lastbid').split('-');
			var lastbid = arr_bid[0];
			var lastseqtimes = parseInt(arr_bid[1]);
			if (bid == lastbid) {
				lastseqtimes++;
				wzcast.setCookie('wz_lastbid', bid+'-'+lastseqtimes);
			} else {
				wzcast.setCookie('wz_lastbid', bid+'-1');
			}

			var viewed = getViewed();
			if (viewed[bid]) {
				viewed[bid]++;
			} else {
				viewed[bid] = 1;
			}
			
			var cookieVals = new Array();
			for (k in viewed) {
				cookieVals.push(k + '-' + viewed[k]);
			}
			
			wzcast.setCookie('wz_tdbs', cookieVals.join('|'));
		};

		var viewed = getViewed();
		var candidate = new Array();
		var isSeq = false;

		for (var j=0;j<arr_castparams.length;j++) {
			var obj = arr_castparams[j];
			if (obj.seq) isSeq = true;
			if ( (!viewed[obj.bannerid]) || (!obj.limittimes) || (parseInt(viewed[obj.bannerid]) < parseInt(obj.limittimes))) {
				candidate[obj.bannerid] = obj;
			}
		}

		var banner = isSeq ? chooseBySeq(candidate) : chooseByWeight(candidate);

		if (!banner) banner = chooseByWeight(candidate);

		if (!banner) banner = chooseByRandom();

		if (banner) {
			updateCookieDate(banner.bannerid);
		}

		return banner;
	},

	getCookie:function(name) {     
		var start = document.cookie.indexOf( name + "=" );
		var len = start + name.length + 1;
		if ((!start ) && (name != document.cookie.substring(0, name.length))) {
			return '';
		}
		if (start == -1) return '';
		var end = document.cookie.indexOf( ';', len);
		if (end == -1) end = document.cookie.length; 
		return unescape(document.cookie.substring(len, end)); 
	},

	setCookie:function(name, value) {
		var tt = new Date();
		var ty = tt.getFullYear();
		var tm = tt.getMonth();
		var td = tt.getDate();
		var et = new Date(ty,tm,td,23,59,59);
		var maindomain = wzcast.site.getSite(wzcast._w);
		document.cookie = name + '=' + escape(value) + ';expires=' + et.toGMTString() + ';path=/' + ';domain=' + maindomain; 
	},
		
	deleteCookie:function(name, path, domain) {
		if (getCookie(name)) 
			document.cookie = name + '=' + ((path) ? ';path=' + path : '') + ((domain) ? ';domain=' + domain : '') + ';expires=Thu, 01-Jan-1970 00:00:01 GMT'; 
	},

	showFloatAd:function (parentId, content, b) {

		var heartBeat = function () {
			var diffY;
			if (document.documentElement && document.documentElement.scrollTop) {
				diffY = document.documentElement.scrollTop;
			} else if (document.body) {
				diffY = document.body.scrollTop;
			} else {
				/*Netscape stuff*/
			}     
					 
			percent = .1 * (diffY-lastScrollY);
			if (percent > 0) {
				percent = Math.ceil(percent);
			} else {
				percent = Math.floor(percent);
			}

			var floatads = document.getElementsByName("wz_floatad");
			for (var i=0; i<floatads.length; i++) {
				floatads[i].style.top =  parseInt(floatads[i].style.top) + percent + "px";
			}
			lastScrollY += percent;
		};

		var createFloatDiv = function (parentId, content, b, direction) {
			var addiv = document.createElement("div");
			addiv.setAttribute('id', parentId + '_adwrap');
			addiv.setAttribute('name', parentId + '_adwrap');
			addiv.style.display = 'inline';
			addiv.style.height = '0px';
			addiv.style.background = '#FFFFFF';
			addiv.innerHTML = content;
			if (window.attachEvent) {
				addiv.attachEvent("onmousedown", function () {
					wzcast.sendTrackRequest(b.zoneid, b.bannerid, b.campaignid, "c");
				});
			} else {
				addiv.addEventListener("mousedown", function () {
					wzcast.sendTrackRequest(b.zoneid, b.bannerid, b.campaignid, "c");
				}, false);
			}

			var floatdiv = document.createElement("div");
			var floatdivid = 'wz_floatad';
			floatdiv.setAttribute('id', floatdivid);
			floatdiv.setAttribute('name', floatdivid);
			floatdiv.style.background = '#ccc';
			if (direction == 'left') {
				floatdiv.style.left = wz_marginx;
			} else {
				floatdiv.style.right = wz_marginx;
			}
			floatdiv.style.position = 'absolute';
			floatdiv.style.zIndex = 1;
			floatdiv.style.top = wz_marginy;
			floatdiv.appendChild(addiv);

			if (typeof wz_closebtn != 'undefined' && wz_closebtn) {
				var btndiv = document.createElement("div");
				btndiv.style.background = '#efefef';
				btndiv.style.fontSize = '12px';
				btndiv.innerHTML = "<a href='javascript:wzcast.hideFloatAd(\"" + floatdivid + "\")'>关闭</a>";
				floatdiv.appendChild(btndiv);
			}

			document.body.appendChild(floatdiv);
		};

		var lastScrollY=0;
		if (typeof wz_floatad == 'undefined') wz_floatad = 'both';
		if (typeof wz_marginx == 'undefined') wz_marginx = '10px';
		if (typeof wz_marginy == 'undefined') wz_marginy = '10px';

		if (wz_floatad != 'both') {
			createFloatDiv(parentId, content, b, wz_floatad);
		} else {
			createFloatDiv(parentId, content, b, 'left');
			createFloatDiv(parentId, content, b, 'right');
		}

		//setInterval(function(){heartBeat();}, 1);
		setInterval(heartBeat, 1);
	}, 

	hideFloatAd:function (id) {
		var floadads = document.getElementsByName(id);
		for (var i=0; i<floadads.length; i++) {
			floadads[i].style.display = 'none';
		}
	},

	showFullScreenAd:function (id, content) {
		var addiv = document.getElementById(id);
		addiv.innerHTML = content;
		addiv.style.display = 'block';
		setTimeout(function(){wzcast.hideFullScreenAd(id);}, 5000);
	},

	hideFullScreenAd:function (id) {
		var addivs = document.getElementsByName(id);
		for (var i=0; i<addivs.length; i++) {
			addivs[i].style.display = 'none';
			addivs[i].style.width = '0px';
			addivs[i].style.height = '0px';
		}
	},

	generateCb:function (m) {
		a = "0123456789abcdefghijklmnopqrstuvwxyz".split(''); 
		n = '';
		for (i=0; i<m; i++) {
			n += a[Math.floor(Math.random()*a.length)].toString();
		}
		return n;
	},

	beaconReady:function (z, b, c) {
		this.person.processSO();
		this.doImpressionTrackAction(z, b, c);		
	},

	doImpressionTrackAction:function (z, b, c) {
		//wzcast.sendTrackRequest(z, b, c, "i");
		setTimeout(function(){wzcast.sendTrackRequest(z, b, c, 'i')}, 100);

		var currguid = '';
		if (typeof wz_guid != 'undefined' && wz_guid) {
			currguid = wz_guid;
		} else if (typeof wz_httpguid != 'undefined' && wz_httpguid) {
			currguid = wz_httpguid;
		}

		if (!currguid) return;

		var patt = /__cb=(\w+)__oadest/;
		var adlinkobj = document.getElementsByName("tk_adtarget");
		for (var i=0; i<adlinkobj.length; i++) {
			var oldhref = adlinkobj[i].href;
			var newhref = oldhref.replace(patt, "__cb=$1|" + currguid + "__oadest");
			adlinkobj[i].href = newhref;
		}

		var patt_swf = /clickTAG=(.*?)__cb%3D(\w+)__oadest/;
		var addivs = document.getElementsByName('tk_' + z + '_adwrap');
		for (var i=0; i<addivs.length; i++) {
			var oldstr = addivs[i].innerHTML;
			if (oldstr.match(patt_swf)) {
				var newstr = oldstr.replace(patt_swf, "clickTAG=$1__cb%3D$2%7C" + currguid + "__oadest");
				addivs[i].innerHTML = newstr;
			}	
		}
		
		//var jsframe = document.getElementById();
		var jsiframeobj = window.frames["tk_iframe_" + z];
		if (jsiframeobj) {
			var bodycontent = jsiframeobj.document.body.innerHTML;
			if (bodycontent.match(patt)) {
				bodycontent = bodycontent.replace(patt, "__cb=$1|" + currguid + "__oadest");
			}
			if (bodycontent.match(patt_swf)) {
				bodycontent = bodycontent.replace(patt_swf, "clickTAG=$1__cb%3D$2%7C" + currguid + "__oadest");
			}
			jsiframeobj.document.body.innerHTML = bodycontent;
		}
	},

	sendTrackRequest_OuterWindow:function(z, b, c, ca) {
		if (typeof wz_trackrequest == 'undefined' || !wz_trackrequest) {
			wz_trackrequest = new Array();
		}
		if (!wz_trackrequest[z + '-' + b]) {
			wzcast.sendTrackRequest(z, b, c, ca);
			wz_trackrequest[z + '-' + b] = 1;
		}
	},
	
	sendTrackRequest:function (z, b, c, ca) {
		var replaceBlank = function(value) {
			return (value != 'undefined' && value) ? value : -1;
		};

		if (typeof wz_guid == 'undefined' || !wz_guid) {
			if (typeof wz_httpguid != 'undefined') {
				wz_guid = wz_httpguid;
			} else {
				wz_guid = 'xxx';
			}
		}
		s = '';
		t = wzcast;
		h = t.person;
		d = t.site;
		s += t.__TRACKURL + "_beacon.gif";
		s += "?_guid=" + wz_guid;
		s += "&_site=" + replaceBlank(d._domain);
		s += "&_url=" + replaceBlank(d._location);
		s += "&_kw=" + replaceBlank(d._keywords);
		s += "&_rf=" + replaceBlank(d._referer);
		s += "&_pg=" + replaceBlank(wz_gendar);
		s += "&_pp=" + replaceBlank(wz_period);
		s += "&_pe=" + replaceBlank(wz_edu);
		s += "&_pi=" + replaceBlank(wz_income);
		s += "&_pb=" + replaceBlank(wz_birthday);
		s += "&_pm=" + replaceBlank(wz_email);
		s += "&_pc=" + replaceBlank(wz_cell);
		s += "&_z=" + replaceBlank(z);
		s += "&_b=" + replaceBlank(b);
		s += "&_c=" + replaceBlank(c);
		s += "&_gp=" + replaceBlank(wz_province);
		s += "&_gc=" + replaceBlank(wz_city);

		if (wz_actionflag) {
			s += "&_sa=-1";
			s += "&_cl=0";
		} else {
			s += "&_sa=" + replaceBlank(wz_sa);
			s += "&_cl=" + replaceBlank(wz_cl);
			wz_actionflag = true;
		}
		s += "&_ca=" + replaceBlank(ca);
		s += "&_pdctc=" + replaceBlank(wz_pdctcat);
		s += "&_pdctb=" + replaceBlank(wz_pdctbrand);
		s += "&rnd=" + Math.round(Math.random()*100000000);

		if (ca == 'i') {
			if (typeof wz_ds != 'undefined' && wz_ds) {
				s += "&_ds=" + wz_ds + "&_dt=" + wz_dt;
			}
			if (typeof wz_samepv == 'undefined') {
				wz_samepv = 1;
			} else {
				s += "&samepv=" + replaceBlank(wz_samepv);
			}
		}
		
		targetgif = document.createElement("img");
		targetgif.width = targetgif.height = 1;
		if (typeof wz_stoptrack == 'undefined' || !wz_stoptrack) {
			targetgif.src = s;
		}

		//1/1000几率抽样，检测iframe以及广告投放在不同于openx内配置的域等情况
		var r1 = Math.round(Math.random()*1000);
		//if (wz_guid == 'A1UD8E551245114598983') {r1 = 78;}
		if (r1 == 78) {
			var frametarget = t.__TRACKURL + '_iframe.gif?z=' + replaceBlank(z) + "&url=" + replaceBlank(d._location) + "&rf=" + replaceBlank(d._referer);
			if (typeof wz_iframe != 'undefined') {
				frametarget += '&iframestatus=' + wz_iframe;
			}
			targetgif.src = frametarget;
		}
	},

	sendClickRequest:function (b) {

		if (typeof wz_clientrequest == 'undefined' || !wz_clientrequest) {
			wz_clientrequest = new Array();
		}
		if (!wz_clientrequest[b.zoneid + '-' + b.bannerid]) {
			var target = "http://" + this.__ADSERVER + "/www/delivery/ck.php?oaparams=2__bannerid=" + b.bannerid + "__zoneid=" + b.zoneid;
			var cb = Math.round(Math.random()*2147483647).toString(36);
			if (b.needtracker) {
				target += "__OXLCA=1";
			}
			target += "__cb=" + cb;

			var currguid = '';
			if (typeof wz_guid != 'undefined' && wz_guid) {
				currguid = wz_guid;
			} else if (typeof wz_httpguid != 'undefined' && wz_httpguid) {
				currguid = wz_httpguid;
			}
			if (currguid) {
				target += "|" + currguid;
			}

			target += "__oadest=" + encodeURIComponent(b.url);
			var targetgif1 = document.createElement("img");
			targetgif1.width = targetgif1.height = 1;
			targetgif1.src = target;
			document.body.appendChild(targetgif1);
			wz_clientrequest[b.zoneid + '-' + b.bannerid] = 1;
		}
		
	},

	ipReady:function(p, c, z) {
		if (typeof wz_province == 'undefined' || !wz_province) {
			wz_province = p;
			wz_city = c;
		} 
		this.process(z);
	},

	process:function (z) {
		if (typeof wz_mode == 'undefined') wz_mode = 1;
		if (this.wz_mode == 2) {
			if (typeof wz_width == 'undefined' || isNaN(wz_width)) wz_width = 0;
			if (typeof wz_height == 'undefined' || isNaN(wz_height)) wz_height = 0;
		}
		if (typeof wz_gendar == 'undefined') wz_gendar = '';
		if (typeof wz_birthday == 'undefined') wz_birthday = '';
		if (wz_birthday == '0000-00-00') wz_birthday = '';
		if (typeof wz_period == 'undefined') wz_period = '';
		if (!wz_period) {
			wz_period = this.person.convertPeriod(wz_birthday);
		}
		if (typeof wz_edu == 'undefined') wz_edu = '';
		if (typeof wz_income == 'undefined') wz_income = '';
		if (typeof wz_email == 'undefined') wz_email = '';
		if (typeof wz_cell == 'undefined') wz_cell = '';
		if (typeof wz_province == 'undefined') wz_province = '';
		if (typeof wz_city == 'undefined') wz_city = '';

		if (typeof wz_pdctcat == 'undefined') wz_pdctcat = '';
		if (typeof wz_pdctbrand == 'undefined') wz_pdctbrand = '';
		wz_pdctbrand = encodeURIComponent(wz_pdctbrand);

		if (typeof wz_sa == 'undefined') {
			wz_sa = '';
		}

		if (typeof wz_cl == 'undefined') {
			wz_cl = 0;
		}
	
		if (typeof wz_actionflag == 'undefined') {
			wz_actionflag = false;
		}

		if (z) {
			this.castAdCode(z);
		} else {
			this.trackimpression('', '', '');
		}
	},

	pickupHtmlAndRunScript:function(t) {
		var reg0 = /\r\n/g;
		var reg1 = /<script.*?>(.*?)<\/script>/g;
		var reg2 = /<script.*?>(.*?)<\/script>/;

		var r1 = t.replace(reg0, '');
		var r2 = r1.match(reg1);
		var r3 = r1.replace(reg1, '');

		for (k in r2) {
			if (navigator.userAgent.indexOf("MSIE")>0 && k==0) continue;
			try {
				r4 = r2[k].match(reg2);
				eval(r4[1]);
			} catch (e) {
				//alert (e);
			}
		}
		return r3;
	},

	createIframe:function(id, name, width, height, frameborder, scrolling) {
		var tmpiframe = document.createElement("iframe");
		tmpiframe.setAttribute('id', id);
		tmpiframe.setAttribute('name', name);
		tmpiframe.setAttribute('width', width);
		tmpiframe.setAttribute('height', height);
		tmpiframe.setAttribute('frameBorder', frameborder);
		tmpiframe.setAttribute('scrolling', 'no');
		return tmpiframe;
	}

};

function castparams(bannerid,contenttype,alt,width,height,url,campaignid,zoneid,fileurl,storagetype,htmltemplate,limittimes,seq,seqtimes,weight,appcode_b,appcode_z,transparent,needtracker) {
	this.bannerid = bannerid;
	this.contenttype = contenttype;
	this.alt = alt;
	this.width = width;
	this.height = height;
	this.url = url;
	this.campaignid = campaignid;
	this.zoneid = zoneid;
	this.fileurl = fileurl;
	this.storagetype = storagetype;
	this.htmltemplate = htmltemplate;
	this.limittimes = limittimes;
	this.seq = seq;
	this.seqtimes = seqtimes;
	this.weight = weight;
	this.appcode_b = appcode_b;
	this.appcode_z = appcode_z;
	this.transparent = transparent;
	this.needtracker = needtracker;
}

var hex_chr = "0123456789abcdef"; 

function rhex(num) {
	str = ""; 
	for(j = 0; j <= 3; j++) 
	str += hex_chr.charAt((num >> (j * 8 + 4)) & 0x0F) + 
	hex_chr.charAt((num >> (j * 8)) & 0x0F); 
	return str; 
} 

function str2blks_MD5(str) { 
	nblk = ((str.length + 8) >> 6) + 1; 
	blks = new Array(nblk * 16); 
	for(i = 0; i < nblk * 16; i++) blks[i] = 0; 
	for(i = 0; i < str.length; i++) 
	blks[i >> 2] |= str.charCodeAt(i) << ((i % 4) * 8); 
	blks[i >> 2] |= 0x80 << ((i % 4) * 8); 
	blks[nblk * 16 - 2] = str.length * 8; 
	return blks; 
} 

function add(x, y) { 
	var lsw = (x & 0xFFFF) + (y & 0xFFFF); 
	var msw = (x >> 16) + (y >> 16) + (lsw >> 16); 
	return (msw << 16) | (lsw & 0xFFFF); 
} 

function rol(num, cnt) { 
	return (num << cnt) | (num >>> (32 - cnt)); 
} 

function cmn(q, a, b, x, s, t) { 
	return add(rol(add(add(a, q), add(x, t)), s), b); 
} 

function ff(a, b, c, d, x, s, t) { 
	return cmn((b & c) | ((~b) & d), a, b, x, s, t); 
} 

function gg(a, b, c, d, x, s, t) { 
	return cmn((b & d) | (c & (~d)), a, b, x, s, t); 
} 

function hh(a, b, c, d, x, s, t) { 
	return cmn(b ^ c ^ d, a, b, x, s, t); 
} 

function ii(a, b, c, d, x, s, t) { 
	return cmn(c ^ (b | (~d)), a, b, x, s, t); 
} 

function MD5(str) { 
	x = str2blks_MD5(str); 
	var a = 1732584193; 
	var b = -271733879; 
	var c = -1732584194; 
	var d = 271733878; 
	for(i = 0; i < x.length; i += 16) { 
		var olda = a; 
		var oldb = b; 
		var oldc = c; 
		var oldd = d; 
		a = ff(a, b, c, d, x[i+ 0], 7 , -680876936); 
		d = ff(d, a, b, c, x[i+ 1], 12, -389564586); 
		c = ff(c, d, a, b, x[i+ 2], 17, 606105819); 
		b = ff(b, c, d, a, x[i+ 3], 22, -1044525330); 
		a = ff(a, b, c, d, x[i+ 4], 7 , -176418897); 
		d = ff(d, a, b, c, x[i+ 5], 12, 1200080426); 
		c = ff(c, d, a, b, x[i+ 6], 17, -1473231341); 
		b = ff(b, c, d, a, x[i+ 7], 22, -45705983); 
		a = ff(a, b, c, d, x[i+ 8], 7 , 1770035416); 
		d = ff(d, a, b, c, x[i+ 9], 12, -1958414417); 
		c = ff(c, d, a, b, x[i+10], 17, -42063); 
		b = ff(b, c, d, a, x[i+11], 22, -1990404162); 
		a = ff(a, b, c, d, x[i+12], 7 , 1804603682); 
		d = ff(d, a, b, c, x[i+13], 12, -40341101); 
		c = ff(c, d, a, b, x[i+14], 17, -1502002290); 
		b = ff(b, c, d, a, x[i+15], 22, 1236535329); 
		a = gg(a, b, c, d, x[i+ 1], 5 , -165796510); 
		d = gg(d, a, b, c, x[i+ 6], 9 , -1069501632); 
		c = gg(c, d, a, b, x[i+11], 14, 643717713); 
		b = gg(b, c, d, a, x[i+ 0], 20, -373897302); 
		a = gg(a, b, c, d, x[i+ 5], 5 , -701558691); 
		d = gg(d, a, b, c, x[i+10], 9 , 38016083); 
		c = gg(c, d, a, b, x[i+15], 14, -660478335); 
		b = gg(b, c, d, a, x[i+ 4], 20, -405537848); 
		a = gg(a, b, c, d, x[i+ 9], 5 , 568446438); 
		d = gg(d, a, b, c, x[i+14], 9 , -1019803690); 
		c = gg(c, d, a, b, x[i+ 3], 14, -187363961); 
		b = gg(b, c, d, a, x[i+ 8], 20, 1163531501); 
		a = gg(a, b, c, d, x[i+13], 5 , -1444681467); 
		d = gg(d, a, b, c, x[i+ 2], 9 , -51403784); 
		c = gg(c, d, a, b, x[i+ 7], 14, 1735328473); 
		b = gg(b, c, d, a, x[i+12], 20, -1926607734); 
		a = hh(a, b, c, d, x[i+ 5], 4 , -378558); 
		d = hh(d, a, b, c, x[i+ 8], 11, -2022574463); 
		c = hh(c, d, a, b, x[i+11], 16, 1839030562); 
		b = hh(b, c, d, a, x[i+14], 23, -35309556); 
		a = hh(a, b, c, d, x[i+ 1], 4 , -1530992060); 
		d = hh(d, a, b, c, x[i+ 4], 11, 1272893353); 
		c = hh(c, d, a, b, x[i+ 7], 16, -155497632); 
		b = hh(b, c, d, a, x[i+10], 23, -1094730640); 
		a = hh(a, b, c, d, x[i+13], 4 , 681279174); 
		d = hh(d, a, b, c, x[i+ 0], 11, -358537222); 
		c = hh(c, d, a, b, x[i+ 3], 16, -722521979); 
		b = hh(b, c, d, a, x[i+ 6], 23, 76029189); 
		a = hh(a, b, c, d, x[i+ 9], 4 , -640364487); 
		d = hh(d, a, b, c, x[i+12], 11, -421815835); 
		c = hh(c, d, a, b, x[i+15], 16, 530742520); 
		b = hh(b, c, d, a, x[i+ 2], 23, -995338651); 
		a = ii(a, b, c, d, x[i+ 0], 6 , -198630844); 
		d = ii(d, a, b, c, x[i+ 7], 10, 1126891415); 
		c = ii(c, d, a, b, x[i+14], 15, -1416354905); 
		b = ii(b, c, d, a, x[i+ 5], 21, -57434055); 
		a = ii(a, b, c, d, x[i+12], 6 , 1700485571); 
		d = ii(d, a, b, c, x[i+ 3], 10, -1894986606); 
		c = ii(c, d, a, b, x[i+10], 15, -1051523); 
		b = ii(b, c, d, a, x[i+ 1], 21, -2054922799); 
		a = ii(a, b, c, d, x[i+ 8], 6 , 1873313359); 
		d = ii(d, a, b, c, x[i+15], 10, -30611744); 
		c = ii(c, d, a, b, x[i+ 6], 15, -1560198380); 
		b = ii(b, c, d, a, x[i+13], 21, 1309151649); 
		a = ii(a, b, c, d, x[i+ 4], 6 , -145523070); 
		d = ii(d, a, b, c, x[i+11], 10, -1120210379); 
		c = ii(c, d, a, b, x[i+ 2], 15, 718787259); 
		b = ii(b, c, d, a, x[i+ 9], 21, -343485551); 
		a = add(a, olda); 
		b = add(b, oldb); 
		c = add(c, oldc); 
		d = add(d, oldd); 
	} 
	return rhex(a) + rhex(b) + rhex(c) + rhex(d); 
} 

(function () {

	try {
		if (top != window && top.document.domain == window.document.domain) {
			wzcast._w = top.window;
			wz_iframe = 2;
		} 
	} catch (e) {
		// if catch here, then showed ad was put under different subdomain
		try {
			var u = window.document.location.href;
			var patt = /([\w-]+\.(com|net|org|gov|cc|biz|info|cn)(\.(cn|hk))*)[\/|:]/;
			var arr = u.match(patt);
			if (arr) {
				document.domain = arr[1];
				if (top.document.domain == document.domain) {
					wzcast._w = top.window;
				}
			}
			wz_iframe = 2;
		} catch (e) {
			wz_iframe = 1;
		}
		
	}

	var wz_xt = "tk_" + wz_zoneid;
	var currentzone = document.getElementById(wz_xt);
	if (!currentzone) {
		if (typeof wz_width != 'undefined' && typeof wz_height != 'undefined') {
			document.write("<div id='" + wz_xt + "' style='width:" + wz_width + "px;height:" + wz_height + "px;'></div>");
		} else {
			document.write("<div id='" + wz_xt + "'></div>");
		}
	}
	
	
	if (typeof wz_province == 'undefined' && typeof wz_city == 'undefined') {
		var ipscript = document.createElement('script');
        ipscript.src = "http://ip.51network.com/ipcityx.php?z=" + wz_zoneid;
		//ipscript.src = "http://localhost/ipcityx.php?z=" + wz_zoneid;
        document.getElementsByTagName('head')[0].appendChild(ipscript);
	} else {
		wzcast.ipReady(wz_province, wz_city, wz_zoneid);
	}

})();

