var adjustableTables = null;

//=========================================================================================

/*

 * Class inheritance

 */

TableLayout.prototype = new Object();



/*

 * Class constructor

 */

function TableLayout(id, vExclude, hExclude, vSize, hSize, isPercent_hSize, isFrame) {

    if(id != undefined) {

        this.id = id;

    }else {

		alert("Incorrect usage of TableLayout: set element ID");

	}

    if(vExclude != undefined) {

        this.vExclude = vExclude;

    }

    if(hExclude != undefined) {

        this.hExclude = hExclude;

    }

	if(vSize != undefined) {

        this.vSize = vSize;

    }

	if(hSize != undefined) {

        this.hSize = hSize;

    }

	if(isPercent_hSize != undefined) {

        this.isPercent_hSize = isPercent_hSize;

    }

	if(isFrame != undefined) {

        this.isFrame = isFrame;

    }

    if(!this.isFrame) {

        TableLayout.START_HIGHT = document.body.clientHeight;

    }else {

        TableLayout.START_HIGHT = window.parent.document.body.clientHeight;

    }



}



/*

 * Methods my

 */



/*

 * Properties

 */

TableLayout.MIN_ELEMENT_HEIGHT = 100;

TableLayout.MIN_ELEMENT_WIDTH = 100;



TableLayout.PREV_HEIGHT = 0;

TableLayout.FRAME_PREV_HEIGHT = 0;

TableLayout.TIMER_ID = null;

TableLayout.IS_CONTINUE = true;

TableLayout.START_HIGHT = null;



TableLayout.SCROLL_WIDTH = 24;

TableLayout.prototype.id = null;

//exclusive vertical size in pix

TableLayout.prototype.vExclude = 0;

//exclusive horizontal size in pix

TableLayout.prototype.hExclude = 0;

//vertical size in percent

TableLayout.prototype.vSize = 95;

//horizontal size in percent

TableLayout.prototype.hSize = 95;

TableLayout.prototype.isPercent_hSize = true;

TableLayout.prototype.isFrame = true;

//========================================================================================

function roundUp(x) {

    var intX = Math.round(x);

    return (intX >= x) ? intX : intX+1;

}



function roundDown(x) {

    var intX = Math.round(x);

    return (intX <= x) ? intX : intX-1;

}



/*function resize_handler() {

    if(!document.all){

	    //mozilla_onresize();

	    window.onresize = mozilla_onresize;

	}else {

    	//adjustElementSize();

	   	window.onresize = adjustElementSize;

	}

}

*/



function resize_handler() {

    if(!document.all){

	    //mozilla_onresize();

	    window.onresize = mozilla_onresize;

	}else {

    	//adjustElementSize();

	   	window.onresize = explorerResize;

	}

}







function onLoadResize() {

    if(!document.all){

        if (adjustableTables != null) {

            mozilla_onresize();

        }else {

	        window.parent.mozilla_onresize();

        }

	}else {

        if (adjustableTables != null) {

            explorerResize();

        }else {

        	window.parent.explorerResize();

        }

     }

}



function explorerResize() {

    window.setTimeout('adjustElementSize()', 50);

}





function mozilla_resize_finish() {

    window.resizeBy(0, 1);

    TableLayout.IS_CONTINUE = false;

}



function adjustElementSize() {

 try{

 var clientHeight = document.body.clientHeight;

 var clientWidth = document.body.clientWidth;

    if(!window.frmMain){

	  var frameClientHeight =0;

	  var frameClientWidth =0;

	}else{

      var frameClientHeight = window.frmMain.document.body.clientHeight;

      var frameClientWidth = window.frmMain.document.body.clientWidth;

	}



 if(!document.all){

      if(TableLayout.PREV_HEIGHT == clientHeight && TableLayout.FRAME_PREV_HEIGHT == frameClientHeight) {

          clearInterval(TableLayout.TIMER_ID);

          TableLayout.TIMER_ID = null;

            //needed line!!!!!!!!!!!!!!!!

            TableLayout.PREV_HEIGHT = 0;

            TableLayout.FRAME_PREV_HEIGHT = 0;

            if(TableLayout.IS_CONTINUE) {

               if(TableLayout.START_HIGHT > clientHeight) {

                    mozilla_resize_finish();

                }else {

                     if (adjustableTables != null) {

        	            for(var i = 0; i < adjustableTables.length; i++) {

		        	        var tableLayout = adjustableTables[i];

			                var tableDiv = null;

			                if(tableLayout.isFrame) {

			                   tableDiv = window.frmMain.document.getElementById(tableLayout.id + "_div");

			                }else {

                      	        tableDiv = document.getElementById(tableLayout.id + "_div");

	    		            }

                            tableDiv.style.display = "";

                   	    }

                    }

                }

            }else {

                TableLayout.IS_CONTINUE = true;

    	        if (adjustableTables != null) {

	    	        for(var i = 0; i < adjustableTables.length; i++) {

		    	        var tableLayout = adjustableTables[i];

			            var tableDiv = null;

			            if(tableLayout.isFrame) {

		        	        tableDiv = window.frmMain.document.getElementById(tableLayout.id + "_div");

			            }else {

                  	        tableDiv = document.getElementById(tableLayout.id + "_div");

			            }

                        tableDiv.style.display = "";

               	    }

                }

            }

            TableLayout.START_HIGHT = clientHeight;

            return;

        }else {

           if (adjustableTables != null) {

	           for(var i = 0; i < adjustableTables.length; i++) {

		            var tableLayout = adjustableTables[i];

			        var tableDiv = null;

			        if(tableLayout.isFrame) {

		        	    tableDiv = window.frmMain.document.getElementById(tableLayout.id + "_div");

			        }else {

                  	    tableDiv = document.getElementById(tableLayout.id + "_div");

			        }

                    if(tableDiv == null || tableDiv == undefined) {

                        //alert("id for delete = " + tableLayout.id);

                        adjustableTables.splice(i, 1);

    		           // alert("adjustableTables.length after delete = " + adjustableTables.length);

                        i = i-1;//????????!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

    			        continue;

                    }

                    tableDiv.style.display = "none";

               	}

            }

        }

 }



  //start insert



 //end insert

	if (adjustableTables != null) {

	      for(var i = 0; i < adjustableTables.length; i++) {



          clientHeight = document.body.clientHeight;

          clientWidth = document.body.clientWidth;

          if(window.frmMain){

  	        frameClientHeight = window.frmMain.document.body.clientHeight;

	        frameClientWidth = window.frmMain.document.body.clientWidth;

          } else {

  	        frameClientHeight = 1;

	        frameClientWidth = 1;

          }

            TableLayout.PREV_HEIGHT = clientHeight;



            TableLayout.FRAME_PREV_HEIGHT = frameClientHeight;

		    var tableLayout = adjustableTables[i];

    		var headerTable = null;

	       	var tableDiv = null;

	       	var table = null;

	       	var table_list = null;





            if(tableLayout.isFrame) {

    			headerTable = window.frmMain.document.getElementById(tableLayout.id + "_header");

    			tableDiv = window.frmMain.document.getElementById(tableLayout.id + "_div");

    			table = window.frmMain.document.getElementById(tableLayout.id);

    			table_list = window.frmMain.document.getElementById(tableLayout.id+"_list");

	        }else {

        		headerTable = document.getElementById(tableLayout.id + "_header");

	        	tableDiv = document.getElementById(tableLayout.id + "_div");

	           	table = document.getElementById(tableLayout.id);

	           	table_list = document.getElementById(tableLayout.id+"_list");

                tableDiv.style.display = "";

	        }



         if(tableDiv == null || tableDiv == undefined) {

	   	        adjustableTables.splice(i, 1);

    		    i = i-1;

    		   continue;



            }





	     var newDivHeight = ((tableLayout.isFrame ? TableLayout.FRAME_PREV_HEIGHT : TableLayout.PREV_HEIGHT) - tableLayout.vExclude) * tableLayout.vSize / 100;

       	    if (newDivHeight < TableLayout.MIN_ELEMENT_HEIGHT) {

           	    newDivHeight = TableLayout.MIN_ELEMENT_HEIGHT;

	        }





	   		var newTableWidth;

	   		if(tableLayout.isPercent_hSize){

                newTableWidth = ((tableLayout.isFrame ? frameClientWidth : clientWidth) - tableLayout.hExclude - TableLayout.SCROLL_WIDTH) * tableLayout.hSize / 100;

	   		}else {

                newTableWidth = tableLayout.hSize;

	   		}

            if (newTableWidth < TableLayout.MIN_ELEMENT_WIDTH) {

           	    newTableWidth = TableLayout.MIN_ELEMENT_WIDTH;

	        }

	    	var newDivWidth = newTableWidth + TableLayout.SCROLL_WIDTH;

		    tableDiv.style.height = roundDown(newDivHeight);

	   		tableDiv.style.width = roundDown(newDivWidth);

	    	if(headerTable != undefined && headerTable != null) {

		        headerTable.width = roundDown(newTableWidth);

    		}

	    	if(table != undefined && table != null) {

	   		    table.width = roundDown(newTableWidth);

	   		    if (table_list != undefined && table_list != null) {

	   		       table_list.width = roundDown(newTableWidth);

	   		    }

	   		}

	   		 

        }



      }

  }

  catch(all){};

 }



