// JavaScript Document for Mike Behnke, Homework 6, INP271 
var hw6 = {
	
	//object variables
	hdrDivs : [], hdrH3s : [], totalHdrs : null,
	tbutton : [], totalTbuttons : null,
	toggleBox : null, tboxButtons : [],	
	dataTables : [], totalDataTables : null, measureNum : [],
	
	init : function () {
		if (!hw6.totalDataTables) {hw6.getTables();}
		if (!hw6.toggleBox) {hw6.createTogglebox();}
		if (!hw6.totalTbuttons) {hw6.createTogglebuttons();}
		
		//Setup event triggers
		hw6.setToggles();
		
		//Check display status cookies and call appropriate function
		switch (jslib.findCookie('status')) {
			case 'hideall' : hw6.hideAll(); break;
			case 'showall' : hw6.showAll(); break;
			case 'mixed' : hw6.restoreToggles(); break;
			default : hw6.hideAll(); break;
		}	
	},
	
	createTogglebox : function () {
		if (!document.getElementById && !document.getElementsByTagName && !document.createElement) {return;}
		var theBody = document.getElementsByTagName('body')[0];
		var loginDiv = jslib.getObj('login');
		hw6.toggleBox = document.createElement('div');
		hw6.toggleBox.setAttribute('id', 'togglebox');
		var tbbv = ['Show All Measure Data','Hide All Measure Data'];
		for (var i=0; i<2; i++) {
			hw6.tboxButtons[i] = document.createElement('input');
			hw6.tboxButtons[i].setAttribute('type', 'button');
			hw6.tboxButtons[i].setAttribute('value', tbbv[i]);
			hw6.toggleBox.appendChild(hw6.tboxButtons[i]);
		}
		theBody.insertBefore(hw6.toggleBox, loginDiv);
	},
	
	createTogglebuttons : function () {
		if (!document.getElementByTagName && !document.createElement) {return;}
		hw6.hdrDivs = jslib.getElementsByClass('hdr',null,'div');		
		hw6.totalHdrs = hw6.hdrDivs.length;
		for (var i=0; i<hw6.totalHdrs; i++) {
			hw6.hdrH3s[i] = hw6.hdrDivs[i].getElementsByTagName('h3')[0];
			hw6.tbutton[i] = document.createElement('input');
			hw6.measureNum[i] = hw6.dataTables[i].id.match(/\d+$/);
			hw6.tbutton[i].setAttribute('value', 'Show Measure ' + hw6.measureNum[i] + ' Data');
			hw6.tbutton[i].setAttribute('type', 'button');
			hw6.hdrDivs[i].insertBefore(hw6.tbutton[i],hw6.hdrH3s[i]);
		}		
		//associate toggle buttons with tables
			for (var i=0;i<hw6.totalDataTables;i++) {
				hw6.dataTables[i].number = i;
				hw6.tbutton[i].number = i;
			}
	},
	
	getTables : function () {
		//get the data tables so they can be hidden
		if(document.getElementsByTagName) {
			hw6.dataTables = document.getElementsByTagName('table');
			hw6.totalDataTables = hw6.dataTables.length;			
		}
	},
	
	setToggles : function () {
		jslib.addEvent(hw6.tboxButtons[0],'click',hw6.showAll);
		jslib.addEvent(hw6.tboxButtons[1],'click',hw6.hideAll);
		hw6.totalTbuttons = hw6.tbutton.length;
		for (i=0;i<hw6.totalTbuttons;i++) {
			jslib.addEvent(hw6.tbutton[i],'click',hw6.showHideOne);
		}
	},
	
	showAll : function () {
		for (var i=0;i<hw6.totalDataTables;i++) {
			hw6.dataTables[i].className = '';
			hw6.tbutton[i].setAttribute('value','Hide Measure ' + hw6.measureNum[i] + ' Data');
			jslib.createCookie(hw6.dataTables[i].id,'show');
		}	
		jslib.createCookie('status','showall');
	},
	
	hideAll : function () {
		for (var i=0;i<hw6.totalDataTables;i++) {
			hw6.dataTables[i].className = 'hide';
			hw6.tbutton[i].setAttribute('value','Show Measure ' + hw6.measureNum[i] + ' Data');
			jslib.createCookie(hw6.dataTables[i].id,'hide');
		}	
		jslib.createCookie('status','hideall');
	},
		
	showHideOne : function () {
		if (hw6.dataTables[this.number].className == 'hide') {
			hw6.dataTables[this.number].className = '';
			hw6.tbutton[this.number].setAttribute('value','Hide Measure ' + hw6.measureNum[this.number] + ' Data');
			jslib.createCookie(hw6.dataTables[this.number].id,'show');
		} else {
			hw6.dataTables[this.number].className = 'hide';
			hw6.tbutton[this.number].setAttribute('value','Show Measure ' + hw6.measureNum[this.number] + ' Data');
			jslib.createCookie(hw6.dataTables[this.number].id, 'hide');			
		}
		jslib.createCookie('status','mixed');
	},
	
	restoreToggles : function () {
		for (var i=0;i<hw6.totalDataTables;i++) {
			if (jslib.findCookie(hw6.dataTables[i].id) == 'show') {
				hw6.dataTables[i].className = '';
				hw6.tbutton[i].setAttribute('value','Hide Measure ' + hw6.measureNum[i] + ' Data');
			} else {
				hw6.dataTables[i].className = 'hide';
				hw6.tbutton[i].setAttribute('value','Show Measure ' + hw6.measureNum[i] + ' Data');		
			}
		}
	}
		
}

jslib.addEvent(window,'load',hw6.init);
