// =================================================================
// Set options for HighSlide
// =================================================================

hs.graphicsDir = 'Media/HighSlide/';

hs.showCredits = false;
hs.dimmingOpacity = HighSlideDimming;
if(HighSlideCenter) hs.align = 'center';
hs.allowMultipleInstances = HighSlideAllowMultiple;
hs.outlineType = HighSlideOutline;
hs.wrapperClassName = HighSlideWrapperClassName;
hs.transitions = ["expand", HighSlideTransition];
highslide_counter = 1;

// =================================================================
// Set event handlers for HighSlide
// =================================================================

// identify elements that act as anchor
hs.isUnobtrusiveAnchor = function(el) {
	check = el.rel.substr(0,9);
	if (check =='imagezoom'){
    el.style.textDecoration = "none";
    return 'image';
	}
}

// init elements that act as anchor
hs.onSetClickEvent = function ( sender, e ) {
   // set cursor
   if(hs.ie){
	   // IE needs special handling
     e.element.style.cursor = 'url('+ hs.graphicsDir + hs.expandCursor +')'
     // e.element.style.textDecoration = "none";
   }
   else{
	   // All other browsers
	   e.element.setAttribute("style", 'cursor: url('+ hs.graphicsDir + hs.expandCursor +'), pointer !important;', 0);
   };

   // set the onclick for the element
   e.element.onclick  = function () {
     group = '';
     p = e.element;
     rel = p.getAttribute('rel');
     check = rel.substr(0,10);
     if (check == 'imagezoom['){
       // Gruppe ermitteln
       rem = rel.substr(10);
       pos = rem.lastIndexOf(']');
       group  = rem.substr(0, pos);
       // Zoom-URL ermitteln und zuweisen
       rem = rem.substr(pos + 2);
       if(rem != '') p.href= rem;
     }
      return hs.expand(this, { slideshowGroup: group});
   }
   // return false to prevent the onclick being set once again
   return false;
}

// init expanded view
hs.Expander.prototype.onInit = function (sender) {
	var groupname = sender.slideshowGroup || 'none';
  var arr = hs.anchors.groups[groupname];

/*	// eliminate duplicates
	var knownset= [];

	for(i = arr.length - 1; i >= 0; i--){
	  el = arr[i];
	  href = el.href;

	  if(knownset[href]){
	    arr.splice(i,1);

	    alert('eliminate 1');
	  }
	  else{
	    knownset[href] = true;
	  }
	}

	hs.anchors.groups[groupname] = arr; */

	var len = arr.length;
	var hasMultiple = len > 1;

  hs.slideshows = [];
	hs.overlays  = [];

	// Close-Button
	var showCloseButton = false;
	if(HighSlideDisplayCloseButtonCondition == 1) showCloseButton = true;
	if((HighSlideDisplayCloseButtonCondition == 2) && !hasMultiple) showCloseButton = true;
	if((HighSlideDisplayCloseButtonCondition == 3) && hasMultiple) showCloseButton = true;

	if(showCloseButton){
    // add a semitransparent, offset closebutton
    var cb = hs.createElement('div', {
          id: 'closebutton' + highslide_counter,
          className: 'highslide-overlay closebutton',
          title: hs.lang.closeTitle
       }, null, hs.container);
   cb.onclick= function() {return hs.close(this);}

    hs.registerOverlay({
      overlayId: 'closebutton' +  highslide_counter,
      position: makePosition(HighSlideDisplayCloseButtonHorizontalPosition, HighSlideDisplayCloseButtonVerticalPosition),
      // position: 'left bottom',
      fade: 2
    });

    highslide_counter += 1;
	}

	// Control-Bar
	var showControlBar = false;
	if(HighSlideDisplayControlBarCondition == 1) showControlBar = true;
	if((HighSlideDisplayControlBarCondition == 2) && !hasMultiple) showControlBar = true;
	if((HighSlideDisplayControlBarCondition == 3) && hasMultiple) showControlBar = true;

	if(showControlBar){
    hs.addSlideshow({
      interval: 0,
      repeat: false,
      useControls: true,
      fixedControls: 'fix',
      overlayOptions: {
        opacity: .6,
        position: makePosition(HighSlideDisplayControlBarHorizontalPosition, HighSlideDisplayControlBarVerticalPosition),
        hideOnMouseOut: true
      }
    });
	}

	// Bilderzahl anzeigen
	var showImageNumbers = false;
	if(HighSlideDisplayNumberCondition == 1) showImageNumbers = true;
	if((HighSlideDisplayNumberCondition == 2) && !hasMultiple) showImageNumbers = true;
	if((HighSlideDisplayNumberCondition == 3) && hasMultiple) showImageNumbers = true;

	sender.numberPosition = "none";
	if(showImageNumbers){
	  if(HighSlideDisplayNumberPosition == 1) sender.numberPosition = "heading";
	  if(HighSlideDisplayNumberPosition == 2) sender.numberPosition = "caption";
	}

	var showAltText = false;
	if(HighSlideDisplayAltTextCondition == 1) showAltText = true;
	if((HighSlideDisplayAltTextCondition == 2) && !hasMultiple) showAltText = true;
	if((HighSlideDisplayAltTextCondition == 3) && hasMultiple) showAltText = true;

	sender.headingEval = '';
	sender.captionEval = '';
	if(showAltText){
	  if(HighSlideDisplayAltTextPosition == 1) sender.headingEval = 'this.thumb.alt';
	  if(HighSlideDisplayAltTextPosition == 2) sender.captionEval = 'this.thumb.alt';
	}

  return true;
}

// =================================================================
// Helper function
// =================================================================
function makePosition(hor, vert){
  var s = '';

  if(vert==1) s += 'top';
  if(vert==2) s += 'bottom';
  if(vert==3) s += 'middle';

	s += ' ';

  if(hor==1) s += 'left';
  if(hor==2) s += 'right';
  if(hor==3) s += 'center';

  return s;
}

// Heading berechnen
hs.Expander.prototype.onBeforeGetCaption = function (sender) {
  var next = sender.a.nextSibling;
  while (next && !hs.isHsAnchor(next)) {
    if ((new RegExp('imagezoomcaption')).test(next.className || null)) {
      node = next.cloneNode(1);
      sender['caption'] = node;
      break;
    }
    next = next.nextSibling;
  }
}

// Caption berechnen
hs.Expander.prototype.onBeforeGetHeading = function (sender) {
  var next = sender.a.nextSibling;
  while (next && !hs.isHsAnchor(next)) {
    if ((new RegExp('imagezoomheader')).test(next.className || null)) {
      sender['heading'] = next.cloneNode(1);
      break;
    }
    next = next.nextSibling;
  }
}

hs.getPosition = function(el)	{
	if(el.getBoundingClientRect){
    rect = el.getBoundingClientRect();
		var p = { x: rect.left, y: rect.top };

		p.x += document.documentElement.scrollLeft;
		p.y += document.documentElement.scrollTop;
  	return p;
  }

	if (/area/i.test(el.tagName)) {
		var imgs = document.getElementsByTagName('img');
		for (var i = 0; i < imgs.length; i++) {
			var u = imgs[i].useMap;
			if (u && u.replace(/^.*?#/, '') == el.parentNode.name) {
				el = imgs[i];
				break;
			}
		}
	}
	var p = { x: el.offsetLeft, y: el.offsetTop };
	while (el.offsetParent)	{
		el = el.offsetParent;

		p.x += el.offsetLeft;
		p.y += el.offsetTop;
		if (el != document.body && el != document.documentElement) {
			p.x -= el.scrollLeft;
			p.y -= el.scrollTop;
		}
	}
	return p;
}
