function start()
	{	
	window.setTimeout("build()", 100);	
	}

var Fmtcnt;
var Weihweg=0;
var Dofmt;
function build()
	{
	Fmtcnt=0;
	Dofmt=$('coldiv').hasClassName('fmt');
	$$('p:not([p="p"])').each(fmtnode);
	if(Fmtcnt<0)
		return;
	addsearchfield();
	addmenus('');
	adinit();
	posweih();
	$('weihweg').observe('click', weihweg);
	}

function fmtnode(n)
	{	
	if(++Fmtcnt>30)
		{
		window.setTimeout("build()", 10);
		Fmtcnt=-1;
		throw $break;
		}
	$(n).writeAttribute('p', 'p');
	var textnode=n.firstChild;
	if(textnode && textnode.data.length)
		{
		var link=document.createElement("a");
		link.appendChild(document.createTextNode(textnode.data));
		if(!Dofmt)
			$(link).addClassName('wordx');
		else if(n.readAttribute('shd'))
			$(link).addClassName('words');
		else if(n.readAttribute('d'))
			{
			$(link).addClassName('wordd');
			var span=document.createElement("span");
			$(link).appendChild(span);
			$(span).addClassName('worddh')
			$(span).appendChild(document.createTextNode(' (zum Löschen vorgeschlagen)'));
			}
		else if(n.readAttribute('title')!=null && n.readAttribute('title').length>0) // length muss wegen ie abgefragt werden
			$(link).addClassName('wordt');
		else
			$(link).addClassName('wordn');
		$(link).writeAttribute('href', '#');
		n.replaceChild(link, textnode);
		}
	}
	
function _menuactiongetnode(e)
	{
	return e.target.up('p');
	}

function menuactiondelprop(e, lo)
	{
	var nodeid=_menuactiongetnode(e).readAttribute('id');
	new Ajax.Request('/del.php', {
		method: 'post',
		parameters: {id: nodeid, ac: lo},
		onSuccess: function(transport) {
			$(nodeid).replace(transport.responseText);
			fmtnode($(nodeid));
			addmenus('#'+nodeid+' a');
			}});	
	}

function addmenus(preselector)
	{
	var myMenuItemss = [
		{
		name: 'nein',
		callback: function(e) {menuactiondelprop(e, 's');}
		},
		{
		name: 'Woxikon',
		callback: lookupWoxikon
		},
		{
		name: 'doch',
		callback: function(e) {menuactiondelprop(e, 'r');}
		}
	];

	var myMenuItems = [
		{
		name: 'Nachschlagen im "Woxikon"',
		callback: lookupWoxikon
		},
		{
		name: 'Zur Merkliste hinzufügen/entfernen',
		callback: addtolist
		}
	];

	var myMenuItemsn = myMenuItems.clone();
	myMenuItemsn.push( 
			{
			name: 'Kommentar bearbeiten',
			callback: editcomment
			},
			{
			name: 'Wört zum Löschen vorschlagen',
			callback: function(e) {menuactiondelprop(e, 'd');}
			}
		);

	var myMenuItemsd = myMenuItems.clone();
	myMenuItemsd.push( 
			{
			name: 'Kommentar bearbeiten',
			callback: editcomment
			},
			{
			name: 'Löschvorschlag entfernen',
			callback: function(e) {menuactiondelprop(e, 'e');}
			}
		);

	new Proto.Menu({selector: preselector+'.wordt', className: 'menu desktop', menuItems: myMenuItemsn});
	new Proto.Menu({selector: preselector+'.wordn', className: 'menu desktop', menuItems: myMenuItemsn});
	new Proto.Menu({selector: preselector+'.wordd', className: 'menu desktop', menuItems: myMenuItemsd});
	new Proto.Menu({selector: preselector+'.words', className: 'menu desktop', menuItems: myMenuItemss});
	new Proto.Menu({selector: preselector+'.wordx', className: 'menu desktop', menuItems: myMenuItems});
	}

function addsearchfield()
	{
	var textinput=document.createElement("input");
	$(textinput).writeAttribute('type', 'text');
	$(textinput).writeAttribute('id', 'searchinput');
	var inittext='Suchbegriff oder neues Wort eingeben';
	$(textinput).writeAttribute('value', inittext);
	$(textinput).writeAttribute('name', 'searchinput');
	$(textinput).writeAttribute('size', '40');
	$('mainform').appendChild(textinput);
	//$(textinput).focus();
	$('searchinput').observe('focus', function(){if($('searchinput').value==inittext) $('searchinput').value=''});
	$('searchinput').observe('keyup', function(){window.setTimeout("search('"+$('searchinput').value+"')", 100)});
	}

