
// Veraltet - Die Exposees werden nun hauptsächlich per PHP/Smarty angezeigt, hierfür ist dann display_exposee_2.js zuständig

function DisplayExposee() {
	this.object = null;
	this.map = null;
	this.active = false;
	this.imageDescHeight = 0;
}

DisplayExposee.prototype.getPhotos = function() {
	var photosDOM = this.object.elm.getElementsByTagName('photo');
	var id = this.object.elm.getAttribute('id');
	var j;
	this.images = [];
	for (j=0; j<photosDOM.length; j++) {
		var phDom = photosDOM[j];
		var field = phDom.getAttribute('field');
		var file = phDom.getAttribute('file');

		var full = '/object_img/'+id+'/'+field+'/'+file;
		var pin =  '/object_pin/'+id+'/'+field+'/'+file;
		var thumb = '/object_thumb/'+id+'/'+field+'/'+file;
		var text = getTextNode(phDom);
		this.images.push({
			full:full,
			pin:pin,
			thumb:thumb,
			text:text
		});
	}
}

DisplayExposee.prototype.show = function(xmlObj) {
	this.object = xmlObj;
	this.getPhotos();
	var that = this;
	if (this.position<0) {
		that.object_id = xmlObj.elm.getAttribute('realid');
		var detailsAjax = new Ajax('/get_object_details.php?id='+xmlObj.elm.getAttribute('id'),{
			onComplete:function(){
				that.object.elmAddress = this.response.xml;
				that.address = that.getAddress();
				that.display();
			}
		});
		detailsAjax.request();
	} else {
		var realId = xmlObj.elm.getAttribute('realid');
		ajax.useXML = true;
		ajax.get('/get_objects.php?id='+realId ,function(xml) {
			var objects_tmp = xml.getElementsByTagName("object");
			if (objects_tmp==null || objects_tmp.length==0) {
				location.href="/sorry";
			} else {
				var newObj = that.doObj.getBasicAttributes(objects_tmp[0]);
				that.object = newObj;
				xmlObj = newObj;
				var detailsAjax = new Ajax('/get_object_details.php?id='+xmlObj.elm.getAttribute('id'),{
					onComplete:function(){
						that.object.elmAddress = this.response.xml;
						that.address = that.getAddress();
						that.display();
					}
				});
				detailsAjax.request();
			}
		});


	}
}

DisplayExposee.prototype.display = function() {
	var elms = ['exposeeNavi','exposeePage'];

	var divMainframe = $('mainframe');
	this.active = true;

	// vorher aufräumen
	elms.each(function(elm){
		if ($(elm)!=null) $(elm).remove();
	});

	var cString = Cookie.get("objlist");
	if (cString) {
		var list = cString.split(",");
		this.position = Number(list.shift());
		this.objectList = list;
	} else {
		this.position = 0;
		this.objectList = [];
	}

	var divENavi = document.createElement('div');
	var divEPage = document.createElement('div');

	divENavi.setAttribute('id','exposeeNavi');
	divEPage.setAttribute('id','exposeePage');

	//if (this.position>=0) {
	divENavi.innerHTML = this.getNavi();
	//}

	divEPage.innerHTML = this.getPageHTML();

	divMainframe.appendChild(divENavi);
	divMainframe.appendChild(divEPage);

	this.map = new GMap2($('exposeeMap'));
	this.map.setCenter(this.object.location,15);
	var marker = new QuestimMarker(this.object.location, []);
	this.map.addOverlay(marker);
	if (this.images.length>0)	{
		this.addImageDescSlider();
	}

}

DisplayExposee.prototype.addImageDescSlider = function() {

	if ($('imageDesc')) {
		this.imageDescHeight = $('imageDesc').getSize().size.y;
	}
	var that = this;

	$('imageBig').addEvent('mouseenter',function() {
		if ($('imageDesc')) {
			$('imageDesc').setStyles({height:0, visibility:'visible'});
			if (that.imageSlideFx!=null) that.imageSlideFx.stop();
			that.imageSlideFx = new Fx.Style('imageDesc', 'height', {duration:300});
			that.imageSlideFx.start(that.imageDescHeight);
		}
	});
	$('imageBig').addEvent('mouseleave',function() {
		//that.imageSlideFX = new Fx.Style('imageDesc', 'height', {duration:300});
		//that.imageSlideFX.start(0);
		if ($('imageDesc')) {
			if (that.imageSlideFx!=null) that.imageSlideFx.stop();
			that.imageSlideFx = new Fx.Style('imageDesc', 'height', {duration:300});
			that.imageSlideFx.start(0);
		}
	});
}

