var mdiv = null;
var MenuWidth=180;

function resetSplitHeight() {
	if (mdiv == null) return;
	var split = document.getElementById("split1");
	if (split) {
		var mh = split.parentNode.parentNode.offsetHeight+"px";
		split.style.height=mh;
		split = document.getElementById("split2");
		if (split) {
			split.style.height=mh;
		}
	}
}

function resetInitPecentages() {
	if (!mdiv) return;
	// reset the initial percentage
	if (mdiv.iPers.length==3) {
		if (!(document.getElementById("c51"))) {
			mdiv.iPers[0] = 0;
		}
		if (!(document.getElementById("c53"))) {
			mdiv.iPers[1] = 0;
		}
		if (!(document.getElementById("c55"))) {
			mdiv.iPers[2] = 0;
		}
	} else if (mdiv.iPers.length==2) {
		if (!(document.getElementById("c31"))) {
			mdiv.iPers[0] = 0;
		}
		if (!(document.getElementById("c33"))) {
			mdiv.iPers[1] = 0;
		}
	}
	// normalize
	var total = 0;
	for (var i=0; i<mdiv.iPers.length;i++) {
		total += mdiv.iPers[i];
	}
	var ptotal = 100-0.5*(mdiv.iPers.length-1);
	for (var i=0; i<mdiv.iPers.length; i++) {
		mdiv.iPers[i] = Math.round(mdiv.iPers[i]*ptotal*10/total)/10;
	}
	// reset the style for the elements
	if (mdiv.iPers.length==2) {
		document.getElementById("bc32").style.left=mdiv.iPers[0]+"%";
		var elem = document.getElementById("c31");
		var vright = 100-mdiv.iPers[1];
		if (elem) {
			elem.style.width = mdiv.iPers[0]+"%";
			elem.style.right = vright+"%";
		}
		elem = document.getElementById("c32");
		if (elem) {
			elem.style.width = "0.5%";
			elem.style.right = vright+"%";
		}
		elem = document.getElementById("c33");
		if (elem) {
			elem.style.width = mdiv.iPers[1]+"%"; 
			elem.style.right = vright+"%";
		}
	} else if (mdiv.iPers.length==3) {
		document.getElementById("bc54").style.left=mdiv.iPers[0]+"%";
		document.getElementById("bc52").style.left=mdiv.iPers[1]+"%";
		var elem = document.getElementById("c51");
		var vright = 100-mdiv.iPers[2];
		if (elem) {
			elem.style.width = mdiv.iPers[0]+"%";
			elem.style.right = vright+"%";
		}
		elem = document.getElementById("c52");
		if (elem) {
			elem.style.width = "0.5%";
			elem.style.right = vright+"%";
		}
		elem = document.getElementById("c53");
		if (elem) {
			elem.style.width = mdiv.iPers[1]+"%"; 
			elem.style.right = vright+"%";
		}
		elem = document.getElementById("c54");
		if (elem) {
			elem.style.width = "0.5%";
			elem.style.right = vright+"%";
		}
		elem = document.getElementById("c55");
		if (elem) {
			elem.style.width = mdiv.iPers[2]+"%"; 
			elem.style.right = vright+"%";
		}
	}
	
}

function resetPecentages(cols,index,per) {
	if (!mdiv) return;
	if (cols == 2) {
		var w1 = mdiv.iPers[1]-per;
		var w2 = mdiv.iPers[0]+per;
		if (w1<=0 && w2<=0) {
			return;
		}
		//FIXME: check if each element exist
		var elem = document.getElementById("bc32");
		if (elem) elem.style.left=w2+"%"; // postion bc32
		elem = document.getElementById("c31");
		if (elem){
		   	elem.style.width=w2+"%"; // resize c31
			elem.style.right=(w2+0.5)+"%"; // postion c31
		}
		elem = document.getElementById("c32");
		if (elem) elem.style.right=(w2+0.5)+"%"; // postion c32
		var elem2 = document.getElementById("c33"); // resize c33
		if (elem2) {
			elem2.style.width=w1+"%";
			elem2.style.right=(w2+0.5)+"%"; // postion c33
		}
	} else if (cols ==3) {
		if (index==1) {
			var w1=mdiv.iPers[0]+per;
			var w2=mdiv.iPers[1]-per;
			if (w1<=0 || w2<=0) {
				return;
			}
			var shift1=w1;
			var elem = document.getElementById("bc54");
			if (elem) elem.style.left=(mdiv.iPers[1]-per)+"%"; // postion bc54
			elem = document.getElementById("c51");
			if (elem) elem.style.width=w1+"%"; // resize c51
			var elem2 = document.getElementById("c53"); // resize c53
			if (elem2) elem2.style.width=(mdiv.iPers[1]-per)+"%";
			if (elem) elem.style.right=shift1+"%"; // postion c51
			elem = document.getElementById("c52");
			if (elem) elem.style.right=shift1+"%";
			elem = document.getElementById("c53");
			if (elem) elem.style.right=shift1+"%";
			elem = document.getElementById("c54");
			if (elem) elem.style.right=shift1+"%";
			elem = document.getElementById("c55");
			if (elem) elem.style.right=shift1+"%";
		} else if (index==2) {
			var w3=mdiv.iPers[2]-per;
			var w2=mdiv.iPers[1]+per;
			if (w2<=0 || w3<=0) {
				return;
			}
			document.getElementById("bc54").style.left=w2+"%";
			document.getElementById("bc52").style.left=w3+"%";
			document.getElementById("c55").style.width=w3+"%";
			document.getElementById("c53").style.width=w2+"%";
		}
	}
}

