/*v6_02_2ad-20120209123725*/
	APP.ITEM = new function()
	{
		
	}
APP.ITEM.MAIN = new function()
{
	//
	// log clickout and redirect to the url
	//
	
	this.Redirect = function(node, url)
	{
		node.href = '#';
		window.open(url);
		return false;
	}
};
APP.ITEM.RATING = new function()
{
	//
	//
	//
	
	this.Toggle = function(key, node_link)
	{
		$('view' + key).toggle();
		
		node_link.className = (node_link.className=='active sprite_icon'?'in':'') + 'active sprite_icon';
	}
}
APP.PACKAGE_SEARCH = new function()
{
	//
	//
	//

	this.Display = function(item)
	{
		COM.HTTP.Get('/trivago_rpc.php?action=package_deals&item=' + item, {
					 "onfinish":function(resp){
					 	APP.PACKAGE_SEARCH.RpcResponse(resp);
					 }});
	}
	
	//
	//
	//
	
	this.RpcResponse = function(resp)
	{
		if (resp)
		{
			var node = $('package_search');
			node.appear();
			node.innerHTML = resp;
		}
	}
};
APP.PRICE.STRINGS = new function()
{

	//
	// private vars
	//
	
	var S = [];

	//
	//
	//
	
	this.Init = function(s)
	{
		S = s;
	}

	//
	//
	//
	
	this.Set = function(k, v)
	{
		return S[k] = v;
	}

	//
	//
	//
	
	this.Get = function(k)
	{
		return S[k] ? S[k] : k;
	}
};

