
function Dom(id)
{
	var _id = new Array();
	var _guter_browser = (window.ActiveXObject)? false : true;
	
	if(id != undefined) //wenn undefined haben wir noch kein root element!
		_id[0] = id;
	
	this.delete_all_childs = function()
	{
		while(_id[0].firstChild)
  			_id[0].removeChild(_id[0].firstChild);	
	}
	this.delete_first_child = function()
	{
		if(_id[0].firstChild)
  			_id[0].removeChild(_id[0].firstChild);	
	}
	
	this.get_dom = function()
	{
		return _id[0];
	}
			
		
	function append(pos, v)
	{
		if(_id.length == 0 && pos == -1)
		{
			_id[0] = v;
		}
		else
		{
			//alert("appendChild");
			_id[pos].appendChild(v);
			//alert("bbbb");
			_id[++pos] = v;
		}
		
		//return _id[pos-1]; wie??????????
	}
	
	this.appendText = function(pos, txt)
	{
		var new_text = document.createTextNode(txt);
		append(pos, new_text);
	}
	
	this.appendH1 = function(pos)
	{
		var new_h1 = document.createElement('h1');
		append(pos, new_h1);
	}
	this.appendH2 = function(pos)
	{
		var new_h2 = document.createElement('h2');
		append(pos, new_h2);
	}
	this.appendB = function(pos)
	{
		var new_b = document.createElement('b');
		append(pos, new_b);
	}
	this.appendP = function(pos, id)
	{
		var new_p = document.createElement('p');
		
		if(id != undefined)
			new_p.id = id;
		
		append(pos, new_p);
	}
	this.appendDiv = function(pos, id, cl)
	{
		var new_div = document.createElement('div');
		new_div.id = id;
		
		if(cl != undefined)
			new_div.className = cl;
		
		append(pos, new_div);
	}
	this.appendSpan = function(pos, id, cn)
	{
		var new_span = document.createElement('span');
		new_span.id = id;
		if(cn != '')
			new_span.className = cn
		
		append(pos, new_span);
	}
	this.appendA = function(pos, hrf, cl, oncl, trg, title, on_mouse_over, on_mouse_out) //pos + href sind must
	{
		var new_a = document.createElement('a');
		new_a.href = hrf;
		
		if(cl && cl != '')
			new_a.className = cl;
		if(trg && trg != '')
			new_a.target = trg;
		else
			new_a.target = '_self';
		if(title && title != '')
			new_a.title = title;
		if(oncl && oncl != '')
		{
			new_a.onclick = new Function(oncl);
			new_a.setAttribute('onClick', oncl);
		}
		if(on_mouse_over && on_mouse_over != '')
		{
			new_a.onmouseover = new Function(on_mouse_over);
			new_a.setAttribute('onMouseOver', on_mouse_over);
		}
		if(on_mouse_out && on_mouse_out != '')
		{
			new_a.onmouseout = new Function(on_mouse_out);
			new_a.setAttribute('onMouseOut', on_mouse_out);
		}
		append(pos, new_a);
	}
	this.appendTable = function(pos, id, cl)
	{
		var new_table = document.createElement('table');
		new_table.id = id;
		new_table.className = cl;
		
		append(pos, new_table);
	}
	this.appendButton = function(pos, oncl)
	{
		var t = document.createElement("button");
		t.setAttribute("type", "button");
		
		if(oncl && oncl != '')
		{
			t.setAttribute("onclick", oncl); //firefox, safari, opera
			if(window.ActiveXObject) //für ie
				t = document.createElement("<button onclick=\""+oncl+"\"></button>");
		}
		append(pos, t);
	}
	
	/*
	this.appendIframe = function(pos, id, w, h, file)
	{
		t = document.createElement('iframe');
		t.height = h;
		t.width = w;
		t.src = file;
		t.scrolling = 'no';
		t.id = id;
		t.setAttribute('frameborder', '0');
		
		if(document.all) //für ie
			t = document.createElement("<iframe id=\""+id+"\"src=\""+file+"\" width=\""+w+"\" height=\""+h+"\" scrolling=\"no\" frameborder=\"0\"></iframe>");
		
		append(pos, t);
	}
	*/
	
	this.appendIframe = function(pos, id, w, h, file, onl)
	{
		var t = document.createElement('iframe');
		t.height = h;
		t.width = w;
		t.src = file;
		t.scrolling = 'no';
		t.id = id;
		t.name = id;
		t.setAttribute('frameborder', '0');
		
		//t.setAttribute('onLoad', onl);
		
		if(window.ActiveXObject) //für ie
		{
			//t = document.createElement("<iframe id=\""+id+"\" name=\""+id+"\" src=\""+file+"\" width=\""+w+"\" height=\""+h+"\" onload=\""+onl+"\" scrolling=\"no\" frameborder=\"0\"></iframe>");
			//t = document.createElement("<iframe id=\""+id+"\" name=\""+id+"\" src=\""+file+"\" width=\""+w+"\" height=\""+h+"\" scrolling=\"no\" frameborder=\"0\"></iframe>");
			t = document.createElement("<iframe id=\""+id+"\" name=\""+id+"\" src=\""+file+"\" width=\""+w+"\" height=\""+h+"\" scrolling=\"no\" frameborder=\"0\"></iframe>");
	
		}
			
		append(pos, t);
	}
	
	
	this.appendCheckbox = function(pos, id, fun, ch)
	{
		var t;
		if(window.ActiveXObject && ch && ch != '') //ie
			t = document.createElement("<input type=\"checkbox\" checked>");
		//else if(window.ActiveXObject)
		//	t = document.createElement("<input type=\"checkbox\" onclick=alert('hhh')>");
		else
		{
			t = document.createElement('input');
			t.type = "checkbox";
			if(ch && ch != '')
				t.setAttribute("checked", "checked");
		}
		
		t.id = id;
		t.onclick = new Function(fun);
		//t.setAttribute('onClick', fun);
		//t.onclick = function() {eval(fun);} //eval(fun);
		
		append(pos, t);	
	}
	this.appendInput = function(pos, id, vl, ln, read_only, hd)
	{
		var t = document.createElement("input");
		//if(i == 1)
		//	t.type = 'password';
		//else
			t.type = 'text';
		t.id = id;
		t.value = vl;
		if(ln && ln != '')
			t.size = ln;
		t.readOnly = read_only;
		
		if(hd && hd != '')
			t.type = hd;
		
		append(pos, t);
	}
	
	this.appendLabel = function(pos, _htmlFor)
	{
		var t = document.createElement('label');
		t.htmlFor = _htmlFor;
		
		append(pos, t);	
	}
	
	
	
	this.appendRadio = function(pos, id, nm, fun, select, cl)
	{
		var t;
		if(_guter_browser)
			t = document.createElement('input');
		else if(select && select != '')
			t = document.createElement("<input name='"+nm+"' checked='checked'>"); //wegen IE
		else
			t = document.createElement("<input name='"+nm+"'>"); //wegen IE
		
		if(select && select != '')
			t.checked = select;
		
		t.id = id;
		t.name = nm;
		t.type = "radio";
		t.onclick = function() {eval(fun);} //eval(fun);
		
		if(cl)
			t.className = cl;
		
		append(pos, t);
	}
	this.appendBr = function(pos)
	{
		append(pos, document.createElement('br'));
	}
	this.appendHr = function(pos)
	{
		append(pos, document.createElement('hr') );
	}
	this.appendImg = function(pos, id, src2img, fun, a, cn, al, on_mouse_over, on_mouse_out) //pos
	{
		var t = document.createElement('img');
		//if(id != '')
			t.id = id;
		if(src2img && src2img != '')
			t.src = src2img;
		if(fun && fun != '')
		{
			t.onclick = new Function(fun);
			t.setAttribute('onClick', fun);
		}
		if(a && a != '')
			t.title = a;
		if(cn && cn != '')
			t.className = cn;
		if(al && al != '')
			t.alt = al;
		if(on_mouse_over && on_mouse_over != '')
		{
			t.onmouseover = new Function(on_mouse_over);
			t.setAttribute('onMouseOver', on_mouse_over);
		}
		if(on_mouse_out && on_mouse_out != '')
		{
			t.onmouseout = new Function(on_mouse_out);
			t.setAttribute('onMouseOut', on_mouse_out);
		}
		append(pos, t);		
	}
	this.appendMap = function(pos, nm, id, cn)
	{
		var t = document.createElement('map');
		
		t.name = nm;
		if(id != '')
			t.id = id;
		else if(cn != '')
			t.className = cn;
		append(pos, t);
	}
	this.appendArea = function(pos, id, cn, coords)
	{
		var t = document.createElement('area');
		
		t.id = id;
		t.className = cn;
		t.name = cn;
		t.href = '#';
		t.shape = 'poly';
		t.alt = '';
		t.coords = coords;
		
		append(pos, t);
	}
	
	this.appendSelect = function(pos, name, size)
	{
		var t = document.createElement('select');
		
		t.name = name;
		t.id = name;
		t.size = size;
				
		append(pos, t);
	}
	
	this.appendOption = function(pos, value, onclick, select)
	{
		var t = document.createElement('option');
		
		t.value = value;
		t.onclick = new Function(onclick);
		
		if(select != '' && select)
			t.selected = select;
		
		append(pos, t);
	}
	
	this.appendTextArea = function(pos, id, value, col, row)
	{
		var t = document.createElement('textarea');
		t.value = value;
		t.rows = row;
		t.cols = col;
		t.id = id;
		
		append(pos, t);
	}
	
	this.appendForm = function(pos, id, name)
	{
		var t = document.createElement('form');
		if(id && id != '')
			t.id = id;
		if(name && name != '')
			t.name = name;
		//if(os && os != '')
			t.onsubmit = new Function('return false');
		
		append(pos, t);
	}
	
	this.appendUl = function(pos, id, cn)
	{
		var t = document.createElement('ul');
		
		if(id && id != '')
			t.id = id;
			
		if(cn && cn != '')
			t.className = cn;
		
		append(pos, t);
	}
	
	this.appendLi = function(pos)
	{
		var t = document.createElement('li');
		append(pos, t);
	}
	
	
	/*
		id functions
	*/	
	this.insertRow = function(id, pos, txts, cn, ids)
	{
		
		
		var table = document.getElementById(id);
		var newRow = table.insertRow(pos);
		
		
		
		for(var r = 0; r < txts.length; r++)
		{
			var cell = newRow.insertCell(r);
			cell.className = cn;
			if(ids)
			{
				cell.id = ids[r];
			}
			//console.log(r + " - " + txts[r]);
			
			if(isArray(txts[r]) )
			{
				for(var j = 0; j < txts[r].length; j++)
					cell.appendChild(txts[r][j]);
			}
			else
				cell.appendChild(txts[r]);
		}	
	}	
}



