function getRowCount(table){
	var tbody;
	for(var i=0;i<table.childNodes.length;i++){
		var tagName = table.childNodes[i].tagName;
		if(tagName != undefined && tagName.toLowerCase() == 'tbody'){
			tbody = table.childNodes[i];
			break;
		}
	}
	var count = 0;
	for(var i=0;i<tbody.childNodes.length;i++){
		var tagName = tbody.childNodes[i].tagName;
		if(tagName != undefined && tagName.toLowerCase() == 'tr')
			count++;
	}
	return count;
}

function getRow(table, index){
	var tbody;
	for(var i=0;i<table.childNodes.length;i++){
		var tagName = table.childNodes[i].tagName;
		if(tagName != undefined && tagName.toLowerCase() == 'tbody'){
			tbody = table.childNodes[i];
			break;
		}
	}
	var tr;
	for(var i=0;i<tbody.childNodes.length;i++){
		var tagName = tbody.childNodes[i].tagName;
		tr = tbody.childNodes[i];
		if(tagName != undefined && tagName.toLowerCase() == 'tr' && (index--)==0)
			break;
	}
	return tr;
}

function getIndex(child){
	var parent = child.parentNode;
	for(var i=0;i<parent.childNodes.length;i++){
		if(parent.childNodes[i] == child)
			return i;
	}
}


function sortAsc(table, colIndex, type){
	for(var i=1;i<getRowCount(table)-1;i++){
		for(var j=i+1;j<getRowCount(table);j++){
			var tr1 = getRow(table, i);
			var tr2 = getRow(table, j);
			var content1 = t_stripTags(tr1.childNodes[colIndex].innerHTML);
			var content2 = t_stripTags(tr2.childNodes[colIndex].innerHTML);
			if(type == 'string'){
				if(content1.toLowerCase() > content2.toLowerCase())
					swap(tr1,tr2);
			}
			else if(type == 'number'){
				if(parseInt(content1) > parseInt(content2))
					swap(tr1,tr2);
			}
		}
	}
}

function sortDesc(table, colIndex, type){
	for(var i=1;i<getRowCount(table)-1;i++){
		for(var j=i+1;j<getRowCount(table);j++){
			var tr1 = getRow(table, i);
			var tr2 = getRow(table, j);
			var content1 = t_stripTags(tr1.childNodes[colIndex].innerHTML);
			var content2 = t_stripTags(tr2.childNodes[colIndex].innerHTML);
			if(type == 'string'){
				if(content1.toLowerCase() < content2.toLowerCase())
					swap(tr1,tr2);
			}
			else if(type == 'number'){
				if(parseInt(content1) < parseInt(content2))
					swap(tr1,tr2);
			}
		}
	}
}

function swap(tr1,tr2){
	for(var i=0;i<tr1.childNodes.length;i++){
		var t = tr1.childNodes[i].innerHTML;
		tr1.childNodes[i].innerHTML = tr2.childNodes[i].innerHTML;
		tr2.childNodes[i].innerHTML = t;
	}
}

function t_stripTags(ins){
	return ins.replace(new RegExp('<\/?()[^>]*>','gi'),'');
}

function sleep(ms){
	var t = new Date().getTime();
	while(new Date().getTime()-t < ms){}
}
