dojo.require("dojo.fx");
dojo.require("dijit.TitlePane");

function expandTitle(elem) {
  var dijitObject = dijit.byId(elem.id);
  var dTop = parseInt(dijitObject.domNode.style.top);
  var dLeft = parseInt(main.domNode.style.left) + 10;
  var sizeIn = dojo.animateProperty({ node: dijitObject.domNode, properties: { width: { end: 422 } }, easing: function(n){ return (n==0) ? 0 : Math.pow(2, 10 * (n - 1)); }});
  var wipeIn = dojo.fx.wipeIn({node: dijitObject.wipeNode, duration: dijitObject.duration, beforeBegin: function(){ dijitObject.hideNode.style.display="";}});
  var shiftIn = dojo.fx.slideTo({node: dijitObject.domNode, duration: 1000, top: dTop, left: dLeft, unit: "px", beforeBegin: function(){dojo.query("#highlights .dijitTitlePane").forEach(function(elem){var item = dijit.byId(elem.id); if(item.open){item.toggle();}});}, onEnd: function(){dojo.fx.chain([sizeIn, wipeIn]).play();}});
  dijitObject._wipeIn = shiftIn;
}

function collapseTitle(elem) {
  var dijitObject = dijit.byId(elem.id);
  var dTop = parseInt(dijitObject.domNode.style.top);
  var shiftOut = dojo.fx.slideTo({node: dijitObject.domNode, duration:1000, top:dTop, left:0, unit:"px"});
  var sizeOut = dojo.animateProperty({ node: dijitObject.domNode, properties: { width: { end: 150 } }, easing: function(n){ return (n==0) ? 0 : Math.pow(2, 10 * (n - 1));}});
  //var wipeOut = dojo.fx.wipeOut({node: dijitObject.wipeNode, duration: dijitObject.duration, onEnd: function(){ dijitObject.hideNode.style.display="none";}});
  dojo.connect(dijitObject._wipeOut, "onEnd", function(){dojo.fx.chain([sizeOut, shiftOut]).play();});
}

function displayHighlights (items, request){
  var top = 38;
  if(items && items.length){
    dojo.forEach(items, function(item, idx) {
      var highlightNode = dojo.byId("highlight" + idx);
      var highlight = new dijit.TitlePane({title: item.title[0], id: "highlight" + idx, open: false, style: "top:" + top + "px", "class": "highlight"}, highlightNode);
      highlight.attr("content", item.content[0]);
      highlight.startup();
      top += 33;
    });
  }
  dojo.query("#highlights .dijitTitlePane").forEach(expandTitle);
  dojo.query("#highlights .dijitTitlePane").forEach(collapseTitle);
}

function highlightError(e) {
  alert("There was an error loading highlights: " + (e.cause ? e.cause.statusText : e.message));
}

dojo.addOnLoad(
  function() {
    var highlightsStore = new dojo.data.ItemFileReadStore({url: "highlights.json", urlPreventCache: true});
    highlightsStore.fetch({query:{highlight: true}, onComplete:displayHighlights, onError:highlightError, count:4});
  }
);
