function init()
{	
	//getData('addLabels','text'); // add labels
	browser();
	browserSize();
	// no frame shifting anymore
	if (browser != 'IE') getObject('frame').style.marginLeft = (browserWidth-1000)/2 + 'px';
	
	createMyTabs(Array('Reiter hinzufügen'),true);
	menu();
	createRectangle();
	initEvents();			// moveDragableBox
	footer();	

	if (withCookie) var logonArray = getCookie(Array('user','pass'));
	if (logonArray.length > 1) logonSend(logonArray[0],logonArray[1]);
	else logonSend(defaultUser,defaultPassword,true);
	//alert(logonArray[0]);
	//alert(logonArray[1]);
		
	setTimeout(function(){getObject('header').focus()},2000); // jump up again
}
function click(evt,element)
{
	if (!evt) evt = event; // for internet explorer
	if (!element) element = this;
	var idArray = element.id.split('_');
	action = idArray[0];
	
	this.blur;	// for button

	// normal click
	if (evt.type == 'click'){
		
		switch(action)
		{
			case 'link': 			window[idArray[1]](idArray); break;
			case 'timeout':			window.setTimeout(idArray[1]+'()',1000); break;
			case 'popup':		 	window['create'+firstBig(idArray[1])](getObject(idArray[1])); break;
			case 'open':			window.open(getRestId(idArray,0)); break;			
			case 'display':			display(idArray[1]); break;
			case 'newTabLink': 		createTabs(Array('new'),true);	break;	
			case 'openWidgetSearch':openWidgetSearch(); break;
			//case 'createWebWidget': createWebWidget(); break;		
		}	
	}	
	// change
	else if (evt.type == 'change'){		
		if (action == 'widgetbox') requestWidgetlist(getSelected(element));	
	}	
	// after leaving the element
	else if (evt.type == 'blur'){		
		if (action == 'link') window[idArray[1]](idArray);
		if (action == 'mailName') swopMailText();
	}
//	else if (evt.type == 'keypress' && evt.keyCode == '13'){
	return true; // so a href won't be called
}
function menu()
{
	// menu container
	var boxIndex = createBox('','menu',false);
	var menu = getObject('dragableBoxContent' + boxIndex);
	//menu.id = 'menu';
	
	// logon / registration
	var logon = createContainer(menu,'logonContainer','menuClass');
	createInput(logon,'E-Mail','mail','logonMail','input',true);
	createBreak(logon);
	createInput(logon,'Passwort','password','logonPassword','input',true);
	createBreak(logon);
	createText(logon,'Anmelden','link_logonValidate','link');
	createBreak(logon);
	createText(logon,'Angemeldet bleiben&nbsp;');
	createInput(logon,'','checkbox','withCookie');	
	createBreak(logon);
	createPopupLink(logon,'reg','Registrieren','popup_reg',200,300);
	createDoubleBreak(logon);
	var mailReg = createContainer(logon,'mailRegContainer');
	createText(mailReg,'Jetzt Yoption E-Mail sichern!');
	createInput(mailReg,'','text','mailAvailable','inputShort');
	createText(mailReg,'@yoption.de','link_mailAvailable','link');
	createBreak(mailReg);
	createPopupLinkIframe(mailReg,'b1gmail/index.php?action=signup','Mail Registrieren','timeout_mailRegPopup',browserHeight-100,browserWidth-100);
	display('timeout_mailRegPopup');
	
	// logout / save
	var logout = createContainer(menu,'logoutContainer','menuClass',true);
	createContainer(logout,'hello');
	createDoubleBreak(logout);
	createPopupLink(logout,'prop','Einstellungen','link_propLoad',300,300);
	createBreak(logout);
	createText(logout,'Logout','link_logout','link');
	createBreak(logout);
	createText(logout,'Sichern','link_save','link');
	
	// functions
	var functions = createContainer(menu,'functionContainer','menuClass');
	if (browser == 'Firefox') createPopupLink(functions,'bookmarkFirefox','Yoption als Startseite','startpage_link',150,500,'without',yoption_icon); 
	else if (browser == 'Safari') createPopupLink(functions,'bookmarkSafari','Yoption als Startseite','startpage_link',150,500,'without',yoption_icon);
	else createImage(functions,yoption_icon,'link_bookmark','link');
	createText(functions,'Yoption als Lesezeichen','bookmark_txt','leftgap',false,true);
	if (browser == 'Firefox') createPopupLink(functions,'startpageFirefox','Yoption als Startseite','startpage_link',150,500,'without',yoption_icon); 
	else if (browser == 'Safari') createPopupLink(functions,'startpageSafari','Yoption als Startseite','startpage_link',150,500,'without',yoption_icon);
	else createImage(functions,yoption_icon,'link_startpage','link');
	createText(functions,'Yoption als Startseite','startpage_txt','leftgap',false,true);
	createPopupLink(functions,'tellanyone','Yoption weitersagen','popup_tellanyone',250,400,false,yoption_icon); // -> createMailer
	createText(functions,'Yoption weitersagen','tell_txt','leftgap',false,true);
	
	// widgets
	var widgets = createContainer(menu,'widgetContainer','menuClass');
	//createList(widgets,'widgetlist');
	createText(widgets,'Widget hinzufügen','','',false,true);	
	createChoiceBox(widgets,'',Array(Array('title','Widgetsuche')),'widgetbox','',true);
	getData('fillChoiceBox_widgetbox','categories',Array('type*title'),Array(),Array(),'true',Array('title'),'');
	createList(widgets,'widgetlist','menuClass');
	createText(widgets,'+ http://','link_createWebsite','link');
	createInput(widgets,'','website','website','inputShort');
}
function mailLogon1(param)
{
	mailUserId = param[0];
	var mailUser = param[1].substring(0,param[1].search(/@/));
	var mailPassword = param[2];	
	var cont = createContainer(getObject('help'),'mailIframeCont','',true);
	var iframe = createIFrame(cont,'b1gmail','mailIframe');
	setTimeout('mailLogon2("'+mailUser+'","'+mailPassword+'")',1000);
}
function mailLogon2(mailUser,mailPassword)
{
	var iframe = getObject('mailIframe').contentWindow;
	var form = iframe.document.getElementsByTagName('form')[0];
	var mailInput = iframe.document.getElementById('email_local');		
	if (!mailInput){		
		setTimeout('mailLogon2("'+mailUser+'","'+mailPassword+'")',1000);
		return;
	} 
	mailInput.value = mailUser;
	var passwordInput = iframe.document.getElementById('passwordMD5');
	passwordInput.name = 'passwordMD5_yoption';
	passwordInput.value = mailPassword;
	form.submit();
	getData('mailInBox','bm60_mails',Array('id','von','betreff'),Array('userid','flags'),Array(mailUserId,'1'),true);
	mailInterval = window.setInterval(function(){getData('mailInBox','bm60_mails',Array('id','von','betreff'),Array('userid','flags'),Array(mailUserId,'1'),true);},60000);
}
function mailInBox(param)
{
	var mails = param[2];
	if (!mails) mails = 0;
	
	// create / get container
	var cont = getObject('mailInBox');
	if (!cont){
		var logout = getObject('logoutContainer');
		createDoubleBreak(logout);
		var cont = createContainer(logout,'mailInBox');
	}
	else removeChildren(cont);
	
	createText(cont,'<img src="images/inbox.png">&nbsp;'+mails+' ungelesene E-Mail(s)','link_mailRead','link');
	
	if (!param[2]) return;
	
	createBreak(cont);
	for (var i=0; i<mails; i++) {
		
		var mail = param[3+i].split('*');
		createText(cont,mail[1]+': '+mail[2],'link_mailRead_'+mail[0],'link');
		createBreak(cont);
	};
}
function mailRead(idArray)
{
	var iframe = getObject('mailIframe').contentWindow;
	var url = iframe.document.URL;
	var sid = url.substring(url.search(/sid/)+4);
	if (idArray[2])	iframe.window.location.href = 'b1gmail/email.read.php?id='+idArray[2]+'&sid='+sid;
	else iframe.window.location.href = 'b1gmail/email.php?sid='+sid;
	fullscreen('mailIframeCont');
}
function mailAvailable()
{
	var uri = 'b1gmail/index.php/?action=checkAddressAvailability';
	uri += '&address=' + getValue('mailAvailable') + '@yoption.de';
	request(uri);
}
function mailAvailableRegform(mail)
{
	var uri = 'b1gmail/index.php/?action=checkAddressAvailability';
	uri += '&address=' + mail + '@yoption.de';
	request(uri);
}
function mailAvailableAnswer(req)
{
	var xml = req.responseXML;
	//var available = xml.getElementsByTagName('available')[0].textContent;
	var available = xml.getElementsByTagName('available')[0].childNodes[0].nodeValue;
	
	
	if (getObject('regError')){ // over reg formular
		if (available != '1') {
			regSend('yoption');
			return;
		}
		tb_remove();
		write('Bitte registrieren Sie zuerst Ihre Yoption E-Mail-Adresse.');
		display('timeout_mailRegPopup');
		getObject('mailAvailable').value = getValue('regMail').split('@')[0];
		//createPopupLinkIframe(getObject('regError'),'b1gmail/index.php?action=signup','Bitte registrieren Sie zuerst Ihre Yoption E-Mail-Adresse.','timeout_mailRegPopupRegform',browserHeight-100,browserWidth-100);
	}
	else{ // over start menu
		if (available != '1') {
			write('Diese Mail-Adresse ist leider schon vergeben.');
			return;
		}
		write('Diese Mail-Adresse ist noch verfügbar.');
		display('timeout_mailRegPopup');
	}
}
function mailRegPopup()
{
	getObject('TB_iframeContent').contentWindow.document.getElementById('email_local').value = getValue('mailAvailable');
	getObject('TB_iframeContent').contentWindow.checkAddressAvailability();
}
function footer()
{
	var footer = getObject('footer_middle');
	createText(footer,'Copyright 2008: yoption','copyright_txt');	
	createText(footer,'|');
	createText(footer,'Home','link_refresh','link');	
	createText(footer,'|');
	createPopupLink(footer,'staticImpressum','Impressum','imp_link',270,400,'without');
	createText(footer,'|');
	createPopupLink(footer,'staticAGB','AGB','imp_link',470,600,'without');
	createText(footer,'|');
	createPopupLink(footer,'contact','Kontakt','popup_contact',250,400);
	createText(footer,'|');
	createPopupLink(footer,'advert','Werben auf yoption.de','popup_advert',300,400);
	createText(footer,'|');
	footer.appendChild(getObject('sharethis'));
}
function createAdvert(parentObj)
{
	createBreak(parentObj);
	createText(parentObj,'Sie wollen Ihre eigene Internetseite als Widget auf Yoption präsentieren? Jetzt zu besonders günstiger Abrechnung mit nur 0,25 Euro / Klick sichern!');
	createDoubleBreak(parentObj);
	createLabeledInput(parentObj,'Name','advertName','input');
	createLabeledInput(parentObj,'Firma','advertCompany','input');
	createLabeledInput(parentObj,'E-Mail','advertMail','input','mail');
	createLabeledInput(parentObj,'Telefon','advertTel','input','tel');
	createLabeledInput(parentObj,'Internetseite','advertSite','input','website');
	createBreak(parentObj);
	createText(parentObj,'Rubrik','','label');
	createChoiceBox(parentObj,'',Array(Array('title','...')),'advertCategories','',true);
	getData('fillChoiceBox_advertCategories','categories',Array('type*title'),Array(),Array(),'true',Array('title'),'');
	
	createDoubleBreak(parentObj);
	createText(parentObj,'Anfrage Abschicken','link_advertSend','link');
}
function advertSend()
{
	if (!checkInput('advertName')) return;
	if (!checkInput('advertCompany')) return;
	if (!checkInput('advertMail','mail')) return;
	if (!checkInput('advertTel','tel')) return;
	if (!checkInput('advertSite','website')) return;
	if (getSelected(getObject('advertCategories'),true) == '...') return;
	
	var text = 'Anfrage zu Werben auf Yoption:<br>';
	text += getValue('advertName')+'<br>';
	text += getValue('advertCompany')+'<br>';
	text += getValue('advertMail')+'<br>';
	text += getValue('advertTel')+'<br>';
	text += getValue('advertSite')+'<br>';
	text += getSelected(getObject('advertCategories'),true)+'<br>';

	sendMail('mailAnswer','preikschat@yoption.de',text,'Werben auf Yoption',getValue('advertMail'));
}
function createTellanyone(parentObj)
{	
	createBreak(parentObj);
	createLabeledInput(parentObj,'E-Mail (Absender)','tellanyoneMailfrom','input','mail');
	createLabeledInput(parentObj,'E-Mail (Empfänger)','tellanyoneAddress','input','mail');
	createBreak(parentObj);
	createText(parentObj,'Inhalt','','headline');
	createDoubleBreak(parentObj);
	createText(parentObj,'Hallo ');
	createInput(parentObj,'Name Empfänger','text','tellanyoneName','input',true);
	createText(parentObj,', schau dir umbedingt die neue Startseite von <a href="http://www.yoption.de" target="_blank">Yoption</a> an!');
	createBreak(parentObj);
	createText(parentObj,'Liebe Grüße ');
	createInput(parentObj,'Name Absender','text','tellanyoneFrom','input',true);
	createDoubleBreak(parentObj);
	createText(parentObj,'Absenden','link_tellanyoneSend','link');
}
function tellanyoneSend()
{
	if (!checkInput('tellanyoneAddress','mail')) return;
	if (!checkInput('tellanyoneMailfrom','mail')) return;
	if (!getValue('tellanyoneName')) return;
	if (!getValue('tellanyoneFrom')) return;
	var text = 'Hallo '+getValue('tellanyoneName')+', schau dir umbedingt die neue Startseite von <a href="http://www.yoption.de">Yoption</a> an!<br>Liebe Grüße '+getValue('tellanyoneFrom');
	sendMail('mailAnswer',getValue('tellanyoneAddress'),text,'Yoption.de',getValue('tellanyoneMailfrom'));
}
function createContact(parentObj)
{
	createBreak(parentObj);
	createLabeledInput(parentObj,'Ihre E-Mail','contactMail','input','mail');
	createLabeledInput(parentObj,'Thema','contactTopic','input');
	createBreak(parentObj);
	createText(parentObj,'Inhalt der Nachricht','','label');
	createTextarea(parentObj,'','contactText','',250,100);
	createDoubleBreak(parentObj);
	createText(parentObj,'Abschicken','link_contactSend','link');
}
function contactSend()
{
	if (!checkInput('contactMail','mail')) return;
	if (!checkInput('contactTopic')) return;
	if (!getObject('contactText').value) return;
	sendMail('mailAnswer','preikschat@yoption.de',getObject('contactText').value,getObject('contactTopic').value,getObject('contactMail').value);
}
function mailAnswer(param)
{
	tb_remove();
	if (param[2] == '0') write('Danke für Ihre Anfrage, wir werden uns zeitnah bei Ihnen melden.');
	else write('Fehler beim abschicken der E-Mail.');
}
function createWebsite()
{
	var url = 'http://' + getObject('website').value;
	var adObject = getObject('website_ad')
	if (adObject && adObject.checked) var ad = true;
	else var ad = false;
	createWidget(url,'dragableBoxes'+activeTabNo+'Column1',0,url,'website','1',ad);
}
function requestWidgetlist(selected){
	
	var widgetlist = getObject('widgetlist');
	removeChildren(widgetlist);
	if (selected != 'title') getData('fillWidgetlist', 'widgets', Array('type','title','url','height'), Array('category'), Array(selected), true, Array('type','title'), '');
}
function fillWidgetlist(param)
{
	var widgetSearch = getObject('widgetlist');
	for (var i=0; i<param[2]; i++){		
		var widgetArray = param[3+i].split('*');
		if (widgetArray[0] == 'feed') createRSSLink(widgetSearch,widgetArray[1],widgetArray[2]);
		else if (widgetArray[0] == 'widget') createWidgetLink(widgetSearch,widgetArray[1],widgetArray[2],widgetArray[3]);
	} 
}
function createWidgetLink(parentObj,title,link,height)
{
	//SetXML(googleGadget[i]);		
	var element = document.createElement('DIV');
	element.innerHTML = title;
	element.onmouseover = function(){showWidget(element,link,height)};
	element.onmouseout = closeDragableBox;
	element.onclick = takeDragableBox;
	parentObj.appendChild(element);
	createBreak(parentObj);	
}
function showWidget(element,link,height)
{
	//var google = 'http://gmodules.com/ig/ifr?url=';
	element.style.cursor = 'pointer';
	var title = element.innerHTML;
	createWidget(link,'dragableBoxes' + activeTabNo + 'Column1',height,title,title,1);
	element.id = boxIndex;	// for closing after mouseout
}
function createRSSLink(parentObj,title,link)
{		
	var element = document.createElement('DIV');
	element.innerHTML = title;
	element.onmouseover = function(){showRSS(element,link)};
	element.onmouseout = closeDragableBox;
	element.onclick = takeDragableBox;
	parentObj.appendChild(element);	
	createBreak(parentObj);	
}
function showRSS(element,link)
{
	element.style.cursor = 'pointer';
	var title = element.innerHTML;
	createRSSBox(link,'dragableBoxes' + activeTabNo + 'Column1',false,5,title,title,1);
	element.id = boxIndex;	// for closing after mouseout
}

