/***********************************************
* autor: Cauê Luiz Thenorio (cauelt@gmail.com)
* data : 30/08/2009
*
* Script para trocar campos estáticos de UF e município 
* por campos dinâmicos, onde o campo município é
* populado com os municípios da UF escolhida
***********************************************/

function montaCamposEndereco(ufAntigo, municipioAntigo) {
    
    this.atributosPersistentes = ['class', 'id', 'name'];
    this.initMunicipio = 'Selecione uma UF...';
    
    this._copiaAtributos = function(origem){
	retorno = '';
	for (i in this.atributosPersistentes) {

	    atributo = this.atributosPersistentes[i];
	    valAtributo = origem.attr(atributo);

	    if (valAtributo != 'undefined' && valAtributo != '')
		retorno += ' ' + atributo + '="' + valAtributo + '"';
	}
	return retorno;
    }
    
    this.atualizaMunicipio = function(uf){
	var selectMunicipio = this.municipioNovo;
	var valorSelecionado = this.valMunicipioAntigo;
	
	$(selectMunicipio).html('<option value="">Carregando...</option>');
	
	if (uf == '' || uf == null)
	    return $(selectMunicipio).html('<option value="">' + this.initMunicipio + '</option>');
	
	$.getScript("http://www.onid.org.br/media/estatico/js/brasil_ufs_json/" + uf + ".js", function(){
	    htmlOptions = '<option value="">Escolha um município...</option>\n';
    
	    for (i in json_municipios) {
		htmlOptions += '<option value="' + json_municipios[i].id + '"';
		
		if (json_municipios[i].id == valorSelecionado)
		    htmlOptions += ' selected="selected"';
		
		htmlOptions += '>' + json_municipios[i].n + '</option>\n';
	    }
	    
	    $(selectMunicipio).html(htmlOptions);
	});
    }
    
    this.criaMunicipio = function(municipioAntigo){
	this.valMunicipioAntigo = municipioAntigo.val();
    
	htmlSelect = '<select' + this._copiaAtributos(municipioAntigo) + '>';
	htmlSelect += '</select>';
	
	return $(htmlSelect).replaceAll(municipioAntigo)
    }

    this.criaUF = function(ufAntigo){
	this.valUFAntigo = ufAntigo.val()	
    
	ufs =['AC','AL','AM','AP','BA','CE','DF','ES','GO','MA','MG','MS','MT','PA','PB','PE','PI', 'PR','RJ','RN','RO','RR','RS','SC','SE','SP','TO']

	htmlSelect = '<select' + this._copiaAtributos(ufAntigo) + '>';
	htmlSelect += '<option value="">Selecione a UF</option>\n'
	
	// Adiciona os estados	
	for (uf in ufs) {
	    htmlOption = '<option';
	    if (ufs[uf] == this.valUFAntigo)
		htmlOption += ' selected="selected"';
	    
	    htmlOption += ' value="' + ufs[uf] + '">' + ufs[uf] + '</option>';
	    htmlSelect += htmlOption;
	}
	
	htmlSelect += '</select>';
	
	this.atualizaMunicipio(this.valUFAntigo);

	// Troca o antigo campo pelo select criado e ja prende uma funcao ao evento change
	return $(htmlSelect).replaceAll(ufAntigo).bind('change', this, function(e){
	    e.data.atualizaMunicipio($(this).val());
	});
    }

    this.municipioNovo = this.criaMunicipio(municipioAntigo);
    this.ufNovo = this.criaUF(ufAntigo);
}