function mozilla_onresize(){

    if(TableLayout.TIMER_ID == null) {

    	TableLayout.TIMER_ID = setInterval("adjustElementSize()",10);

    }

	/*

	for(var i = 0; i < 3; i++) {

		adjustElementSize();

	}

	*/

}



/* Themes tree class */



function ThemesTree(Id) {

  this.Id = Id;



  this.lastSelectedTheme = null;

  this.selectedThemeId = null;

  this.selectedThemePath = null;

  this.selectedThemeDscr = null;



  this.imgTreePlus = new Image();

 //this.imgTreePlus.src = "images/tree_plus.gif"
 this.imgTreePlus.src = "js/ext/resources/images/default/tree/tree_plus_nl.png"



  this.imgTreeMinus = new Image();

   //this.imgTreeMinus.src = "images/elbow-minus.gif"
  this.imgTreeMinus.src = "js/ext/resources/images/default/tree/tree_minus_nl.png"



  this.select = function(ThemeId) {

    if (this.lastSelectedTheme != null) {
      this.lastSelectedTheme.className = "tree_text";
    }

    var themeSpan = document.getElementById(Id + ThemeId);
    var nodeText = document.getElementById(Id + ThemeId + 't');

    if(nodeText != null && nodeText.className != null) {
       nodeText.className = "tree_text_sel";
    }

    var path = document.getElementById(Id + 'description');

    if(themeSpan != null && themeSpan.getAttribute != null) {
       this.selectedThemeDscr = themeSpan.getAttribute('dscr');
    }

    if(path != null) {
        //path.innerHTML = this.selectedThemeDscr;

        if(path.hasChildNodes()) {
           path.removeChild(path.firstChild);
        }
        path.appendChild(document.createTextNode(this.getSelectedThemeDscr()));

        //path.innerHTML = this.getSelectedThemeDscr();
    }

    //document.getElementById(Id + 'description').innerHTML = themeSpan.getAttribute('dscr');

    this.selectedThemeId = ThemeId;

    if(themeSpan != null && themeSpan.getAttribute != null) {
       this.selectedThemePath = themeSpan.getAttribute('path');
    }

    if(nodeText != null) {
       this.lastSelectedTheme = nodeText;
    }
  }

  this.expand = function(ThemeId) {

    var themeSpan = document.getElementById(Id + ThemeId);
    var nodeImg = document.getElementById(Id + ThemeId + 'i');
    var childSpan = document.getElementById(Id + ThemeId + 'c');

    if (childSpan == null) {
      return;
    }

    if (themeSpan.getAttribute('expand') == 1) {
        childSpan.style.display = 'none';
        themeSpan.setAttribute('expand', 0);
        nodeImg.src = this.imgTreePlus.src;
    } else {
        childSpan.style.display = 'inline';
        themeSpan.setAttribute('expand', 1);
        nodeImg.src = this.imgTreeMinus.src;
    }
  }

  /*

  this.getSelectedThemeDscr = function() {
    return (this.selectedThemeDscr);
  }

  */

  this.getSelectedThemeDscr = function() {

    len = this.selectedThemeDscr.length;

    if(len > 75) {
        return ("..." + this.selectedThemeDscr.substring(len-75, len));
    }

    return (this.selectedThemeDscr);
  }

  this.getSelectedThemeId = function() {
    return (this.selectedThemeId);
  }

  this.getSelectedThemePath = function() {
    return (this.selectedThemePath);
  }

  this.getSelectedLink = function() {
    return document.getElementById(Id + this.selectedThemeId + 'l');
  }
}

// For AJAX Trees

function getSelectedNodePath(selectedNode, delimeter, useId) {

    var path = selectedNode.getPath();
    path = path.substring(1, path.length);

    if (useId) {
        return path;
    }

    path = replaceIdsWithText(path);
    path = path.split('&lt;').join('<');
    path = path.split('&gt;').join('>');
    path = path.split('&amp;').join('&');

    return encodeURIComponent(path);
}



function constructNodeGroupPathFromTextAttr(selectedNode) {

    if (selectedNode.parentNode != null) {
        return constructNodeGroupPathFromTextAttr(selectedNode.parentNode) + '>' + selectedNode.attributes['text'];
    } else {
        return selectedNode.attributes['text'];
    }
}

function makeRawHtml(input) {

    input = input.split('&lt;').join('<');
    input = input.split('&gt;').join('>');
    input = input.split('&amp;').join('&');

    return input;
}



