// page init
jQuery(function(){
	initOpenClose();
});

// open-close init
function initOpenClose() {
	jQuery('div.slide-block').OpenClose({
		activeClass:'active',
		opener:'a.open-close',
		slider:'div.block',
		effect:'slide',
		animSpeed:500
	});
}

// open-close plugin
jQuery.fn.OpenClose = function(_options){
	// default options
	var _options = jQuery.extend({
		activeClass:'active',
		opener:'.opener',
		slider:'.slide',
		animSpeed: 400,
		animStart:false,
		animEnd:false,
		effect:'fade',
		event:'click'
	},_options);

	return this.each(function(){
		// options
		var _holder = jQuery(this);
		var _slideSpeed = _options.animSpeed;
		var _activeClass = _options.activeClass;
		var _opener = jQuery(_options.opener, _holder);
		var _slider = jQuery(_options.slider, _holder);
		var _text = jQuery('.slider-text', _holder);
		var _animStart = _options.animStart;
		var _animEnd = _options.animEnd;
		var _effect = _options.effect;
		var _event = _options.event;
		var _textFadeSpeed = 300;
		if(_slider.length) {
			_opener.bind(_event,function(){
				if(!_slider.is(':animated')) {
					if(_holder.hasClass(_activeClass)) {
						var theQueue = $({}); // jQuery on an empty object
						theQueue.queue("queue",
						                function( next) {
											_text.fadeOut(_textFadeSpeed);
						                    next();
						                }
						            );
						theQueue.delay(_textFadeSpeed, "queue" );

						theQueue.queue("queue",
						                function( next) {
											_text.removeClass(_activeClass);
											_holder.removeClass(_activeClass);
											_text.fadeIn(_textFadeSpeed);
											_slider.slideUp(_slideSpeed);
						                    next();
						                }
						            );
						theQueue.delay( 1, "queue" );
						theQueue.dequeue("queue");
					}
					else {
						var theQueue = $({}); // jQuery on an empty object
						theQueue.queue("queue",
						                function( next) {
											_text.fadeOut(_textFadeSpeed);
						                    next();
						                }
						            );
						theQueue.delay(_textFadeSpeed, "queue" );

						theQueue.queue("queue",
						                function( next) {
											_text.addClass(_activeClass);
											_text.fadeIn(_textFadeSpeed);
											_slider.slideDown(_slideSpeed);
											_holder.addClass(_activeClass);
						                    next();
						                }
						            );
						theQueue.delay( 1, "queue" );
						theQueue.dequeue("queue");
						
						
					}
				}
				return false;
			});
		}
	});
}