APP.PRICE.ITEM = new function()
{

	//
	//
	//
	
	this.SetMinPrice = function(val)
	{
		min_price = val;
	}
	
	//
	//
	//
	
	this.SetUserLoggedIn = function()
	{
		user_logged_in = true;
	}

	//
	//
	//
	
	this.SetLastDealRed = function()
	{
		last_deal_red = true;
	}

	//
	//
	//
	
	this.SetRealItem = function(val)
	{
		alternative_item = val;
	}

	//
	//
	//

	this.SetItem = function(val)
	{
		item = val;
	}

	//
	//
	//
	
	this.SetLimit = function(val)
	{
		limit = val;
	}
	
	//
	//
	//
	
	this.SetPathName = function(val)
	{
		path_name = val;
	}
	
	//
	//
	//

	this.GetPriceRange = function()
	{
		this.LoadNodeReferences();
		APP.PRICE.STRINGS.Init({"forward4":"\u30d7\u30e9\u30f3\u8a73\u7d30 &raquo;","deals_partner":"\u30d1\u30fc\u30c8\u30ca\u30fc","type":"\u30bf\u30a4\u30d7","price_night":"\u5ba2\u5ba4\/\u6cca","not_available":"\u7d50\u679c\u304c\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002\u5f8c\u307b\u3069\u65b0\u3057\u3044\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u3066\u304f\u3060\u3055\u3044\u3002","deals_proof":"\u78ba\u8a8d","more_prices":"\u5168\u8868\u793a","no_price_given":"\u7121\u56de\u7b54","more_price_offers":"\u305d\u306e\u4ed6\u306e\u30d7\u30e9\u30f3","all_hotels_in":"$path_name \u306e\u5168\u30db\u30c6\u30eb\u8868\u793a","mg_register":"\u767b\u9332\u3059\u308b","partner_1":"hotel.info","partner_2":"Booking.com","partner_3":"Venere.com","partner_4":"HotelClub","partner_5":"Expedia","partner_6":"giata","partner_7":"skoosh","partner_8":"ebookers","partner_9":"Hotelopia","partner_10":"DHR.com","partner_11":"alpharooms","partner_12":"Hotels.com","partner_13":"InterConti","partner_14":"Accor","partner_15":"HRS","partner_16":"Best Western","partner_17":"Golden Tulip","partner_18":"Choice Hotels","partner_19":"Marriott","partner_20":"One Travel","partner_21":"eDreams","partner_22":"AsiaRooms","partner_23":"iff","partner_24":"HotelPronto","partner_25":"RatesToGo","partner_26":"Hilton","partner_27":"Quality Inn","partner_28":"LateRooms","partner_29":"AffiliateFuture","partner_30":"Reserve A Hotel Online","partner_31":"Quick Rooms","partner_32":"tiscover","partner_33":"octopustravel","partner_34":"HotelsChart","partner_35":"PlaniGo","partner_36":"ehotel","partner_37":"hotel.info","partner_38":"Ab in den Urlaub","partner_40":"opodo","partner_41":"weg.de","partner_42":"Asiativ","partner_43":"travel scout 24","partner_46":"FastBooking","partner_47":"EasyClickTravel","partner_48":"beauty24","partner_49":"escapio","partner_50":"Atrapalo","partner_51":"lastminute","partner_52":"lastminute.de","partner_53":"lastminute.de","partner_54":"priceline.com","partner_55":"hotelbook","partner_56":"opodo","partner_57":"Holidaycheck","partner_58":"tripadvisor","partner_59":"agoda","partner_60":"EasyToBook","partner_61":"hostelsclub","partner_62":"Epoque Hotels","partner_63":"Superbreak","partner_64":"hoteladvisor","partner_65":"onhotels","partner_66":"hotels.nl","partner_67":"Hotusa","partner_68":"Voyages SNCF","partner_69":"barceloviajes","partner_70":"Certified Business Hotels","partner_71":"Splendia","partner_72":"Rural Gest","partner_73":"Crowne Plaza","partner_74":"lastminute.com","partner_75":"Candlewood","partner_76":"Hostelworld","partner_77":"Holiday Inn","partner_79":"Indigo","partner_80":"Hotel-Website","partner_81":"Holiday Inn","partner_82":"otel.com","partner_83":"StayBridge","partner_84":"1800-Hotels","partner_85":"Initalia","partner_86":"TUI","partner_87":"infohostal","partner_89":"Budgetplaces","partner_91":"Hotels4u","partner_93":"Hotel-Website","partner_95":"Booking.com","partner_97":"Hotel-Website","partner_99":"Hotel-Website","partner_101":"Tui","partner_103":"Opodo","partner_105":"Logitravel","partner_107":"LTUR","partner_109":"reserveTravel","partner_111":"travelclick","partner_113":"Feratel","partner_115":"FirstAustrianHotels","partner_117":"WORLDHOTELS","partner_119":"Hotelscombined","partner_121":"Agoda.com","partner_123":"BookDirectRooms.com","partner_125":"Booking.com","partner_127":"CarlsonHotels.com","partner_129":"ChoiceHotels.com","partner_131":"EasyClickTravel","partner_133":"ebookers.com","partner_135":"Expedia","partner_137":"FastBooking.com","partner_139":"DHR.com","partner_141":"Hilton.com","partner_143":"Hotel.info","partner_145":"HotelBook.com","partner_147":"HotelClub.com","partner_149":"Hotelopia.com","partner_151":"Hotels.com","partner_153":"hotels4u","partner_155":"HotelsChart.com","partner_157":"hrs.com","partner_159":"InterContinental.com","partner_161":"lastminute.com","partner_163":"LateRooms.com","partner_165":"NeedItNow.com","partner_167":"OctopusTravel.com","partner_169":"Orbitz.com","partner_171":"Otel.com","partner_173":"Priceline.com","partner_175":"RatesToGo.com","partner_177":"ReserveTravel.com","partner_179":"RoamFree.com","partner_181":"Skoosh.com","partner_183":"Travelmate.com.au","partner_187":"Venere.com","partner_189":"EasyToBook.com","partner_191":"Travelocity.com","partner_193":"Synxis","partner_195":"StayPoland","partner_197":"NetHotels","partner_199":"skoosh","partner_201":"Octopus.com","partner_203":"Rumbo","partner_205":"getaroom.com","partner_209":"hotelreservierung.de","partner_213":"Derag Hotels","partner_215":"HotelVault","partner_217":"Clever-Hotels","partner_219":"lowcostholidays","partner_223":"Travelplanet24","partner_227":"Prestigia","partner_229":"Opodo\/Traveltainment","partner_231":"adagio","partner_233":"AllSeasons","partner_235":"CoraliaClub","partner_237":"ETAP","partner_239":"Formule1","partner_241":"HotelsBarriere","partner_243":"ciao","partner_245":"IBIS","partner_247":"Mercure","partner_249":"MGALLERY","partner_251":"Novotel","partner_253":"Orbis","partner_255":"Accor","partner_257":"Pullman","partner_259":"Sofitel","partner_261":"SuiteNovotel","partner_263":"Daydreams","partner_265":"HotelTravel","partner_267":"GetaRoom","partner_271":"Toprural","partner_273":"HotelConnect","partner_275":"Barcel\u00f3 Hoteles","partner_277":"thomascook.de","partner_279":"Olotels.com","partner_281":"M\u00f6venpick","partner_285":"Finest Hotels","partner_287":"Hotelreserv.","partner_291":"1-2-FLY.com","partner_293":"Escapio","partner_295":"blumar","partner_301":"Bookcyprus.com","partner_303":"Vivastay","partner_305":"Opodo","partner_307":"eLong.com","partner_309":"tripsta","partner_311":"Qype","partner_313":"Expedia","partner_315":"Charming Hotels & Resorts","partner_317":"Zoover","partner_319":"Lastminutetrav.","partner_321":"atrapalo","partner_323":"TUI.com","partner_325":"airtours.de","partner_327":"Booking.com","partner_331":"RatesToGo","partner_333":"Ibero Tours","partner_335":"DizzyGoat","partner_337":"Hotele.pl","partner_341":"Destinia","partner_343":"Viajes Iberia","partner_345":"VisitPrague","partner_353":"Olimar","partner_357":"Travelrepublic","partner_359":"Nozio","partner_361":"LHW","partner_365":"Unitravel","partner_367":"Fastbooking","partner_369":"Atel Hotels","partner_371":"WIHP","partner_373":"booked.net","partner_379":"Volayo","partner_381":"Booking.com","partner_383":"Atrapalo","partner_385":"Cityzenbooking","partner_387":"Cityhotels.com","partner_389":"Havas Voyages","partner_391":"HotelClub","partner_398":"NH Hotels"});
		COM.HTTP.Get('/trivago_rpc.php?item=' + item + '&action=getpricerange&'+ APP.SNAPSHOT.GetQuery(true)+'&alternative_item='+alternative_item, {
					 "onfinish":function(json_code){
			 				APP.PRICE.EvalCode("APP.PRICE.ITEM.UpdateDisplay(" + json_code + ");");
					 }});
	}

	//
	// start the item-price-search.
	// related by the serviceId we must start the searchProcess or we can load direct the data
	//

	this.Start = function(serviceId)
	{
		this.LoadNodeReferences();
		APP.PRICE.STRINGS.Init({"forward4":"\u30d7\u30e9\u30f3\u8a73\u7d30 &raquo;","deals_partner":"\u30d1\u30fc\u30c8\u30ca\u30fc","type":"\u30bf\u30a4\u30d7","price_night":"\u5ba2\u5ba4\/\u6cca","not_available":"\u7d50\u679c\u304c\u691c\u51fa\u3067\u304d\u307e\u305b\u3093\u3002\u5f8c\u307b\u3069\u65b0\u3057\u3044\u30ea\u30af\u30a8\u30b9\u30c8\u3092\u9001\u4fe1\u3057\u3066\u304f\u3060\u3055\u3044\u3002","deals_proof":"\u78ba\u8a8d","more_prices":"\u5168\u8868\u793a","no_price_given":"\u7121\u56de\u7b54","more_price_offers":"\u305d\u306e\u4ed6\u306e\u30d7\u30e9\u30f3","all_hotels_in":"$path_name \u306e\u5168\u30db\u30c6\u30eb\u8868\u793a","mg_register":"\u767b\u9332\u3059\u308b","partner_1":"hotel.info","partner_2":"Booking.com","partner_3":"Venere.com","partner_4":"HotelClub","partner_5":"Expedia","partner_6":"giata","partner_7":"skoosh","partner_8":"ebookers","partner_9":"Hotelopia","partner_10":"DHR.com","partner_11":"alpharooms","partner_12":"Hotels.com","partner_13":"InterConti","partner_14":"Accor","partner_15":"HRS","partner_16":"Best Western","partner_17":"Golden Tulip","partner_18":"Choice Hotels","partner_19":"Marriott","partner_20":"One Travel","partner_21":"eDreams","partner_22":"AsiaRooms","partner_23":"iff","partner_24":"HotelPronto","partner_25":"RatesToGo","partner_26":"Hilton","partner_27":"Quality Inn","partner_28":"LateRooms","partner_29":"AffiliateFuture","partner_30":"Reserve A Hotel Online","partner_31":"Quick Rooms","partner_32":"tiscover","partner_33":"octopustravel","partner_34":"HotelsChart","partner_35":"PlaniGo","partner_36":"ehotel","partner_37":"hotel.info","partner_38":"Ab in den Urlaub","partner_40":"opodo","partner_41":"weg.de","partner_42":"Asiativ","partner_43":"travel scout 24","partner_46":"FastBooking","partner_47":"EasyClickTravel","partner_48":"beauty24","partner_49":"escapio","partner_50":"Atrapalo","partner_51":"lastminute","partner_52":"lastminute.de","partner_53":"lastminute.de","partner_54":"priceline.com","partner_55":"hotelbook","partner_56":"opodo","partner_57":"Holidaycheck","partner_58":"tripadvisor","partner_59":"agoda","partner_60":"EasyToBook","partner_61":"hostelsclub","partner_62":"Epoque Hotels","partner_63":"Superbreak","partner_64":"hoteladvisor","partner_65":"onhotels","partner_66":"hotels.nl","partner_67":"Hotusa","partner_68":"Voyages SNCF","partner_69":"barceloviajes","partner_70":"Certified Business Hotels","partner_71":"Splendia","partner_72":"Rural Gest","partner_73":"Crowne Plaza","partner_74":"lastminute.com","partner_75":"Candlewood","partner_76":"Hostelworld","partner_77":"Holiday Inn","partner_79":"Indigo","partner_80":"Hotel-Website","partner_81":"Holiday Inn","partner_82":"otel.com","partner_83":"StayBridge","partner_84":"1800-Hotels","partner_85":"Initalia","partner_86":"TUI","partner_87":"infohostal","partner_89":"Budgetplaces","partner_91":"Hotels4u","partner_93":"Hotel-Website","partner_95":"Booking.com","partner_97":"Hotel-Website","partner_99":"Hotel-Website","partner_101":"Tui","partner_103":"Opodo","partner_105":"Logitravel","partner_107":"LTUR","partner_109":"reserveTravel","partner_111":"travelclick","partner_113":"Feratel","partner_115":"FirstAustrianHotels","partner_117":"WORLDHOTELS","partner_119":"Hotelscombined","partner_121":"Agoda.com","partner_123":"BookDirectRooms.com","partner_125":"Booking.com","partner_127":"CarlsonHotels.com","partner_129":"ChoiceHotels.com","partner_131":"EasyClickTravel","partner_133":"ebookers.com","partner_135":"Expedia","partner_137":"FastBooking.com","partner_139":"DHR.com","partner_141":"Hilton.com","partner_143":"Hotel.info","partner_145":"HotelBook.com","partner_147":"HotelClub.com","partner_149":"Hotelopia.com","partner_151":"Hotels.com","partner_153":"hotels4u","partner_155":"HotelsChart.com","partner_157":"hrs.com","partner_159":"InterContinental.com","partner_161":"lastminute.com","partner_163":"LateRooms.com","partner_165":"NeedItNow.com","partner_167":"OctopusTravel.com","partner_169":"Orbitz.com","partner_171":"Otel.com","partner_173":"Priceline.com","partner_175":"RatesToGo.com","partner_177":"ReserveTravel.com","partner_179":"RoamFree.com","partner_181":"Skoosh.com","partner_183":"Travelmate.com.au","partner_187":"Venere.com","partner_189":"EasyToBook.com","partner_191":"Travelocity.com","partner_193":"Synxis","partner_195":"StayPoland","partner_197":"NetHotels","partner_199":"skoosh","partner_201":"Octopus.com","partner_203":"Rumbo","partner_205":"getaroom.com","partner_209":"hotelreservierung.de","partner_213":"Derag Hotels","partner_215":"HotelVault","partner_217":"Clever-Hotels","partner_219":"lowcostholidays","partner_223":"Travelplanet24","partner_227":"Prestigia","partner_229":"Opodo\/Traveltainment","partner_231":"adagio","partner_233":"AllSeasons","partner_235":"CoraliaClub","partner_237":"ETAP","partner_239":"Formule1","partner_241":"HotelsBarriere","partner_243":"ciao","partner_245":"IBIS","partner_247":"Mercure","partner_249":"MGALLERY","partner_251":"Novotel","partner_253":"Orbis","partner_255":"Accor","partner_257":"Pullman","partner_259":"Sofitel","partner_261":"SuiteNovotel","partner_263":"Daydreams","partner_265":"HotelTravel","partner_267":"GetaRoom","partner_271":"Toprural","partner_273":"HotelConnect","partner_275":"Barcel\u00f3 Hoteles","partner_277":"thomascook.de","partner_279":"Olotels.com","partner_281":"M\u00f6venpick","partner_285":"Finest Hotels","partner_287":"Hotelreserv.","partner_291":"1-2-FLY.com","partner_293":"Escapio","partner_295":"blumar","partner_301":"Bookcyprus.com","partner_303":"Vivastay","partner_305":"Opodo","partner_307":"eLong.com","partner_309":"tripsta","partner_311":"Qype","partner_313":"Expedia","partner_315":"Charming Hotels & Resorts","partner_317":"Zoover","partner_319":"Lastminutetrav.","partner_321":"atrapalo","partner_323":"TUI.com","partner_325":"airtours.de","partner_327":"Booking.com","partner_331":"RatesToGo","partner_333":"Ibero Tours","partner_335":"DizzyGoat","partner_337":"Hotele.pl","partner_341":"Destinia","partner_343":"Viajes Iberia","partner_345":"VisitPrague","partner_353":"Olimar","partner_357":"Travelrepublic","partner_359":"Nozio","partner_361":"LHW","partner_365":"Unitravel","partner_367":"Fastbooking","partner_369":"Atel Hotels","partner_371":"WIHP","partner_373":"booked.net","partner_379":"Volayo","partner_381":"Booking.com","partner_383":"Atrapalo","partner_385":"Cityzenbooking","partner_387":"Cityhotels.com","partner_389":"Havas Voyages","partner_391":"HotelClub","partner_398":"NH Hotels"});

		//startsearch with php-request or must separate start the startsearch
		if (this.serviceid = serviceId)
		{
			this.Init(false);
		}
		else
		{
			COM.HTTP.Get('/trivago_rpc.php?pricerange_tracking='+this.GetIsPriceRangeTracking()+'&item=' + item + '&action=startsinglehotelservice&'+ APP.SNAPSHOT.GetQuery(true), {
					 "onfinish":function(json_code){
					 	APP.PRICE.EvalCode("APP.PRICE.ITEM.Init(" + json_code + ");");
					 }});
		}
	}
	
	//
	// display error-message
	//
	
	this.DisplayError = function(str)
	{
		if (node_hoteldealsstandby)
		{
			node_hoteldealsstandby.disappear();
		}

		if ((node_noresults) && (node_noresults.isElement()))
		{
			node_noresults.innerHTML = "<span>" + str + "</span>";
			node_noresults.appear();
		}

		this.Finish();
	}

	//
	// the first two characters from the service_id must be 'OK' or we've a wrong situation
	//

	this.Init = function(response)
	{
		if (response && response.error)
		{
			this.DisplayError(response.error);
		}
		else if(response && response.serviceId.substr(0, 2)!='OK')
		{
			this.DisplayError( APP.PRICE.STRINGS.Get('not_available') );
		}
		else
		{
			if (response)
			{
				this.serviceid = response.serviceId;
			}
			
			execution_time = new Date().getTime();
			timeout_link = window.setTimeout(function(){APP.PRICE.ITEM.DisplayItemMain();}, timeout_display_ani);
			this.FetchData();
			
			//event: window.onunload()
		}
	}

	//
	//
	//

	this.UpdateDisplay = function(response)
	{
		if (servicestatus != ajax_state_complete)
		{
			if(response.error)
			{
				if(serviceresultcount == 0)
				{
					this.DisplayError(response.error);
				}
				else
				{
					this.Finish();
				}
				return;
			}
	
			if(response.update == 1)
			{
				xml_respone = response;
			}

			servicestatus      = response.state;
			serviceresultcount = response.count;

			if((servicestatus == ajax_state_incomplete) || (servicestatus == ajax_state_complete))
			{
				if((response.count > 0 && response.update == 1) || servicestatus==ajax_state_complete)
				{
					if ($('js_item_dealform').isElement())
					{
						$('js_item_dealform').appear();
					}

					if (node_hoteldealsstandby.isElement())
					{
						node_hoteldealsstandby.disappear();
					}

					if(node_item_price_search.isElement())
					{
						node_item_price_search.appear();
					}

					if((response.count > 0) && (response.deals))
					{
						this.DisplayDealslist(response.deals, response.finished_deals, response.head, response.dealsLink);
					}
	
					if ((servicestatus==ajax_state_complete) && (response.finished_deals == 0) && (node_noresults) && (node_noresults.isElement()))
					{
						node_noresults.appear();
					}
				}

				if(servicestatus == ajax_state_complete)
	    		{
					this.Finish();
				}
			}
			else if((servicestatus == ajax_state_error) && (serviceresultcount == 0))
			{
	    		this.DisplayError( APP.PRICE.STRINGS.Get('not_available') );
	    	}
		}

		this.FetchData();
	}

	//
	//
	//

	this.FetchData = function()
	{
		servicerun++;
		if((servicerun > 30) || (servicestatus==ajax_state_complete) || ((serviceresultcount>0) && ((new Date().getTime()-execution_time)>=timeout_complete)))
		{
			this.Finish();
			return;
		}
		COM.HTTP.Get('/trivago_rpc.php?pricerange_tracking='+this.GetIsPriceRangeTracking()+'&item=' + item + '&alternative_item=' + alternative_item + '&action=getsinglehotelservice&service_id=' + this.serviceid + '&service_resultcount=' + serviceresultcount + '&min_price=' + min_price, {
					"onfinish":function(r){
						if(r)
						{
							APP.PRICE.EvalCode("APP.PRICE.ITEM.UpdateDisplay(" + r + ");");
						}
						else
						{
							APP.PRICE.EvalCode("APP.PRICE.ITEM.FetchData();");
						}
					}});
	}
	
	//
	//
	//

	this.DisplayItemMain = function()
	{
		// delete open timeout
		if(timeout_link)
		{
			window.clearTimeout(timeout_link);
		}
	}
	
	//
	//
	//

	this.Finish = function()
	{
		servicestatus=ajax_state_complete;

		if (	min_price &&
				(	(	min_price_search &&
						min_price != min_price_search	) ||
					min_price_search === false	) &&
				node_js_min_price.isElement()	)
		{
			node_js_min_price.appear();
		}

		this.DisplayItemMain();		
	}

	//
	//
	//
	
	this.getDeal = function(i, is_last_row)
	{
		var retval = '';
		var clickout = " onclick=\"APP.PRICE.ITEM.ClickoutLink('" + i.link + "',"+i.mg_request_id+","+item+",'"+i.partner+"');return false;\"";
		
		if (!user_logged_in)
		{
			retval += "<table class=\"itemcontent gradient_very_bright guest\""+clickout+">";
			clickout = '';
		}
		else
		{
			retval += "<table class=\"itemcontent\">";
		}
		
		retval+="<tr>" +
				"<td class='l'>" + 
				"<em "+clickout+">\n" + 
				"<img class=\"round_borders\" src=\"" + i.pimage + "\" alt=\"" + APP.PRICE.STRINGS.Get('partner_' + i.partner) + "\" title=\"" + APP.PRICE.STRINGS.Get('partner_' + i.partner) + "\" />\n" +
				"</em>\n" +
				"</td>" +
				"<td class=\"d\">" +
				"<div><div>" + i.desc + "</div></div>" + 
				"</td><td class='p'>";

		if(i.price && i.price_plain)
		{
			(min_price_search) || (min_price_search = i.price_plain);
			(min_price_search < i.price_plain) || (min_price_search = i.price_plain);
			
			retval +=	"<div class=\"dealprice\" "+clickout+">" +
						"<em class=\"bigtext"+(last_deal_red&&is_last_row?' red':'')+"\">" + i.price + "</em>" +
						"</div>";
		}
		retval +=	(i.mg_request_id==0 && i.icons ? i.icons : i.teaser_desc) + 
			   		"</td><td class='r'>";

		if(i.link)
		{
			retval += "<em class=\"button button_green\" "+clickout+"><span class=\"content\">";
			if (i.mg_request_id!=0)
			{
				retval += APP.PRICE.STRINGS.Get('mg_register');
			
			}
			else
			{
				retval += APP.PRICE.STRINGS.Get(i.price ? 'forward4' : 'deals_proof');
			}
			retval += "</span></em>";
		}

		retval += "</td></tr></table>";

		return retval;
	}
	
	//
	//
	//

	this.ClickoutLink = function(link, mg_request_id, item, partner)
	{
		if (mg_request_id==0)
		{
			APP.CLICKOUT.Open(link, partner);
		}
		else
		{
			var url = '/screenform.php?&pagetype=mystery_guest_rate&item='+item+'&mg_request_id='+mg_request_id;
			COM.HTTP.Get(url, { 'onfinish':function(r) {
					APP.WIZ.Module(r, 'screenmodule mystery_guest');
					APP.InnerExec(r);
			}});
		}
	}
	
	//
	//
	//

	this.DisplayDealslist = function(deals, resultcounter, pricerange_header, deals_link)
	{
		var retval = '',
			deals_level2,
			deals_length,
			hide_loading_process,
			unique_partner = new Array(),
			displayed_deals = 0;

		if (node_alternative_pricerange.isElement())
		{
			node_alternative_pricerange.innerHTML = pricerange_header;
			node_alternative_pricerange.appear();
		}

		// display list
		retval = '';

		for (var z=0, n=deals.length; z<n; z++)
		{
			if (unique_partner[deals[z][0].partner]!=1)
			{
				if (disable_mystery_guesting && deals[z][0].partner=='mg')
				{
					continue;
				}
				if (this.GetDisplayUniquePartner())
				{
					unique_partner[deals[z][0].partner] = 1;
				}
				deals_level2 = deals[z];
				deals_length = deals_level2.length;

				var is_last_row = this.GetLimitDeals() && displayed_deals+1==this.GetLimitDeals();
			
				for (var i=0, m=deals_level2.length; i<m; i++)
				{
					if(i == 1)
					{
						retval += "<div style=\"display:none;\">";
					}
			
					retval += this.getDeal(deals_level2[i], is_last_row);
				}
			
				if(deals_length > 1)
				{
					retval += "</div>";
				}
				
				if (this.GetLimitDeals())
				{
					++displayed_deals;
				}
				if (is_last_row)
				{
					break;
				}
			}
		}

		APP.Unbubble();
		node_dealslist_content.innerHTML = retval;

		if(resultcounter==0 && servicestatus == ajax_state_complete && node_noresults && (node_noresults.isElement()))
		{
			node_noresults.appear();
		}
		
		if(node_price_search_direct_ajax.isElement())
		{
			$('price_search_direct_display').innerHTML = '';
			node_price_search_direct_ajax.appear();
		}
		
		if(hide_loading_process = ((new Date().getTime()-execution_time)>=timeout_display_ani))
		{
			this.DisplayItemMain();
		}
	}

	//
	//
	//
	
	this.LoadNodeReferences = function()
	{
		node_noresults                  = $('noresults');
		node_price_search_direct_ajax   = $('price_search_direct_ajax');
		node_dealslist_content          = $('dealslist_content');
		node_hoteldealsstandby          = $('hoteldealsstandby');
		node_js_progressbar_val         = $('js_progressbar_val');
		node_alternative_pricerange     = $('alternative_pricerange');
		node_js_min_price               = $('js_min_price');
		node_item_price_search          = $('item_price_search');
	}
	
	//
	//
	//
	
	this.GetDisplayUniquePartner = function()
	{
		return display_unique_partner;
	}

	//
	//
	//
	
	this.SetDisplayUniquePartner = function(val)
	{
		return display_unique_partner = val;
	}

	//
	//
	//
	
	this.GetLimitDeals = function()
	{
		return max_displayed_deals;
	}

	//
	//
	//
	
	this.SetLimitDeals = function(val)
	{
		return max_displayed_deals = val;
	}

	//
	//
	//
	
	this.GetIsPriceRangeTracking = function()
	{
		return is_pricerange_tracking ? 1 : 0;
	}

	//
	//
	//
	
	this.SetIsPriceRangeTracking = function(val)
	{
		return is_pricerange_tracking = val;
	}
	
	//
	//
	//
	
	this.DisableMysteryGuesting = function()
	{
		return disable_mystery_guesting = true;
	}
	
	//
	//
	//

	this.EnableFakeProgressBar = function(img_list)
	{
		if (typeof node_js_progressbar_val == 'undefined')
		{
			this.LoadNodeReferences();
		}
		
		var max=10, min=1;              
		progressbar_value += min + parseInt(Math.random() * (max - min));
		$('js_node_progressbar_ani').style.backgroundImage = 'url('+img_list[(progressbar_value%2==0?1:0)]+')';

		if (progressbar_value < 30)
		{
			node_js_progressbar_val.innerHTML = progressbar_value+'%';

			progressbar_timeout_id = window.setTimeout(function(){APP.PRICE.ITEM.EnableFakeProgressBar(img_list)}, 250);
		}
	}

    //
    //  private vars
    //
    //  Partner_Slider:  [...]
    //
	var Partner_Slider     = false,
		serviceid          = false, 
		servicerun         =  0,
		servicestatus      =  -1, // incomplete-state
		serviceresultcount =  0,
		
		xml_respone,
		
		timeout_complete   = 30000,
		timeout_display_ani=  8000,
		execution_time     =  0,
		timeout_link,
		
		node_noresults,
		node_hoteldealsstandby,
		node_price_search_direct_ajax,
		node_dealslist_content,
		node_js_progressbar_val,
		node_alternative_pricerange,
		node_item_price_search,
		
		progressbar_timeout_id = false,
		progressbar_value = 0,
		
		ajax_state_error      =  -1,
		ajax_state_incomplete =  0,
		ajax_state_complete   =  1,
		
		path_name = '',
		
		limit  = false,
		
		//configs
		display_unique_partner = false,
		max_displayed_deals    = false,
		is_pricerange_tracking = false,
		disable_mystery_guesting= false,
		min_price              = false, // always euro
		min_price_search       = false, // always euro

		user_logged_in = false,
		last_deal_red = false,
		
		alternative_item = '',
		item = '';
};