function bookmark()
{
	window.external.AddFavorite(url,'Yoption');
}
function startpage()
{
	document.body.style.behavior='url(#default#homepage)'; 
	document.body.setHomePage(url);  
}
function createMyTabs(tabs,start)
{
	var header = getObject(tabHeader);
	var content = getObject(tabContent);
	//var nextTabId = header.childNodes.length / 2; // cause of the line elements
	var nextTabId = getNextFreeTabNo();
		
	for (var i=0; i<tabs.length; i++){
		
		var id = nextTabId + i;
		var tabButton = document.createElement('DIV');
		tabButton.id = 'tabButton_' + id;
		tabButton.className = 'tabButton';
		tabButton.onmouseover = setTabDrop;	// move box to this tab
		tabButton.onmouseout = delTabDrop;
		createText(tabButton,tabs[i],'link_tabClick_'+id);
		if (id == 0) header.appendChild(tabButton); 
		else header.insertBefore(tabButton,getObject('tabButton_0'));
		tabArray.push(Array(tabButton.id,tabs[i]));
		
		var line = document.createElement('DIV');
		line.className = 'tabLine';
		//line.innerHTML = ' ';
		if (id == 0) header.appendChild(line);
		else header.insertBefore(line,getObject('tabButton_0'));		
			
		if (id == 0) continue;
		
		// add column container		
		var tabContainer = document.createElement('DIV');
		tabContainer.id = 'contentContainer_' + id;
		for (var no = 0; no < numberOfColumns; no++) {
		
			var div = document.createElement('DIV');
			div.className = 'columnContainer';
			
			div.id = 'dragableBoxes' + id + 'Column' + (no + 1);
			tabContainer.appendChild(div);
			
			// neccessary when there is no box in column
			var clearObj = document.createElement('HR');
			clearObj.style.clear = 'both';
			clearObj.style.visibility = 'hidden';
			div.appendChild(clearObj);
		}
		content.appendChild(tabContainer);
		tabContainer.style.display = 'none';	
	}
	
	if (start) return;
	
	// set active
	if (nextTabId) changeTab(nextTabId,true);
	else  changeTab(1,true);
}
function tabClick(idArray)
{
	var tabNo = idArray[2];

	if (tabNo == '0') createMyTabs(Array('neuer Reiter')); // create new tab
	else if (tabNo == activeTabNo) tabMenu(tabNo);
	else changeTab(tabNo);
}
function tabMenu(tabNo)
{
	var element = getObject('tabButton_'+tabNo);
	
	if (element.childNodes.length > 1) tabMenuDelete(element.id);
	else {
		createText(element,'Umbenennen','link_tabRename_'+tabNo,'tabMenu');
		createText(element,'Löschen','link_tabDelete_'+tabNo,'tabMenu');
	}
	//window.setTimeout('tabMenuDelete("'+element.id+'")',5000);
}
function getNextFreeTabNo()
{
	if (!getObject('tabButton_0')) return 0;	
	for (var i=1; i<10; i++)		
		if (!getObject('tabButton_' + i)) return i;
}
function getNextTabNo(withoutTabNo)
{	
	for (var i=1; i<10; i++)		
		if (i != withoutTabNo && getObject('tabButton_' + i)) return i;
}
function clearView()
{
	// delete tabs, columns, boxes
	var tabs = tabArray;
	for (var i=1; i<tabs.length; i++) tabDelete(i,true);
	
	// reset dragableBoxArray
	//boxIndex = 0; // 0 is menu but later boxIndex++
	var menu = dragableBoxesArray[0];
	dragableBoxesArray = new Array();
	dragableBoxesArray[0] = new Array();
	dragableBoxesArray[0] = menu;
}
function tabDelete(idArray,withoutChange)
{
	var tabNo = idArray[2];
	if (!tabNo) tabNo = idArray;
	
	if (!withoutChange)	changeTab(getNextTabNo(tabNo)); // change to next tab			
	
	var tabButton = getObject('tabButton_' + tabNo);
	var contentContainer = getObject('contentContainer_' + tabNo);

	tabButton.parentNode.removeChild(tabButton.nextSibling);	// delete line
	tabButton.parentNode.removeChild(tabButton);				// delete tab
	contentContainer.parentNode.removeChild(contentContainer);	// delete tab container and boxes
	tabArray = arrayDropAss(tabArray,tabButton.id,0);	
}
function tabRename(idArray)
{
	var tabNo = idArray[2];
	var button = getObject('tabButton_' + tabNo);
	showPrompt(button,'Bitte neuen Namen eingeben.','tabRenameComplete_'+tabNo);	
}
function tabRenameComplete(idArray)
{
	var tabNo = idArray[2];
	var name = getObject('promptValue').value;
	getObject('help').removeChild(getObject('prompt'));
	tabMenuDelete('tabButton_' + tabNo);
	if (!name || checkText(name, 'tabname')) {
		write('Es sind 3 bis 15 Zeichen zulässig.');
		return;
	}	
	var button = getObject('tabButton_' + tabNo);
	button.firstChild.innerHTML = name;
	tabArray[tabNo][1] = name;
}
function tabMenuDelete(id)
{
	var element = getObject(id);
	if (element) removeChildren(element,true);
}
function changeTab(tabNo,start) // change to next tab
{
	if (!start && !user) write('Achtung, bitte Anmelden bzw. Registrieren, damit Ihre Änderungen gespeichert werden.',true);
	if (!start && user && activeReq && activeReq.readyState == 4) save(); // first save 
	
	// delete everything
	if (activeTabNo && getObject('tabButton_' + activeTabNo)){
		tabMenuDelete('tabButton_' + activeTabNo);
		getObject('tabButton_' + activeTabNo).className = 'tabButton';
		getObject('contentContainer_' + activeTabNo).style.display = 'none';
		removeChildren(getObject('dragableBoxes'+activeTabNo+'Column1'),true);
		removeChildren(getObject('dragableBoxes'+activeTabNo+'Column2'),true);
		//arrayDropAss(dragableBoxesArray,'dragableBoxes'+activeTabNo+'Column1','parentObj',false,true);
		var menu = dragableBoxesArray[0];
		dragableBoxesArray = new Array();
		dragableBoxesArray[0] = new Array();
		dragableBoxesArray[0] = menu;
	}
	if (!tabNo) return;
	
	// create new elements 
	if (!user) currentUser = defaultUser; // for start
	else currentUser = user;
	activeReq = getData('createBoxes','boxes',Array('type','url','parentObj','heightOfBox','boxId','boxState','row','ad'),Array('user','parentObj'),Array(currentUser,'dragableBoxes'+tabNo+'Column%'),true,Array('parentObj','row'),'DESC');
	getObject('tabButton_' + tabNo).className = 'tabButton_active';
	getObject('contentContainer_' + tabNo).style.display = 'inline';
	activeTabNo = tabNo;
}
function createBoxes(param) // showRSS / showWidget
{
	// create boxes after data
	var j = 3;
	while (param[j]){
		
		var box = param[j].split('*');
		//array('type','url','parentObj','heightOfBox','boxId','boxState','obj');
		if (box[0] == 'rss') createRSSBox(box[1],box[2],5,10,box[4],box[5],box[7]);
		else if (box[0] == 'widget') createWidget(box[1],box[2],box[3],box[4],box[4],box[5],box[7]);
		else if (box[0] == 'website') createWidget(box[1],box[2],box[3],box[4],box[0],box[5],box[7]); // boxId is first website
		j++;
	}
}
function setTabDrop()
{
	//write('setTabDrop');
	tabDrop = this.id.split('_')[1];
}
function delTabDrop() 
{
	//write('delTabDrop');
	tabDrop = false;
}

