/* START global js_head */
var lastE = "";
  var lastG = 0;
  var play_now = "Zagraj teraz!";
  var b = document.documentElement;
  var cefList = ["idcTesting", "idclauncher", "idcplaystv"];
  b.setAttribute("data-useragent", navigator.userAgent);
  b.setAttribute("data-platform", navigator.platform);
  b.className +=
    !!("ontouchstart" in window) || !!("onmsgesturechange" in window)
      ? " touch"
      : "";
  var fsAPIKey = "q1N40ieTqTkVqVnIyK7f8V15QgPx7swS";
  var fsProjectId = 5;
  
  function getCookie(cname) {
    var name = cname + "=";
    var decodedCookie = decodeURIComponent(document.cookie);
    var ca = decodedCookie.split(";");
    for (var i = 0; i < ca.length; i++) {
      var c = ca[i];
      while (c.charAt(0) == " ") {
        c = c.substring(1);
      }
      if (c.indexOf(name) == 0) {
        return c.substring(name.length, c.length);
      }
    }
    return "";
  }
  function loadSession(field) {
    if (getCookie(field) != null && getCookie(field) != "") {
      return getCookie(field);
    } else if (sessionStorage.getItem(field) != null) {
      return sessionStorage.getItem(field);
    } else if (localStorage.getItem(field) != null) {
      return localStorage.getItem(field);
    } else {
      return false;
    }
  }
  
  function saveUtm() {
    var vars = {};
    var parts = window.location.href.replace(
      /[?&]+([^=&]+)=([^&]*)/gi,
      function (m, key, value) {
        vars[key] = value;
      }
    );
    if (typeof vars.utm_source == "string")
      setCookie("utm_source", vars.utm_source, 1);
    if (typeof vars.utm_campaign == "string")
      setCookie("utm_campaign", vars.utm_campaign, 1);
    if (typeof vars.utm_medium == "string")
      setCookie("utm_medium", vars.utm_medium, 1);
    if (typeof vars.utm_term == "string")
      setCookie("utm_term", vars.utm_term, 1);
    if (typeof vars.utm_content == "string")
      setCookie("utm_content", vars.utm_content, 1);
    if (typeof vars.pixelTracking == "string")
      setCookie("pixelTracking", vars.pixelTracking, 1);
    if (typeof vars.pub == "string") setCookie("pub", vars.pub, 1);
    if (typeof vars.tid == "string") setCookie("tid", vars.tid, 1);
  }
  
  function setCookie(cname, cvalue, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
    var expires = "expires=" + d.toUTCString();
    document.cookie =
      cname +
      "=" +
      cvalue +
      ";" +
      expires +
      "; domain=idcgames.com; path=/; SameSite=Strict; Secure";
  }
 /****************************************************************************************************************************/
  /*********************************************************  OTHERS  *********************************************************/
  /****************************************************************************************************************************/
  function addScript(src, clase) {
    var s = document.createElement("script");
    s.setAttribute("src", src);
    if (typeof clase == "string") {
      s.setAttribute("class", clase);
    }
    document.body.appendChild(s);
  }
  function addScriptJS(theJS) {
    var s = document.createElement("script");
    s.text = theJS;
    document.body.appendChild(s);
  }
  function changeNav(lang) {
    let href =
      $(`link[hreflang='${lang}']`).attr("href") ||
      `https://${lang}.idcgames.com`;
    window.location.href = href;
  }

  function getLanguageUrl() {
    return "idcgames.com/pl";
  }

  function getTagsFromGameData(gamedata) {
    function find_duplicate_in_array(array) {
      const count = {};
      const result = [];

      array.forEach((item) => {
        if (count[item.id]) {
          count[item.id] += 1;
          return;
        }
        count[item.id] = 1;
      });

      for (let prop in count) {
        var item = {};
        item["id"] = prop;
        item["name"] = array.filter((aa) => aa.id == prop)[0].name;
        item["title"] = array.filter((aa) => aa.id == prop)[0].title;
        item["seo_url"] = array.filter((aa) => aa.id == prop)[0].seo_url;
        item["count"] = count[prop];

        result.push(item);
      }

      return result;
    }
    var tagBlocks = [],
      tagData = "";
    Object.keys(gamedata).forEach((key) => {
      gamedata[key].forEach((gData) => {
        Object.keys(gData.game_tags).forEach((key) => {
          tagBlocks.push(gData.game_tags[key]);
        });
      });
    });

    var tagData = find_duplicate_in_array(tagBlocks);
    tagData = getShuffledArr(tagData);

    return tagData;
  }

  function getShuffledArr(arr) {
    const newArr = arr.slice();
    for (let i = newArr.length - 1; i > 0; i--) {
      const rand = Math.floor(Math.random() * (i + 1));
      [newArr[i], newArr[rand]] = [newArr[rand], newArr[i]];
    }
    return newArr;
  }
  if (typeof AOS == "object") {
    AOS.init({
      disable: "mobile", //disable the animation on mobile
    });
  }