APP.RUN.Call('trivago.deals_search');
var image_container = new Array();


APP.ITEM.IMAGE_TEASER = function(parent, img_url)
{
	if($(parent).bubble)
    {
    	$(parent).bubble = false;
    }

    parent.bubble = {

      'element': div,
      'appear': function(content)
      {
        if(content)
        {
          div.lastChild.previousSibling.innerHTML = content;
        }

        if(Browser.IE6)
        {
          div.resizeTo(300, 1);
        }

        if(parent.bubble.active)
        {
          var absolute_top;
          
          if((absolute_top = parent.getAbsTop() -div.getHeight() -10) < 0)
          {
          	absolute_top = 0;
          }

          div.appear();
          div.moveTo(parent.getAbsLeft() -div.getWidth() + 30,
                     absolute_top+50);
        }

        return true;
      },
      'disappear': function()
      {
        div.disappear();
        parent.bubble.active = null;
        return true;
      },
      'explode': function()
      {
        COM.GET.Body().removeChild(parent.bubble.element);
        return !(parent.bubble = null);
      },
      'getNode': function()
      {
        return div;
      },
      'active': true
    }
   
    var div = COM.Element(['div', {'class':'SpeechBubble','style':'z-index:200;display:none;cursor:pointer;border:1px solid #cccccc;'}, [['div', {'class':'module plain','onclick':parent.bubble.disappear}]]]);
    COM.GET.Body().appendChild(div);

	// hide all
    for (var i=0; i<image_container.length; i++)
    {
    	if (image_container[i].innerHTML != parent.bubble.getNode().innerHTML)
    	{
    		image_container[i].node.disappear();
    	}
    }
    image_container.push({'node':parent.bubble.getNode()});

    OpenBubble = parent.bubble;


    div.insertBefore(COM.Element(['div',{'class':'clear_both'}, ' ']), div.firstChild);
    div.insertBefore(COM.Element(['div',{'class':'closelink','onclick': parent.bubble.disappear},'']), div.firstChild);
    div.appendChild(COM.Element(['div',{'class':'clear_both'}, ' ']));

    parent.bubble.appear('<img src="'+img_url+'" />');
     
    return parent.bubble;
}