DisplayExposee.prototype.getAddress = function() {
	var tags = ['land', 'ort', 'plz', 'strasse'];
	var elmObject = this.object.elmAddress.getElementsByTagName('object')[0];
	var elmObjectAddress = elmObject.getElementsByTagName('address')[0];
	var result = {};
	tags.each(function(tag){
		var subElm = elmObjectAddress.getElementsByTagName(tag)[0];
		var value = getTextNode(subElm);
		if (tag=="land") value = getText('country_matrix',value.toLowerCase(),value);
		result[tag] = value;
	});
	return result;
}

DisplayExposee.prototype.getPageHTML = function() {
	var html="";

	html += this.getDetails();

	return html;
}

DisplayExposee.prototype.getDetails = function() {
	var imageUrl;
	var imageText;
	if (this.images.length>0) {
		imageUrl = this.images[0].full;
		imageText = this.images[0].text;
	}
	var title = getTagContent(this.object.elm,'title');
	var description = getTagContent(this.object.elm,'description');
	var id = createQID(this.object.elmAddress.getElementsByTagName('object')[0].getAttribute("id"));
	//location.href = "#"+id;

	// '<div class="qid">Questim-ID: '+id+'</div>'+

	var html =
		this.getRight()+
		'<div class="bg"><div class="ol"><div class="or"><div class="ur"><div class="ul">'+
			'<div style="position:relative;"><div class="qid">'+
				'<table><tr><td class="ergebnisse">Questim-ID: </td><td class="num">'+id+'</td></tr></table>'+
			'</div><div class="exposeelink">Link zu diesem Exposé: questim.com/'+id+'</div></div>'+
			'<div class="address">'+this.address.land+', '+this.address.plz+' '+this.address.ort+', '+this.address.strasse+'</div>'+
				'<div class="title">'+title+'</div>';
	if (this.images.length>0) {
		html +=
			'<div>'+
				'<div class="bigImageBorder"><div class="inside" id="imageBig"><img src="'+imageUrl+'" border="0" alt="" />';
		if (imageText!="") {
			html += '<div id="imageDesc"><div class="inner">'+imageText+'</div></div><div class="descBtn"><img src="/img/Bt_ImageDesc.png"/></div>';
		}
		html += '</div></div>'+
				this.getImageBox()+'<br clear="all"/>'+
			'</div>';
	}
	html +=
		'<br clear="all"/></div></div></div></div></div><br/>'+
		'<table class="infotable"><tr>'+
			'<th class="infotable"><div class="beschreibung">Beschreibung</div></th>'+
			'<th class="infotable"><div class="datenblatt">Datenblatt</div></th>'+
			'<th class="infotable"><div class="anbieter">Anbieter</div></th>'+
		'</tr></table>'+
		'<div class="bg"><div class="ol"><div class="or"><div class="ur"><div class="ul">'+
			'<table class="infotable"><tr>'+
				'<td class="infotable"><div class="beschreibung">'+description+'</div></td>'+
				'<td class="infotable"><div class="datenblatt">'+this.getFeatures()+this.getMapBox()+'</div></td>'+
				'<td class="infotable"><div class="anbieter">'+this.getUserInfo()+'</div></td>'+
			'</tr></table>'+
		'<br clear="all"/></div></div></div></div></div>'+
		'<div class="pageFooter">'+this.footerContent+'</div>';

	return html;
}