function replaceIdsWithText(path) {

    ids = path.split('/');

    var retPath = "";

    for (var i = 0; i < ids.length; i++) {

        var node = tree.getNodeById(ids[i]);

        retPath = retPath + node.text;

        if (i != ids.length - 1) {

            retPath = retPath + '/'; //This is the separator of all lessons and user paths "parent/children/subchildren"  *PATH_DELIMITER*

        }

    }

    return retPath;

}



function processSuccessResponse(responseText) {

    var newNode = new Ext.tree.TreeNode(Ext.util.JSON.decode(responseText));

    var oldNode = tree.getNodeById(newNode.id);

    if (oldNode == null) {

        //add new node

        var parentNode = tree.getNodeById(newNode.attributes['parentNodeId']);

        parentNode.leaf = false;

        parentNode.appendChild(newNode);

        parentNode.expand();

    } else {

        oldNode.id = newNode.id;

        oldNode.setText(newNode.text);

        var theNode = tree.getNodeById(oldNode.id);

        theNode.fireEvent("click", theNode);

    }

}





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

Copyright �2000-2002 DHTMLCentral.com, Bratta Communications. All rights reserved. www.dhtmlcentral.com (v4.06)

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

/*Browsercheck object*/

function cm_bwcheck(){

	//In theory we should use object detection, but this script needs work-arounds for almost every browser...

	this.ver=navigator.appVersion

	this.agent=navigator.userAgent.toLowerCase()

	this.dom=document.getElementById?1:0

	this.ns4=(!this.dom && document.layers)?1:0;

	this.op=window.opera

	this.moz=(this.agent.indexOf("gecko")>-1 || window.sidebar)

	this.ie=this.agent.indexOf("msie")>-1 && !this.op

	if(this.op){

		this.op5=(this.agent.indexOf("opera 5")>-1 || this.agent.indexOf("opera/5")>-1)

		this.op6=(this.agent.indexOf("opera 6")>-1 || this.agent.indexOf("opera/6")>-1)

		this.op7=this.dom&&!this.op5&&!this.op6 //So all higher opera versions will use it

	}else if(this.moz) this.ns6 = 1

	else if(this.ie){

		this.ie4 = !this.dom && document.all

  	this.ie5 = (this.agent.indexOf("msie 5")>-1)

  	this.ie55 = (this.ie5 && this.agent.indexOf("msie 5.5")>-1)

  	this.ie6 = this.dom && !this.ie4 && !this.ie5 && ! this.ie55

	}

	this.mac=(this.agent.indexOf("mac")>-1)

	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.op5 || this.op6 || this.op7)

  this.usedom= this.ns6||this.op7//Use dom creation

  this.reuse = this.ie||this.op7||this.usedom //Reuse layers

  this.px=this.dom&&!this.op5?"px":""

	return this

}

var bw=new cm_bwcheck()

/*Variable declaration*/

var cmpage

/*Crossbrowser objects functions*/

function cm_message(txt){alert(txt); return false}

function cm_makeObj(obj,nest,o,doc){ //Changed in v4.05

  if(!doc) doc=document

  if(bw.usedom&&o) this.evnt=o

  else{nest=(!nest) ? "doc.":'doc.layers.'+nest+'.'

    this.evnt=bw.dom? doc.getElementById(obj):

    bw.ie4?doc.all[obj]:bw.ns4?eval(nest+"layers." +obj):0;

  }

  if(!this.evnt) return cm_message('The layer does not exist ('+obj+')'

    +'- \nIf your using Netscape please check the nesting of your tags (on the entire page)\nNest:'+nest)

  this.css=bw.dom||bw.ie4?this.evnt.style:this.evnt; this.ok=0

  this.ref=bw.dom||bw.ie4?doc:this.css.document;

  this.obj = obj + "Object"; 	eval(this.obj + "=this");

  this.x=0; this.y=0; this.w=0; this.h=0; this.vis=0; return this

}

cm_makeObj.prototype.moveIt = function(x,y){this.x=x;this.y=y; this.css.left=x+bw.px;this.css.top=y+bw.px}

cm_makeObj.prototype.showIt = function(o){this.css.visibility="visible"; this.vis=1; if(bw.op5&&this.arr){ this.arr.showIt(); }}//alert('showing arrow')}}

cm_makeObj.prototype.hideIt = function(no){this.css.visibility="hidden"; this.vis=0;}

cm_makeObj.prototype.clipTo = function(t,r,b,l,setwidth){

this.w=r; this.h=b; if(bw.ns4){this.css.clip.top=t;this.css.clip.right=r; this.css.clip.bottom=b;this.css.clip.left=l

}else{if(t<0)t=0;if(r<0)r=0;if(b<0)b=0;if(b<0)b=0; this.css.clip="rect("+t+bw.px+","+r+bw.px+","+b+bw.px+","+l+bw.px+")";

if(setwidth){if(bw.op5||bw.op6){this.css.pixelWidth=r; this.css.pixelHeight=b;}else{this.css.width=r+bw.px; this.css.height=b+bw.px;}}}}

function cm_active(on,h){

	//if(this.o.arr) on?this.o.arr.hideIt():bw.op5?this.o.arr.showIt():this.o.arr.css.visibility="inherit"
	if(this.o.arr) on?this.o.arr.showIt():bw.op5?this.o.arr.showIt(): this.o.arr.css.visibility="inherit"

  if(bw.reuse||bw.usedom){

    if(!this.img2) this.o.evnt.className=on?this.cl2:this.cl

    else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src; //Changed v4.05

    if(on && bw.ns6){this.o.hideIt(); this.o.css.visibility='inherit' }; //netscape 6 bug fix

  }else{

    if(!this.img2){ if(on) this.o.over.showIt(); else this.o.over.hideIt();

    }else this.o.ref.images["img"+this.name].src=on?this.img2.src:this.img1.src;

  }this.isactive=on?1:0

}

/***Pageobject **/

function cm_page(frame){ //Changed v4.05

  if(!frame) frame = self

  this.x=0; this.x2 =(!bw.ie)?frame.innerWidth:frame.document.body.offsetWidth-20;

  this.y=0; this.orgy=this.y2= (!bw.ie)?frame.innerHeight:frame.document.body.offsetHeight-6;

  this.x50=this.x2/2; this.y50=this.y2/2; return this

}

/***check positions**/

function cm_cp(num,w,minus){

	if(num){if(num.toString().indexOf("%")!=-1){var t = w?cmpage.x2:cmpage.y2; num=parseInt((t*parseFloat(num)/100))

  if(minus) num-=minus }else num=eval(num);} else num=0; return num

}

/**Level object**/