function addtolist(obj)
	{
	obj.target.toggleClassName('selected');
	var div=$('divselected');
	if(!div)
		{
		div=document.createElement("div");
		$(div).writeAttribute('id', 'divselected');
		$(div).writeAttribute('title', 'Liste kann mit Maus verschoben werden');
		document.body.appendChild(div);
		}
	else
		{
		$(div).x_drag.destroy;
		div.update();
		}
	var head=$(div).appendChild(document.createElement("h5"));
	head.appendChild(document.createTextNode("Merkliste"));
	div.x_drag=new Draggable('divselected',{revert:false, handle:head});
	var hasitems;
	$$('a.selected').each(function(sel)
		{
		hasitems=true;
		var p=document.createElement("p");
		$(p).writeAttribute('class', 'divselitem');
		p.appendChild(document.createTextNode(sel.firstChild.nodeValue));
		div.appendChild(p);
		});
	if(hasitems)
		{
		div.show();
		var ofls=(obj.target.viewportOffset().left<div.getWidth())?obj.target.getWidth()+2:-div.getWidth()-2;
		div.clonePosition(obj.target, {setWidth: false, setHeight: false, offsetLeft: ofls, offsetTop:obj.target.getHeight()/2});
		}		
	else
		div.hide();
	return div;
	}


function lookupWoxikon(obj)
	{
	//var url="http://www.dwds.de/?kompakt=1&sh=1&qu="+encodeURI(obj.target.firstChild.data);
	var url="http://synonyme.woxikon.de/synonyme/"+encodeURI(obj.target.firstChild.data)+".php";
	var xsize = screen.width;
	var ysize = screen.height;
	var breite=xsize*3/4;
	var hoehe=ysize/2;
	var xpos=xsize/8;
	var ypos=ysize/4;
	window.open(url,"","scrollbars=yes,status=yes,toolbar=yes,location=yes,directories=yes,resizable=yes,menubar=yes,width="+breite+",height="+hoehe+",screenX="+xpos+",screenY="+ypos+",top="+ypos+",left="+xpos);
	}

function search(s)
	{
	if(!s.length)
		s='';
	var ss=s.toLowerCase().replace(/[^a-zäöüß]/g, "");
	if(s!=ss || !ss.length)
		$('searchinput').value=s=ss;
	var found=false;
	$$('p').each(function(e)
		{
		var textnode=e.firstChild.firstChild;
		if(textnode && textnode.data.length)
			{
			var text=textnode.data;
			if(!found && text==s)
				found=true;
			if(textnode.data.indexOf(s)<0)
				e.hide();
			else
				e.show();
			}
		})

	$('coldiv').show();
	$('newentrydiv').update();
	if((found || ss.length<=2) && $('searchbutt'))
		{
		$('searchbutt').remove();
		}
	else if(!found && !$('searchbutt') && ss.length>2)
		{
		var butt= new Element('input', { type: 'submit', id: 'searchbutt', name:'insert', value:'Zur Liste hinzufügen'});
		$('mainform').insertBefore(butt, $('searchinput').nextSibling);
		}
	if(ss.length>0)
		{
		if(!$('resetbutt'))
			{
			var butt= new Element('input', { type: 'reset', id: 'resetbutt', name:'reset', value:'Zurück zur gesamten Liste'});
			$('mainform').insertBefore(butt, $('searchinput').nextSibling);
			$(butt).observe('click', search);
			}
		}
	else
		{
		$('resetbutt').stopObserving('click', search);
		$('resetbutt').remove();
		$('addhint').remove();		
		}
	}

function newentry()
	{
	$('searchbutt').replace('<span id="addhint"> zur Liste hinzufügen:</span>');
	$('coldiv').hide();
	$('newentrydiv').update("<br>Bitte warten");
	new Ajax.Updater('newentrydiv', '/new.php', {method:'POST', parameters: {name: $F('searchinput')}, evalScripts: true, encoding: 'latin1' });
	return false;
	}