DisplayExposee.prototype.getFeatures = function() {
	var html = '<table class="objectFeatures">';
	var elms = this.object.elm.getElementsByTagName('attribute');
	var i;
	var obj = this.object.elm;
	var priceLabels = {
		'rent':'Miete zzgl. NK',
		'buy':'Kaufpreis',
		'lease':'Pacht'
	};
	var values = [
		{
			label:priceLabels[obj.getAttribute('price_type')],
			value:decimalToStr(obj.getAttribute('price'))+"&nbsp;&euro;"
		},
		{
			label:'Gr&ouml;&szlig;e',
			value:decimalToStr(obj.getAttribute('size'))+"&nbsp;m&sup2;"
		},
		{
			label:'Zimmer',
			value:decimalToStr(obj.getAttribute('rooms'),1)
		}
	];
	for (i=0; i<elms.length; i++) {
		var elm = elms[i];
		var type = elm.getAttribute('type');
		var unit = elm.getAttribute('unit');
		var label = elm.getAttribute('label');
		var datatype = elm.getAttribute('datatype');
		var id = elm.getAttribute('id');

		if (type=="price" || type=="size" || type=="rooms") continue; // "alte" Attribute ausschließen

		if (datatype=='price') unit = "&euro;";
		if (datatype=='area') unit = "m&sup2;";

		var value = getTextNode(elm);
		if (type=='extra') value = (value) ? "Ja" : "Nein";
		if (datatype=='freeafter') {
			if (value=="_atonce_") value = getText('advertise','pd_freeafter_atonce'); // !replaceme
			else if (value=="_byarrangement_") value = getText('advertise','pd_freeafter_byarrangement'); // !replaceme
			else if (value=="") value = "";//getText('advertise','pd_freeafter_none'); // !replaceme
		} else if (datatype=='provision') {
			var parts = value.split("|");
			var v_type = parts[1];
			var trans = {
				'_mm_':getText('advertise','pd_provision_mm'),
				'_percent_':getText('advertise','pd_provision_percent'),
				'_nkm_':getText('advertise','pd_provision_nkm'),
				'_eur_':getText('advertise','pd_provision_eur')
			};
			value = decimalNr(parts[0],1)+" "+trans[v_type];
		}
		values.push({label:label, value:value+"&nbsp;"+unit});
	}

	values.each(function(item,i) {
		html +=
			'<tr'+((i%2==0) ? ' class="odd"' : '')+'>'+
				'<td class="feature">'+item.label+':</td>'+
				'<td class="value">'+item.value+'</td>'+
			'</tr>';
	});

	html += '</table>';
	return html;
}

DisplayExposee.prototype.getUserInfo = function() {
	var info_tokens = 'vorname|name|firma|sex|strasse|ort|plz|fon|fax|mobil|logo_image';
	var infos = {};
	var elmAnbieter = this.object.elmAddress.getElementsByTagName('anbieter')[0];
	var elmAnbieterAddress = elmAnbieter.getElementsByTagName('address')[0];
	var anbieterId = elmAnbieter.getAttribute('id');
	info_tokens.split("|").each(function(token){
		var elm = elmAnbieterAddress.getElementsByTagName(token)[0];
		infos[token] = getTextNode(elm);
	});
	var html =
		'<img src="/uploaded_images/logo_image/'+infos.logo_image+'.jpg" alt="Firmenlogo" /><br/>'+
		'<h2>'+infos.firma+'</h2>'+
		'<h3>'+((infos.sex=='w') ? 'Frau' : 'Herr')+' '+infos.vorname+' '+infos.name+'</h3>'+
		'<p>'+infos.strasse+'<br/>'+infos.plz+' '+infos.ort+'</p>';
	if (infos.fon!="")
		html += '<p class="ex_phoneintro">Telefon:</p><p class="ex_phonenumber">'+infos.fon+'</p>';
	if (infos.mobil!="")
		html += '<p><b>Mobil:</b><h2 class="nomargin nopadding">'+infos.mobil+'</h2></p>';
	if (infos.fax!="")
		html += '<p><b>Fax:</b><h2 class="nomargin nopadding">'+infos.fax+'</h2></p>';

	html += '<p><a href="javascript:popup(\'anbieteragbs/'+anbieterId+'\',\'info\');">Impressum des Anbieters</a></p>';

	html += "<h2><br/>Kontaktformular</h2>"+
		'<div id="kontaktformholder"><form name="kontaktform" id="kontaktform" action="/kontaktform.php" method="POST" onSubmit="return doObj.exposee.sendKontaktFormular(this);"><table class="forms" style="width:290px;">'+
		'<input type="hidden" name="anbieterid" value="'+anbieterId+'"/>'+
		'<input type="hidden" name="objectid" value="'+createQID(Number(this.object_id))+'"/>'+
		'<tr id="kfTitle"><td class="ltd2">Anrede:</td>'+
		'<td class="rtd"><select name="title" style="width:100%;">'+
			'<option value="">Bitte wählen</option>'+
			'<option value="f">Frau</option>'+
			'<option value="m">Herr</option>'+
		'</select></td></tr>'+
		'<tr id="kfSurname"><td class="ltd2">Nachname:</td><td class="rtd"><input type="text" name="surname"></td></tr>'+
		'<tr id="kfEmail"><td class="ltd2">E-Mail:</td><td class="rtd"><input type="text" name="email"></td></tr>'+
		'<tr id="kfPhone"><td class="ltd2">Telefon:</td><td class="rtd"><input type="text" name="phone"></td></tr>'+
		'<tr id="kfMessage"><td class="ltd2">Anmerkungen:</td><td class="rtd"><textarea name="message" cols="8" style="width:100%; height:100px;"></textarea></td></tr>'+
		'<tr><td colspan="2" style="text-align:right;"><br/><input type="submit" value="Abschicken"></td></tr>'+
		'</table></form></div>';

	return html;
}

