| 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;
 
 
  |