function get_response_text ( req ) {
	var text = req.responseText;
	if ( navigator.appVersion.indexOf( "KHTML" ) > -1 ) {
		var esc = escape( text );
		if ( esc.indexOf("%u") < 0 && esc.indexOf("%") > -1 ) {
			text = decodeURIComponent( esc );
		}
	}
	return text;
}

var readTSV = Class.create({
	objName:"readTSV",
	header:null,
	data:null,
	tempData:null,
	initialize:function(req){
		var rows = get_response_text(req).split("\n");
		//var rows = req.responseText.split("\n");
		this.header = rows[0].split("\t");
		this.data = new Array();
		for(i=0;i<rows.length;i++){
			row = rows[i].split("\t");
			this.data[i] = new Array();
			for(n=0;n<row.length;n++){
				this.data[i][ this.header[n] ] = row[n];
			}
		}
		this.tempData = this.data;
	},
	selectCols:function(keyName){
		var result = new Array();
		for(i=1;i<this.data.length;i++){
			result[i] = this.data[i][keyName];
		}
		return result;
	},
	selectColsList:function(keyName){
		var result = new Array();
		for(i=1;i<this.data.length;i++){
			if(result.indexOf(this.data[i][keyName])==-1 && this.data[i][keyName]!=""){
				result.push(this.data[i][keyName]);
			}
		}
		return result;
	},
	selectRows:function(keyName,value,useTemp){
		var data = (useTemp) ? this.tempData : this.data;
		
		var result = new Array();
		
		for(i=0;i<data.length;i++){
			if(data[i][keyName]==value){ result.push(this.data[i]); }
		}
		return result;
	},
	resetTemp:function(){
		this.tempData = this.data;
	}
});
