var phpFile = 'index.php';
var logonFields = Array('logonMail','logonPassword');
var labels = new Object();
var hashes = new Object();
var cache = new Object();
var userObj = new Object();
var browserWidth = 1024;
var boxObj = new Object(); boxObj.leftWidth = 600; boxObj.rightWidth = 380; // sub boxes
var menuPressed;
var tab;
var colors = object('street','red','air','creme','rail','brown','water','orange','vehicle','green');
var types = Array('street','air','rail','water','vehicle');


function standard()
{
	var frame = createContainer(document.body,'site'); createBreak(document.body,5);
	browserAlign(frame,browserWidth);
	if ($.browser.msie) createIFrame(document.body,'historyFrame','hidden','text/history.html');
	createImage(frame,'loading','','img/loading.gif'); // loader
	return frame;
}
function header()
{
	var cont = standard();
	var top = createBox(cont,'headBox','',4,'','brown','brown'); 
	var img = createImage(top,'logo','link','img/logo.png'); $(img).click(function(){ $('#start_txt').trigger('click'); });
//	createContainer(top,'signBox');
	createContainer(top,'logonBox'); 
	if (userObj.id) userPanel(); else logonView();
	
	// icons	
	var box = createContainer(top,'iconBox');
	for (var i=0; i<types.length; i++) createImage(box,'','sign','img/'+types[i]+'.png','init','click',types[i]);

	createBreak(cont,2);
	return cont;
}
function init(element,type)
{	
	if (type){ $('#frameFrame').remove(); var cont = obj('site'); }
	else{ type = 'street'; var cont = header(); } 
	var color = 'creme'; //	var color = colors[type];
	window.color = color;

	// frame
	var frame = createBox(cont,'frame','frame',1,'','','brown'); 
	menu(frame,'top');

	// sign
	$('#sign').remove();
	var signBox = obj('signBox');
	createImage(signBox,'sign','','img/'+type+'.png');

	// footer
	var points = 'impressum,contact,rules,about,faq'; points = points.split(',');
	var footer = createBox(frame,'footer','',4,'','brown','brown'); 
	for (var i=0; i<points.length; i++) createLink(footer,points[i]+'_txt','link','','menuClick',points[i]);

	urlHandle(); // start from url or normal start
}
function urlHandle()
{
	var hash = hValue(); hash = hash.split('/');
	var topId = labelsId('topMenu',hash[0]); if (!topId) topId = 'start';

	// member profile
	if (hash[2]){
		var id = hash[1].split('_'); id = id[id.length-1];
		tab = labelsId('subMenu',hash[2]);
		var param = object('user',id,'id',tab);
		if (hash[3]) param.objectId = parseInt(substring(hash[3],'_'));
		send('detail',param);
	}
	else $('#topMenu #'+topId+'_txt').trigger('click');
}
function menuClick(element,data)
{	
	var html = labels.htmlSites.split(',');		

	if (isArray(data)){
		var id = data[0];
		var type = data[1];
	}
	else var id = data;

	// top menu
	if (type != 'sub'){
		$('#frame .frameFrame').remove();		
		if (inArray(id,html)) send('site',object('id',id),id); // text from html file
		else if (type == 'top') send('topData',object('id',id));
		menuPressed = id;
		history(id);
		menuOver(element);
	}
	
	// sub menu	
	else{
		$('#htmlSiteFrame').remove();	
		tab = id;
		var user = $('#detail').attr('userId');
		send('detail',object('id',tab,'user',user));
	}
}
function menuOver(element)
{
	$(element).siblings('.menuPressed').attr('class','menuEntry');
	$(element).attr('class','menuPressed menuEntry');
}
function site(answer,id)
{
	var cont = createBox(Array('footerFrame','before'),'htmlSite','frame',1,'','','brown');
	createText(cont,'html','',answer.text);
	
	if (id == 'contact') createFormular(cont,'contact');
	if (id == 'start') start(answer);
}
function start(answer)
{
	var cont = createBox(Array('htmlSiteFrame','after'),'detail','frame',1,'','brown','brown');

	// left boxes
	var fields = 'oldtimer,company,member'; fields = fields.split(',');
	var row = createContainer(cont,'left','row'); 
	for (var i=0; i<fields.length; i++){
		var field = fields[i];
		var data = answer[field]; if (!data) continue;
		var box = createBox(row,field,'textbox',2,'','white',color,boxObj.leftWidth,field);
		createSlider(box,data,5,field,'preview',110,130,'horizontal');
	};
	
	// right boxes
	var fields = 'groups,events,ads,forum'; fields = fields.split(',');
	var row = createContainer(cont,'right','row'); 
	for (var i=0; i<fields.length; i++){
		var field = fields[i];
		var data = answer[field]; if (!data) continue;
		var box = createBox(row,field,'textbox',2,'','white',color,boxObj.rightWidth,field);
		createSlider(box,data,3,field,'preview',110,130,'horizontal');
	};
}
function catalog(answer)
{
	$('#htmlSiteFrame').remove();
	var data = answer.data;
	history(false,1,data.coName+'_'+data.id);
	
	var detail = createBox(Array('footerFrame','before'),'detail','frame',1,'','brown','brown');
	info(detail,data); createBreak(detail);
	createContainer(detail,'left','row'); 
	createContainer(detail,'right','row');
		
	detailBox('left','infoShort2',data);
	detailBox('right','infoMap',data);
}
function detail(answer,param)
{
	$('#htmlSiteFrame').remove();
	
	// data handle
	if (!answer || answer.parentNode) answer = new Object(); // dom element
	$.extend(answer,param);
	var detailView = false; if (answer.index == 0 || answer.index) detailView = true;
	if (!detailView || answer.data) cache = new Object(); // detail view needs cache data or detail from other tab
	$.extend(cache,answer);	
	var user = cache.user;
	var data = cache.data; if (!data) data = user;
	tab = cache.tab;
	var index = cache.index;
//	if (!user && param.userId){ send('detailUser',object('user',param.userId),Array(cache,param)); return; } // owner info of object needed		
		
	// detail view
	if (detailView){
		data = data[index]; 
		if (cache.more) $.extend(data,cache.more);
		else{ send('detailMore',object('type',tab,'id',data.id),object('index',index)); return; }  // more info needed			
		history(false,3,data.title+'_'+data.id); // add detail to url			
	}
	else{
		var detailView = false;
		history(false,3);
	} 
	var self = false; if (window.userObj && user.id == userObj.id) self = true;

	// user is still the same -> just tab change or change from preview to detail
	if ($('#detail').attr('userId') == user.id){
		var left = objEmpty('left'); 
		var right = objEmpty('right');
	} 
	
	// build detail view of user
	else{
		var detail = createBox(Array('footerFrame','before'),'detail','frame',1,'','brown','brown');
		info(detail,user,self); 		
		var menuCont = menu(detail,'sub','member'); $(menuCont).attr('baseId',user.id);
		createBreak(detail,2);
		var left = createContainer(detail,'left','row'); 
		var right = createContainer(detail,'right','row');		
		
		// hide special tabs
		if (!self){
			$('#mailbox_txt').remove();
			$('#properties_txt').remove();
		}  
	}
	
	// add user to url
	if (user.coName) history(false,1,user.coName+'_'+user.id); 
	else history(false,1,user.name+'_'+user.id); 	

	// tab handle
	if (!tab) tab = substring($('#subMenu').children()[0].id,0,-4);;
	history(tab,2); // add tab to url	
	menuOver($('#subMenu').children('#'+tab+'_txt')[0]);
	if (detailView && window.adminBoxMenu) adminBoxMenu(obj('subMenuFrame'),tab); // admin
	if (user.status == 'company' && !obj('projects_txt')){ // special
		var link = createLink(false,'projects_txt','menuEntry','','menuClick',Array('projects','sub'));
		$('#subMenu').children('#oldtimer_txt').after(link);
		$('#subMenu').children('#ads_txt').remove();
	} 
	
	// arrows for box move
//	createImage(left,'leftArrow','arrow','img/arrow2.gif');
//	createImage(right,'rightArrow','arrow','img/arrow2.gif');	
	
	// action box
	var cont = createBox(right,'actionBox','textbox',2,'','white',color,boxObj.rightWidth,'actionBox');
	actionBox(cont,self,index);

	// preview boxes
	var detailTabs = Array('oldtimer','pics','forum','groups','ads','events','projects');
	if (!detailView && inArray(tab,detailTabs)){		
		for (var i=0; i<data.length; i++){
			var cont = createBox(Array('left','prepend'),'','textbox',2,data[i].title,'white',color,boxObj.leftWidth,'previewStrip');
			window[tab+'Preview'](cont,data[i],i);
		}
	}
	
	// detail boxes
	else{
		// left site
		var boxes = new Array();
		if (labels[tab+'_left']) boxes = labels[tab+'_left'].split(','); 
		for (var i=0; i<boxes.length; i++) detailBox('left',boxes[i],data,self);
		
		// right site
		var boxes = new Array();
		if (labels[tab+'_right']) boxes = labels[tab+'_right'].split(','); 
		for (var i=0; i<boxes.length; i++) detailBox('right',boxes[i],data,self);
	}
	
	// additional
	if (window[tab+'Additional']) window[tab+'Additional'](data,detailView);
	
//	window.scroll(0,400);
}
function detailBox(row,id,data,self,edit) // normal boxes	
{	
	// special stuff
	if (id == 'foFeedback' && !data.answer) return;
	if ($('#detail').attr('status') == 'company' && (id == 'infoShort' || id == 'infoDescr')) id += '2'; 
	else if (tab == 'projects' && id == 'veDetail') id += '2';
	else if (tab == 'ads' && id == 'veDetail') id += '3';	
//	else if ($('#detail').attr('status') == 'company' && id == 'veDetail') id += '2';
	
	// start
	var type = labels[id+'_type'];
	var parentObj = obj(row); //if (edit) parentObj = '<'+row;
	var cont = createBox(parentObj,id,'textbox',2,'','white',color,boxObj[row+'Width'],id);
	
	// slider box
	if (type && type.substr(0,2) == 'sl'){
		var name = type.substr(3);	
		var limit = 5; if (row == 'right') limit = 3;	
		if (data[name] && data[name].length) createSlider(cont,data[name],limit,name,'preview',110,130,'horizontal');
		else{ $(cont).parent().remove(); return; }		
	}
		
	// formular box (just in detail)	
	if (type && type.substr(0,2) == 'ta'){
		if (tab == 'overview') self = false; // not editable in overview	
		detailValues(cont,id,data,self,edit); 
	} 
	
	// costum box
	if (typeof window[id] == 'function') window[id](cont,id,data,self,edit,row); 	
//	$('#'+id+'_txt').mousedown(function(){ boxDrag($(cont).parent(),id,tab,row); }); // drag
	
	return cont;
}
function detailValues(parentObj,formId,values,self,newForm) // detailValues -> detailEdit -> detailSave -> detailValues
{
	if (!labels[formId+'_fields']) return;		
	var cont = createContainer(parentObj,formId,'form');
	
	// editable
	if (self){ 
		var btnCont = obj(formId+'Buttons');
		var img = createImage(btnCont,formId+'Button','editButton','img/edit.png','detailEdit','click',Array(cont,values));
		if (newForm){ $(img).trigger('click'); return; }
	} 
	
	if (formId == 'veEquip'){ veEquip(cont,values); return; } // special
		 
	// create
	var empty = true;
	var fields = labels[formId+'_fields'].split(',');
	for (var i=0; i<fields.length; i++){		
		var id = fields[i];	
		var value = values[id]; if (!value) continue;
		var type = labels[id+'_type'];
		
		if (type == 'website'){ createText(cont,id+'_txt','label'); createLink(cont,'','link',value,'link','http://'+value); continue; } 
		if (type == 'image'){ if (!values.source) createImageBox(cont,id,'big',values); continue; } // main pic for user
		if (type == 'bool' || type == 'checkbox'){ var texts = object2(labels.bool_fields); value = texts[value]; }
		if (type == 'selection2'){ var texts = object2(labels[id+'_fields']); value = texts[value]; }
		if (id == 'profile') value = value.replace(/,/g,'<br>');

		createText(cont,id+'_txt','label');
		createText(cont,'','value',value);		
		empty = false;	  
	};	
	
	// empty
	if (!self && empty) $('#'+formId+'Frame').remove();
	
	return cont;
}
function detailEdit(element,param) // to edit mode
{	
	var form = param[0];
	var formId = form.id;
	var values = param[1];
	
	var form = createFormular(Array(form,'replace'),formId,values,true);
		
	// button
	var btn = $(element);
	btn.attr('src','img/save.png');
	btn.unbind('click');
	btn.tooltip(labels.saveButton_tip);
	btn.click(function(){ 
		var param = object('modul','detailSave','box',formId,'id',values.id,'after',form);
		if (labels[formId+'_type'] == 'ta_vehicle') param.type = tab;
		if (typeof window[formId+'Save'] == 'function') param = window[formId+'Save'](param); 
		submitForm(element,param,form); 
	});
	
	// special
	if (typeof window[formId+'Addition'] == 'function') window[formId+'Addition'](form,values); 	
}
function detailSave(answer,form) // after save
{
	var formId = form.id; 	
	var data = answer.data;
	data.pic = $(form).find('.imageBox').attr('id');
	
	// if new data id for forms
	if (answer.newData) $('.boxContent .form').each(function(){ createInput(Array(this,'prepend'),'id','',data.id,'hidden'); });
	
	$('#'+formId+'Button').remove();
	detailValues(Array(form,'replace'),formId,data,true);
}
function boxDrag(box,boxId,menuId,row)
{	
	box.draggable();
	box.draggable('option','revert',true);
	
	var colNew;
	var heights = new Array();
	var prevs = new Array();
	var newSort = new Array();
	var fields = object('left',Array(),'right',Array());
	var amount;
	
	// start -> box heights
	box.bind('dragstart',function(event,info){
		
		$(this).prevAll('.textboxFrame').each(function(){ 
			var before = 0; if (heights[0]) before = heights[0];
			heights.unshift($(this).height()+before); 
			prevs.push(this);	
		});
		heights.reverse();
		amount = heights.length;
	});
	
	// moving
	box.bind('drag',function(event,info){ 
		box.css('z-index','1'); 
		
		// row
		if (row == 'left' && info.position.left > 100) $('#rightArrow').css('display','inline');
		else if (row == 'right' && info.position.left < -100) $('#leftArrow').css('display','inline'); 
		else $('.arrow').hide();
		
		// colomn
		colNew = 'false';
		var top = info.position.top; if (top < 0) top *= -1;		
		for (var i=0; i<amount; i++) if (top-50 > heights[i]) colNew = i;
		for (var i=0; i<amount; i++) if (colNew == i) $(prevs[i]).css('margin-top','50px'); else $(prevs[i]).css('margin-top','0px');	
	});	
	
	// end
	box.bind('dragstop',function(event,info){ 
		
		box.draggable('destroy');
		if (labels[menuId+'_left']) fields.left = labels[menuId+'_left'].split(','); 
		if (labels[menuId+'_right']) fields.right = labels[menuId+'_right'].split(',');
		
		if (row == 'left' && info.position.left > 100){ fields.left.remove(boxId); fields.right.push(boxId); } // left -> right
		else if (row == 'right' && info.position.left < -100){ fields.right.remove(boxId); fields.left.push(boxId); }	// right -> left	
		else if (colNew != 'false'){ // bottom -> top
			fields[row].remove(boxId);
			for (var i=0; i<fields[row].length; i++){			
				if (i == amount-colNew-1) newSort.push(boxId); // add at this pos
				newSort.push(fields[row][i]);
			} 
			fields[row] = newSort;
		} 
		else{ box.css('z-index','0'); return; } 
		
		labels[menuId+'_left'] = fields.left.join(',');
		labels[menuId+'_right'] = fields.right.join(',');
		send('labelChange',object('id',menuId+'_left','text',labels[menuId+'_left'],'id2',menuId+'_right','text2',labels[menuId+'_right']));
		send('detail',object('user',menuId),object('tab',menuId));	
	});	
}
function info(detailBox,user,self)
{
	 var text = ''; 
	
	// text
	if (user.status == 'member') text = labels.member+': '+user.prename+' '+user.name; 
	else text = labels.company_txt+': '+user.coName;	
	if (self) text += ' ('+labels.info.self+')';
	
	// build it
	var cont = createContainer(detailBox,'userInfo');
//	createImage(cont,'','','pic/'+user.pic+'_small.jpg');
	createImageBox(cont,'blanko','small',user);
	createText(cont,'','',text);
	
	// set attributes
	$(detailBox).attr('userId',user.id);
	$(detailBox).attr('userName',user.prename);
	$(detailBox).attr('status',user.status);
	if (self) $(detailBox).attr('self','true');
}
function menu(parentObj,type)
{
	var id = type+'Menu';

	// container
	if (parentObj) var cont = createBox(parentObj,type+'Menu','menu',false,'',color);
	else{ var cont = obj(id); removeChildren(cont); }
	
	// create	
	var entries = labels[id].split(',');
	for (var i=0; i<entries.length; i++) createLink(cont,entries[i]+'_txt','menuEntry','','menuClick',Array(entries[i],type));
	if (window.adminMenu) adminMenu(cont,id);	
	
	return cont;
}
function logonView(parentObj)
{
	var parentObj = obj('logonBox');
	var cont = createContainer(parentObj,'logon');
	createTextfieldLabeled(cont,'logonMail','input short',false,false,'submitForm'); createBreak(cont);
	createTextfieldLabeled(cont,'logonPassword','input short','password',false,'submitForm'); createBreak(cont);
	createLink(cont,'logonSubmit','link','','submitForm');
	createCheckbox(cont,'logonCookie','',true);	createBreak(cont);
	createLink(cont,'logonReg','link','','reg'); createBreak(cont);
	createLink(cont,'logonForget','link','','passwordForget');	
	
	if (cookieExists(logonFields)) send('logon',cookieLoad(logonFields)); // cookie logon
}
function reg(answer)
{
	if (answer.success) return;
	
	$('#filterContFrame').remove();
	var cont = createPopup('reg','',400);
	createFormular(cont,'reg');
	
	// hide fields
	var fields = Array('gender','prename','name','coName');
	for (var i=0; i<fields.length; i++){ $('#reg #'+fields[i]).hide(); $('#reg #'+fields[i]+'_txt').hide(); }
	
	// rules
	$('#terms_txt').click(function(){ $('#rules_txt').trigger('click'); });
	
	// switch view
	$('#reg #status').click(function(){
		var status = rValue(this); if (!status) return;
		if (status == 'member'){ 
			var fields = Array('gender','prename','name');
			for (var i=0; i<fields.length; i++){ $('#reg #'+fields[i]).show(); $('#reg #'+fields[i]+'_txt').show(); }
			$('#reg #coName').remove();
		}
		else{ 
			$('#reg #coName_txt').show(); $('#reg #coName').show();
			$('#reg #gender').remove(); $('#reg #prename').remove(); $('#reg #name').remove(); 
		}
		$(this).children('input').each(function(){ this.disabled = true; });
		$(this).unbind('click');
	});
}
function logon(answer)
{
	if (answer.logonCookie) cookieSave(logonFields);
	if (!answer.user){ cookieDelete(logonFields); return; } 
	userObj = answer.user;	
	$('#logon').remove();
	userPanel();
	$('#start_txt').trigger('click');
}
function userPanel()
{
	var cont = obj('logonBox');
	createImageBox(cont,'blanko','small',userObj); createBreak(cont);
	createLink(cont,'profile','link','','sendEvt',Array('detail',object('user',userObj.id))); createBreak(cont);	
	createLink(cont,'logout','link','','sendEvt','logout');

	// cool bottom panel
	if (userObj.propPanel == '0') return;
	var frame = createContainer(document.body,'userPanelFrame'); //$(frame).width(window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth);
	var panel = createContainer(frame,'userPanel');
//	var fields = labels.subMenu.split(',');
	var fields = 'info,properties,mailbox'; fields = fields.split(',');
	for (var i=0; i<fields.length; i++){
		var id = fields[i];
		var param = Array('detail',object('id',id,'user',userObj.id),object('tab',id));
		var img = createImage(panel,'','link','img/'+id+'.png','sendEvt','click',param);		
		$(img).tooltip(labels[fields[i]+'_txt']);	
	}
}
function logout(answer)
{
	cookieDelete(Array('logonMail','logonPassword'));
	document.location.href = 'http://'+location.host;
}
function faMember(cont,id,data,self,edit)
{
	faDelete(id,data[id],'member',self);
}
function faCompany(cont,id,data,self,edit)
{
	faDelete(id,data[id],'company',self);
}
function faOldtimer(cont,id,data,self,edit)
{
	faDelete(id,data[id],'oldtimer',self);
}
function faDelete(id,data,type,self)
{	
	if (tab == 'overview' || !self) return;
	for (var i=0; i<data.length; i++){
		var value = data[i];
		var img = createImage(false,'','delete','img/delete.png');
		$('#'+id+'Panel').children('#'+value.pic).append(img);
		var param = object('id',value.id,'connect',type);
		$(img).click(function(){ createDialog($(this).prev().html(),'sendEvt',Array('favDelete',param)); });
	};
}
function gaDelete()
{
	menuClick(false,Array(tab,'sub'));
}
function messages(cont,id,data,self,edit)
{
	var inbox = createButton(cont,'messagesInbox','messageSlider',Array(data.inbox,'inbox')); 
	createButton(cont,'messagesOutbox','messageSlider',Array(data.outbox,'outbox')); 
	createBreak(cont,2);
	createContainer(cont,'messageCont');
	$(inbox).trigger('click');
}
function messageSlider(element,param)
{
	var data = param[0];
	var id = param[1];
	
	var cont = objEmpty('messageCont');
	createText(cont,'','header',element.innerHTML);
	if (data) createSlider(cont,data,5,id,'message',440,405,'vertical');
}
function messageBack(element,to) // written back
{
	var id = $(element).parent().parent()[0].id.substr(7);
	var text = $(element).prev().val(); if (!text) return;
	text += '<span class="messageOld">'+$(element).prev().prev().html()+'</span>';
	send('messageSent',object('to',to,'text',text,'back',id),$(element).parent().prev());	
}
function messageOpen(element)
{
	messageClose();
	$(element).next().slideToggle('fast');
	var height = $('#messages .sliderRow').height() + $(element).next().children('.messageText').height() + 65;
	$('#messages .sliderRow').css('height',height);
}
function messageClose()
{		
	$('.messageBox2').hide('fast');
	$('#messages .sliderRow').css('height','405');	
}
function messageDelete(answer,param)
{
	if (answer.success){
		$('#message'+param+' .messageBox1').css('background-image','url(img/messageDeleted.gif)');
		$('#message'+param+' .messageBox2').remove();
	}
	else send('messageDelete',param,param.id);
}
function passwordChange(answer)
{
	if (answer.success) return;
	 
	var cont = createPopup('passwordChange');
	createTextfield(cont,'password','input','','password');
	createTextfield(cont,'password2','input','','password','second'); createBreak(cont);
	createSubmit(cont);
}
function passwordForget(answer)
{
	if (answer.success) return;
	 
	var cont = createPopup('passwordForget',labels.logonForget);
	createTextfield(cont,'mail','input','','mail'); createBreak(cont);
	createSubmit(cont);
}

