var box_toggle = new Class({
	params: {},
	initialize: function(params) {
		this.create(params);
	},
	create: function(params) {
		var aTariffs = $$('a.tariffToggle');
		var aDetails = $$('.tariffDetailHidden');
		
		
		this.default_tariff = params.default_tariff;
		
		for (var i = 0; i < aTariffs.length; i++) {
			var tariff = aTariffs[i];
			var type = 'tariff';
			new Toggle_Element(tariff, type, this, params.default_tariff);
		}
		
		for (var i = 0; i < aDetails.length; i++) {
			var detail = aDetails[i];
			var type = 'details';
			new Toggle_Element(detail, type, this, params.default_tariff);
		}	
	}
});

var Toggle_Element = new Class({
	initialize: function(element, type, parent, default_tariff){
		this.default_tariff = default_tariff;
		this.element = $(element.id);
		this.type = type;
		
		if(this.type == 'details'){
			this.setupDetails();
		}else{
			this.setupTariff();
		}
	},
	setupDetails: function(){
		ulElement = new Element('ul',{'class':'simpleLinkList'});
		liElement = new Element('li',{'class':'last'});
		this.aElement = new Element('a',{'href':'http://www.o2.co.uk/termsandconditions/tariffsandboltons','html':'Extra details'});
		
		liElement.appendChild(this.aElement);
		ulElement.appendChild(liElement);
		
		ulElement.inject(this.element, 'before');
		
		this.toggleDetails = new Fx.Slide(this.element).hide();
		this.aElement.addEvent('click', this.toggler.bind(this));	
	},	
	setupTariff: function(){
		this.element.addEvent('click', this.toggler.bind(this));		
		
		if(this.type == 'tariff'){			
			if(this.element.id == this.default_tariff){
				tariffBox = $(this.element.id).getParents('div.tariffBox');
				tariffBox.toggleClass('selected');
			}
			else
			{
				$('tariff_'+this.element.id).toggleClass('hidden');
			}
		}
	},
	toggler: function(e){
		if(this.type == 'tariff'){	
			$$('a.tariffToggle').each(this.closeTariffs.bind(this));
			tariffBox = $(this.element.id).getParents('div.tariffBox');
			tariffBox.toggleClass('selected');
			
			//$(this.element.id).toggleClass('choiceArrowDown');
			$('tariff_'+this.element.id).toggleClass('hidden');				
		}else if(this.type == 'details'){
			this.aElement.toggleClass('arrowDown');
			this.toggleDetails.toggle();
		}									
		e.stop();
	},
	closeTariffs: function(item){
		if(item.id != this.element.id){
			tariffBox = $(item.id).getParents('div.tariffBox');
			tariffBox.removeClass('selected');
			$('tariff_'+item.id).addClass('hidden');
		}
	}							
});	

