Ext.namespace ('fcbm.model');

fcbm.model.Numeration = function () {

	return {
		elements: new Array(),
		
		parseJSON: function(jsonObject){
			for (var i = 0; i < jsonObject.length; i++) {
				var cur = jsonObject[i];
				this.elements.push({
					name: cur.id,
					value: parseFloat(cur._text)
				});
			}
		},
		
		getNumerationArray: function(){
			return this.elements;
		},
		
		getData: function () {
			var tab = new fcbm.i18n.Numeration().getTranslationArray();
			var data = [];
			
			for (var i = 0; i < this.elements.length; i++) {
				var cur = this.elements[i];
				for (var j = 0; j < tab.length; j++) {
					var curRef = tab[j];
					if (cur.name == curRef.nameRef) {
						data.push([j, curRef.name, cur.value, curRef.unit, curRef.cat]);
						break;
					}
				}
			}
			
			return data;
		},
		
		getDataStore: function(){

			var data = this.getData();
			
			var ds = new Ext.data.GroupingStore({
				proxy: new Ext.data.MemoryProxy(data),
				reader: new Ext.data.ArrayReader(
					{}, 
					[
						{name: 'idx1'},
						{name: 'name1'},
						{name: 'value1'},
						{name: 'unit1'},
						{name: 'cat1'},
					]
				),
				sortInfo:{field: 'idx1', direction: "ASC"},
	            groupField:'cat1'
			});
			ds.load();
			
			return ds;
		},
		
		getDataStoreSolution: function () {
			var data = this.getData();
			
			data.sort(function (a,b){
				return (parseInt(a[0]) > parseInt(b[0]) ? 1 : -1);
			});
			
			var data2col = new Array();
			var tempRow = new Array();
			for (var i=0; i<data.length; i++) {
				for (var j=0; j<data[i].length; j++) {
					tempRow.push(data[i][j]);
				}
				if (i % 2 != 0) {
					data2col.push(tempRow);
					var tempRow = [];					
				}
			}
			
			var ds = new Ext.data.Store({
				proxy: new Ext.data.MemoryProxy(data2col),
				reader: new Ext.data.ArrayReader(
					{}, 
					[
						{name: 'idx1'},
						{name: 'name1'},
						{name: 'value1'},
						{name: 'unit1'},
						{name: 'cat1'},
						{name: 'idx2'},
						{name: 'name2'},
						{name: 'value2'},
						{name: 'unit2'},
						{name: 'cat2'}
					]
				)
			});
			ds.load();
			
			return ds;
		},
		
		getGBValue: function () {
			for (var i = 0; i < this.elements.length; i++) {
				if (this.elements[i].name == 'GB')
					return this.elements[i].value;
			}
		}
	}
};