// tops
function topData(answer,param) // big boxes: search and preview
{		
	var data = answer.data;
	var id = menuPressed;
	
	// filter
//	var cont = createBox('topMenuFrame','filterCont','frame',1,'','','brown'); 
//	createText(cont,'filter','header');
//	createFormular(cont,'filter',data[0],true); 
	
	// preview
	var cont = createBox(Array('topMenuFrame','after'),'preview','frame',1,'','','brown');
	if (window[id+'Top']) window[id+'Top'](cont,answer.data,param);
	else createSlider(cont,answer.data,9,id,'preview',110,130,'horizontal');
}
function eventsTop(parentObj,data)
{
	// id add to jquery ui -> noclick and table id="'+drawMonth+'_'+drawYear+'" class="ui-datepicker-calendar"
	var cont = createContainer(parentObj);
	var test = $(cont).datepicker({ 
		numberOfMonths: 3,
		noclick: true,
		onChangeMonthYear:function(){ setTimeout(function(){ eventsCalendar(data); },500); }
	});
	
	eventsCalendar(data);
	align(cont);
}
function eventsCalendar(data) 
{
	var eventCache = new Object();
	
	// go through events
	for (var i=0; i<data.length; i++) {
		
		var value = data[i];
		var date = new Date(parseInt(value.dateUnix)*1000);
		var id = value.dateUnix;
		
		var field = $('#'+date.getMonth()+'_'+date.getFullYear()).find('#'+date.getDate());		
		if (eventCache[id]) eventCache[id].push(value); // add to day
		else{
			eventCache[id] = Array(value); // new day popup
			eventPopup(field,value.date,id);
		}		
	};	
	
	function eventPopup(field,date,id)
	{
		field.css('background','none');
		field.css('text-decoration','underline');
		field.css('cursor','pointer');
		
		// write popup		
		field.click(function(){ 
			var cont = createPopup('',date);
			for (var i=0; i<eventCache[id].length; i++) {
				var value = eventCache[id][i];
				var text = value.title+' ('+value.location+')';
				var link = createLink(cont,'','link',text,'sendEvt',Array('detail',object('id','events','user',value.user,'objectId',value.id),object('tab','events'))); 
				$(link).click(popupClose);
				createBreak(cont);
			};
		});
		
		field.parent().removeAttr('onclick');
		field.removeAttr('href');
	}
}

