function get_evt_obj(evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : "");
	if (evt) {
		var obj;
		if (evt.target) {
			obj = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target;
		} else {
			obj = evt.srcElement;
		}
		return obj;
	}
}

function element(id) {
	if(document.getElementById != null) {
		return document.getElementById(id);
	}
	if (document.all != null) {
		return document.all[id];
	}
	if (document.layers != null) {
		return document.layers[id];
	}
	return null;
}
function elements(ids) {
	a = new Array();
	for(var i in ids) {
		a.push(element(ids[i]));
	}
	return a;
}
function findPosX(obj)
{
	var curleft = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curleft += obj.offsetLeft
			obj = obj.offsetParent;
		}
	}
	else if (obj.x)
		curleft += obj.x;
	return curleft;
}

function findPosY(obj)
{
	var curtop = 0;
	if (obj.offsetParent)
	{
		while (obj.offsetParent)
		{
			curtop += obj.offsetTop
			obj = obj.offsetParent;
		}
	}
	else if (obj.y)
		curtop += obj.y;
	return curtop;
}

function getClipRect(o,x,y) {
	if (!o) return "";
//	var r = "rect("+findPosY(o)+","+(findPosX(o)+x)+","+(findPosY(o)+y)+","+findPosX(o)+")";
	var r = "rect(0,"+x+","+y+",0)";
	window.status=r;
	return r;
}

function center_image(o) {
	if (!o || o.tagName!="IMG") return;
	if (!o.style.clip) return;
	var b = o.id.match(/[0-9]+/g);
	var x=b[0]*gridx;
	var y=b[1]*gridy;
	var w=parseInt(o.style.width);
	var h=parseInt(o.style.height);
	var a = o.style.clip.match(/[0-9]+/g);
	window.status = ''+a[0]+' '+a[1]+' '+a[2]+' '+a[3]+' x:'+x+' y:'+y+' w:'+w+' h:'+h;
	var dy =Math.floor((h-a[2])/2);
	var dx =Math.floor((w-a[1])/2);
	o.style.top=y-dy;
	o.style.left=x-dx;
	o.style.clip='rect('+dy+','+(gridx-dx)+','+(gridy-dy)+','+dx+')';
}

var sizer_ar = new Array();
var resizer_running = 0;
var maxzindex=3;
var mposx=0;
var mposy=0;
var curobj=false;

function change_size() {
	resizer_running = 1;
	var ns = new Array();
	for(var i in sizer_ar) {
//		jdebug('shrinking '+i);
		var o=sizer_ar[i];
		if (o==curobj) {
			if (!o.style.width) o.style.width=gridx-2*tcpad;
			if (!o.style.height) o.style.height=gridy-2*tcpad;
			var wc = (parseInt(o.style.width)+2*tcpad)/gridx;
			var hc = (parseInt(o.style.height)+2*tcpad)/gridy;
			var wg = o.className.match(/\bw[0-9]+\b/);
			if (wg) wg=parseInt(wg[0].substr(1));
			if (!wg) wg = 1;
			if (wc < wg && o.tagName=="IMG") {
				change_size_int(o,10,10);
			} else if (wc < wg) {
				change_size_int(o,10,0);
			} else if (o.scrollHeight>o.clientHeight || (hc)-Math.ceil(hc) ) {
				change_size_int(o,0,10);
			} else {
			}
//			if (o.tagName=="IMG")
//				center_image(o);
			ns.push(o);
		} else {
			change_size_int(o,-10,-10);
			if (parseInt(o.style.width) > gridx-2*tcpad || parseInt(o.style.height) > gridy-2*tcpad) {
				ns.push(o);
			} else {
				cell_shrunk(o);
			}
		}
	}
	sizer_ar = ns;
	if (sizer_ar.length) {
		setTimeout("change_size()",0);
	} else {
		resizer_running = 0;
	}
}

function change_size_int(e,dx,dy) {
	if (e.style.width) {
		x = Math.max(gridx-2*tcpad,parseInt(e.style.width)+dx);
	} else {
		x = gridx-2*tcpad;
	}
	if (e.style.height) {
		y = Math.max(gridy-2*tcpad,parseInt(e.style.height)+dy);
	} else {
		y = gridy-2*tcpad;
	}
	if (x) {
		e.style.width = x;
	}
	if (y) {
		e.style.height = y;
	}
}

