$(document).ready( function() {
	
	$("a[rel='external']").attr("target","_blank");
	$('.tooltip').tipsy({gravity: 's'});

	if (window.copyElement != undefined) {
		var clip = new ZeroClipboard.Client();
		ZeroClipboard.setMoviePath(copySwfPath);
		clip.setHandCursor(true);

		$('#' + copyElement).mouseover( function() {
			clip.setText(copyText);
			if (clip.div) {
				clip.receiveEvent('mouseout', null);
				clip.reposition(this);
			}
			else {
				clip.glue(this, copyWrapper);
			}
			clip.receiveEvent('mouseover', null);
			
		} );
		
		function onCopy(client, text) {
			$('#' + copyWrapper).attr('title', copyText + ' copied to clipboard!');
			$('#' + copyWrapper).trigger('mouseenter');
			$('#' + copyWrapper).attr('title', 'Click to copy the URL to your clipboard');
		}

		clip.addEventListener('onComplete', onCopy);

	}
	
});

function createMap(element, id, width, height, latitude, longitude, img, pin) {
	
	if ($("#map_container_" + id).length) {
		toggleMapDisplay(id);
	}
	else {
		$(element + ' > .photoInnerTop').before('<div id="map_container_' + id + '" style="width:' + width + 'px;height:' + height + 'px" class="mapContainer"></div>');
		initializeMap(id, latitude, longitude, img, pin);
	}

	toggleMapControl(id, true);
	
	return false;
}

function toggleMapControl(id, showHint) {
	
	$('#map_activate_' + id).toggleClass('active');
	
	if ($('#map_activate_' + id).hasClass('active')) {
		$('#map_activate_' + id).attr('title', 'Hide Location');
	}
	else {
		$('#map_activate_' + id).attr('title', 'Show Location');
	}
	
	if (showHint) {
		$('#map_activate_' + id).trigger('mouseenter');
	}
	
}
function toggleMapDisplay(id) {
	var isHidden = jQuery($('#map_container_' + id)).is(":hidden");
	jQuery($('#map_container_' + id))[ isHidden ? "fadeIn" : "fadeOut" ]('fast');
}

function initializeMap(id, latitude, longitude, markers) {
	
	var latlng = new google.maps.LatLng(latitude, longitude);
	var myOptions = {
		zoom: 14,
		center: latlng,
		mapTypeId: google.maps.MapTypeId.TERRAIN,
		navigationControl: true,
		navigationControlOptions: {
			style: google.maps.NavigationControlStyle.SMALL
		},
		mapTypeControl: false
	};
	
	var map = new google.maps.Map(document.getElementById('map_container_' + id), myOptions);
	
	var i = 0;
	var len = markers.length;
	
	if (len > 1) {
		markers.sort(function(a, b) {
			return b.lat - a.lat;
			return a.lat - b.lat;
		});
		
		while (i < len) {
			markers[i].zIndex = i * 2;
			i++;
		}
		i = 0;
	}
	else {
		markers[i].zIndex = 1;
	}
	
	while (i < len)
	{
		var latlng = new google.maps.LatLng(markers[i].lat, markers[i].lng);
		
		var point = new google.maps.Point(31, 69);
		var image = new google.maps.MarkerImage('/assets/images/large_pin.png', null, null, point);
		var shadow = new google.maps.MarkerImage('/assets/images/large_pin_shadow.png', null, null, point);
		var marker = new google.maps.Marker({
			position: latlng,
			map: map,
			icon: image,
			shadow: shadow,
			clickable: true,
			zIndex: markers[i].zIndex - 1
		});
		google.maps.event.addListener(marker, 'click', function() {
			toggleMapDisplay(id);
			toggleMapControl(id, false);
		});
	
		var point = new google.maps.Point(29, 67);
		var image = new google.maps.MarkerImage(markers[i].img, null, null, point);
	
		var marker = new google.maps.Marker({
			position: latlng,
			map: map,
			icon: image,
			clickable: false,
			zIndex: markers[i].zIndex
		});
		
		
		i++;
	}
	
}


var ip = '';

function setIP(json) {
	ip = json.ip;
}

function trackView(mcv_ids) {

	var referrer	= '';
	var userAgent	= BrowserDetect.browser + ' ' + BrowserDetect.version + ' on ' + BrowserDetect.OS;
	var pageURI		= window.location.href;
	
	if (document.referrer != '') {
		referrer = document.referrer;
	}
	
	var dataString = 'mcv_ids=' + mcv_ids + '&referrer=' + referrer + '&user_agent=' + userAgent + '&path_uri=' + pageURI + '&ip=' + ip;
	
	$.ajax({
		type: "POST",
		url: '/stats/',
		data: dataString
	});
	
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();
