/*
 * Jquery functions for the apartment/building chooser.
 * Copyright (c) 2010, 2011  Incendio <post@incendio.no>
 */

/* Local vars and functions */
var current_building = null;
var current_apartment = null;
var current_side = null;
var map_init = [ false, false ];

/* Initialize maphilight defaults */
var mapset =
[
	{
		fill: true,
		fillOpacity: 0.66,
		stroke: false,
		strokeColor: 'ffffff',
		strokeOpacity: 1,
		strokeWidth: 1,
		fade: false,
		alwaysOn: false,
		doubleHilight: false
	},
	{
		stroke: true,
		fillOpacity: 0.5,
		strokeColor: '000000',
		strokeOpacity: 0.4,
		alwaysOn: true,
		doubleHilight: true
	}
];

jQuery(document).ready(function($)
{
	/* Fancy hovering on buildings */
	$('.buildingmap area').hover(function()
	{
		var infobox = $('#aptchooser #overview .infobox');
		var building = $(this).attr('href');
		var statustext = null;
		building = buildings[building.substr(building.lastIndexOf('/') + 1)];
		infobox.find('h2').text('Bygg ' + building.id);
		infobox.find('table').show();
		infobox.find('p').hide();
		if (building.enabled == 0)
			statustext = 'Kommer for salg';
		else if (building.enabled == 1)
			statustext = 'I salg';
		else if (building.enabled == 2)
			statustext = 'Utsolgt';
		infobox.find('.status').text(statustext);
		infobox.find('.apartments').text(building.apartments);
		infobox.find('.vacant').text(building.vacant);
		infobox.find('.coming').text(building.coming);
		infobox.find('.sold').text(building.sold);
		infobox.show();
	},
	function()
	{
		var infobox = $('#aptchooser #overview .infobox');
		infobox.find('h2').text('Velg bygg');
		infobox.find('table').hide();
		infobox.find('p').show();
	});

	/* Fancy hovering on apartments */
	$('.apartmentmap area').hover(function(ev)
	{
		var infobox = $('#aptchooser #buildings .infobox');
		var building = $(this).attr('href');
		var apartment = apartments[building.substr(building.lastIndexOf('/') + 1)];
		var statustext;
		switch(apartment.status)
		{
			default:
			case 0:
				statustext = apartment.price;
				break;
			case 1:
				statustext = 'Solgt';
				break;
			case 2:
				statustext = 'Kommer for salg';
				break;
		}
		infobox.find('h2 .h2').text('Leilighet ' + apartment.id);
		infobox.find('.area').text(apartment.area);
		infobox.find('.gross_area').text(apartment.gross_area);
		infobox.find('.price').text(statustext);
		infobox.find('.rooms').text(apartment.rooms);
		infobox.find('.level').text(apartment.level);

		infobox.show();
	},
	function()
	{
		var infobox = $('#aptchooser #buildings .infobox');
		infobox.hide();
	});

	/* Flip buildings */
	$('#buildings .flip').click(function()
	{
		$('#building-' + current_building.id).quickFlipper();
		current_side = (current_side == 'front' ? 'back' : 'front' );
		$('#buildings .viewport').text(current_side == 'front' ? 'sett fra gaten' : 'sett fra gårdstun');
	});

	/* Slide left/right on area/link click */
	$('.buildingmap area').click(function(e)
	{
		var building = $(this).attr('href');
		current_building = buildings[building.substr(building.lastIndexOf('/') + 1)];
		e.preventDefault();
		if (current_building.enabled != 1)
			return false;

		$('.quickflip-wrapper > div').css('position', 'static'); // hack to ensure animation is shown
		$('#building-' + current_building.id).show();
		$('#buildings').css('visibility', 'hidden').css('display', 'block');
		if (!map_init[1])
		{
			$('.map2').maphilight(mapset[1]);
			map_init[1] = true;
		}

        /* Show or hide the building flipper? */
        var utilbox = $('#buildings .utilbox');
        var viewport = $('#buildings .viewport');
        if ($('#buildings').hasClass('flip-' + current_building.id))
        {
            utilbox.show();
            viewport.show();
        }
        else
        {
            utilbox.hide();
            viewport.hide();
        }

		$('#buildings').css('visibility', 'visible').css('display', 'none');
		$('#buildings').show('slide', 'left', 300);
		$('#buildinginfo h2 .h2').text('Bygg ' + current_building.id);
		$('#buildinginfo .vacant').text(current_building.vacant);
		$('#buildinginfo .sold').text(current_building.sold);
		$('#overview').hide();
		return false;
	});

	$('#apartment .back').click(function(e)
	{
		$('.quickflip-wrapper > div').css('position', 'static'); // hack to ensure animation is shown
		$('#building-' + current_building.id).show();
		$('#buildings').css('visibility', 'hidden').css('display', 'block');
		if (!map_init[1])
		{
			$('.map2').maphilight(mapset[1]);
			map_init[1] = true;
		}
		$('#buildings').css('visibility', 'visible').css('display', 'none');
		$('#buildings').show('slide', 'left', 300);
		$('#buildinginfo h2').text('Bygg ' + current_building.id);
		$('#buildinginfo .vacant').text(current_building.vacant);
		$('#buildinginfo .sold').text(current_building.sold);
		$('#apartment').hide();
		e.preventDefault();
		return false;
	});

	$('.apartmentmap area').click(function(e)
	{
		var statustext = null;
		var apartment = $(this).attr('href');
		current_apartment = apartments[apartment.substr(apartment.lastIndexOf('/') + 1)];
		current_building = buildings[current_apartment.building];
		switch(current_apartment.status)
		{
			default:
			case 0:
				statustext = 'Ledig';
				break;
			case 1:
			case 2:
				statustext = 'Solgt';
				break;
		}
		$('#buildings').hide();
		$('#apartment .infobox h2').text('Leilighet ' + current_apartment.id);
		$('#apartment .infobox .status').text(statustext);
		$('#apartment .infobox .gross_area').text(current_apartment.gross_area);
		$('#apartment .infobox .area').text(current_apartment.area);
		$('#apartment .infobox .rooms').text(current_apartment.rooms);
		$('#apartment .infobox .level').text(current_apartment.level);
		$('#apartment .infobox .price').text(current_apartment.price);
		$('#apartment h3').text('Viser leilighet ' + current_apartment.id);
		$('#apartment .back .bld').text(current_apartment.building);
		$('#apartment > a').attr('href', '/apartments/' + current_apartment.id + '.pdf');
		$('#apartment > a > img').attr('src', '/images/apartments/' + current_apartment.id + '.png');
		$('#apartment').show('slide', 'left', 300);
		e.preventDefault();
		return false;
	});

	$('#buildings .overview').click(function(e)
	{
		$('#building-' + current_building.id).hide();
		$('#buildings').hide();
		$('#overview').show('slide', 'right', 300);
		if (!map_init[0])
		{
			$('.map1').maphilight(mapset[0]);
			map_init[0] = true;
		}
		e.preventDefault();
		return false;
	});
});

