﻿// JScript File

function checkCharacher(x)
{
  
  var s_len=x.value.length ;

  {
  var s_charcode = 0;
    for (var s_i=0;s_i<s_len;s_i++)
    {
     s_charcode = x.value.charCodeAt(s_i);
     if(!((s_charcode>=65 && s_charcode<=90)||(s_charcode>=97 && s_charcode<=122)||(s_charcode==45)||(s_charcode==32) ))
      {
         alert(" Only Character Values Allowed");
         x.value='';
         x.focus();
        return false;
      }
    }
    return true;
    }
    
}


function checkNum(x)
{
 
  var s_len=x.value.length ;
  var s_charcode = 0;
    for (var s_i=0;s_i<s_len;s_i++)
    {
     s_charcode = x.value.charCodeAt(s_i);
     if(!((s_charcode>=48 && s_charcode<=57)))
      {
         alert("Only Numeric Values Allowed");
         x.value='';
         x.focus();
        return false;
      }
    }
    return true;
    
}

        function OnTreeClickForParent(evt)
        {
         var src = window.event != window.undefined ? window.event.srcElement : evt.target;
         var isChkBoxClick = (src.tagName.toLowerCase() == "input" && src.type == "checkbox");
         if(isChkBoxClick)
         {
             var parentTable = GetParentByTagName("table", src);
             var nxtSibling = parentTable.nextSibling;
             //check if nxt sibling is not null & is an element node
              if(nxtSibling && nxtSibling.nodeType == 1)
             {
                 if(nxtSibling.tagName.toLowerCase() == "div") //if node has children
                 {
                     //check or uncheck children at all levels
                     if (!src.checked)
                        CheckUncheckChildren(parentTable.nextSibling, src.checked);
                 }
             }
             //check parents if checked
             CheckParents(src, src.checked);
         }
        }

        function CheckParents(srcChild, check)
        {
         var parentDiv = GetParentByTagName("div", srcChild);
         var parentNodeTable = parentDiv.previousSibling;
         if(parentNodeTable)
         {
            if (check)
            {                
             var inpElemsInParentTable = parentNodeTable.getElementsByTagName("input");
             if(inpElemsInParentTable.length > 0)
             {
                 var parentNodeChkBox = inpElemsInParentTable[0];
                 parentNodeChkBox.checked = check;
                 //do the same recursively
                CheckParents(parentNodeChkBox, check);
             }
             }
         }
        }


        function OnTreeClick(evt)
        {
         var src = window.event != window.undefined ? window.event.srcElement : evt.target;
         var isChkBoxClick = (src.tagName.toLowerCase() == "input" && src.type == "checkbox");
         if(isChkBoxClick)
         {
             var parentTable = GetParentByTagName("table", src);
             var nxtSibling = parentTable.nextSibling;
             //check if nxt sibling is not null & is an element node
              if(nxtSibling && nxtSibling.nodeType == 1)
             {
                 if(nxtSibling.tagName.toLowerCase() == "div") //if node has children
                 {
                     //check or uncheck children at all levels
                     CheckUncheckChildren(parentTable.nextSibling, src.checked);
                 }
             }
         //check or uncheck parents at all levels
         CheckUncheckParents(src, src.checked);
         }
        }

         function CheckUncheckChildren(childContainer, check)
        {
         var childChkBoxes = childContainer.getElementsByTagName("input");
              var childChkBoxCount = childChkBoxes.length;
         for(var i=0;i<childChkBoxCount;i++)
         {
             childChkBoxes[i].checked = check;
         }
        }

        function CheckUncheckParents(srcChild, check)
        {
         var parentDiv = GetParentByTagName("div", srcChild);
         var parentNodeTable = parentDiv.previousSibling;
         if(parentNodeTable)
         {
             var checkUncheckSwitch;
             if(check) //checkbox checked
             {
                 var isAllSiblingsChecked = AreAllSiblingsChecked(srcChild);
                 if(isAllSiblingsChecked)
                         checkUncheckSwitch = true;
                 else
                         return; //do not need to check parent if any(one or more) child not checked
             }
             else //checkbox unchecked
             {
                 checkUncheckSwitch = false;
             }
           
             var inpElemsInParentTable = parentNodeTable.getElementsByTagName("input");
             if(inpElemsInParentTable.length > 0)
             {
                 var parentNodeChkBox = inpElemsInParentTable[0];
                 parentNodeChkBox.checked = checkUncheckSwitch;
                 //do the same recursively
                CheckUncheckParents(parentNodeChkBox, checkUncheckSwitch);
             }
         }
        }

        function AreAllSiblingsChecked(chkBox)
        {
         var parentDiv = GetParentByTagName("div", chkBox);
         var childCount = parentDiv.childNodes.length;
         for(var i=0;i<childCount;i++)
         {
             if(parentDiv.childNodes[i].nodeType == 1)
             {
                 //check if the child node is an element node
                 if(parentDiv.childNodes[i].tagName.toLowerCase() == "table")
                 {
                     var prevChkBox = parentDiv.childNodes[i].getElementsByTagName("input")[0];
                     //if any of sibling nodes are not checked, return false
                     if(!prevChkBox.checked)
                     {
                         return false;
                     }
                 }
             }
         }
         return true;
        }

        //utility function to get the container of an element by tagname
        function GetParentByTagName(parentTagName, childElementObj)
        {
         var parent = childElementObj.parentNode;
         while(parent.tagName.toLowerCase() != parentTagName.toLowerCase())
             {
                 parent = parent.parentNode;
             }
         return parent;
        }    


function Length_TextField_Validator()
{
// Check the length of the value of the element named text_name
// from the form named form_name if it's < 3 and > 10 characters
// display a message asking for different input
if ((form_name.text_name.value.length < 3) || (form_name.text_name.value.length > 10))
{
// Build alert box message showing how many characters entered
mesg = "You have entered " + form_name.text_name.value.length + " character(s)\n"
mesg = mesg + "Valid entries are between 3 and 10 characters.\n"
mesg = mesg + "Please verify your input and submit again."
alert(mesg);
// Place the cursor on the field for revision
form_name.text_name.focus();
// return false to stop further processing
return (false);
}
// If text_name is not null continue processing
return (true);
}

