﻿var SimpleAccordion = new Class({
	options: {
		show: 0,
		entryWrapper: '.acc-wrapper',
		classHeader: '.acc-header',
		classContainer: '.acc-container',
		collapsedImage:basepath+'resources/workbidder/images/accordion_collapse_down.jpg',
		expandedImage:basepath+'resources/workbidder/images/accordion_collapse_up.jpg'
	},

	initialize: function(el, options) {
		this.setOptions(options);
		this.element = $(el);
		
		this.iCollapsed = new Image();
		this.iCollapsed.src = this.options.collapsedImage;
		this.iExpanded = new Image();
		this.iExpanded.src = this.options.expandedImage;
		
		this.build();
	},

	build: function() {
		this.entries = [];
		var index = 0;
		this.element.getElements(this.options.entryWrapper).each(function(el) {
		    var toggleElement = el.getElements(this.options.classHeader)[0];
		    var slideElement = el.getElements(this.options.classContainer)[0];
		    
		    toggleElement.setStyle('cursor','pointer');
		    var slide = new Fx.Slide(slideElement);
		    toggleElement.slide = slide;
		    var imgs = toggleElement.getElements('img[class=collapseImage]');
		    if (index == 0 && !slideElement.hasClass('acc-closed'))
		    {
		        slideElement.addClass('acc-opened');
		        toggleElement.setStyle('margin-top','0px')
		    }
		    else
		    {
		        if (index != 0)
		            toggleElement.setStyle('margin-top','10px')
		    }
		    
		        
		    if (!slideElement.hasClass('acc-opened')){
		        slide.hide();
		        if (imgs.length > 0){
		            imgs[0].collapseStatus=0; // Collapsed
		            imgs[0].src = this.iCollapsed.src;
		            imgs[0].setStyle('display','inline');
		        }
		    }
		    else
		    {
		        if (imgs.length > 0){
		            imgs[0].collapseStatus=1; // Expanded
		            imgs[0].src = this.iExpanded.src;
		            imgs[0].setStyle('display','inline');
		        }
		    }
		    var sender = this;
		    $(toggleElement).addEvent('click', function(e)
		    { 
		        e = new Event(e);
		        sender.toggleImage(toggleElement);
		        slide.toggle();
		        e.stop();
		    });
		    var entry = {tag: toggleElement.getAttribute('tag'), te:toggleElement, se:slideElement, s:slide};
		    this.entries.push(entry);
		    index ++;
		}, this);
	},
	toggleElement: function(toggleElement, slide){
	    this.toggleImage(toggleElement);
	    slide.toggle();
	},
	toggleImage: function(el) {
	    var imgs = el.getElements('img[class=collapseImage]');
	    
	    if (imgs.length > 0){
	        var img = imgs[0];
	        if (img.collapseStatus==1){
	            img.collapseStatus=0;
	            img.src = this.iCollapsed.src;
	            
	        }
	        else
	        {
	            img.collapseStatus=1;
	            img.src = this.iExpanded.src;
	        }
	    }
	},
	getEntryByTag: function(tag){
	    var result = null;
	    if (this.entries != null)
	        this.entries.each(function(el){if (el.tag == tag) {result = el; return result;}});
	        
	    return result;
	}
});

SimpleAccordion.implement(new Events, new Options);