function cm_makeLevel(){//changed 4.06

	var c=this, a=arguments; c.width=a[0]||null; c.height=a[1]||null;

  c.regClass=a[2]||null; c.overClass=a[3]||null; c.borderX=a[4]>-1?a[4]:null;

  c.borderY=a[5]>-1?a[5]:null; c.borderClass=a[6]||null; c.rows=a[7]>-1?a[7]:null;

  c.align=a[8]||null; c.offsetX=a[9]||null; c.offsetY=a[10]||null; c.arrow=a[11]||null;

  c.arrowWidth=a[12]||null; c.arrowHeight=a[13]||null; c.roundBorder=a[14]||null; return c

}

/***Making the main menu object**/

function makeCM(name){ //Changed v4.06

// changed c.tim from 100 to 50
  var c=this; c.mc=0; c.name = name; c.m=new Array(); c.scrollY=-1; c.level=new Array(); c.l=new Array(); c.tim=50; c.isresized=0;

  c.isover=0; c.zIndex=100; c.frameStartLevel=1; c.bar=0; c.z=0; c.totw=0; c.toth=0; c.maxw=0; c.maxh=0; cmpage = new cm_page(); c.constructed = 0;

	return this

}//events

makeCM.prototype.onshow=""; makeCM.prototype.onhide=""; makeCM.prototype.onconstruct="";

/***Creating layers**/

function cm_divCreate(id,cl,txt,w,c,app,ex,txt2){

  if(bw.usedom){var div=document.createElement("DIV"); div.className=cl; div.id=id;

    if(txt) div.innerHTML=txt; if(app){app.appendChild(div); return div}

    if(w) document.body.appendChild(div); return div

  }else{var dstr='<div id="'+id+'" class="'+cl+'"'

    if(ex&&bw.reuse) dstr+=" "+ex; dstr+=">"+txt; ; if(txt2) dstr+=txt2;

    if(c) dstr+='</div>'; if(w) document.write(dstr); else return dstr

  }return ""

}

/***Getting layer string for each menu**/

function cm_getLayerStr(m,app,name,fill,clb,arrow,ah,aw,root){

  var no=m.nolink,arrstr='',l=m.lev,str='',txt=m.txt,ev='', id=name + '_' + m.name,d1; if(app) d1=app

  if((!bw.reuse||l==0) && !no){

    ev=' onmouseover="'+name+'.showsub(\''+m.name+'\')"'
    //ev=' onclick="'+name+'.showsub(\''+m.name+'\')"'
    +' onmouseout="'+name+'.mout(\''+m.name+'\')"'
    +' onclick="'+name+'.onclck(\''+m.name+'\'); return false" '

  }

  if(bw.reuse&&l!=0) txt=''; if(l==0) str+=d1=cm_divCreate(id+'_0',clb,''); str+=m.d2=cm_divCreate(id,m.cl,txt,0,0,d1,ev)

  if(l==0&&bw.usedom){

    m.d2.onclick=new Function(name+'.onclck("'+m.name+'")');

    m.d1=d1;

    m.d2.onmouseover=new Function(name+'.showsub("'+m.name+'")');

    m.d2.onmouseout=new Function(name+'.mout("'+m.name+'")')

  }if(!bw.reuse && !m.img1 && !no){

    str+=cm_divCreate(id+'_1',m.cl2,txt,0,1)

    str+=cm_divCreate(id+'_3',"clCMAbs",'<a href="#" '+ev+'><img alt="" src="'+root+fill+'" width="'+m.w+'" height="'+m.h+'" border="0" /></a>',0,1)

  }str+='</div>';

  if(l==0){if(arrow)str+=m.d3=cm_divCreate(id+'_a','clCMAbs','<img alt="" height="'+aw+'" width="'+ah+'" src="'+root+arrow+'" />',0,1,d1); str+="</div>"}

  str+="\n"; if(!bw.reuse){m.txt=null; m.d2=null; m.d3=null;}

  if(bw.usedom){ if(l==0) document.body.appendChild(d1); str=''}

  return str

}

/***get align num from text (better to evaluate numbers later)**/

function cm_checkalign(a){

  switch(a){

    case "right": return 1; break; case "left": return 2; break;

    case "bottom": return 3; break; case "top": return 4; break;

    case "righttop": return 5; break; case "lefttop": return 6; break;

    case "bottomleft": return 7; break; case "topleft": return 8; break;

  }return null

}

/**Making each individual menu **/

