1 /**
  2  * @author Dennis Verhoeven <dennis@vivesta.com>
  3  * @package Banana.Controls
  4  * @summary Date span control
  5  */
  6 
  7 goog.provide('Banana.Controls.DataControls.DateSpan');
  8 
  9 goog.require('Banana.Controls.DataControls.DataControl');
 10 
 11 /** @namespace Banana.Controls.DateSpan */
 12 namespace('Banana.Controls').DateSpan = Banana.Controls.DataControl.extend(
 13 /** @lends Banana.Controls.DateSpan.prototype */
 14 {
 15 	/**
 16 	 * Creates a datespan control. 
 17 	 * @constructs
 18 	 */
 19 	init : function()
 20 	{
 21 		this._super();
 22 	
 23 		this.addCssClass('BDateSpan');
 24 		
 25 		this.amount = new Banana.Controls.DropDown()
 26 			.setDataSource({
 27 				'1'  :  '1',
 28 				'2'  :  '2',
 29 				'3'  :  '3',
 30 				'4'  :  '4',
 31 				'5'  :  '5',
 32 				'6'  :  '6',
 33 				'7'  :  '7',
 34 				'8'  :  '8',
 35 				'9'  :  '9',
 36 				'10' : '10'
 37 			})
 38 			.setStyle('width:45px;margin-right:4px;')
 39 			.bind('dataChanged',this.getProxy(function(e)
 40 			{
 41 				var suffix = (this.amount.getData()>1 ? 's' : '');
 42 				var source = {
 43 						'days' : 'day'+suffix,
 44 						'weeks' : 'week'+suffix,
 45 						'months' : 'month'+suffix
 46 				};
 47 				this.unit.setDataSource(source);
 48 			}));
 49 			
 50 		this.addControl(this.amount);		
 51 	
 52 		this.unit = new Banana.Controls.DropDown()
 53 			.setStyle('width:80px;');
 54 		this.addControl(this.unit);
 55 		this.setData('1 day');
 56 	},
 57 	
 58 	/**
 59 	 * @override
 60 	 */
 61 	setData : function(data,ignoreEvent,ignoreDom)
 62 	{
 63 		if (!data) return;
 64 		
 65 		var parts=data.split(' ');
 66 		this.amount.setData(parts[0]);
 67 		this.unit.setData(parts[1]);
 68 		
 69 		return this;
 70 	},
 71 	
 72 	/**
 73 	 * @return {String}
 74 	 */
 75 	getData : function()
 76 	{
 77 		return this.amount.getData()+' '+this.unit.getData();
 78 	}
 79 });