//******************************************************************************
//*                            Tree Class By Protocoder, v1.0                  *
//******************************************************************************
   var first,root=false,root1=false,done=false;
   var target=document.location.toString();
   var re = new RegExp('cat=([0-9]*)','g'); 
   var arr=re.exec(target);
   var selid=arr?arr[1]:0;

   function TreeMod(                
                 TreeId, //Id of tree (string), example: "Tree12345"
                 URParam, //UserRequestParam in format "&Name=Val&Name=Val"...
                 XMLDataBuilder_url,
                 Container, //HTML object where tree has been stored
                 ClickHandlerFunction, //ClickHandler function name, example: "MyClickHandler". If no needed =null

                 firstSelectedType, firstSelectedId, //Default selected item after tree first time builded, example: "folder", 5. If no needed =null,=null

                 LoadingImage_sx, LoadingImage_sy, LoadingImage,


                 Images_sy,

                 LinkImages_sx, UDimage, UDRimage, URimage, UDRFimage, URFimage, UDRFOimage, URFOimage,


                 TypeImages_sx,

                 FolderImage, OpenFolderImage, SelectedFolderImage, SelectedOpenFolderImage,
                 FolderClassName, OpenFolderClassName, SelectedFolderClassName, SelectedOpenFolderClassName,
                 DisabledFolderImage, DisabledOpenFolderImage, DisabledSelectedFolderImage, DisabledSelectedOpenFolderImage,
                 DisabledFolderClassName, DisabledOpenFolderClassName, DisabledSelectedFolderClassName, DisabledSelectedOpenFolderClassName,

                 FileImage, SelectedFileImage,
                 FileClassName, SelectedFileClassName,
                 DisabledFileImage, DisabledSelectedFileImage,
                 DisabledFileClassName, DisabledSelectedFileClassName,

                 RootLabel,

                 RootId,

                 RootImages_sx, RootImages_sy, RootImage, OpenRootImage, SelectedRootImage, SelectedOpenRootImage,
                 RootClassName, OpenRootClassName, SelectedRootClassName, SelectedOpenRootClassName,

                 DontOpenBranch
                ) { 
/* 
LOADED XML:

xml version="1.0" encoding="Windows-1251";

<XMLDATA VERSION="1">

 <BRANCH ID="12345">
  <ELEMENT></ELEMENT>
 </BRANCH>

</XMLDATA>

Attributes of BRANCH ELEMENT tag:
ID - id of item, in prop - id
LABEL - name of item, in prop - label
FOLDER - is item is folder, if FOLDER=1, in prop["type"] = "folder" or "file"
CHILDREN - is item have children, only if FOLDER=1, in prop["CHILDREN"]=1 or 0
LOADED - if item have children and it's already loaded - LOADED=1, in prop["loaded"]=1 or 0
OPENED - if item have children and opened - OPENED=1, in prop["loaded"]=1 or 0
DISABLED - if item disabled - DISABLED=1, in prop["disabled"]=1 or 0

----- Optional images -----
IMAGE, in prop Image
OIMAGE, in prop oImage
SIMAGE, in prop sImage
SOIMAGE, in prop soImage
DIMAGE, in prop dImage

----- Optional classes -----
CLASS, in prop Class
OCLASS, in prop oClass
SCLASS, in prop sClass
SOCLASS, in prop soClass
DICLASS, in prop dClass




CLICKHANDLER:
function ClickHandler(TreeId,ClickType,Id,Type,Open) {}
ClickType can be link/icon/label
*/

    this.TreeId    = TreeId;

    this.URParam   =URParam;

    this.XMLDataBuilder_url=XMLDataBuilder_url;
    
    this.Container = Container;
    this.ClickHandlerFunction=ClickHandlerFunction;

    this.LoadingImage_sx = LoadingImage_sx;
    this.LoadingImage_sy = LoadingImage_sy;
    this.LoadingImage    = LoadingImage;

    this.Images_sy = Images_sy;

    this.LinkImages_sx = LinkImages_sx;
    this.UDimage       = UDimage;
    this.UDRimage      = UDRimage;
    this.URimage       = URimage;
    this.UDRFimage     = UDRFimage;
    this.URFimage      = URFimage;
    this.UDRFOimage    = UDRFOimage;
    this.URFOimage     = URFOimage;

    this.TypeImages_sx = TypeImages_sx;


    this.FolderImage             = FolderImage;
    this.OpenFolderImage         = OpenFolderImage;
    this.SelectedFolderImage     = SelectedFolderImage;
    this.SelectedOpenFolderImage = SelectedOpenFolderImage;

    this.FolderClassName             = FolderClassName;
    this.OpenFolderClassName         = OpenFolderClassName;
    this.SelectedFolderClassName     = SelectedFolderClassName;
    this.SelectedOpenFolderClassName = SelectedOpenFolderClassName;

    this.DisabledFolderImage             = DisabledFolderImage;
    this.DisabledOpenFolderImage         = DisabledOpenFolderImage;
    this.DisabledSelectedFolderImage     = DisabledSelectedFolderImage;
    this.DisabledSelectedOpenFolderImage = DisabledSelectedOpenFolderImage;

    this.DisabledFolderClassName             = DisabledFolderClassName;
    this.DisabledOpenFolderClassName         = DisabledOpenFolderClassName;
    this.DisabledSelectedFolderClassName     = DisabledSelectedFolderClassName;
    this.DisabledSelectedOpenFolderClassName = DisabledSelectedOpenFolderClassName;


    this.FileImage         = FileImage;
    this.SelectedFileImage = SelectedFileImage;

    this.FileClassName         = FileClassName;
    this.SelectedFileClassName = SelectedFileClassName;

    this.DisabledFileImage         = DisabledFileImage;
    this.DisabledSelectedFileImage = DisabledSelectedFileImage;

    this.DisabledFileClassName         = DisabledFileClassName;
    this.DisabledSelectedFileClassName = DisabledSelectedFileClassName;


    this.RootLabel=RootLabel;
    this.RootId=RootId;

    this.RootImages_sx         = RootImages_sx;
    this.RootImages_sy         = RootImages_sy;
    this.RootImage             = RootImage;
    this.OpenRootImage         = OpenRootImage;
    this.SelectedRootImage     = SelectedRootImage;
    this.SelectedOpenRootImage = SelectedOpenRootImage;

    this.RootClassName             = RootClassName;
    this.OpenRootClassName         = OpenRootClassName;
    this.SelectedRootClassName     = SelectedRootClassName;
    this.SelectedOpenRootClassName = SelectedOpenRootClassName;

    this.DontOpenBranch = DontOpenBranch;

    this.Selected = null;

    this.RootObj=null;
//    this.Build(firstSelectedType,firstSelectedId);
   }

   TreeMod.prototype.Build=function(firstSelectedType,firstSelectedId) {
	while (this.Container.hasChildNodes()) this.Container.removeChild(this.Container.lastChild);

    var ttr=this.MakeTree();

    this.firstSelectedType = firstSelectedType;
    this.firstSelectedId = firstSelectedId;

 //  if (this.firstSelectedType!=null)
   	  this.RootTreeClick("tree_id="+this.TreeId+"&selected_type="+this.firstSelectedType+"&selected_id="+this.firstSelectedId);
	var idstr=this.TreeId;
	var NavId=eval(idstr.replace(new RegExp('([^_]*)_([^_]*)','gi'),'$1_n')); 
    if(NavId.NavId) NavId.CreateToolbar("tree");
   }

   TreeMod.prototype.Rebuild=function(get) {
	while (this.Container.hasChildNodes()) this.Container.removeChild(this.Container.lastChild);
    var ttr=this.MakeTree();
    this.firstSelectedType = "folder";
    this.firstSelectedId = this.RootId;
    var params="tree_id="+this.TreeId+"&selected_type="+this.firstSelectedType+"&selected_id="+this.firstSelectedId;
	if(get) params+=get;
	//alert(params);
  	  this.RootTreeClick(params);
	var idstr=this.TreeId;
	var NavId=eval(idstr.replace(new RegExp('([^_]*)_([^_]*)','gi'),'$1_n')); 
    if(NavId.NavId) NavId.CreateToolbar("tree");
   }


   TreeMod.prototype.GetSelected=function() {
	if (this.Selected) {
        var rt=new Array();
        rt["type"]=this.Selected["type"];
        rt["id"]=this.Selected["id"];
        rt["parent"]=(this.Selected["parentNode"]!=null ? this.Selected["parentNode"]["id"] : null);
        return rt;
    }
    var rt=new Array();
    rt["type"]=null;
    rt["id"]=null;
    rt["parent"]=0;
    return rt;
   }


   TreeMod.prototype.GetTypeImage=function(type, selected, opened, prop) {
    if(prop["id"]==selid) return "/img/cat/2arr_2.gif";
	
	if (prop["disabled"]) {
       if (type=="folder") return (selected ? ( (opened ? ( prop["dsoImage"] ? prop["dsoImage"] : this.DisabledSelectedOpenFolderImage ) : ( prop["dsImage"] ? prop["dsImage"] : this.DisabledSelectedFolderImage ) ) ) : ( (opened ? ( prop["doImage"] ? prop["doImage"] : this.DisabledOpenFolderImage ) : ( prop["dImage"] ? prop["dImage"] : this.DisabledFolderImage )) ));
           else if (type=="file") return (selected ? ( prop["dsImage"] ? prop["dsImage"] : this.DisabledSelectedFileImage ) : ( prop["dImage"] ? prop["dImage"] : this.DisabledFileImage ));
        return;
    }
    if (type=="folder") return (selected ? ( (opened ? ( prop["soImage"] ? prop["soImage"] : this.SelectedOpenFolderImage ) : ( prop["sImage"] ? prop["sImage"] : this.SelectedFolderImage ) ) ) : ( (opened ? ( prop["oImage"] ? prop["oImage"] : this.OpenFolderImage ) : ( prop["Image"] ? prop["Image"] : this.FolderImage )) ));
        else if (type=="file") return (selected ? ( prop["sImage"] ? prop["sImage"] : this.SelectedFileImage ) : ( prop["Image"] ? prop["Image"] : this.FileImage ));
                 else if (type=="root") return (selected ? ( (opened ? this.SelectedOpenRootImage : this.SelectedRootImage ) ) : ( (opened ? this.OpenRootImage : this.RootImage) ));
 
   }


   TreeMod.prototype.GetTypeClassName=function(type, selected, opened, prop) {
	return "menucat2";
	if (prop["disabled"]) {
        if (type=="folder") 
			return (selected ? ( (opened ? ( prop["dsoClass"] ? prop["dsoClass"] : this.DisabledSelectedOpenFolderClassName ) : ( prop["dsClass"] ? prop["dsClass"] : this.DisabledSelectedFolderClassName ) ) ) : ( (opened ? ( prop["doClass"] ? prop["doClass"] : this.DisabledOpenFolderClassName ) : ( prop["dClass"] ? prop["dClass"] : this.DisabledFolderClassName )) ));
            else if (type=="file") return (selected ? ( prop["dsClass"] ? prop["dsClass"] : this.DisabledSelectedFileClassName ) : ( prop["dClass"] ? prop["dClass"] : this.DisabledFileClassName ));
        return;
    }
    if (type=="folder") return (selected ? ( (opened ? ( prop["soClass"] ? prop["soClass"] : this.SelectedOpenFolderClassName ) : ( prop["sClass"] ? prop["sClass"] : this.SelectedFolderClassName ) ) ) : ( (opened ? ( prop["oClass"] ? prop["oClass"] : this.OpenFolderClassName ) : ( prop["Class"] ? prop["Class"] : this.FolderClassName )) ));
        else if (type=="file") return (selected ? ( prop["sClass"] ? prop["sClass"] : this.SelectedFileClassName ) : ( prop["Class"] ? prop["Class"] : this.FileClassName ));
                 else if (type=="root") return (selected ? ( (opened ? this.SelectedOpenRootClassName : this.SelectedRootClassName ) ) : ( (opened ? this.OpenRootClassName : this.RootClassName) ));
 
   }


   TreeMod.prototype.SetImageAndClassByProp=function(prop) {
    var issel=(this.Selected==prop);
    if (prop["type"]=="root") {        
		prop["HTMLo"].firstChild.firstChild.src=this.GetTypeImage(prop["type"],issel,prop["opened"],prop);
        prop["HTMLo"].firstChild.nextSibling.firstChild.className=this.GetTypeClassName(prop["type"],issel,prop["opened"],prop);
        return;
    } 

    if (prop["type"]=="file") {
        prop["HTMLo"].firstChild.nextSibling.firstChild.src=this.GetTypeImage(prop["type"],issel,false,prop);
        prop["HTMLo"].firstChild.nextSibling.nextSibling.firstChild.className=this.GetTypeClassName(prop["type"],issel,false,prop);
        prop["HTMLo"].className=this.GetTypeClassName(prop["type"],issel,false,prop);
        return;
    }

    if (prop["type"]=="folder") {
        var islast=prop["HTMLo"].nextSibling;
        if (islast!=null && islast.id=="sfolder") islast=islast.nextSibling;
        islast=(islast==null);
        
		//if (prop["children"]) {
            //if (prop["opened"]) prop["HTMLo"].firstChild.firstChild.src=(islast ? this.URFOimage : this.UDRFOimage);
                //else prop["HTMLo"].firstChild.firstChild.src=(islast ? this.URFimage : this.UDRFimage);
        //} else prop["HTMLo"].firstChild.firstChild.src=(islast ? this.URimage : this.UDRimage);
        if(prop["parentNode"]["id"]){
	     prop["HTMLo"].firstChild.nextSibling.firstChild.src=this.GetTypeImage(prop["type"],issel,prop["opened"] | (!prop["children"] & issel),prop);
		 //prop["HTMLo"].firstChild.nextSibling.nextSibling.firstChild.className=this.GetTypeClassName(prop["type"],issel,prop["opened"] | (!prop["children"] & issel),prop);
		
		} else {
	     //prop["HTMLo"].firstChild.firstChild.src=prop["icon2"];
        }
		//prop["HTMLo"].className=this.GetTypeClassName(prop["type"],issel,prop["opened"] | (!prop["children"] & issel),prop);

        var pr=prop["HTMLo"].firstChild.nextSibling;
        pr.style.backgroundImage=prop["opened"] ? "url('"+this.UDimage+"')" : "";
        pr.style.backgroundPositionY=this.Images_sy;
    }
   }


   TreeMod.prototype.SetSelected=function(prop) {
 	//alert("setSelected");	
	var tprop=this.Selected;
    this.Selected=prop;

   if (tprop!=null) 
    this.SetImageAndClassByProp(tprop);

    this.SetImageAndClassByProp(prop);
//    prop["HTMLo"].scrollIntoView(true);

	if(parent.frames[0]){
         var t=parent.frames[0].name;
	 if(t!='menu') prop["HTMLo"].scrollIntoView(true); 
        }


   }



   TreeMod.prototype.MakeTree=function() {
	var el,sel,ssel,sssel;
    var xml_el;
    var prop=new Array();
    prop["id"] = this.RootId;
    prop["label"] = this.RootLabel;
    prop["loaded"] = 0;
    prop["type"] = "root";
    prop["children"] = 1;
    prop["opened"] = 0;
    prop["treeClass"] = this;
    prop["firstChild"]=null;
    prop["parentNode"]=null;
    prop["nextSibling"]=null;
    prop["prevSibling"]=null;
    el=CrEl(this.Container,"table","width=100%; cellspacing=0; cellpadding=0; border=0;");
    el.onselectstart=function() {return false;}
    sel=CrEl(el,"colgroup");
    CrEl(sel,"col","width="+this.RootImages_sx+";");
    CrEl(sel,"col","width=100%;");
    el=CrEl(el,"tbody");
    //sel=CrEl(el,"tr","valign=middle;",(prop["id"]=="comment") ? "" :"cursor: 'pointer'; cursor: 'hand';");
	 sel=CrEl(el,"tr","valign=middle;");
    prop["HTMLo"]=sel;
    sel.getProp=function() {return this.prop;};
    sel.prop=prop;

    this.RootObj=prop;

    ssel=CrEl(sel,"td","width="+this.RootImages_sx+";");
    ssel.onclick=function () {  var prop = this.parentNode.getProp(); prop["treeClass"].RootTreeClick(); if (prop["treeClass"].ClickHandlerFunction) prop["treeClass"].ClickHandlerFunction(prop["treeClass"].TreeId,"icon",0,"folder",prop["opened"],prop["disabled"],prp["descr"]);};
    ssel.style.cursor=(navigator.appName == "Microsoft Internet Explorer")?"hand":"pointer";
    sssel=CrEl(ssel,"img","src=/images/0.gif; width=0; height=0;");

    ssel=CrEl(sel,"td");
    ssel=CrEl(ssel,"span","class="+this.GetTypeClassName(prop["type"], (this.Selected==prop), prop["opened"], prop)+";");
    ssel.onclick=function() { 
                             var prp = this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                             if (to.Selected==prp) return;
                             to.SetSelected(prp);
                             if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",0,"folder",prp["opened"],prp["disabled"],prp["descr"]);
                            }
    /*
	ssel.ondblclick=function () {  
                                 var prp = this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                                 to.RootTreeClick();
                                 if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",0,"folder",prp["opened"],prp["disabled"],prp["descr"]);
                                };
    */
	CrEl(ssel,"text",this.RootLabel);

    return sel;
   }


   TreeMod.prototype.MakeBranch=function(ct,xml_o,parent_prop) {
	var islast;
    var xml_no=xml_co=xml_o;
    var tel,el,sel,attr;
    var sel_tdl,sel_tdi,sel_spn;
    var prop,prev_prop=null;

    while ((xml_co=xml_no)!=null) {
           xml_no=xml_co.nextSibling;
           prop=new Array();
		   prop["num_goods"] = xml_co.getAttribute("NUMGOODS");
		   prop["descr"]=xml_co.getAttribute("DESCR");
		   prop["icon1"] = xml_co.getAttribute("ICON1");
           prop["icon2"] = xml_co.getAttribute("ICON2");
		   prop["id"] = xml_co.getAttribute("ID");			   
           prop["label"] = xml_co.getAttribute("LABEL");
           prop["type"] = ((xml_co.getAttribute("FOLDER")==1) ? "folder" : "file");
           prop["children"] = ((xml_co.getAttribute("CHILDREN")==1) ? 1 : 0);
           prop["loaded"] = 0;
           prop["treeClass"] = this;
           prop["opened"] = ((xml_co.getAttribute("OPENED")==1) ? 1 : 0);
           prop["disabled"] = ((xml_co.getAttribute("DISABLED")==1) ? 1 : 0);
           prop["parentNode"]=parent_prop;

           if (parent_prop["firstChild"]==null) parent_prop["firstChild"]=prop;
           prop["firstChild"]=null;
           prop["nextSibling"]=null;
           if (prev_prop!=null) {
               prop["prevSibling"]=prev_prop;
               prev_prop["nextSibling"]=prop;
           } else prop["prevSibling"]=null;

           prev_prop=prop;

	       islast=(xml_no==null);            
		   if(parent_prop["id"] && first || root){
	
				if(!root){
				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");   				
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");
                }

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;");   				
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;"); 
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=2; bgcolor=#9A9A9A;");   				
				CrEl(tr,"td","height=2; bgcolor=#9A9A9A;"); 
				CrEl(tr,"td","height=2; bgcolor=#9A9A9A;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=2; bgcolor=#C8C8C8;");   				
				CrEl(tr,"td","height=2; bgcolor=#C8C8C8;"); 
				CrEl(tr,"td","height=2; bgcolor=#C8C8C8;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#E4E4E4;");   				
				CrEl(tr,"td","height=1; bgcolor=#E4E4E4;"); 
				CrEl(tr,"td","height=1; bgcolor=#E4E4E4;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#C8C8C8;");   				
				CrEl(tr,"td","height=1; bgcolor=#C8C8C8;"); 
				CrEl(tr,"td","height=1; bgcolor=#C8C8C8;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=11; bgcolor=#DFDFDF;");   				
				CrEl(tr,"td","height=11; bgcolor=#DFDFDF;"); 
				CrEl(tr,"td","height=11; bgcolor=#DFDFDF;");
				first=false;
				root=false;
     
		   }  

		   //--tel=CrEl(ct,"tr","bgcolor=#FFFFFF;",prop["disabled"] ? "" :"cursor: 'pointer'; cursor: 'hand'; "); //this.Images_sy
		   tel=CrEl(ct,"tr","bgcolor=#FFFFFF;"); //this.Images_sy
		   prop["HTMLo"]=tel;
           tel.getProp=function() {return this.prop;};
           tel.prop=prop;

           if (prop["type"]=="folder") {   
			   if(parent_prop["id"]){		
		
				prop["loaded"]=(prop["children"] ? 0 : 1);
				sel_tdl=CrEl(tel,"td","height=22; align=right; valign=top; bgcolor=#dfdfdf;"); 
				CrEl(sel_tdl,"img","width=1; height=1; hspace=7; vspace=4; src=/img/x.gif; ");
                //CrEl(sel_tdl,"img","width=8; height=8; hspace=3; vspace=4; src="+(islast ? (prop["children"] ? this.URFimage : this.URimage) : (prop["children"] ? this.UDRFimage : this.UDRimage))+";");

                sel_tdi=CrEl(tel,"td","height=22; align=left; bgcolor=#DFDFDF;",prop["children"] ? "cursor: 'pointer'; cursor: 'hand'; ":"");       
                //CrEl(sel_tdi,"img","width=8; height=8; hspace=0; src="+this.GetTypeImage(prop["type"], (this.Selected==prop), prop["opened"], prop)+";",prop["children"] ?"cursor: 'pointer'; cursor: 'hand'; ":"");
                CrEl(sel_tdi,"img","width=8; height=8; hspace=0; src="+(prop["children"]?"/img/cat/2arr_1.gif":"/img/cat/2arr_1g.gif")+";",prop["children"] ?"cursor: 'pointer'; cursor: 'hand'; ":"");
		
                var label=prop["label"].replace(new RegExp('\\(.*\\)','g'),"");
                var country=prop["label"].replace(label,"");

                sel=CrEl(tel,"td","align=left; bgcolor=#dfdfdf;");
                
				if(prop["id"]==selid)
				 sel_spn=CrEl(sel,"span","class=cat2select;");
                else
				 sel_spn=CrEl(sel,"span","class="+this.GetTypeClassName(prop["type"], (this.Selected==prop), prop["opened"], prop)+";",prop["disabled"] & prop["descr"]==0?"":"cursor: 'pointer'; cursor: 'hand'; ");

				CrEl(sel_spn,"text",label);

			    sel_spn1=CrEl(sel,"span","class=cat2country;");
                //CrEl(sel_spn1,"text"," "+country);

                if(prop["num_goods"]!='0')
					CrEl(sel_spn1,"text"," "+country+' '+prop["num_goods"]);
				else 
					CrEl(sel_spn1,"text"," "+country);

               } else {
				prop["loaded"]=(prop["children"] ? 0 : 1);

				sel_tdl=CrEl(tel,"td","width=43; height=27; align=right; valign=top;",prop["children"] ? "cursor: 'pointer'; cursor: 'hand'; ":""); 
			    
				img=CrEl(sel_tdl,"img","width=43; height=27; hspace=0; vspace=6; src="+prop["icon1"]+";",prop["children"] ? "cursor: 'pointer'; cursor: 'hand'; ":"");
                //CrEl(sel_tdl,"img","width=8; height=8; hspace=3; vspace=4; src="+(islast ? (prop["children"] ? this.URFimage : this.URimage) : (prop["children"] ? this.UDRFimage : this.UDRimage))+";");
                
				if(prop["children"]){
				 if(navigator.appName == "Microsoft Internet Explorer"){
				  img.attachEvent('onmouseover',function (){event.srcElement.src=event.srcElement.src.replace(/_1/,'_2');});
                  img.attachEvent('onmouseout',function (){event.srcElement.src=event.srcElement.src.replace(/_2/,'_1');});
                 } else {
                  img.addEventListener("mouseover",function(){this.src=this.src.replace(/_1/,'_2');},false);
                  img.addEventListener("mouseout",function(){this.src=this.src.replace(/_2/,'_1');},false);
                 }
                }

				c=CrEl(tel,"td","width=10;");
				CrEl(c,"img","width=1; height=8; hspace=3; vspace=4; src=/img/0.gif;"); 

                var label=prop["label"].replace(new RegExp('\\(.*\\)','g'),"");
                var country=prop["label"].replace(label,"");

                sel=CrEl(tel,"td","align=left;");
                if(prop["id"]==selid)
                 sel_spn=CrEl(sel,"span","class=menucat_sel;");
                else
				sel_spn=CrEl(sel,"span","class=menucat;",prop["num_goods"]==0 & prop["descr"]==0?"":"cursor: 'pointer'; cursor: 'hand'; ");
                CrEl(sel_spn,"text",label);

			    sel_spn1=CrEl(sel,"span","class=cat2country;");
                CrEl(sel_spn1,"text"," "+country);

				sel_tdi=CrEl(tel,"td");      
				CrEl(sel_tdi,"img","src=/img/0.gif;");	

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;");   				
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;"); 
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;");				
				
				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");   				
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");

               }


               if (prop["children"] && xml_co.firstChild!=null) {
                   prop["loaded"]=1;
                   tel.firstChild.nextSibling.style.backgroundImage=(prop["opened"] ? "url('"+this.UDimage+"')" : "");
                   tel.firstChild.nextSibling.style.backgroundPositionY=this.Images_sy;
                   
				   
				   el=CrEl(ct,"tr","id=sfolder;",prop["opened"] ? "" : prop["disabled"] ? "" :"display: 'none'; cursor: 'pointer'; cursor: 'hand';");
				   //sel=CrEl(el,"td",(islast ? "" : "background="+this.UDimage+";"));       
                   //CrEl(sel,"img","width=1; height=1;");

                   el=CrEl(el,"td","colspan=3;");       
                   el=CrEl(el,"table","cellspacing=0; cellpadding=0; border=0; width=100%;");
                   

				   if(!parent_prop["id"]){
					            sel=CrEl(el,"colgroup");
								CrEl(sel,"col","width=20%;");
                                CrEl(sel,"col","width=5%;");
                                CrEl(sel,"col","width=75%;");   
				   } else {
					            sel=CrEl(el,"colgroup");
								CrEl(sel,"col","width=26%;");
                                CrEl(sel,"col","width=5%;");
                                CrEl(sel,"col","width=69%;");   
                   }

				   el=CrEl(el,"tbody");		   
				   
				   
				   if(!parent_prop["id"]) {root=true; root1=true;}
	     		   this.MakeBranch(el,xml_co.firstChild,prop);
                   this.SetImageAndClassByProp(prop);
               }
 
               if (prop["children"]) {
                   
				if(parent_prop["id"]){   
				   
				   sel_tdl.onclick=function() { 
                                               var prp=this.parentNode.getProp(),to=prp["treeClass"];				
                                               if (!to.DontOpenBranch) to.FolderTreeClick(prp,0); 
                                               if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"link",prp["id"],prp["type"],prp["opened"],prp["disabled"],prp["descr"]);
                                              }
                } else {
                   
				   
				   sel_tdl.onclick=function() {
					                           done=false;
                                               var prp=this.parentNode.getProp(),to=prp["treeClass"];					   
											   if(prp["opened"]){
											    var target=document.location.toString();	   
	                                            target1=target.replace(/\?cat=[^&]*/ig,'');
	                                            if(target1!=target) document.location="/";
											   }
                                               /*
											   if(prp["opened"])										
											    this.firstChild.src=this.firstChild.src.replace(/_2/,'_1');
                                               else 
											    this.firstChild.src=this.firstChild.src.replace(/_1/,'_2');
												*/
                                               if (!to.DontOpenBranch) to.FolderTreeClick(prp,1); 
                                               if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"link",prp["id"],prp["type"],prp["opened"],prp["disabled"],prp["descr"]);
                                              }
				}
				/*
                   sel_spn.ondblclick=function() {alert(2);
                                               var prp=this.parentNode.parentNode.getProp(),to=prp["treeClass"];
											   if (!to.DontOpenBranch) to.FolderTreeClick(prp); 
                                               if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",prp["id"],prp["type"],prp["opened"],prp["disabled"],prp["descr"]);
                                              }	
                 */
			   }
               if(prop["children"])
			    sel_tdi.onclick=function() {
				   done=true;
                                           var prp=this.parentNode.getProp(),to=prp["treeClass"];
                                           if (prp["children"] && !to.DontOpenBranch) to.FolderTreeClick(prp); 
                                           if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"icon",prp["id"],prp["type"],prp["opened"] | !prp["children"],prp["disabled"],prp["descr"]);
                                         }
		      if(parent_prop["id"]){   
               
			   if((prop["num_goods"]!=0 | prop["descr"]==1) && prop["children"])
			   sel_spn.onclick=function() {done=true;
                                           var prp=this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                                           if (prp["children"] && !to.DontOpenBranch) to.FolderTreeClick(prp); 
                                           if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",prp["id"],prp["type"],prp["opened"] | !prp["children"],prp["disabled"],prp["descr"]);
                                          }
			  else if((prop["num_goods"]==0 && prop["descr"]!=1) && prop["children"])
			   sel_spn.onclick=function() {done=true;
                                           var prp=this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                                           if (prp["children"] && !to.DontOpenBranch) to.FolderTreeClick(prp); 
                                           }
		      else
			   sel_spn.onclick=function() {
                                           var prp=this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                                           if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",prp["id"],prp["type"],prp["opened"] | !prp["children"],prp["disabled"],prp["descr"]);
                                          }

			  } else {
               if(prop["num_goods"]!=0 | prop["descr"]==1)
			    sel_spn.onclick=function() {
                                           var prp=this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                                           if (to.Selected==prp) return;
                                           //to.SetSelected(prp);
                                           if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",prp["id"],prp["type"],prp["opened"] | !prp["children"],prp["disabled"],prp["descr"]);
                                          }
              }

		   } else {
                   prop["loaded"]=1;
                   sel=CrEl(tel,"td",(islast ? "" : "background="+this.UDimage+";"));
                   CrEl(sel,"img","src="+(islast ? this.URimage : this.UDRimage)+";");

                   sel_tdi=CrEl(tel,"td");       
                   CrEl(sel_tdi,"img","src="+this.GetTypeImage("file", (this.Selected==prop), false, prop)+";");

                   sel=CrEl(tel,"td","width=100%;");
                   sel_spn=CrEl(sel,"span","class="+this.GetTypeClassName(prop["type"], (this.Selected==prop), prop["opened"], prop)+";");
                   CrEl(sel_spn,"text",prop["label"]);

                   if(prop["id"]!="comment") sel_tdi.style.cursor=(navigator.appName == "Microsoft Internet Explorer")?"hand":"pointer";
   
                   sel_tdi.onclick=function() { 
                                               var prp=this.parentNode.getProp(),to=prp["treeClass"];
                                               if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"icon",prp["id"],prp["type"],prp["opened"],prp["disabled"],prp["descr"]);
                                              }

                   sel_spn.onclick=function() { 
                                               var prp=this.parentNode.parentNode.getProp(),to=prp["treeClass"];
                                               if (to.Selected==prp) return;
                                               to.SetSelected(prp);
                                               if (to.ClickHandlerFunction) to.ClickHandlerFunction(to.TreeId,"label",prp["id"],prp["type"],prp["opened"],prp["disabled"],prp["descr"]);
                                              }
                  }  


           if(parent_prop["id"] && islast && !done){
				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=9; bgcolor=#DFDFDF;");   				
				CrEl(tr,"td","height=9; bgcolor=#DFDFDF;"); 
				CrEl(tr,"td","height=9; bgcolor=#DFDFDF;");
		   }

 

           if(parent_prop["id"] && root1 && islast && !done){
	 
				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;");   				
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;"); 
				CrEl(tr,"td","height=1; bgcolor=#F7F7F7;");				
				
				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");   				
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");  
	            done=true;
		        root1=false;
		   }


           if (this.firstSelectedType!="")
              if (this.firstSelectedType==prop["type"] &&
               this.firstSelectedId==prop["id"]) {
                 this.SetSelected(prop);
                 this.firstSelectedType="";
               }
    }
								shiftAnns();
		                        showdivs();
    return tel;
   }





   // почистить этот код
   TreeMod.prototype.MakeL=function(ct,xml_o,parent_prop) {
	var islast;
    var xml_no=xml_co=xml_o;
    var tel,el,sel,attr;
    var sel_tdl,sel_tdi,sel_spn;
    var prop,prev_prop=null;

    while ((xml_co=xml_no)!=null) {       
		   
		   xml_no=xml_co.nextSibling;
           prop=new Array();
           prop["id"] = xml_co.getAttribute("ID");
           prop["label"] = xml_co.getAttribute("LABEL");
           prop["type"] = ((xml_co.getAttribute("FOLDER")==1) ? "folder" : "file");
           prop["children"] = ((xml_co.getAttribute("CHILDREN")==1) ? 1 : 0);
           prop["loaded"] = 0;
           prop["treeClass"] = this;
           prop["opened"] = ((xml_co.getAttribute("OPENED")==1) ? 1 : 0);
           prop["disabled"] = ((xml_co.getAttribute("DISABLED")==1) ? 1 : 0);
           prop["parentNode"]=parent_prop;
           if (parent_prop["firstChild"]==null) parent_prop["firstChild"]=prop;
           prop["firstChild"]=null;
           prop["nextSibling"]=null;
           if (prev_prop!=null) {
               prop["prevSibling"]=prev_prop;
               prev_prop["nextSibling"]=prop;
           } else prop["prevSibling"]=null;
           prev_prop=prop;
	       islast=(xml_no==null);       
		 
		 if(parent_prop["id"] && first || root){

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");   				
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;"); 
				CrEl(tr,"td","height=1; bgcolor=#CCCCCC;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#FFFFFF;");   				
				CrEl(tr,"td","height=1; bgcolor=#FFFFFF;"); 
				CrEl(tr,"td","height=1; bgcolor=#FFFFFF;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=2; bgcolor=#9A9A9A;");   				
				CrEl(tr,"td","height=2; bgcolor=#9A9A9A;"); 
				CrEl(tr,"td","height=2; bgcolor=#9A9A9A;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=2; bgcolor=#C8C8C8;");   				
				CrEl(tr,"td","height=2; bgcolor=#C8C8C8;"); 
				CrEl(tr,"td","height=2; bgcolor=#C8C8C8;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#E4E4E4;");   				
				CrEl(tr,"td","height=1; bgcolor=#E4E4E4;"); 
				CrEl(tr,"td","height=1; bgcolor=#E4E4E4;");

				tr=CrEl(ct,"tr"); 
				CrEl(tr,"td","height=1; bgcolor=#C8C8C8;");   				
				CrEl(tr,"td","height=1; bgcolor=#C8C8C8;"); 
				CrEl(tr,"td","height=1; bgcolor=#C8C8C8;");
				first=false;
				root=false;
		 }  
		   tel=CrEl(ct,"tr","bgcolor=#F7F7F7;",prop["disabled"] ? "" :"cursor: 'pointer'; cursor: 'hand'; "); //this.Images_sy
		   prop["HTMLo"]=tel;
           tel.getProp=function() {return this.prop;};
           tel.prop=prop;

		   if (this.firstSelectedType!="")
                   if (this.firstSelectedType==prop["type"] &&
                       this.firstSelectedId==prop["id"]) {
                                                          this.SetSelected(prop);
                                                          this.firstSelectedType="";
                                                       }

    }

    return tel;
   }


   TreeMod.prototype.RootTreeClick=function(get,noopen) {
	var el,sel,prop=this.RootObj;
    if (prop["loaded"]==0 || get) {
        prop["loaded"]=1;
        if (!noopen) prop["opened"]=1;
        this.SetImageAndClassByProp(prop);
        var el=CrEl(prop["HTMLo"].parentNode,"tr");
        if (!prop["opened"]) el.style.display="none";

        var sel=CrEl(el,"td","colspan=2;","paddingLeft: '"+(this.RootImages_sx/2)+"';");
        CrEl(sel,"img","src="+this.LoadingImage+"; width="+this.LoadingImage_sx+"; height="+this.LoadingImage_sy+";");
        var xl=new XML_Load(this.XMLDataBuilder_url,"POST",get ? (get+this.URParam) : ("tree_id="+this.TreeId+"&parent_id="+this.RootId+this.URParam),"XML",prop);
        if (xl.IsReady())
            xl.OnReady=function(status,prop,ldata) {
                                var el,sel;
                                var branch=XML_FindSubRootSection(ldata,"BRANCH");

                                if (status!="" || !ldata || !branch) { // Error while loading
                                    if (ldata && !branch) {
                                    } else {
                                            prop["loaded"]=0;
                                            prop["opened"]=0;
                                           }
                                    prop["HTMLo"].parentNode.removeChild(prop["HTMLo"].nextSibling);
                                    prop["treeClass"].SetImageAndClassByProp(prop);
                                    return;
                                } 
                                prop["HTMLo"].nextSibling.firstChild.removeChild(prop["HTMLo"].nextSibling.firstChild.firstChild);
                                var el=CrEl(prop["HTMLo"].nextSibling.firstChild,"table","cellspacing=0; cellpadding=0; border=0; width=100%;");
                                sel=CrEl(el,"colgroup");
                                CrEl(sel,"col","width="+prop["treeClass"].LinkImages_sx+"px;");
                                CrEl(sel,"col","width="+prop["treeClass"].TypeImages_sx+"px;");
                                CrEl(sel,"col","width=100%;");
                                el=CrEl(el,"tbody");

                                prop["treeClass"].MakeBranch(el,branch.firstChild,prop);
                                prop["treeClass"].SetImageAndClassByProp(prop);
                       };
        xl.Load();
    } else {
            if (prop["opened"]) {
                if (prop["HTMLo"].nextSibling) prop["HTMLo"].nextSibling.style.display="none";
                prop["opened"]=0;
                this.SetImageAndClassByProp(prop);
            } else {
                    if (prop["HTMLo"].nextSibling) prop["HTMLo"].nextSibling.style.display="";
                    prop["opened"]=1;
                    this.SetImageAndClassByProp(prop);
                   }
            this.SetImageAndClassByProp(prop);
           }
   }

   
   TreeMod.prototype.FolderTreeClick=function(prop,flag,noopen) {
	var el,sel,pr;
    var islast=prop["HTMLo"].nextSibling;
    if (islast!=null && islast.id=="sfolder") islast=islast.nextSibling;
    islast=(islast==null);

    if (prop["loaded"]==0) {
        prop["loaded"]=1;
        if (!noopen) prop["opened"]=1;		
		
		el=CrEl(null,"tr","ID=sfolder;");
        InsertChild(false,prop["HTMLo"],el);

        sel=CrEl(el,"td","valign=top;"+(islast ? "" : " background="+this.UDimage+";"));       
        CrEl(sel,"img","width=1; height=1;");

        if (!prop["opened"]) el.style.display="none";

        el=CrEl(el,"td","colspan=2; valign=top;");       
        CrEl(el,"img","src="+this.LoadingImage+"; width="+this.LoadingImage_sx+"; height="+this.LoadingImage_sy+";");

        prop["treeClass"].SetImageAndClassByProp(prop);

        var xl=new XML_Load(this.XMLDataBuilder_url,"POST","tree_id="+this.TreeId+"&parent_id="+prop["id"]+this.URParam,"XML",prop);
        if (xl.IsReady())
            xl.OnReady=function(status,prop,ldata) {
                                var el,sel;
                                var branch=XML_FindSubRootSection(ldata,"BRANCH");

                                if (status!="" || !ldata || !branch) { // Error while loading
                                    if (ldata && !branch) {
                                        prop["children"]=0;
                                        prop["HTMLo"].firstChild.onclick=null;
                                        prop["HTMLo"].firstChild.style.cursor="";
                                        prop["HTMLo"].firstChild.nextSibling.nextSibling.ondblclick=null;
                                    } else prop["loaded"]=0;
                                    prop["opened"]=0;
                                    prop["HTMLo"].parentNode.removeChild(prop["HTMLo"].nextSibling);
                                    prop["treeClass"].SetImageAndClassByProp(prop);
                                    return;
                                } 
                                // профили
								sel=prop["HTMLo"].nextSibling.firstChild;  
                                sel.removeChild(sel.firstChild);
                                el=CrEl(sel,"table","cellspacing=0; cellpadding=0; border=0; width=100%;");
                                sel=CrEl(el,"colgroup");
                                CrEl(sel,"col","width="+prop["treeClass"].LinkImages_sx+"px;");
                                CrEl(sel,"col","width="+prop["treeClass"].TypeImages_sx+"px;");
                                CrEl(sel,"col","width=100%;");
								//CrEl(sel,"col","width=1%;");
                                //CrEl(sel,"col","width=9%;");
                                //CrEl(sel,"col","width=90%;");
                                el=CrEl(el,"tbody");	
	                            if(flag) first=true;
								 else first=false;
								prop["treeClass"].MakeL(el,branch.firstChild,prop); 

                                sel=prop["HTMLo"].nextSibling.firstChild.nextSibling;  
                                sel.removeChild(sel.firstChild);
                                el=CrEl(sel,"table","cellspacing=0; cellpadding=0; border=0;");
                                sel=CrEl(el,"colgroup");
                                //CrEl(sel,"col","width="+prop["treeClass"].LinkImages_sx+";");
                                //CrEl(sel,"col","width="+prop["treeClass"].TypeImages_sx+";");
                                //CrEl(sel,"col","width=100%;");
								CrEl(sel,"col","width=3%;");
                                CrEl(sel,"col","width=8%;");
                                CrEl(sel,"col","width=89%;");
                                el=CrEl(el,"tbody");		                            
								if(flag) first=true;
								 else first=false;
								prop["treeClass"].MakeBranch(el,branch.firstChild,prop);  			
								prop["treeClass"].SetImageAndClassByProp(prop);
                       };
        xl.Load();
    } else {
            var sfolder=prop["HTMLo"].nextSibling;
            if (!sfolder || sfolder.id!="sfolder") return;
            if (prop["opened"]) {
                sfolder.style.display="none";
                prop["opened"]=0;
            } else {
                    sfolder.style.display="";
                    prop["opened"]=1;
                   }
            this.SetImageAndClassByProp(prop);
           }
   }


    TreeMod.prototype.RefreshBranch=function(parent_id,co) {
     if (parent_id==0) { //refresh root
         co=this.RootObj;
         var o=co["HTMLo"].nextSibling;
         if (o) co["HTMLo"].parentNode.removeChild(o);
         co["loaded"]=0;
         this.RootTreeClick(false,true);
         return true;
     }

     if (!co) co=this.RootObj;
     while (co!=null) {
      if (co["id"]==parent_id) {
          if (co["type"]=="file") co=co["parentNode"];
          var o=co["HTMLo"].nextSibling;
          if (o && o.id=="sfolder") co["HTMLo"].parentNode.removeChild(o);
          co["loaded"]=0;
          this.FolderTreeClick(co,true);
          return true;
      }
      if (co.firstChild!=null) if (this.RefreshBranch(parent_id,co.firstChild)) return true;
      co=co.nextSibling;
     }
     return false;
    }

//******************************************************************************

