/*
   Skrypt jest darmowy, poki ten komentarz w nim pozostaje.
   Released under Creative Commons License
   http://creativecommons.org/licenses/by/2.0/

   Original author: Kornel Lesinski
   http://pornel.net/pornpups
*/

/* sposob uzycia tego wszystkiego znajdziesz na koncu pliku */



/** to taki smieszny sposob definiowania funkcji, nie przejmuj sie */
var pornpups =
{
  /** uaktywnia wszystkie linki w podanym elemencie. z pewnoscia chcesz to wywolac */
  init: function(element)
  {
    /** wymagany jest element i obsluga DOM */
    if (!element || !element.getElementsByTagName) {return false;}

    var as = element.getElementsByTagName('a');
    for(var i=0;i<as.length;i++)
    {
      /* dzieki ponizszej linijce upopupiane sa tylko linki do obrazkow. zakomentuj ja i bedzie dzialalo na wszystkie */
      if ((as[i].href+'').match(/\.(jpe?g|png|gif)/i))
        as[i].onclick = this.click;
    }

    return true;
  },

  /** tworzenie dokumentu, ktory jest w nowootwartym oknie */
  writedoc: function(win,href,title,alt,h)
  {
    var doc = win.document;
    doc.open();
    doc.write(
    '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">' +
    '<html id="popup">' +
    '<head><head><title>' + alt + '</title>' +
    '<meta http-equiv="Content-Type" content="text/html; charset=utf-8">' +
          '<link rel="stylesheet" href="/css/popupy.css">' +
    (h?'<style type="text/css">.klik {color:#444;font-size:0.9em} .obrazek {min-height: ' + h + 'px} #iesux#popup .obrazek {height: ' + h + 'px;}</style>':'') +
    '</head><body>' +
    (title?'<p class="tytul">'+title+'</p>':'') +
    '<p class="obrazek"><img' + (title?' title="'+title+'"':'') + ' src="'+href+'" alt="'+alt+'"></p>' +
    '<p class="klik">Kliknij, aby zamknąć</p>' +
    '<script type="text/javascript"> document.body.onmouseup = function(e) {var ev = e||event; if ((ev.button||ev.which) < 2) self.close();} ' +
    '</script></body></html>'
    );
    doc.close();
  },

  /** funkcja ma za zadanie wydobyc wymiary z podanego ciagu (tytulu linku)
      zwraca tablice zawierajaca ladnie sformatowany tytul oraz
      wymiary pobrane z podanego ciagu w formacie dla window.open

      zmien ta funkcje, jesli chcesz zapisywac wymiary w inny sposob
  */
  title2size: function(str)
  {
    if (str)
    {
      /* wyrazenie regularne szuka czegos na wzor "(111x222)" */
      var out = str.match(/\(([0-9]+)x([0-9]+)\)/);

      /* po czym usuwa znaleziony fragment i dodane pare pixeli marginesu */
      if (out) return new Array(str.replace(/\(([0-9]+)x([0-9]+)\)/g,''),parseInt(out[1]),parseInt(out[2]));
    }
    /* w przypadku problemow - podaje wartosci domyslne */
    return new Array(str,550,420);
  },

  /** obsluga klikniecia */
  click: function()
  {
    try {
      /* jesli okno tej miniatury jest otwarte - zamknij */
      if (this.pp_win && this.pp_win.close && !this.pp_win.closed) {this.pp_win.close(); this.pp_win=false; return false;}

      /* znajdz obrazek, jego alt i title */
      var imgs = this.getElementsByTagName('img');
      var title = imgs[0].getAttribute('title')?imgs[0].getAttribute('title'):this.getAttribute('title');
      var alt = imgs[0].getAttribute('alt');

      /* parametry okna, z wymiarami */

      var titleandsize = pornpups.title2size(title);
      var winopts = "dependent=yes,toolbar=no,resizable=yes,width=" + (titleandsize[1]+30) + ',height=' + (titleandsize[2]+60);

      /* do the boogie */
      var win = window.open(this.href,'_blank',winopts);
      if (win && win.opener)
      {
        this.pp_win = win;
        pornpups.writedoc(win,this.href,titleandsize[0],alt,titleandsize[2]);
        return false;
      }
    }
    /* siatka bezpieczenstwa, jakby ktoras funkcja nawalila */
    catch(e){}

    /* jesli nie udalo sie otworzyc okna - zwraca true, co otwiera obrazek w tym samym oknie */
    return true;
  },

  initNow: function()
  {
    this.init(document.body);
  },

  initLoad: function()
  {
    this.oldOnload = window.onload;
    var that = this;
    window.onload = function()
    {
      if (that.oldOnload) that.oldOnload();
      that.initNow();
    }
  }
};


/** inicjalizacja przy onload (po zaladowaniu wszsystkich miniatur) */
pornpups.initLoad();

/** inicjalizacja natychmiastowa. musi byc wykonana w body za wszystkimi linkami, na ktore ma dzialac */
pornpups.initNow();
