﻿
Ext.data.JayrockDataField=function(config){if(typeof config=="string"){config={name:config};}
Ext.apply(this,config);if(!this.type){this.type="auto";}
var st=Ext.data.SortTypes;if(typeof this.sortType=="string"){this.sortType=st[this.sortType];}
if(!this.sortType){switch(this.type){case"string":this.sortType=st.asUCString;break;case"date":this.sortType=st.asDate;break;default:this.sortType=st.none;}}
var stripRe=/[\$,%]/g;if(!this.convert){var cv,dateFormat=this.dateFormat;switch(this.type){case"":case"auto":case undefined:cv=function(v){return v;};break;case"string":cv=function(v){return(v===undefined||v===null)?'':String(v);};break;case"int":cv=function(v){return v!==undefined&&v!==null&&v!==''?parseInt(String(v).replace(stripRe,""),10):'';};break;case"float":cv=function(v){return v!==undefined&&v!==null&&v!==''?parseFloat(String(v).replace(stripRe,""),10):'';};break;case"bool":case"boolean":cv=function(v){return v===true||v==="true"||v==1;};break;case"date":cv=function(v){if(!v){return'';}
if(v instanceof Date){return v;}
if(dateFormat){if(dateFormat=="timestamp"){return new Date(v*1000);}
return Date.parseDate(v,dateFormat);}
var parsed=Date.parseISO(v);if(!parsed)
parsed=Date.parse(v);return parsed?new Date(parsed):null;};break;}
this.convert=cv;}};Ext.data.JayrockDataField.prototype=new Ext.data.Field({});Ext.extend(Ext.data.JayrockDataField,Ext.data.Field,{});Ext.data.JayrockDataRecord=function(data,id){Ext.data.JayrockDataRecord.superclass.constructor.call(this,data,id);};Ext.data.JayrockDataRecord.create=function(o){var f=function(){f.superclass.constructor.apply(this,arguments);};Ext.extend(f,Ext.data.JayrockDataRecord);var p=f.prototype;p.fields=new Ext.util.MixedCollection(false,function(field){return field.name;});for(var i=0,len=o.length;i<len;i++){p.fields.add(new Ext.data.JayrockDataField(o[i]));}
f.getField=function(name){return p.fields.get(name);};return f;};Ext.extend(Ext.data.JayrockDataRecord,Ext.data.Record,{});Ext.data.JayrockJsonReader=function(meta,recordType){Ext.data.JayrockJsonReader.superclass.constructor.call(this,meta,recordType);this.recordType=recordType instanceof Array?Ext.data.JayrockDataRecord.create(recordType):recordType;};Ext.extend(Ext.data.JayrockJsonReader,Ext.data.JsonReader,{read:function(o){var array;if(this.getRoot){array=this.getRoot(o);}else{var getRoot=this.meta.root?this.getJsonAccessor(this.meta.root):function(p){return p;};array=getRoot(o);}
for(var i=0;i<array.length;i++){if(array[i]==null){array.splice(i,1);}}
return this.readRecords(o);}});