//
// Dragbar V2
// Author: Roel van Mastbergen
//

var resizey = 0;
var resizeoldhandler = false;
var resizeoldhandler2 = false;
var resizeminheight = 10;
var resizelements = new Array();
var current_offset = 0;
var resizelnames = "";
var resizepositions = new Array();


function returnfalse() {
	return false;
}


function dragbar_beginresize(event, el, minheight) {
	var i;
	var tmp;

	resizelnames = el;
	resizepositions.length = 0;

	tmp = el.split(",");
	resizelements = new Array();

	for(i=0; i<tmp.length; i++) {
		resizelements[i] = document.getElementById(tmp[i]);
	}

	resizeminheight = minheight;
	if(resizeminheight < 0) resizeminheight = 0;

	if(typeof(event.pageY) != "undefined") resizey = event.pageY;
	else resizey = event.screenY;


	if(document.attachEvent) {
		document.attachEvent("onmousemove", dragbar_handleresize);
		document.attachEvent("onmouseup", dragbar_endresize);
	}
	else if(document.addEventListener) {
		document.addEventListener("mousemove", dragbar_handleresize, false);
		document.addEventListener("mouseup", dragbar_endresize, false);
	}
	else {
		resizeoldhandler = document.onmousemove;
		resizeoldhandler2 = document.onmouseup;
		document.onmousemove = "dragbar_handleresize(event);";
		document.onmouseup = "dragbar_endresize(event);";
	}

	// Prevent flickering selections
	document.onselectstart = returnfalse;
}


function dragbar_endresize(event) {

	if(localStorage) {
		//
		// Save preferred size of all affected elements
		//
		localStorage.setItem("dragbar_pos_" + resizelnames, resizepositions.join(","));
	}

	resizelements = new Array();

	if(document.detachEvent) {
		document.detachEvent("onmousemove", dragbar_handleresize);
		document.detachEvent("onmouseup", dragbar_endresize);
	}
	else if(document.removeEventListener) {
		document.removeEventListener("mousemove", dragbar_handleresize, false);
		document.removeEventListener("mouseup", dragbar_endresize, false);
	}
	else {
		document.onmousemove = resizeoldhandler;
		document.onmouseup = resizeoldhandler2;
		if(resizeoldhandler2) resizeoldhandler2(event);
	}

	document.onselectstart = "";
}



function dragbar_handleresize(event) {

	var i;
	var y, h;
	var vdiff;
	var resizelement;
	var d;

	resizelement = resizelements[0];
	if(!resizelement) return;

	resizepositions.length = 0;

	h = parseInt(resizelement.style.height);
	if(typeof(h) == "undefined") return;

	if(typeof(event.pageY) != "undefined") y = event.pageY;
	else y = event.screenY;

	vdiff = y - resizey;
	h += vdiff;
	if(h < resizeminheight) {
		y += resizeminheight - h;
		vdiff += resizeminheight - h;
		h = resizeminheight;
	}
	else if(h > 600) {
		y += 600 - h;
		vdiff += 600 - h;
		h = 600;
	}
	resizey = y;
	resizelement.style.height = h + 'px';
	resizepositions.push(h);

	for(i=1; i<resizelements.length;i++) {
		resizelement = resizelements[i];

		if(!resizelement) continue;

		h = parseInt(resizelement.style.height);
		if(typeof(h) == "undefined") continue;

		h += vdiff;
		if(h < 0) h = 0;
		else if(h > 600) h = 600;

		resizelement.style.height = h + 'px';
		resizepositions.push(h);
	}

	current_offset += vdiff;
	d = document.getElementById("dragbar_offset_field");
	if(d) d.value = current_offset;


	if(resizeoldhandler) resizeoldhandler(event);
}



function dragbar_setsize(elnames, positions) {
	var i;
	elnames = elnames.split(",");
	positions = positions.split(",");
	if(elnames.length != positions.length) return 0;
	for(i in elnames) {
		var ob = document.getElementById(elnames[i]);
		if(ob) {
			ob.style.height = parseInt(positions[i]) + 'px';
		}
	}
	return 1;
}



function write_dragbar(elname, minheight) {
	document.write("<div class=\"dragbar\" onmousedown=\"dragbar_beginresize(event, '"+elname+"',"+minheight+");\" onmouseup=\"dragbar_endresize(event)\";></div>");
	if(localStorage) {
		var pos = localStorage.getItem("dragbar_pos_" + elname);
		if(pos == null) return;
		if(!dragbar_setsize(elname, pos)) localStorage.removeItem("dragbar_pos_" + elname);
	}
}


function dragbar_loadsize(elname) {
	if(!localStorage) return;
	var pos = localStorage.getItem("dragbar_pos_" + elname);
	if(pos == null) {
		return;
	}
	if(!dragbar_setsize(elname, pos)) localStorage.removeItem("dragbar_pos_" + elname);
}