function MDivSplit(enableSplit2) 
{ 
	this.Cols=0;
	this.iPers = new Array(); // intial percentages of each column
	if (document.getElementById("bc55")) {
		var hmax = document.getElementById("bc55").offsetWidth;
		this.Cols=3;
		var oper = document.getElementById("c51");
		if (oper) {
			this.iPers[0] = Math.floor(oper.offsetWidth*1000/hmax)/10;	
		} else {
			this.iPers[0] = 0;
		}
		oper = document.getElementById("c53");
		if (oper) {
			this.iPers[1] = Math.floor(oper.offsetWidth*1000/hmax)/10;	
		} else {
			this.iPers[1] = 0;
		}
		oper = document.getElementById("c55");
		if (oper) {
			this.iPers[2] = Math.floor(oper.offsetWidth*1000/hmax)/10;	
		} else {
			this.iPers[2] = 0;
		}
	} else if  (document.getElementById("bc33")) {
		this.Cols=2;
		var hmax = document.getElementById("bc33").offsetWidth;
		var oper = document.getElementById("c31");
		if (oper) {
			this.iPers[0] = Math.floor(oper.offsetWidth*1000/hmax)/10;	
		} else {
			this.iPers[0] = 0;
		}
		oper = document.getElementById("c33");
		if (oper) {
			this.iPers[1] = Math.floor(oper.offsetWidth*1000/hmax)/10;	
		} else {
			this.iPers[1] = 0;
		}
	}

	this.SplitX1=-1;
	this.SplitX2=-1;
	this.curSplit = null;
	this.maxWidth = -1;

	if (this.Cols>=2) {
		var bHasSplit = false;
		var elem = document.getElementById("split1");
		if (elem) {
			elem.onmousedown=startMove;
			bHasSplit = true;
		} else {
			var elem1;
			if (this.Cols==2) elem1 = document.getElementById("c31");
			if (this.Cols==3) elem1 = document.getElementById("c51");
			if (elem1) {
				elem1.style.overflow="visible";
				var w0 = elem1.offsetWidth;
				var p1 = this.iPers[0]*MenuWidth/w0;
				mdiv=this;
				resetPecentages(this.Cols,1,p1-this.iPers[0]);
			} else {
				mdiv=this;
				resetInitPecentages();
			}
		}
		if (this.Cols==3 && enableSplit2) {
			elem = document.getElementById("split2");
			if (elem){
				elem.onmousedown=startMove;
				bHasSplit = true;
			}
		}
		if (!bHasSplit) {
			return;
		}
	}
	mdiv = this;
	resetSplitHeight();
}

function startMove(event)
{
	if (!mdiv) return;
	if (!event) event= window.event;
	var otarget = event.srcElement || event.currentTarget || event.target;
	if (!otarget) return;
	mdiv.curSplit = otarget;
	if (otarget.id == "split1") {
		var mw = otarget.parentNode.parentNode.offsetWidth;
		if (mdiv.SplitX1==-1 || mdiv.maxWidth != mw) {
			mdiv.SplitX1=event.screenX;
			mdiv.maxWidth = mw;
		}
	} else if (otarget.id == "split2") {
		var mw = otarget.parentNode.parentNode.offsetWidth;
		if (mdiv.SplitX2==-1 || mdiv.maxWidth != mw) {
			mdiv.SplitX2=event.screenX;
			mdiv.maxWidth = mw;
		}
	} else {
			return;
	}
	document.onmouseup=stopMove;
	document.onmousemove=moveSplit;
}

// move slider and change display while dragging
function moveSplit(evt)
{
	if (!mdiv) return;
	if (!evt) evt= window.event;
	var diff = 0;
	if (mdiv.curSplit) {
		if (mdiv.curSplit.id=="split1") {
			diff=(evt.screenX-mdiv.SplitX1)*100/mdiv.maxWidth;
			if (diff!=0) {
				resetPecentages(mdiv.Cols,1,diff);
			}
		} else if (mdiv.curSplit.id=="split2") {
			diff=(evt.screenX-mdiv.SplitX2)*100/mdiv.maxWidth;
			if (diff!=0) {
				resetPecentages(mdiv.Cols,2,diff);
			}
		}
	}
}

function stopMove(evt) {
	if (!mdiv) return;
	if (!evt) evt= window.event;
	if (mdiv.curSplit)
	{
		resetSplitHeight();
		mdiv.curSplit = null;
	}

	if (document.removeEventListener) { // W3C.
		document.removeEventListener('mousemove', moveSplit, false);
		document.removeEventListener('mouseup', stopMove, false);
	}
	else if (document.detachEvent) { //IE.
		document.detachEvent('onmousemove', moveSplit);
		document.detachEvent('onmouseup', stopMove);
		document.releaseCapture();
	}
}


