﻿// JScript File
//Helpers
//FW ==============================================================
function SetSubmitOnEnter(evt,objToSubmit)
{
    var charCode = (evt.charCode)? evt.charCode : (evt.which ? evt.which : evt.keyCode);
    if(charCode == 13  || charCode == 3)
    {
       document.forms[0].submit();
    }
    return true;
}
//Focus the object
//In order to the enter Key/Click be on the object focuse
function FocusObjectOnEnter(evt,objToClick)
{
    var charCode = (evt.charCode)? evt.charCode : (evt.which ? evt.which : evt.keyCode);
    if(charCode == 13  || charCode == 3)
    {
        objToClick.focus();      
    }
    return true;
}
//Call a specifc function on enter
//The function only has one arg
function CallOnEnter(evt,func, arg1)
{
    var charCode = (evt.charCode)? evt.charCode : (evt.which ? evt.which : evt.keyCode);
    if(charCode == 13  || charCode == 3)
    {
        func(arg1);    
    }
}
function Enable(elemId)
{
        GetElementByIdEx(elemId).disabled = '';
}
function EnableAllChildNodes(elemId)
{
    var obj = GetElementByIdEx(elemId);
    for( var x = 0; obj.childNodes[x]; x++ )
    {
        if(obj.childNodes[x].disabled)
            obj.childNodes[x].disabled = '';
    }
}
function Disable(elemId)
{   
       GetElementByIdEx(elemId).disabled = 'disabled';
}
function DisableAllChildNodes(elemId)
{
    var obj = GetElementByIdEx(elemId);
    for( var x = 0; obj.childNodes[x]; x++ )
    {
        if(obj.childNodes[x].disabled)
            obj.childNodes[x].disabled = 'disabled';
    }
}
function Show(elemId)
{
        GetElementByIdEx(elemId).style.display = "block";
}
function Hide(elemId)
{   
        GetElementByIdEx(elemId).style.display = "none";
}
function SetFocus(elemId)
{
    GetElementByIdEx(elemId).focus();
}
function SetSelect(elemId)
{
    var obj = GetElementByIdEx(elemId);
    SetFocus(elemId);
    GetElementByIdEx(elemId).select();
}

function GetElementByIdEx(elemID)
{
    var elem = (document.getElementById) ? document.getElementById(elemID) :
            ((document.all) ? document.all(elemID) : null);

     return elem;
}

function WindowOpenEx(url,features)
{
    window.open(url,null,features);
}
/*Events Helpers___________________________________________*/
//Adiciona uma função ao load evento
function addFuncToLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
//END FW ==============================================================

/*MENU___________________________________________*/
function MenuItem(vID,level,parentID)
{
    this.vID = vID;//IDdoMenu
    this.SubMenuItem  = new Array();
    this.ParentMenuItemID = parentID;//caminho para o menu pai
    this.level = level;
}

//Esconde todos os filhos de um item menu
function HideAllChildsFromItemMenu(menuItem)
{
    if(menuItem.SubMenuItem)// Se tiver filhos
    {
        for(var k = 0 ; k < menuItem.SubMenuItem.length; k ++)
        {
            if(menuItem.SubMenuItem[k].SubMenuItem && (menuItem.SubMenuItem[k].SubMenuItem.length > 0))//Se tem filhos
                HideAllChildsFromItemMenu(menuItem.SubMenuItem[k]);
                
            var obj = GetElementByIdEx(menuItem.SubMenuItem[k].vID);
            obj.style.display = "none";
        }
    }
}
//menu -> array com menuitems de level 1
function HideAllChilds(menu)
{
    for(i = 0 ; i < menu.length; i++)
        HideAllChildsFromItemMenu(menu[i]);
}
//Mostra todos os Filhos de um menu item
function ShowAllChildsFromItemMenu(menuItem)
{
    if(menuItem.SubMenuItem)// Se tiver filhos
    {
        for(var k = 0 ; k < menuItem.SubMenuItem.length; k ++)
        {
            if(menuItem.SubMenuItem[k].SubMenuItem && (menuItem.SubMenuItem[k].SubMenuItem.length > 0))//Se tem filhos
                ShowAllChildsFromItemMenu(menuItem.SubMenuItem[k]);
                
            var obj = GetElementByIdEx(menuItem.SubMenuItem[k].vID);
            obj.style.display = "block";
        }
    }
}

//Mostra os Filhos "imediatos"
function ShowChildsFromItemMenu(menuItem)
{
   
    if(menuItem)
    {
        if(menuItem.SubMenuItem)// Se tiver filhos
        {
            for(var k = 0 ; k < menuItem.SubMenuItem.length; k ++)
            {       
                var obj = GetElementByIdEx(menuItem.SubMenuItem[k].vID);
                obj.style.display = "block";
            }
        }
    }
}

//Mostar o menu item e todos os pais devidos
function ShowItemMenu(menu,menuItem)
{
    //alert(menuItem.vID);
    var obj = GetElementByIdEx(menuItem.vID);
    if(obj)
        obj.style.display = "block";
    
    ShowChildsFromItemMenu(menuItem);
    
    if(menuItem.ParentMenuItemID)
        ShowItemMenu(menu,GetMenuItem(menu,menuItem.ParentMenuItemID));
}

//Quando um Menu(Para já de nivel 1 é clicavel)

//menu -> array com menuitems de level 1
//ObjecID é o ID do menu clicado
function MenuClick(objID,menu)
{
    var menuItem = GetMenuItem(menu,objID);
    //alert(menuItem);
    if(menuItem.level && menuItem.level == 1)
        HideAllChilds(menu)
    else
    {
        var  parentMenuItem = GetMenuItem(menu,menuItem.ParentMenuItemID);
        //alert('Esconde Filhos de: ' + parentMenuItem.vID);
        //Esconde filhos do irmão 
       // alert(parentMenuItem.vID);
        if(parentMenuItem.SubMenuItem)// Se tiver filhos
        {
            for(var k = 0 ; k < parentMenuItem.SubMenuItem.length; k ++)
            {
             HideAllChildsFromItemMenu(parentMenuItem.SubMenuItem[k]);
              //alert(parentMenuItem.SubMenuItem[k].vID);
             }
        }
        
     }
   
    ShowChildsFromItemMenu(menuItem);
    
    //GetElementByIdEx(hiddenToUpdate).value = objID;
    
}
//Encontra o menu item pelo seu ID
//menu -> array com menuitems de level 1
function GetMenuItem(menu,menuItemID)
{
  
    for(var i = 0 ; i < menu.length; i++)
    {
        //Pesquisa level 1
         if(menu[i].vID == menuItemID)
         {
            return menu[i];
         }
         //Pesquisa Filhos
       
            var menuItem = GetMenuItemFromChilds(menu[i],menuItemID);
            if(menuItem)
                return menuItem;
    }
}
//Esconde todos os filhos de um item menu
function GetMenuItemFromChilds(menuItem,menuItemID)
{
    if(menuItem.SubMenuItem)// Se tiver filhos
    {
        for(var k = 0 ; k < menuItem.SubMenuItem.length; k ++)
        {
            //alert(menuItem.SubMenuItem[k].vID);
             if(menuItem.SubMenuItem[k].vID == menuItemID)
             {
                return menuItem.SubMenuItem[k];
             }
            if(menuItem.SubMenuItem[k].SubMenuItem && (menuItem.SubMenuItem[k].SubMenuItem.length > 0))//Se tem filhos
                GetMenuItemFromChilds(menuItem.SubMenuItem[k],menuItemID);
        }
    }
}
/*END MENU___________________________________________*/