if(!('AntennaSyncShare' in window)) { window.AntennaSyncShare = { loader:['listJson_livedoor'], pauseChangeDiv: false, extractQueue: [], log:[], }; } else { window.AntennaSyncShare.loader.push('listJson_livedoor'); window.AntennaSyncShare.log.push('append listJson_livedoor'); } var _listJson_livedoor = function(){ var ME = this; var isIE = /*@cc_on!@*/false; var isIE6 = (isIE && !window.XMLHttpRequest); var isIE7 = (isIE && window.XMLHttpRequest && !(document.documentMode >=8)); var isIE8 = (isIE && window.XMLHttpRequest && document.documentMode == 8); var addEvent = function (Element,Event,Fnc){ if (Event.slice(0,1) == "on"){ Event = Event.slice(2); } if (Event == "load"){ if (typeof window.addEventListener != "undefined"){ window.addEventListener("load",Fnc,false); } else if (typeof window.attachEvent != "undefined" && !(isIE)){ window.attachEvent("onload",Fnc); } else { if (window.onload != null) { var oldOnload = window.onload; window.onload = function (e) { oldOnload(e); Fnc(); }; } else { window.onload = Fnc; } } } else { try{ Element.addEventListener(Event,Fnc,false); } catch(e) { Element.attachEvent("on" + Event,Fnc); } } }; var mousedown_addEvent = function(Elements){ var href_domain; var i; for (i = 0; i < Elements.length; i++){ if (Elements[i].tagName == 'A'){ href_domain = Elements[i].href.match(/^https?:\/\/[^\/]+\//); addEvent(Elements[i],"mousedown",function(){click_event_addDomain(href_domain[0]);}); } else if (Elements[i].childNodes.length != 0){ mousedown_addEvent(Elements[i].childNodes); } } } var click_event_addDomain = function(domain){ if (domain !== null){ setDomainCookie(domain); } } var getCookie = function(Name){ var Value = undefined; var Key; var Cookies; var strs = document.cookie.split(";"); for(i = 0 ; i < strs.length ; i++) { key = strs[i].substring(0,strs[i].indexOf('=')).replace(/(^\s+)|(\s+$)/g,""); value = strs[i].substring(strs[i].indexOf('=') + 1); if(key == Name) return value; } return ""; } var arrayInCheack = function(Str,ArrayClass){ var i; var Value = -1; for(i = 0; i < ArrayClass.length; i++){ if(ArrayClass[i] == Str){ Value = i; } } return Value; } var temporaryReferrer = getCookie('clickReferrer'); var urlReferrer = document.referrer; var domainReferrer = urlReferrer.match(/^https?:\/\/[^\/]+\//); if (domainReferrer !== null){ if (temporaryReferrer == undefined || temporaryReferrer == ""){ temporaryReferrer = domainReferrer[0]; } else { temporaryReferrer = temporaryReferrer + ',' + domainReferrer[0]; } } var checkDomain = new Array(); var setDomainCheck = function(addDomain){ if (arrayInCheack(addDomain,checkDomain) == -1){ checkDomain.push(addDomain); } } var setDomainCookie = function(addStr){ if (arrayInCheack(addStr,checkDomain) >= 0){ var str = getCookie('clickReferrer'); var Items = new Array(); if (str != ""){ var Items = str.split(","); } if (arrayInCheack(addStr,Items) == -1){ Items.push(addStr); var clickReferrer = Items.join(); var dTime = new Date(); var Today = new Date(); dTime.setYear(dTime.getYear() - 1); document.cookie = 'clickReferrer=' + '; path=/; expires=' + dTime.toGMTString(); dTime.setFullYear(Today.getFullYear()); dTime.setMonth(Today.getMonth()); dTime.setDate(Today.getDate()); dTime.setHours(23); dTime.setMinutes(59); dTime.setSeconds(59); document.cookie = 'clickReferrer=' + clickReferrer + '; path=/; expires=' + dTime.toGMTString(); } } } /***** 子クラス *****/ var _xmlHttp = function(path,point,num){ var me = this; var Path = path; var Point = point; var Num = num; var script = document.createElement('script'); script.src = path + "&n=" + Num; document.body.appendChild(script); this.main = function(json){ var _links = function(Link,DomainNumber,Domain,Rate){ this.link = Link; this.DN = DomainNumber; this.domain = Domain; this.rate = Rate; } var Block; var OuterBlock = ""; var index = 0; var Items = new Array(); var i, j, k; var str, reg, SiteRate; var ColCount = 0; var DomainNumber; var Links = new Array(); var CopyLinks = new Array(); var DomainNumbers = new Array(); // クリック済みドメイン番号リスト var Domains = new Array(); var ClickDomains = new Array(); // クリック済みドメインリスト var NoneDomains = new Array(); // 自サイト設定列リスト var clickReferrer = temporaryReferrer; str = clickReferrer; if (str == undefined){ str = ""; } j = 0; do{ if(str.indexOf(',') != -1){ if (str.slice(0, str.indexOf(',')) != ""){ ClickDomains[j] = str.slice(0, str.indexOf(',')); j++; } str = str.slice(str.indexOf(',') + 1); } else { if (str != ""){ ClickDomains[j] = str; } break; } }while(true) //json解析ループ for(i = 0; i < json.length; i++){ var listItem = json[i]; Items = new Array; if (i == 0){ //設定行 for(var j in listItem){ Domains.push(listItem[j]); if (listItem[j] != "none"){ setDomainCheck(listItem[j]); } } for (j = 0; j < Domains.length; j++){ if (Domains[j] == "none"){ // none列、自サイト NoneDomains.push(j); } else { // クリック済みチェック for(k = 0; k < ClickDomains.length; k++){ if(ClickDomains[k] == Domains[j]){ DomainNumbers.push(j); } } } } } else { // データ行 for(var j in listItem){ Items.push(listItem[j]); } if (Items[1] == "" && CoverImage != ""){ Items[1] = this.coverImage; } // 3番目以降のリンク先データを入れる Links = new Array(); for (j = 2; j < Items.length; j++){ SiteRate = parseInt(this.rates[j-2]); if (isNaN(SiteRate)){ SiteRate = 0; } Links[Links.length] = new _links(Items[j], j - 2,Domains[j - 2],SiteRate); } if(Links.length == 0){ LinkAddress = ""; } else { j = 0; do{ if (Links[j].link == ""){ Links.splice(j, 1); } else { j++; } }while(j < Links.length) CopyLinks = Links.concat(); j = 0; // 自ドメインリンク削り while(j < Links.length){ if(arrayInCheack(Links[j].DN,NoneDomains) >= 0){ Links.splice(j, 1); } else { j++; } } if (this.replay == false){ j = 0; // クリック済みリンク削り while(j < Links.length){ if(arrayInCheack(Links[j].DN,DomainNumbers) >= 0){ Links.splice(j, 1); } else { j++; } } } // 何も無くなったら、自サイトのナンバーのリンクを戻す if(Links.length == 0) { for(l = 0 ; l < NoneDomains.length ; l++) { for( lp = 0 ; lp < CopyLinks.length ; lp++ ){ if(CopyLinks[lp].DN == NoneDomains[l]){ Links.push(CopyLinks[lp]); } } } } if(Links.length == 0) { for(l = 0 ; l < DomainNumbers.length ; l++) { for( lp = 0 ; lp < CopyLinks.length ; lp++ ){ if(CopyLinks[lp].DN == DomainNumbers[l]){ Links.push(CopyLinks[lp]); } } } } if(Links.length == 0){ LinkAddress = ""; DomainAddress = ""; } else if (Links.length == 1){ LinkAddress = Links[0].link; DomainAddress = Links[0].domain; } else { var RateSum = 0; for (j = 0; j < Links.length; j++){ RateSum += parseInt(Links[j].rate); } if (RateSum == 0){ var rnd = Math.floor(Math.random() * Links.length); LinkAddress = Links[rnd].link; DomainAddress = Links[rnd].domain; } else { var rnd = Math.floor(Math.random() * RateSum); var SumCount = 0; for (j = 0; j < Links.length; j++){ if ((SumCount <= rnd) && (rnd < SumCount + parseInt(Links[j].rate))){ LinkAddress = Links[j].link; DomainAddress = Links[j].domain; break; } SumCount += parseInt(Links[j].rate); } } } } Block = this.blocks; while(Block.indexOf("<$link>") != -1){ Block = Block.replace("<$link>", LinkAddress); } while(Block.indexOf("<$title>") != -1){ Block = Block.replace("<$title>", Items[0]); } while(Block.indexOf("<$image>") != -1){ Block = Block.replace("<$image>", Items[1]); } OuterBlock = OuterBlock + Block; } } Outer = this.outers; while(Outer.indexOf("<$Blocks>") != -1){ Outer = Outer.replace("<$Blocks>", OuterBlock); } var task = function(){ window.AntennaSyncShare.log.push('run task livedoor'); if (Point == false){ me.div.innerHTML = me.div.innerHTML + Outer; } else { me.div.innerHTML = me.div.innerHTML.replace('
', Outer); } mousedown_addEvent(me.div.childNodes); } if(window.AntennaSyncShare.pauseChangeDiv) { window.AntennaSyncShare.log.push('queue livedoor'); window.listJson_livedoor.queue.push(task); } else { task(); } } } /*---- 子クラス ----*/ this.xmlHttp = new Array(); var clickDomain = new Array(); var Blocks = ""; var Outers = "<$Blocks>"; var CoverImage = ""; var IDList = new Array(); var Rates = new Array(); var Replay = false; this.queue = []; this.addBlocks = function(str){ Blocks = str; } this.addOuters = function(str){ Outers = str; } this.addCoverImage = function(str){ CoverImage = str; } this.addRates = function(str){ if (str === undefined){ Rates = new Array(); } else { Rates = str.split(","); } } this.replay = function(str){ if (str == true){ Replay = true } else { Replay = false; } } this.add = function(path,ID,Class,point){ if (point == true){ var length = 8; var password; do{ password = Math.random().toString(36).slice(-length); testID = document.getElementById(password); }while(arrayInCheack(password, IDList) >= 0 && testID != null) IDList[IDList.length] = password; this.xmlHttp[this.xmlHttp.length] = new _xmlHttp(path,point,this.xmlHttp.length); document.write(''); this.xmlHttp[this.xmlHttp.length - 1].div = document.getElementById(IDList[IDList.length -1]).parentNode; this.xmlHttp[this.xmlHttp.length - 1].blocks = Blocks; this.xmlHttp[this.xmlHttp.length - 1].outers = Outers; this.xmlHttp[this.xmlHttp.length - 1].coverImage = CoverImage; this.xmlHttp[this.xmlHttp.length - 1].rates = Rates; this.xmlHttp[this.xmlHttp.length - 1].replay = Replay; } else { point = false; this.xmlHttp[xmlHttp.length] = new _xmlHttp(path,point,0); document.write(''); this.xmlHttp[this.xmlHttp.length - 1].div = document.getElementById(ID); this.xmlHttp[this.xmlHttp.length - 1].blocks = Blocks; this.xmlHttp[this.xmlHttp.length - 1].outers = Outers; this.xmlHttp[this.xmlHttp.length - 1].coverImage = CoverImage; this.xmlHttp[this.xmlHttp.length - 1].rates = Rates; this.xmlHttp[this.xmlHttp.length - 1].replay = Replay; } } this.accessLoop = function(){ window.AntennaSyncShare.log.push('processing accessLoop livedoor'); if(window.AntennaSyncShare.pauseChangeDiv) return; while(this.queue.length > 0) { this.queue.shift()(); } }; /*---- プロパティ&子クラス ----*/ } if (typeof( listJson_livedoor ) == 'undefined'){ listJson_livedoor = new _listJson_livedoor(); }