var  eventlock = new Array(); 

function thumkaHide(id) {
	
	var abj = document.getElementById(id);
	while(abj.tagName != 'TABLE') {
		abj = abj.parentNode;
	}
	
	var TRs = abj.getElementsByTagName('tr');
	var n = 0;
	while(TRs[n].id != id) {
		n++;
	}

	this.obj = TRs[n+1].getElementsByTagName('table')[0];
	this.limit = - this.obj.offsetHeight,
	this.momentum = 15, // higher is faster but should be more than 1
	this.interval = 30 // Time Interval. browser is comfortable with 20 as minimum
	this.obj.parentNode.style.overflow = 'hidden';
	
	var val = this.obj.style.marginTop ? parseInt(this.obj.style.marginTop) : 0; // Current property value for slider obj
	//alert(val + ', ' + this.limit);
	if(val > (this.limit+momentum)) {
		if(eventlock[id] == -1 || eventlock[id] == undefined) {
			eventlock[id] = window.setInterval(function() { new thumkaHide(id) }, this.interval);
		} else {
			if(parseInt(this.obj.style.marginTop) == 0 || !this.obj.style.marginTop) {
				this.obj.style.marginTop = (40 + 1) + 'px';
			} else {
				momentum = (val > 0) ? 7.5 : momentum;
				this.obj.style.marginTop = (val - momentum) + 'px';
			}
		}
	} else {
		window.clearInterval(eventlock[id]);
		this.obj.style.overflow = '';
		eventlock[id] = -1;
		this.obj.style.marginTop  = this.limit + 'px';
		
		var objTRs = this.obj.getElementsByTagName('tr');
		
		var objTRsTDs = objTRs[objTRs.length - 1].getElementsByTagName('td');
		
		var TDs = TRs[n].getElementsByTagName('td');
		for(var j=1; j< TDs.length; j++) {
			TDs[j].innerHTML = objTRsTDs[j].innerHTML;
			TDs[j].innerHTML = objTRsTDs[j].innerHTML;
			TDs[j].className =  objTRsTDs[j].className;
		}
		TDs[0].getElementsByTagName('a')[0].className = 'hidden';
		TDs[0].getElementsByTagName('a')[0].href = 'javascript:thumkaShow("' + id + '")';
		
		
	}
}




function thumkaShow(id) {

	var abj = document.getElementById(id);
	while(abj.tagName != 'TABLE') {
		abj = abj.parentNode;
	}
	
	var TRs = abj.getElementsByTagName('tr');
	var n = 0;
	while(TRs[n].id != id) {
		n++;	
	}

	this.obj = TRs[n+1].getElementsByTagName('table')[0];
	
	this.obj.parentNode.style.overflow = 'hidden';

	if($$$.hasClass(this.obj, 'hideTab')) {
		$$$.removeClass(this.obj, 'hideTab');
		$$$.addClass(this.obj, 'openTab');
		this.obj.style.marginTop =  '-' + parseInt(this.obj.offsetHeight) + 'px';
	}
	
	this.limit = 0,
	this.momentum = 15, // higher is faster but should be more than 1
	this.interval = 30 // Time Interval. browser is comfortable with 20 as minimum
	this.obj.parentNode.style.overflow = 'hidden';
	
	var objTRs = this.obj.getElementsByTagName('tr');
		
	var objTRsTDs = objTRs[objTRs.length - 1].getElementsByTagName('td');
	
	var TDs = TRs[n].getElementsByTagName('td');
	for(var j=1; j< TDs.length; j++) {
		TDs[j].innerHTML = '';
	}
	TDs[0].getElementsByTagName('a')[0].href = 'javascript:thumkaHide("' + id + '")';
	TDs[0].getElementsByTagName('a')[0].className = 'visible';
	
	var val = parseInt(this.obj.style.marginTop); // Current property value for slider obj
	
	if(val < momentum + 10) {
		if(eventlock[id] == -1 || eventlock[id] == undefined) {
			eventlock[id] = window.setInterval(function() { new thumkaShow(id) }, this.interval);
		} else {
			if(parseInt(this.obj.style.marginTop) == 0 || !this.obj.style.marginTop) {
				this.obj.style.marginTop = (20 + 1) + 'px';
			} else {
				momentum = (val > 0) ? (momentum - momentum/3.5) : momentum;
				this.obj.style.marginTop = (val + momentum) + 'px';
			}
		}
	} else {
		window.clearInterval(eventlock[id]);
		this.obj.style.overflow = '';
		eventlock[id] = -1;
		this.obj.style.marginTop = limit + 'px';
		

	}

}