﻿// JScript 文件
function mytest()
{
   var strMessage = "";
   strMessage = "Start " + window.event.srcElement.checked;
   strMessage += " " + window.event.srcElement.name;
   strMessage += " " + window.event.srcElement.parentElement.tagName;
   strMessage += " " + window.event.srcElement.parentElement.parentElement.tagName;
   strMessage += " " + window.event.srcElement.parentElement.parentElement.parentElement.tagName;
   strMessage += " " + window.event.srcElement.parentElement.parentElement.parentElement.parentElement.tagName;
   strMessage += " " + window.event.srcElement.parentElement.parentElement.parentElement.parentElement.getElementsByTagName("INPUT").tagName;
   strMessage += " End";
   window.alert(strMessage);
}
function goDeeperUnChecked(obj) 
{ 
    var chk1 = false; 
    //Get the mom. 
    var head1 = obj.parentElement.previousSibling; 
    //no rows, cant do my work. 

    //This is how may rows are at this level.
    //修改后的版本http://forums.asp.net/2/1238700/ShowThread.aspx
    var pTreeLevel1;
    if (obj.rows == null || obj.rows == "undefined")
    {
        pTreeLevel1 = head1.rows[0].cells.length;
    }
    else
    {
        pTreeLevel1 = obj.rows[0].cells.length;
    }

    //window.alert("s-" + obj.id + "-" + pTreeLevel1);
    //This is how may rows are at this level. 之前的版本
    //var pTreeLevel1 = obj.rows[0].cells.length; 

    //Are we a mommy? 
    if(head1.tagName == "TABLE") 
    { 
        //Get the list of rows ahead of us. 
        var tbls = obj.parentElement.getElementsByTagName("TABLE"); 
        //get the count of that list. 
        var tblsCount = tbls.length; 

        //determine if any of the rows underneath are unchecked. 
        for (i=0; i < tblsCount; i++) 
        { 
            var childTreeLevel = tbls[i].rows[0].cells.length; 
            if (childTreeLevel = pTreeLevel1) 
            { 
                var chld = tbls[i].getElementsByTagName("INPUT"); 
                if (chld[0].checked == true) 
                { 
                    chk1 = true; 
                    break; 
                } 
            } 
        } 

        var nd = head1.getElementsByTagName("INPUT"); 
        nd[0].checked = chk1; 
        //do the same for the level above 
        goDeeperUnChecked(obj.parentElement); 
    } 
    else 
    { 
        return; 
    } 
} 


function goDeeper(obj) 
{ 

//head1 gets the parent node of the checked node 
var head = obj.parentElement.previousSibling; 

if(head.tagName == "TABLE") 
{ 
//checks for the input tag which consists of checkbox 
var matchElement = head.getElementsByTagName("INPUT"); 

//matchElement[0] gives us the checkbox and it is checked 
//something is wrong here, fixed 
if (matchElement.length>0){ 
matchElement[0].checked = true; 
} 

} 
else 
{ 

head = obj.parentElement.previousSibling; 
} 

if(head.tagName == "TABLE") 
{ 
goDeeper(obj.parentElement); 
} 

else 
{ 
return; 
} 
} 
function treeViewCheck() 
{ 
// obj gives us the node on which check or uncheck operation has performed 
var obj = window.event.srcElement; 

var treeNodeFound = false; 

var checkedState; 


//checking whether obj consists of checkbox to avoid exception 

if (obj.tagName == "INPUT" && obj.type == "checkbox") 
{ 
var treeNode = obj; 
checkedState = treeNode.checked; 


//work our way back to the parent <table> element 

do 
{ 
obj = obj.parentElement; 
} 
while (obj.tagName != "TABLE") 

var parentTreeLevel = obj.rows[0].cells.length; 
var parentTreeNode = obj.rows[0].cells[0]; 

//get all the TreeNodes inside the TreeView (the parent <div>) 
var tables = obj.parentElement.getElementsByTagName("TABLE"); 

//checking for any node is checked or unchecked during operation 
if(obj.tagName == "TABLE") 
{ 

// Modified - if any node is checked then their parent node is checked 
if (treeNode.checked) 
{ 
goDeeper(obj); 
} //end if - checked 

//total number of TreeNodes 
var numTables = tables.length 

if (numTables >= 1) 
{ 
//cycle through all the TreeNodes 
//until we find the TreeNode we checked 

for (i=0; i < numTables; i++) 
{ 
if (tables[i] == obj) 
{ 
treeNodeFound = true; 
i++; 
if (i == numTables) 
{ 
//if we're on the last TreeNode, we are done 
break; 
} 
} 
if (treeNodeFound == true) 
{ 

var childTreeLevel = tables[i].rows[0].cells.length; 
if (childTreeLevel > parentTreeLevel) 
{ 
var cell = tables[i].rows[0].cells[childTreeLevel - 1]; 
//set the checkbox to match the checkedState 

var inputs = cell.getElementsByTagName("INPUT"); 
inputs[0].checked = checkedState; 

} 

else 
{ 
//if any of the preceding TreeNodes are not deeper stop 
break; 

} 
} //end if 

}//end for 
} //end if - numTables >= 1 


//Modified - If all child nodes are unchecked then their parent node is unchecked 

if (!treeNode.checked) 
{ 
goDeeperUnChecked(obj); 
}//end if - unChecked 


} //end if - tagName = TABLE 

} //end if 

} //end function 