function catalogTop(parentObj,data,searchCont)
{
	mapMultiple(parentObj,data);
	
	// search
	var cont = createContainer(parentObj,'catalogSearch');
	createText(cont,'catalogSearch_txt','header'); createBreak(cont);
	createSelectbox(cont,'profile',labels.profile_fields.split(','),'',true); createBreak(cont,2);
	createSelectbox(cont,'brand',Array('brand_cat2'),'',true); createBreak(cont,2);
	createTextfield(cont,'zip','input short','','number',true); createBreak(cont);
	createTextfield(cont,'distance','input short','','number',true); createBreak(cont); 
	createCheckbox(cont,'shop','','',true); createBreak(cont); 
	
	createBreak(cont,2);
	createSubmit(cont,'searchSubmit');
}
function catalogSearch(answer)
{
	if (answer.info) return;
	var data = answer.data;
	mapMultiple(Array('catalogMap','replace'),data,answer.centre);
}
function mapMultiple(parentObj,data,centre)
{
	var zoom = 10;	
	if (!centre){ centre = labels.country; zoom = 5; } 
//	var home = window.geo; if (!home) home = mapAddress(userObj); 
	var cont = createContainer(parentObj,'catalogMap','map');

    var options = {zoom:zoom,mapTypeId:google.maps.MapTypeId.ROADMAP,scrollwheel:false};	
	var map = new google.maps.Map(cont,options);
	var geocoder = new google.maps.Geocoder();
	for (var i=0; i<data.length; i++) mapMarker(geocoder,map,data[i]);
  	
	// center
	geocoder.geocode({'address':centre},function(result,status){ map.setCenter(result[0].geometry.location); });	
	if (local()) geocoder.geocode({'address':centre},function(result,status){ map.setCenter(result[0].geometry.location); });
}
function mapMarker(geocoder,map,data) 
{
	if (!data.coo1 || !data.coo2) return;
	
	var position = new google.maps.LatLng(data.coo1,data.coo2);	
	if (data.pic && !data.source){
		var icon = new google.maps.MarkerImage('pic/'+data.pic+'_small.jpg',new google.maps.Size(50, 50));
		var marker = new google.maps.Marker({map:map,position:position,icon:icon});
	} 
	else var marker = new google.maps.Marker({map:map,position:position});
		
	// click
	google.maps.event.addListener(marker,'click',function(){ 
		if (data.source) send('catalog',object('id',data.id)); // from catalog
		else send('detail',object('user',data.id)); // real company
	});
}
function mapAddress(data)
{
	var address = labels.country; if (data.country) address = data.country;
	if (data.zip) address = data.zip+' '+address;
	if (data.street) address = data.street+' '+address;
	return address;
}

