
function PaisEstadoCidade(){
    
    this.form = ''
    
    this.routines = root+'teaser/_misc/routines/routines.php';
    this.urlCidade = 'loadCidadesByEstado';
    this.urlEstado = 'loadEstadoByPais';
    
    this.selectorPais = 'select[name="id_pais"]'
    this.selectorEstado = 'select[name="id_estado"]'
    this.selectorCidade = 'select[name="id_cidade"]'
    
    this.main = function(){
        var obj = this;
        $(this.getSelector('pais')).change(function(){
            obj.ajax('estado');
        });
        
        $(this.getSelector('estado')).change(function(){
            obj.ajax('cidade');
        });
    }
    
    this.getRoutine = function(tipo){
        var routine = this.routines;
        switch(tipo){
            case 'estado':
                routine += '?action='+this.urlEstado;
                break;
            
            case 'cidade':
                routine += '?action='+this.urlCidade;
                break;
        }
        
        return routine;
    }
    
    this.ajax = function(routina){
        var obj = this;
        
        $.ajax({
            url: this.getRoutine(routina),
            type: 'POST',
            dataType: 'JSON',
            data: 'id='+this.ajaxGetData(routina),
            success: function(json){
                obj.jsonToOption(routina, json['dados']);
               
            }
        })
    }
    
    this.ajaxGetData = function(tipo){
        if(tipo == 'estado'){
            return $(this.getSelector('pais')).find('option:selected').val();
        }else{
            return $(this.getSelector('estado')).find('option:selected').val();
        }
    }
    
    this.preencheSelector = function(tipo, option){
        $(this.getSelector(tipo)).html(option);
    }
    
     this.getSelector = function(tipo){
        var selector = null;
        switch(tipo){
            case 'estado':
                selector = this.selectorEstado;
                break;
            
            case 'cidade':
                selector = this.selectorCidade;
                break;
            case 'pais':
                selector = this.selectorPais;
                break;
        }
        if(this.form != ''){
            selector = this.form+' '+selector;
        }
        return selector;
    }
    
    this.jsonToOption = function(tipo, json){
        var qnt = json.length;
        var i, obj;
        var option = '';
        option = '<option> Selecione '+tipo+'</option>';
        option += '<option> ----------------- </option>';
        for(i=0;i<qnt;i++){
            obj = json[i];
            option += '<option value="'+obj.id+'">'+obj.nome+'</option>';
           
        }
        this.preencheSelector(tipo, option);
    }
    
}