DisplayExposee.prototype.checkEmail = function(email) {
	var usr = "([a-zA-Z0-9][a-zA-Z0-9_.-]*|\"([^\\\\\x80-\xff\015\012\"]|\\\\[^\x80-\xff])+\")";
	var domain = "([a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*[a-zA-Z0-9][a-zA-Z0-9._-]*\\.[a-zA-Z]{2,5}";
	var regex = "^" +usr + "\@" + domain + "$";
	var rgx = new RegExp(regex);
	if (rgx.exec(email))
		return true;
	return false;
}

DisplayExposee.prototype.showSentFormular = function() {
	var select = $E('select','kontaktformholder');
	var inputs = $ES('input[type=text]','kontaktformholder');
	var textarea = $E('textarea','kontaktformholder');
	var abschicken = $E('input[type=submit]','kontaktformholder');
	abschicken.parentNode.innerHTML = "Ihre Anfrage wurde abgeschickt.";
	select.parentNode.innerHTML = deHTML(select.options[select.selectedIndex].text);
	inputs.each(function(elm){
		elm.parentNode.innerHTML = deHTML(elm.value);
	});
	textarea.parentNode.innerHTML = deHTML(textarea.value);
}

DisplayExposee.prototype.sendKontaktFormular = function(form) {

	var errors = [];
	if (form.title.selectedIndex>0) {
		$('kfTitle').removeClass('error');
	} else {
		$('kfTitle').addClass('error');
		errors.push("Bitte eine Anrede auswählen");
	}
	if (form.surname.value.trim() != "") {
		$('kfSurname').removeClass('error');
	} else {
		$('kfSurname').addClass('error');
		errors.push("Bitte einen Nachnamen angeben");
	}
	if (form.phone.value.trim() != "") {
		$('kfPhone').removeClass('error');
	} else {
		$('kfPhone').addClass('error');
		errors.push("Bitte eine Telefonnummer angeben");
	}
	if (form.message.value.trim() != "") {
		$('kfMessage').removeClass('error');
	} else {
		$('kfMessage').addClass('error');
		errors.push("Bitte eine Nachricht hinterlassen");
	}
	if (this.checkEmail(form.email.value)) {
		$('kfEmail').removeClass('error');
	} else {
		$('kfEmail').addClass('error');
		errors.push("Die Email-Addresse ist ungültig");
	}
	if (errors.length>0) {
		alert("Das Kontaktformular enthält noch Fehler:\n"+errors.join(",\n"));
	} else {
		var that=this;
		$('kontaktform').send({
			onComplete:function() {
				that.showSentFormular();
			}
		});
	}
	return false;
}

