jz.onovlclick= function(ovl,lat){  if (ovl) alert('clicked ovl='+ovl+' id='+ovl.id) }

jz.tbldragstart= function(evt,mode){
	var mbp=-2 //-2*1 //margin+border+pading width
	var Drag=jz.Drag, getId=jz.getId
	var dx= Drag.clientX-evt.clientX
	var dy= Drag.clientY-evt.clientY
	var id= Drag.target.id
	var grp= jz.Drag.grp= id.slice(0,-5)
	Drag.l=getId(grp+'_left_outer'), Drag.r=getId(grp+'_right_outer'), Drag.bar=getId(grp+'_vbar')
	Drag.wl= mbp+Drag.l.offsetWidth, Drag.wr= mbp+Drag.r.offsetWidth, Drag.wbar= mbp+Drag.bar.offsetWidth

	//var pos= getId('pos1')
	//pos.innerHTML= 'id='+jz.Drag.target.id+'ex='+jz.Drag.ex+', ey='+jz.Drag.ey+' x='+jz.Drag.x+' y='+jz.Drag.y
	//pos.innerHTML+= ' wl='+Drag.wl+' wr='+Drag.wr+' wbar='+Drag.wbar+' totla='+(Drag.wl+Drag.wr+Drag.wbar)
	}

jz.tbldrag= function(evt,mode){
	var dx= jz.Drag.ex-evt.clientX
	//var dy= jz.Drag.ey-evt.clientY
	jz.tblresize(dx)

	//var pos=jz.getId('pos2')
	//pos.innerHTML= 'dx='+dx+', dy='+dy
	}

jz.tbldragend= function(evt,mode){
	var dx= jz.Drag.ex-evt.clientX
	jz.tblresize(dx)
	//var dy= jz.Drag.ey-evt.clientY
	//var pos=jz.getId('pos3')
	//pos.innerHTML= 'end dx='+dx+', dy='+dy
	}

jz.tblresize= function(dx){
	//	pos.innerHTML+=' '+id+'.left width='+wl+' new width='+(wl-dx)+' rw='+wr
	var Drag=jz.Drag
	var wl=Drag.wl-dx, wr=Drag.wr+dx, wbar=Drag.wbar
	Drag.l.style.width= wl+'px'
	Drag.r.style.width= wr+'px'
	Drag.bar.style.width= wbar+'px'
	//pos=jz.getId('pos3')
	//pos.innerHTML+= ' wl='+wl+' wr='+wr+' wbar='+wbar+' total='+(wl+wr+wbar)
	}


jz.vbarDragstart= function(evt,mode){
	//alert('Drag start')
	var mbp=0//-2*1 //margin+border+pading width
	var Drag=jz.Drag, getId=jz.getId
	var dx= Drag.clientX-evt.clientX
	var dy= Drag.clientY-evt.clientY
	var id= Drag.target.id
	jz.addVSplitInfo(Drag, id.slice(0,-5))
	}

jz.addVSplitInfo= function(dragObj,grp){
	var Drag= dragObj, getId=jz.getId
	Drag.grp= grp
	
	Drag.l=getId(grp+'_left_outer'), Drag.r=getId(grp+'_right_outer'), Drag.bar=getId(grp+'_vbar')
	Drag.lwidth= Drag.l.offsetWidth, Drag.rwidth= Drag.r.offsetWidth, Drag.barwidth= Drag.bar.offsetWidth
	Drag.totalwidth= Drag.lwidth+Drag.rwidth+Drag.barwidth
	Drag.lleft= Drag.l.offsetLeft, Drag.rleft= Drag.r.offsetLeft, Drag.barleft= Drag.bar.offsetLeft
	Drag.lright= Drag.lwidth+Drag.lleft, Drag.rright= Drag.rwidth+Drag.rleft, Drag.barright= Drag.barwidth+Drag.barleft
	

	
	var pos= getId('pos1')
	if (pos) {
		pos.innerHTML= 'id='+jz.Drag.target.id+'ex='+jz.Drag.ex+', ey='+jz.Drag.ey+' x='+jz.Drag.x+' y='+jz.Drag.y
		pos.innerHTML+= ' lw='+Drag.lwidth+' rw='+Drag.rwidth+' barw='+Drag.barwidth+' totla='+(Drag.totalwidth)
		}
	
	}

jz.vbarDrag= function(evt,mode){
	var dx= jz.Drag.ex-evt.clientX
	var dy= jz.Drag.ey-evt.clientY
	jz.vsplitResizeBy(dx)

	var pos=jz.getId('pos2')
	if (pos) pos.innerHTML= 'dx='+dx+', dy='+dy
	}

jz.vbarDragend= function(evt,mode){
    return jz.vbarDrag(evt,mode)


	var dx= jz.Drag.ex-evt.clientX
	var dy= jz.Drag.ey-evt.clientY
	jz.vsplitResizeBy(dx)
	//var pos=jz.getId('pos3')
	//pos.innerHTML= 'end dx='+dx+', dy='+dy
	}

