function toggle_node(element, save_cookie) {
      
      if(element.tagName != "LI") {
         li_element = element.up('li');
         ul_element = li_element.down('ul');
      } else {      
         li_element = element;
         ul_element = li_element.down('ul');      
      }
      
      display_status = ul_element.getStyle('display');

      if(display_status == 'block') {
          if(toggle_icon(li_element, false)) {
              ul_element.setStyle({'display':'none'});
              if(save_cookie) set_cookie(li_element.id, 0);   
          }
      } else {
          if(toggle_icon(li_element, true)) {
              ul_element.setStyle({'display':'block'});
              if(save_cookie) set_cookie(li_element.id, 1);            
          }
      }
      
}

 

function toggle_icon(element, open_flag) {

      var closed_divs = $(element).getElementsBySelector("div[class='icon_closed']");
      var opened_divs = $(element).getElementsBySelector("div[class='icon_opened']");

      if(opened_divs[0] && closed_divs[0])  {
      
       if(open_flag) {
          opened_divs[0].setStyle({'display' : 'block'});
          closed_divs[0].setStyle({'display' : 'none'});
       } else {
          opened_divs[0].setStyle({'display' : 'none'});
          closed_divs[0].setStyle({'display' : 'block'});
       }

       return true;
      }

   return false;
}




var MESSAGEBOX_ATTACHED = [];

function show_messagebox(content, classname) {

    if(!classname) classname = "default";
    
    if(!MESSAGEBOX_ATTACHED[classname]) {
       Element.insert(document.body, '<div id="messagebox_' + classname + '" class="' + classname + '" style="position:absolute; text-align: center; padding:15px; cursor: pointer; z-index: 99999999; display:none;">' + content + '</div>');

        var element        = $('messagebox_' + classname);
        var parent_element = element.getOffsetParent();
        var element_width  = element.getWidth();
        var element_height = element.getHeight();
        var parent_element_width  = parent_element.getWidth();
        var parent_element_height = parent_element.getHeight();
        var scroll_offset = Element.cumulativeScrollOffset(parent_element);

      element.setStyle({top: (parent_element_height / 2)-(element_height / 2) + scroll_offset[1] + 'px', left:  (parent_element_width/2)-(element_width / 2) + scroll_offset[0]  + 'px' });

       Event.observe(element, 'resize', function(event) {

            var parent_element = element.getOffsetParent();
            var element_width  = element.getWidth();
            var element_height = element.getHeight();
            var parent_element_width  = parent_element.getWidth();
            var parent_element_height = parent_element.getHeight();
            var scroll_offset = Element.cumulativeScrollOffset(parent_element);

      element.setStyle({top: (parent_element_height / 2)-(element_height / 2) + scroll_offset[1] + 'px', left:  (parent_element_width/2)-(element_width / 2) + scroll_offset[0]  + 'px' });
       });
       
       MESSAGEBOX_ATTACHED[classname] = true;
   }

    if(!element) var element        = $('messagebox_' + classname);
      element.innerHTML = content;
      
      new Effect.Appear(element.id, {duration: 0.4, afterFinish: function() {
          new Effect.Fade(element.id, {duration: 1.5});
      }});
      
}





var WINDOW_ATTACHED = false;
var modal_window = false;

function show_window_by_url(url, _w, _h, params, loader_content) {
 
  if(!loader_content) loader_content = "A carregar...";
 
          new Ajax.Request(url, {     
            parameters: '' + params + '',                               
            onCreate: function() {                                          
             show_window(loader_content, _w, _h);                     
            },                    
            onSuccess: function(transport){                 
              $('window_frame').update(transport.responseText);                         
            }
          }); 

}

 
function update_window_position(_w, _h) {
 
        var element        = $('window_frame_overlay');
        var inner_element  = $('window_frame');
       
        var scroll_offset = [];       
        scroll_offset[0] = 0;
        scroll_offset[1] = 0;  
        
        
    inner_element.setStyle({width:  _w + 'px', height: _h + 'px'});
    
        var parent_element        = inner_element.getOffsetParent();
        var inner_element_width   = _w;
        var inner_element_height  = _h;
        var parent_element_width  = parent_element.getWidth();
        var parent_element_height = parent_element.getHeight();
        //var scroll_offset         = Element.cumulativeScrollOffset(parent_element);
        
 
       inner_element.setStyle({top: (parent_element_height / 2)-(inner_element_height / 2) + scroll_offset[1] + 'px', left:  (parent_element_width/2)-(inner_element_width / 2) + scroll_offset[0]  + 'px'});           
} 
 
function close_window() {

        var element        = $('window_frame_overlay');
        var inner_element         = $('window_frame');
        
          inner_element.hide();
          element.hide();
} 
 
var WINDOW_ATTACHED = false;