DisplayExposee.prototype.getNavi = function() {
	var that = this;
	var html =
		'<table><tr>'+
			'<td style="width:660px;"><a href="/">&lt; zur&uuml;ck zu den Ergebnissen</a></td>'+
			'<td style="width:150px;">';

	if (this.position > 0) {
		html +=
			'<a href="javascript:doExposee.stepBy(-1);">&lt; vorheriges Objekt</a>';
	}
	html +=
			'</td><td align="right">';
	if (this.position < this.objectList.length-1) {
		html +=
			'<a href="javascript:doExposee.stepBy(1);">n&auml;chstes Objekt &gt;</a>';
	}

	html +=
		'</td>'+
		'</tr></table>';
	return html;
}

DisplayExposee.prototype.stepBy = function(inc) {
	var that=this;
	var newPos = this.position+Number(inc);
	var nextObj = this.objectList[newPos];
	/*
	this.hide(function(){
		that.show(nextObj);
		that.position+=inc;
	});
	*/
	// this.show(nextObj);
	// this.position+=inc;
	var cString = newPos+","+this.objectList.join(",");
	Cookie.set("objlist",cString);
	location.href="/"+nextObj;
}

DisplayExposee.prototype.hide = function(callBack) {
	var elms = ['exposeeNavi','exposeePage'];
	elms.each(function(elm,idx) {
		if ($(elm)) $(elm).setStyle('visibility','hidden');
	});
	callBack();
}

DisplayExposee.prototype.clear = function(callBack) {
	var that = this;
	var elms = ['exposeeNavi','exposeePage'];
	elms.each(function(elm,idx) {
		if ($(elm)) $(elm).remove();
	});
	callBack();
}

DisplayExposee.prototype.showImage = function(imgNr) {
	var that = this;
	if ($chk(this.blendFxIn)) {
		this.blendFxIn.stop();
	}
	if ($chk(this.blendFxOut)) {
		this.blendFxOut.stop();
	}
	this.blendFxOut = new Fx.Style($('imageBig'),'opacity',{duration:100,
		onComplete:function() {
			var imgLoader = new Asset.image(that.images[imgNr].full, {
				onload: function() {
					var html = '<img src="'+that.images[imgNr].full+'" border="0" alt="" />';
					var imageText = that.images[imgNr].text;
					if (imageText=="") {
						//$('imageDesc').setStyle("visibility","hidden");
					} else {
						html += '<div id="imageDesc"><div class="inner">'+imageText+'</div></div><div class="descBtn"><img src="/img/Bt_ImageDesc.png"/></div>';
					}
					$('imageBig').innerHTML = html;
					if (imageText!="") that.imageDescHeight = $('imageDesc').getSize().size.y;
					that.blendFxIn = new Fx.Style($('imageBig'),'opacity',{duration:100});
					that.blendFxIn.start(1);
				}
			});
		}
	});
	this.blendFxOut.start(0);
}

DisplayExposee.prototype.getImageBox = function() {
	var html =
		'<div class="imageBox">';
	this.images.each(function(image,idx) {
		html +=
			'<div><img onClick="doObj.exposee.showImage('+idx+');" src="'+image.thumb+'" alt="" border="0" /></div>';
	});
	html +=
		'</div>';
	return html;
}

DisplayExposee.prototype.getMapBox = function() {
	var html =
		'<div class="mapHolder">'+
			'<div id="exposeeMap">Map</div>'+
			'<div class="address">'+this.address.land+', '+this.address.plz+' '+this.address.ort+', '+this.address.strasse+'</div>'+
		'</div>';
	return html;
}

DisplayExposee.prototype.getRight = function() {
	var size = decimalToStr(this.object.elm.getAttribute('size'));
	var price =  decimalToStr(this.object.elm.getAttribute('price'));
	var qm2 = (this.object.elm.getAttribute('price_per_qm')) ? '/m&sup2;' : '';
	var html =
		'<table class="objectInfos">'+
			'<thead><tr>'+
				'<th>Wohnfl&auml;che:</th>'+
				'<th>Preis:</th>'+
			'</tr></thead>'+
			'<tbody><tr>'+
				'<td>'+size+' m&sup2;</td>'+
				'<td>'+price+' &euro;'+qm2+'</td>'+
			'</tr></tbody>'+
		'</table>';
	return html;
}

DisplayExposee.prototype.sendSearch = function() {
	return true;
}