jz.vsplitMaxRight= function(grp){
	var Drag=jz.Drag
	if (!Drag){
		if (!grp) return //could be error no Drag and no group cant locate vsplit elem
		Drag= new Object()
		jz.addVSplitInfo(Drag,grp)
		}
	var r=Drag.r, l=Drag.l
	if (r.isMax) return //already maxed
	r.oldSize= r.offsetWidth
	r.oldLeft= r.offsetLeft
	r.isMax= true
	r.style.width= Drag.totalwidth+'px'
	r.style.left='0px'
	Drag.l.style.display= 'none'
	Drag.bar.style.display= 'none'
	}

jz.vsplitRestoreRight= function(grp){
	var Drag=jz.Drag
	if (!Drag){
		if (!grp) return //could be error no Drag and no group cant locate vsplit elem
		Drag= new Object()
		jz.addVSplitInfo(Drag,grp)
		}
	var r=Drag.r, l=Drag.l
	if (!r.isMax) return //cant restore if not max
	r.isMax= false
	r.style.width= r.oldSize+'px'
	r.style.left=  r.oldLeft+'px'
	Drag.l.style.display= 'block'
	Drag.bar.style.display= 'block'
	}
	
jz.vsplitResizeLeftTox= function(newLeftWidth,grp){
	//	pos.innerHTML+=' '+id+'.left width='+wl+' new width='+(wl-dx)+' rw='+wr
	//if (grp) alert('nw='+newLeftWidth+':'+(typeof newLeftwidth)+' grp='+grp)
	var Drag=jz.Drag
	if (!Drag){
		if (!grp) return //could be error no Drag and no group cant locate vsplit elem
		Drag= new Object()
		jz.addVSplitInfo(Drag,grp)
		}
	if (typeof newLeftWidth == 'string'){
		//alert('str width:='+newLeftWidth)
		var val= parseFloat(newLeftWidth)
		if (isNaN(val)) return // str but not a number no width coulb be error
		if (newLeftWidth.slice(-1)=='%'){ 
			val=val/100.
			newLeftWidth=Drag.totalwidth*val
			}
		else newLeftWidth= val
		}
	//if (grp) alert('now lw='+newLeftWidth)
	var lwidth=Math.max(0,Math.min(Drag.totalwidth-Drag.barwidth,newLeftWidth))
	var leftshift= lwidth-Drag.lwidth
	var rwidth=Drag.rwidth-leftshift, rleft=Drag.rleft+leftshift, barleft=Drag.barleft+leftshift

	//Drag.l.style.width= lwidth+'px'
	//Drag.l.style.left= Drag.lleft+'px'
	Drag.l.style.left= '0px'
	Drag.l.style.right= Drag.lwidth+'px'

	//Drag.bar.style.width= Drag.barwidth+'px'
	Drag.bar.style.left= barleft+'px'

	//Drag.r.style.width= rwidth+'px'
	Drag.r.style.left= rleft+'px'

	//pos=jz.getId('pos3')
	//pos.innerHTML+= ' wl='+wl+' wr='+wr+' wbar='+wbar+' total='+(wl+wr+wbar)
	}


jz.vsplitResizeBy= function(delta,grp){
	//	pos.innerHTML+=' '+id+'.left width='+wl+' new width='+(wl-dx)+' rw='+wr
	//if (grp) alert('nw='+newLeftWidth+':'+(typeof newLeftwidth)+' grp='+grp)
	var Drag=jz.Drag
	if (!Drag){
		if (!grp) return //could be error no Drag and no group cant locate vsplit elem
		Drag= new Object()
		jz.addVSplitInfo(Drag,grp)
		}

	//Drag.l.style.width= lwidth+'px'
	//Drag.l.style.left= Drag.lleft+'px'
	//Drag.l.style.width= 'auto'
	Drag.l.style.left= ll= Drag.lleft+'px'
	Drag.l.style.width= lw= (Drag.lwidth-delta)+'px'

	//Drag.bar.style.width= Drag.barwidth+'px'
	//Drag.bar.style.width= 'auto'
	Drag.bar.style.left= bl= (Drag.barleft-delta)+'px'
	Drag.bar.style.width= bw= (Drag.barwidth)+'px'

	//Drag.r.style.width= rwidth+'px'
	//Drag.r.style.width= 'auto'
	Drag.r.style.left= rl= (Drag.rleft-delta)+'px'
	Drag.r.style.width= rw= (Drag.rwidth+delta)+'px'

	pos=jz.getId('pos3')
	if (pos) pos.innerHTML= ' l='+ll+','+lw+' b='+bl+','+bw+' r='+rl+','+rw+'<br/>'
	}