/* END global js_head */
/* START nav-game-menu-default-v2 js_head */
var lastG = "1254" * 1;
  document.cookie = "lastG=" + lastG + ";domain=idcgames.com";
  var language = `pl`;
  var msgError = `Błąd w procesie logowania. Proszę spróbuj później.`;
  var msgBadLogin = `Niepoprawny Użytkownik/Hasło`;
  var msgUserExist = `Użytkownik istnieje`;
  var msgUserBad = `Niepoprawny format: powinien zawierać co najmniej 4-14 znaków. Wszystkie znaki są dozwolone poza <> ' \"`;
  var msgPassMatch = `Hasła nie pasują.`;
  var msgNoUser = `Wpisz nazwę użytkownika`;
  var msgNoPass = `Wprowadź hasło`;
  var thankyou =
    "https://idcgames.com/pl/the-saviors-gang/extra/dziękujemy";
/* END nav-game-menu-default-v2 js_head */
/* START main-game-guides-default js_head */
<!--  -->

var  regex1 = /(.*)(\/)([^\/]*)$/gm;
var  subst1 = `$1/conversions/$3`;
var  regex2 = /(.*)(\.)([^\.]*)$/gm;
var  subst2 = `$1-thumb.jpg`;
var  subst2b = `$1-thumb.$3`;

function firstImage(theString,theUrl){
	var reg = /\<img.*?src(.*?)[^\>]+\>/mi;
	if ((m = reg.exec(theString)) !== null) {}
	if( m != null ) {
		var regex = /\\/gm;
		var tag = m[0].replace(regex, '');
		var regex = /src\s*=\s*"(.+?)"/g
		var m = regex.exec(tag)
		var image_src = m[1];		
		
		// var result = image_src.replace(regex1, subst1);
		// if ( image_src.search("storage") != -1 ) {
		// 	var img = result.replace(regex2, subst2);
		// }else if ( image_src.search("resources") != -1 ) {
		// 	var img = result.replace(regex2, subst2b);
		// }else{
		// 	var img = image_src;
		// }

		var img = image_src;
		var clase = "";
	}else{
		var x = theUrl.split("/");
		var clase ="default_image";
		if( typeof(x[0]) != "undefined"){
			var seo = x[0];
			var background = gamedata[seo].store_params.game_home_news_bg;
			var img = gamedata[seo].common_params.game_logo;
			var clase_img = "seo_g_" + seo;
			$("head").append("<style>.seo_g_"+seo+" { background-image: url('"+background+"'); }</style>");
		}else{
			var img = "https://cdn5.idcgames.com/img/default/logo-idc-dark.png";
			var clase_img = "default_g_bg";
		}
	}
	return { "img": img, "clase": clase, "clase_img": clase_img };
}

function html2text(html) {
    var tag = document.createElement('div');
    tag.innerHTML = html;
    return tag.innerText;
}
function doContent(content,section){
	$("#"+section).find(".card").remove();
	try{
		$.each(content, function( index, value ) {
			if( typeof(value) == "string" ){
				value = JSON.parse(value);
			}
			var cont = makeType1(value);
			!!cont && $("#"+section).find(".staff-guides").append(cont);
		});
	}catch(err){
		console.log(err);
	}
}
function makeType1(row){
	var url = row.url.replace(".html", "");
	var id = row.id;
	var title = row.title;
	var author = row.author;
	var item; // = JSON.parse(row.body);
	var body = "";

	if(typeof row.body === 'object'){
		item = row.body;
		imageData = firstImage(Object.values(row.body)[0].replace(/\\/g, ''),url);
	}else{
		item = JSON.parse(row.body);
		imageData = firstImage(row.body.replace(/\\/g, ''),url);
	}

	$.each(item, function( index, value ) {
		body = body + html2text(value) + " ";
	});
	if( body.length > 120) {
        body = body.substr(0,120)+" ...";
    }
	//var imageData = firstImage(row.body.replace(/\\/g, ''),url);
	var likes = row.total_like;
	var dislikes = row.total_dislike;
	var pubdate = row.pubdate;

	return imageData && 
			'<div class="card-custom card flex-col bg-gradient border-0 my-3 teaser lazyload" data-expand="-20">'+
			   '<a href="'+url+'" class="text-white h-100">'+
			      '<div class="h-100 d-flex flex-column"><div class="img-container '+(imageData.clase||"")+' '+(imageData.clase_img||"")+'">'+
			      	'<img class="card-img-custom img-zoom lazyload" data-src="'+(imageData.img||"")+'" alt="'+title+'"></div>'+
				      '<div class="text-overlay-custom gradient-overlay-6">'+
				         '<div class="d-flex flex-column justify-content-lg-between p-lg-5 p-4">'+
				            '<div>'+
				               '<h4 class="card-title h5 text-shadow">'+title+'</h4>'+
				            '</div>'+
				            '<div>'+
				               '<p class="card-text">'+body+'</p>'+
				            '</div>'+
				         '</div>'+
				      '</div>'+
					'</div>'+
				'</a>'+
			'</div>';

}
/* END main-game-guides-default js_head */
/* START footer-default js_head */
let  game_review_requested = {};
  
  let classAndText = [
  {
    class: 'text-danger',
    text: 'Najbardziej negatywne',
    range: [0, 9]
  },
  {
    class: 'text-danger-',
    text: 'Bardzo negatywne',
    range: [10, 19]
  },
  {
    class: 'text-danger--',
    text: 'Negatywne',
    range: [20, 39]
  },
  {
    class: 'text-warning',
    text: 'Mieszane',
    range: [40, 69]
  },
  {
    class: 'text-primary--',
    text: 'Pozytywne',
    range: [70, 84]
  },
  {
    class: 'text-primary-',
    text: 'Bardzo pozytywne',
    range: [85, 94]
  },
  {
    class: 'text-primary',
    text: 'Najbardziej pozytywne',
    range: [95, 100]
  }
];

