/**
 * @author ted
 */
(function($){
    $.fn.accordion = function(options){
        var defaults = {
            clickTrigger: 'accordion_click',
            divToHide: 'accordion_hide',
            speed: 'fast',
            openFirst: false,
            bgStartPosition: '0 0',
            bgFinishPosition: '0 100%'
        };
        
        var opt = $.extend(defaults, options)
        var targetObj = undefined;
        var targetId = undefined;
        var targetTrigger = undefined;
        var defaultIds = 1;
        var arr;
        var limit = 0;
        
        
        
        this.each(function(){
            var o = opt;
            var triggerClass = '.' + o.clickTrigger;
            var hideClass = '.' + o.divToHide;
            var containerId;
            
			
			$(hideClass).css('display', 'none');
			
            if ($(this).attr('id') == '') {
                $(this).attr('id', defaultIds);
                defaultIds += 1;
            }
            var containerId = '#' + $(this).attr('id');
            $(containerId + ' > ' + triggerClass).click(function(){
                if (targetObj == undefined) {
                    targetObj = containerId + ' > ' + hideClass;
                    targetId = containerId;
                    targetTrigger = triggerClass;
                    $(this).css('background-position', o.bgFinishPosition);
                    $(targetObj).slideDown(o.speed);
                }
                else {
                    if (containerId != targetId) {
                        $(targetObj).slideUp(o.speed);
                        $(targetTrigger).css('background-position', o.bgStartPosition);
                        targetObj = containerId + ' > ' + hideClass;
                        targetId = containerId;
                        targetTrigger = triggerClass;
                        $(this).css('background-position', o.bgFinishPosition);
                        $(targetObj).slideDown(o.speed);
                    }
                    else {
                        $(targetTrigger).css('background-position', o.bgStartPosition);
                        $(targetObj).slideUp(o.speed, function(){
                            targetObj = undefined;
                            targetId = undefined;
                            targetTrigger = undefined;
                        });
                    }
                }
                
            });
            
            
        })
		
		if (opt.openFirst) {
			var open = '.' + opt.divToHide + ':first';
			var _id = '#' + $(open).parent().attr('id')
			targetObj = _id + ' > ' + open;
			targetId = _id;
			targetTrigger = '.'+opt.clickTrigger;
			
			var clickOpen = _id + ' > .' + opt.clickTrigger;
			$(clickOpen).css('background-position', opt.bgFinishPosition);
			$(open).css('display', 'block');
		}
    }
})(jQuery)

