var ErmigoPackage = new Class({
	initialize: function(selected_category,
						 selected_package,
						 selected_season,
						 hotel_id,
						 url,
						 reservation_path,
						 language,
						 texts) {
		this._categorySelector = $('dom__ermigoPackage__categorySelector');
		this._packageSelector  = $('dom__ermigoPackage__packageSelector');
		this._seasonSelector   = $('dom__ermigoPackage__seasonSelector');
		
		this._selectedCategory = ($type(selected_category) == 'number') ? selected_category : 0;
		this._selectedPackage  = ($type(selected_package) == 'number') ? selected_package : 0;
		this._selectedSeason   = ($type(selected_season) == 'number') ? selected_season : 0;
		this._hotelId		   = ($type(hotel_id) == 'number') ? hotel_id : 0;
		this._url		   	   = ($type(url) == 'string') ? url : '';
		this._reservationPath  = ($type(reservation_path) == 'string') ? reservation_path : '';
		this._language		   = ($type(language) == 'string') ? language : '';
		this._texts			   = texts;
		this._positives		   = {
			'de': 'zur Einzelbenützung',
			'en': 'for single occupancy',
			'fr': 'en occupation simple', 
			'es': 'a uso individual'
		};
		
		this._addCategorySelectorEvents();
		this._addPackageSelectorEvents();
		this._addSeasonSelectorEvents();
	},
	
	setColHeights: function(padding) {
		var cols		 = $$('.contentBox');
		var text_box	 = $('dom__ermigoPackage__packageContainer');
		var price_table  = $('dom__ermigoPackage__roomPriceTable');
		if(padding) {
			padding		 = parseInt(cols[0].getStyle('padding-top').replace(/px/,''));
		} else {
			padding		 = 0;
		}
		var col_height_1 = text_box.getPosition().y+text_box.getSize().y-cols[0].getPosition().y-padding*4;
		var col_height_2 = price_table.getPosition().y+price_table.getSize().y-cols[1].getPosition().y-padding*4;
		var height		 = (col_height_1 >= col_height_2) ? col_height_1 : col_height_2;
		
		cols.each(function(col){
			col.setStyle('height',height);
		});
	},
	
	_addCategorySelectorEvents: function() {
		var self = this;
		this._categorySelector.addEvent('change',function(){
			self._selectedCategory = parseInt(this.options[this.selectedIndex].value);
			self._getPackages();
		});
	},
	
	_addPackageSelectorEvents: function() {
		var self = this;
		this._packageSelector.addEvent('change',function(){
			self._selectedPackage = parseInt(this.options[this.selectedIndex].value);
			self._getSeasons();
		});
	},
	
	_addSeasonSelectorEvents: function() {
		var self = this;
		this._seasonSelector.addEvent('change',function(){
			self._selectedSeason = parseInt(this.options[this.selectedIndex].value);
			self._getPackage();
		});
	},
	
	_getPackages: function() {
		var self = this;
		$fn('ErmigoPackage::getByCategory')(this._selectedCategory, this._hotelId).run(function(response){
			self._packageSelector.empty();
			self._selectedPackage = parseInt(response[0].id);
			
			response.each(function(item,index){
				new Element(
					'option',
					{
						'value': item.id,
						'html': item.title
					}
				).inject(self._packageSelector);
			});
			
			self._getSeasons();
		});
	},
	
	_getSeasons: function() {
		var self = this;
		
		$fn('ErmigoPackageSeason::getByPackage')(this._selectedPackage).run(function(response){
			self._seasonSelector.empty();
			self._selectedSeason = parseInt(response[0].id);
			
			response.each(function(item,index){
				new Element(
					'option',
					{
						'value': item.id,
						'html': item.date
					}
				).inject(self._seasonSelector);
			});
			
			self._getPackage();
		});
	},
	
	_getPackage: function() {
		var self = this;
		$fn('ErmigoPackage::get')(
									self._selectedPackage,
									self._selectedCategory,
									self._selectedSeason,
									self._hotelId
								).run(function(response){
			self._setPackageText(response[0]);
			self._setPackageImage(response[0].img);
			self._setRoomViews(response[0].room);
			self._setRoomPriceTable(response[0].room);
			self.setColHeights(false);
		});
	},
	
	_setPackageText: function(data) {
		var html = '<h1 style="margin-top: 20px;">'
				  +data.title+'</h1>'+data.text;
		$('dom__ermigoPackage__packageContainer').set('html',html);
	},
	
	_setPackageImage: function(img) {
		$('dom__ermigoPackage__packageImage').src = this._url+'/pix/media_netmanager/?id='+img;
	},
	
	_setRoomViews: function(data) {
		var self = this;
		var html = '';
		
		data.each(function(room){
			if(room.name.indexOf(self._positives[self._language]) > -1) {
			html += '<div class="viewRoom"'
				  +'id="dom__ermigoPackage__room_'+room.id+'">'
				  +'<a style="float: right;"'
				  +'onclick="$(\'dom__ermigoPackage__room_'+room.id+'\').style.display=\'none\';"'
				  +'href="#">'+self._texts.close+' [x]'
				  +'</a>'
				  +'<div class="clearBoth">&nbsp;</div>'
				  +'<p>'
				  +'<strong>'+room.name+'</strong>'
				  +'</p>'
				  +'<p>'+room.text+'</p>'
				  +'<img style="display: block; margin-top: 5px;"'
				  +'width="330"'
				  +'height="183"'
				  +'src="'+self._url+'/pix/media_netmanager/?id='+room.img+'" />'
				  +'</div>';
			}
		});
		
		$('dom__ermigoPackage__roomContainer').set('html',html);
	},
	
	_setRoomPriceTable: function(data) {
		var self = this;
		var html = '';
		
		data.each(function(room){
			if(room.name.indexOf(self._positives[self._language]) == -1) {
			html += '<tr class="borderBtm">'
				   +'<td>'
				   +'<a onclick="$(\'dom__ermigoPackage__room_'+room.id+'\').style.display=\'block\';"'
				   +'href="#">'
				   +room.name
				   +'</a>'
				   +'</td>'
				   +'<td align="right">'
				   +room.price_chf
				   +'</td>'
				   +'<td align="right">'
				   +room.price_eur
				   +'</td>'
				   +'<td align="right">'
				   +'<a href="#"'
				   +' onclick="showBookingEngine(\''+self._reservationPath+'\','
				   +'{\'language\':\''+self._language+'\''
				   +',\'hotel_id\':'+self._hotelId
				   +',\'product_id\':2'
				   +',\'package_category_id\':'+self._selectedCategory
				   +',\'package_id\':'+self._selectedPackage
				   +'})"'
				   +'>'
				   +self._texts.reserve+'</a>'
				   +'</td>'
				   +'</tr>';
			}
		});
		
		$('dom__ermigoPackage__roomPriceContainer').set('html',html);
	}
});