makeCM.prototype.makeMenu=function(name,parent,txt,lnk,targ,w,h,img1,img2,cl,cl2,align,rows,nolink,onclick,onmouseover,onmouseout){

  var c = this; if(!name) name = c.name+""+c.mc; var p = parent!=""&&parent&&c.m[parent]?parent:0;

  if(c.mc==0){

		//Added 4.07 - bug(?) in opera 7 - you cannot dom-add layers created in one document to another one (or so it seems) - so turn of usedom

		if(bw.op7 && this.frames)	bw.usedom=0

		var tmp=location.href;

    if(tmp.indexOf('file:')>-1||tmp.charAt(1)==':') c.root=c.offlineRoot; else c.root=c.onlineRoot

    if(c.useBar){if(!c.barBorderClass) c.barBorderClass=c.barClass; c.bar1 = cm_divCreate(c.name+'bbar_0',c.barClass,'',0,1);

      c.bar = cm_divCreate(c.name+'bbar',c.barBorderClass,'',1,1,0,0,c.bar1); if(bw.usedom) c.bar.appendChild(c.bar1);

    }}var create=1,img,arrow; var m = c.m[name] = new Object(); m.name=name; m.subs=new Array(); m.parent=p; m.arnum=0; m.arr=0

  var l = m.lev = p?c.m[p].lev+1:0; c.mc++; m.hide=0;

  if(l>=c.l.length){

    var p1,p2=0; if(l>=c.level.length) p1=c.l[c.level.length-1];

    else p1=c.level[l]; c.l[l]=new Array(); if(!p2) p2=c.l[l-1]

    if(l!=0){ if(isNaN(p1.align)) p1["align"]=cm_checkalign(p1.align)

      for(var i in p1){if(i!="str"&&i!="m"){if(p1[i]==null) c.l[l][i]=p2[i]; else c.l[l][i]=p1[i] }}

    }else{c.l[l]=c.level[0]; c.l[l].align=cm_checkalign(c.l[l].align)}

    c.l[l]["str"]=''; c.l[l].m=new Array(); if(!c.l[l].borderClass) c.l[l].borderClass=c.l[l].regClass

    c.l[l].app=0; c.l[l].max=0; c.l[l].arnum=0; c.l[l].o=new Array(); c.l[l].arr=new Array()

    c.level[l]=p1=p2=null

    if(l!=0) c.l[l].str=c.l[l].app=cm_divCreate(c.name+ '_' +l+'_0',c.l[l].borderClass,'')

  }if(p){p = c.m[p]; p.subs[p.subs.length]=name;

    if(p.subs.length==1&&c.l[l-1].arrow){ p.arr=1;

      if(p.parent){c.m[p.parent].arnum++

        if(c.m[p.parent].arnum>c.l[l-1].arnum){

          c.l[l-1].str+=c.l[l-1].arr[c.l[l-1].arnum]=cm_divCreate(c.name+ '_a' +(l-1)+'_'+c.l[l-1].arnum,'clCMAbs','<img height="'+c.l[l-1].arrowHeight

            +'" width="'+c.l[l-1].arrowWidth+'" src="'+c.root+c.l[l-1].arrow+'" alt="" />',0,1,c.l[l-1].app); c.l[l-1].arnum++

        }}}if(bw.reuse) if(p.subs.length>c.l[l].max) c.l[l].max = p.subs.length; else create=0

  }m.rows=rows>-1?rows:c.l[l].rows; m.w=cm_cp(w||c.l[l].width,1); m.h=cm_cp(h||c.l[l].height,0); m.txt=txt; m.lnk=lnk;

  if(align) align=cm_checkalign(align); m.align=align||c.l[l].align; m.cl=cl=cl||c.l[l].regClass;

  m.targ=targ; m.cl2=cl2||c.l[l].overClass; m.create=create;  m.mover=onmouseover; m.mout=onmouseout;

  m.onclck=onclick; m.active = cm_active; m.isactive=0; m.nolink=nolink

  if(create) c.l[l].m[c.l[l].m.length]=name

  if(img1){m.img1 = new Image(); m.img1.src=c.root+img1; if(!img2) img2=img1; m.img2 = new Image(); m.img2.src=c.root+img2;

    m.cl="clCMAbs"; m.txt=''; if(!bw.reuse&&!nolink) m.txt = '<a href="#" onmouseover="'+c.name+'.showsub(\''+name+'\')" onmouseout="'+c.name+'.mout(\''+name+'\')" onclick="'+c.name+'.onclck(\''+name+'\'); return false">';;

    m.txt+='<img alt="" src="'+c.root+img1+'" width="'+m.w+'" height="'+m.h+'" id="img'+m.name+'" '

    if(bw.dom&&!nolink) m.txt+='style="cursor:pointer; cursor:hand"'; if(!bw.reuse){if(!bw.dom) m.txt+='name="img'+m.name+'"'; m.txt+=' border="0"'}; m.txt+=' />'; if(!bw.reuse&&!nolink) m.txt+='</a>'

  }else{m.img1=0; m.img2=0};

  if(l==0||create) c.l[l].str+=cm_getLayerStr(m,c.l[l].app,c.name,c.fillImg,c.l[l].borderClass,c.l[l].arrow,c.l[l].arrowWidth,c.l[l].arrowHeight,c.root)

  if(l==0){if(m.w>c.maxw) c.maxw=m.w; if(m.h>c.maxh) c.maxh=m.h; c.totw+=c.pxBetween+m.w+c.l[0].borderX;c.toth+=c.pxBetween+m.h+c.l[0].borderY}

  if(lnk && !onmouseover){

		var path=lnk.indexOf("mailto:")>-1||lnk.indexOf("http://")>-1?"":c.root

		m.mover="self.status='"+path+m.lnk+"'"

		if(!m.mout) m.mout=""; m.mout+=";self.status='';"

	}

}

/**Getting x/y coords for subs **/

makeCM.prototype.getcoords=function(m,bx,by,x,y,maxw,maxh,ox,oy){

  var a=m.align; x+=m.o.x; y+=m.o.y

  switch(a){

    case 1:  x+=m.w+bx; break; case 2:  x-=maxw+bx; break;

    case 3:  y+=m.h+by; break; case 4:  y-=maxh+by; break;

    case 5:  x-=maxw+bx; y-=maxh-m.h; break;

    case 6:  x+=m.w+bx; y-=maxh-m.h; break;

    case 7:  y+=m.h+by; x-=maxw-m.w; break;

    case 8:  y-=maxh+by; x-=maxw-m.w+bx; break;

  }//Added v4.05

  if(m.lev==this.frameStartLevel-1 && this.frames){

    switch(a){

      case 1:  x=0; break;

      case 2:  x=this.cmpage.x2-maxw; break;

      case 3:  y=0; break;

      case 4:  y-=maxh+by; break;

      case 5:  x-=maxw+bx; y-=maxh-m.h; break;

      case 6:  x+=m.w+bx; y-=maxh-m.h; break;

      case 7:  y+=m.h+by; x-=maxw-m.w; break;

      case 8:  y-=maxh+by; x-=maxw-m.w+bx; break;

    }

  }

  m.subx=x + ox; m.suby=y + oy

}

/**Showing sub elements**/

makeCM.prototype.showsub=function(el){ //Changed v4.06

  var c=this,pm=c.m[el],m,o,nl

  if(!pm.b||(c.isresized&&pm.lev>0)) pm.b=c.l[pm.lev].b; c.isover=1

  clearTimeout(c.tim);

  var ln=pm.subs.length,l=pm.lev+1

  if(c.l[pm.lev].a==el&&l!=c.l.length && !c.openOnClick){if(c.l[pm.lev+1].a) c.hidesub(l+1,el); return}

  c.hidesub(l,el); if(pm.mover) eval(pm.mover); if(!pm.isactive) pm.active(1);

  c.l[pm.lev].a = el; if(ln==0) return;

	if(c.openOnClick && !c.clicked) return//Added v4.06

	if(!c.l[l].b) return //Added v4.05

  var b = c.l[l].b, bx=c.l[l].borderX, by=c.l[l].borderY, rows=pm.rows

	var rb=c.l[l].roundBorder;//added 4.06

  var x=bx+rb,y=by+rb,maxw=0,maxh=0,cn=0; b.hideIt()

  for(var i=0;i<c.l[l].m.length;i++){

    if(!bw.reuse) m=c.m[c.l[l].m[i]]

    else m=c.m[c.m[el].subs[i]]

    if(m && m.parent==el&&!m.hide){

      if(!bw.reuse) o=m.o; else o=m.o=c.l[l].o[i]

      if(x!=o.x||y!=o.y) o.moveIt(x,y); nl=m.subs.length //changed 4.06

      if(bw.reuse){

        if(o.w!=m.w || o.h!=m.h) o.clipTo(0,m.w,m.h,0,1)

        if(o.evnt.className!=m.cl){

          m.isactive=0; o.evnt.className=m.cl

          if(bw.ns6){o.hideIt(); o.css.visibility='inherit'} //NS6 bugfix

        }if(bw.ie6) b.showIt()//IE6 bugfix (scrollbars)

        o.evnt.innerHTML=m.txt; if(bw.ie6) b.hideIt()

				if(!m.nolink){

          o.evnt.onmouseover=new Function(c.name+".showsub('"+m.name+"')")

          o.evnt.onmouseout=new Function(c.name+".mout('"+m.name+"')") //Added v4.05

          o.evnt.onclick=new Function(c.name+".onclck('"+m.name+"')")

          if(o.oldcursor){o.css.cursor=o.oldcursor; o.oldcursor=0;}

        }else{o.evnt.onmouseover=''; o.evnt.onclick='';  if(o.css.cursor=='') o.oldcursor=bw.ns6?"pointer":"hand"; else o.oldcursor=o.css.cursor; o.css.cursor="auto"}

      }if(m.arr){o.arr=c.l[l].arr[cn]; o.arr.moveIt(x + m.w-c.l[l].arrowWidth-3,y+m.h/2-(c.l[l].arrowHeight/2));

      o.arr.css.visibility="inherit"; cn++;} else o.arr=0

      if(!rows){y+=m.h+by; if(m.w>maxw) maxw=m.w; maxh=y}

      else{x+=m.w+bx; if(m.h>maxh) maxh=m.h; maxw=x;}

      o.css.visibility="inherit"; if(bw.op5||bw.op6) o.showIt()

    }else{o = c.m[c.l[l].m[i]].o; o.hideIt();} }

  if(!rows) maxw+=bx*2+rb; else maxh+=by*2+rb; //changed 4.06

	if(rb){maxw+=rb; maxh+=rb}//added 4.06

	b.clipTo(0,maxw,maxh,0,1)

	//Check frame scroll

	if(c.chkscroll) c.chkscroll() //Added v4.05 - not the best solution

  if(c.chkscroll||!pm.subx||!pm.suby||c.scrollY>-1||c.isresized) c.getcoords(pm,c.l[l-1].borderX,c.l[l-1].borderY,pm.b.x,pm.b.y,maxw,maxh,c.l[l-1].offsetX,c.l[l-1].offsetY) //Changed 4.06

	x=pm.subx; if(c.chkscroll&&l==c.frameStartLevel) pm.suby+=c.scrollY; y=pm.suby; b.moveIt(x,y); if(c.onshow) eval(c.onshow); b.showIt()

}

