/*
	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 (k, v) {
	this.key = k;
	this.value = v;
	this.valueOf = function () {
		return this.value;
	};
	this.toString = function () {
		return String(this.value);
	};
};
dojo.collections.Iterator = function (arr) {
	var a = arr;
	var position = 0;
	this.element = a[position] || null;
	this.atEnd = function () {
		return (position >= a.length);
	};
	this.get = function () {
		if (this.atEnd()) {
			return null;
		}
		this.element = a[position++];
		return this.element;
	};
	this.map = function (fn, scope) {
		var s = scope || dj_global;
		if (Array.map) {
			return Array.map(a, fn, s);
		} else {
			var arr = [];
			for (var i = 0; i < a.length; i++) {
				arr.push(fn.call(s, a[i]));
			}
			return arr;
		}
	};
	this.reset = function () {
		position = 0;
		this.element = a[position];
	};
};
dojo.collections.DictionaryIterator = function (obj) {
	var a = [];
	var testObject = {};
	for (var p in obj) {
		if (!testObject[p]) {
			a.push(obj[p]);
		}
	}
	var position = 0;
	this.element = a[position] || null;
	this.atEnd = function () {
		return (position >= a.length);
	};
	this.get = function () {
		if (this.atEnd()) {
			return null;
		}
		this.element = a[position++];
		return this.element;
	};
	this.map = function (fn, scope) {
		var s = scope || dj_global;
		if (Array.map) {
			return Array.map(a, fn, s);
		} else {
			var arr = [];
			for (var i = 0; i < a.length; i++) {
				arr.push(fn.call(s, a[i]));
			}
			return arr;
		}
	};
	this.reset = function () {
		position = 0;
		this.element = a[position];
	};
};

