function cContext(){
 var self=this;
 var contextFloat=null;
 var contextParsed=null;
 var subArr=[];			//array with all sub's for parsing
 var openedArr=[];		//array with sub boxes
 var selectedItem=null;
 var openedSubArr=[];		//array with items that open sub boxes
 
 this.createInstance=function(){
  var contextFloat=document.createElement("div");
  contextFloat.style.display="none";
  contextFloat.style.position="absolute";
  contextFloat.style.left="0px";
  contextFloat.style.top="0px";
  contextFloat.className="context_box";
  subArr[subArr.length]=contextFloat;
  self.contextFloat=contextFloat;
 }

 this.closeMenu=function(){
  for(var i=0;i<openedArr.length;i++){
   openedArr[i].style.display="none";
  }
  subArr[0].style.display="none";
  for(var i=0;i<openedArr.length;i++){
   openedArr.pop();
  }
 }

 this.parse=function(){
  addEvent(document.body,"onclick",this.closeMenu);
  self.contextParsed=document.body.appendChild(self.contextFloat);
 }

 this.addBreak=function(){
  var contextFloatItem=document.createElement("div");
  contextFloatItem.className="context_break_p"
  contextFloatItem.innerHTML="<div class='context_break_l'></div><div class='context_break'></div>"
  self.contextFloat.appendChild(contextFloatItem);
 }

 this.addItem=function(img,linkn,function_ref){
  var contextFloatItem=document.createElement("div");
  contextFloatItem.className="context_item_p"
  if(img!=""&&img!=null){
   contextFloatItem.innerHTML="<div class='context_item_l'><img src='"+img+"' border='0'/></div><div class='context_item'>"+linkn+"</div>";
  }else{
   contextFloatItem.innerHTML="<div class='context_item_l'>&nbsp;</div><div class='context_item'>"+linkn+"</div>";
  }
  contextFloatItem.onmouseover=function(){
   var subRemove=false;
   var popCount=0;
   thisParent=this.parentNode;
   for(var i=0;i<openedSubArr.length;i++){
    if(subRemove){
     openedSubArr[i].className="context_item_p";
     openedSubArr[i].childNodes[0].className="context_item_l";
     openedSubArr[i].childNodes[1].className="context_item";
     popCount++;
    }else if(openedSubArr[i].parentNode==thisParent){
     subRemove=true;
    }
   }
   for(i=0;i<popCount;i++){
    openedSubArr.pop();
   }

   for(var i=openedArr.length-1;i>-1;i--){
    if(thisParent!=openedArr[i]){
     openedArr[i].style.display="none";
     openedArr.pop();
    }else{
     break;
    }
   }
   this.className="context_item_p_mouseover";
   this.childNodes[0].className="context_item_l_mouseover";
   this.childNodes[1].className="context_item_mouseover";
  }
  contextFloatItem.onmouseout=function(){
   this.className="context_item_p";
   this.childNodes[0].className="context_item_l";
   this.childNodes[1].className="context_item";
  }
  contextFloatItem.onclick=function(){
   this.function_ref=function_ref;
   eval(this.function_ref.replace(/\$\{selected\}/gi,self.selectedItem));
   this.className="context_item_p";
   this.childNodes[0].className="context_item_l";
   this.childNodes[1].className="context_item";
  }
  contextFloatItem.style.borderBottom="none";
  return self.contextFloat.appendChild(contextFloatItem);
 }


 this.openSub=function(contextFloatItem){
  var contextFloat=document.createElement("div");
  contextFloat.style.display="none";
  contextFloat.style.position="absolute";
  contextFloat.style.left="0px";
  contextFloat.style.top="0px";
  contextFloat.className="context_box";

  contextFloatItem.onclick=function(){
   this.contextFloat=contextFloat;
   thisParent=this.parentNode;
   for(var i=openedArr.length-1;i>-1;i--){
    if(thisParent!=openedArr[i]){
     openedArr[i].style.display="none";
    }else{
     break;
    }
   }
   openedArr[openedArr.length]=this.contextFloat;
   this.contextFloat.style.left=get_elementPosition("x",this)+this.offsetWidth+1+"px";
   this.contextFloat.style.top=get_elementPosition("y",this)+2+"px";
   this.contextFloat.style.display="";
  }

  contextFloatItem.onmouseover=function(){
   var subRemove=false;
   var popCount=0;
   for(var i=0;i<openedSubArr.length;i++){
    if(subRemove){
     openedSubArr[i].className="context_item_p";
     openedSubArr[i].childNodes[0].className="context_item_l";
     openedSubArr[i].childNodes[1].className="context_item";
     popCount++;
    }else if(openedSubArr[i].parentNode==this.parentNode){
     subRemove=true;
    }
   }
   for(i=0;i<popCount;i++){
    openedSubArr.pop();
   }

   openedSubArr[openedSubArr.length]=this;
   this.className="context_item_p_mouseover";
   this.childNodes[0].className="context_item_l_mouseover";
   this.childNodes[1].className="context_item_mouseover";
   this.contextFloat=contextFloat;
   thisParent=this.parentNode;
   for(var i=openedArr.length-1;i>-1;i--){
    if(thisParent!=openedArr[i]){
     openedArr[i].style.display="none";
     openedArr.pop();
    }else{
     break;
    }
   }
   openedArr[openedArr.length]=this.contextFloat;
   this.contextFloat.style.left=get_elementPosition("x",this)+this.offsetWidth+1+"px";
   this.contextFloat.style.top=get_elementPosition("y",this)+2+"px";
   this.contextFloat.style.display="";
  }

  contextFloatItem.onmouseout=function(){
  }

  subArr[subArr.length]=contextFloat;
  self.contextFloat=contextFloat;
 }

 this.closeSub=function(contextFloatItem){
  del_item=subArr.pop();
  document.body.appendChild(self.contextFloat);
  self.contextFloat=subArr[subArr.length-1];
 }

 this.show=function(e,item_id){
  if(self.contextParsed!=null){
   self.selectedItem=item_id;
   for(var i=openedArr.length-1;i>-1;i--){
    openedArr[i].style.display="none";
   }
   adjust_to_pos(e,1,0,0,self.contextParsed)
   self.contextParsed.style.display="";
  }
 }
}