/**Hide sub elements **/

makeCM.prototype.hidesub=function(l,el){ //Changed v4.05

  var c = this,tmp,m,i,j,hide

  if(!l) {l=1; hide=1; c.clicked=0}

  for(i=l-1;i<c.l.length;i++){

    if(i>0&&i>l-1) if(c.l[i].b) c.l[i].b.hideIt()//Changed v4.05

    if(c.l[i].a&&c.l[i].a!=el){

      m=c.m[c.l[i].a]; m.active(0,1); if(m.mout) eval(m.mout); c.l[i].a=0

      if(i>0&&i>l-1) if(bw.op5||bw.op6) for(j=0;j<c.l[i].m.length;j++) c.m[c.l[i].m[j]].o.hideIt()

    }if(i>l){for(j=0;j<c.l[i-1].arnum;j++){c.l[i-1].arr[j].hideIt(); if(bw.op6) c.l[i-1].arr[j].moveIt(-1000,-1000)}} //opera bug

  }if(hide&&c.onhide) eval(c.onhide) //onhide event

}

/***Make all menu div objects**/

makeCM.prototype.makeObjects=function(nowrite,fromframe){ //Changed v4.06

  var c = this,oc,name,bx,by,w,h,l,no,ar,id,nest,st=0,en=c.l.length,bobj,o,m,i,j

  //Added v4.05

  if(fromframe){

    st = this.frameStartLevel

    this.body = fromframe.document.body

    this.doc = fromframe.document

    this.deftarget=fromframe

    this.cmpage = new cm_page(fromframe)

  }else{

    this.body=document.body

    this.doc=document

    if(this.frames) en = this.frameStartLevel

    this.deftarget=self

  }

  if(!nowrite){

    for(i=st;i<en;i++){ //changed 4.06

      if(!bw.usedom) this.doc.write(c.l[i].str)

      else if(i>0) this.body.appendChild(c.l[i].app)

      if(!this.frames) c.l[i].str=null

    }}c.z=c.zIndex+2

  for(i=st;i<en;i++){oc=0

    if(i!=0){bobj=c.l[i].b = new cm_makeObj(c.name + "_"+i+"_0","",c.l[i].app,this.doc); bobj.css.zIndex=c.z;

    if(bw.dom) bobj.css.overflow='hidden'}; bx=c.l[i].borderX; by=c.l[i].borderY; c.l[i].max=0;

    for(j=0;j<c.l[i].m.length;j++){

      m = c.m[c.l[i].m[j]]; name=m.name; w=m.w; h=m.h; l=m.lev; no=m.nolink;

      if(i>0){m.b = bobj; nest=i}

      else{m.b = new cm_makeObj(c.name + "_"+name+"_0","",m.d1,this.doc); m.b.css.zIndex=c.z; m.b.clipTo(0,w+bx*2,h+by*2,0,1); nest=name}

      id = c.name + "_"+name; nest=c.name + "_"+nest;

      if(m.create){

        o=m.o=new cm_makeObj(id,nest+"_0",m.d2,this.doc); o.z=o.css.zIndex=c.z+1; if(bw.reuse){c.l[l].o[oc]=o; oc++};

        if(l==0&&m.img1) o.css.visibility='inherit'; if(bw.op5) o.showIt(); o.arr=0;

      }if(!bw.reuse||l==0) o.clipTo(0,w,h,0,1); o.moveIt(bx,by); o.z=o.css.zIndex=c.z+2

      if(j<c.l[i].arnum){

        c.l[i].arr[j]=new cm_makeObj(c.name+"_a"+i+"_"+j,nest+"_0",nowrite?0:c.l[i].arr[j],this.doc)

        c.l[i].arr[j].css.zIndex=c.z+30+j;

      }else if(l==0&&m.arr==1){

        o.arr=new cm_makeObj(id+"_a",nest+"_0",m.d3,this.doc)

        o.arr.moveIt(bx+m.w-c.l[i].arrowWidth-3,by+m.h/2-(c.l[i].arrowHeight/2));

        o.arr.css.zIndex=c.z+20;

      }if(!no && !bw.reuse && !m.img1){

        o.over=new cm_makeObj(c.name + "_"+name+"_1",nest+"_0"+".document.layers."+id,"",this.doc)

        o.over.moveIt(0,0); o.over.hideIt(); o.over.clipTo(0,w,h,0,1); o.over.css.zIndex=c.z+3

        img=new cm_makeObj(c.name + "_"+name+"_3",nest+"_0"+".document.layers."+id,"",this.doc); img.moveIt(0,0)

        img.css.visibility="inherit"; img.css.zIndex=c.z+4; if(bw.op5) img.showIt()

      }c.z++;

    }

  }

	if(fromframe){	///Set scroll vars - added v4.05

		c.chkscroll = function(){//changed 4.06

			if (bw.ie&&!bw.ie6) this.scrollY=this.body.scrollTop;

			else if (bw.ie6 || bw.op7){

				if (this.doc.compatMode && document.compatMode != "BackCompat")	this.scrollY=this.doc.documentElement.scrollTop

				else this.scrollY=this.body.scrollTop

			}else this.scrollY=this.deftarget.pageYOffset;

		}

	}

}

