/**
 * dollarConflict Replaced -> $j
 */
var domSlider = jClass.extend({
	appName:'domSlider',
	elements: null,
	options: {
		mode:'siblings',
		hideonload:true,
		button:{
			position:'into',
			type:'span',
			text:'click me',
			classes:[
				'toggleButton',
				'toggledButton'
			]
		}
	},
	init: function(elements,options) {
		var options = $j.extend(true,this.options,options);
		this.options = options;
		this.elements = $j(elements);

		if(this.elements.length != 0){
			this.prepare();
		}else{
			this.log(this.appName+' :no elements ');
		}
	},
	prepare:function(){
		this.elements.each(
			$j.shove(function(index,el){
				var button = this.getButton();
				switch(this.options.mode){
					case 'siblings':
						var content = $j(el).siblings(this.options.content);
					break;
					case 'childs':
						var content = $j(el).children(this.options.content);
					break;
				}
				
				if(this.options.hideonload) content.hide();
				
				/* add functionality for toggle classes*/
				button.click($j.shove(function(){
					if(this.options.button.classes.length == 2){
						$j(button).toggleClass(this.options.button.classes[0]);
						$j(button).toggleClass(this.options.button.classes[1]);
					}
				},this));

				button.click($j.shove(function(){
					if (this.is(":hidden")){
					    this.slideDown("slow");
					} else {
					    this.slideUp("slow");
					} 
				},content));
								
				switch(this.options.button.position){
					case 'into':
						$j(el).append(button);
					break;
					case 'after':
						$j(el).after(button);
					break;
					case 'before':
						$j(el).before(button);	
					break;
					default:
						$j(el).append(button);
				}
		},this));
	},
	getButton:function(){
		if(this.options.button.type =="button") this.options.button.type="span"; 
		var button = $j("<"+this.options.button.type+">").addClass(this.options.button.classes[0]).text(this.options.button.text);
		return button;
	},
	log:function(msg){
		if(console){
			console.log(msg);
		} else {
			alert(msg);
		}
	}
});