/* 
 * Objeto objSelect
 * Manipulador do elemento Select e options.
 * Autor: Marcio F. Santos
 */
 
/*
 * Construtor
 */
var objSelect=new Object();

/* 
 * Pega index selecionado
 */
objSelect.pegaIndexSelecionado= function(lista){
	var arrIndex=new Array();
	for(var i=0;i<lista.options.length;i++){
		if(lista.options[i].selected){
			arrIndex.push(i);
		}
	}
	return arrIndex;
}
/* 
 * Pega atributo selecionado
 */
objSelect.pegaAtributoSelecionado= function(lista,atributo){
	var arrIndex=new Array();
	for(var i=0;i<lista.options.length;i++){
		if(lista.options[i].selected){
			arrIndex.push(lista.options[i].getAttribute(atributo));
		}
	}
	return arrIndex;
}

/* 
 * Joga os atributos para um array;
 */
objSelect.atributoParaArray= function(lista,atributo){
	var arrIndex=new Array();
	for(var i=0;i<lista.options.length;i++){
		if(atributo=="text"){
			arrIndex.push(lista.options[i].text);
		}else{
			arrIndex.push(lista.options[i].getAttribute(atributo));
		}
	}
	return arrIndex;
}

/*
 * Move options de um select para outro 
 */
objSelect.moveOptions= function(listaDe,listaPara,indexI){
	var osIndex=new Array();
	if(indexI){
		osIndex[0]=indexI;
	}else{ // todos
		for(var i=0;i<listaDe.options.length;i++){
			osIndex[i]=i;
		}
	}
	var Ooption;
	var Preoption;
	for(i=osIndex.length;i>=0;i--){
		Ooption=listaDe.options[osIndex[i]];
		if(Ooption!=null){
			listaPara.appendChild(Ooption);
		}
	}
}

/*
 * Remove options de um select 
 */
objSelect.removeOptions= function(lista,indexI){
	lista.remove(indexI);
}

/*
 * Remove todas as options de um select 
 */
objSelect.limpaOptions= function(lista){
	for(var i=lista.options.length-1;i>=0;i--){
		objSelect.removeOptions(lista,i);
	}
}

/*
 * Adiciona options a um select 
 */
objSelect.adicionaOptions= function(lista,nome,valor){
	var Ooption=document.createElement("option");
	Ooption.appendChild(document.createTextNode(nome));
	if(arguments.length==3){
		Ooption.setAttribute("value",valor);
	}
	var x=lista.options.length;
	lista.appendChild(Ooption);
}

/*
 * Move uma opção para cima
 */
objSelect.moveParaCima= function(lista,indexI){
	if(indexI>0){
		var Ooption=lista.options[indexI];
		var Preoption=lista.options[indexI-1];
		lista.insertBefore(Ooption,Preoption);
	}
}

/*
 * Move uma opção para baixo
 */
objSelect.moveParaBaixo= function(lista,indexI){
	if(indexI<lista.options.length-1){
		var Ooption=lista.options[indexI];
		var Noption=lista.options[indexI+1];
		lista.insertBefore(Noption,Ooption);
	}
}

/*
 * Reverte posicionamento dos options de um select
 */
objSelect.inverteOptions= function(lista){
	var Ooption=new Array();
	for(var x=0;x<lista.options.length;x++){
		Ooption[x]=lista.options[x];
	}
	var maxLista=x;
	for(x=maxLista-1;x>=0;x--){
		try{
			objSelect.adicionaOptions(lista,Ooption[x].text,Ooption[x].value);
			lista.remove(x);
		}catch(err){
		}
	}
}
