function Pai (l, v, s) {
	this.nome = l;
	this.valor = v;
	this.selecionado = (s) ? true : false;
}

function Filho (l, v, p, s) {
	this.pai = p;
	this.nome = l;
	this.valor = v;
	this.selecionado = (s) ? true : false;
}

function combo (pai, filho) {
	this.objPai = document.getElementById(pai);
	this.objFilho = document.getElementById(filho);
	this.arrPai = [];
	this.arrFilho = [];
	this.strDefault = "Todos"
}

combo.prototype.setDefault = function (s) {
	this.strDefault = s;
};

combo.prototype.addPai = function (l, v, s) {
	this.arrPai[this.arrPai.length] = new Pai (l, v, s);
};

combo.prototype.addPai = function (l, v, s) {
	this.arrPai[this.arrPai.length] = new Pai (l, v, s);
};

combo.prototype.addFilho = function (l, v, p, s) {
	this.arrFilho[this.arrFilho.length] = new Filho (l, v, p, s);
};

combo.prototype.montaPai = function () {
	// adiciona um default
	this.objPai.options[0] = new Option (this.strDefault);
	// adiciona itens do array
	for (var i = 0; i < this.arrPai.length; i++) {
		this.objPai.options[i+1] = new Option (this.arrPai[i].nome);
		this.objPai.options[i+1].value = (this.arrPai[i].valor) ? this.arrPai[i].valor : false;
		this.objPai.options[i+1].selected = (this.arrPai[i].selecionado) ? "selected" : false;
	}
};

combo.prototype.limpaFilho = function (id) {
	for (var i = this.objFilho.options.length; i >= 0 ; i--) {
		this.objFilho.options[i] = null;
	}
};

combo.prototype.montaFilho = function (id) {
	// limpa todos
	this.limpaFilho ();
	// monta novo array com os selecionados
	var arrTemp = [];
	for (var a = 0; a < this.arrFilho.length; a++) {
		if (this.arrFilho[a].pai == id) {
			arrTemp.push (this.arrFilho[a]);
		}
	}
	// adiciona um default
	this.objFilho.options[0] = new Option (this.strDefault);

	for (var i = 0; i < arrTemp.length; i++) {
		this.objFilho.options[i+1] = new Option (arrTemp[i].nome);
		this.objFilho.options[i+1].value = (arrTemp[i].valor) ? arrTemp[i].valor : false;
		this.objFilho.options[i+1].selected = (arrTemp[i].selecionado) ? "selected" : false;
	}
};

combo.prototype.inicia = function (id) {
	this.montaPai ();
	this.montaFilho (this.objPai.value);
}