/**Onmouseout**/

makeCM.prototype.mout = function(){ //Changed v4.06

	var c = this; clearTimeout(c.tim); c.isover = 0; var f="if(!"+c.name+".isover)"+c.name+".hidesub()"

  if(!c.closeOnClick) c.tim = setTimeout(f,c.wait)

	else{

		if(bw.ns4){ document.captureEvents("Event.MOUSEDOWN"); document.onmousedown=new Function(f)}

		else document.onclick=new Function(f);

		if(this.frames){

			if(bw.ns4){this.doc.captureEvents("Event.MOUSEDOWN"); this.doc.onmousedown=new Function(f)}

			else this.doc.onclick=new Function(f)

		}

	}

}

/**Constructing and initiating top items and bar**/

makeCM.prototype.construct=function(nowrite){ //Changed v4.06

  var c=this; if(!c.l[0]||c.l[0].m.length==0) return cm_message('No menus defined');

	 if(!nowrite){for(var i=1;i<c.l.length;i++){c.l[i].str+="</div>"}} //Added 4.06

  c.makeObjects(nowrite); cmpage = new cm_page();

  var mpa,o,maxw=c.maxw,maxh=c.maxh,i,totw=c.totw,toth=c.toth,m,px=c.pxBetween

  var bx=c.l[0].borderX,by=c.l[0].borderY,x=c.fromLeft,y=c.fromTop,mp=c.menuPlacement,rows=c.rows

  if(rows){toth=maxh+by*2; totw=totw-px+bx;}else{totw=maxw+bx*2; toth=toth-px+by;}

  switch(mp){

    case "center": x=cmpage.x2/2-totw/2; if(bw.ns4) x-=9; break;

    case "right": x=cmpage.x2-totw; break;

    case "bottom": case "bottomcenter": y=cmpage.y2-toth; if(mp=="bottomcenter") x=cmpage.x2/2-totw/2; break;

    default: if(mp.toString().indexOf(",")>-1) mpa=1; break;

  }for(var i=0;i<c.l[0].m.length;i++){

    m = c.m[c.l[0].m[i]]; o = m.b; if(mpa) rows?x=cm_cp(mp[i]):y=cm_cp(mp[i],0,0,1);

    o.moveIt(x,y); o.showIt(); if(m.arr) m.o.arr.showIt(); o.oy=y;

    if(!mpa) rows?x+=m.w+px+bx:y+=m.h+px+by

  }if(c.useBar==1){ //Background-Bar

    var bbx=c.barBorderX,bby=c.barBorderY;

    var bar1=c.bar1= new cm_makeObj(c.name+'bbar_0',c.name+'bbar',nowrite?0:c.bar1,document)

    var bar=c.bar= new cm_makeObj(c.name+'bbar','',nowrite?0:c.bar,document); bar.css.zIndex=c.zIndex+1

    var barx=c.barX=="menu"?c.m[c.l[0].m[0]].b.x-bbx:cm_cp(c.barX,1);

    var bary=c.barY=="menu"?c.m[c.l[0].m[0]].b.y-bby:cm_cp(c.barY);

    var barw=c.barWidth=="menu"?totw:cm_cp(c.barWidth,1,bbx*2);

    var barh=c.barHeight=="menu"?toth:cm_cp(c.barHeight,0,bby*2);

    bar1.clipTo(0,barw,barh,0,1); bar1.moveIt(bbx,bby); bar1.showIt();

    bar.clipTo(0,barw+bbx*2,barh+bby*2,0,1); bar.moveIt(barx,bary); bar.showIt();

  }if(c.resizeCheck){ //Window resize code - updated 4.06 - stil sucks

    if(bw.ns4||bw.op5||bw.op6)setTimeout('window.onresize=new Function("'+c.name+'.resized()")',500)

		else window.onresize=new Function(c.name+".resized()")

    c.resized=cm_resized; if(bw.op5||bw.op6) document.onmousemove=new Function(c.name+".resized()")

  }if(c.onconstruct) eval(c.onconstruct) //onconstruct event

  c.constructed = 1 //Added v4.05

  return true

}

/**Capturing resize**/

var cm_inresize=0

function cm_resized(){

  if(cm_inresize) return

	page2=new cm_page(); var off=(bw.op6||bw.op5)?20:5

  if(page2.x2<cmpage.x2-off || page2.y2<cmpage.orgy-off || page2.x2>cmpage.x2+off || page2.y2>cmpage.orgy+off){

		if(bw.ie||bw.ns6||bw.op7||bw.ns4){

      cmpage=page2; this.isresized=1;

      if(this.onresize) eval(this.onresize); this.construct(1);

      if(this.onafterresize) eval(this.onafterresize);

		}else{cm_inresize=1; location.reload()}

  }

}

/**Onclick of an item**/

makeCM.prototype.onclck=function(m){ //Changed v4.06

  m = this.m[m]

  if(m.onclck) eval(m.onclck);

	if(this.openOnClick && m.subs.length>0){

		this.clicked = 1; this.showsub(m.name); return

	}

  var lnk=m.lnk, targ=m.targ

  if(lnk){

    if(lnk.indexOf("mailto")!=0 && lnk.indexOf("http")!=0) lnk=this.root+lnk

		if(String(targ)=="undefined" || targ=="" || targ==0 || targ=="_self"){

      if(this.frames){ //Turning of all level 1 + vars

        if(this.l[0].a){

          this.m[this.l[0].a].active(0,1)

          this.l[0].a =0

        }

        for(i=this.frameStartLevel;i<this.l.length;i++){

          if(this.l[i].b){

            this.l[i].b.hideIt()

            this.l[i].b = null

            for(j=0;j<this.l[i].m.length;j++){

              this.m[this.l[i].m[j]].b = null;

            }

          }

        }

        this.isover=0

      }

      this.deftarget.location.href=lnk

    }

    else if(targ=="_blank") window.open(lnk)

    else if(targ=="_top" || targ=="window") top.location.href=lnk

    else if(top[targ]) top[targ].location.href=lnk

    else if(parent[targ]) parent[targ].location.href=lnk

  }else return false

}



//----------------------------------------------------------------------------------------------------------------------

/*

function strtrim(value)

{

  return value.replace(/^\s+/,'').replace(/\s+$/,'');

}

*/



function Selection(clearClass, selectionClass){

    this.id = null;

    this.selection = null;

    this.clearClass = clearClass;

    this.selectionClass = selectionClass;

    this.getSelectedId = Selection_getSelectedId;

    this.getSelectedNode = Selection_getSelectedNode;

    this.clearSelection = Selection_clearSelection;

    this.setSelection = Selection_setSelection;

    this.setSel = Selection_setSel;

}



