/******************************************************************************************** * BlueShoes Framework; This file is part of the php application framework. * NOTE: This code is stripped (obfuscated). To get the clean documented code goto * www.blueshoes.org and register for the free open source *DEVELOPER* version or * buy the commercial version. * * In case you've already got the developer version, then this is one of the few * packages/classes that is only available to *PAYING* customers. * To get it go to www.blueshoes.org and buy a commercial version. * * @copyright www.blueshoes.org * @author sam blum * @author Andrej Arn */ if (!Bs_Objects) {var Bs_Objects = [];};function Bs_Mls_updateMe(e) { if (!e) e = window.event;e.srcElement.Bs_Mls_Obj.updateMe(e.srcElement.Bs_Mls_Level);} function Bs_MultiLevelSelector() { this._objectId;this._id;this._levels = 0;this._data = new Array();this._fieldElements = new Array();this.jsrsUrl;this._jsrsIssuedCalls = new Array();this.setData = function(data) { this._data = data;} this._countLevels = function(data, i) { if (typeof(i) == 'undefined') i = 0;i++;var oldI = i;for (key in data) { if ((typeof(data[key]['children']) != 'undefined') && (typeof(data[key]['children']) == 'object')) { var newI = this._countLevels(data[key]['children'], oldI);if (newI > i) i = newI;} } return i;} this.initLevelByExistingField = function(level, fieldElementId, loadOptionsJsrsFunction) { var elm = document.getElementById(fieldElementId);var s = new Bs_FormFieldSelect();s.init(elm);this._fieldElements[level] = new Array();this._fieldElements[level]['elm'] = elm;if (typeof(loadOptionsJsrsFunction) != 'undefined') this._fieldElements[level]['loadOptionsJsrsFunction'] = loadOptionsJsrsFunction;if (level > this._levels) this._levels = level;} this.render = function() { for (var i=1; i= this._levels) return;var elmChild = this._fieldElements[level +1]['elm'];elmChild.prune();if (value != 'undefined') { if (typeof(elmSelf.Bs_Mls_data[value].children) == 'undefined') { this._loadOptionsFromServer(level +1, value, elmSelf);} else { var data = elmSelf.Bs_Mls_data[value].children;elmChild.Bs_Mls_data = data;for (key in data) { if (typeof(data[key]) == 'object') { var selected = ((typeof(data[key]['selected']) != 'undefined') && (data[key]['selected']));var caption = (typeof(data[key]['caption']) != 'undefined') ? data[key]['caption'] : key;} else if (typeof(data[key]) == 'string') { var selected = false;var caption = data[key];} else { var selected = false;var caption = key;} var newOption = new Option(caption, key, false, selected);elmChild.options[elmChild.length] = newOption;} } } if (level < this._levels) this.updateMe(level +1);} this._loadOptionsFromServer = function(level, key, elm) { var functionName = this._fieldElements[level]['loadOptionsJsrsFunction'];var callId = jsrsCall(this.jsrsUrl, 'Bs_Objects['+this._id+']' + "._callbackLoadOptionsFromServer", functionName, key);this._jsrsIssuedCalls[callId] = new Array(level, key, elm);} this._callbackLoadOptionsFromServer = function(value, callId) { var level = this._jsrsIssuedCalls[callId][0];var key = this._jsrsIssuedCalls[callId][1];var elm = this._jsrsIssuedCalls[callId][2];elm.Bs_Mls_data[key].children = value;this.updateMe(level -1);} this._constructor = function() { this._id = Bs_Objects.length;Bs_Objects[this._id] = this;this._objectId = "Bs_Mls_"+this._id;} this._constructor();}