var m_bFirstClick = true;

function TRSHTMLTr_isInvalidElement(_currElement){	
	var elTemp = _currElement;
	for(var i=0; i<10; i++){
		if(elTemp == null)return false;
		if(elTemp.tagName == "A")return true;		

		if(elTemp.tagName == "INPUT" && elTemp.type != "checkbox" && elTemp.type != "radio")return true;		

		if(elTemp.tagName == "INPUT" && (elTemp.type == "checkbox" || elTemp.type == "radio") && elTemp.bTrigger)return true;		
		

		elTemp = elTemp.parentElement;
	}
	return false;
}
function TRSHTMLTr_onSelectedTR(_elTR){
	var elEvent = window.event.srcElement;
	//不响应某些元素的点击
	if(TRSHTMLTr_isInvalidElement(elEvent))
		return;
	//参数校验
	if(_elTR == null){
		CTRSAction_alert("调用错误!");
		return;
	}

	var bHasRadio = false;
	var arInputs = _elTR.getElementsByTagName("INPUT");
	var nInputCount = arInputs.length || 0;
	for(var n=0; n<nInputCount; n++){
		if(arInputs[n].type == "radio"){
			bHasRadio = true;
			break;
		}
	}

	if(m_bFirstClick ){
		m_bFirstClick = false;
		if(_elTR.className != this.unselectedClassName){
			this.unselectedClassName = _elTR.className;
			this.selectedClassName = _elTR.className + "_selected";
		}
	}

	//判断Ctrl键是否按下
	//if(!(window.event.ctrlKey || (elEvent.tagName == "INPUT" && elEvent.type == "checkbox")) || bHasRadio)
	//qzj,20060329,去掉上面一行，添加下面一行，修改为选择一行的时候可以多选，而不是把其他的给取消掉。
	if(bHasRadio)
	{//取消以前的选择
		for(var i=(this.arElCheckBeforeSelect.length-1); i>=0; i--){
			if(this.arElTRBeforeSelect[i] != _elTR){
				this.arElCheckBeforeSelect[i].bTrigger = true;
				if(this.arElCheckBeforeSelect[i].checked){
					this.arElCheckBeforeSelect[i].click();
				}
				this.arElCheckBeforeSelect[i].bTrigger = false;
			}
			this.arElCheckBeforeSelect.pop();

			if(this.arElTRBeforeSelect[i] != _elTR){
				this.arElTRBeforeSelect[i].className		= this.unselectedClassName;
			}
			this.arElTRBeforeSelect.pop();
		}
	}
	
	//获取Checkbox		
	var bChecked = false;
	if(elEvent.tagName == "INPUT" && (elEvent.type == "checkbox" || elEvent.type == "radio"))
	{//Checkbox点击		
		bChecked = elEvent.checked;
		//记录选中的元素			
		if(bChecked){
			this.arElCheckBeforeSelect[this.arElCheckBeforeSelect.length]	= elEvent;
			this.arElTRBeforeSelect[this.arElTRBeforeSelect.length]			= _elTR;
		}
		
	}else{//TR点击
		if(arInputs.length == 0){
			CTRSAction_alert("没有定义INPUT!");
			return;
		}
		
		for(var i=0; i<arInputs.length; i++){
			if(arInputs[i].type == "checkbox"){
				arInputs[i].bTrigger = true;
				arInputs[i].click();
				arInputs[i].bTrigger = false;
				
				if(arInputs[i].checked)
					bChecked = true;
				break;
			}
			// 如果是单选框的话，也是再点一次去掉选中状态，这样更合理，实现什么功能也方便ZhangJiashuang@2009-05-22
			if(arInputs[i].type == "radio"){
				arInputs[i].bTrigger = true;
				arInputs[i].checked = !arInputs[i].checked;
				arInputs[i].bTrigger = false;
				
				if(arInputs[i].checked)
					bChecked = true;
				break;
			}
		}
		//记录选中的元素			
		if(bChecked){
			this.arElCheckBeforeSelect[this.arElCheckBeforeSelect.length]	= arInputs[i];
			this.arElTRBeforeSelect[this.arElTRBeforeSelect.length]			= _elTR;
		}

		
	}

	//设置样式
	if(bChecked){
		_elTR.className = this.selectedClassName;
	}else{
		_elTR.className = this.unselectedClassName;
	}
		
}

function CTRSHTMLTr(){
	this.unselectedClassName	= "list_tr";
	this.selectedClassName		= "list_tr_selected";
	this.arElCheckBeforeSelect	= [];
	this.arElTRBeforeSelect		= [];	
}

CTRSHTMLTr.prototype.onSelectedTR = TRSHTMLTr_onSelectedTR;

var TRSHTMLTr = new CTRSHTMLTr();