function findRangePercent(percent) {
  let finded = false, i = 0;
  while(!finded && i < classAndText.length) {
    if(percent >= classAndText[i].range[0] && percent <= classAndText[i].range[1]) finded = true;
    i++;
  }
  return classAndText[i - 1];
}

function getLangs(reviews) {
    return Object.keys(reviews);
}

function displayTotalReviewsTooltip(id_idcgame, popoverid, reviews) {
  var isPopover = true;
  let [positives, totalReviews] = getLangs(reviews).reduce((acc, el) => { acc[0] += reviews[el].filter(rev => rev.Vote == 1).length; acc[1] += reviews[el].length; return acc;}, [0, 0]);
  //change to const when all tooltips are popovers
  var tooltipObj = $(`#` + popoverid)

  if(!tooltipObj) {
    tooltipObj = $(`.custom-tooltip[id_idcgame=${id_idcgame}]`)
    isPopover = false;
    if(!tooltipObj) {
      return;
    }
  }

  if(totalReviews == 0) {
    $(tooltipObj).find(".text-review-positiveness").text("Bez recenzji")
    $(tooltipObj).find(".text-review-count").text(``)
  }else{
    let percent = parseInt(positives/totalReviews*100);
    let classText = findRangePercent(percent)
  
    $(tooltipObj).find(".text-review-positiveness").text(classText.text)
    $(tooltipObj).find(".text-review-count").text(` (${totalReviews} reviews)`)
    // $(tooltipObj).find(".text-review-count").text(` (${totalReviews} Recenzji)`)
  }
  if (isPopover){
          var popover = $(tooltipObj).parent().data('bs.popover');
    //We need to call show in order to refresh the data in the popover when it is already visible.
    //If we don't call this code, the popover is not updated until it hides and it is shown again
          popover.show();
  }

  /*
  let totalReviewsHTML = String.format(
    templateTotalReviewsHTML,
    classText.class,
    classText.text,
    positives,
    totalReviews,
    percent,
    'h3'
  );
  document.getElementById('totalReviewsDisplay').innerHTML = totalReviewsHTML;
  let totalReviewsInfoHTML = String.format(
    templateTotalReviewsHTML,
    classText.class,
    classText.text,
    positives,
    totalReviews,
    percent,
    'span'
  );
  let idGameInfo = "infoReviewsGame";
  let qSelector = `span[__name__="content"]`;
  let containerInfo = document.getElementById(idGameInfo);
  let spanHTML = containerInfo.querySelector(qSelector);
  spanHTML.outerHTML = totalReviewsInfoHTML;
  containerInfo.classList.remove("d-none");*/
}

  function loadGameReview(id_idcgame, popoverid){
    if(!id_idcgame || game_review_requested.hasOwnProperty(id_idcgame)){
      return;
    }

    game_review_requested[id_idcgame] = 1;

    $.ajax({
      type:"GET",
      url:`/idcjson/comments/${id_idcgame}/CommentsCurrentYear.json`,
      dataType: 'text',
      async: true,
      success: function(e){
          try {
            var result = JSON.parse(e);
            jsonReviews = result;
            displayTotalReviewsTooltip(id_idcgame, popoverid, jsonReviews);
          }catch (e){
            displayTotalReviewsTooltip(id_idcgame, popoverid,{});
            return false;
          }
      },
      error: function(e){
        // $('#containerGraphs').addClass('d-none');
        displayTotalReviewsTooltip(id_idcgame, popoverid,{});
      }
    });
  }
/* END footer-default js_head */
