/**
 * Klasa obslugujaca dostep do slownikow.
 */
function Dict(fullUrlMode) {
	
	/** Tablica ze slownikami */
	this.roots = new Array();
    
	/** Url do zasobu zawierajacego slowniki. */
	//this.url = "/system/modules/com.play.webportal2/resources/dict/";
        this.url =window.location.protocol+"//"+window.location.host + (fullUrlMode ? "" : gBaseDictUri);

	/**
	 * Zwraca slownik.
     * Jesli slownik jeszcze nie byl sciagany, to zostaje sciagniety.
     * @param dictName nazwa slownika
     */
	this.get = function(dictName) {
		
		if (!this.roots[dictName]) {
			var dict = null;
			
			$.ajax({url: (fullUrlMode ? this.url + dictName : this.url + dictName+".xml"),
				dataType: "text",
				success: function(xml){ dict = parseXml(xml); }, 
				async: false
			});
			this.roots[dictName] = dict;
		}
		return this.roots[dictName];
	}

	/**
	 * 	Zwraca node'y slownika spelniajace warunek 'condition'. 
	 *  Przyklady warunku:
	 *  '[PHM_ID=373][PHM_NAME='Nokia X3']'  - warunek sprawdzany jest w obrebie jednego node'a (odpowiada logicznemy AND)
	 *  '[PHM_ID=373],[PHM_NAME='Nokia X3']' - warunek sprawdzany jest dla wszystkich node'ow (odpowiada logicznemy OR)
     *	@param dictName nazwa slownika
     *	@param condition warunek dla node'a slownika
     */
	this.getNodes = function(dictName, condition) {
		
		var cond = "";
		var arr = condition.split(",");
		
		if (arr.length == 1) {
			cond = "r" + arr[0];
		} else {
			for (var i=0; i<arr.length; i++) {
				arr[i] = "r" + arr[i]; 
			}
			cond = arr.join(",");
		}
		return this.find(dictName, cond);
	}
	
	this.find = function (dictName, cond) {
		return $(cond, this.get(dictName));
	}
}
/** globalny obiekt slownika */
var dict = new Dict();
/** globalny obiekt uniwersalnego slownika, niezależnego od lokacji */
var GLOBAL_DICT = new Dict(true);

