Open only 1 highslide pupup window if use highslide in a gallery (automatically close the already open window)


1.       Open Highslide-full.js or highslide-with-html.js which is used in your project.
Add the below hightailed code in  Highslide-full.js or highslide-with-html.js
hs.Outline =  function (outlineType, onLoad) {
   this.onLoad = onLoad;
   this.outlineType = outlineType;
   var v = hs.uaVersion, tr;
  
   this.hasAlphaImageLoader = hs.ie && hs.uaVersion < 7;
   if (!outlineType) {
          if (onLoad) onLoad();
          return;
   }
   hs.init();
  this.table = hs.createElement(
          'table', {
                 cellSpacing: 0
          }, {
                 visibility: 'hidden',
                 position: 'absolute',
                 borderCollapse: 'collapse',
                 width: 0
          },
          hs.container,
          true
              );

    /****** add this code to generate the Table Unique ID****************/
    var key = this.key = hs.expanders.length;
    this.table.id="table"+key;
    /*******************************/

    var tbody = hs.createElement('tbody', null, null, this.table, 1);
  
   this.td = [];
   for (var i = 0; i <= 8; i++) {
          if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, tbody, true);
          this.td[i] = hs.createElement('td', null, null, tr, true);
          var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
          hs.setStyles(this.td[i], style);
   }
   this.td[4].className = outlineType +' highslide-outline';
  
   this.preloadGraphic();
};
hs.Expander = function (a, params, custom, contentType) {
    if (document.readyState && hs.ie && !hs.isReady) {
        hs.addEventListener(document, 'ready', function () {
            new hs.Expander(a, params, custom, contentType);
        });
        return;
    }
    this.a = a;
    this.custom = custom;
    this.contentType = contentType || 'image';
    this.isHtml = (contentType == 'html');
    this.isImage = !this.isHtml;

    hs.continuePreloading = false;
    this.overlays = [];
    this.last = hs.last;
    hs.last = null;
    hs.init();
    var key = this.key = hs.expanders.length;

    // override inline parameters
    for (var i = 0; i < hs.overrides.length; i++) {
        var name = hs.overrides[i];
        this[name] = params && typeof params[name] != 'undefined' ?
                     params[name] : hs[name];
    }
    if (!this.src) this.src = a.href;

    // get thumb
    var el = (params && params.thumbnailId) ? hs.$(params.thumbnailId) : a;
    el = this.thumb = el.getElementsByTagName('img')[0] || el;
    this.thumbsUserSetId = el.id || a.id;
    if (!hs.fireEvent(this, 'onInit')) return true;

    // check if already open
    for (var i = 0; i < hs.expanders.length; i++) {
        if (hs.expanders[i] && hs.expanders[i].a == a
                     && !(this.last && this.transitions[1] == 'crossfade')) {
            hs.expanders[i].focus();
            return false;
        }
    }

    // cancel other
    if (!hs.allowSimultaneousLoading) for (var i = 0; i < hs.expanders.length; i++) {
        if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
            hs.expanders[i].cancelLoading();
        }
    }
    hs.expanders[key] = this;
    if (!hs.allowMultipleInstances && !hs.upcoming) {
        if (hs.expanders[key - 1]) hs.expanders[key - 1].close();
        if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
            hs.expanders[hs.focusKey].close();
    }

    // initiate metrics
    this.el = el;
    this.tpos = this.pageOrigin || hs.getPosition(el);
    hs.getPageSize();
    var x = this.x = new hs.Dimension(this, 'x');
    x.calcThumb();
    var y = this.y = new hs.Dimension(this, 'y');
    y.calcThumb();
    if (/area/i.test(el.tagName)) this.getImageMapAreaCorrection(el);
    this.wrapper = hs.createElement(
              'div', {
                  id: 'highslide-wrapper-' + this.key,
                  className: 'highslide-wrapper ' + this.wrapperClassName
              }, {
                  visibility: 'hidden',
                  position: 'absolute',
                  zIndex: hs.zIndexCounter += 2
              }, null, true);

    this.wrapper.onmouseover = this.wrapper.onmouseout = hs.wrapperMouseHandler;
    if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
        this.outlineWhileAnimating = 0;

    /*************Automatically close the already open window ********************************************/
    if (key > 0) {
        var chkid = "highslide-wrapper-";
        for (var i = 0; i < key; i++) {
            var ctrldiv = document.getElementById(chkid + i);
            hs.close(ctrldiv);
        }
    }
    /*********************************************************/


    // get the outline
    if (!this.outlineType
              || (this.last && this.isImage && this.transitions[1] == 'crossfade')) {
        this[this.contentType + 'Create']();

    } else if (hs.pendingOutlines[this.outlineType]) {
        this.connectOutline();
        this[this.contentType + 'Create']();

    } else {
        this.showLoading();
        var exp = this;
        new hs.Outline(this.outlineType,
                     function () {
                         exp.connectOutline();
                         exp[exp.contentType + 'Create']();
                     }
              );
    }

    return true;
};

Comments

Popular posts from this blog

Display multiple marker point on Google Map with same location or same Longitude,Latitude

How to refresh parent page on close of popup window by toolbar close button

Implementing Zoom functionality in asp.net