(function() {
  if (!document.location.href.match(/testAlertHP/)) return;

  var
    pages = {
      'miasta': 1,
      'bialystok': 1,
      'opole': 1,
      'bielskobiala': 1,
      'plock': 1,
      'bydgoszcz': 1,
      'poznan': 1,
      'czestochowa': 1,
      'radom': 1,
      'gorzow': 1,
      'rzeszow': 1,
      'katowice': 1,
      'szczecin': 1,
      'kielce': 1,
      'torun': 1,
      'krakow': 1,
      'trojmiasto': 1,
      'lublin': 1,
      'warszawa': 1,
      'lodz': 1,
      'wroclaw': 1,
      'olsztyn': 1,
      'zielonagora': 1,
      'kobieta': 2,
      'zdrowie': 3,
      'turystyka': 4,
      'technologie': 5,
      'film': 6,
      'gospodarka': 7,
      'gielda': 8,
      'forum': 9,
      'www': 10,
      'wiadomosci': 11
    },

    oAlert = null,

    browser = function() {
      var p = null, n = window.navigator.userAgent;
      if (p = n.match(/Firefox\/(.*?)/)) return { app: 'firefox', ver: p.pop() };
      if (p = n.match(/MSIE (.*?)/)) return { app: 'ie', ver: parseInt(p.pop()) };
      if (p = n.match(/Opera.*Version\/(.*?)$/)) return { app: 'opera', ver: p.pop() };
      if (p = n.match(/Chrome\/(.*?) /)) return { app: 'chrome', ver: p.pop() };
      if (p = n.match(/Safari\/(.*?)$/)) return { app: 'safari', ver: p.pop() };
      return { app: 'unknown', ver: 'unknown' };
    },

    DAY = 24 * 60 * 60 * 1000,
    WEEK = 7 * DAY,
    TARGET_ID = 'hat_wrapper',
    ALERT_ID = 'alertSetHP',

    IE_NUM_VISITS = 5,
    IE_NUM_SERVICES = 3,
    IE_COOKIE_NAME = 'alert_sethp',

    IE_MSG_VIEW = 'Zauważyliśmy, że odwiedzasz nas regularnie. Czy chcesz ustawić Gazeta.pl jako stronę startową?',
    IE_MSG_CONFIRM = 'Tak, chcę',
    IE_MSG_CANCEL = 'Nie, dziękuję',

    IE_GEMIUS_VIEW = 'http://gazeta.hit.gemius.pl/redot.gif?id=nLuQ1MRhI8Gyd9L_L0EeUKQPzbTiupucZrNURUGZwKz.u7/stparam=zpngnieihz',
    IE_GEMIUS_CONFIRM = 'http://gazeta.hit.gemius.pl/hitredir/id=nLuQ1MRhI8Gyd9L_L0EeUKQPzbTiupucZrNURUGZwKz.u7/stparam=liehpmggkn/url=http://www.gazeta.pl/0,0.html?utm_source=rozne&utm_medium=AutopromoHP&utm_content=strona_startowa&utm_campaign=a_startowa181110',
    IE_GEMIUS_CANCEL = 'http://gazeta.hit.gemius.pl/hitredir/id=nLuQ1MRhI8Gyd9L_L0EeUKQPzbTiupucZrNURUGZwKz.u7/stparam=skjkjuduoy/url=http://www.gazeta.pl/0,0.html?utm_source=rozne&utm_medium=AutopromoHP&utm_content=strona_startowa&utm_campaign=a_startowa181110',

    IE_URI = 'http://www.gazeta.pl/0,0.html/?utm_source=rozne&utm_medium=AutopromoGW&utm_content=alert_startowa200111&utm_campaign=a_startowa200111',

    CHROME_APP_MSG_VIEW = 'Szybka, bezpłatna przeglądarka. Pobierz za darmo!',
    CHROME_APP_MSG_CONFIRM = 'Pobierz teraz',
    CHROME_APP_MSG_CANCEL = 'Nie, dziękuję',
    CHROME_APP_GEMIUS_VIEW = 'http://gazeta.hit.gemius.pl/_'+now+'/redot.gif?id=By.lPW8Pic4daDKqzJaMZ3Xn.jgBrztigo.obMs2wCr.G7/stparam=kirnnnrqwk',
    CHROME_APP_GEMIUS_CONFIRM = 'http://gazeta.hit.gemius.pl/hitredir/id=By.lPW8Pic4daDKqzJaMZ3Xn.jgBrztigo.obMs2wCr.G7/stparam=maioprdpzy/url=http://chrome.gazeta.pl/',
    CHROME_APP_GEMIUS_CANCEL = 'http://gazeta.hit.gemius.pl/hitredir/id=By.lPW8Pic4daDKqzJaMZ3Xn.jgBrztigo.obMs2wCr.G7/stparam=vnclfkgraj/url=',

    CHROME_EXT_MSG_VIEW = 'Rozszerzenie Gazeta.pl. Pobierz za darmo!',
    CHROME_EXT_MSG_CONFIRM = 'Pobierz teraz',
    CHROME_EXT_MSG_CANCEL = 'Nie, dziękuję',
    CHROME_EXT_GEMIUS_VIEW = 'http://gazeta.hit.gemius.pl/_'+now+'/redot.gif?id=By.lPW8Pic4daDKqzJaMZ3Xn.jgBrztigo.obMs2wCr.G7/stparam=rkgrhvoovz',
    CHROME_EXT_GEMIUS_CONFIRM = 'http://gazeta.hit.gemius.pl/hitredir/id=By.lPW8Pic4daDKqzJaMZ3Xn.jgBrztigo.obMs2wCr.G7/stparam=qgdrgtnhcu/url=http://chrome.gazeta.pl/',
    CHROME_EXT_GEMIUS_CANCEL = 'http://gazeta.hit.gemius.pl/hitredir/id=By.lPW8Pic4daDKqzJaMZ3Xn.jgBrztigo.obMs2wCr.G7/stparam=tcnrjjrmnn/url=',

    CHROME_URI = 'http://chrome.gazeta.pl/',
    CHROME_COOKIE_NAME = 'alert_chrome',
    CHROME_RANDOM = 1,

    now = new Date().getTime(),
    weekBefore = now - WEEK,

    page = document.location.href.replace(/^.*\/\/([a-z]+)\.gazeta\.pl\/.*$/, '$1'),
    pageID = pages[page],

    trim = function(x) { return x.replace(/^\s+|\s+$/g,''); },

    cookieRead = function(name) {
      var ary = document.cookie.split(';');
      for (var i = 0, l = ary.length; i < l; i++) {
        var m;
        ary[i] = trim(ary[i]);
        if (m = ary[i].match(new RegExp('^'+name+'=(.*)$'))) {
          m = m.pop();
          try {
            m = decodeURIComponent(m);
          } catch (e) {
            m = unescape(m);
          };
          return m;
        }
      };
      return undefined;
    },

    addEvent = function(obj, type, fn) {
      if (obj.addEventListener) {
        obj.addEventListener(type, fn, false);
      } else if (obj.attachEvent) {
        obj["e" + type + fn] = fn;
        obj[type + fn] = function() { obj["e" + type + fn] (window.event); }
        obj.attachEvent("on" + type, obj[type + fn]);
      }
    },

    hide = function(cookie, cookieDomain) {
      if (!oAlert) return;
      var expires = new Date(now + 52*WEEK).toGMTString();
      oAlert.parentNode.removeChild(oAlert);
      document.cookie = cookie + '=done; expires=' + expires + '; path=/' + cookieDomain;
    },

    onMouseOver = function() {
      var cln = this.className;
      if (cln.match(/hovered/)) return;
      this.className = cln + ' hovered';
    },

    onMouseOut = function() {
      var cln = this.className;
      if (!cln.match(/hovered/)) return;
      this.className = cln.replace(/hovered/g, '');
    },

    onConfirm = function(code, cookieName, cookieDomain) {
      var img = new Image();
      img.src = code;
      hide(cookieName, cookieDomain);
    },

    onCancel = function(code, cookieName, cookieDomain) {
      var img = new Image();
      img.src = code;
      hide(cookieName, cookieDomain);
    },

    displayAlert = function(gView, gConfirm, gCancel, mView, mConfirm, mCancel, cookieName, cookieValue, cookieDomain, cookieExpire, redirect) {
      oImg = new Image();
      oImg.src = gView;

      oAlert = document.createElement('div');
      oAlert.setAttribute('id', ALERT_ID);
      oAlertInner = document.createElement('div');
      oAlertMsg = document.createElement('p');
      oAlertMsg.innerHTML = mView;
      oAlertConfirm = document.createElement('span');
      oAlertConfirm.className = 'confirm';
      oAlertConfirm.innerHTML = mConfirm;
      oAlertCancel = document.createElement('span');
      oAlertCancel.className = 'cancel';
      oAlertCancel.innerHTML = mCancel;

      oAlertInner.appendChild(oAlertMsg);
      oAlertInner.appendChild(oAlertConfirm);
      oAlertInner.appendChild(oAlertCancel);

      oAlert.appendChild(oAlertInner);

      addEvent(oAlertConfirm, 'mouseover', onMouseOver);
      addEvent(oAlertConfirm, 'mouseout', onMouseOut);
      addEvent(oAlertCancel, 'mouseover', onMouseOver);
      addEvent(oAlertCancel, 'mouseout', onMouseOut);
      if (!redirect) addEvent(oAlertConfirm.getElementsByTagName('a')[0], 'click', function() { onConfirm(gConfirm); });
      addEvent(oAlertCancel, 'click', function() { onCancel(gCancel) });

      oTarget = document.getElementById(TARGET_ID);

      if (!oTarget) {
        document.body.insertBefore(oAlert, document.body.children[0]);
      } else {
        oNext = oTarget.nextSibling;
        if (oNext) {
          oNext.parentNode.insertBefore(oAlert, oNext);
        } else {
          oTarget.parentNode.appendChild(oAlert);
        }
      }

      document.cookie = cookieName + '=' + escape(cookieValue) + '; expires=' + cookieExpire + '; path=/' + cookieDomain;
    },

    onLoad = function() {

      var app = browser().app;

      switch (app) {
      case 'ie':
        if (!pageID) return;

        var
          tc = cookieRead(IE_COOKIE_NAME),
          cookie = tc ? tc.split(',') : [],
          i = cookie.length + 1,
          hash = {},
          count = cID = cTime = 0,
          tmp = oImg = oAlertInner = oAlertMsg = oAlertConfirm = oAlertCancel = oTarget = oNext = null,
          expires = new Date(now + WEEK).toGMTString();

        if (cookie[0] == 'done') return;
        cookie.push(pageID+':'+now);

        while (i--) {
          tmp = cookie[i].split(':');
          cID = parseInt(tmp[0]);
          cTime = parseInt(tmp[1]);
          if (cTime < weekBefore) {
            cookie.splice(i, 1);
          } else if (!hash[cID]) {
            hash[cID] = true;
            count++;
          }
        }

        if (cookie.length >= IE_NUM_VISITS && count >= IE_NUM_SERVICES) {
          displayAlert(IE_GEMIUS_VIEW, IE_GEMIUS_CONFIRM, IE_GEMIUS_CANCEL, IE_MSG_VIEW, '<a href="#" onclick="document.body.style.behavior=\'url(#default#homepage)\'; document.body.setHomePage(\'http://www.gazeta.pl/0,0.html/?utm_source=rozne&utm_medium=AutopromoGW&utm_content=alert_startowa200111&utm_campaign=a_startowa200111\');" id="hpsetBox_agree">'+IE_MSG_CONFIRM+'</a>', IE_MSG_CANCEL, IE_COOKIE_NAME, cookie.join(','), '; domain=.gazeta.pl', expires);
        }
        break;

      case 'firefox':
        var 
          cookie = cookieRead(CHROME_COOKIE_NAME),
          expires = new Date(now + DAY).toGMTString();

        if (!cookie && Math.random() < CHROME_RANDOM) {
          displayAlert(CHROME_APP_GEMIUS_VIEW, CHROME_APP_GEMIUS_CONFIRM, CHROME_APP_GEMIUS_CANCEL, CHROME_APP_MSG_VIEW, '<a href="'+CHROME_APP_GEMIUS_CONFIRM+'">'+CHROME_APP_MSG_CONFIRM+'</a>', CHROME_APP_MSG_CANCEL, CHROME_COOKIE_NAME, '1', '', expires);
        }
        break;

      case 'chrome':
        var 
          cookie = cookieRead(CHROME_COOKIE_NAME),
          expires = new Date(now + DAY).toGMTString();

        if (!cookie && Math.random() < CHROME_RANDOM) {
          displayAlert(CHROME_EXT_GEMIUS_VIEW, CHROME_EXT_GEMIUS_CONFIRM, CHROME_EXT_GEMIUS_CANCEL, CHROME_EXT_MSG_VIEW, '<a href="'+CHROME_EXT_GEMIUS_CONFIRM+'">'+CHROME_EXT_MSG_CONFIRM+'</a>', CHROME_EXT_MSG_CANCEL, CHROME_COOKIE_NAME, '1', '', expires);
        }
        break;
      }
    };

  addEvent(window, 'load', onLoad);

})();




