
function BufferItem(pType,pCollection,pObject)
{
this.object = pObject;
this.collection = pCollection;
this.type = pType; 
this.values = new Array();
}
function Buffer(){}
Buffer.items = new Array();
Buffer.temp = new Array();
Buffer.add = function(pType,pDataString,pCollection,pObjClass,pIsCollection)
{
switch(pType)
{
case "objArr":
Buffer.addObjArr(pType,pDataString,pCollection,pObjClass,pIsCollection);
break;
case "objObj":
Buffer.addObjObj(pType,pDataString,pCollection,pObjClass,pIsCollection);
break;
case "string":
Buffer.addString(pType,pDataString,pCollection);
break;
default:
error("Type: "+pType+" doesn't have a matching.\n"
+"\npType: "+pType
+"\npCollection: "+pCollection
+"\npObjClass: "+pObjClass
+"\npIsCollection: "+pIsCollection
+"\npDataString: "+pDataString
,"Buffer.add");
}
}
Buffer.addObjArr = function(pType,pDataString,pCollection,pObjClass,pIsCollection)
{
var i;
var found=false;
var p;
var type=pType;
var isCollection=pIsCollection;
var objClass=pObjClass;
var obj;
for(i=0;i<Buffer.items.length;i++)
{
if(typeof Buffer.items[i]=="object"&&Buffer.items[i].collection==pCollection)
{
found=true;
p = new Parser(); if(pObjClass=="Array"){
obj=pDataString;
for (var i=0;i<obj.length;i++) {
obj[i] = p.changeChars(obj[i]);
}
}else {
if (objClass != "Ingrediente2") {
}
if(pObjClass=="Object" && pDataString!="" &&!pDataString[0].length){
obj=p.createInstances(pDataString, objClass, 0);
}else {
obj=new Array();
if (typeof objClass=="string") {
if (typeof window[objClass]=="undefined") {
alert("Carregando script...Pronto!\n\nContinua...");
}
}
obj=p.createInstances(pDataString, objClass, 0,"Buffer");
}
}
if(isCollection)
{
}else{
}
if(isCollection!="append"){
Buffer.remove(i, obj);
}
Buffer.append(i, obj);
}
}
if (!found)
{
Buffer.addCollection(pType,pCollection,objClass);
Buffer.addObjArr(pType,pDataString,pCollection,pObjClass,pIsCollection);
}
}
Buffer.getRefById = function(pCollection, pInstance)
{
var i,j,same=false;
for(i=0;i<Buffer.items.length;i++)
if(Buffer.items[i].collection==pCollection)
for(j=0;j<Buffer.items[i].values.length;j++)
{
same = Buffer.sameKeys(Buffer.items[i].values[j],pInstance);
if(same)
{
return Buffer.items[i].values[j];
}
same=false;
}
return -1;
}
Buffer.getRefByCollection = function(pCollection)
{
var i,j;
for(i=0;i<Buffer.items.length;i++)
{
if(typeof Buffer.items[i]=="object"&&Buffer.items[i].collection==pCollection)
return Buffer.items[i].values;
}
return -1;
}
Buffer.getItemById = function(pCollection){
return Buffer.getRefByCollection(pCollection);
}
Buffer.getCollectionIndex= function(pCollection){
for(i=0;i<Buffer.items.length;i++){
if(Buffer.items[i].collection==pCollection)
return i;
}
return -1;
}
Buffer.getCollectionLength= function(pCollection){
for(i=0;i<Buffer.items.length;i++){
if(Buffer.items[i].collection==pCollection)
return Buffer.items[i].values.length;
}
return -1;
}
Buffer.getProperty = function(pCollIndex,pInd,pProp)
{
return Buffer.items[pCollIndex].values[pInd][pProp];
}
Buffer.setProperty = function(pCollIndex,pInd,pProp,pValue)
{
Buffer.items[pCollIndex].values[pInd][pProp]=pValue;
}
Buffer.removeCollection = function(pCollection)
{
for(var i=Buffer.items.length-1;i>=0;i--) {
if(typeof Buffer.items[i]=="object"&&Buffer.items[i].collection==pCollection) {
Buffer.items.splice(i,1);
return true;
}
}
return false;
}
Buffer.removeClass = function(pClass)
{
var i;
for(i=Buffer.items.length-1;i>=0;i--)
if(Buffer.items[i].object==pClass)
{
Buffer.items.splice(i,1);
return true;
}
return false;
}
Buffer.addCollection = function(pType,pCollection,pClass)
{
var len=Buffer.items.length;
Buffer.items[len]=new BufferItem(pType,pCollection,pClass);
}
Buffer.append = function(pIndex, pObjects)
{
var i;
var startIndex=Buffer.items[pIndex].values.length;
for(i=0;i<pObjects.length;i++)
{
Buffer.items[pIndex].values[startIndex]=pObjects[i];
startIndex++;
}
}
Buffer.replace = function(pIndex, pObjects)
{
var i,j;
for(i=0;i<Buffer.items[pIndex].values.length;i++)
for(j=pObjects.length-1;j>=0;j--)
if(Buffer.sameKeys(Buffer.items[pIndex].values[i],pObjects[j]))
Buffer.items[pIndex].values[i]=pObjects.splice(j,1);
Buffer.append(pIndex, pObjects);
}
Buffer.updateAll = function(pIndex, pObjects)
{
var i,j;
for(i=0;i<Buffer.items[pIndex].values.length;i++)
for(j=pObjects.length;j>=0;j--)
for(prop in Buffer.items[pIndex].values[i])
Buffer.items[pIndex].values[i][prop]=pObjects[j][prop];
}
Buffer.sameKeys = function(pObj1,pObj2)
{
var i=0,j;
var prop;
for(prop in pObj1)
{
if(prop.slice(0,2)=="id")
{
if(pObj1[prop]!=pObj2[prop])
return false;
j++;
}
i++;
}
if((i==0)||(j==0))
return false;
return true;
}
Buffer.remove = function(pIndex, pObjects)
{
Buffer.items[pIndex].values=[];
}
Buffer.getSize = function()
{
var i;
var str="";
var p=new Parser();
for(i=0;i<Buffer.items.length;i++)
for(j=0;i<Buffer.items[i].values.length;j++)
for(prop in Buffer.items[i].values[j])
if(typeof Buffer.items[i].values[j][prop]=="object")
{
str+=p.getString(Buffer.items[i].values[j][prop]);
}else{
str+=Buffer.items[i].values[j][prop];
}
return str.length;
}
