var W3C = {
	
	start: function(){
		
		//select elements
		
		W3C.Legends = $$('legend.toggletext');
		
		W3C.TabSet = $('tabset_tabs');
		
		W3C.Tabs = W3C.TabSet.getElements('li');
		W3C.TabLinks = W3C.TabSet.getElements('a');
		
		W3C.Sections = $$('fieldset.tabset_content');
		W3C.Submits = $$('input[type=submit]');
		W3C.Forms = $$('form');
		
		W3C.Submits.each(function(submit, i){
			var value = submit.value;
			submit.setStyle('display', 'none');
			var link = new Element('a', {'class': 'submit', 'href': '#'});
			var span = new Element('span').setHTML(value).inject(link);
			link.injectAfter(submit).addEvent('click', function(event){
				new Event(event).stop();
				W3C.Forms[i].submit();
			});
		});
		
		
		//initialize effects arrays
		
		W3C.SectionFx = [];
		
		//creating event listeners on tabs
		
		W3C.Tabs.each(function(li, i){
			var link = li.getFirst();
			link.href = link.original = '#' + link.href.split('#')[1].replace(/-/g, '_');
			li.addEvent('click', function(){
				W3C.updateLocation();
				W3C.displaySection(i);
			});
		});
		
		//updating the location
		
		W3C.updateLocation();
		
		
		//attaching the Sections effects, and display section based on the uri
		
		W3C.Sections.each(function(section, i){
			var fakeId = section.id.replace(/-/g, '_');
			W3C.SectionFx[i] = new Fx.Style(section, 'opacity', {'wait': false, 'duration': 220});
			section.setStyle('display', 'none');
			if (W3C.Location[0] && fakeId.contains(W3C.Location[0].replace(/-/g, '_'))){
				W3C.displaySection(i, true);
				W3C.Located = true;
			}
		});
		
		//displaying the first section if no one is located
		
		if (!W3C.Located) W3C.displaySection(0, true);
		
		if (window.ie) $$('legend').setStyle('margin-left', '-0.4em');
	},
	
	updateLocation: function(){
		W3C.Location = window.location.hash.replace('#', '').split('+');
	},
	
	
	displaySection: function(i, sudden){
		W3C.Sections.each(function(section, j){
			var block = section.getStyle('display') == 'block';
			if (j == i){
				if (block) return;
				W3C.Sections[j].setStyles({'opacity': sudden ? 1 : 0, 'display': 'block'});
				if (!sudden) W3C.SectionFx[j].start(1);
			} else {
				if (!block) return;
				W3C.Sections[j].setStyles({'display': 'none', 'opacity': 0});
			}
		});
		
		W3C.Tabs.each(function(link, j){
			if (j == i) link.addClass('selected');
			else link.removeClass('selected');
		});
	},
	
	setHash: function(hash){
		if (window.webkit419){
			W3C.FakeForm = W3C.FakeForm || new Element('form', {'method': 'get'}).injectInside(document.body);
			W3C.FakeForm.setProperty('action', '#' + hash).submit();
		} else {
			window.location.hash = hash;
		}
	}
	
};

window.addEvent('domready', W3C.start);