function cell_change(e) {
}
function mouse_move(e) {
	if (typeof gridx == "undefined" || typeof gridy == "undefined") return; // vars not loaded yet
	e = (e) ? e : ((window.event) ? window.event : "");
	if (!e) { return; }
	if (e.pageX || e.pageY)
	{
		mposx = e.pageX;
		mposy = e.pageY;
	}
	else if (e.clientX || e.clientY)
	{
		mposx = e.clientX + document.body.scrollLeft;
		mposy = e.clientY + document.body.scrollTop;
	}
	o = get_evt_obj(e);

	var rmposx = mposx - findPosX(o);
	var rmposy = mposy - findPosY(o);

//	window.status=Math.floor(mposx/gridx)+'/'+Math.floor(mposy/gridy)+' ['+sizer_ar.join(",")+']';
	
	o = element(Math.floor(mposx/gridx)+'/'+Math.floor(mposy/gridy));

	if(curobj && o!=curobj) {
		cell_leave(curobj);
	}

	if (o) {
//		jdebug('found');
		curobj = o;
		var in_ar=0;
		for(var i in sizer_ar) {
			if (sizer_ar[i]==o) {
				in_ar=1;
				break;
			}
		}
		if (!in_ar) {
			cell_enter(o);
			sizer_ar.push(o);
			if (!resizer_running)
				change_size();
		}
	} else {
		curobj=false;
	}
}

function cell_grown(o) {
	if (o && typeof(o)=="string") { o = element(o); }
	if (!o) return;

	o.style.zIndex=3;
	if (bgcolor_grown)
		o.style.backgroundColor=bgcolor_grown;
}
function cell_enter(o) {
	if (o && typeof(o)=="string") { o = element(o); }
	if (!o) return;

//	if(o.tagName=="IMG") o.style.clip=getClipRect(o,gridx,gridy);

	o.style.zIndex=3;
	if (bgcolor_enter)
		o.style.backgroundColor=bgcolor_enter;
}

function cell_shrunk(o) {
	if (o && typeof(o)=="string") { o = element(o); }
	if (!o) return;

	o.style.zIndex=2;
	if (bgcolor_shrunk)
		o.style.backgroundColor=bgcolor_shrunk;
}
function cell_leave(o) { 
	if (o && typeof(o)=="string") { o = element(o); }
	if (!o) return;

	if (bgcolor_leave)
		o.style.backgroundColor=bgcolor_leave;
//	o.style.backgroundColor='#FFFFFF';
}

function showInfo(content){
	var t = window.open("","","scrollbars,width=600,height=400,resize");
	t.document.write("<pre>");
	t.document.write(content);
	t.document.write("</pre>");
	t.document.close();
}
var jdebugwin;
function jdebug(content){
	if (!jdebugwin || jdebugwin.closed) {
		jdebugwin = window.open("","jdebug","left=0,top=0,scrollbars,width=600,height=400,resize");
		jdebugwin.document.write("<pre>");
	}
	jdebugwin.document.write(content+"\n");
}

function objInfoHTML(o,level)
{
	if (level>1) return "";
	var str = "";
	var os = "";
	var head = "";

	var a = new Array;
	for(var t=0;t<head*4;t++) {
		head +=" ";
	}
	for (var i in o) {
		a[a.length] = i;
	}
	a.sort();
	for (var i in a) {
		os = ""+o[a[i]];
		os = os.replace(/&/g,'&amp;');
		os = os.replace(/</g,'&lt;');
		str += head+"<b>" + a[i] + "</b>: " + os;
//		if (typeof(o[a[i]])=="object" && o[a[i]] != null) str += objInfoHTML(o[a[i]],level+1);
		str += "<BR>";
	}
	return str;
}

function eventinfo(evt) {
	evt = (evt) ? evt : ((window.event) ? window.event : "");
	if (evt) {
		var obj;
		if (evt.target) {
			obj = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target;
		} else {
			obj = evt.srcElement;
		}
			var content = objInfoHTML(obj,0);
			showInfo(content);
	}
}

function jumper(evt,id,aktie) {
	evt = (evt) ? evt : ((window.event) ? window.event : "");
    if (evt) {
		var obj;
        if (evt.target) {
            obj = (evt.target.nodeType == 3) ? evt.target.parentNode : evt.target;
        } else {
            obj = evt.srcElement;
        }
		if (obj.className != "nojump" && obj.tagName != "INPUT") {
			document.forms['$tabel'].id.value=id;
			document.forms['$tabel'].aktie.value=aktie;
			document.forms['$tabel'].submit();
		}
	}
}

function set_overlay(val) {
	e=element("infodiv");
	if (e) {
		if (val) {
			e.style.display='block';
		} else {
			e.style.display='none';
		}
	}
}