function Selection_getSelectedId() {

    return this.id;

}



function Selection_getSelectedNode() {

    return this.selection;

}



function Selection_clearSelection(node)

{

	if (node != null && node.className != null)

		//node.className = "gr_tree";

		node.className = this.clearClass;

}



function Selection_setSelection(node)

{

	if (node != null && node.className != null)

		//node.className = "Current";

		node.className = this.selectionClass;

}





function Selection_setSel(node)

{

    var has_frame=document.getElementsByName("frmMain");

	if(has_frame.length>0)

	if(typeof(frmMain.cf_modified)!="undefined")

    {

        if(frmMain.cf_modified==true){

            if(confirm(frmMain.WIN_CLOSE_MSG) )

                {

                 frmMain.cf_modified=false;

                }

            else return false;

        }

    }

	if (this.selection != null)

	{

		// array

		if (this.selection.length != null)

		{

			for (var i = 0; i < this.selection.length; i++)

				this.clearSelection(this.selection[i]);

		}

		// scalar value

		else

			this.clearSelection(this.selection);

	}



	this.selection = node;

	this.id = node.getAttribute("selected_id");

	//this.id = node.selected_id;



	if (node)

	{

		var textNode = node;

		// array

		if (typeof(node[0]) != "undefined")

		{

			for (var i = 0; i < node.length; i++)

				this.setSelection(node[i]);

			// to retrieve text use first element

			textNode = node[0];

		}

		// scalar value

		else

			this.setSelection(node);

	}

	return true;

}

//----------------------------------------------------------------------------------------------------------------------

function set_modified(e){

  //var el = window.event ? window.event.srcElement : e.currentTarget;

  cf_modified = true;

}



function ignore_modified(){

  if (typeof(root.onbeforeunload) != "undefined") root.onbeforeunload = null;

}



function check_cf(){

  if (cf_modified) return WIN_CLOSE_MSG;

}



function init(){

    root.onbeforeunload = check_cf;

//  if (typeof(root.onbeforeunload) != "undefined") root.onbeforeunload = check_cf;

//  else return;



  for (var i = 0; oCurrForm = document.forms[i]; i++){

    for (var j = 0; oCurrFormElem = oCurrForm.elements[j]; j++){

      if (oCurrFormElem.getAttribute("cf")){

        if (oCurrFormElem.addEventListener) oCurrFormElem.addEventListener("change", set_modified, false);

        else if (oCurrFormElem.attachEvent) oCurrFormElem.attachEvent("onchange", set_modified);

      }

    }

    if (oCurrForm.addEventListener) oCurrForm.addEventListener("submit", ignore_modified, false);

    else if (oCurrForm.attachEvent) oCurrForm.attachEvent("onsubmit", ignore_modified);

  }

}

//----------------------------------------------------------------------------------------------------------------------

function MultiSelection(clearClass, selectionClass){

    this.id = new Array();

    this.nodes = new Array();

    this.clearClass = clearClass;

    this.selectionClass = selectionClass;

    this.clearSelection = MultiSelection_clearSelection;

    this.clearAll = MultiSelection_clearAll;

    this.setSelection = MultiSelection_setSelection;

    this.setSel = MultiSelection_setOneSel;

    this.addSel = MultiSelection_setSel;

    this.getSelectedIdArray = MultiSelection_getSelectedId;

    this.getSelectedNodeArray =MultiSelection_getSelectedNodeArray;

    this.isSelectedId =MultiSelection_isSelectedId;

    this.removeId=MultiSelection_removeId;

    this.reset=MultiSelection_Reset;

}



function MultiSelection_setSel(node)

{

	var sel_id = node.getAttribute("selected_id");



	if(!this.isSelectedId(sel_id)){

     this.id[this.id.length]=sel_id;

     this.nodes[this.nodes.length]=node;

     this.setSelection(node);

     }

     else{

    this.clearSelection(node);

    this.removeId(sel_id);

    }

    return;

}



function MultiSelection_setOneSel(node)

{

	var sel_id = node.getAttribute("selected_id");

    this.clearAll();

    this.id[this.id.length]=sel_id;

    this.nodes[this.nodes.length]=node;

    this.setSelection(node);

    return;

}



function MultiSelection_isSelectedId(node_id){

    for(var i=0; i < this.id.length; i++) {

        if(node_id == this.id[i])

            return true;

    }

    return false;

}



function MultiSelection_removeId(sel_id){

    for(var i=0; i < this.id.length; i++) {

        if(sel_id == this.id[i]) {

        this.id[i] = -1;

        this.nodes[i]=-1;

        }

    }

}



function MultiSelection_getSelectedId(){

    return this.id;

}



function MultiSelection_getSelectedNodeArray(){

    return this.nodes;

}



function MultiSelection_clearAll(){

  for(var i=0;i<this.nodes.length;i++){

     if(this.nodes[i]!=-1) {this.clearSelection(this.nodes[i]);}

    }

 this.id = new Array();

 this.nodes = new Array();

}



function MultiSelection_Reset(){

 this.id = new Array();

 this.nodes = new Array();

}



function MultiSelection_clearSelection(node)

{

	if (node != null && node.className != null)

		//node.className = "gr_tree";

		node.className = this.clearClass;

}



function MultiSelection_setSelection(node)

{

	if (node != null && node.className != null)

		//node.className = "Current";

		node.className = this.selectionClass;

}

//----------------------------------------------------------------------------------------------------------------------

function checkMods(evt) {

	evt = (evt) ? evt : (window.event) ? window.event : ""

	if (evt) {

		var elem = (evt.target) ? evt.target : evt.srcElement

		if (evt.modifiers) {

			if(evt.modifiers & Event.ALT_MASK) return "alt";

			if(evt.modifiers & Event.CONTROL_MASK) return "ctrl";

			if(evt.modifiers & Event.SHIFT_MASK) return "shift";



		} else {

			if(evt.altKey) return "alt";

			if(evt.ctrlKey) return "ctrl";

			if(evt.shiftKey) return "shift";

		}

	}

	return "none";

}



function getSymbolCount(stroka,symbol){

var kol=0;

for(var i=0;i<stroka.length;i++) if(stroka.charAt(i)==symbol) kol++;

return kol;

}

/*

 * Return parent's node path if selected group/workItem was deleted

 */

function checkForPathExistence(path)   {

    var wasDeleted = true;

    while(wasDeleted) {

        if (path == "") return path; //force return

        var groupId = path.substring(path.lastIndexOf('/')+1);

        var group = document.getElementById(groupId);

        if(group)   {

            wasDeleted = false;

        }   else    {

            path = path.substring(0,path.indexOf(groupId)-1);

        }

    }

    return path;

}