function show_window(content, _w, _h, appear_effect) {
 
  if(!WINDOW_ATTACHED) {

       Element.insert(document.body, '<div id="window_frame_overlay" class="WINDOW_FRAME_OVERLAY"  style="position:fixed; top:0px; left:0px; width: 100%; height: 100%; z-index: 99990; display:none;"></div>');
                      
       Element.insert(document.body, '<div id="window_frame" class="WINDOW_FRAME" style="position: fixed; z-index: 99999; display:none;"></div>');
 }
 
 
        var element        = $('window_frame_overlay');
        var inner_element  = $('window_frame');
       
        var scroll_offset = [];       
        scroll_offset[0] = 0;
        scroll_offset[1] = 0;  
               
  if(!WINDOW_ATTACHED) {
          
        var parent_element        = inner_element.getOffsetParent();
        var inner_element_width   = inner_element.getWidth();
        var inner_element_height  = inner_element.getHeight();
        var parent_element_width  = parent_element.getWidth();
        var parent_element_height = parent_element.getHeight();
        //var scroll_offset         = Element.cumulativeScrollOffset(parent_element);
        
       inner_element.setStyle({top: (parent_element_height / 2)-(inner_element_height / 2) + scroll_offset[1] + 'px', left:  (parent_element_width/2)-(inner_element_width / 2) + scroll_offset[0]  + 'px' });
       

       Event.observe(window, 'resize', function(event) {

          var inner_element_width   = inner_element.getWidth();
          var inner_element_height  = inner_element.getHeight();
          var parent_element_width  = parent_element.getWidth();
          var parent_element_height = parent_element.getHeight();
         // var scroll_offset         = Element.cumulativeScrollOffset(parent_element);

          element.setStyle({height:  parent_element_height + scroll_offset[1] + 'px' });

          inner_element.setStyle({top: (parent_element_height / 2)-(inner_element_height / 2) + scroll_offset[1] + 'px', left:  (parent_element_width/2)-(inner_element_width / 2) + scroll_offset[0]  + 'px' });
       });


       Event.observe(element, 'click', function(event) {
        
          if(modal_window) return;
       
          inner_element.hide();
          element.hide();
       });


      $('window_frame_overlay').setOpacity(0.7);
      
      WINDOW_ATTACHED = true;
  }
  

    update_window_position(_w, _h);      
  

 
   if(appear_effect) {
      
     if($('window_frame_overlay').getStyle("display") != "block") 
     new Effect.Appear('window_frame_overlay', { from: 0.0, to: 0.7, duration: 0.5 });    
     
     new Effect.Appear('window_frame', { duration: 0.6 }); 
     
    } else {
      
      $('window_frame_overlay').show();
      $('window_frame').show();      
    
    }
    
  
    $('window_frame').innerHTML = content;          
    

}





function window_close() {

        var element        = $('window_frame_overlay');
        var inner_element         = $('window_frame');
        
        inner_element.hide();
        element.hide();
}

// COOKIES //

function set_cookie(cookieName, cookieValue, expires, path, domain, secure) {
	document.cookie =
		escape(cookieName) + '=' + escape(cookieValue)
		+ (expires ? '; expires=' + expires.toGMTString() : '')
		+ (path ? '; path=' + path : '')
		+ (domain ? '; domain=' + domain : '')
		+ (secure ? '; secure' : '');
};

function get_cookie(cookieName) {

  	var cookieValue = '';
  	var posName = document.cookie.indexOf(escape(cookieName) + '=');
	
	if (posName != -1) {
		var posValue = posName + (escape(cookieName) + '=').length;
		var endPos = document.cookie.indexOf(';', posValue);
		if (endPos != -1) cookieValue = unescape(document.cookie.substring(posValue, endPos));
		else cookieValue = unescape(document.cookie.substring(posValue));
	}
	
	return (cookieValue);
};

 


// // // //



 var BROWSER_IS_LOADING = false;
 
function redirect(url) {
  
  if(BROWSER_IS_LOADING) return;

  window.location.href = url;
  BROWSER_IS_LOADING = true;
}

function reload() {

  if(BROWSER_IS_LOADING) return;
  
  window.location.reload();
  BROWSER_IS_LOADING = true;  
}

            
function form_submit_loading(form_id, load) {
      
      if(BROWSER_IS_LOADING) return;                        
                                                   
      var submit_elements = $(form_id).getInputs('submit');
     
      if(submit_elements[0].loading_text) {  
         
         if(load) {         
         
           $(form_id).disable();   
                                               
           submit_elements[0].previous_value = submit_elements[0].value;
           submit_elements[0].value = submit_elements[0].loading_text;
        
         } else {
          
          $(form_id).enable();
                    
          var first_element = $(form_id).findFirstElement();
          Form.Element.focus($(first_element.id));
                                               
          submit_elements[0].value = submit_elements[0].previous_value;
         }
      }   
}


// JAVA UPLOADER CALL
function uploadCompleted() { }


 