//function goDeeperUnChecked(obj) 
//{ 
//    var chk1 = false; 
//    //Get the mom. 
//    var head1 = obj.parentElement.previousSibling; 
//    //no rows, cant do my work. 
//    if(obj.rows == null) 
//    {
//        return ;
//    } 

//    //This is how may rows are at this level. 
//    var pTreeLevel1 = obj.rows[0].cells.length; 

//    //Are we a mommy? 
//    if(head1.tagName == "TABLE") 
//    { 
//        //Get the list of rows ahead of us. 
//        var tbls = obj.parentElement.getElementsByTagName("TABLE"); 
//        //get the count of that list. 
//        var tblsCount = tbls.length; 

//        //determine if any of the rows underneath are unchecked. 
//        for (i=0; i < tblsCount; i++) 
//        { 
//            var childTreeLevel = tbls[i].rows[0].cells.length; 
//            if (childTreeLevel = pTreeLevel1) 
//            { 
//                var chld = tbls[i].getElementsByTagName("INPUT"); 
//                if (chld[0].checked == true) 
//                { 
//                    chk1 = true; 
//                    break; 
//                } 
//            } 
//        } 
//        var nd = head1.getElementsByTagName("INPUT"); 
//        nd[0].checked = chk1; 
//        //do the same for the level above 
//        goDeeperUnChecked(obj.parentElement); 
//        goDeeperUnChecked(obj.parentElement.getElementsByTagName("INPUT")); 
//        goDeeperUnChecked(obj.parentElement.parentElement.getElementsByTagName("INPUT")); 
//        goDeeperUnChecked(obj.parentElement.parentElement.parentElement.getElementsByTagName("INPUT")); 
//        goDeeperUnChecked(obj.parentElement.parentElement.parentElement.parentElement.getElementsByTagName("INPUT")); 
//    } 
//    else 
//    { 
//        return; 
//    } 
//} 


//function goDeeper(obj) 
//{ 
//    //head1 gets the parent node of the checked node 
//    var head = obj.parentElement.previousSibling; 

//    if(head.tagName == "TABLE") 
//    { 
//        //checks for the input tag which consists of checkbox 
//        var matchElement = head.getElementsByTagName("INPUT"); 

//        //matchElement[0] gives us the checkbox and it is checked 
//        //something is wrong here, fixed 
//        if (matchElement.length>0)
//        { 
//            matchElement[0].checked = true; 
//        } 
//    } 
//    else 
//    { 
//        head = obj.parentElement.previousSibling; 
//    } 

//    if(head.tagName == "TABLE") 
//    { 
//        goDeeper(obj.parentElement); 
//    } 
//    else 
//    { 
//        return; 
//    } 
//} 

//function treeViewCheck() 
//{ 
//    // obj gives us the node on which check or uncheck operation has performed 
//    var obj = window.event.srcElement; 
//    var treeNodeFound = false; 
//    var checkedState; 
//    //checking whether obj consists of checkbox to avoid exception 
//    if (obj.tagName == "INPUT" && obj.type == "checkbox") 
//    { 
//        var treeNode = obj; 
//        checkedState = treeNode.checked; 
//        //work our way back to the parent <table> element 
//        do 
//        { 
//            obj = obj.parentElement; 
//        } 
//        while (obj.tagName != "TABLE") 

//        var parentTreeLevel = obj.rows[0].cells.length; 
//        var parentTreeNode = obj.rows[0].cells[0]; 

//        //get all the TreeNodes inside the TreeView (the parent <div>) 
//        var tables = obj.parentElement.getElementsByTagName("TABLE"); 

//        //checking for any node is checked or unchecked during operation 
//        if(obj.tagName == "TABLE") 
//        { 

//            // Modified - if any node is checked then their parent node is checked 
//            if (treeNode.checked) 
//            { 
//                goDeeper(obj); 
//            } //end if - checked 

//            //total number of TreeNodes 
//            var numTables = tables.length 

//            if (numTables >= 1) 
//            { 
//                //cycle through all the TreeNodes 
//                //until we find the TreeNode we checked 

