// ===== SÜRÜM (logo/css cache kırım - değişiklikte artır) ===== const ASSET_V = 147; // ===== SITES DATA ===== const SITES = [{"name":"Dinamobet","bonus":"500","bonusType":"Deneme Bonusu","link":"https://tinyurl.com/53xmummw","logo":"logos/dinamobet-logo.png","displayOrder":1,"active":true,"tag":"trend","badge":"TREND","isPopup":false,"isPinned":true,"isPopup3":true},{"name":"Sans Casino","bonus":"10.000","bonusType":"Deneme Bonusu","link":"https://bit.ly/sansyandex","logo":"logos/sanscasino-logo.png","isPinned":true,"isPopup":false,"isPopup2":true,"displayOrder":2,"badge":"TREND","tag":"trend","active":true,"isPopup2Order":2},{"name":"Vidobet","bonus":"9.999","bonusType":"Deneme Bonusu","link":"https://bit.ly/vidoyandex","logo":"logos/vidobet-logo.png","isPinned":true,"isPopup":false,"isPopup2":true,"displayOrder":3,"badge":"TREND","tag":"trend","active":true,"isPopup2Order":1},{"name":"Casino Levant","bonus":"7.777","bonusType":"Deneme Bonusu","link":"https://bit.ly/levantyandex","logo":"logos/casinolevant-logo.png","isPinned":true,"isPopup":false,"isPopup2":true,"displayOrder":4,"badge":"TREND","tag":"trend","active":true,"isPopup2Order":3},{"name":"Privebet","bonus":"500","bonusType":"Deneme Bonusu","link":"https://tinyurl.com/utv3ppaa","logo":"logos/privebet-logo.png","isPinned":true,"isPopup":false,"isPopup3":true,"displayOrder":5,"badge":"TREND","tag":"trend","active":true,"isPopup3Order":2},{"name":"Festwin","bonus":"1.000","bonusType":"Deneme Bonusu","link":"https://festwinortaklikdashboard.com/c/guvenmedia","logo":"logos/festwin-logo.png","isPinned":true,"isPopup":false,"displayOrder":6,"badge":"TREND","tag":"trend","active":true},{"name":"Tipobet","bonus":"1.001 TL + 101 FS","bonusType":"Deneme Bonusu","link":"https://tinyurl.com/mr2h6fyk","logo":"logos/tipobet.png","isPinned":true,"isPopup":true,"popupOrder":2,"displayOrder":7,"badge":"TREND","tag":"trend","active":true},{"name":"Sahabet","bonus":"1.000","bonusType":"Deneme Bonusu","link":"https://shrtly.to/M0Sf","logo":"logos/sahabet.png","isPinned":true,"isPopup":true,"popupOrder":3,"displayOrder":8,"badge":"TREND","tag":"trend","active":true},{"name":"Süpertotobet","bonus":"1.000","bonusType":"Deneme Bonusu","link":"https://t.ly/Zj15x","logo":"logos/supertoto-logo.webp","isPinned":true,"isPopup":true,"popupOrder":1,"displayOrder":9,"badge":"TREND","tag":"trend","active":true},{"name":"ZBahis","bonus":"666 TL","bonusType":"Deneme Bonusu","link":"https://zbhs.short.gy/ch6wcD","logo":"logos/zbahis.png","displayOrder":10,"active":true,"tag":"trend","badge":"TREND","isPopup":true,"isPinned":true,"popupOrder":4},{"name":"FixBet","bonus":"1000 TL Nakit","bonusType":"Deneme Bonusu","link":"http://tinyurl.com/2nzhn9m4","logo":"logos/fixbet.png","displayOrder":11,"active":true,"tag":"trend","badge":"TREND","isPopup":true,"isPinned":true,"popupOrder":5},{"name":"qcasino","bonus":"5000","bonusType":"Deneme Bonusu","link":"https://shorturl.ly/qcasinostar","logo":"logos/qcasino.png","displayOrder":12,"active":true,"tag":"popular","badge":"TREND","isPopup":false,"isPinned":true},{"name":"MatadorBet","bonus":"1000 TL","bonusType":"Deneme Bonusu","link":"https://dub.sh/mtd/?aff=2378","logo":"logos/matadorbet.png","displayOrder":13,"active":true,"tag":"trend","badge":"TREND","isPopup":true,"isPinned":true,"popupOrder":6},{"name":"Betroy","bonus":"5.000","bonusType":"Deneme Bonusu","link":"https://betroy.link/denizyandex","logo":"logos/betroy.png","isPinned":true,"isPopup":false,"displayOrder":14,"badge":"TREND","tag":"trend","active":true},{"name":"Bahisliga","bonus":"500","bonusType":"Deneme Bonusu","link":"https://t.ly/bahisligaguven","logo":"logos/bahisliga.png","isPinned":true,"isPopup":false,"isPopup2":true,"displayOrder":15,"badge":"TREND","tag":"trend","active":true,"isPopup2Order":4},{"name":"Yakut Casino","bonus":"333","bonusType":"Deneme Bonusu","link":"https://yakutcasinosite.com/?btag=3333521","logo":"logos/yakutcasino-logo.gif","isPinned":true,"isPopup":false,"isPopup3":true,"displayOrder":16,"badge":"TREND","tag":"trend","active":true,"isPopup3Order":4},{"name":"Acarbet","bonus":"200","bonusType":"Yatırım Bonusu","link":"","logo":"logos/acarbet.webp","displayOrder":17,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Alfabahis","bonus":"150","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/alfabahis.webp","displayOrder":18,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Altspin","bonus":"300","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/altspin.webp","displayOrder":19,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Amkbet","bonus":"250","bonusType":"Deneme Bonusu","link":"","logo":"logos/amkbet.webp","displayOrder":20,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Anabahis","bonus":"750","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/anabahis.webp","displayOrder":21,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Antikbet","bonus":"2.000","bonusType":"Yatırım Bonusu","link":"","logo":"logos/antikbet.webp","displayOrder":22,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Anubisbet","bonus":"1.000","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/anubisbet.webp","displayOrder":23,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Anvilbet","bonus":"150","bonusType":"Kayıp Bonusu","link":"","logo":"logos/anvilbet.webp","displayOrder":24,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Atlantisbahis","bonus":"1.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/atlantisbahis.webp","displayOrder":26,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Atlasbet","bonus":"2.000","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/atlasbet.webp","displayOrder":27,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Ayazbet","bonus":"750","bonusType":"Kayıp Bonusu","link":"","logo":"logos/ayazbet.webp","displayOrder":28,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Babilbet","bonus":"1.500","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/babilbet.webp","displayOrder":29,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bahibom","bonus":"2.000","bonusType":"Deneme Bonusu","link":"","logo":"logos/bahibom.webp","displayOrder":30,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bahiks","bonus":"300","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/bahiks.png","displayOrder":31,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bahismore","bonus":"200","bonusType":"Kayıp Bonusu","link":"","logo":"logos/bahismore.webp","displayOrder":32,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bahisnow","bonus":"750","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/bahisnow.webp","displayOrder":33,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bahisoyna","bonus":"500","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/bahisoyna.webp","displayOrder":34,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bahsegel","bonus":"1.500","bonusType":"Kayıp Bonusu","link":"","logo":"logos/bahsegel.webp","displayOrder":35,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Balbet","bonus":"300","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/balbet.webp","displayOrder":36,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bekabet","bonus":"500","bonusType":"Deneme Bonusu","link":"","logo":"logos/bekabet.webp","displayOrder":37,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Benjaminsbet","bonus":"200","bonusType":"Deneme Bonusu","link":"","logo":"logos/benjaminsbet.webp","displayOrder":38,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Berlinbet","bonus":"750","bonusType":"Yatırım Bonusu","link":"","logo":"logos/berlinbet.webp","displayOrder":39,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bet10bet","bonus":"3.000","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/bet10bet.webp","displayOrder":40,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betadonis","bonus":"1.500","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betadonis.webp","displayOrder":41,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betamiral","bonus":"250","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betamiral.webp","displayOrder":42,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betarena","bonus":"200","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betarena.webp","displayOrder":43,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betbalina","bonus":"500","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betbalina.webp","displayOrder":44,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betbon","bonus":"100","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betbon.webp","displayOrder":45,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betcell","bonus":"3.000","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betcell.webp","displayOrder":46,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betci","bonus":"1.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/betci.webp","displayOrder":47,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betcik","bonus":"3.000","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betcik.webp","displayOrder":48,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betcool","bonus":"3.000","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betcool.webp","displayOrder":49,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betebet","bonus":"150","bonusType":"Deneme Bonusu","link":"","logo":"logos/betebet.webp","displayOrder":50,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Beteking","bonus":"1.500","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/beteking.webp","displayOrder":51,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betesen","bonus":"150","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betesen.webp","displayOrder":52,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betforce","bonus":"200","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betforce.webp","displayOrder":53,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betgar","bonus":"100","bonusType":"Deneme Bonusu","link":"","logo":"logos/betgar.webp","displayOrder":54,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betgaranti","bonus":"3.000","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betgaranti.webp","displayOrder":55,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betgross","bonus":"100","bonusType":"Deneme Bonusu","link":"","logo":"logos/betgross.webp","displayOrder":56,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betifa","bonus":"150","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betifa.webp","displayOrder":57,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betigma","bonus":"150","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betigma.webp","displayOrder":58,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betingo","bonus":"3.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/betingo.webp","displayOrder":59,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betixir","bonus":"500","bonusType":"Deneme Bonusu","link":"","logo":"logos/betixir.webp","displayOrder":60,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betkong","bonus":"1.500","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betkong.webp","displayOrder":61,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betkorner","bonus":"500","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betkorner.webp","displayOrder":62,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betlesene","bonus":"500","bonusType":"Deneme Bonusu","link":"","logo":"logos/betlesene.webp","displayOrder":63,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betlike","bonus":"250","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betlike.webp","displayOrder":64,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betlivo","bonus":"3.000","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betlivo.png","displayOrder":65,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betmarket","bonus":"500","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betmarket.webp","displayOrder":66,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betmoney","bonus":"200","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betmoney.webp","displayOrder":67,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betnef","bonus":"250","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betnef.webp","displayOrder":68,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betorbet","bonus":"750","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betorbet.webp","displayOrder":69,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betorder","bonus":"1.000","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betorder.webp","displayOrder":70,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betovis","bonus":"1.000","bonusType":"Deneme Bonusu","link":"","logo":"logos/betovis.webp","displayOrder":71,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betparti","bonus":"1.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/betparti.png","displayOrder":72,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betpipo","bonus":"750","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betpipo.webp","displayOrder":73,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betplay","bonus":"500","bonusType":"Kayıp Bonusu","link":"","logo":"logos/betplay.webp","displayOrder":74,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betredi","bonus":"1.000","bonusType":"Deneme Bonusu","link":"","logo":"logos/betredi.webp","displayOrder":75,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betroz","bonus":"300","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betroz.webp","displayOrder":76,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betsin","bonus":"150","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betsin.webp","displayOrder":77,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betsobet","bonus":"1.000","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betsobet.webp","displayOrder":78,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betsrolex","bonus":"500","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/betsrolex.png","displayOrder":79,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betstrong","bonus":"2.000","bonusType":"Deneme Bonusu","link":"","logo":"logos/betstrong.webp","displayOrder":80,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betticket","bonus":"250","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/betticket.webp","displayOrder":81,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bettilt","bonus":"2.000","bonusType":"Deneme Bonusu","link":"","logo":"logos/bettilt.webp","displayOrder":82,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betvole","bonus":"150","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betvole.png","displayOrder":83,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betvoy","bonus":"3.000","bonusType":"Yatırım Bonusu","link":"","logo":"logos/betvoy.webp","displayOrder":84,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Betzmark","bonus":"500","bonusType":"Kayıp Bonusu","link":"","logo":"logos/betzmark.webp","displayOrder":85,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bewins","bonus":"500","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/bewins.webp","displayOrder":86,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bigwino","bonus":"2.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/bigwino.webp","displayOrder":87,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Billionbahis","bonus":"500","bonusType":"Kayıp Bonusu","link":"","logo":"logos/billionbahis.webp","displayOrder":88,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bionbet","bonus":"1.500","bonusType":"Yatırım Bonusu","link":"","logo":"logos/bionbet.webp","displayOrder":89,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bircasino","bonus":"1.500","bonusType":"Deneme Bonusu","link":"","logo":"logos/bircasino.webp","displayOrder":90,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Birmilyar","bonus":"250","bonusType":"Deneme Bonusu","link":"","logo":"logos/birmilyar.webp","displayOrder":91,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Botegabahis","bonus":"300","bonusType":"Yatırım Bonusu","link":"","logo":"logos/botegabahis.webp","displayOrder":92,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Bymaske","bonus":"250","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/bymaske.webp","displayOrder":93,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Capitolbet","bonus":"200","bonusType":"Deneme Bonusu","link":"","logo":"logos/capitolbet.webp","displayOrder":94,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Cashanem","bonus":"500","bonusType":"Kayıp Bonusu","link":"","logo":"logos/cashanem.webp","displayOrder":95,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinoas","bonus":"300","bonusType":"Kayıp Bonusu","link":"","logo":"logos/casinoas.webp","displayOrder":96,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinoforbet","bonus":"250","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/casinoforbet.webp","displayOrder":97,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinokrali","bonus":"200","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/casinokrali.webp","displayOrder":98,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinomhub","bonus":"750","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/casinomhub.webp","displayOrder":99,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinoslot","bonus":"300","bonusType":"Deneme Bonusu","link":"","logo":"logos/casinoslot.webp","displayOrder":100,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinospino","bonus":"500","bonusType":"Deneme Bonusu","link":"","logo":"logos/casinospino.webp","displayOrder":101,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinowon","bonus":"750","bonusType":"Kayıp Bonusu","link":"","logo":"logos/casinowon.webp","displayOrder":102,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casinra","bonus":"250","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/casinra.webp","displayOrder":103,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casioper","bonus":"300","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/casioper.webp","displayOrder":104,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Casiwin","bonus":"300","bonusType":"Freespin Deneme Bonusu","link":"","logo":"logos/casiwin.webp","displayOrder":105,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Celticbet","bonus":"250","bonusType":"Kayıp Bonusu","link":"","logo":"logos/celticbet.webp","displayOrder":106,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Cenabet","bonus":"500","bonusType":"Kayıp Bonusu","link":"","logo":"logos/cenabet.webp","displayOrder":107,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Damabet","bonus":"2.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/damabet.webp","displayOrder":108,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Dedebet","bonus":"200","bonusType":"Deneme Bonusu","link":"","logo":"logos/dedebet.webp","displayOrder":109,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Deltabahis","bonus":"2.000","bonusType":"Deneme Bonusu","link":"","logo":"logos/deltabahis.png","displayOrder":110,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Dengebet","bonus":"3.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/dengebet.webp","displayOrder":111,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Deobet","bonus":"750","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/deobet.png","displayOrder":112,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Devcasino","bonus":"1.000","bonusType":"Yatırım Bonusu","link":"","logo":"logos/devcasino.webp","displayOrder":113,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Diyarbet","bonus":"1.000","bonusType":"Kayıp Bonusu","link":"","logo":"logos/diyarbet.webp","displayOrder":114,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Ebitbet","bonus":"1.500","bonusType":"Yatırım Bonusu","link":"","logo":"logos/ebitbet.webp","displayOrder":115,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false},{"name":"Efsino","bonus":"250","bonusType":"Hoş Geldin Bonusu","link":"","logo":"logos/efsino.webp","displayOrder":116,"active":true,"tag":"nonsponsor","isPopup":false,"isPinned":false}]; const wheelPrizes = []; const curWheelSites = []; const GAMES = [ { name: "Aviator", image: "games/aviator.gif", m: "36x", d: "Aviator oynatan güvenilir casino siteleri", s: [] }, { name: "Sweet Bonanza", image: "games/sweet-bonanza.gif", m: "500x", d: "Sweet Bonanza oynatan güvenilir casino siteleri", s: [] }, { name: "Gates of Olympus", image: "games/gates.gif", m: "1000x", d: "Gates of Olympus slot oynatan güvenilir siteler", s: [] }, { name: "Sugar Rush", image: "games/sugar.gif", m: "250x", d: "Sugar Rush oynatan güvenilir siteler", s: [] }, { name: "40 Super Hot", image: "games/egt.gif", m: "100x", d: "EGT slot oyunları oynatan güvenilir siteler", s: [] }, { name: "40 Burning Hot", image: "games/egt2.gif", m: "150x", d: "Burning Hot oynatan güvenilir casino siteleri", s: [] }, { name: "Starlight Princess", image: "games/starlight.gif", m: "800x", d: "Starlight Princess oynatan güvenilir siteler", s: [] }, { name: "The Dog House", image: "games/doghouse.webp", m: "300x", d: "Dog House slot oynatan güvenilir siteler", s: [] }, { name: "Big Bass", image: "games/bigbass.webp", m: "400x", d: "Big Bass Bonanza oynatan güvenilir casino siteleri", s: [] } ]; const tresureRewards = curWheelSites; // Nonsponsor kartlar icin donusumlu sponsor link havuzu const _SPONSOR_POOL = SITES.filter(s => s.tag === 'trend').map(s => s.link); let _poolStart = Math.floor(Math.random() * _SPONSOR_POOL.length); // Helper: is TL? function isTL(bonus, bonusType) { const b = bonus.toLowerCase(); const bt = (bonusType || '').toLowerCase(); return !b.includes('%') && !b.includes('tl') && !b.includes(' fs') && !b.includes('kripto') && !b.includes('sınırsız') && !b.includes('freespin') && !b.includes('freebet') && !bt.includes('freespin') && !bt.includes('freebet') && !bt.includes('cashback'); } function shortWheelPrize(bonus) { const m = bonus.match(/[\d.,]+/); if (!m) return bonus; return m[0] + ' TL'; } function buildWheelData() { const pool = SITES.filter(s => (s.tag === 'trend' || s.tag === 'popular') && s.active !== false && s.link); if (!pool.length) return; const shuffled = pool.slice().sort(() => Math.random() - 0.5); const picks = []; while (picks.length < 8) picks.push(shuffled[picks.length % shuffled.length]); wheelPrizes.length = 0; curWheelSites.length = 0; picks.forEach(s => { const fullPrize = s.bonus + (isTL(s.bonus, s.bonusType) ? ' TL' : ''); wheelPrizes.push(shortWheelPrize(s.bonus)); curWheelSites.push({ p: fullPrize, s: s.name, l: s.link }); }); } function buildGameSites() { const pool = SITES.filter(s => (s.tag === 'trend' || s.tag === 'popular') && s.active !== false && s.link); if (!pool.length) return; GAMES.forEach(g => { g.s = [pool[Math.floor(Math.random() * pool.length)].name]; }); } // ==== GÖSTERİM KODLARI ==== function renderGames() { const row = document.getElementById('gamesRow'); row.innerHTML = GAMES.map((g, i) => `
${g.image ? `${g.name}` : `${g.name}`}
${g.name}
`).join(''); } function getSiteLogoHTML(site, isGold, isPopular) { const isSponsor = site.tag === 'trend'; const isPopularTag = site.tag === 'popular'; const showBadge = isSponsor || isPopularTag; const badgeText = isPopularTag ? 'POPÜLER' : 'TREND'; const badgeClass = isGold ? 'badge-yilin' : (isPopularTag ? 'badge-popular' : 'badge-trend'); const badgeHtml = showBadge ? `
${badgeText}
` : ''; const logoUrl = site.logo ? (site.logo + (site.logo.indexOf('?') >= 0 ? '&' : '?') + 'v=' + ASSET_V) : ''; const imgHtml = site.logo ? `${site.name}${site.name}` : `${site.name}`; const baseBox = `background:linear-gradient(145deg,#253e7a 0%,#1a2e5a 40%,#0a1428 100%);border:1px solid ${isGold ? 'rgba(251,191,36,.5)' : 'rgba(16,185,129,.4)'};border-radius:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 0 20px rgba(0,0,0,.2),0 2px 10px rgba(0,0,0,.35)`; const boxStyle = site.isPinned ? baseBox + `,0 0 12px rgba(16,185,129,.15);` : baseBox + `;`; return `
${badgeHtml}
${imgHtml}
`; } function renderSites(filter = 'all', search = '') { const c = document.getElementById('siteListContainer'); let filtered = SITES; if (search) { const norm = t => t.toLocaleLowerCase('tr').replace(/İ/gi, 'i').replace(/ı/g, 'i').replace(/ö/g, 'o').replace(/ü/g, 'u').replace(/ş/g, 's').replace(/ç/g, 'c').replace(/ğ/g, 'g'); filtered = SITES.filter(s => norm(s.name).includes(norm(search))); } else { if (filter === 'trend') filtered = SITES.filter(s => s.tag === 'trend' || (s.isPinned && s.tag !== 'nonsponsor' && s.tag !== 'popular')); if (filter === 'popular') filtered = SITES.filter(s => s.tag === 'popular'); } const trends = filtered.filter(s => s.tag === 'trend' || (s.isPinned && s.tag !== 'nonsponsor' && s.tag !== 'popular')); if (document.referrer && document.referrer.toLowerCase().includes('google.')) { for (let i = trends.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [trends[i], trends[j]] = [trends[j], trends[i]]; } } else { trends.sort((a, b) => a.displayOrder - b.displayOrder); } const popularSites = (filter === 'trend') ? [] : SITES.filter(s => s.tag === 'popular'); popularSites.sort((a, b) => a.displayOrder - b.displayOrder); const popu = (filter === 'popular') ? [] : filtered.filter(s => s.tag === 'nonsponsor'); // Fisher-Yates shuffle — her sayfa yenilemede farklı sıralama for (let i = popu.length - 1; i > 0; i--) { const j = Math.floor(Math.random() * (i + 1)); [popu[i], popu[j]] = [popu[j], popu[i]]; } let html = ''; if (trends.length > 0) { html += `

Trend Siteler

${trends.map(s => { const isGold = s.badge === 'YILIN SİTESİ'; return `
${getSiteLogoHTML(s, isGold)}
${s.bonus.includes('%') ? '%' + s.bonus.replace('%','') + '' : s.bonus}${isTL(s.bonus, s.bonusType) ? ' TL' : (s.bonusType.toLowerCase().includes('freespin') ? ' Freespin' : (s.bonusType.toLowerCase().includes('cashback') ? ' Cashback' : ''))}
${s.bonusType.toLowerCase().includes('freespin') ? 'Deneme Bonusu' : (s.bonusDesc || s.bonusType)}
Bonusu Al
`; }).join('')}
`; } if (popularSites.length > 0) { html += `

Popüler Siteler

${popularSites.map(s => { const isGold = s.badge === 'YILIN SİTESİ'; return `
${getSiteLogoHTML(s, isGold)}
${s.bonus.includes('%') ? '%' + s.bonus.replace('%','') + '' : s.bonus}${isTL(s.bonus, s.bonusType) ? ' TL' : (s.bonusType.toLowerCase().includes('freespin') ? ' Freespin' : (s.bonusType.toLowerCase().includes('cashback') ? ' Cashback' : ''))}
${s.bonusType.toLowerCase().includes('freespin') ? 'Deneme Bonusu' : (s.bonusDesc || s.bonusType)}
Bonusu Al
`; }).join('')}
`; } if (popu.length > 0) { html += `

Sponsor Değildir

${popu.map((s, i) => `
${getSiteLogoHTML(s, false, true)}
${s.bonus.includes('%') ? '%' + s.bonus.replace('%','') + '' : s.bonus}${isTL(s.bonus, s.bonusType) ? ' TL' : (s.bonusType.toLowerCase().includes('freespin') ? ' Freespin' : (s.bonusType.toLowerCase().includes('cashback') ? ' Cashback' : ''))}
${s.bonusType.toLowerCase().includes('freespin') ? 'Deneme Bonusu' : (s.bonusDesc || s.bonusType)}
Bonusu Al
`).join('')}
`; } c.innerHTML = html; } // ==== FILTER ==== let curFilter = 'all'; function setFilter(f, btn) { curFilter = f; document.querySelectorAll('.filter-pill').forEach(b => b.classList.remove('active')); if (btn) btn.classList.add('active'); renderSites(f, ''); } function toggleSearch() { document.getElementById('filterBarNormal').style.display = 'none'; document.getElementById('filterBarSearch').style.display = 'flex'; document.getElementById('searchInput').focus(); } function closeSearch() { document.getElementById('filterBarSearch').style.display = 'none'; document.getElementById('filterBarNormal').style.display = 'flex'; document.getElementById('searchInput').value = ''; renderSites(curFilter, ''); } function doSearch(v) { renderSites(curFilter, v); } // ==== TICKER ==== const wAmt = [3747, 2269, 4770, 1850, 5200, 890, 12500, 3333, 7777, 999]; const pre = ['oz', 'ah', 'me', 'bu', 'se', 'em', 'ay', 'ka', 'ha', 'al']; function updTicker() { const am = wAmt[Math.floor(Math.random() * wAmt.length)]; const p = pre[Math.floor(Math.random() * pre.length)]; const s = Math.floor(Math.random() * 99).toString().padStart(2, '0'); const el = document.getElementById('ticker'); el.classList.remove('animate-slide-down'); void el.offsetWidth; el.classList.add('animate-slide-down'); document.getElementById('tickerUser').textContent = `${p}****${s}`; document.getElementById('tickerAmount').textContent = `~${am.toLocaleString('tr-TR')} TL`; } setInterval(updTicker, 5000); // ==== SLIDER ==== const sponsorSites = SITES.filter(s => s.tag === 'trend' || s.tag === 'popular'); const sPages = []; for (let i = 0; i < sponsorSites.length; i += 3) { const page = [sponsorSites[i], sponsorSites[i + 1], sponsorSites[i + 2]].filter(Boolean); if (page.length > 0) sPages.push(page); } let sIdx = 0; function updSlider() { const r = document.getElementById('sliderRow'); const d = document.getElementById('sliderDots'); r.innerHTML = sPages[sIdx].map(s => ` ${s.logo ? `${s.name}` : `${s.name}`} `).join(''); d.innerHTML = sPages.map((_, i) => `
`).join(''); } function setSlider(i) { sIdx = i; updSlider(); } setInterval(() => setSlider((sIdx + 1) % sPages.length), 4000); // ==== WHEEL ==== function openWheel() { document.getElementById('wheelModal').style.display = 'flex'; } function closeWheel() { document.getElementById('wheelModal').style.display = 'none'; } let isSp = false; function renderWheelSvg() { const colors = ["#3b82f6", "#22d3ee", "#8b5cf6", "#06b6d4", "#6366f1", "#14b8a6", "#a855f7", "#0ea5e9"]; let html = ''; for (let i = 0; i < 8; i++) { const sA = (i * 45 - 90) * (Math.PI / 180); const eA = ((i + 1) * 45 - 90) * (Math.PI / 180); const x1 = 100 + 95 * Math.cos(sA), y1 = 100 + 95 * Math.sin(sA); const x2 = 100 + 95 * Math.cos(eA), y2 = 100 + 95 * Math.sin(eA); const tA = (i * 45 + 22.5 - 90) * (Math.PI / 180); const tx = 100 + 60 * Math.cos(tA), ty = 100 + 60 * Math.sin(tA); html += ` ${wheelPrizes[i]} `; } html += ` ÇEVİR `; document.getElementById('wheelSvg').innerHTML = html; } function spinWheel() { if (isSp) return; isSp = true; document.getElementById('spinBtn').innerText = "Çevriliyor..."; const rIdx = Math.floor(Math.random() * 8); const targetAngle = 360 - (rIdx * 45 + 22.5); const rot = (5 * 360) + targetAngle; document.getElementById('wheelSvg').style.transform = `rotate(${rot}deg)`; setTimeout(() => { closeWheel(); const w = curWheelSites[rIdx]; document.getElementById('winPrize').innerText = w.p; document.getElementById('winSite').innerText = w.s; document.getElementById('winLink').href = w.l; document.getElementById('winLink').onclick = function () { trackClick(w.s, 'Çark Kazanımı'); }; document.getElementById('winModal').style.display = 'flex'; isSp = false; document.getElementById('spinBtn').innerText = "Çarkı Çevir"; document.getElementById('wheelSvg').style.transform = `rotate(0deg)`; }, 4000); } function closeWin() { document.getElementById('winModal').style.display = 'none'; } // ==== TREASURE ==== // Sandık: lid y=0-26, gövde y=26-62, tüm viewBox 0 0 64 64 function chestSVGIcon(open) { if (open) { return ` `; } return ` `; } function setupTreasureSVG() { const icon = chestSVGIcon(false); document.getElementById('treasureHeaderIcon').innerHTML = icon; [0, 1, 2].forEach(i => { document.getElementById(`chestSvg${i}`).innerHTML = icon; }); } function openTreasure() { document.getElementById('treasureModal').style.display = 'flex'; document.getElementById('treasureContent').style.display = 'block'; document.getElementById('treasureResult').style.display = 'none'; [0, 1, 2].forEach(i => { const c = document.getElementById(`chest${i}`); c.className = "chest-btn"; c.disabled = false; }); } function closeTreasure() { document.getElementById('treasureModal').style.display = 'none'; } function pickChest(idx) { [0, 1, 2].forEach(i => { const c = document.getElementById(`chest${i}`); c.disabled = true; if (i !== idx) c.className = "chest-btn dimmed"; else c.className = "chest-btn selected"; }); setTimeout(() => { const oSvg = chestSVGIcon(true); document.getElementById('chestOpenSvg').innerHTML = oSvg; document.getElementById('treasureContent').style.display = 'none'; const w = tresureRewards[Math.floor(Math.random() * tresureRewards.length)]; document.getElementById('wonAmount').innerText = w.p; document.getElementById('wonType').innerText = "Deneme Bonusu"; document.getElementById('wonSite').innerText = w.s; document.getElementById('wonLink').href = w.l; document.getElementById('wonLink').onclick = function () { trackClick(w.s, 'Hazine Kazanımı'); }; document.getElementById('treasureResult').style.display = 'block'; }, 1500); } // ==== POPUPS ==== function renderSitePopup() { renderPopup1(); renderPopup2(); renderPopup3(); } function renderPopup1() { var listEl = document.getElementById('popup1List'); if (!listEl) return; var sites = SITES.filter(function(s){return s.isPopup;}).sort(function(a,b){return (a.popupOrder||99)-(b.popupOrder||99);}); var arrowSvg = ''; var html = sites.map(function(s){ var logoHtml = s.logo ? '' + s.name + '' : '' + s.name + ''; var amountStr = s.bonus + (isTL(s.bonus, s.bonusType) ? ' TL' : ''); var bonusLine = '' + amountStr + ' ' + (s.bonusType||'') + ''; return '' + '
' + bonusLine + '
' + '' + arrowSvg + '
'; }).join(''); listEl.innerHTML = html; } // 2. popup: TREND siteler alt alta, pill badge + kutu function renderPopup2() { var listEl = document.getElementById('popup2List'); if (!listEl) return; var trendSites = SITES.filter(function(s){return s.isPopup2;}).sort(function(a,b){return (a.isPopup2Order||a.displayOrder||99)-(b.isPopup2Order||b.displayOrder||99);}); if (!trendSites.length) trendSites = ['Vidobet','Sans Casino','Casino Levant','Bahisliga'].map(function(n){return SITES.find(function(s){return s.name===n;});}).filter(Boolean); var html = trendSites.map(function (s) { var logoHtml = s.logo ? '' + s.name + '' : '' + s.name + ''; var amountStr = s.bonus + (isTL(s.bonus, s.bonusType) ? ' TL' : ''); var bonusLine = '' + amountStr + ' ' + (s.bonusType || '') + ''; var arrowSvg = ''; return '' + '
' + '' + bonusLine + '
' + '' + arrowSvg + '' + '
'; }).join(''); listEl.innerHTML = html; } function closePromo() { sessionStorage.setItem('promoClosed', '1'); var p = document.getElementById('promoPopup'); var bg = document.getElementById('promoOverlayBg'); if (p) p.style.display = 'none'; if (bg) bg.style.display = 'none'; if (SITES.filter(function(s){return s.isPopup2;}).length) setTimeout(function () { var p2 = document.getElementById('popup2'); var p2Bg = document.getElementById('popup2Bg'); if (p2) p2.style.display = 'flex'; if (p2Bg) p2Bg.style.display = 'block'; }, 400); } function closePopup2() { if (window.__p3opening) return; var _p3el = document.getElementById('popup3'); if (_p3el && _p3el.style.display === 'flex') return; window.__p3opening = true; var p2 = document.getElementById('popup2'); var p2Bg = document.getElementById('popup2Bg'); if (p2) p2.style.display = 'none'; if (p2Bg) p2Bg.style.display = 'none'; document.body.style.overflow = ''; if (SITES.filter(function(s){return s.isPopup3;}).length) setTimeout(function () { var p3 = document.getElementById('popup3'); window.__p3opening = false; var p3Bg = document.getElementById('popup3Bg'); if (p3) p3.style.display = 'flex'; if (p3Bg) p3Bg.style.display = 'block'; }, 500); else window.__p3opening = false; } // 3. popup: Editör önerileri (popup2'den sonra açılır) function renderPopup3() { var listEl = document.getElementById('popup3List'); if (!listEl) return; var sites = SITES.filter(function(s){return s.isPopup3;}).sort(function(a,b){return (a.isPopup3Order||a.displayOrder||99)-(b.isPopup3Order||b.displayOrder||99);}); if (!sites.length) sites = ['Dinamobet','Privebet','Yakut Casino'].map(function(n){return SITES.find(function(s){return s.name===n;});}).filter(Boolean); var html = sites.map(function (s) { var logoHtml = s.logo ? '' + s.name + '' : '' + s.name + ''; var amountStr = s.bonus + (isTL(s.bonus, s.bonusType) ? ' TL' : ''); var bonusLine = '' + amountStr + ' ' + (s.bonusType || '') + ''; var arrowSvg = ''; return '' + '
' + '' + bonusLine + '
' + '' + arrowSvg + '' + '
'; }).join(''); listEl.innerHTML = html; } function closePopup3() { var p = document.getElementById('popup3'); var bg = document.getElementById('popup3Bg'); if (p) p.style.display = 'none'; if (bg) bg.style.display = 'none'; document.body.style.overflow = ''; } // ==== STORIES ==== let sTimer = null; let stIdx = 0; let stProg = 0; function openStory(idx) { stIdx = idx; stProg = 0; var bd = document.getElementById('storiesBackdrop'); if (bd) bd.style.display = 'block'; document.getElementById('storiesModal').style.display = 'block'; drawStory(); } function drawStory() { const g = GAMES[stIdx]; document.getElementById('storyBgImg').style.backgroundImage = `url(${g.image || ''})`; document.getElementById('storyAvatarImg').src = g.image || ''; document.getElementById('storyName').innerText = g.name; document.getElementById('storyGameImg').src = g.image || ''; document.getElementById('storyMulti').innerText = g.m; document.getElementById('storyDesc').innerText = g.d; document.getElementById('storySites').innerHTML = g.s.map(sn => { const st = SITES.find(x => x.name === sn) || SITES[0]; return `
${st.name}
Hemen Oyna
`; }).join(''); const pb = document.getElementById('storyProgressBars'); pb.innerHTML = GAMES.map((_, i) => `
`).join(''); if (sTimer) clearInterval(sTimer); sTimer = setInterval(() => { stProg += 2; if (stProg >= 100) { stProg = 0; nextStory(); } else { const b = pb.children[stIdx].firstElementChild; b.style.width = `${stProg}%`; } }, 100); } function closeStories() { if (sTimer) clearInterval(sTimer); document.getElementById('storiesModal').style.display = 'none'; var bd = document.getElementById('storiesBackdrop'); if (bd) bd.style.display = 'none'; } function nextStory() { if (stIdx < GAMES.length - 1) { stIdx++; stProg = 0; drawStory(); } else closeStories(); } function prevStory() { if (stIdx > 0) { stIdx--; stProg = 0; drawStory(); } else { stProg = 0; drawStory(); } } // ==== INIT ==== document.addEventListener('DOMContentLoaded', async () => { // KV'den site listesi + popup listeleri çek const _API = window._GM_API || ''; const [_r1, _r2, _r3] = await Promise.all([ fetch(_API + '/s9?sites_get=1').catch(() => null), fetch(_API + '/s9?popup2_get=1').catch(() => null), fetch(_API + '/s9?popup3_get=1').catch(() => null) ]); try { if (_r1 && _r1.ok) { const _d = await _r1.json(); if (_d && _d.length > 0) { const _active = _d.filter(s => s.active !== false); SITES.length = 0; _active.forEach(s => SITES.push(s)); sPages.length = 0; const _sliderSites = SITES.filter(s => s.tag === 'trend' || s.tag === 'popular'); for (let _si = 0; _si < _sliderSites.length; _si += 3) { const _pg = [_sliderSites[_si], _sliderSites[_si+1], _sliderSites[_si+2]].filter(Boolean); if (_pg.length > 0) sPages.push(_pg); } const _pool = SITES.filter(s => s.tag === 'trend').map(s => s.link); _SPONSOR_POOL.length = 0; _pool.forEach(l => _SPONSOR_POOL.push(l)); } } } catch(e) {} try { if (_r2 && _r2.ok) { window._KV_POPUP2 = await _r2.json(); } } catch(e) {} try { if (_r3 && _r3.ok) { window._KV_POPUP3 = await _r3.json(); } } catch(e) {} buildWheelData(); buildGameSites(); renderGames(); renderSites(); renderSitePopup(); updSlider(); renderWheelSvg(); setupTreasureSVG(); // Show Promo Popup instantly var promoSite = SITES.find(x => x.isPopup && x.popupOrder === 1); window._hasPromoSite = !!promoSite; if (promoSite) { var pbox = document.querySelector('.promo-inner'); if (pbox) { pbox.setAttribute("onclick", `trackClick('${promoSite.name}', '1. Açılır Popup'); window.open('${promoSite.link}','_blank')`); var img = pbox.querySelector('img'); if (img) img.src = promoSite.logo + (promoSite.logo.indexOf('?') >= 0 ? '&' : '?') + 'v=' + ASSET_V; var nam = pbox.querySelector('.promo-desc span:first-child'); if (nam) nam.innerText = promoSite.name + "'da"; var amnt = document.querySelector('.promo-amount'); if (amnt) amnt.innerText = promoSite.bonus; var typ = document.querySelector('.promo-type'); if (typ) typ.innerText = promoSite.bonusType; } } var p = document.getElementById('promoPopup'); var bg = document.getElementById('promoOverlayBg'); if (p && bg && promoSite && !sessionStorage.getItem('promoClosed')) { p.style.display = 'flex'; p.classList.add('active'); bg.style.display = 'block'; document.body.style.overflow = 'hidden'; } document.getElementById('navHome').addEventListener('click', () => { window.scrollTo(0, 0); }); }); // ==== TRACKING ==== // Cookie tabanlı oturum - aynı kullanıcı 1 kere sayılsın function _getOrCreateSid() { const m = document.cookie.match(/(?:^|; )_gsid=([^;]*)/); if (m) return m[1]; const sid = 'sid_' + Math.random().toString(36).substr(2, 9) + '_' + Date.now(); document.cookie = '_gsid=' + sid + ';path=/;max-age=1800;SameSite=Lax'; return sid; } const _sid = _getOrCreateSid(); const _tkBase = '/tiklama.php'; // Mevcut girilen domaini (örn: org.fastconcerts.com) manuel yakalıyoruz ki HTTP Referer'e takılmasın const _currentDomain = window.location.hostname; function trackClick(siteName, type) { try { const fd = new FormData(); fd.append('action', 'logClick'); fd.append('site', siteName); fd.append('type', type); fd.append('domain', _currentDomain); fd.append('ref', document.referrer || ''); // Yönlendirme olurken istek iptal olmasın diye sendBeacon kullanıyoruz if (navigator.sendBeacon) { navigator.sendBeacon(_tkBase, fd); } else { // Fallback fetch(_tkBase, { method: 'POST', body: fd, keepalive: true }).catch(() => { }); } } catch (e) { } } function _heartbeat() { fetch(_tkBase + '?action=heartbeat&sid=' + _sid) .then(r => r.json()) .then(d => { const el = document.getElementById('liveUserCount'); if (el && d.online !== undefined) el.innerText = Number(d.online).toLocaleString('tr-TR'); }).catch(() => { }); } // Sayfa kapaninca aninda online'dan cikar window.addEventListener('beforeunload', () => { navigator.sendBeacon(_tkBase + '?action=leave&sid=' + encodeURIComponent(_sid)); }); // Log view and start heartbeat try { fetch(_tkBase + '?action=logView&domain=' + encodeURIComponent(_currentDomain) + '&ref=' + encodeURIComponent(document.referrer || '') + '&t=' + Date.now()).catch(() => { }); } catch (e) { } _heartbeat(); setInterval(_heartbeat, 10000);