﻿// 过渡切换表格效果

var intervalProduct1=null;
var intervalProduct2=null;
var flagIsInInterval=false;//标记是否正在执行过渡效果
var hiddenTableObject=null;//正在被隐藏的对象
var displayTableObject=null;//正在被显示的对象
var displayTableObject_JiangYao=null;//将要被显示的表格对象
var browerType = detectBrower();
var currentChangeStatus = null;//当前切换内容，标记当前正在切换的内容，防止多个切换效果调用混乱。

//切换内容,执行切换效果返回true,否则返回false.
//status为标记当前切换模块的内容是什么，避免多个切换模块之问切换造成错误。
function changeContent(status,hiddenTableId,displayTableId){

    //正在切换状态时
    if (flagIsInInterval){
        if (status==currentChangeStatus){
            //alert('立即完成');
            //立即完成效果
            effectComplete();
            
        }
        else{//由于当前正在执行别的模块的切换操作，所以退出返回false
            return false;
        }
    }
    
    //保存当前内容状态
    currentChangeStatus = status;
    
    //开始切换效果
	var hiddenTable = document.getElementById(hiddenTableId);
	var displayTable = document.getElementById(displayTableId);

	//如果要显示的表格本身就是显示状态，方法退出返回false.
	if (displayTable.style.display==''){
	    return false;
	}
	
	displayTableObject_JiangYao = displayTable;
	if (browerType == "IE" || browerType=="Mozilla"){//切换效果支持浏览器:IE,Mozlla
	    intervalProduct1=setInterval(
	        function (){
	            hiddenInterval(hiddenTable,displayTable)
	        },5);
	}
	else{//不支持的浏览器直接显示隐藏,没有过渡效果
	    hiddenTable.style.display='none';
	    displayTable.style.display='';
	}
	
	return true;
}

//隐藏效果(按一时间执行),隐藏完成后,调用显示效果
function hiddenInterval(hiddenTable,displayTable){
    if (hiddenTable==null){
        return;
    }
    hiddenTable.style.display='';
    hiddenTableObject = hiddenTable;

    flagIsInInterval = true;
	var num;
	if (browerType == "IE"){ //IE
		if (hiddenTable.style.filter != ''){
			num = eval(hiddenTable.style.filter.substring(14,hiddenTable.style.filter.length-1) - 20);
		}
		else{
			num = 80;
		}
		if (num<=0){
			clearInterval(intervalProduct1);
			intervalProduct1 = null;
			hiddenTable.style.display='none';
			hiddenTable.style.filter = "alpha(opacity=0)";
			hiddenTable = null;
			hiddenTableObject = null;
			intervalProduct2=setInterval(
			    function (){
			        displayInterval(displayTable)
			    },50);
		}
		else{
		    hiddenTable.style.filter = "alpha(opacity="+num+")";
		}
	}
	else if (browerType=="Mozilla"){//Mozilla
		if (hiddenTable.style.opacity != ''){
		    if (parseFloat(hiddenTable.style.opacity)>10){
		        num = eval(parseFloat(hiddenTable.style.opacity/10) - 0.20);
		    }
		    else{
			    num = eval(parseFloat(hiddenTable.style.opacity) - 0.20);
			}
		}
		else{
			num = 0.80;
		}

		if (num<=0){
			clearInterval(intervalProduct1);
			intervalProduct1 = null;
			hiddenTable.style.display='none';
			hiddenTable.style.opacity = 0;
			hiddenTable = null;
			hiddenTableObject = null;
			intervalProduct2=setInterval(
			    function (){
			        displayInterval(displayTable)
			    },50);
		}
		else{
		    hiddenTable.style.opacity = num;
		}
	}
}

//显示效果(按一定时间执行)
function displayInterval(displayTable){

    if (displayTable==null){
        return;
    }
    displayTable.style.display='';
    displayTableObject = displayTable;

	var num;
	
	if (browerType=="IE"){ //IE
		if (displayTable.style.filter == '' || parseInt(displayTable.style.filter.substring(14,displayTable.style.filter.length-1))<40){
			num = 40;
		}
		else {
			num = eval(parseInt(displayTable.style.filter.substring(14,displayTable.style.filter.length-1)) + 5);
		}
		if (num>=100){
			clearInterval(intervalProduct2);
			intervalProduct2 = null;
			displayTable.style.filter = "alpha(opacity=100)";
			displayTable = null;
			displayTableObject = null;
			displayTableObject_JiangYao = null;
			flagIsInInterval = false;
		}
		else{
		    displayTable.style.filter = "alpha(opacity="+num+")";
		}
	}
	else if (browerType=="Mozilla"){//Mozilla
		if (displayTable.style.opacity == '' || parseFloat(displayTable.style.opacity)<0.4 || (parseFloat(displayTable.style.opacity)>10 && parseFloat(displayTable.style.opacity)<40)){
			num = 0.4;
		}
		else{
		    if (parseFloat(displayTable.style.opacity)>10){
			    num = eval(parseFloat(displayTable.style.opacity/10) + 0.05);
			}
			else{
			    num = eval(parseFloat(displayTable.style.opacity) + 0.05);
			}
		}
		if (num>=1){
			clearInterval(intervalProduct2);
			intervalProduct2 = null;
			displayTable.style.opacity = 1;
			displayTable = null;
			displayTableObject = null;
			displayTableObject_JiangYao = null;
			flagIsInInterval = false;
		}
		else{
		    displayTable.style.opacity = num;
		}
	}
}

//效果立即完成
function effectComplete(){
    if (intervalProduct1 != null){
        clearInterval(intervalProduct1);
    }
    if (intervalProduct2 != null){
        clearInterval(intervalProduct2);
    }
    if (browerType=="IE"){ //IE
        if (hiddenTableObject!=null){
            hiddenTableObject.style.filter = "alpha(opacity=0)";
            hiddenTableObject.style.display = "none";
        }
        if (displayTableObject!=null){
            displayTableObject.style.display = "";
            displayTableObject.style.filter = "alpha(opacity=100)";
        }
        else if (displayTableObject_JiangYao != null){
            //alert('displayTableObject_JiangYao not null.');
//            displayTableObject_JiangYao.style.display = "";
//            displayTableObject_JiangYao.style.filter = "alpha(opacity=100)";
            displayTableObject_JiangYao.style.display = "none";
            displayTableObject_JiangYao.style.filter = "alpha(opacity=0)";
        }
    }
    else if (browerType=="Mozilla"){//Mozilla
        if (hiddenTableObject!=null){
            //alert('hiddenTableObject not null.');
            hiddenTableObject.style.opacity = 0;
            hiddenTableObject.style.display = "none";
        }
        if (displayTableObject!=null){
            //alert('displayTableObject not null. '+displayTableObject.id);
            displayTableObject.style.display = "";
            displayTableObject.style.opacity = 100;
        }
        else if (displayTableObject_JiangYao != null){
            //alert('displayTableObject_JiangYao not null.');
            //displayTableObject_JiangYao.style.display = "";
            //displayTableObject_JiangYao.style.opacity = 100;
            displayTableObject_JiangYao.style.display = "none";
            displayTableObject_JiangYao.style.opacity = 0;
        }
    }
}