// special detail boxes
function infoMap(cont,id,data,self,edit)
{
	if (!data.zip) $(cont).parent().remove();
	var success = false;
	
	var address = data.zip;
	if (data.street) address = data.street+' '+address;	
	if (data.country) address += ' '+data.country; else address += ' '+labels.country;
	
	if (address) success = createMap(cont,address);	
	if (!success) $(cont).parent().remove();
}
function foFeedback(cont,id,data,self,edit)
{
	createSlider(cont,data.answer,5,id,'wall',440,405,'vertical');
}
function wall(cont,id,data,self,edit)
{
	createSlider(cont,data.answer,5,id,'wall',440,405,'vertical');
}
function veEquip(cont,data)
{
	var fields = labels.veEquip_fields.split(',');
	for (var i=0; i<fields.length; i++){
		var id = fields[i];
		if (data[id] == '1') createText(cont,'','',labels[id+'_txt']+',&nbsp;');
	};
}
function picGallery(cont,id,data,self,edit,row)
{
	var pics = data.pics; if (!pics && !self){ $(cont).parent().remove(); return; } 
	createBreak(cont);
	
	// slider	
	if (pics){
		var limit = 5; if (row == 'right') limit = 3;
		createSlider(cont,pics,limit,'','pic',110,130,'horizontal'); 
	}
	
	// edit button
	if (self){
		var img = createImage(id+'Buttons',id+'Button','editButton','img/edit.png');
		$(img).click(function(){ picGalleryEdit(this,cont,data); });
	}			
}
function picGalleryEdit(btn,cont,data) // edit view
{
	$(cont).empty();
	
	if (!data || !data.pics) createUpload(cont,'imageUpload','pic');
	else{
		var pics = data.pics;		
		for (var i=0; i<pics.length; i++) {
			var box = createColorbox(cont,'pic/'+pics[i].id+'_huge.jpg');
			var imgBox = createImageBox(box,'','middle',pics[i]); 
			picButtons(cont,data,pics[i]);
			createBreak(cont);		
		};	
		createUpload(cont,'imageUpload','pic',object('id',data.id));
	}	
		
	// save and button handle
	var btn = $(btn);
	btn.attr('src','img/save.png');
	btn.unbind('click');
	btn.tooltip(labels.saveButton_tip);
	btn.click(function(){ 
		
		var param = object('master',tab,'masterId',data.id);
		
		// get pics and add to param
		var ids = new Array(); var values = new Array();
		$('.picDescr').each(function(){ ids.push(this.id); values.push(this.value); }); 
		if (ids.length){ param.picIds = ids.join(','); param.picValues = values.join(','); }

		send('picGallerySave',param);
	});
}
function picButtons(cont,data,pic)
{
	var box = createContainer(cont,'gaButtons');				
	var param = Array('picMain',object('id',pic.id,'connect',tab,'connectId',data.id));
//	createButton(box,'actPicGallery','sendEvt',param); createBreak(box);
//	createButton(box,'actPicProfile','sendEvt',Array('picMain',object('id',pic))); createBreak(box);		
	createButton(box,'actDelete','sendEvt',Array('picDelete',object('id',pic.id),box)); createBreak(box);
	createText(box,'descr_txt','label');
	createTextarea(box,pic.id,'picDescr input',pic.descr);
}
function picDelete(answer,box)
{
	$(box).prev().remove();
	$(box).remove();
}
function pic(answer)
{
	var data = answer.data;
	var gallery = answer.gallery;
	var cont = obj('picGallery');
	var imgBox = createImageBox(cont,'','middle',data); 
	picButtons(cont,data,answer);
	createBreak(cont);

	// update view
	$('#imageUpload').remove();
	createUpload(cont,'imageUpload','pic',object('id',gallery));
	if (answer.newData) $('.boxContent .form').each(function(){ createInput(Array(this,'prepend'),'id','',gallery,'hidden'); });	
}
function upload(answer)
{
	var data = answer.data;
	var form = $('#'+answer.formId+'[class=form]');
	
	// if new data id for forms
	if (answer.newData) $('.boxContent .form').each(function(){ createInput(Array(this,'prepend'),'id','',answer.id,'hidden'); });

	// renew upload box
	form.children('.uploadBox').remove();
	createImageUpload(Array(form,'prepend'),answer.formId,answer);
}
function propMain(parentObj)
{
	createButton(parentObj,'passwordChange','passwordChange');
}