//                for (i=0; i < numTables; i++) 
//                { 
//                    if (tables[i] == obj) 
//                    { 
//                        treeNodeFound = true; 
//                        i++; 
//                        if (i == numTables) 
//                        { 
//                            //if we're on the last TreeNode, we are done 
//                            break; 
//                        } 
//                    } 
//                    if (treeNodeFound == true) 
//                    { 
//                        var childTreeLevel = tables[i].rows[0].cells.length; 
//                        if (childTreeLevel > parentTreeLevel) 
//                        { 
//                            var cell = tables[i].rows[0].cells[childTreeLevel - 1]; 
//                            //set the checkbox to match the checkedState 
//                            var inputs = cell.getElementsByTagName("INPUT"); 
//                            inputs[0].checked = checkedState; 
//                        } 
//                        else 
//                        { 
//                            //if any of the preceding TreeNodes are not deeper stop 
//                            break; 
//                        } 
//                    } //end if 
//                }//end for 
//            } //end if - numTables >= 1 
//            //Modified - If all child nodes are unchecked then their parent node is unchecked 
//            if (!treeNode.checked) 
//            { 
//                goDeeperUnChecked(obj); 
//            }//end if - unChecked 
//        } //end if - tagName = TABLE 
//    } //end if 
//} //end function 


function client_OnTreeNodeChecked(e)
{ 
	var obj = null;
	
	if (document.all)
		{obj = window.event.srcElement;}
	else
		{obj = e.target;}
	var treeNodeFound = false;
	var checkedState;
	
	if (obj.tagName == "INPUT" && obj.type == "checkbox") 
	{
		var treeNode = obj;
		checkedState = treeNode.checked;
		do
		{
			if (document.all)
					{obj = obj.parentElement;}
			else
					{obj = obj.parentNode;}
		} 
		while (obj.tagName != "TABLE")
		
		var parentTreeLevel = obj.rows[0].cells.length;
		var parentTreeNode = obj.rows[0].cells[0];
		var tables = null;
		if (document.all)
		{
		    tables = obj.parentElement.getElementsByTagName("TABLE");
	    }
	    else
	    {
	        tables = obj.parentNode.getElementsByTagName("TABLE");
	    }
	    
	    var numTables = tables.length
	    if (numTables >= 1)
	    {
	        for (i=0; i < numTables; i++)
	        {
	            if (tables[i] == obj)
	            {
	                treeNodeFound = true;
	                i++;
	                if (i == numTables)
	                {
	                    return;
	                }
	            }
	            if (treeNodeFound == true)
	            {
	                var childTreeLevel = tables[i].rows[0].cells.length;
	                if (childTreeLevel > parentTreeLevel)
	                {
	                    var cell = tables[i].rows[0].cells[childTreeLevel - 1];
	                    var inputs = cell.getElementsByTagName("INPUT");
	                    inputs[0].checked = checkedState;
	                }
	                else
	                {
	                    return;
	                }
	            }
	        }
	    }
	}
}


//function tree_oncheck()
//{
//    var node = ctl00_MyContent_tvRight.getTreeNode(event.treeNodeIndex);
//    var Pchecked = node.getAttribute("checked");
//    setcheck(node, Pchecked);
//    //ctl00_MyContent_tvRight.queueEvent('onclick', node.getNodeIndex());
//}

//function setcheck(node, Pc)
//{
//    var ChildNode = new Array();
//    ChildNode = node.getChildren();
//    if (parseInt(ChildNode.length) != 0)
//    {
//        for (var i = 0; i < ChildNode.length; i++)
//        {
//            var cNode = ChildNode[i];
//            if (cNode.getAttribute("checked") != Pc)
//            {
//                if (parseInt(cNode.getChildren().length) != 0)
//                    setcheck(cNode, Pc);
//                cNode.setAttribute("checked", Pc);
//                //ctl00_MyContent_tvRights.queueEvent('onclick', cNode.getNodeIndex());
//            }
//        }
//    }
//}

//function check()
//{
//    cIndex=ctl00_MyContent_tvRight.clickedNodeIndex;
//    var pNode=ctl00_MyContent_tvRight.getTreeNode(cIndex);
//    Checked(pNode);
//    UnChecked(pNode);
//}

//function Checked(node)
//{
//var NodeArray=node.getChildren();
//checked = node.checked;
//for(var i=0;i<NodeArray.length;i++)
//    {
//        cNode=NodeArray[i];
//        cNode.checked=checked;
////cNode.setAttribute('checked',checked);
//        if (cNode.getChildren().length > 0)
//        {
//Checked(cNode);
//}
//}
//}

//function UnChecked(node)
//{
//checked = node.getAttribute("Checked");
//if (!checked && node.getParent()!= null)
//{
//node.getParent().setAttribute('checked',checked);
//UnChecked(node.getParent());
//}
//}

//function checkAll() 
//{ var a = document.getElementsByName(window.event.srcElement.name); 
//var n = a.length; 
//for (var i=0; i<n;i++)
//  a[i].checked = window.event.srcElement.checked; 
//} 

//function checkItem(str) 
//{ 
//  var e = window.event.srcElement; 
//  var all = eval("document.hrong."+ str); 
//  if (e.checked) 
//  {
//    var a = document.getElementsByName(e.name); 
//    all.checked = true; 
//    for (var i=0; i<a.length;i++)
//    { 
//       if (!a[i].checked){ all.checked = false; break;} 
//    } 
//  } 
//  else 
//  {
//    all.checked = false; 
//  }
//}