         }
         return attributes
     }
-    
+    /// Returns the layout attributes for the item at the specified index path. A layout attributes object containing the information to apply to the item’s cell.
     override  public func layoutAttributesForItemAtIndexPath(indexPath: NSIndexPath) -> UICollectionViewLayoutAttributes? {
         let attr = UICollectionViewLayoutAttributes(forCellWithIndexPath: indexPath)
         applyLayoutAttributes(attr)

        self.minimumInteritemSpacing = 0
        self.minimumLineSpacing = 0
    }
    
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    
    public override func prepareLayout() {
        numberOfRows = self.delegate!.numberOfRows()
        numberOfColumns = self.delegate!.numberOfColumns()
    }
    
    override public func layoutAttributesForElementsInRect(rect: CGRect) -> [UICollectionViewLayoutAttributes]? {
        // Determine how many columns needs to be displayed
        let requestedWidth = rect.width

    var pathForFocusItem: NSIndexPath {get set}
    func targetContentOffsetForProposedContentOffset(proposedContentOffset: CGPoint) -> CGPoint
}
/// Base class for the Horizontal layout
public class JTAppleCalendarBaseFlowLayout: UICollectionViewLayout, JTAppleCalendarLayoutProtocol {
    var itemSize: CGSize = CGSizeZero
    var headerReferenceSize: CGSize = CGSizeZero
