function CountrySelectClass(_settings){
  var settings = _settings;
  var currentCountry = 0;
  var currentState = 0;
  var currentCity = 0;
  
  
	var createOptions=function(select,div,root,nullVal){
		$(settings.loadingDiv).css('display','none');
		$(select).empty();		
    var len=$('row',root).length;
    if (len==0)
    	return;
		$(div).css('display','inline');
    var optionStr = "<option value='0'>"+nullVal+"</option>";
    $(select).append($(optionStr));
    $('row', root).each(function(){
      var id = $('id', this).text();
      var name = $('title', this).text();
//      $(settings.loadingDiv).append(name+"<br>");
//		$(settings.loadingDiv).css('display','block');
      var optionStr = "<option value='" + id + "'>" + name + "</option>";
      $(select).append($(optionStr));
    });
	}
	
	var handleLoadCities = function(xml, resp){
    var root = $('cities', xml)[0];
		createOptions(settings.citySelect,settings.cityDiv,root,'Выберите');    
  }
  
  var loadCities = function(){
  	$(settings.cityDiv).css('display','none');
		$(settings.loadingDiv).css('display','inline-block');
    $.ajax({
      'url': settings.url,
      'async': true,
      'data': {
        'action': 'GET_CITIES',
				'stateId':currentState
      },
      'success': function(xml, resp){
        handleLoadCities(xml, resp);
      }
    })
  }
	
	
	var handleLoadStates = function(xml, resp){
    var root = $('states', xml)[0];
    createOptions(settings.stateSelect,settings.stateDiv,root,'Выберите');   
  }
  
  var loadStates = function(){		
  	$(settings.stateDiv).css('display','none');
  	$(settings.cityDiv).css('display','none'); 
		$(settings.loadingDiv).css('display','inline-block'); 	  	
		$(settings.citySelect).empty();
    $.ajax({
      'url': settings.url,
      'async': true,
      'data': {
        'action': 'GET_STATES',
				'countryId':currentCountry
      },
      'success': function(xml, resp){
        handleLoadStates(xml, resp);
      }
    })
  }
	
  var handleLoadCountries = function(xml, resp){  	
    var root = $('countries', xml)[0];    
    createOptions(settings.countrySelect,settings.countryDiv,root,'Выберите');   
  }
  
  var loadCountries = function(){
		$(settings.stateDiv).css('display','none');
		$(settings.cityDiv).css('display','none');
		//alert($(settings.loadingDiv).length);
		$(settings.loadingDiv).css('display','inline-block');
    $.ajax({
      'url': settings.url,
      'async': true,
      'data': {
        'action': 'GET_COUNTRIES'
      },
      'success': function(xml, resp){
        handleLoadCountries(xml, resp);
      }
    })
  }
  
  this.init = function(){
		$(settings.loadingDiv).css('display','none');
		$(settings.countrySelect).change(function(){
			currentCountry=$(this).val();
			$(settings.resultInput).val(currentCountry);
			loadStates();			
		});
		$(settings.stateSelect).change(function(){
			currentState=$(this).val();
			if (currentState==0)
				$(settings.resultInput).val(currentCountry)			
			else
				$(settings.resultInput).val(currentState);
			loadCities();
		});
		$(settings.citySelect).change(function(){
			currentCity=$(this).val();
			if (currentCity==0)
				$(settings.resultInput).val(currentState);
			else
				$(settings.resultInput).val(currentCity);			
		});
  	if (settings.countriesHTML!=''){
  		$(settings.countrySelect).html(settings.countriesHTML);
			currentCountry=$(settings.countrySelect).val();
  	}
  	else
  		loadCountries();	
		$(settings.stateDiv).css('display','none');
		$(settings.cityDiv).css('display','none');	
		if (settings.statesHTML!=''){
			$(settings.stateDiv).css('display','inline');
			$(settings.stateSelect).html(settings.statesHTML);
			currentState=$(settings.stateSelect).val();
		}
		if (settings.citiesHTML!=''){
			$(settings.cityDiv).css('display','inline');
			$(settings.citySelect).html(settings.citiesHTML);
			currentCity=$(settings.citySelect).val();
		}
  }
}

