objArchiveCoversNavigator = function() {
  this.domName = '';
  this.indexAspPage = '';
  this.navigatorAspPage = '';
  this.coversPath = '';
  this.indexParamName = '';
  this.issueParamName = '';
  this.issuesCovers = new Array();
  this.issuesID = new Array();
  this.issuesTitles = new Array();
  this.issuePrev = 0;
  this.issueNext = 0;
  this.ie = (document.all) ? true : false;
  this.nn = (document.layers) ? true : false;
  this.byId = typeof document.getElementById == 'function';
  this.currCover = -1;
  this.issueTitleStartTag = '';
  this.issueTitleEndTag = '';
  this.withFade = false;
  this.issueCoverRef = null;
  _cachedImage = null;
  _fading = false;
  _unFading = false;
  _opacityState = 100;
  _firstUse = true;
  _switchId = null;

  this.init = function() {
    if(this.ie) this.showLayer(this.domName + 'IssueTitleIE',true);
    else if(this.nn) {
      this.showLayer(this.domName + 'IssueTitleNN',true);
      var ieTitleLoc = 'layers["'+this.domName + 'IssueTitleIE"]';
      var ieTitle = eval('document.'+ieTitleLoc);
      if(!ieTitle) ieTitle = Doc.findObj(ieTitleLoc);
      var nnTitleLoc = 'layers["'+this.domName + 'IssueTitleNN"]';
      var nnTitle = eval('document.'+nnTitleLoc);
      if(!nnTitle) nnTitle = Doc.findObj(nnTitleLoc);
      nnTitle.pageX = ieTitle.pageX;
      nnTitle.pageY = ieTitle.pageY;
    }
    this.showTitle(this.issuesTitles[this.currCover]);
  }//init

  this.unFade = function(opacityStart,opacityStop,step){
    if( opacityStart < opacityStop && opacityStart + step <= 100 ) {
      this.issueCoverRef.style.filter = 'alpha(opacity='+opacityStart+')';
      _opacityState = opacityStart;
      if(opacityStart < 100) _unFading = setTimeout(this.domName+'.unFade('+parseInt(opacityStart+step)+','+opacityStop+','+step+')',100);
      else _unFading = false;
    } else _unFading = false;
  }//unFade

  this.fade = function(opacityStart,opacityStop,step){
    if( opacityStart > opacityStop && opacityStart - step >= 0 ) {
      clearTimeout(_unFading);
      _unFading = false;
      this.issueCoverRef.style.filter = 'alpha(opacity='+opacityStart+')';
      _opacityState = opacityStart;
      if(opacityStart > 0) _fading = setTimeout(this.domName+'.fade('+parseInt(opacityStart-step)+','+opacityStop+','+step+')',100);
      else _fading = false;
    } else _fading = false;
  }//fade

  this.switchImage = function() {
    if(_fading || _unFading || !_cachedImage.complete) {
      clearTimeout(_switchId);
      _switchId = setTimeout(this.domName+'.switchImage()',1000);
      return;
    } else {
      this.issueCoverRef.src = _cachedImage.src;
      //alert('zamienilem');
      if(this.withFade && this.ie) this.unFade(_opacityState,100,10);
    }
  }//switchImage

  this.showCover = function(d) {
    if( (this.currCover + d < 0 && this.issuePrev == 0) || (this.currCover + d > this.issuesID.length-1 && this.issueNext == 0) ) return;

  	if( this.currCover + d < 0 && this.issuePrev > 0 ) { this.showLayer(this.domName + 'PrevCoverButton',false); this.getIssues(this.issuePrev); return; }
  	this.showLayer(this.domName + 'PrevCoverButton', (this.currCover + d > 0 || this.issuePrev > 0));

  	if( this.currCover + d > this.issuesID.length-1 && this.issueNext > 0 ) { this.showLayer(this.domName + 'NextCoverButton', false); this.getIssues(this.issueNext); return; }
  	this.showLayer(this.domName + 'NextCoverButton', (this.currCover + d < this.issuesID.length-1 || this.issueNext > 0));

    this.currCover += d;
    this.setCookie('path','/');
    this.setCookie(this.domName + 'CurrCover', this.currCover);
    this.issueCoverRef = document.images[this.domName + 'IssueCover'] ? document.images[this.domName + 'IssueCover'] : Doc.findObj('images["'+this.domName+'IssueCover"]');
    if(this.issueCoverRef && !_firstUse) {
      if(this.withFade && this.ie && !_fading) {//alert('wolam fade');
        this.fade(_opacityState,0,10);}
      _cachedImage = new Image();
      _cachedImage.src = this.coversPath + this.issuesCovers[this.currCover];
      //_cachedImage.onload = this.switchImage();
      this.switchImage();
    }
    this.showTitle(this.issuesTitles[this.currCover]);
    window.status = '';
    _firstUse = false;
  }//showCover

  this.showTitle = function(title) {
    if(this.ie) document.all[this.domName + 'IssueTitleIE'].innerHTML = this.issueTitleStartTag+title+this.issueTitleEndTag;
    else if(this.nn) {
      var issueTitleNNRef = document.layers[this.domName + 'IssueTitleNN'] ? document.layers[this.domName + 'IssueTitleNN'] : Doc.findObj('layers["'+this.domName+'IssueTitleNN"]');
      with(issueTitleNNRef) {
        document.open();
        document.write(this.issueTitleStartTag+title+this.issueTitleEndTag);
        document.close();
      }
    }
    else if(this.byId) document.getElementById(this.domName + 'IssueTitleIE').innerHTML=this.issueTitleStartTag+title+this.issueTitleEndTag;
  }//showTitle

  this.showLayer = function(id,visible) {
    if(this.ie) document.all[id].style.visibility = visible ? 'visible' : 'hidden';
    else if(this.nn) {
      var idRef = document.layers[id] ? document.layers[id] : Doc.findObj('layers["'+id+'"]');
      idRef.visibility = visible ? 'show' : 'hide';
    } else if(this.byId) {
      document.getElementById(id).style.visibility = visible ? 'visible' : 'hidden';
    }
  }//showLayer

  this.goToIndex = function() {
    window.location.href = this.indexAspPage + '?' + this.indexParamName + '=' + this.issuesID[this.currCover];
  }//goToIndex

  this.getIssues = function(issueId) {
    window.location.href = this.navigatorAspPage + '?' + this.issueParamName + '=' + issueId;
  }//goToIndex

  this.getCookie= function(cookieName) {
    var allcookies = document.cookie;
    var pos = allcookies.indexOf(cookieName+'=');
    if (pos != -1) {
      var start = pos + cookieName.length + 1;
    	var end = allcookies.indexOf(';', start);
    	if (end == -1) end = allcookies.length;
    	var cookie = allcookies.substring(start ,end);
    	cookie = unescape(cookie);
      return cookie;
    }
    else return null;
  }//getCookie

  this.setCookie = function(cookieName, cookieValue) {
    document.cookie = cookieName + '=' + escape(cookieValue) +';path=/;';
  }//setCookie

  return this;
}//objArchiveCoversNavigator
