
function BookingComManager(containerOfResultList) {
	
	/**
	 * self wird verwendet um in prvaten methoden zu zugreifen und 
	 * auch um auf vererbte zu zu greifen!
	 */
	var self = this;
	var listContainer = containerOfResultList;
	var resultXml;
	var numberOfResults;
	
	/*this.reset = function() {
		
	}*/
	
	this.workResults = function(data, responseCode) {
		//Debug
		document.getElementById('debug').value=data;
	
		//First remove all old results
		//this.reset();
		listContainer.innerHTML = "";
		resultXml = undefined;
		numberOfResults = 0;
		
		self.fireResultsReseted();
		
		//Parse the data to xml
		resultXml = GXml.parse(data);
		
		//document.getElementById('waitMessage').style.display = 'none';
		createList();
		workResultErrors();
	}
	
	var workResultErrors = function() {
		
		var errors = resultXml.documentElement.getElementsByTagName("error");
		var errorString = "";
		if ( 0<errors.length ) {
			if ( 1<errors.length ) {
				errorString = "<ul>";
				for (i=0; i<errors.length; i++) {
					//errorString+= "<li>"+errors[i].textContent+"</li>";
					errorString+= "<li>"+GXml.value(errors[i])+"</li>";
				}
				errorString+= "</ul>";
			} else {
				errorString+= GXml.value(errors[0]);
			}
			errorString = '<div class="error">'+errorString+'</div>';
			if ( numberOfResults>0 ) {
				listContainer.innerHTML = listContainer.innerHTML + errorString;
			} else {
				listContainer.innerHTML = errorString;
			}
		}
	}
	
	var createList = function() {
		//TODO vorher parsen und in Objekt umwandeln, dann anzeigen und dann event feuern
		
		var house = resultXml.documentElement.getElementsByTagName("house");
		var adress = resultXml.documentElement.getElementsByTagName("adress");
		var info = resultXml.documentElement.getElementsByTagName("info");
		var housepictures = resultXml.documentElement.getElementsByTagName("housepictures");
		var bestprices = resultXml.documentElement.getElementsByTagName("bestprice");
		//var offers = resultXml.documentElement.getElementsByTagName("offers");
		//var ratings = resultXml.documentElement.getElementsByTagName("rating");
		
		var search = resultXml.documentElement.getElementsByTagName("search")[0];
		var arrival = '';
		var departure = '';
		if ( search!=undefined ) {
			var arrival = search.getAttribute('arrival');
			var departure = search.getAttribute('departure');
		}
		
		thumbs = new Array();
		var resultList=""; 
		
		if (house.length>0) {
		
			numberOfResults = house.length;
			
			for (var i=0; i<house.length; i++) {
				
				var houseid = house[i].getAttribute('houseid');
				
				resultList+= '<div class="result" id="house'+houseid+'" style="clear:both;">';
				
				//Now the picture
				var pics = housepictures[i].getElementsByTagName("picture");
				
				//Cache the thumbs
				for (var picI=0; picI<pics.length && picI<2; picI++) {
					var a = new Image();
					a.src = pics[picI].getAttribute('filename');
					thumbs[thumbs.length] = a;
				}
				
				if (pics.length>0) {
					var filename = pics[0].getAttribute('filename');
				} else {
					var filename = 'nopicture_thumb.jpg';
				}
				resultList+= '		<img class="resultPic" style="cursor:default" src="'+filename+'" />';
				
				//right side (price)
				//var rating = ratings[i].getAttribute('overall');
				resultList+= '	<div style="float:right; text-align:right;">';
				resultList+= '		<a class="price">'+texts['startAt']+' ' + number_format( bestprices[i].getAttribute('value'),2,',','.') + ' '+texts['euroSign']+'</a><br/>';
				/*switch(rating) {
					case 3:
						var eval = texts['positiveEval'];
						break;
					case 1:
						var eval = texts['negativeEval'];
						break;
					case 2:
					default:
						var eval = texts['neutralEval'];
				}
				for (var ri=0; ri<rating; ri++) {
					resultList+= '		<img src="'+httpPathIcons+'thumb_up.gif" class="icon" title="'+eval+'" style="cursor:pointer;" />';
				}*/
				var url = info[i].getAttribute('url');
				resultList+= '		<br/>';
				resultList+= '	</div>';
				resultList+= '	<div style="clear:right; float:right; text-align:right; margin-top:7px; margin-right:-2px;">';
				resultList+= '		<input type="button" value="'+texts['toBookingComButton']+'" onclick="redirectToBookingComStage0(\''+url+'\',\''+arrival+'\',\''+departure+'\')" class="button" />';
				resultList+= '	</div>';
				
				//Now the houseinformation
				//resultList+= '		<a href="link yu bookingCom" class="title" title="'+texts['moreInformation']+'"><img src="'+httpPathIcons+'info_icon_big.gif" class="icon" title="'+texts['moreInformation']+'"/>';
				resultList+= '		<a class="title" title="'+texts['moreInformation']+'">';
				resultList+= '		'+house[i].getAttribute('name')+'</a><br/>';
				resultList+= '		'+cities[adress[i].getAttribute('cityid')]+'<br/>';
				resultList+= '		'+texts['bookableOverBookingCom'];
				//resultList+= '		'+roomCategories[room.getAttribute('roomcat')]+'<br/>';
				
				
				//End the result
				resultList+= '<div style="clear:both"></div>';
				resultList+= '</div>';
			}
		} else {
			resultList+= '<div style="text-align:center; margin-top: 10px;">';
			resultList+= texts['noHotelResultsFound'];
			resultList+= '</div>';
		}
		if ( house.length==0 ) {
			resultList+= '	<form name="alternativesBookingCom" id="alternativesBookingCom">';
			resultList+= '		<input type="button" name="getAlternativesBookingCom" value="'+texts['alternativesBookingCom']+'" onclick="redirectToBookingCom();" class="button"  style="margin-top: 5px;"/>';
			resultList+= '	</form>';
		}
		
		resultList+= '	<form name="backToSearchForm" id="backToSearchForm">';
		resultList+= '		<input type="button" name="backToSearch" value="'+texts['backToSearch']+'" onclick="hideSearchOverviewHotel()" class="button" style="margin-top: 5px;"/>';
		resultList+= '	</form>';
	
		listContainer.innerHTML = resultList;
	}
}

BookingComManager.prototype = new ResultListenerManager();

function buildBookingComStage0Link(hotelUrl, arrival, departure) {
	//var url = 'https://secure.booking.com/book.html?aid=313481&label=imevia&stage=0';
	//url+= '&hotel_id='+hotelid;
	var url = hotelUrl + '?aid=313481&label=imevia';
	url+= '&checkin='+arrival;
	url+= '&checkout='+departure;
	
	return url;
}

function redirectToBookingComStage0(hotelUrl, arrival, departure) {
	window.open(buildBookingComStage0Link(hotelUrl, arrival, departure), '_blank');
}