
if("undefined"===typeof brodos){brodos={}}
brodos.localization={};
Ext.namespace("brodos.localization");brodos.localization.Localization=function(config){Ext.apply(this,config);this.addEvents('configexception');if(!this.translationArray&&!this.providerUrl){this.fireEvent('configexception',"Parameters are missing!");}
if(this.translationArray){this.store=new Ext.data.Store({proxy:new Ext.data.MemoryProxy(this.translationArray),reader:new Ext.data.ArrayReader({},[{name:'key'},{name:'value'}])});}
else{if(!this.providerUrl){this.fireEvent('configexception',"providerUrl's missing!");}
if(!this.subject){this.fireEvent('configexception',"Subject's missing!");}
if(!this.components){this.fireEvent('configexception',"Components are missing!");}
var dataQuery=new brodos.dsi.elements.DataQuery();var keyColumn=new brodos.dsi.elements.Column({name:'key'});var valueColumn=new brodos.dsi.elements.Column({name:'value'});var queryColumns=new Ext.util.MixedCollection();queryColumns.add(keyColumn);queryColumns.add(valueColumn);var queryDefinition=new brodos.dsi.elements.QueryDefinition({columns:queryColumns,subject:this.subject});var filters=queryDefinition.filterSettings;for(var i=0;i<this.components.length;i++){var filter=new brodos.dsi.elements.Filter({op1:'component',op2:this.components[i],operation:'EQUALS'});filters.add(filter);}
dataQuery.queryDefinitions.add(queryDefinition);var recordType=[{name:'key'},{name:'value'}];var oParams=new Object();oParams.action="getData";oParams.subject=this.subject;oParams.language=this.language;oParams.queryXml=dataQuery.createXml(true);this.store=new Ext.data.Store({proxy:new Ext.data.HttpProxy({url:this.providerUrl,method:"POST"}),reader:new brodos.dsi.reader.XmlResultReader({type:"rowData"},recordType),baseParams:oParams});}
if(this.exceptionHandler){this.store.on("loadexception",this.exceptionHandler.getException);}
this.store.on('load',function(){if(typeof brodos.translation=='object'){var trans=new Array();this.store.each(function(rec){trans[rec.get('key').toUpperCase()]=rec.get('value');});brodos.translation.set(trans);}},this);brodos.localization.Localization.superclass.constructor.call(this);};Ext.extend(brodos.localization.Localization,Ext.util.Observable,{load:function(){this.store.load({callback:this.callback});},getStringForKey:function(key){var index=this.store.findExact("key",key);if(index!=-1){return this.store.getAt(index).get("value");}
else{return key;}}});
