Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,203 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.BinaryTree"); +dojo.require("dojo.collections.Collections"); +dojo.require("dojo.experimental"); + +dojo.experimental("dojo.collections.BinaryTree"); + +dojo.collections.BinaryTree=function(data){ + function node(data, rnode, lnode){ + this.value=data||null; + this.right=rnode||null; + this.left=lnode||null; + this.clone=function(){ + var c=new node(); + if (this.value.value) c.value=this.value.clone(); + else c.value=this.value; + if (this.left) c.left=this.left.clone(); + if (this.right) c.right=this.right.clone(); + } + this.compare=function(n){ + if (this.value > n.value) return 1; + if (this.value < n.value) return -1; + return 0; + } + this.compareData=function(d){ + if (this.value > d) return 1; + if (this.value < d) return -1; + return 0; + } + } + + function inorderTraversalBuildup(current, a){ + if (current){ + inorderTraversalBuildup(current.left, a); + a.add(current); + inorderTraversalBuildup(current.right, a); + } + } + + function preorderTraversal(current, sep){ + var s=""; + if (current){ + s=current.value.toString() + sep; + s += preorderTraversal(current.left, sep); + s += preorderTraversal(current.right, sep); + } + return s; + } + function inorderTraversal(current, sep){ + var s=""; + if (current){ + s=inorderTraversal(current.left, sep); + s += current.value.toString() + sep; + s += inorderTraversal(current.right, sep); + } + return s; + } + function postorderTraversal(current, sep){ + var s=""; + if (current){ + s=postorderTraversal(current.left, sep); + s += postorderTraversal(current.right, sep); + s += current.value.toString() + sep; + } + return s; + } + + function searchHelper(current, data){ + if (!current) return null; + var i=current.compareData(data); + if (i==0) return current; + if (i>0) return searchHelper(current.left, data); + else return searchHelper(current.right, data); + } + + this.add=function(data){ + var n=new node(data); + var i; + var current=root; + var parent=null; + while (current){ + i=current.compare(n); + if (i == 0) return; + parent=current; + if (i > 0) current=current.left; + else current=current.right; + } + this.count++; + if (!parent) root=n; + else { + i=parent.compare(n); + if (i > 0) parent.left=n; + else parent.right=n; + } + }; + this.clear=function(){ + root=null; + this.count=0; + }; + this.clone=function(){ + var c=new dojo.collections.BinaryTree(); + c.root=root.clone(); + c.count=this.count; + return c; + }; + this.contains=function(data){ + return this.search(data) != null; + }; + this.deleteData=function(data){ + var current=root; + var parent=null; + var i=current.compareData(data); + while (i != 0 && current != null){ + if (i > 0){ + parent=current; + current=current.left; + } else if (i < 0) { + parent=current; + current=current.right; + } + i=current.compareData(data); + } + if (!current) return; + this.count--; + if (!current.right) { + if (!parent) root=current.left; + else { + i=parent.compare(current); + if (i > 0) parent.left=current.left; + else if (i < 0) parent.right=current.left; + } + } else if (!current.right.left){ + if (!parent) root=current.right; + else { + i=parent.compare(current); + if (i > 0) parent.left=current.right; + else if (i < 0) parent.right=current.right; + } + } else { + var leftmost=current.right.left; + var lmParent=current.right; + while (leftmost.left != null){ + lmParent=leftmost; + leftmost=leftmost.left; + } + lmParent.left=leftmost.right; + leftmost.left=current.left; + leftmost.right=current.right; + if (!parent) root=leftmost; + else { + i=parent.compare(current); + if (i > 0) parent.left=leftmost; + else if (i < 0) parent.right=leftmost; + } + } + }; + this.getIterator=function(){ + var a=[]; + inorderTraversalBuildup(root, a); + return new dojo.collections.Iterator(a); + }; + this.search=function(data){ + return searchHelper(root, data); + }; + this.toString=function(order, sep){ + if (!order) var order=dojo.collections.BinaryTree.TraversalMethods.Inorder; + if (!sep) var sep=" "; + var s=""; + switch (order){ + case dojo.collections.BinaryTree.TraversalMethods.Preorder: + s=preorderTraversal(root, sep); + break; + case dojo.collections.BinaryTree.TraversalMethods.Inorder: + s=inorderTraversal(root, sep); + break; + case dojo.collections.BinaryTree.TraversalMethods.Postorder: + s=postorderTraversal(root, sep); + break; + }; + if (s.length == 0) return ""; + else return s.substring(0, s.length - sep.length); + }; + + this.count=0; + var root=this.root=null; + if (data) { + this.add(data); + } +} +dojo.collections.BinaryTree.TraversalMethods={ + Preorder : 1, + Inorder : 2, + Postorder : 3 +}; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/BinaryTree.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,124 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Collections"); + +dojo.collections.DictionaryEntry=function(/* string */k, /* object */v){ + // summary + // return an object of type dojo.collections.DictionaryEntry + this.key=k; + this.value=v; + this.valueOf=function(){ + return this.value; // object + }; + this.toString=function(){ + return String(this.value); // string + }; +} + +/* Iterators + * The collections.Iterators (Iterator and DictionaryIterator) are built to + * work with the Collections included in this module. However, they *can* + * be used with arrays and objects, respectively, should one choose to do so. + */ +dojo.collections.Iterator=function(/* array */arr){ + // summary + // return an object of type dojo.collections.Iterator + var a=arr; + var position=0; + this.element=a[position]||null; + this.atEnd=function(){ + // summary + // Test to see if the internal cursor has reached the end of the internal collection. + return (position>=a.length); // bool + }; + this.get=function(){ + // summary + // Test to see if the internal cursor has reached the end of the internal collection. + if(this.atEnd()){ + return null; // object + } + this.element=a[position++]; + return this.element; // object + }; + this.map=function(/* function */fn, /* object? */scope){ + // summary + // Functional iteration with optional scope. + var s=scope||dj_global; + if(Array.map){ + return Array.map(a,fn,s); // array + }else{ + var arr=[]; + for(var i=0; i<a.length; i++){ + arr.push(fn.call(s,a[i])); + } + return arr; // array + } + }; + this.reset=function(){ + // summary + // reset the internal cursor. + position=0; + this.element=a[position]; + }; +} + +/* Notes: + * The DictionaryIterator no longer supports a key and value property; + * the reality is that you can use this to iterate over a JS object + * being used as a hashtable. + */ +dojo.collections.DictionaryIterator=function(/* object */obj){ + // summary + // return an object of type dojo.collections.DictionaryIterator + var a=[]; // Create an indexing array + var testObject={}; + for(var p in obj){ + if(!testObject[p]){ + a.push(obj[p]); // fill it up + } + } + var position=0; + this.element=a[position]||null; + this.atEnd=function(){ + // summary + // Test to see if the internal cursor has reached the end of the internal collection. + return (position>=a.length); // bool + }; + this.get=function(){ + // summary + // Test to see if the internal cursor has reached the end of the internal collection. + if(this.atEnd()){ + return null; // object + } + this.element=a[position++]; + return this.element; // object + }; + this.map=function(/* function */fn, /* object? */scope){ + // summary + // Functional iteration with optional scope. + var s=scope||dj_global; + if(Array.map){ + return Array.map(a,fn,s); // array + }else{ + var arr=[]; + for(var i=0; i<a.length; i++){ + arr.push(fn.call(s,a[i])); + } + return arr; // array + } + }; + this.reset=function() { + // summary + // reset the internal cursor. + position=0; + this.element=a[position]; + }; +}; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Collections.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,129 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Dictionary"); +dojo.require("dojo.collections.Collections"); + +dojo.collections.Dictionary=function(/* dojo.collections.Dictionary? */dictionary){ + // summary + // Returns an object of type dojo.collections.Dictionary + var items={}; + this.count=0; + + // comparator for property addition and access. + var testObject={}; + + this.add=function(/* string */k, /* object */v){ + // summary + // Add a new item to the Dictionary. + var b=(k in items); + items[k]=new dojo.collections.DictionaryEntry(k,v); + if(!b){ + this.count++; + } + }; + this.clear=function(){ + // summary + // Clears the internal dictionary. + items={}; + this.count=0; + }; + this.clone=function(){ + // summary + // Returns a new instance of dojo.collections.Dictionary; note the the dictionary is a clone but items might not be. + return new dojo.collections.Dictionary(this); // dojo.collections.Dictionary + }; + this.contains=this.containsKey=function(/* string */k){ + // summary + // Check to see if the dictionary has an entry at key "k". + if(testObject[k]){ + return false; // bool + } + return (items[k]!=null); // bool + }; + this.containsValue=function(/* object */v){ + // summary + // Check to see if the dictionary has an entry with value "v". + var e=this.getIterator(); + while(e.get()){ + if(e.element.value==v){ + return true; // bool + } + } + return false; // bool + }; + this.entry=function(/* string */k){ + // summary + // Accessor method; similar to dojo.collections.Dictionary.item but returns the actual Entry object. + return items[k]; // dojo.collections.DictionaryEntry + }; + this.forEach=function(/* function */ fn, /* object? */ scope){ + // summary + // functional iterator, following the mozilla spec. + var a=[]; // Create an indexing array + for(var p in items) { + if(!testObject[p]){ + a.push(items[p]); // fill it up + } + } + var s=scope||dj_global; + if(Array.forEach){ + Array.forEach(a, fn, s); + }else{ + for(var i=0; i<a.length; i++){ + fn.call(s, a[i], i, a); + } + } + }; + this.getKeyList=function(){ + // summary + // Returns an array of the keys in the dictionary. + return (this.getIterator()).map(function(entry){ + return entry.key; + }); // array + }; + this.getValueList=function(){ + // summary + // Returns an array of the values in the dictionary. + return (this.getIterator()).map(function(entry){ + return entry.value; + }); // array + }; + this.item=function(/* string */k){ + // summary + // Accessor method. + if(k in items){ + return items[k].valueOf(); // object + } + return undefined; // object + }; + this.getIterator=function(){ + // summary + // Gets a dojo.collections.DictionaryIterator for iteration purposes. + return new dojo.collections.DictionaryIterator(items); // dojo.collections.DictionaryIterator + }; + this.remove=function(/* string */k){ + // summary + // Removes the item at k from the internal collection. + if(k in items && !testObject[k]){ + delete items[k]; + this.count--; + return true; // bool + } + return false; // bool + }; + + if (dictionary){ + var e=dictionary.getIterator(); + while(e.get()) { + this.add(e.element.key, e.element.value); + } + } +}; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Dictionary.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,153 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Graph"); +dojo.require("dojo.collections.Collections"); + +dojo.experimental("dojo.collections.Graph"); + +dojo.collections.Graph=function(nodes){ + function node(key, data, neighbors) { + this.key=key; + this.data=data; + this.neighbors=neighbors||new adjacencyList(); + this.addDirected=function(){ + if (arguments[0].constructor==edgeToNeighbor){ + this.neighbors.add(arguments[0]); + }else{ + var n=arguments[0]; + var cost=arguments[1]||0; + this.neighbors.add(new edgeToNeighbor(n, cost)); + } + } + } + function nodeList(){ + var d=new dojo.collections.Dictionary(); + function nodelistiterator(){ + var o=[] ; // Create an indexing array + var e=d.getIterator(); + while(e.get()){ + o[o.length]=e.element; + } + + var position=0; + this.element=o[position]||null; + this.atEnd=function(){ + return (position>=o.length); + } + this.get=function(){ + if(this.atEnd()){ + return null; // object + } + this.element=o[position++]; + return this.element; // object + }; + this.map=function(/* function */fn, /* object? */scope){ + var s=scope||dj_global; + if(Array.map){ + return Array.map(o,fn,s); // array + }else{ + var arr=[]; + for(var i=0; i<o.length; i++){ + arr.push(fn.call(s,o[i])); + } + return arr; // array + } + }; + this.reset=function(){ + position=0; + this.element=o[position]; + }; + } + + this.add=function(node){ + d.add(node.key, node); + }; + this.clear=function(){ + d.clear(); + }; + this.containsKey=function(key){ + return d.containsKey(key); + }; + this.getIterator=function(){ + return new nodelistiterator(this); + }; + this.item=function(key){ + return d.item(key); + }; + this.remove=function(node){ + d.remove(node.key); + }; + } + function edgeToNeighbor(node, cost){ + this.neighbor=node; + this.cost=cost; + } + function adjacencyList(){ + var d=[]; + this.add=function(o){ + d.push(o); + }; + this.item=function(i){ + return d[i]; + }; + this.getIterator=function(){ + return new dojo.collections.Iterator([].concat(d)); + }; + } + + this.nodes=nodes||new nodeList(); + this.count=this.nodes.count; + this.clear=function(){ + this.nodes.clear(); + this.count=0; + }; + this.addNode=function(){ + var n=arguments[0]; + if(arguments.length > 1){ + n=new node(arguments[0],arguments[1]); + } + if(!this.nodes.containsKey(n.key)){ + this.nodes.add(n); + this.count++; + } + }; + this.addDirectedEdge=function(uKey, vKey, cost){ + var uNode,vNode; + if(uKey.constructor!= node){ + uNode=this.nodes.item(uKey); + vNode=this.nodes.item(vKey); + }else{ + uNode=uKey; + vNode=vKey; + } + var c=cost||0; + uNode.addDirected(vNode,c); + }; + this.addUndirectedEdge=function(uKey, vKey, cost){ + var uNode, vNode; + if(uKey.constructor!=node){ + uNode=this.nodes.item(uKey); + vNode=this.nodes.item(vKey); + }else{ + uNode=uKey; + vNode=vKey; + } + var c=cost||0; + uNode.addDirected(vNode,c); + vNode.addDirected(uNode,c); + }; + this.contains=function(n){ + return this.nodes.containsKey(n.key); + }; + this.containsKey=function(k){ + return this.nodes.containsKey(k); + }; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Graph.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,87 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Queue"); +dojo.require("dojo.collections.Collections"); + +dojo.collections.Queue=function(/* array? */arr){ + // summary + // return an object of type dojo.collections.Queue + var q=[]; + if (arr){ + q=q.concat(arr); + } + this.count=q.length; + this.clear=function(){ + // summary + // clears the internal collection + q=[]; + this.count=q.length; + }; + this.clone=function(){ + // summary + // creates a new Queue based on this one + return new dojo.collections.Queue(q); // dojo.collections.Queue + }; + this.contains=function(/* object */ o){ + // summary + // Check to see if the passed object is an element in this queue + for(var i=0; i<q.length; i++){ + if (q[i]==o){ + return true; // bool + } + } + return false; // bool + }; + this.copyTo=function(/* array */ arr, /* int */ i){ + // summary + // Copy the contents of this queue into the passed array at index i. + arr.splice(i,0,q); + }; + this.dequeue=function(){ + // summary + // shift the first element off the queue and return it + var r=q.shift(); + this.count=q.length; + return r; // object + }; + this.enqueue=function(/* object */ o){ + // summary + // put the passed object at the end of the queue + this.count=q.push(o); + }; + this.forEach=function(/* function */ fn, /* object? */ scope){ + // summary + // functional iterator, following the mozilla spec. + var s=scope||dj_global; + if(Array.forEach){ + Array.forEach(q, fn, s); + }else{ + for(var i=0; i<q.length; i++){ + fn.call(s, q[i], i, q); + } + } + }; + this.getIterator=function(){ + // summary + // get an Iterator based on this queue. + return new dojo.collections.Iterator(q); // dojo.collections.Iterator + }; + this.peek=function(){ + // summary + // get the next element in the queue without altering the queue. + return q[0]; + }; + this.toArray=function(){ + // summary + // return an array based on the internal array of the queue. + return [].concat(q); + }; +}; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Queue.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,94 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Set"); +dojo.require("dojo.collections.Collections"); +dojo.require("dojo.collections.ArrayList"); + +dojo.collections.Set = new function(){ + // summary + // Singleton for dealing with common set operations. + this.union = function(/* array */setA, /* array */setB){ + // summary + // Return the union of the two passed sets. + if (setA.constructor == Array) var setA = new dojo.collections.ArrayList(setA); + if (setB.constructor == Array) var setB = new dojo.collections.ArrayList(setB); + if (!setA.toArray || !setB.toArray) dojo.raise("Set operations can only be performed on array-based collections."); + var result = new dojo.collections.ArrayList(setA.toArray()); + var e = setB.getIterator(); + while(!e.atEnd()){ + var item=e.get(); + if(!result.contains(item)){ + result.add(item); + } + } + return result; // dojo.collections.ArrayList + }; + this.intersection = function(/* array */setA, /* array */setB){ + // summary + // Return the intersection of the two passed sets. + if (setA.constructor == Array) var setA = new dojo.collections.ArrayList(setA); + if (setB.constructor == Array) var setB = new dojo.collections.ArrayList(setB); + if (!setA.toArray || !setB.toArray) dojo.raise("Set operations can only be performed on array-based collections."); + var result = new dojo.collections.ArrayList(); + var e = setB.getIterator(); + while(!e.atEnd()){ + var item=e.get(); + if(setA.contains(item)){ + result.add(item); + } + } + return result; // dojo.collections.ArrayList + }; + this.difference = function(/* array */setA, /* array */setB){ + // summary + // Returns everything in setA that is not in setB. + if (setA.constructor == Array) var setA = new dojo.collections.ArrayList(setA); + if (setB.constructor == Array) var setB = new dojo.collections.ArrayList(setB); + if (!setA.toArray || !setB.toArray) dojo.raise("Set operations can only be performed on array-based collections."); + var result = new dojo.collections.ArrayList(); + var e=setA.getIterator(); + while(!e.atEnd()){ + var item=e.get(); + if(!setB.contains(item)){ + result.add(item); + } + } + return result; // dojo.collections.ArrayList + }; + this.isSubSet = function(/* array */setA, /* array */setB) { + // summary + // Returns if set B is a subset of set A. + if (setA.constructor == Array) var setA = new dojo.collections.ArrayList(setA); + if (setB.constructor == Array) var setB = new dojo.collections.ArrayList(setB); + if (!setA.toArray || !setB.toArray) dojo.raise("Set operations can only be performed on array-based collections."); + var e = setA.getIterator(); + while(!e.atEnd()){ + if(!setB.contains(e.get())){ + return false; // boolean + } + } + return true; // boolean + }; + this.isSuperSet = function(/* array */setA, /* array */setB){ + // summary + // Returns if set B is a superset of set A. + if (setA.constructor == Array) var setA = new dojo.collections.ArrayList(setA); + if (setB.constructor == Array) var setB = new dojo.collections.ArrayList(setB); + if (!setA.toArray || !setB.toArray) dojo.raise("Set operations can only be performed on array-based collections."); + var e = setB.getIterator(); + while(!e.atEnd()){ + if(!setA.contains(e.get())){ + return false; // boolean + } + } + return true; // boolean + }; +}(); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Set.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,149 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.SkipList"); +dojo.require("dojo.collections.Collections"); +dojo.require("dojo.experimental"); + +dojo.experimental("dojo.collections.SkipList"); + +dojo.collections.SkipList = function(){ + function node(height, val){ + this.value = val; + this.height = height; + this.nodes = new nodeList(height); + this.compare = function(val){ + if (this.value > val) return 1; + if (this.value < val) return -1; + return 0; + } + this.incrementHeight = function(){ + this.nodes.incrementHeight(); + this.height++; + }; + this.decrementHeight = function(){ + this.nodes.decrementHeight(); + this.height--; + }; + } + function nodeList(height){ + var arr = []; + this.height = height; + for (var i = 0; i < height; i++) arr[i] = null; + this.item = function(i){ + return arr[i]; + }; + this.incrementHeight = function(){ + this.height++; + arr[this.height] = null; + }; + this.decrementHeight = function(){ + arr.splice(arr.length - 1, 1); + this.height--; + }; + } + function iterator(list){ + this.element = list.head; + this.atEnd = function(){ + return (this.element==null); + } + this.get = function(){ + if(this.atEnd()){ + return null; + } + this.element=this.element.nodes[0]; + return this.element; + } + this.reset = function(){ + this.element = list.head; + } + } + + function chooseRandomHeight(max){ + var level = 1; + while (Math.random() < PROB && level < max) level++; + return level; + } + + var PROB = 0.5; + var comparisons = 0; + + this.head = new node(1); + this.count = 0; + this.add = function(val){ + var updates = []; + var current = this.head; + for (var i = this.head.height; i >= 0; i--){ + if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) comparisons++; + while (current.nodes[i] != null && current.nodes[i].compare(val) < 0){ + current = current.nodes[i]; + comparisons++; + } + updates[i] = current; + } + if (current.nodes[0] != null && current.nodes[0].compare(val) == 0) return; + var n = new node(val, chooseRandomHeight(this.head.height + 1)); + this.count++; + if (n.height > this.head.height){ + this.head.incrementHeight(); + this.head.nodes[this.head.height - 1] = n; + } + for (i = 0; i < n.height; i++){ + if (i < updates.length) { + n.nodes[i] = updates[i].nodes[i]; + updates[i].nodes[i] = n; + } + } + }; + + this.contains = function(val){ + var current = this.head; + var i; + for (i = this.head.height - 1; i >= 0; i--) { + while (current.item(i) != null) { + comparisons++; + var result = current.nodes[i].compare(val); + if (result == 0) return true; + else if (result < 0) current = current.nodes[i]; + else break; + } + } + return false; + }; + this.getIterator = function(){ + return new iterator(this); + }; + + this.remove = function(val){ + var updates = []; + var current = this.head; + for (var i = this.head.height - 1; i >= 0; i--){ + if (!(current.nodes[i] != null && current.nodes[i].compare(val) < 0)) comparisons++; + while (current.nodes[i] != null && current.nodes[i].compare(val) < 0) { + current = current.nodes[i]; + comparisons++; + } + updates[i] = current; + } + + current = current.nodes[0]; + if (current != null && current.compare(val) == 0){ + this.count--; + for (var i = 0; i < this.head.height; i++){ + if (updates[i].nodes[i] != current) break; + else updates[i].nodes[i] = current.nodes[i]; + } + if (this.head.nodes[this.head.height - 1] == null) this.head.decrementHeight(); + } + }; + this.resetComparisons = function(){ + comparisons = 0; + }; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SkipList.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,211 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.SortedList"); +dojo.require("dojo.collections.Collections"); + +dojo.collections.SortedList=function(/* object? */ dictionary){ + // summary + // creates a collection that acts like a dictionary but is also internally sorted. + // Note that the act of adding any elements forces an internal resort, making this object potentially slow. + var _this=this; + var items={}; + var q=[]; + var sorter=function(a,b){ + if (a.key > b.key) return 1; + if (a.key < b.key) return -1; + return 0; + }; + var build=function(){ + q=[]; + var e=_this.getIterator(); + while (!e.atEnd()){ + q.push(e.get()); + } + q.sort(sorter); + }; + var testObject={}; + + this.count=q.length; + this.add=function(/* string */ k,/* object */v){ + // summary + // add the passed value to the dictionary at location k + if (!items[k]) { + items[k]=new dojo.collections.DictionaryEntry(k,v); + this.count=q.push(items[k]); + q.sort(sorter); + } + }; + this.clear=function(){ + // summary + // clear the internal collections + items={}; + q=[]; + this.count=q.length; + }; + this.clone=function(){ + // summary + // create a clone of this sorted list + return new dojo.collections.SortedList(this); // dojo.collections.SortedList + }; + this.contains=this.containsKey=function(/* string */ k){ + // summary + // Check to see if the list has a location k + if(testObject[k]){ + return false; // bool + } + return (items[k]!=null); // bool + }; + this.containsValue=function(/* object */ o){ + // summary + // Check to see if this list contains the passed object + var e=this.getIterator(); + while (!e.atEnd()){ + var item=e.get(); + if(item.value==o){ + return true; // bool + } + } + return false; // bool + }; + this.copyTo=function(/* array */ arr, /* int */ i){ + // summary + // copy the contents of the list into array arr at index i + var e=this.getIterator(); + var idx=i; + while(!e.atEnd()){ + arr.splice(idx,0,e.get()); + idx++; + } + }; + this.entry=function(/* string */ k){ + // summary + // return the object at location k + return items[k]; // dojo.collections.DictionaryEntry + }; + this.forEach=function(/* function */ fn, /* object? */ scope){ + // summary + // functional iterator, following the mozilla spec. + var s=scope||dj_global; + if(Array.forEach){ + Array.forEach(q, fn, s); + }else{ + for(var i=0; i<q.length; i++){ + fn.call(s, q[i], i, q); + } + } + }; + this.getByIndex=function(/* int */ i){ + // summary + // return the item at index i + return q[i].valueOf(); // object + }; + this.getIterator=function(){ + // summary + // get an iterator for this object + return new dojo.collections.DictionaryIterator(items); // dojo.collections.DictionaryIterator + }; + this.getKey=function(/* int */ i){ + // summary + // return the key of the item at index i + return q[i].key; + }; + this.getKeyList=function(){ + // summary + // return an array of the keys set in this list + var arr=[]; + var e=this.getIterator(); + while (!e.atEnd()){ + arr.push(e.get().key); + } + return arr; // array + }; + this.getValueList=function(){ + // summary + // return an array of values in this list + var arr=[]; + var e=this.getIterator(); + while (!e.atEnd()){ + arr.push(e.get().value); + } + return arr; // array + }; + this.indexOfKey=function(/* string */ k){ + // summary + // return the index of the passed key. + for (var i=0; i<q.length; i++){ + if (q[i].key==k){ + return i; // int + } + } + return -1; // int + }; + this.indexOfValue=function(/* object */ o){ + // summary + // return the first index of object o + for (var i=0; i<q.length; i++){ + if (q[i].value==o){ + return i; // int + } + } + return -1; // int + }; + this.item=function(/* string */ k){ + // summary + // return the value of the object at location k. + if(k in items && !testObject[k]){ + return items[k].valueOf(); // object + } + return undefined; // object + }; + this.remove=function(/* string */k){ + // summary + // remove the item at location k and rebuild the internal collections. + delete items[k]; + build(); + this.count=q.length; + }; + this.removeAt=function(/* int */ i){ + // summary + // remove the item at index i, and rebuild the internal collections. + delete items[q[i].key]; + build(); + this.count=q.length; + }; + this.replace=function(/* string */ k, /* object */ v){ + // summary + // Replace an existing item if it's there, and add a new one if not. + if (!items[k]){ + // we're adding a new object, return false + this.add(k,v); + return false; // bool + }else{ + // we're replacing an object, return true + items[k]=new dojo.collections.DictionaryEntry(k,v); + q.sort(sorter); + return true; // bool + } + }; + this.setByIndex=function(/* int */ i, /* object */ o){ + // summary + // set an item by index + items[q[i].key].value=o; + build(); + this.count=q.length; + }; + if (dictionary){ + var e=dictionary.getIterator(); + while (!e.atEnd()){ + var item=e.get(); + q[q.length]=items[item.key]=new dojo.collections.DictionaryEntry(item.key,item.value); + } + q.sort(sorter); + } +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/SortedList.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,85 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Stack"); +dojo.require("dojo.collections.Collections"); + +dojo.collections.Stack=function(/* array? */arr){ + // summary + // returns an object of type dojo.collections.Stack + var q=[]; + if (arr) q=q.concat(arr); + this.count=q.length; + this.clear=function(){ + // summary + // Clear the internal array and reset the count + q=[]; + this.count=q.length; + }; + this.clone=function(){ + // summary + // Create and return a clone of this Stack + return new dojo.collections.Stack(q); + }; + this.contains=function(/* object */o){ + // summary + // check to see if the stack contains object o + for (var i=0; i<q.length; i++){ + if (q[i] == o){ + return true; // bool + } + } + return false; // bool + }; + this.copyTo=function(/* array */ arr, /* int */ i){ + // summary + // copy the stack into array arr at index i + arr.splice(i,0,q); + }; + this.forEach=function(/* function */ fn, /* object? */ scope){ + // summary + // functional iterator, following the mozilla spec. + var s=scope||dj_global; + if(Array.forEach){ + Array.forEach(q, fn, s); + }else{ + for(var i=0; i<q.length; i++){ + fn.call(s, q[i], i, q); + } + } + }; + this.getIterator=function(){ + // summary + // get an iterator for this collection + return new dojo.collections.Iterator(q); // dojo.collections.Iterator + }; + this.peek=function(){ + // summary + // Return the next item without altering the stack itself. + return q[(q.length-1)]; // object + }; + this.pop=function(){ + // summary + // pop and return the next item on the stack + var r=q.pop(); + this.count=q.length; + return r; // object + }; + this.push=function(/* object */ o){ + // summary + // Push object o onto the stack + this.count=q.push(o); + }; + this.toArray=function(){ + // summary + // create and return an array based on the internal collection + return [].concat(q); // array + }; +} Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Stack.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Store.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Store.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Store.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Store.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,279 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.collections.Store"); +dojo.require("dojo.lang.common"); + +/* Store + * Designed to be a simple store of data with access methods... + * specifically to be mixed into other objects (such as widgets). + */ +dojo.collections.Store = function(/* array? */jsonArray){ + // summary + // Data Store with accessor methods. + var data = []; + this.keyField = "Id"; + + this.get = function(){ + // summary + // Get the internal data array, should not be used. + return data; // array + }; + this.getByKey = function(/* string */key){ + // summary + // Find the internal data object by key. + for(var i=0; i<data.length; i++){ + if(data[i].key==key){ + return data[i]; // object + } + } + return null; // null + }; + this.getByIndex = function(/*number*/idx){ + // summary + // Get the internal data object by index. + return data[idx]; // object + }; + + this.getData = function(){ + // summary + // Get an array of source objects. + var arr = []; + for(var i=0; i<data.length; i++){ + arr.push(data[i].src); + } + return arr; // array + }; + this.getDataByKey = function(/*string*/key){ + // summary + // Get the source object by key. + for(var i=0; i<data.length; i++){ + if(data[i].key==key){ + return data[i].src; // object + } + } + return null; // null + }; + this.getDataByIndex = function(/*number*/idx){ + // summary + // Get the source object at index idx. + return data[idx].src; // object + }; + + this.update = function(/* Object */obj, /* string */fieldPath, /* Object */val){ + var parts=fieldPath.split("."), i=0, o=obj, field; + if(parts.length>1) { + field = parts.pop(); + do{ + if(parts[i].indexOf("()")>-1){ + var temp=parts[i++].split("()")[0]; + if(!o[temp]){ + dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object."); + } else { + // this *will* throw an error if the method in question can't be invoked without arguments. + o = o[temp](); + } + } else { + o = o[parts[i++]]; + } + } while (i<parts.length && o != null); + } else { + field = parts[0]; + } + + obj[field] = val; + this.onUpdateField(obj, fieldPath, val); + }; + + this.forEach = function(/* function */fn){ + // summary + // Functional iteration directly on the internal data array. + if(Array.forEach){ + Array.forEach(data, fn, this); + }else{ + for(var i=0; i<data.length; i++){ + fn.call(this, data[i]); + } + } + }; + this.forEachData = function(/* function */fn){ + // summary + // Functional iteration on source objects in internal data array. + if(Array.forEach){ + Array.forEach(this.getData(), fn, this); + }else{ + var a=this.getData(); + for(var i=0; i<a.length; i++){ + fn.call(this, a[i]); + } + } + }; + + this.setData = function(/*array*/arr){ + // summary + // Set up the internal data. + data = []; // don't fire onClearData + for(var i=0; i<arr.length; i++){ + data.push({ + key:arr[i][this.keyField], + src:arr[i] + }); + } + this.onSetData(); + }; + + this.clearData = function(){ + // summary + // Clears the internal data array. + data = []; + this.onClearData(); + }; + + this.addData = function(/*obj*/obj,/*string?*/key){ + // summary + // Add an object with optional key to the internal data array. + var k = key || obj[this.keyField]; + if(this.getByKey(k)){ + var o = this.getByKey(k); + o.src = obj; + } else { + var o={ key:k, src:obj }; + data.push(o); + } + this.onAddData(o); + }; + this.addDataRange = function(/*array*/arr){ + // summary + // Add a range of objects to the internal data array. + var objects=[]; + for(var i=0; i<arr.length; i++){ + var k = arr[i][this.keyField]; + if(this.getByKey(k)){ + var o = this.getByKey(k); + o.src = obj; + } else { + var o = { key:k, src:arr[i] }; + data.push(o); + } + objects.push(o); + } + this.onAddDataRange(objects); + }; + + this.removeData = function(/*obj*/obj){ + // summary + // remove the passed object from the internal data array. + var idx=-1; + var o=null; + for(var i=0; i<data.length; i++){ + if(data[i].src==obj){ + idx=i; + o=data[i]; + break; + } + } + this.onRemoveData(o); + if(idx>-1){ + data.splice(idx,1); + } + }; + this.removeDataByKey = function(/*string*/key){ + // summary + // remove the object at key from the internal data array. + this.removeData(this.getDataByKey(key)); + }; + this.removeDataByIndex = function(/*number*/idx){ + // summary + // remove the object at idx from the internal data array. + this.removeData(this.getDataByIndex(idx)); + }; + + if(jsonArray && jsonArray.length && jsonArray[0]){ + this.setData(jsonArray); + } +}; + +dojo.extend(dojo.collections.Store, { + getField:function(/*object*/obj, /*string*/field){ + // helper to get the nested value if needed. + var parts=field.split("."), i=0, o=obj; + do{ + if(parts[i].indexOf("()")>-1){ + var temp=parts[i++].split("()")[0]; + if(!o[temp]){ + dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + temp + "' is not a property of the passed object."); + } else { + // this *will* throw an error if the method in question can't be invoked without arguments. + o = o[temp](); + } + } else { + o = o[parts[i++]]; + } + } while (i<parts.length && o != null); + + if(i < parts.length){ + dojo.raise("dojo.collections.Store.getField(obj, '" + field + "'): '" + field + "' is not a property of the passed object."); + } + return o; // object + }, + getFromHtml:function(/* array */meta, /* HTMLTableBody */body, /* function? */fnMod){ + // summary + // Parse HTML data into native JSON structure for the store. + var rows = body.rows; + + // create a data constructor. + var ctor=function(row){ + var obj = {}; + for(var i=0; i<meta.length; i++){ + var o = obj; + var data = row.cells[i].innerHTML; + var p = meta[i].getField(); + if(p.indexOf(".") > -1){ + p = p.split("."); + while(p.length>1){ + var pr = p.shift(); + o[pr] = {}; + o = o[pr]; + } + p = p[0]; + } + + var type = meta[i].getType(); + if(type == String){ + o[p] = data; + } else { + if(data){ + o[p] = new type(data); + } else { + o[p] = new type(); + } + } + } + return obj; + }; + + // we have initialization data, let's parse it. + var arr=[]; + for(var i=0; i<rows.length; i++){ + var o = ctor(rows[i]); + if(fnMod){ + fnMod(o, rows[i]); // apply any modifiers. + } + arr.push(o); + } + return arr; // array + }, + onSetData:function(){ }, + onClearData:function(){ }, + onAddData:function(obj){ }, + onAddDataRange:function(arr){ }, + onRemoveData:function(obj){ }, + onUpdateField:function(obj, field, val){ } +}); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Store.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/Store.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,22 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.kwCompoundRequire({ + common: [ + "dojo.collections.Collections", + "dojo.collections.SortedList", + "dojo.collections.Dictionary", + "dojo.collections.Queue", + "dojo.collections.ArrayList", + "dojo.collections.Stack", + "dojo.collections.Set" + ] +}); +dojo.provide("dojo.collections.*"); Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/collections/__package__.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,31 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.provide("dojo.crypto"); + +dojo.crypto.cipherModes={ + // summary + // Enumeration for various cipher modes. + ECB:0, + CBC:1, + PCBC:2, + CFB:3, + OFB:4, + CTR:5 +}; + +dojo.crypto.outputTypes={ + // summary + // Enumeration for input and output encodings. + Base64:0, + Hex:1, + String:2, + Raw:3 +}; Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js ------------------------------------------------------------------------------ svn:eol-style = native Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js ------------------------------------------------------------------------------ svn:keywords = "Date Rev Author URL Id" Propchange: ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto.js ------------------------------------------------------------------------------ svn:mime-type = text/plain Added: ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto/Blowfish.js URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto/Blowfish.js?view=auto&rev=509273 ============================================================================== --- ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto/Blowfish.js (added) +++ ofbiz/trunk/framework/images/webapp/images/dojo/src/crypto/Blowfish.js Mon Feb 19 09:56:06 2007 @@ -0,0 +1,576 @@ +/* + Copyright (c) 2004-2006, The Dojo Foundation + All Rights Reserved. + + Licensed under the Academic Free License version 2.1 or above OR the + modified BSD license. For more information on Dojo licensing, see: + + http://dojotoolkit.org/community/licensing.shtml +*/ + +dojo.require("dojo.crypto"); +dojo.provide("dojo.crypto.Blowfish"); + +/* Blowfish + * Created based on the C# implementation by Marcus Hahn (http://www.hotpixel.net/) + * Unsigned math functions derived from Joe Gregorio's SecureSyndication GM script + * http://bitworking.org/projects/securesyndication/ + * (Note that this is *not* an adaption of the above script) + * + * version 1.0 + * TRT + * 2005-12-08 + */ +dojo.crypto.Blowfish = new function(){ + // summary + // Object for doing Blowfish encryption/decryption. + var POW2=Math.pow(2,2); + var POW3=Math.pow(2,3); + var POW4=Math.pow(2,4); + var POW8=Math.pow(2,8); + var POW16=Math.pow(2,16); + var POW24=Math.pow(2,24); + var iv=null; // CBC mode initialization vector + var boxes={ + p:[ + 0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344, 0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, + 0x452821e6, 0x38d01377, 0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917, + 0x9216d5d9, 0x8979fb1b + ], + s0:[ + 0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7, 0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, + 0x24a19947, 0xb3916cf7, 0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e, + 0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5, 0x9c30d539, 0x2af26013, + 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef, 0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, + 0xd71577c1, 0xbd314b27, 0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440, + 0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993, 0xb3ee1411, 0x636fbc2a, + 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e, 0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, + 0x3b8f4898, 0x6b4bb9af, 0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032, + 0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5, 0x0f6d6ff3, 0x83f44239, + 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e, 0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, + 0x6a51a0d2, 0xd8542f68, 0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98, + 0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4, 0x7d84a5c3, 0x3b8b5ebe, + 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6, 0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, + 0x37d0d724, 0xd00a1248, 0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7, + 0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4, 0x5e5c9ec2, 0x196a2463, + 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f, 0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, + 0xbee3d004, 0xde334afd, 0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb, + 0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc, 0x8ea5e9f8, 0xdb3222f8, + 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab, 0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, + 0x9e5c57bb, 0xca6f8ca0, 0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573, + 0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8, 0x4afcb56c, 0x2dd1d35b, + 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790, 0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, + 0xef20cada, 0x36774c01, 0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0, + 0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64, 0x8888b812, 0x900df01c, + 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad, 0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, + 0xe5a0cc0f, 0xb56f74e8, 0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9, + 0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86, 0xc75442f5, 0xfb9d35cf, + 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49, 0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, + 0x2464369b, 0xf009b91e, 0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5, + 0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a, 0x1b510052, 0x9a532915, + 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400, 0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, + 0xb6636521, 0xe7b9f9b6, 0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a + ], + s1:[ + 0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d, 0x9cee60b8, 0x8fedb266, + 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1, 0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, + 0x3f54989a, 0x5b429d65, 0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1, + 0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9, 0x3c971814, 0x6b6a70a1, + 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737, 0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, + 0xb03ada37, 0xf0500c0d, 0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd, + 0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc, 0xc8b57634, 0x9af3dda7, + 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41, 0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, + 0x4e548b38, 0x4f6db908, 0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af, + 0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124, 0x501adde6, 0x9f84cd87, + 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c, 0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, + 0xef1c1847, 0x3215d908, 0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd, + 0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b, 0x3c11183b, 0x5924a509, + 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e, 0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, + 0x771fe71c, 0x4e3d06fa, 0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a, + 0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d, 0x1939260f, 0x19c27960, + 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66, 0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, + 0xc332ddef, 0xbe6c5aa5, 0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84, + 0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96, 0x0334fe1e, 0xaa0363cf, + 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14, 0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, + 0x648b1eaf, 0x19bdf0ca, 0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7, + 0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77, 0x11ed935f, 0x16681281, + 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99, 0x57f584a5, 0x1b227263, 0x9b83c |
Free forum by Nabble | Edit this page |