var AZList = new Class({
	Implements: [Options],
	el:'azList',
	elFx:null,
	elTog:'toggleAz',
	opened:false,
	options:{
		initOpen:false,
		hideRegEx:/hide/i,
		showRegEx:/show/i,
		hideText:'',
		showText:''
	},
	initialize: function(el, elTog, options){
		if(el)this.el = el;
		this.el = $(this.el);
		if(elTog)this.elTog = elTog;
		this.elTog = $(this.elTog);
		if(this.el){
			this.setOptions(options);				
			this.elFx = new Fx.Slide(this.el,{duration: 'short', transition: Fx.Transitions.Quad.easeOut}).hide();
			this.el.setStyle('visibility','visible');
			this.elTog.addEvent('click', function(e){
				var ev = new Event(e);
				ev.stop();
				this.toggleList();
			}.bind(this));
			// set initial state
			if(this.options.initOpen){
				this.toggleList();
				//this.elFx.toggle();				
			}
		}
		else{
			if(this.elTog){
				//hide toggle element
				this.elTog.setStyle('visibility','hidden');
			}
		}		
	},
	
	toggleList: function(){
		this.elFx.toggle();
		this.opened = !this.opened;
		this.setToggleText(this.opened);
	},
	
	setToggleText: function(isOpened){

		if((this.options.showText) && (this.options.hideText)){
			var replaceText = this.options.showText;
			if(isOpened)replaceText = this.options.hideText;
			this.elTog.set('html', replaceText)
		}
		else{
			var fnd = /hide/i
			var rep = 'Show';
			if(this.opened){fnd = /show/i;rep = 'Hide'}
			this.elTog.set('html', this.elTog.get('html').replace(fnd,rep));
		}
	}
});

//window.addEvent('domready', function(){var azList = new AZList('azList', 'toggleAz');});

