﻿var phoneClicked = false;
var map;
var geocoder;
var mapExists = false;

$(function()
{
	$('#rec-tabs').tabs();

	$('#phone-dialog').dialog({
		autoOpen: false,
		bgiframe: true,
		modal: true,
		width: 500,
		title: 'Phone Numbers'
	});

	$('a[rel=phone-link]').click(function(ev) {
		ev.preventDefault();

		$('#phone-dialog').dialog('open');

		// Has this been clicked on already
		if (phoneClicked == false)
		{
			RecordPhoneClick();
		}
	});

	var $description = $('#profile-description');
	var $specialequip = $('#profile-specialequip');

	if ($description.height() > 250) {
		$('<a />', {
			href: '#',
			html: ' &#151; Show More &#151;',
			'class': 'toggle-link',
			click: function(e) {
				e.preventDefault();
				e.stopPropagation();
				$this = $(this);
				$description.toggleClass('collapsed', 300, function() {
					$this.html($description.hasClass('collapsed') ? '&#151; Show More &#151;' : ' &#151; Show Less &#151;');
				});
			}
		}).appendTo($description);
		$description.addClass('collapsed');
	}

	if ($specialequip.height() > 200) {
		$('<a />', {
			href: '#',
			html: ' &#151; Show More &#151;',
			'class': 'toggle-link',
			click: function(e) {
				e.preventDefault();
				e.stopPropagation();
				$this = $(this);
				$specialequip.toggleClass('collapsed', 300, function() {
					$this.html($specialequip.hasClass('collapsed') ? '&#151; Show More &#151;' : ' &#151; Show Less &#151;');
				});
			}
		}).appendTo($specialequip);
		$specialequip.addClass('collapsed');
	}

	// if user is authenticated, modify recommend links to use jquery dialog
	if ($('#is-authenticated').val() == 'true') {

		// Find all the recommend links and hook them up to the dialog
		$('#dialog-recommend').dialog({
			width: 330,
			autoOpen: false,
			bgiframe: true,
			modal: true,
			title: 'Recommend this Profile',
			buttons: {
				Cancel : function() { $(this).dialog('close'); },
				'Recommend' : function() { $(this).dialog('close'); recommend(); }
			}
		});

		$('#dialog-recommend textarea.limited').show_char_limit(300, { status_element : '#recommend-feedback' });

		$('.recommend-link a').click(function(ev) {
			ev.preventDefault();
			$('#dialog-recommend').dialog('open');
		});
	}

	// Map lightbox
	$('#show-map').colorbox({
		inline: true,
		iframe: true,
		href: '#map-container',
		innerWidth: 640,
		innerHeight: 480,
		scrolling: false,
		onComplete: function() {
			if (mapExists !== true)
				geocodeAddress();
		}
	});
});

function setupMap(mapCenter) {
	var opts = {
		zoom: 11,
		center: mapCenter,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	};

	map = new google.maps.Map(document.getElementById('map-container'), opts);
	mapExists = true;

	var title = $('#pageHeading').text();
	var content = '<div><h3>' + title + '</h3><p>' + $('#full-address').val() + '</p>';
	var $link = $('.leftlink');
	if ($link.length > 0) {
		content += '<p><a href="' + $link.attr('href') + '">' + $link.text() + '</a></p>';
	}
	content += '<a href="http://maps.google.com/maps?daddr=' + encodeURI($('#full-address').val()) + '">Directions</a>';
	content += '</div>';
	var infoWindow = new google.maps.InfoWindow({ content: content });

	var marker = new google.maps.Marker({
		map: map,
		position: mapCenter,
		title: title
	});

	infoWindow.open(map, marker);

	google.maps.event.addListener(marker, 'click', function () {
		infoWindow.open(map, marker);
	});
}

function geocodeAddress() {
	geocoder = new google.maps.Geocoder();
	geocoder.geocode({address: $('#full-address').val()}, function(results, status) {
		if (status == google.maps.GeocoderStatus.OK) {
			setupMap(results[0].geometry.location);
		} else {
			$('#map-container').text('Error loading map. Unable to determine location of address.');
		}
	});
}

function recommend() {
	var id = $('#listing-id').val();
	var fromListingID = $('#dialog-recommend :radio:checked').val();
	if (fromListingID == null)
		fromListingID = $('#from-listing-id').val();
	var comment = $('#rec-comment').val();

	$.ajax({
		url: '/services/user_account.asmx/MakeRecommendation',
		data: JSON.stringify({ 'id': id, 'fromListingID': fromListingID, 'comment': comment }),
		dataType: 'jsond',
		success: function(msg) {
			$('.recommend-link').html('<span class="leftthumb">Recommended</span>');
			$('#dialog-recommend').html('Thank you for recommending this profile.');
			$('#dialog-recommend').dialog('option', 'title', 'Profile Recommended');
			$('#dialog-recommend').dialog('option', 'buttons', { Ok : function() { $(this).dialog('close'); } });
			$('#dialog-recommend').dialog('open');
		},
		error: function(xhr) {
			alert(xhr.status);
		}
	});
}

function RecordPhoneClick() {
	// Make an ajax call to count this click to show phone numbers
	$.ajax({
		url: '/services/user_account.asmx/PhoneClicked',
		data: JSON.stringify({ id : $('#listingID').val() }),
		dataType: 'jsond',
		success : function(msg) {
			phoneClicked = true;
		}
	});
}