// slider boxes
function wallBox(parentObj,id,value)
{
	var cont = createContainer(parentObj,'','wall');
	createImageBox(cont,'','small',value,'sendEvt','click',Array('detail',object('user',value.id)));
	createText(cont,'','date',value.stamp);
	createText(cont,'','answer',value.answer);
	createBreak(cont,2);
	createLine(cont);
	createBreak(cont);
}
function messageBox(parentObj,id,value)
{	
	var cont = createContainer(parentObj,'message'+value.message,'messageContainer');
	createImageBox(cont,'','small',value);
	var box1 = createContainer(cont,'','messageBox1',false,'messageOpen','click');
	var img = createImage(box1,'','messageDelete','img/delete.png');
	$(img).click(function(){ createDialog(value.subject,'messageDelete',object('id',value.message,'type',value.type)); });
	createText(box1,'','messageName',value.subject);	
	createText(box1,'','messageDate',value.stamp);	
	var box2 = createContainer(cont,'','messageBox2');
	createText(box2,'','messageText',value.text);
	createTextarea(box2,'','messagesAnswer');
	createLink(box2,'messagesSubmit','messagesSubmit link','','messageBack',value.id);
	createBreak(cont);
		
	if (value.back == '1') $(box1).css('background-image','url(img/messageAnswered.gif)'); 
}
function picBox(parentObj,id,value)
{
	var cont = createColorbox(parentObj,'pic/'+value.id+'_huge.jpg',value.descr);
	createImageBox(cont,'','middle',value);
}
function previewBox(parentObj,id,value)
{
	if (value.user) var param = object('id',id,'user',value.user,'objectId',value.id);
	else var param = object('user',value.id);
	
	var img = createImageBox(parentObj,id,'middle',value,'sendEvt','click',Array('detail',param));	
	
	// delete stuff
	if (tab == 'groups' && (id == 'events' || id == 'pics')){
		if (value.user == userObj.id){
			var img = createImage(img,'','delete','img/delete.png');
			var param = object('master',tab,'masterId',cache.data[cache.index].id,'detail',id,'detailId',value.id);
			$(img).click(function(){ createDialog($(this).prev().html(),'sendEvt',Array('connectDelete',param)); });	
		} 
	}
}

