mighty.init("ocm");

/*
**  Observe menubuild Management
*/

function ocm()
{
     if(!$("menubuild_admin")) return;  
     this.TL = "trees_left";
     this.TILC = "tree_items_left_container";
     this.TIL = "tree_items_left";
     
     this.TR = "trees_right";
     this.TIRC = "tree_items_right_container";
     this.TIR = "tree_items_right";
     
     this.AE = "add_element";
     this.DE = "del_element";
     this.EC = "edit_content";
     this.AL = "active_list";
     
     this.CLE = "current_left_element";
     this.CRE = "current_right_element";
     
     this.MU = "moveUp";
     this.MD = "moveDown";
        
     var d=document;
     var obj=this;
  
     //Alapból kiválasztott lista
     d.getElementById(this.AL).value = "tree_items_right";     
     add_option_dblclick(0, obj, "right"); 
     watch_active_list(this.AL, "right");
     
     d.getElementById(this.AL).value = "tree_items_left";
     add_option_dblclick(0, obj, "left"); 
     watch_active_list(this.AL, "left");
     
     Event.observe(this.TL, 
                    "change", 
                    function(){
                         var tmp = d.getElementById(obj.TL);
                         
                         var parent_id = tmp.options[tmp.selectedIndex].value;
                         var url = "?admin&menubuild=refresh_items&side=left&tree_id="+parent_id+"";
                         
                         new Ajax.Updater(obj.TILC, url, { onComplete: function(){ 
                                                                                     add_option_dblclick(0, obj, "left"); 
                                                                                     watch_active_list(obj.AL, "left");
                                                                                 }
                                                         }
                                         );
  
                               }
                    );
  
     Event.observe(this.TR, 
                    "change", 
                    function(){
                         var tmp = d.getElementById(obj.TR);
                         
                         var parent_id = tmp.options[tmp.selectedIndex].value;
                         var url = "?admin&menubuild=refresh_items&side=right&tree_id="+parent_id+"";
                         
                         new Ajax.Updater(obj.TIRC, url, { onComplete: function(){ 
                                                                                     add_option_dblclick(0, obj, "right"); 
                                                                                     watch_active_list(obj.AL, "right");
                                                                                 }
                                                          }
                                          );
  
                              }
                  );
  
     Event.observe(this.AE, 
                    "click", 
                    function(){
                         var list = d.getElementById(d.getElementById(obj.AL).value);
                         var listLength = list.options.length;
                         var newElement = prompt("Új lista-elem neve: ");
                         var insertBefore = "0";
                         var parentID = "0";
                         var tree_select = "";
                         var tree_id = "";
                         
                         if(!newElement) return;
                         
                         if(d.getElementById(obj.AL).value == "tree_items_left") {                              
                              tree_select = d.getElementById(obj.TL);
                         } else {
                              tree_select = d.getElementById(obj.TR);
                         }
                         
                         tree_id = tree_select.options[tree_select.selectedIndex].value;
                         
                         if(list.options[0] && list.options[0].innerHTML == "[..]") {
                              if(d.getElementById(obj.AL).value == "tree_items_left")
                                   parentID = d.getElementById(obj.CLE).value;
                              else
                                   parentID = d.getElementById(obj.CRE).value;
                         }
                         
                         if(listLength) {
                              if(list.selectedIndex >= 0 && parentID == 0) {
                                   insertBefore = list.options[list.selectedIndex].value;
                              } else if(list.selectedIndex > 1 && parentID != 0) { 
                                   insertBefore = list.options[list.selectedIndex].value;
                              } else if(list.selectedIndex <= 1 && parentID != 0) {                         
                                   if(list.options[1])
                                        insertBefore = list.options[1].value;
                              }  else {
                                   insertBefore = list.options[0].value;
                              }
                         }
                     
                         var url = "?admin&menubuild=add_new_element&tree_id="+tree_id+"&node_id="+parentID+"&insertbefore="+insertBefore+"&label="+newElement+"";
                         new Ajax.Updater('error', url, {  onComplete: function()
                                                                                          {
                                                                                               refresh_both_list(obj);
                                                                                          }
                                                                 });                    
                }
     );
     
     Event.observe(this.DE, 
                    "click", 
                    function(){
                         var list = d.getElementById(d.getElementById(obj.AL).value);
                         var listLength = list.options.length;
                         var insertBefore = "0";
                         var parentID = "0";
                         var tree_select = "";
                         var tree_id = "";
                         var element ="";
                                                  
                         if(d.getElementById(obj.AL).value == "tree_items_left") {                              
                              tree_select = d.getElementById(obj.TL);
                         } else {
                              tree_select = d.getElementById(obj.TR);
                         }
                         
                         tree_id = tree_select.options[tree_select.selectedIndex].value;
                                                            
                         if(list.selectedIndex<0) return;
                         
                         if(list.options[list.selectedIndex] && list.options[list.selectedIndex].innerHTML != "[..]") {
                              if(d.getElementById(obj.AL).value == "tree_items_left")                             
                                   elementSelect = d.getElementById(obj.TIL);
                              else
                                   elementSelect = d.getElementById(obj.TIR);
                         }
                         
                         if(elementSelect) {
                              
                              element = elementSelect.options[elementSelect.selectedIndex];
                              var tmp = confirm('Biztosan törli a kiválasztott elemet?\nElem: ['+element.innerHTML+']\nHa az elem további elemeket tartalmaz, minden adat elveszik!');
                              if(tmp) {
                                   var url = "?admin&menubuild=del_element&tree_id="+tree_id+"&node_id="+element.value+"";
                                   new Ajax.Updater('error', url, { onComplete: function()
                                                                                          {
                                                                                               refresh_both_list(obj);
                                                                                          }
                                                                 });  
                              }
                         }
                }
     );
     
     if($(""+this.EC+"")){  
          Event.observe(this.EC, 
                         "click", 
                         function(){
                              var list = d.getElementById(d.getElementById(obj.AL).value);
                              var listLength = list.options.length;
                              var insertBefore = "0";
                              var parentID = "0";
                              var tree_select = "";
                              var tree_id = "";
                              var element ="";
                                                       
                              if(d.getElementById(obj.AL).value == "tree_items_left") {                              
                                   tree_select = d.getElementById(obj.TL);
                              } else {
                                   tree_select = d.getElementById(obj.TR);
                              }
                              
                              tree_id = tree_select.options[tree_select.selectedIndex].value;
                              
                              if(list.options[list.selectedIndex] && list.options[list.selectedIndex].innerHTML != "[..]") {
                                   if(d.getElementById(obj.AL).value == "tree_items_left")                             
                                        elementSelect = d.getElementById(obj.TIL);
                                   else
                                        elementSelect = d.getElementById(obj.TIR);
                              }
                              
                              if(elementSelect) {
                                   element = elementSelect.options[elementSelect.selectedIndex];
                                   var url = "?admin&contents=edit_content&node_id="+element.value+"";
                                   
                                   var newWindow = window.open(url, '_blank');
                                   if (newWindow) {
                                       if (newWindow.focus) {
                                            newWindow.focus();
                                       }
                                       return false;
                                   }
                              }
                     }
          );
     }
     
     Event.observe(this.MU, 
                    "click", 
                    function(){
                         var list = d.getElementById(d.getElementById(obj.AL).value);
                         var listLength = list.options.length;
                         var element ="";
                         var tree_select = "";
                         
                         if(d.getElementById(obj.AL).value == "tree_items_left") {                              
                              tree_select = d.getElementById(obj.TL).value;
                         } else {
                              tree_select = d.getElementById(obj.TR).value;
                         }
                         
                         if(!list.options[list.selectedIndex] || list.options[list.selectedIndex].innerHTML == "[..]") 
                              return false;
                         
                         if(list) {                              
                              element = list.options[list.selectedIndex];
                              var url = "?admin&menubuild=move_element_upper&elementID="+element.value+"&tree_id="+tree_select+"";
                              new Ajax.Updater('error', url, { onComplete: function()
                                                                                     {
                                                                                          refresh_both_list(obj);
                                                                                      }
                                                            });  
                              }
                         }
     );
     
     Event.observe(this.MD, 
                    "click", 
                    function(){
                         var list = d.getElementById(d.getElementById(obj.AL).value);
                         var listLength = list.options.length;
                         var element ="";
                         var tree_select = "";
                         
                         if(d.getElementById(obj.AL).value == "tree_items_left") {                              
                              tree_select = d.getElementById(obj.TL).value;
                         } else {
                              tree_select = d.getElementById(obj.TR).value;
                         }
                         
                         if(!list.options[list.selectedIndex] || list.options[list.selectedIndex].innerHTML == "[..]") 
                              return false;
                         
                         if(list) {                              
                              element = list.options[list.selectedIndex];
                              var url = "?admin&menubuild=move_element_downer&elementID="+element.value+"&tree_id="+tree_select+"";
                              new Ajax.Updater('error', url, { onComplete: function()
                                                                                     {
                                                                                          refresh_both_list(obj);
                                                                                      }
                                                            });  
                              }
                         }
     );
}

