var ChainedSelect = new Class(
	{
		Implements : [Options],
		options : {
			paramName:'selected',
			loadingClass:'loading'
		},
		initialize : function(select, options) {
			this.setOptions(options);
			this.selects = [];
			this.position = 0;
			this.selects.push(document.id(select));
		},
		chain : function(select, url) {
			select = document.id(select)
			this.bindEvents(this.selects[this.position], select, url, this.position);
			this.selects.push(select);
			this.position++;
		},
		bindEvents:function(select, next, url, currentPos){
			var cs = this;
			select.addEvent('change', function(e){
				cs.selects.each(function(sel, index){
					if(index > currentPos)
						sel.set('html', '');
				});
				next.addClass(cs.options.loadingClass);
				var data = new Hash()
				data.set(cs.options.paramName, select.value);
				
				new Request({
					url:url,
					data:data,
					onSuccess: function(html){
						next.set('html', html);
						next.removeClass(cs.options.loadingClass);
					},
					onFailure: function(){
						next.set('text', 'hubo un error en '+url+' por favro verifique es la url de actualziacion es correcta');
					}
					
				}).send(data);
			}, this);
		}
});