| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184 | /* 	Tablecloth 	written by Alen Grakalic, provided by Css Globe (cssglobe.com)	please visit http://cssglobe.com/lab/tablecloth/	*/this.tablecloth = function(){		// CONFIG 		// if set to true then mouseover a table cell will highlight entire column (except sibling headings)	var highlightCols = true;		// if set to true then mouseover a table cell will highlight entire row	(except sibling headings)	var highlightRows = true;			// if set to true then click on a table sell will select row or column based on config	var selectable = true;		// this function is called when 	// add your own code if you want to add action 	// function receives object that has been clicked 	this.clickAction = function(obj){		//alert(obj.innerHTML);			};		// END CONFIG (do not edit below this line)			var tableover = false;	this.start = function(){		var tables = document.getElementsByTagName("table");		for (var i=0;i<tables.length;i++){			tables[i].onmouseover = function(){tableover = true};			tables[i].onmouseout = function(){tableover = false};						rows(tables[i]);		};	};		this.rows = function(table){		var css = "";		var tr = table.getElementsByTagName("tr");		for (var i=0;i<tr.length;i++){			css = (css == "odd") ? "even" : "odd";			tr[i].className = css;			var arr = new Array();			for(var j=0;j<tr[i].childNodes.length;j++){								if(tr[i].childNodes[j].nodeType == 1) arr.push(tr[i].childNodes[j]);			};					for (var j=0;j<arr.length;j++){								arr[j].row = i;				arr[j].col = j;				if(arr[j].innerHTML == " " || arr[j].innerHTML == "") arr[j].className += " empty";									arr[j].css = arr[j].className;				arr[j].onmouseover = function(){					over(table,this,this.row,this.col);				};				arr[j].onmouseout = function(){					out(table,this,this.row,this.col);				};				arr[j].onmousedown = function(){					down(table,this,this.row,this.col);				};				arr[j].onmouseup = function(){					up(table,this,this.row,this.col);				};								arr[j].onclick = function(){					click(table,this,this.row,this.col);				};											};		};	};		// appyling mouseover state for objects (th or td)	this.over = function(table,obj,row,col){		if (!highlightCols && !highlightRows) obj.className = obj.css + " over";  		if(check1(obj,col)){			if(highlightCols) highlightCol(table,obj,col);			if(highlightRows) highlightRow(table,obj,row);				};	};	// appyling mouseout state for objects (th or td)		this.out = function(table,obj,row,col){		if (!highlightCols && !highlightRows) obj.className = obj.css; 		unhighlightCol(table,col);		unhighlightRow(table,row);	};	// appyling mousedown state for objects (th or td)		this.down = function(table,obj,row,col){		obj.className = obj.css + " down";  	};	// appyling mouseup state for objects (th or td)		this.up = function(table,obj,row,col){		obj.className = obj.css + " over";  	};		// onclick event for objects (th or td)		this.click = function(table,obj,row,col){		if(check1){			if(selectable) {				unselect(table);					if(highlightCols) highlightCol(table,obj,col,true);				if(highlightRows) highlightRow(table,obj,row,true);				document.onclick = unselectAll;			}		};		clickAction(obj); 			};				this.highlightCol = function(table,active,col,sel){		var css = (typeof(sel) != "undefined") ? "selected" : "over";		var tr = table.getElementsByTagName("tr");		for (var i=0;i<tr.length;i++){				var arr = new Array();			for(j=0;j<tr[i].childNodes.length;j++){								if(tr[i].childNodes[j].nodeType == 1) arr.push(tr[i].childNodes[j]);			};										var obj = arr[col];			if (check2(active,obj) && check3(obj)) obj.className = obj.css + " " + css; 				};	};	this.unhighlightCol = function(table,col){		var tr = table.getElementsByTagName("tr");		for (var i=0;i<tr.length;i++){			var arr = new Array();			for(j=0;j<tr[i].childNodes.length;j++){								if(tr[i].childNodes[j].nodeType == 1) arr.push(tr[i].childNodes[j])			};							var obj = arr[col];			if(check3(obj)) obj.className = obj.css; 		};	};		this.highlightRow = function(table,active,row,sel){		var css = (typeof(sel) != "undefined") ? "selected" : "over";		var tr = table.getElementsByTagName("tr")[row];				for (var i=0;i<tr.childNodes.length;i++){					var obj = tr.childNodes[i];			if (check2(active,obj) && check3(obj)) obj.className = obj.css + " " + css; 				};	};	this.unhighlightRow = function(table,row){		var tr = table.getElementsByTagName("tr")[row];				for (var i=0;i<tr.childNodes.length;i++){			var obj = tr.childNodes[i];						if(check3(obj)) obj.className = obj.css; 					};	};	this.unselect = function(table){		tr = table.getElementsByTagName("tr")		for (var i=0;i<tr.length;i++){			for (var j=0;j<tr[i].childNodes.length;j++){				var obj = tr[i].childNodes[j];					if(obj.className) obj.className = obj.className.replace("selected","");			};		};	};	this.unselectAll = function(){		if(!tableover){			tables = document.getElementsByTagName("table");			for (var i=0;i<tables.length;i++){				unselect(tables[i])			};				};	};		this.check1 = function(obj,col){		return (!(col == 0 && obj.className.indexOf("empty") != -1));	}	this.check2 = function(active,obj){		return (!(active.tagName == "TH" && obj.tagName == "TH")); 	};	this.check3 = function(obj){		return (obj.className) ? (obj.className.indexOf("selected") == -1) : true; 	};			start();	};/* script initiates on page load. */window.onload = tablecloth;
 |