/**
 * Metody obsługi szczegółów ofert/inwestycji
 */
var Details = {

	/**
	 * Zmienna wskazująca czy ukrywać wykończenia dodatkowe
	 */
	fitoutHide: false,
	
	/**
	 * Zmienna wskazuje, które wykończenie należy rozwinąć
	 */
	fitoutJump: false,
	
	runMap: function(options) 
	{
		var defaultOptions = {
			div: 'mapa_main',
			id: 1
		};
		var options = Object.extend(defaultOptions, options);
		
		if (typeof GMap != "undefined") {
			GMap.dataFilters = { inwestycja: options.id, paramsFlag: 2 };
			GMap.mapDiv = options.div;
			GMap.getPOIParam = false;
			GMap.constructGetPanoramio = true;
			GMap.construct();
		}
		GMap.mapResize();
		GMap.setMapCenter();
		//GMap.map.addOverlay(new GLayer("com.panoramio.all"));
		//GMap.getPanoramio();
		
	},

	/**
	 * Uruchomienia funkcji w zależności od zakładki
	 */
	tabChangeObserver: function(link, type, options) 
	{
		var tabs = link.split("#");
		
		switch(tabs[1]) {
			case 'mapa':
				Details.runMap({div: options.map[0], id: options.map[1] });
				Hit.add(options.zgloszenie[1].toUpperCase() + '-MAPA', options.map[1]);
				break;
			case 'video':
				Video.displayMultimedia({videoName: options.video[0], videoDiv: options.video[1], play: 1});
				break;
			case 'oferent':
				Hit.add(options.zgloszenie[1].toUpperCase() + '-KLIENT', options.map[1]);
				break;
			case 'kredyt':
				Hit.add(options.zgloszenie[1].toUpperCase() + '-KREDYTY', options.map[1]);
				break;
			case 'oferta':
			case 'przetarg':
				Zgloszenie.setupForm({
					zgloszenie_id: options.zgloszenie[0],
					zgloszenie_typ: options.zgloszenie[1],
					zgloszenie_bank_sponsor: options.zgloszenie[2]}
				);
				break;
			case 'wykonczenie':
				var _this = this;
				element = $('wykonczenie');
				if (element.empty()) {
					Common.Loader.open();
					var ajaxObj = new Ajax.Request('/szczegoly,ajax-wykonczenie',
					{
						method: 'post',
						parameters: {
							inwestycjaId: options.wykonczenie[0],
							typProgramu: options.wykonczenie[1],
							metraz: options.wykonczenie[2]
						},
						onSuccess: function(transport) {
							if (transport.responseText == '[]')
								return false;
							var response = transport.responseText;
							element.update(response);
							_this.toggleFitout();
							
							// Skok po załadowaniu.
							if (_this.fitoutJump != false)
								_this.jumpToFitout(_this.fitoutJump);						
							Common.Loader.destroy();
						},
						onFailure: function() { 
							Common.Loader.destroy();
							alert(Lang.generic_error);
						}
					});
				} else {
					_this.toggleFitout();
				}

		}
		if (type == 'tab') {
			//alert(tabs[0] + '/' + tabs[1]);
			pageTracker._trackPageview(tabs[0] + '/' + tabs[1]);
		}

		if (tabs[1] != 'wykonczenie') {
			this.fitoutHide = false;
			this.toggleFitout();
		}

	},

	/**
	 * Steruje treścią zakładki wykończeń
	 */
	toggleFitout: function() 
	{
		var display = this.fitoutHide ? 'none' : '';
		var divs = $$('.wykonczenie_container');
 
		try {
			if (this.fitoutHide) {
				$$('.wykonczenie_short')[0].style.display = 'none';
				$$('.wykonczenie_div')[0].style.display = '';
			}
		} catch (e) {};
		
		for (var i = 1, length = divs.length; i < length; i++) {
			divs[i].style.display = display;
		}
	},
	
	/**
	 * Obsługa skoku do konkretnego wykończenia.
	 */
	jumpToFitout: function(id) 
	{
		// Jeżeli nie jest załadowane, to skoczymy po załadowaniu.
		element = $('wykonczenie');
		if (element.empty()) {
			this.fitoutJump = id;
			return false;
		}

		$('wykonczenie_div_' + id).style.display = '';
		$('wykonczenie_short_' + id).style.display = 'none';
		Common.jumpToElement('wykonczenie_div_' + id);
		this.fitoutJump = false;
		return true;
	},
	
	setupOfertyPodobne: function() 
	{
		var tableElement = $('lista_oferty_podobne');
		var table = new TableKit(tableElement, {
			rowEvenClass: 'dt_sz_1', 
			rowOddClass: '', 
			sortable: false, 
			resizable: false, 
			editable: false, 
			descendingClass: 'sortdesc', 
			ascendingClass: 'sortasc', 
			sortFirstAscendingClass: 'sortasc', 
			sortFirstDecendingClass: 'sortdesc' 
		});
		TableKit.Rows.stripe(tableElement);

		var tbody = tableElement.down('tbody');
		for (var i = 0; i < tbody.rows.length; i++) {

			var row = $(tbody.rows[i]);

			if (row.hasClassName('highlight'))
				continue;
			
			Event.stopObserving(row);

			Event.observe(row, 'mouseover', function(event) {
				var elt = Event.findElement(event, 'tr');
				elt.style.background = '#FFFFE2';
				elt.style.cursor = 'pointer';
			});
			
			Event.observe(row, 'mouseout', function(event) {
				var elt = Event.findElement(event, 'tr');
				elt.style.background = '';
			});
		}
	},

	/**
	 * Metoda otwierania linków po kliknięciu w wiersz tabelki ofert
	 */
	openOfferLink: function(event) 
	{
		var element = Event.findElement(event);

		if (element.tagName == 'IMG') {
			document.location.href = element.up('a').href;
			return;
		}
		
		var link = element.up('tr').down('a.link').toString();
		document.location.href = link;
	},

	/**
	 * Metoda odpowiada za rozwijanie i zwijanie tabelki ofert
	 */
	foldTable: function(folded) 
	{
		switch (folded) {
			case 'short':
				$('tabelka_ofert').style.height = '100%';
				$('tabelka_rozwin').style.display = 'none';
				$('tabelka_zwin').style.display = 'none';
				break;
			case true:
				$('tabelka_ofert').removeClassName('unfolded');
				$('tabelka_ofert').style.height = '';
				$('tabelka_rozwin').style.display = 'block';
				$('tabelka_zwin').style.display = 'none';
				break;
			case false:
				$('tabelka_ofert').addClassName('unfolded');
				$('tabelka_ofert').style.height = '100%';
				$('tabelka_rozwin').style.display = 'none';
				$('tabelka_zwin').style.display = 'block';
				break;
		};

		return true;
	},

	/**
	 * Inicjalizacja tabelki ofert
	 */
	setupOfferList: function() 
	{
		tableElement = $('lista_ofert');
		var table = new TableKit(tableElement, {
			rowEvenClass: 'dt_sz_1', 
			rowOddClass: '', 
			sortable: true, 
			resizable: false, 
			editable: false, 
			descendingClass: 'sortdesc', 
			ascendingClass: 'sortasc', 
			sortFirstAscendingClass: 'sortasc', 
			sortFirstDecendingClass: 'sortdesc' 
		});
		//table.sort(4, 1);
		tableElement.down('tr>th:nth-of-type(4)').addClassName('sortasc');
		
		var tbody = tableElement.down('tbody');
		
		if (tbody.rows.length > 8) {
			tabelka = $('tabelka_ofert');
			if (!tabelka.hasClassName('unfolded')) {
				this.foldTable(true);
			} else {
				this.foldTable(false);
			}
		} else {
			this.foldTable('short');
		}

		for (var i = 0; i < tbody.rows.length; i++) {
				
			var row = $(tbody.rows[i]);

			Event.stopObserving(row);
			Event.observe(row, 'mouseover', function(event) {
				var elt = Event.findElement(event, 'tr');
				elt.style.background = '#FFFFE2';
				elt.style.cursor = 'pointer';
			});
			Event.observe(row, 'mouseout', function(event) {
				var elt = Event.findElement(event, 'tr');
				elt.style.background = '';
			});
		}

		var _this = this;
		Event.stopObserving(tbody);
		Event.observe(tbody, 'click', _this.openOfferLink);
	},

	/**
	 * Wypełnianie tabelki ofert po zmianach konfiguracji
	 */
	fillOfferList: function(params) 
	{
		var prefix = (typeof params.prefix == 'undefined' ? 'default_' : params.prefix + '_');

		var loader = Common.Loader.open();
		
		var tbl = $(params.table);
		var type = params.type;
		var inwestycjaId = params.id;

		if (type == 'all') {
			$('pokaz_wszystkie').style.display = "none";
			if (Object.isElement($('pokaz_usera'))) {
				$('pokaz_usera').style.display = "block";
			}
		} else {
			$('pokaz_wszystkie').style.display = "block";
			if (Object.isElement($('pokaz_usera'))) {
				$('pokaz_usera').style.display = "none";
			}
		}

		var _this = this;
		var ajaxObj = new Ajax.Request('/szczegoly,ajax-oferty',
		{
			method: 'post',
			parameters : { id: inwestycjaId, type: type },
			onSuccess: function(transport) {
				
				var response = transport.responseText;
			
				var tbody = tbl.down('tbody');
				Element.update(tbody, response); //bypass na IE6
	
				_this.setupOfferList(tbody, prefix);
				TableKit.reloadTable(tbl);
				//TableKit.Sortable.sort(tbl, 4, 1);
				tbl.down('tr>th:nth-of-type(4)').addClassName('sortasc');

				loader.destroy();
			},
			onFailure: function() { 
				Common.Loader.destroy();
				alert(Lang.generic_error);
			}
		});

	}

};
