/* SELECTS
----------------------*/
var DependentSelects = {elements:{},database:{}}
DependentSelects.pasteSelect = function(id,db,os,ob){
	var h = 'place_for_select_'+id;
	document.write('<span id="'+h+'"></span>');
	this.elements[id] = {holder:h,db:db,os:os,opt:ob};
}
DependentSelects.pasteAll = function(db){
	this.database = db;
	var e = this.elements;
	for(var i in e) this.putSelect(i);
	//for(var i in e) if(this.elements[i].el.onchange) this.elements[i].el.onchange();
}
DependentSelects.putSelect = function(id){
	var el = this.elements[id];
	var sel = el.el = document.createElement("select");
	document.getElementById(el.holder).appendChild(sel);
	sel.setAttribute("id", id);
	sel.setAttribute("name", id);
	sel.style.width="100%";
	
	for(var i in el.opt) sel.setAttribute(i,el.opt[i]);
	if(el.os){
		sel.os = el.os;
		sel.root = this;
		sel.onchange = function(){
			this.root.fillSelect(this.os,this.options[this.selectedIndex].value);
		}
	}
	this.fillSelect(id,null,true);
	return sel;
};

DependentSelects.fillSelect = function(n,val,fr){
	var sel = this.elements[n].el;
	var db = this.database[this.elements[n].db];
	if(val && db[val]){
		db = db[val];
	} else if (db._default_ && typeof db[db._default_]=='object') {
		db = db[db._default_];
	}
	this.fillSelectByOpts(sel,db);
	if(sel.onchange && !fr) sel.onchange();
};
DependentSelects.fillSelectByOpts = function(sel,db){
	if(!sel) return;
	var i = sel.length;
	while(i--) sel.options[i] = null;
	var opt = null;
	for(var i in db){
		if(i=="_default_") continue;
		sel[sel.length] = new Option(db[i],i);		 
	}
	//alert(typeof sel.options);
/**
	var arr = [];
	arr = sel.options;
	arr.sort(function (a, b) {var anew = a.text.toLowerCase();var bnew = b.text.toLowerCase();if (anew < bnew) return -1;if (anew > bnew) return 1; return 0;})
	while(i--) sel.options[i] = null;
	if(window.opera) sel.length = 0;
	sel.options = arr;
/**/
	var i = sel.length;
	while(i--) if(sel.options[i].value==db["_default_"]) sel.options[i].selected = true;
};
