if(!cAd){
	var cAd={
		keys:{
			"referer":"&ref=",
			"cookie":"cmsadvisited",
            "service_url":"resultUrl"
			},

		write:function(resultUrl,apikey,area){
			var uid=Math.floor(Math.random()*1679615).toString(36);
			var rfnc = cAd.checkFnc('cAd.rec_'+uid);
			var tid = cAd.checkObj('cadtg'+uid);

			document.write('<div id="'+tid+'"></div>');

			var fncTxt = "";
			eval(rfnc+'=function(data){ if(data && data.ads){cAd.receive("'+tid+'",data.ads); cAd.updateCookie("'+area+'",data.isThreshold);} }');
			var ref = "";
			if (resultUrl.lastIndexOf("/") != (resultUrl.length-1)) {
				resultUrl += "/";
			}
            cAd.keys.service_url = resultUrl;

			resultUrl += "api/";

			resultUrl += encodeURIComponent(apikey) + "/";
			resultUrl += encodeURIComponent(area) + "/";
			resultUrl += "?callback="+rfnc+"&format=json";
			resultUrl += "&visited="+cAd.getCookie(area);

			try {
				var parent_url = parent.document.URL;
				if (document.referrer == parent_url) {
					ref = parent.document.referrer;
				} else {
					ref = document.referrer;
				}
			} catch (ex) {
			}

			// リファラーURL
			if (ref.length > 0) {
				resultUrl += cAd.keys.referer + encodeURIComponent(ref);
			}

			var script = document.createElement( 'script' );
			script.charset = 'utf-8';
			script.type = 'text/javascript';
			script.src = resultUrl;
			var objBody = document.getElementsByTagName("head").item(0);
			objBody.appendChild( script );

			},

		checkObj:function(tid){
			if(document.getElementById(tid) && tid.length<50){
				tid+=Math.floor(Math.random()*35).toString(36);
				return cAd.checkObj(tid);
			}
			return tid;
		},
		checkFnc:function(rfnc){
			if(typeof(eval(rfnc))=="function" && rfnc.length<50){
				rfnc+=Math.floor(Math.random()*35).toString(36);
				return cAd.checkFnc(rfnc);
			}
			return rfnc;
		},
		receive:function(id,data) {
			var wtag = document.getElementById(id);
				for (var i = 0; i < data.length; i++) {
					cAd.addTag(wtag, data[i]);
				}
			},
		addTag:function(element, data) {
			var elDiv = document.createElement("div");
            if(data.imageUrl && data.imageUrl.indexOf("/")==0){
                data.imageUrl = data.imageUrl.substring(1);
            }
            if (data.type==1) {
                cAd.addObject(elDiv, data);
            } else {
                var anchor = document.createElement("a");
                anchor.href = data.url;
                if (data.target) {
                    anchor.target = data.target;
                }
                if (data.type==0) {
                    cAd.addImg(anchor, data);
                } else {
                    cAd.addText(anchor, data);
                }
                elDiv.appendChild(anchor);
            }
			element.appendChild(elDiv);
		},
		addText:function(element, data) {
			var text = document.createTextNode(data.text);
			element.appendChild(text);
		},
		addImg:function(element, data) {
			var image = document.createElement("img");
			image.src = cAd.keys.service_url + data.imageUrl;
			image.width = data.imageWidth;
			image.height = data.imageHeight;
			image.alt = data.text;
			image.title = data.title;
            image.border = 0;

			element.appendChild(image);
		},
		addObject:function(element, data) {
			var objAt="";
			var embAt="";
			var w="";
			var h="";
			var etcObjP="";
			var etcObjA="";
			if(data.imageContentType=="application/x-shockwave-flash"){
				objAt="classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0'";
				embAt="pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash'";
				etcObjP="<param name='flashVars' value='linkurl="+data.url+"&linktarget="+data.target+"'/><param name='allowScriptAccess' value='always'/>";
				etcObjA="flashVars='linkurl="+data.url+"&linktarget="+data.target+"' allowScriptAccess='always'";
			}else{
				objAt="type='+data.imageContentType+'";
				embAt="type='+data.imageContentType+'";
			}
			if (data.imageWidth) {
				w = "width='"+data.imageWidth+"'";
			}
			if (data.imageHeight) {
				h = "height='"+data.imageHeight+"'";
			}
			var objText = "<object "+objAt+" "+h+" "+w+"><param name='src' value='"+cAd.keys.service_url+data.imageUrl+"'/>"+etcObjP+"<embed src='"+cAd.keys.service_url+data.imageUrl+"' "+embAt+" "+h+" "+w+" "+etcObjA+"/></object>";
			element.innerHTML =objText;
		},
		getCookie:function(key){
			var cData = cAd.getRawCookie(cAd.keys.cookie);
			var areaCount = 0;
			var cSet = "";
			if(typeof(cData)=="string"){
				var cList = cData.split("|");
				for (var i = 0; i < cList.length; i++) {
					if(typeof(cList[i])=="string"){
						var cOne = cList[i].split(":");
						if(cOne.length==2){
							if(cOne[0]==key){
								areaCount=Number(cOne[1]);
							}else{
								cSet+=cOne[0]+":"+cOne[1]+"|";
							}
						}
					}
				}
			}
			return areaCount+1;
		},
		updateCookie:function(key,aFlag){
			var cData = cAd.getRawCookie(cAd.keys.cookie);
			var areaCount = 0;
			var cSet = "";
			if(typeof(cData)=="string"){
				var cList = cData.split("|");
				for (var i = 0; i < cList.length; i++) {
					if(typeof(cList[i])=="string"){
						var cOne = cList[i].split(":");
						if(cOne.length==2){
							if(cOne[0]==key){
								areaCount=Number(cOne[1]);
							}else{
								cSet+=cOne[0]+":"+cOne[1]+"|";
							}
						}
					}
				}
			}
			if(aFlag==true){ cSet+=key+":"+(areaCount+1); }
			cAd.setCookie(cAd.keys.cookie, cSet, "", "/", 30);
		},
		getRawCookie:function(name) {
			if (!name || !document.cookie) return;

			var cookies = document.cookie.split("; ");
			for (var i = 0; i < cookies.length; i++) {
				var str = cookies[i].split("=");
				if (str[0] != name) continue;
				return unescape(str[1]);
			}
			return;
		},
		setCookie:function(name, value, domain, path, expires, secure) {
			if (!name) return;

			var str = name + "=" + escape(value);
			if (domain) {
				if (domain == 1) domain = location.hostname.replace(/^[^\.]*/, "");
				str += "; domain=" + domain;
			}
			if (path) {
				if (path == 1) path = location.pathname;
				str += "; path=" + path;
			}
			if (expires) {
				var nowtime = new Date().getTime();
				expires = new Date(nowtime + (60 * 60 * 24 * 1000 * expires));
				expires = expires.toGMTString();
				str += "; expires=" + expires;
			}
			if (secure && location.protocol == "https:") {
				str += "; secure";
			}

			document.cookie = str;
		}
	}
}
