init( "changeImages( 'A', 'previewIn', 'previewSrc' )" );
init( "popupImages( 'A', 'imgWidth', 'imgHeight' )" );

function popupImages( searchIn, icoArgW, icoArgH )
{
  var AutoClose = true;

  if( searchIn==undefined ) searchIn = 'A'
  if( icoArgW==undefined ) icoArgW = 'imgWidth'
  if( icoArgH==undefined ) icoArgH = 'imgHeight'
  
  /********************************/
  
  this.imageClick = function(e)
  {
    e = e || window.event;
    target = getParentByTag( e.target || e.srcElement, 'A' );
    
    popImage( target.href, target.title, target.attributes[icoArgW].value,
              target.attributes[icoArgH].value )
    
    if(e.preventDefault) e.preventDefault()
    return false;
  }
  
  function popImage(imageURL,imageTitle,width,height)
  {    
    var isW3 = document.getElementByID && document.createTextNode;
    var isOP = window.opera ? true : false;
    var isIE = document.all && !isOP;
    var imgWin=window.open('about:blank','','width='+width+',height='+height+',left='+(screen.width/2-width/2)+',top='+(screen.height/2-height/2)+'resizable=0,scrollbars=no,menubar=no,toolbar=no' );
    
    with (imgWin.document){
    writeln('<html><head><title>'+imageTitle+'</title><style>html,body{height:100%}body{margin:0px;padding:0;border:0;background-color:#000000;}.max{height:100%;width:100%}</style>');
    writeln('</head><body style="cursor:pointer" bgcolor="000000" scroll="no" onclick="window.close()" onload="this.window.focus();"'+(!AutoClose?'':' onblur="this.window.close()"')+'>');
    writeln('<table class=max cellpadding=0 cellspacing=0 border=0><tr><td align=center><a href="javascript:self.close();" title="kliknij aby zamknąć"><img src='+imageURL+' border="0" style="display:block;border:0;margin:auto;"></a></td></tr></table></body></html>');
    close();
    }
  }
  
  /********************************/
  
  searchIn = document.getElementsBySelector( searchIn );
  
  for( var i=0; i<searchIn.length; i++ ){
    if( searchIn[i].attributes[icoArgW] != undefined ||
        searchIn[i].attributes[icoArgH] != undefined ){
      addEvent( searchIn[i], 'click', imageClick )
    }
  } 
}

function changeImages( searchIn, icoArgIn, icoArgSrc )
{  
  if( searchIn==undefined ) searchIn = 'A'
  if( icoArgIn==undefined ) icoArgIn = 'previewIn'
  if( icoArgSrc==undefined ) icoArgSrc = 'previewSrc'

  /************************/
  
  this.imageOver = function(e)
  {
    e = e || window.event;
    target = getParentByTag( e.target || e.srcElement, 'A' );
    var previewBox;
    var previewImg;
    
    if( (previewBox = target.attributes[icoArgIn].value) ){
      if( previewImg = getPreviewImg( target ) ){
        previewBox = document.getElementsBySelector( previewBox );
        previewBox[0].src = previewImg;
      }
    }
  }
  
  this.getPreviewImg = function( icoNode )
  {
    if( icoNode.attributes[icoArgSrc] )
      return icoNode.attributes[icoArgSrc].value
    else if( icoNode.nodeName=='A' )
      return icoNode.href
    else
      return false
  }
  
  this.getParentByTag = function( srcElement, tagName, className )
  {
    var element = srcElement;    
    while( element ){
      if( element.nodeName == tagName &&
        ( !className || haveClass(element,className) ) ){
        return element;
        break;
      }
      element = element.parentNode;
    }
    return false;
  }
  
  /********************************/
  
  searchIn = document.getElementsBySelector( searchIn );
  
  for( var i=0; i<searchIn.length; i++ ){
    if( searchIn[i].attributes[icoArgIn] != undefined ){
      var img = new Image()
      img.src = getPreviewImg( searchIn[i] );
      addEvent( searchIn[i], 'mouseover', imageOver )
    }
  }
}

/***************************************/

function addEvent( obj, evType, fn )
{
  if( obj.addEventListener ){
    obj.addEventListener( evType, fn, true );
    return true;
  }else if( obj.attachEvent ){
    var r = obj.attachEvent( "on"+evType, fn );
    return r;
  } else {
    return false;
  }
}

function haveClass(obj,cls)
{
  r=new RegExp("(^| )"+cls+"($| )");
  return r.test(obj.className);
}

function init( func )
{
  addEvent( window, 'load', function (){ eval(func) } ) 
}