// Show/hide offer descriptionshandlers
function showOfferDescription(e) {
  this.addClassName("hover");
  Event.stop(e);
}

function hideOfferDescription(e) {
  this.removeClassName("hover");
  Event.stop(e);
}

/* offers page interaction */
function setupOffers() {
  var nl = null;
  if ($("offers_header") && $("offers_header").hasClassName("offers_header_bonus")) {
    nl = $$("div.offer_block div.offers_item");
  }
  else {
    nl = $$(".offers div.offers_item");
  }
  
  nl.each(function(n) {
    if (n.hasClassName("banner")) return;
    
    // Create the offerdescription togglers
    Event.observe(n, 'mouseover', showOfferDescription.bindAsEventListener(n));
    Event.observe(n, 'mouseout', hideOfferDescription.bindAsEventListener(n));
    
    var recipeLinks = n.getElementsBySelector("a.recipes");
    if (recipeLinks.length > 1) {
      setupRecipeLinks(n);
    }
    
    setupDiscountLink(n);
  });
}


/*  MULTIPLE RECIPE LINKS SETUP
 *
 */
function setupRecipeLinks(offersItem) {
  var recipeLinks = offersItem.getElementsBySelector("a.recipes");
  
  // Build container.
  var recipeBox = document.createElement("div");
  recipeBox.className = "offers_recipes_box";
  recipeBox.style.position = "absolute";
  var recipeLinkParent = Position.offsetParent(recipeLinks[0]);
  var recipeLinkParentPos = Position.positionedOffset(recipeLinkParent);
  var recipeLinkPosition = Position.positionedOffset(recipeLinks[0]);
  recipeBox.style.left = (recipeLinkParentPos[0] + recipeLinkPosition[0]) + "px";
  if (!ua.gecko) recipeBox.style.top = (recipeLinkParentPos[1] + recipeLinkPosition[1] + 18) + "px";
    
  // Insert links from offers item.
  recipeLinks.each(function(recipeLink, index){
    var newRecipeSingular = document.createElement("p");
    newRecipeSingular.className = "singular";
    
    var newRecipeLink = document.createElement("a");
    newRecipeLink.href = recipeLink.href;
    newRecipeLink.title = recipeLink.title;
    
    var newRecipeText = document.createTextNode(recipeLink.title);
    newRecipeLink.appendChild(newRecipeText);
    newRecipeSingular.appendChild(newRecipeLink);
    recipeBox.appendChild(newRecipeSingular);
    
    if (index > 0) {
      recipeLink.style.display = "none";
    } else {
      recipeLink.title = "Toon links naar recepten met deze aanbieding";
      Event.observe(recipeLink, 'click', toggleRecipeBox.bindAsEventListener(recipeLink));
      var recipeImg = recipeLink.getElementsByTagName("img")[0];
      recipeImg.alt = recipeLink.title; // Fix for IE showing alt texts instead of link title (!).
    }
  });

  // Inject rounded corners.
  var recipeCorner = document.createElement("div");
  recipeCorner.className = "corner corner_tl";
  recipeBox.appendChild(recipeCorner);
  
  recipeCorner = document.createElement("div");
  recipeCorner.className = "corner corner_tr";
  recipeBox.appendChild(recipeCorner);

  recipeCorner = document.createElement("div");
  recipeCorner.className = "corner corner_br";
  recipeBox.appendChild(recipeCorner);

  recipeCorner = document.createElement("div");
  recipeCorner.className = "corner corner_bl";
  recipeBox.appendChild(recipeCorner);

  offersItem.appendChild(recipeBox);
}

function toggleRecipeBox(e) {
  var offersItem = $(this.parentNode.parentNode);
  var recipeBox = offersItem.getElementsBySelector("div.offers_recipes_box")[0];
  
  if (recipeBox.hasClassName("offers_recipes_box_show")) {
    recipeBox.removeClassName("offers_recipes_box_show");
  } else {
    recipeBox.addClassName("offers_recipes_box_show");
  }
  
  if (this.blur) this.blur();
  Event.stop(e);
}





/*  SPECIAL DISCOUNT LINK SETUP
 *
 */
function setupDiscountLink(offersItem) {
  var discountLink = offersItem.getElementsBySelector("a.special_discount")[0];
  if (!discountLink) discountLink = offersItem.getElementsBySelector("span.special_discount")[0];
  if (!discountLink) return;

  discountLink.improvedAlt = discountLink.firstDescendant().innerHTML;
  //  mouseover event on image
  discountLink.onmouseover = discountShowAltText;
  discountLink.onmouseout = discountHideAltText;
}

function discountShowAltText() {
  var altDiv = document.createElement('div');
  altDiv.innerHTML = this.improvedAlt;
  altDiv.id='special_discount_alt';
  // append it to the body (otherwise it wont go over the right part of the site)
  document.body.appendChild(altDiv);
  // follow the mouse
  this.observe('mousemove', discountAltFollowMouse);
  this.addClassName('special_discount_over');
}
function discountHideAltText() {
  this.stopObserving('mousemove', discountAltFollowMouse);
  // remove the improved alt block
  if ($('special_discount_alt')) $('special_discount_alt').remove();
  this.removeClassName('special_discount_over');
}

function discountAltFollowMouse(event) {
  $('special_discount_alt').style.left = Event.pointerX(event)-15+'px';
  $('special_discount_alt').style.top = Event.pointerY(event)-25+'px';
}

function beursMouseOver(obj) {
	var imagesInLink = $(obj).getElementsBySelector("img");
	if (imagesInLink.length > 0) {
		var altDiv = document.createElement('div');
		altDiv.innerHTML = imagesInLink[0].alt;
		altDiv.id='beurs_alt';

		// append it to the body (otherwise it wont go over the right part of the site)
		document.body.appendChild(altDiv);
		// follow the mouse
		$(obj).observe('mousemove', beursAltFollowMouse);
	}

  $(obj).addClassName('beurs_over');
}
function beursMouseOut(obj) {
  $(obj).stopObserving('mousemove', beursAltFollowMouse);
  // remove the improved alt block
  if ($('beurs_alt')) $('beurs_alt').remove();
  $(obj).removeClassName('beurs_over');
}

function beursAltFollowMouse(event) {
  $('beurs_alt').style.left = Event.pointerX(event)-15+'px';
  $('beurs_alt').style.top = Event.pointerY(event)-25+'px';
}



/* initialize when DOM is loaded */
if (loader) {
  loader.schedule("setupOffers", setupOffers, Loader.priority.HIGH);
}