/*
	Copyright (c) 2006-2010, ePages GmbH
	All Rights Reserved.
*/
dojo.provide("epages.cartridges.de_epages.mediagallery.widget.GallerySizeUsage");
dojo.require('epages.widget.LocalizedWidget');
dojo.require("dojo.number");

dojo.declare(
	"epages.cartridges.de_epages.mediagallery.widget.GallerySizeUsage",
	[epages.widget.LocalizedWidget],
	{
		/**
		 * public properties
		 */
		maxGallerySize         : 0.0,
		currentGallerySize     : 0.0,
		unitString             : 'MB',
		usageTextClass         : undefined,

		/**
		 * widget properties
		 */
		percentageClass        : 'PercentageNormal',
		templatePath           : dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget','templates/GallerySizeUsage.html'),
		translationName        : dojo.moduleUrl('epages.cartridges.de_epages.mediagallery.widget','templates/translation'),

		postCreate: function() {
			this.inherited("postCreate", arguments);
			dojo.subscribe(this.id+'/updateCurrentBytes', this, 'updateCurrentBytes');
		},

		updateUsage : function(/* Object */ usageData) {
		 // summary: Write gallery usage data to class members and update widget.
			this.maxGallerySize     = parseFloat(usageData.maxGallerySize);
			this.currentGallerySize = parseFloat(usageData.currentGallerySize);
			this._updateWidget();
		},

		updateCurrentBytes : function (/* Integer */ kilobytes) {
		 // summary: Change the current gallery usage and update the widget.
			this.currentGallerySize = parseFloat(kilobytes);
			this._updateWidget();
		},

		_updateWidget : function() {
		 // summary: Compose strings with usage percentage, max gallery size and current gallery size
		 //   and update the widget's template attach points.
			var percentage = 100 * this.currentGallerySize / this.maxGallerySize;
			if(percentage > 100) {
				percentage = 100.0;
			}
			var tmpCurrentSize = this.currentGallerySize;
			var tmpMaxSize = this.maxGallerySize;
			if(tmpCurrentSize > tmpMaxSize) {
				tmpCurrentSize = tmpMaxSize;
			}
			var displayPercentageNoDec = dojo.number.round(percentage, 0).toString() + '%';

			var displayCurrentValue = dojo.number.round(tmpCurrentSize/1024,0).toString();
			var displayMaxValue = dojo.number.round(tmpMaxSize/1024,0).toString();
			var displayFreeMemory = dojo.number.round((tmpMaxSize - tmpCurrentSize)/1024,0).toString();

			if(percentage > 90.0) {
				this.percentageClass = 'PercentageCritical';
			} else if(percentage > 60.0) {
				this.percentageClass = 'PercentageMiddle';
			} else {
				this.percentageClass = 'PercentageNormal';
			}

			dojo.attr(this.percentageClassNode, 'class', this.percentageClass);
			dojo.attr(this.percentageClassNode, 'style', { 'width' : displayPercentageNoDec });

			if(this.usageTextClass != undefined) {
				dojo.removeClass(this.usageText);
				dojo.addClass(this.usageText, this.usageTextClass);
			}
			this.statusBar.title = this.translate('TotalMemory') + ': ' + displayMaxValue + ' ' + this.unitString + ' / ' + this.translate('UsedMemory') + ': ' + displayCurrentValue + ' ' + this.unitString;
			this.usageTextPercentage.innerHTML = displayPercentageNoDec + ' ';
			this.usageText.innerHTML = this.translate('FreeMemory')+ ': ' + displayFreeMemory + ' ' + this.unitString;
		}

});