// preview boxes
function eventsPreview(parentObj,data,index)
{
	var cont = createContainer(parentObj,'','previewBox',false,'detail','click',object('tab','events','index',index,'userId',data.user));
	createImageBox(cont,'','big',data);
	var right = createContainer(cont);
	createText(right,'','',data.title); createBreak(right);
	var start = data.date; if (data.time) start += ' ('+data.time+')';
	createText(right,'','',start); createBreak(right);
	var end = data.dateEnd; if (data.timeEnd) end += ' ('+data.timeEnd+')';
	if (end) createText(right,'','',end); createBreak(right);
	createText(right,'','',data.location); createBreak(right);
	createText(right,'','',labels.evParty_txt+': '+data.party);
}
function adsPreview(parentObj,data,index){ oldtimerPreview(parentObj,data,index); }
function projectsPreview(parentObj,data,index){ oldtimerPreview(parentObj,data,index); }
function oldtimerPreview(parentObj,data,index)
{
	var cont = createContainer(parentObj,'','previewBox',false,'detail','click',object('tab',tab,'index',index,'userId',data.user));
	createImageBox(cont,'','big',data);
	var right = createContainer(cont);
	createText(right,'','',data.title); createBreak(right);
	createText(right,'','',data.veOld);
}
function picsPreview(parentObj,data,index)
{
	var cont = createContainer(parentObj,'','previewBox',false,'detail','click',object('tab','pics','index',index,'userId',data.user));
	createImageBox(cont,'','big',data);
	var right = createContainer(cont);
	createText(right,'','',data.title); createBreak(right);
	createText(right,'','',data.descr); createBreak(right);
//	createText(right,'','',labels.picsAmount+' '+data.pics.length); createBreak(right);
	createText(right,'','',labels.visitors+': '+data.counter);
}
function groupsPreview(parentObj,data,index)
{
	var cont = createContainer(parentObj,'','previewBox',false,'detail','click',object('tab','groups','index',index,'userId',data.user));
	createImageBox(cont,'','big',data);
	var right = createContainer(cont);
	createText(right,'','',data.title); createBreak(right);
	createText(right,'','',labels.created+': '+data.stamp); createBreak(right);
	createText(right,'','',labels.grParty_txt+': '+data.party); createBreak(right);
	createText(right,'','',labels.grPics_txt+': '+data.pics); createBreak(right);
	createText(right,'','',labels.grEvents_txt+': '+data.events);
}
function forumPreview(parentObj,data,index)
{
	var cont = createContainer(parentObj,'','previewBox',false,'detail','click',object('tab','forum','index',index,'userId',data.user));
	createImageBox(cont,'','big',cache.user);
	var right = createContainer(cont);
	createText(right,'','',data.title); createBreak(right);
	createText(right,'','',data.question); createBreak(right);
	createText(right,'','',labels.visitors+' '+data.counter);
}

