var _cacheImage = $H({});
function cacheImage(src) {
  if (!_cacheImage.get(src)) {
    var img = new Image();
    img.src = src;
    _cacheImage.set(src, img);
  }
}
function getMediaContent(element) {
  element = $(element);
  var mediaElement = element.next("a[rel=flickr-media-content]");
  if (mediaElement) {
  }
  return mediaElement;
}

function doMoveToFlickrPhoto() {
  window.FlickrScroller.doMoveToElement(this);

  // Cache next item
  if ($(this).next()) {
    var preload = getMediaContent($(this).next().down("a"));
    if (preload) cacheImage(preload.href);
  }

  // Cancel if this item doesn't have an image
  var element = this.down("a");
  if (!element.down("img")) {
    return true;
  }
  
  var description = $("pFlickrDescription1");
  var href = element.href;
  var title = element.title.split(" | ");

  if (description) {
    description.hide();
    //var content = title[0]+'<br>'+title[1];
    title[0].gsub('/\r?/', '\n');
    var content  = '<span style="margin-left:5px">' + title[0]+'</span><br>';
        content += '<span style="margin-left:5px" id="toggleFormLink"><a href="javascript:;" onclick="toggleForm();"><img src="images/b_ecards.gif" title="Verstuur deze foto naar een vriend of vriendin." alt="Verstuur deze foto naar een vriend of vriendin." width="108" height="28" border="0"></a></span>';
    description.update(content);
    new Effect.Appear(description);
  }

  var mediaElement = getMediaContent(element);
  var contentElement = $("divFlickrPhotoLarge1").down("div.divFlickrPhotoLargeContent");

  if (mediaElement && contentElement) {
    cacheImage(mediaElement.href);
    setEcardsURL(mediaElement.href);
    
    $("sendFoto").hide();
    
    new Effect.Fade(contentElement, {
      duration: 0.25,
      afterFinish: function() {
        contentElement.setStyle("background: url("+mediaElement.href+") no-repeat center center");
        contentElement.title = title[0];
        contentElement.update('<span style="float: left; border-bottom: 0px; width: 100%; height: 100%"></span>');
        new Effect.Appear(contentElement, { duration: 0.5 });
      }
    });
    
  }

  return false; /* to cancel a[href] */
}

function setEcardsURL(url) {
  if(document.sendFoto) document.sendFoto.furl.value = url;
}

function toggleForm() {
  var element = $("divFlickrPhotoLarge1").down("div.divFlickrPhotoLargeContent");
  var toggleLink = $("toggleFormLink");
  
  if(!$("sendFoto").visible()) {
    
    new Effect.Fade(element, {
      duration: 0.25,
      afterFinish: function() {
        new Effect.Appear($("sendFoto"), { duration: 0.5 });
        if($(toggleLink).visible()) new Effect.Fade(toggleLink, { duration: 0.5 });
      }
    });
    
    //element.hide();
    //$("sendFoto").show();
  }else {
    
    new Effect.Fade($("sendFoto"), {
      duration: 0.25,
      afterFinish: function() {
        new Effect.Appear(element, { duration: 0.5 });
        new Effect.Appear(toggleLink, { duration: 0.5 });
      }
    });
    
    //element.show();
    //$("sendFoto").hide();
  }
}

function initScroller() {    
  var element = $("divFlickrScroller1");
  
  window.FlickrScroller = new HM.NewsScroller(element.down(".divFlickrScroller"), {
    direction: "horizontal",
    interval: 1500,
    isDraggable: true,
    autostart: false,
    autorewind: false
  });
  
  Event.observe(element.down(".divFlickrScrollLeft"), "click", window.FlickrScroller.doMovePrevious.bind(window.FlickrScroller, { elements: 4 }));
  Event.observe(element.down(".divFlickrScrollRight"), "click", window.FlickrScroller.doMoveNext.bind(window.FlickrScroller, { elements: 4 }));
  
  // Get items
  var items = element.select("div.divFlickrPhoto");
  
  // Attach onclick handler
  items.each(function(element) {
    element.onclick = doMoveToFlickrPhoto;
  });
  
  // Move to first item
  doMoveToFlickrPhoto.bind(items.first())();

}