function save()
{
	if (!user) return;

	var row;
	var siblings;
	var attributeStr = '';
	var boxes = dragableBoxesArray;
	if (boxes.length < 2){
		write('Es ist keine Sicherung erfolgt, da leere Reiter nicht zulässig sind.');
		return;
	};
	//boxes.shift(); // cause menu isn't neccessary
	var uri = file + '/?action=save';
	var post = 'modul=saveAnswer';
	post += '&user=' + user;
	post += '&length=' + boxes.length;
	
	// tab list
	//uri += '&tabs=' + tabArray.join(',');
	post += '&tabs=';
	for (var i=1; i<tabArray.length; i++){
		if (i != 1) post += ',';
		post += encrypeText(tabArray[i][1]);
	} 
	
	post += '&activeTabNo=' + activeTabNo;
	
	// attribute list
	//for (var attribute in boxes[1]) attributeStr += attribute + ',';
	//uri += '&attribute=' + attributeStr.slice(0,-1);
	var attribute = new Array('type','url','parentObj','heightOfBox','boxId','boxState','ad','row');
	var attributeStr = attribute.join(',');	
	post += '&attribute=' + attributeStr;

	// box list (var=)
	for (var i = 1; i < boxes.length; i++) // from 1
	{
		post += '&var' + i + '=';
		for (var j = 0; j < attribute.length; j++)
		{
			if (attribute[j] == 'row') continue;
			else if (attribute[j] == 'parentObj') post += boxes[i]['parentObj'].id + ',';
			else post += escape(boxes[i][attribute[j]] + ',');
		} 
		// right row order
		siblings = boxes[i]['parentObj'].childNodes;	
		for (var j = 0; j < siblings.length; j++) 
			if (siblings[j].id == boxes[i]['obj'].id) 
				post += j;
	}
	request(uri,post);
}
function saveAnswer(param)
{
	if (param[2] == '1') write('Sicherung erfolgreich',true);
	else write('Sicherung nicht erfolgreich');	
}
function logonValidate(idArray)
{
	if (!checkInput('logonMail','mail')) return;
	if (!checkInput('logonPassword','password')) return;
	var user = getValue('logonMail');
	var password = encrypePassword(getValue('logonPassword'));
	logonSend(user,password);
}
function logonSend(user,password,start)
{
	if (start) var uri = file + '/?action=start'; 
	else var uri = file + '/?action=logon';
	var post = 'modul=logon';
	if (getObject('withCookie').checked) post += '_'+password; // save password in cookie
	post += '&user=' + user;
	post += '&password=' + password;
	request(uri,post);
}
function logon(param,password)
{
	if (param[2] != '1') {
		write('Die Anmeldung war nicht erfolgreich.');
		deleteCookie();
		return;
	}
	
	if (param[0] != 'start'){
		user = param[3];
		write('Herzlich Willkommen. Sie sind eingeloggt unter '+param[3]+'.');
		getObject('hello').innerHTML = 'Eingeloggt unter: '+user;
		getObject('logonContainer').style.display = 'none';
		getObject('logoutContainer').style.display = 'inline';	
	}
		
	// if tabs are defined
	if (param[4]){
		clearView();
		createMyTabs(param[4].split('*')); // create tabs and columns after data -> changeTab
	} 
	
	if (param[0] == 'start') return;
	
	// yoption mail
	if (param[5]) mailLogon1(param[5].split('*'));

	// start user
	if (user == defaultUser){
		var cont = getObject('widgetContainer');
		createBreak(cont);
		createText(cont,'Als Werbung markieren&nbsp;');
		createInput(cont,'','checkbox','website_ad');
	}

	// admin	
	if (user == adminUser){		
		var cont = getObject('logoutContainer');
		createBreak(cont);
		createPopupLink(cont,'admin','Datenbank','popup_admin',browserHeight-100,browserWidth-100);
	}
			
	// cookie
	if (password) setCookie(Array('user','pass'),Array(user,password)); 
}
function logout()
{
	if (user) save(); // first save
	
	//clearView();
	//sendLogon(Array('','','start'),defaultUser,defaultPassword);
	deleteCookie();
	window.clearInterval(mailInterval);
	user = false;
	getObject('logoutContainer').style.display = 'none';
	getObject('logonContainer').style.display = 'inline';
	getObject('hello').innerHTML = '';
	write('Sie haben sich erfolgreich abgemeldet.');
}
function propLoad()
{
	createContainer(getObject('prop'),'propCont');
	getData('propCreate_propCont','user',Array('mail','password','prename','name'),Array('mail'),Array(user));
}
function propCreate(param,detail)	
{
	var parentObj = getObject(detail); 
	createBreak(parentObj);
	createText(parentObj,'E-Mail','','label');
	var email = createInput(parentObj,param[3],'text','propMail','input');
	email.readOnly = true;
	createBreak(parentObj);
	var password = descrypePassword(param[4]);
	createLabeledInput(parentObj,'Neues Passwort','propPassword','input','password');
	createLabeledInput(parentObj,'Passwort wiederholen','propPassword2','input','password');
	createText(parentObj,'Vorname','','label');
	createInput(parentObj,param[5],'text','propPrename','input');
	createBreak(parentObj);
	createText(parentObj,'Nachname','','label');
	createInput(parentObj,param[6],'text','propName','input');
	createDoubleBreak(parentObj);
	createText(parentObj,'Änderungen speichern','link_propSave','link');
	createDoubleBreak(parentObj);
	createText(parentObj,'Account löschen','display_propCont2','link');
	createDoubleBreak(parentObj);
	var cont = createContainer(parentObj,'propCont2','',true);
	createText(cont,'Account wirklich löschen','link_propAccountDelete','link');
}
function propSave()
{
	// check
	if (!checkInput('propMail','mail')) return;
	if (!checkInput('propPassword','password')) return;
	if (getObject('propPassword').value != getObject('propPassword2').value) return;
	
	var mail = getObject('propMail').value;
	var name = getObject('propName').value;
	var prename = getObject('propPrename').value;
	var password = encrypePassword(getObject('propPassword').value);	
	changeData('propAnswer','user',Array('name','prename','password'),Array(name,prename,password),Array('mail'),Array(mail));
}
function propAnswer(param)
{
	tb_remove();
	if (param[2] != '1') write('Fehler beim Ändern Ihrer Einstellungen.');
	else write('Ihre Einstellungen wurden erfolgreich geändern.');
}
function propAccountDelete()
{
	var mail = getObject('propMail').value;
	delData('propAccountDeleteAnswer','user',Array('mail'),Array(mail));
	delData('','boxes',Array('user'),Array(mail));
}
function propAccountDeleteAnswer(param)
{
	tb_remove();
	if (param[2] != '1'){
		write('Fehler beim Löschen Ihres Accounts.');
		return;
	} 
	user = false;
	logout();
	write('Ihr Account wurde gelöscht.');
}
function createReg(parentObj)
{
	createBreak(parentObj);
	createLabeledInput(parentObj,'E-Mail','regMail','input','mail');
	createLabeledInput(parentObj,'E-Mail wiederholen','regMail2','input','mail');
	createLabeledInput(parentObj,'Passwort','regPassword','input','password');
	createLabeledInput(parentObj,'Passwort wiederholen','regPassword2','input','password');
	createLabeledInput(parentObj,'Vorname','regPrename','input');
	createLabeledInput(parentObj,'Nachname','regName','input');
	createBreak(parentObj);
	createText(parentObj,'Registrierung abschließen','link_regSend','link');
	createDoubleBreak(parentObj);
	createText(parentObj,'','regError','error');
}
function regSend(checked)
{
	// check
	if (!checkInput('regMail','mail')) return;
	if (!checkInput('regPassword','password')) return;
	if (getValue('regMail') != getValue('regMail2')){ getObject('regError').innerHTML = 'Die E-Mail-Adressen sind nicht identisch.'; return; }
	if (getValue('regPassword') != getValue('regPassword2')){ getObject('regError').innerHTML = 'Die Passwörter sind nicht identisch.'; return; }
	if (checked != 'yoption'){
		var mail = getValue('regMail').split('@');
		if (mail[1] == 'yoption.de'){ mailAvailableRegform(mail[0]); return; } 
	}

	var mail = getObject('regMail').value;	
	var code = Math.round(Math.random()*1000000000000);
	var link = 'http://www.yoption.de/?var1='+mail+'&var2='+code;
	var text = 'Um Ihre Registrierung bei Yoption zu vervollst&auml;ndigen, klicken Sie bitte auf folgenden Link:<br><a href="'+link+'">'+link+'</a>';
	sendMail('regComplete_'+code,mail,text,'Registrierung',false,'regMail');
}
function regComplete(param,code)
{
	if (param[2] == '1') {
		getObject('regError').innerHTML = '>> Die E-Mail ist bereits vergeben. <<';
		getObject('regMail').className = 'input_wrong';
		return;
	}
	else if (param[2] == '2'){
		getObject('regError').innerHTML = '>> Fehler beim Abschicken der E-Mail. <<';
		return;
	} 

	var mail = getObject('regMail').value;
	var name = getObject('regName').value;
	var prename = getObject('regPrename').value;
	var password = encrypePassword(getObject('regPassword').value);	
	saveData('','user',Array('status','mail','name','prename','password'),Array(code,mail,name,prename,password));
	tb_remove();
	write('Ihnen wurde eine E-Mail an ' + getObject('regMail').value + ' gesendet.');	
}
function rightFailed(param)
{
	write('Sie haben nicht die nötigen Rechte diese Aktion durchzuführen.');
}
//function regCodeCheck()
//{
//	var value = parseInt(getObject('regCode').value);
//	if (value != regCode){
//		getObject('regCode').className = 'input_wrong';
//		return;
//	}
//	
//	// if the code is right
//	getObject('regCode').className = 'input_right';
//	getObject('regText2').innerHTML = 'Der Sicherheitscode wurde erfolgreich eingegeben.';
//	getObject('regCont2').style.display = 'inline';
//}