/*
	inlight.com.au

	20/01/2011
	Patrick Carne (Inlight Media)
*/

$(window).bind('load', function() {
	slideShow();
	clientPortalLogin();
	activateCodeFormatting();
	$.fn.gmap('init', {	element:document.getElementById("contactMap")	});
	$.fn.gmap('coord', -37.832984, 145.056235);
});

function activateCodeFormatting() {
	$.beautyOfCode.init({
		brushes: ['Xml', 'JScript', 'Cpp', 'ObjectiveC', 'CSharp', 'Plain', 'Php', 'Ruby', 'Bash'],
		theme: "DevelopingInTheDark"
	});
}

/**
 * Setup the Hero Banner slideshow
 */
function slideShow() {
	$('#hero').slideShow();
}

function clientPortalLogin() {
	var $menu = $('#menu');
	var $clientLogin = $('#client-login');
	var speed = 200;

	$('.login', $menu).click(function() {
		$menu.fadeOut(speed, function() {
			$clientLogin.fadeIn(speed);
		});
		return false;
	});

	$('a.cancel', $clientLogin).click(function() {
		$clientLogin.fadeOut(speed, function() {
			$menu.fadeIn(speed);
		});
		return false;
	});
}

// Maps
(function($) {
	var map;
	var geocoder;
	var customIcon;

	var defaults = {
		element: null,
		map: {
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			panControl: true,
			zoomControl: true,
			mapTypeControl: true,
			scaleControl: true,
			streetViewControl: true,
			zoom: 13
		}
	};

	var methods = {
		init: function(options) {
			var options = $.extend(defaults, options);
			if (defaults.element) {
 				map = new google.maps.Map(defaults.element, {
					mapTypeId: defaults.map.mapTypeId,
					panControl: defaults.map.panControl,
					zoomControl: defaults.map.zoomControl,
					mapTypeControl: defaults.map.mapTypeControl,
					scaleControl: defaults.map.scaleControl,
					streetViewControl: defaults.map.streetViewControl,
					zoom: defaults.map.zoom
				});
				geocoder = new google.maps.Geocoder();
				customIcon = new google.maps.MarkerImage(
					'/img/map-icon.png',
					new google.maps.Size(88, 42),
					new google.maps.Point(0, 0),
					new google.maps.Point(10, 42)
				);
			}
			return this;
		},
		destroy: function() {
			return this;
		},
		address: function(address) {
			if (map) {
				geocoder.geocode({'address': address}, function(results, status) {
					if (status == google.maps.GeocoderStatus.OK) {
						map.setCenter(results[0].geometry.location);
						var marker = new google.maps.Marker({
							map: map,
							position: results[0].geometry.location,
							icon: customIcon
						});
					} else {
						alert("Geocode was not successful for the following reason: " + status);
					}
				});
			};
			return this;
		},
		coord: function(lat, long) {
			if (map) {
				var coords = new google.maps.LatLng(-37.832984,145.056235);
				map.setCenter(coords);
				var marker = new google.maps.Marker({
					map: map,
					position: coords,
					icon: customIcon
				});
			};
			return this;
		}
	};

	$.fn.gmap = function(method) {
		if (methods[method]) {
			return methods[method].apply(this,Array.prototype.slice.call(arguments, 1));
		} else if (typeof method === 'object' || ! method) {
			return methods.init.apply(this, arguments);
		} else {
			$.error('Method ' +  method + ' does not exist on jQuery.gmap');
		}
	};
})(jQuery);