ocm.prototype.AL = "";
ocm.prototype.CLE = "";
ocm.prototype.CRE = "";
ocm.prototype.AE = "";
ocm.prototype.DE = "";
ocm.prototype.EC = "";
ocm.prototype.MUE = "";
ocm.prototype.MDE = "";
ocm.prototype.PoE = "";
ocm.prototype.PuE = "";

ocm.prototype.TL = "";
ocm.prototype.TILC = "";
ocm.prototype.TIL = "";
ocm.prototype.TR = "";
ocm.prototype.TIRC = "";
ocm.prototype.TIR = "";

ocm.prototype.MU = "";
ocm.prototype.MD = "";

function refresh_both_list(obj){

     var parent_id = 0;
     var d=document;     
     var tmp = d.getElementById(obj.TIR);
     var tree_id = d.getElementById(obj.TR).value;
     var url = "";     
     var node_id = d.getElementById(obj.CRE).value;
     parent_id = node_id;
     
          url = "?admin&menubuild=refresh_items&side=right&node_id="+parent_id+"&prev_node="+node_id+"&tree_id="+tree_id;
          

     new Ajax.Updater(obj.TIRC, url, { onComplete: function(){ 
                                                             add_option_dblclick(node_id, obj, "right"); 
                                                             watch_active_list(obj.AL, "right");
                                                         }
                                  }
                  );
     
     tmp = d.getElementById(obj.TIL);
     tree_id = d.getElementById(obj.TL).value;                  
     node_id = d.getElementById(obj.CLE).value;
     parent_id = node_id;
     
          url = "?admin&menubuild=refresh_items&side=left&node_id="+parent_id+"&prev_node="+node_id+"&tree_id="+tree_id;
                    
     new Ajax.Updater(obj.TILC, url, { onComplete: function(){ 
                                                             add_option_dblclick(node_id, obj, "left"); 
                                                             watch_active_list(obj.AL, "left");
                                                         }
                                  }
                  );
};