APP.ITEM.GALLERY = new function()
{
	//
	//
	//

	var offset,
		limit,
		teaser_limit,
		item,
		count_image,
		is_init = false,
		
		node_forward,
		node_backward,
		node_list,
		node_transparency,
		node_button_forward,
		node_button_backward,
		node_teaser;

	//
	//
	//
	
	this.Init = function(pitem, pcount_image, plimit, tlimit, poffset)
	{
		offset = poffset;
		item = pitem;
		limit = plimit;
		teaser_limit = tlimit;
		count_image = pcount_image;
		
		node_forward = $('js_gallery_forward');
		node_backward = $('js_gallery_backward');
		node_list = $('js_image_list');
		node_transparency = $('js_gallery_transparency');
		node_teaser = $('js_gallery_teaser');
		node_button_backward = $('js_button_backward');
		node_button_forward = $('js_button_forward');
		
		node_transparency.setOpacity(50);
		
		is_init = true;
	}
	
	//
	//
	//

	this.PagingForward = function(plimit)
	{
		node_transparency.appear();
		
		// is init
		if (!is_init)
		{
			window.setTimeout(function(){APP.ITEM.GALLERY.PagingForward();}, 500);
			return;
		}
		
		if (offset+plimit<count_image)
		{
			offset += plimit;
			this.loadOffset(offset, true, false);
		}
		else
		{
			node_transparency.disappear();
		}
	}

	//
	//
	//

	this.PagingBackward = function(plimit)
	{
		if (offset == 0)
		{
			return false;
		}
		node_transparency.appear();
		
		// is init
		if (!is_init)
		{
			window.setTimeout(function(){APP.ITEM.GALLERY.PagingBackward();}, 500);
			return;
		}

		offset -= plimit;
		(offset<0) && (offset=0);
		this.loadOffset(offset, true, false);
	}
	
	//
	//
	//

	this.loadOffset = function(poffset, auto_focus, node)
	{
		// is init
		if (!is_init)
		{
			window.setTimeout(function(){APP.ITEM.GALLERY.loadOffset(poffset, auto_focus, node);}, 500);
			return;
		}

		if (offset-poffset >= 6 || offset-poffset <= -6)
		{
			auto_focus = true;
		}

		var gallery_limit = '';
		if (limit)
		{
			gallery_limit = '&limit=' + limit;
		}

		offset = poffset;
		COM.HTTP.Get('/trivago_rpc.php?action=item_gallery_images&item=' + item + '&offset=' + offset + gallery_limit, {
					'json':true,
					 'onfinish':function(list){
						APP.ITEM.GALLERY.DispImageList(list, auto_focus, node);
					 }});
	}
	
	//
	//
	//

	this.DispImageList = function(list, auto_focus, node)
	{
		var retval = '';

		// create big image-list		
		for (var i=0, n=list.length; i<n; i++)
		{
			retval += '<div class="image">'
					+ '<img src="' + list[i].large + '" /><br />'
					+ '<a href="' + list[i].link + '">' + list[i].label + '</a>'
					+ '<div>' + list[i].info + '</div>'
					+ '</div>';
		}
		node_list.innerHTML = retval;
		
		// create teaser image-list
		if (auto_focus)
		{
			retval = '';
			var n = list.length;
			(n>6) && (n = 6);
			for (var i=0; i<n; i++)
			{
				retval += '<div class="image' + (i==0 ? ' active' : '') + '">'
						+ '<img src="' + list[i].small + '" onclick="APP.ITEM.GALLERY.loadOffset(' + (offset+i) + ', false, this);" />'
						+ '</div>';
			}
			node_teaser.innerHTML = retval;
		}
		else
		{
			var list = $('js_gallery_teaser').getElementsByTagName('div');
			for (var i=0, n=list.length; i<n; i++)
			{
				list[i].className = 'image';
			}
			node.parentNode.className = 'image active';
		
			node_teaser.className = offset==0?'first':''
		}

		
		// display or hide the footer-buttons
		if (offset>0)
		{
			node_backward.className='backward sprite_icon';
			node_button_backward.className='sprite_icon';
		}
		else
		{
			node_backward.className='backward sprite_icon inactive';
			node_button_backward.className='sprite_icon inactive';
		}
		
		if (count_image>offset+limit)
		{
			node_forward.className='forward sprite_icon';
		}
		else
		{
			node_forward.className='forward sprite_icon inactive';
		}
		
		if (count_image>offset+teaser_limit)
		{
			node_forward.className='forward sprite_icon';
			node_button_forward.className='sprite_icon';
		}
		else
		{
			node_forward.className='forward sprite_icon inactive';
			node_button_forward.className='sprite_icon inactive';
		}

		node_transparency.disappear();
	}
};
APP.ITEM.SCROLL = new function()
{
	var oElement,
		iOffsetTop,
		iOffsetLeft,
		iGetAbsLeft,
		iHeight,
		iLimit,
		bFixed,
		aScrollPos;
		
	//
	// Get current scroll position in px
	//
	this.getScrollXY = function()
	{
	    var scrOfX = 0, scrOfY = 0;
		 
	    if( typeof( window.pageYOffset ) == 'number' ) {
	        //Netscape compliant
	        scrOfY = window.pageYOffset;
	        scrOfX = window.pageXOffset;
	    } else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	        //DOM compliant
	        scrOfY = document.body.scrollTop;
	        scrOfX = document.body.scrollLeft;
	    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	        //IE6 standards compliant mode
	        scrOfY = document.documentElement.scrollTop;
	        scrOfX = document.documentElement.scrollLeft;
	    }
	    
	    return [ scrOfX, scrOfY ];
	}

	//
	// Check if browser supports style position "fixed"
	//
	this.supportsFixed = function()
	{
	    var testDiv = document.createElement("div");  
	    testDiv.id = "testingPositionFixed";  
	    testDiv.style.position = "fixed";  
	    testDiv.style.top = "0px";  
	    testDiv.style.right = "0px";  
	    document.body.appendChild(testDiv);  
	    var offset = 1;  
	    if (typeof testDiv.offsetTop == "number"  
	        && testDiv.offsetTop != null   
	        && testDiv.offsetTop != "undefined")  
	    {  
	        offset = parseInt(testDiv.offsetTop);  
	    }  
	    if (offset == 0)  
	    {  
	        return true;  
	    }  
	  
	    return false; 
	}

	//
	// This method is called if window scrolls
	// Scrolls given element when out of visible area, until iLimit has been reached
	//
	this.scrollElement = function()
	{
		aScrollPos = this.getScrollXY();

		if(aScrollPos[1] > (iOffsetTop - 8))
		{
			if((aScrollPos[1] + iHeight) < iLimit - 8 )
			{
				if(bFixed)
				{
					oElement.setStyle('position', 'fixed');
					oElement.moveTo(iGetAbsLeft, 8);
					return true;
				}
				else
				{
					oElement.setStyle('position', 'absolute');
					oElement.moveTo(iGetAbsLeft+iOffsetLeft+15, aScrollPos[1] + 8);
					return true;
				}
			}
			else
			{
				oElement.setStyle('position', 'absolute');
				
				if(bFixed)
				{
					oElement.moveTo(iOffsetLeft, iLimit - iHeight - 8);
					return true;
				}
				else
				{
					oElement.moveTo(iGetAbsLeft+iOffsetLeft+15, iLimit - iHeight - 8);
				}		
			}
		}
		else
		{
			oElement.setStyle('position', 'static');
		}
	}

	//
	// Init offsets and links method scrollElement to window.onscroll event
	//
	// object 	oElement 	- Target element to scroll
	// integer 	iOffsetTop 	- Top offset of target element
	// integer 	iOffsetLeft - Relative left offset of target element
	// integer 	iGetAbsLeft	- Absolute left offset of target element
	// integer 	iHeight		- Height of target element
	// integer 	iLimit		- Maximum vertical scroll position
	// boolean 	bFixed		- Indicates whether browser supports stype position "fixed"
	//
	this.Init = function(e)
	{
		oElement = e,
		iOffsetTop = oElement.getTop(),
		iOffsetLeft = oElement.getLeft(),
		iGetAbsLeft = oElement.getAbsLeft(),
		iHeight = oElement.getHeight(),
		iLimit = $('module_body_footer').getAbsTop(),
		bFixed = this.supportsFixed();

		var Me = this;
		
		window.onscroll = function()
		{
			Me.scrollElement();
		}
	}
};APP.RUN.Call("trivago.item");

