jQuery.delegate = function(rules){
    return function(e){
        var target = $(e.target);
        for (var selector in rules)
            if (target.is(selector))
                return rules[selector].apply(this, $.makeArray(arguments));
    }
}

jQuery.uarnetOrder = {
	hideTRegion: function(){
		$('#input_region').hide();
	},
	hideCity: function(){
		$('#select_city').hide();
	},
	hideTCity: function(){
		$('#input_city').hide();
	},
	hideStreet: function(){
		$('#select_street').hide();
	},
	hideTStreet: function(){
		$('#input_street').hide();
	},
	showTRegion: function(){
		$('#input_region').show();
	},
	showCity: function(){
		$('#select_city').show();
	},
	showTCity: function(){
		$('#input_city').show();
	},
	showStreet: function(){
		$('#select_street').show();
	},
	showTStreet: function(){
		$('#input_street').show();
	},
	fillCities: function(cities){
		$("#city").removeOption(/./);
		var i = 0;
		for (var item in cities) {
	        $('#city').addOption(item, cities[item]);
			i++;
	    }
		$('#city').selectOptions($('#city').children('option:first').attr('value'));
		return i;
	},
	fillStreets: function(streets){
		$("#street").removeOption(/./);
		var i = 0;
		for (var item in streets) {
	        $('#street').addOption(item, streets[item]);
			i++;
	    }
		$('#street').selectOptions($('#street').children('option:first').attr('value'));
		return i;
	}
};

$(function(){
    $('#region').change(function(){
		//Hide tregion input, city select, tcity input, street select, tstreet input
		//If new value = -1, show tregion, tcity, tstreet
		//If region > -1:
		//	If count cities > 0, show city select
		//		If streets > 0, show street select
		//		Else, show tstreet input
		//	Else, show tcity input and tstreet input
		$.uarnetOrder.hideTRegion();
		$.uarnetOrder.hideCity();
		$.uarnetOrder.hideTCity();
		$.uarnetOrder.hideStreet();
		$.uarnetOrder.hideTStreet();
		if($('#region').attr('value') == -1){
			$.uarnetOrder.showTRegion();
			$.uarnetOrder.showTCity();
			$.uarnetOrder.showTStreet();
		}else{
			$.getJSON('',{
				'cmd':'cities',
				'eID':'tx_rhmuarnetorder_address',
				'region': $('#region').attr('value'),
				'L': $('#l').attr('value')
			},function(data){
				var cities = data.cities;
				//console.log(cities);
				var streets = data.streets;
				var count = $.uarnetOrder.fillCities(cities);
				if (count > 1) {
					$.uarnetOrder.showCity();
					count = $.uarnetOrder.fillStreets(streets);
					if(count > 1){
						$.uarnetOrder.showStreet();
					}else{
						$.uarnetOrder.showTStreet();
					}
				}else{
					$.uarnetOrder.showTCity();
					$.uarnetOrder.showTStreet();
				}
			});
		}
    });
    $('#city').change(function(){
		//TODO: Hide tcity input, street select, tstreet input,
		//If new value = -1, show tcity, tstreet
		//Else if city > -1
		//	If count streets > 0, show street select
		//	Else Show streets select
		$.uarnetOrder.hideTCity();
		$.uarnetOrder.hideStreet();
		$.uarnetOrder.hideTStreet();
		if($('#city').attr('value') == -1){
			$.uarnetOrder.showTCity();
			$.uarnetOrder.showTStreet();
		}else{
			$.getJSON('',{
				'cmd':'streets',
				'eID':'tx_rhmuarnetorder_address',
				'city': $('#city').attr('value'),
				'L': $('#l').attr('value')
			},
			function(data){
				var count = $.uarnetOrder.fillStreets(data);
				if(count > 1){
						$.uarnetOrder.showStreet();
					}else{
						$.uarnetOrder.showTStreet();
				}
			});
		}
    });
	$('#street').change(function(){
		//If value > -1 hide tstreet input
		if($('#street').attr('value') > -1){
			$.uarnetOrder.hideTStreet();
		}else{
			$.uarnetOrder.showTStreet();
		}
	});
});