// additionals
function groupsAdditional(data,detailView)
{
	if (detailView) return;
	if (data.length) detailBox('right','grPartySelf',cache);
	else detailBox('left','grPartySelf',cache);
}
function veDetail3Addition(cont,data)
{
	$('#adType').change(function partToggle(element){
		if (sValue(this) == 'Teile'){
			$('#adPart_txt').show();
			$('#adPart').show();
			$('#adPart2_txt').show();
			$('#adPart2').show();
			$('#veEquipFrame').hide();
		} 
		else{
			$('#adPart_txt').hide();
			$('#adPart').hide();
			$('#adPart2_txt').hide();
			$('#adPart2').hide();
			$('#veEquipFrame').show();
		}
	});
	$('#adType').trigger('change');	
}

// actions
function actionBox(cont,self,index)
{
	var detail = false; if (index || index == 0){ detail = true; window.index = index; } 
	var detailTabs = Array('oldtimer','pics','groups','events','forum','ads','projects');
		
	if (detail){
		if (cache.data[index+1]) createImage(cont,tab+'Prev','link','img/prev.png','actIndex','click',index+1);
		if (cache.data[index-1]) createImage(cont,tab+'Next','link','img/next.png','actIndex','click',index-1);
		createBreak(cont);
	}
	if (tab != 'mailbox' && tab != 'properties') createButton(cont,'actSuggest','actSuggest',index);
	if (!userObj.id) return; // not logged in
		
	// detail view
	if (detail){
		var data = cache.data[index];
		if (tab == 'forum') createButton(cont,'actAnswer','actAnswer',index);
		if (tab == 'events' || tab == 'groups'){
			if (data.owner || data.partySelf) createButton(cont,'actWall','actWall',index);
			if (data.partySelf) createButton(cont,'actPartyDelete','actPartyDelete',index);				
			else if (!data.owner) createButton(cont,'actParty','actParty',index);
		} 
		if (tab == 'groups' && data.partySelf){
			createButton(cont,'actEvent','actConnect','events'); 
//			createButton(cont,'actGallery','actConnect','pics'); 
		} 
	} 	
	// own profile
	if (self){		
		if (detail){
			createButton(cont,'actDelete','actDelete',index);
//			if (tab == 'oldtimer' || tab == 'ads') createButton(cont,'actGallery','actConnect','pics'); 
		} 
		else if (inArray(tab,detailTabs)) createButton(cont,'actNew','actNew',index);
	}
	// visitor
	else{
		createButton(cont,'actMessage','actMessage',index);	
		var id = $('#detail').attr('userId');
		if (!inArray(id,userObj[cache.user.status])) createButton(cont,'actFriend','actFriend',index);
		if (detail && !inArray(id,userObj[tab])) createButton(cont,'actRemember','actRemember',index);
	}
}
function actNew(element)
{
//	var left = new Array(); if (labels[tab+'_left']) left = labels[tab+'_left'].split(',');
//	var right = new Array(); if (labels[tab+'_right']) right = labels[tab+'_right'].split(','); 
//	var boxes = $.merge(right,left);
	objEmpty('left');
	var boxes = labels[tab+'_left'].split(',');
	for (var i=0; i<boxes.length; i++){
		var type = labels[boxes[i]+'_type'];
		if (!type|| type.substr(0,2) != 'ta') continue; 
		detailBox('left',boxes[i],false,true,true);
	} 
}
function actConnect(element,type)
{
	var id = cache.data[index].id;
	send('detailPopup',object('master',tab,'masterId',id,'detail',type),object('id',id,'title',$(element).html(),'field',type));
}
function detailPopup(answer,param)
{
	var cont = createPopup('connect',param.title);
	createInput(cont,'master','',tab,'hidden');
	createInput(cont,'masterId','',param.id,'hidden');
	createInput(cont,'detail','',param.field,'hidden');
	createSelectbox2(cont,'detailId',answer.data); createBreak(cont,2);
	createSubmit(cont);
}
function actDelete(element,index)
{
	var id = cache.data[index].id;
	var title = cache.data[index].title;
	createDialog(title,'sendEvt',Array('detailDelete',object('id',id,'type',tab)));
}
function actParty(element,index)
{
	var id = cache.data[index].id;
	send('connect',object('master',tab,'masterId',id),index);
}
function actPartyDelete(element,index)
{
	var id = cache.data[index].id;
	send('connectDelete',object('master',tab,'masterId',id),index);	
}
function actAnswer(element,index)
{
	var id = cache.data[index].id;
	var cont = createPopup('detailAnswer',labels.actAnswer);	
	createInput(cont,'refer','',id,'hidden');
	createInput(cont,'type','',tab,'hidden');
	createTextarea(cont,'text','input'); createBreak(cont,2);
	createSubmit(cont);
}
function actWall(element,index)
{
	actAnswer(element,index)
}
function actRemember(element,index)
{
	var id = cache.data[index].id; 
	var connect = tab;
	
	var param = object('connect',connect,'id',id);
	send('favAdd',param,param);
	
	$('#actRemember').fadeOut('slow');
}
function actFriend(element,index)
{
	var id = cache.user.id; 
	var connect = $('#detail').attr('status');
	
	var param = object('connect',connect,'id',id);
	send('favAdd',param,param);
	
	$('#actFriend').fadeOut('slow');
}
function favAdd(answer,param)
{
	var type = param.connect;
	if (userObj[type]) userObj[type].push(param.id);
	else userObj[type] = Array(param.id);
}
function actMessage(element,index)
{
	var user = cache.user.id; 
	
	var cont = createPopup('messageBox','',400,350);
	var subject = createTextfield(cont,'subject','','','',true); createBreak(cont);
	var message = createTextarea(cont,'messageInput'); createBreak(cont,2);
	var btn = createButton(cont,'submit');
	$(btn).click(function(){ 
		send('messageSent',object('to',user,'text',$(message).val(),'subject',$(subject).val())); 
		popupClose();
	});
}
function actSuggest()
{
	var cont = createPopup('suggest',labels.actSuggest);
	createTextfield(cont,'mailTo','','','mail',true);
	
	// message field
	createText(cont,'message_txt','label'); createBreak(cont);
	var field = createContainer(cont,'message','value input'); field.contentEditable = 'true';
	field.innerHTML = labels.suggest_txt;  
	$(field).children('a').attr('href',location);
	
	createBreak(cont,2);
	createSubmit(cont);
}
function actIndex(element,index)
{
	var id = cache.data[index].id;
	send('detailMore',object('id',id,'type',tab),object('index',index));
}
function contact()
{
	$('#contact_txt').trigger('click');
}