function isArray(o) 
{
	if(o[0] == undefined && o[1] == undefined)
		return false;
	else
		return true;
}

/*
function isArray(obj) 
{
   if(obj.constructor.toString().indexOf("Array") == -1)
      return false;
   else
      return true;
}
*/

/*
function isArray(testObject) 
{   
    return testObject && !(testObject.propertyIsEnumerable('length')) && typeof testObject === 'object' && typeof testObject.length === 'number';
}
*/

	/*
	dom = new DOM(document.getElementById('box_content'));
		
	dom.appendText(0, "text1");
	dom.appendText(0, "text2");
	
	dom.appendA(0, "#", "navi");
	dom.appendText(1, "navi1");
	
	dom.appendH1(0);
	dom.appendText(1, "text3");
	
	dom.appendH2(0);
	dom.appendText(1, "text4");
	
	dom.appendP(0);
	dom.appendB(1);
	dom.appendText(2, "text5");
	
	dom.appendText(0, "text6");
	
	dom.appendB(0);
	dom.appendText(1, "text7");
	
	dom.appendTable(0, 't1');
	
	dom2 = new DOM(document.createElement('b'));
	dom2.appendText(0, "td2");
	
	
	var cells = new Array();
	cells[0] = document.createTextNode("td1");
	cells[1] = dom2.getDOM();
	dom.insertRow('t1', -1, cells);
	*/