function add_option_dblclick(node_id, obj, side){
     $$(".option_"+side).each(function(element){
          element.observe("dblclick", function(event){
      
               var d=document;
               var tree_id=0;
               
               if(side=="left") {
                    var tmp = d.getElementById(obj.TIL);
                    tree_id = d.getElementById(obj.TL).value;
                    d.getElementById(obj.CLE).value = Event.element(event).value;
               } else {
                    var tmp = d.getElementById(obj.TIR);
                    tree_id = d.getElementById(obj.TR).value;
                    d.getElementById(obj.CRE).value = Event.element(event).value;
               }
        
               var parent_id = tmp.options[tmp.selectedIndex].value;
               
               var url = "?admin&menubuild=refresh_items&side="+side+"&node_id="+parent_id+"&prev_node="+node_id+"&tree_id="+tree_id;

               if(side=="left") {
                    new Ajax.Updater(obj.TILC, url, { onComplete: function(){ 
                                                                                add_option_dblclick(parent_id, obj, side); 
                                                                                watch_active_list(obj.AL, side);
                                                                             }
                                                     }
                                    );
               } else {
                    new Ajax.Updater(obj.TIRC, url, { onComplete: function(){ 
                                                                                add_option_dblclick(parent_id, obj, side); 
                                                                                watch_active_list(obj.AL, side);
                                                                            }
                                                    }
                                     );      
               }
          });
     }); 
}

function watch_active_list(active_list, side)
{
     $$("."+side+"_list").each(function(element){
          element.observe("click", function(event){
               document.getElementById(active_list).value=element.id;
          });
     }); 
}