function newentry2()
	{
	var form = $('captchaform');
	var param={pwd: $F(form['pwd']), id: $F(form['id']) };
	new Ajax.Updater('newentrydiv', '/new.php', {parameters: param, evalScripts: true});
	return false;
	}

function newentry3()
	{
	new Ajax.Updater(document.body, '/index.php', {
		evalScripts: true,
		onSuccess: function(transport) {/*start()*/}
		});
	}

function editcomment(e)
	{
	var div=new Element('div', {id: 'editcomment'});
	var basenode=_menuactiongetnode(e);
	$(div).clonePosition(basenode, {setWidth: false, setHeight: false, offsetTop: basenode.getHeight()+1});
	document.body.appendChild(div);
	div.appendChild(document.createTextNode('Kommentar für "'+e.target.firstChild.data+'"'));
	div.appendChild(document.createElement("br"));
	//div.appendChild(new Element('img', {src:'spinner.gif', id:'spinner'}));
	var ta=new Element('textarea', { cols: 20,  rows: 5, id: 'editcommenttextarea'});
	div.appendChild(ta);
	$(ta).appendChild(document.createTextNode(basenode.readAttribute('title')));
	ta.focus();
	var buttsub= new Element('input', { type: 'submit', id: 'commenteditdone', name:'commenteditdone', value:'Speichern'});
	var buttres= new Element('input', { type: 'reset', id: 'commenteditcancel', name:'commenteditcancel', value:'Abbrechen'});
	div.appendChild(document.createElement("br"));
	div.appendChild(buttsub);
	div.appendChild(buttres);
	var nodeid=_menuactiongetnode(e).readAttribute('id');
	$(buttsub).observe('click', function()
		{			
		new Ajax.Request('/comment.php', {
			method: 'post',
			parameters: {id: nodeid, comment:ta.value, encoding: 'latin1' },
			onSuccess: function(transport) {
				$(nodeid).replace(transport.responseText);
				fmtnode($(nodeid));
				addmenus('#'+nodeid+' a');
				div.remove();
				}});	
		});
	$(buttres).observe('click', function()
		{
		div.remove();
		});
	}

var ADa, ADb, ADs, ADh, ADp, AdvOffX, SCyi, SCyt;

function adinit()
	{
	ADa=$('coltab').cumulativeOffset()[1];
	ADa=0;
	ADb=$('sigdiv').getHeight();
	ADh=$('advert').getHeight()+200;
	ADp=ADa+$('outdiv').getHeight();		
	var off=$('advert').cumulativeOffset();
	AdvOffX=off[0];
	SCyi=off[1];
	var outwi=AdvOffX+150;
	$('outdiv').setStyle({width: outwi+'px'});
	Event.observe(window, 'scroll', scrolled);
	}

function getscreenheight()
	{
	var h=500;
	if(typeof(window.innerWidth)=='number')
		h=window.innerHeight;
	else if(document.documentElement&&(document.documentElement.clientWidth||document.documentElement.clientHeight))
		h=document.documentElement.clientHeight;
	else if(document.body&&(document.body.clientWidth||document.body.clientHeight))
		h=document.body.clientHeight;
	return h;
	}

function posweih()
	{
	if(Weihweg)
		return;
	var bc=$(document.body).cumulativeScrollOffset();
	$('weihdiv').setStyle({
		position: 'absolute',
		left: (bc[0]+300)+'px',
		top:  (bc[1]+250)+'px'
		});
	}

function scrolled()
	{
	ADs=getscreenheight();
	var bc=$(document.body).cumulativeScrollOffset();
	var sc=bc[1];
	SCyt=sc-parseInt((ADa+ADb+ADh-ADs)*sc/(ADp-ADs)-ADa);
	window.setTimeout("scrollpos()", 100);
	posweih();
	}

function scrollpos()
	{
	var f=.01;
	SCyi=f*SCyt+(1-f)*SCyi;
	if(SCyi-SCyt<1 && SCyi-SCyt>-1)
		SCyi=SCyt;
	else
		window.setTimeout("scrollpos()", 30);	
	var y=parseInt(SCyi);
	$('advert').setStyle({
		marginTop: y+'px'
		//position: 'absolute',
		//left: AdvOffX+'px',
		//top:  y+'px'
		});
	}

function weihweg()
	{
	$('weihdiv').setStyle({
		position: 'absolute',
		left: '710px',
		top:  '10px'
		});
	$('weihweg').hide();
	Weihweg=1;
	return true;
	}

