var activeDialog = false;
var teamOk = false;
var sceneType = false;

$(document).ready(function() {
	// $('#osallistu').click(userStartDialog);
	$('#loginSubmit').click(login);
	$('#logoutSubmit').click(logout);
	$.get('ajax.php?action=is-logged', {}, function(response, status) {
		var resp = $.parseJSON(response);
		if (resp && resp.id) {
			showLogout(resp.id, resp.username);
		} else {
			showLogin();
		}
	});
});

function forgot(){
	//alert('Haa-haaaa!');
	$('#pUp10').fadeIn('fast');
	$('#dark').fadeIn('fast');
	$('#submit_forgot').click(forgot_send);
}

function forgot_send(){
	$("#response").html('');
	$.post('ajax.php?action=forgot-pw', {email: $("#email_forgot").get(0).value}, function(response) {
		if (response == 1) $("#response").html('<br />Salasana lähetetty.');
		else $("#response").html('<br /><span style="color: red;">Virheellinen käyttäjätunnus</span>');
	});
}

function getSceneType() {
	return sceneType;
}

function routesActive() {
	return $('#routesImg').attr('src') == 'img/suosikkireitit_selected.png';
}

function loadJobsView() {
	$.get('ajax.php?action=jobs-load', {}, function(response) {
		$('#mainContainer').append(response);
		$('#routesTab').click(function() {
			if (!$('#routesTab').hasClass('selected')) {
				$('#routesTab').addClass('selected');
			}
			$('#scenesTab').removeClass('selected');
			$('#topRoutes').show();
			$('#topScenes').hide();
		});
		$('#scenesTab').click(function() {
			if (!$('#scenesTab').hasClass('selected')) {
				$('#scenesTab').addClass('selected');
			}
			$('#routesTab').removeClass('selected');
			$('#topRoutes').hide();
			$('#topScenes').show();
		});
		$('#routesImg').click(function() {
			$('#routesImg').attr('src', 'img/suosikkireitit_selected.png');
			$('#scenesImg').attr('src', 'img/suosikkimaisemat.png');
			$('#sb1').css('display', 'block');
			$('#sb2').css('display', 'none');
			$('#jobsButton').get(0).src='img/jaa_oma_reitti.png';
			closeInfoWindow();
			showRoutes();
		});
		$('#scenesImg').click(function() {
			$('#routesImg').attr('src', 'img/suosikkireitit.png');
			$('#scenesImg').attr('src', 'img/suosikkimaisemat_selected.png');
			$('#sb1').css('display', 'none');
			$('#sb2').css('display', 'block');
			$('#jobsButton').get(0).src='img/jaa_oma_maisema.png';
			closeInfoWindow();
			showScenes();
		});
		$('#jobsButton').click(function() {
			$.get('ajax.php?action=is-logged', {}, function(response, status) {
				var resp = $.parseJSON(response);
				if (resp && resp.id) {
					window.location.href = 'kartta.html?jobs=1';
				} else {
					window.location.href = 'index.html?osallistu=1';
				}
			});
		});
		setupRouteAndSceneView();
	});
}

function loadJobs() {
	jobsStartDialog();
	// jobsSceneDialog();
}

function jobsStartDialog() {
	$.get('ajax.php?action=jobs-start-load', {}, function(response, status) {
		$('#mainContainer').append(response);
		openMapsDialog(6);
		$('#mainContainer #job-start-submit').click(jobsRouteDialog);
		$('#jobReitti').click(jobsRouteDialog);
		$('#jobMaisema').click(jobsSceneDialog);
	});
}

function jobsRouteDialog() {
	$.get('ajax.php?action=jobs-route-load', {}, function(response, status) {
		$('#mainContainer').append(response);
		openMapsDialog(7);
		setupRouteDraw();
		$('#mainContainer #jobs-route-submit').click(function() {
			$.get('ajax.php?action=jobs-count', {}, function(response, status) {
				var addedRoutes = parseInt(response);

				// Add route
				if (hasRoute()) {
					var data = {
						description: $('#mainContainer textarea[name=description]').val(),
						waypoints: getRouteVertices()
					}
					$.post('ajax.php?action=jobs-route-submit', data, function(response, status, request) {
						var errors = $.parseJSON(response);
						jobsSceneDialog();
					});
				// Skip to next dialog
				} else if (addedRoutes) {
					jobsSceneDialog();

				// Require route
				} else {
					alert('Merkitse ensin suosikkireittisi.');
				}
			});
		});

		$('#jobOhje').click(jobsStartDialog);
		$('#jobMaisema').click(jobsSceneDialog);
	});
}

function jobsSceneDialog() {
	$.get('ajax.php?action=jobs-scene-load', {}, function(response, status) {
		$('#mainContainer').append(response);
		openMapsDialog(8);
		setupSceneDraw();
		new AjaxUpload('uploadPhoto', {
			action: 'ajax.php?action=jobs-scene-upload-photo',
			name: 'photo',
			autoSubmit: true,
			onComplete: function(file, response) {
				var resp = $.parseJSON(response);
				if (!error(resp.errors, 'photo', 'error') && resp.image) {
					sceneType = 'photo';
					displayUploadWindow('scenes/tmp/' + resp.image);
				} else {
					alert('Kuvan lataamisessa tapahtui virhe.');
					$('#thumbnailPhoto').attr('src', 'img/exampleImageNew.png');
				}
			},
			onChange: function(file, extension) {
				if (!hasSceneMarker()) {
					alert('Vie ensin pisara kartalle.');
					return false;
				} else {
					return true;
				}
			}
		});

		$('#mainContainer #useStreetView').click(function() {
			if (hasSceneMarker()) {
				sceneType = 'streetview';
				displayStreetWindow();
			} else {
				alert('Vie ensin pisara kartalle.');
			}
		});

		$('#mainContainer #jobs-scene-submit').click(function() {
			if (sceneType == 'photo') {
				var data = {
					type: 'photo',
					description: $('#mainContainer textarea[name=description]').val(),
					point: getSceneLatLng()
				}
			} else if (sceneType == 'streetview') {
				var pov = getPanoramaPOV();
				var data = {
					type: 'panorama',
					description: $('#mainContainer textarea[name=description]').val(),
					point: getPanoramaLatLng(),
					pov_yaw: pov.yaw,
					pov_pitch: pov.pitch,
					pov_zoom: pov.zoom
				}
			}
			$.post('ajax.php?action=jobs-scene-submit', data, function(response, status, request) {
				var errors = $.parseJSON(response);
				jobsThanksDialog();
			});
		});

		$('#jobOhje').click(jobsStartDialog);
		$('#jobReitti').click(jobsRouteDialog);
	});
}

function jobsThanksDialog() {
	$.get('ajax.php?action=jobs-thanks-load', {}, function(response, status) {
		$('#mainContainer').append(response);
		openMapsDialog(9);
		$('#mainContainer #thanksButtonCard').click(closeThanksDialog);
		$('#mainContainer #thanksButtonJobs').click(closeThanksDialog2);
	});
}

function closeThanksDialog() {
	closeDialog(
		function() {
			$.get('ajax.php?action=is-logged', {}, function(response, status) {
				var resp = $.parseJSON(response);
				if (resp && resp.id) {
					window.location.href = 'kartta.html?id=' + resp.id;
				}
			});
		}
	);
}

function closeThanksDialog2() {
	closeDialog(
		function() {
			jobsStartDialog();
		}
	);
}


function loadCard(id, order, filt, prevId) {
	$.get('ajax.php?action=card-report', { id: id, order: order, filter: filt, prev: prevId }, function(response, status) {
		$('#mainContainer').html(response);
		$('#mainContainer #like-button').click(function() {
			$.get('ajax.php?action=card-like', { id: id }, function(response, status) {
				if (response) {
					$('#mainContainer #like-text').html(response);
				}
			});
		});
	});
	setupCardView(id);
}

function loadDrivers(page, ord) {
	var filter = $('#galleryContent #filter').val();

	/* if (filter == 'net-team') {
		$('#galleryHeadText').html('Nettitiimin kilpailu kiristyy – voittajat valitaan 31.5. Kannusta suosikkikuskiasi.');
	} else {
		$('#galleryHeadText').html('Kannusta omaa suosikkiasi jatkoon!');
	} */

	if (ord) {
		order = ord;
	} else {
		if ($('#galleryContent #sort-newest').css('font-weight') == 'bold') {
			var order = 'newest';
		} else {
			var order = 'likes';
		}
	}

	var data = {
		order: order,
		filter: filter,
		page: page
	}
	$.get('ajax.php?action=drivers-winner', data, function(response, status) {
		$('#galleryContainer').html(response);
		$('#galleryContainer .galleryItem').mouseover(function() {
			$(this).children('.galleryItemOverlay, .overlayButton').show();
		});
		$('#galleryContainer .galleryItem').mouseout(function() {

			$(this).children('.galleryItemOverlay, .overlayButton').hide();
		});

		$('#galleryContainer .galleryPagination a').each(function (i, obj) {
			$(obj).click(function() {
				loadDrivers($(obj).html());
			});
		});
	});
}

function showLogin() {
	$('#logoutContainer').hide();
	$('#loginContainer').show();
	$('#participate-link').attr('href', 'index.html?osallistu=1');
}

function showLogout(id, username) {
	$('#loginContainer').hide();
	$('#logoutContainer #user-card-button').click(function() {
		window.location.href = 'kartta.html?id=' + id;
	});
	/*
	$('#logoutContainer #jobs-button').click(function() {
		window.location.href = 'kartta.html?jobs=1';
	}); */
	$('#logoutContainer #username').text(username);
	$('#logoutContainer').show();

	$('#participate-link').attr('href', 'kartta.html?jobs=1');
}

function login() {
	var email = $('#loginEmail').val();
	var password = $('#loginPassword').val();

	$.post('ajax.php?action=login', { email: email, password: password }, function(response, status) {
		var resp = $.parseJSON(response);
		if (resp.error) {
			alert('Tarkista käyttäjätunnuksesi ja salasanasi.');
		} else {
			showLogout(resp.id, resp.username);
		}
	});
}

function logout() {
	$.get('ajax.php?action=logout', {}, function(response, status) {
		showLogin();
	});
}

function userStartDialog() {
	$.get('ajax.php?action=user-start', {}, function(response, status) {
		$('.intro').append(response);
		openDialog(5);
		/* $('#pUp5 img.hand').click(function() {
			userTeamDialog();
		}); */
	});
}

function userTeamDialog() {
	$.get('ajax.php?action=user-team-load', [], function(response, status) {
		$('.intro').append(response);
		openDialog(1);
		// Event handler for submit
		$("#pUp1 .bottomButton input").get(0).onclick = function() {
			if (teamOk) {
				var data = {
					use_diesel: $('#pUp1 input[name=use_diesel]:checked').val(),
					can_fuel: $('#pUp1 input[name=can_fuel]:checked').val(),
					only_net_team: $('#pUp1 input[name=only_net_team]:checked').val()
				};
				$.post('ajax.php?action=user-team-submit', data, function(response, status, request) {
					userContactDialog();
				});
			}
		}
		updateUserTeamDialog();
		$("#pUp1 input").click(updateUserTeamDialog);
	});
}

function updateUserTeamDialog() {
	// First path, test driver
	if ($("#cb1").get(0).checked == true && $("#cb3").get(0).checked == true) {
		$("#tervetuloa1").css("display", "block");
		$("#tervetuloa2").css("display", "none");
		if($("#cb6").get(0).checked) {
			$("#pUp1 .bottomButton input").get(0).src = $("#pUp1 .bottomButton input").get(0).src.replace("_disabled.png", ".png");
			teamOk = true;
		} else {
			if ($("#pUp1 .bottomButton input").get(0).src.indexOf('_disabled') == -1) {
				$("#pUp1 .bottomButton input").get(0).src = $("#pUp1 .bottomButton input").get(0).src.replace(".png", "_disabled.png");
			}
			teamOk = false;
		}

	// Second path, net team
	} else if(($("#cb1").get(0).checked || $("#cb2").get(0).checked) && ($("#cb3").get(0).checked || $("#cb4").get(0).checked)) {
		$("#tervetuloa1").css("display", "none");
		$("#tervetuloa2").css("display", "block");
		if($("#cb6b").get(0).checked) {
			$("#pUp1 .bottomButton input").get(0).src = $("#pUp1 .bottomButton input").get(0).src.replace("_disabled.png", ".png");
			teamOk = true;
		} else {
			if ($("#pUp1 .bottomButton input").get(0).src.indexOf('_disabled') == -1) {
				$("#pUp1 .bottomButton input").get(0).src = $("#pUp1 .bottomButton input").get(0).src.replace(".png", "_disabled.png");
			}
			teamOk = false;
			// $("#pUp1 .bottomButton input").get(0).onclick = function() {}
		}

	// Third path, nothing selected
	} else{
		$("#tervetuloa1").css("display", "none");
		$("#tervetuloa2").css("display", "none");
		if ($("#pUp1 .bottomButton input").get(0).src.indexOf('_disabled') == -1) {
			$("#pUp1 .bottomButton input").get(0).src = $("#pUp1 .bottomButton input").get(0).src.replace(".png", "_disabled.png");
			teamOk = false;
		} else {
			teamOk = true;
		}
		// teamOk = false;
		// $("#pUp1 .bottomButton input").get(0).onclick = function() {}
	}
}

function userContactDialog() {
	$.get('ajax.php?action=user-contact-load', [], function(response, status) {
		$('.intro').append(response);
		openDialog(2);
		$('#pUp2 .bottomButton input').click(function() {
			var data = {
				email: $('#pUp2 input[name=email]').val(),
				password: $('#pUp2 input[name=password]').val(),
				password_confirm: $('#pUp2 input[name=password_confirm]').val(),
				phone: $('#pUp2 input[name=phone]').val(),
				allow_email_marketing: $('#pUp2 input[name=allow_email_marketing]:checked').val(),
				allow_mobile_marketing: $('#pUp2 input[name=allow_mobile_marketing]:checked').val()
			}
			$.post('ajax.php?action=user-contact-submit', data, function(response, status, request) {
				var errors = $.parseJSON(response);
				if (error(errors, 'email', 'notblank')) {
					alert('Sähköpostiosoite tulee täyttää!');
				} else if (error(errors, 'email', 'email')) {
					alert('Tarkista sähköpostiosoitteesi!');
				} else if (error(errors, 'email', 'unique')) {
					alert('Sähköpostiosoite on jo käytössä!');
				} else if (error(errors, 'password', 'notblank')) {
					alert('Salasana tulee täyttää!');
				} else if (error(errors, 'password', 'mismatch')) {
					alert('Salasana ja varmistus eivät täsmää!');
				} else if (error(errors, 'phone', 'notblank')) {
					alert('Puhelinnumero tulee täyttää!');
				} else {
					userCardDialog();
				}
			});
		});
	});
}

function userCardDialog() {
	$.get('ajax.php?action=user-card-load', [], function(response, status) {
		$('.intro').append(response);
		openDialog(3);
		new AjaxUpload('uploadPhoto', {
			action: 'ajax.php?action=user-upload-photo',
			name: 'photo',
			autoSubmit: true,
			onComplete: function(file, response) {
				var resp = $.parseJSON(response);
				if (!error(resp.errors, 'photo', 'error') && resp.image) {
					$('#thumbnailPhoto').attr('src', 'cards/tmp/' + resp.image);
				} else {
					alert('Kuvan lataamisessa tapahtui virhe.');
					$('#thumbnailPhoto').attr('src', 'img/exampleImageNew.png');
				}
			}
		});
		$('#pUp3 .bottomButton input').click(function() {
			var data = {
				username: $('#pUp3 input[name=username]').val(),
				car: $('#pUp3 input[name=car]').val(),
				car_driven_years: $('#pUp3 input[name=car_driven_years]').val(),
				driving_purpose: $('#pUp3 select[name=driving_purpose]').val(),
				residence: $('#pUp3 input[name=residence]').val(),
				why: $('#pUp3 textarea[name=why]').val()
			}
			$.post('ajax.php?action=user-card-submit', data, function(response, status, request) {
				var resp = $.parseJSON(response);
				var errors = resp.errors;
				if (error(errors, 'username', 'notblank')) {
					alert('Nimimerkki tulee täyttää!');
				} else if (error(errors, 'username', 'unique')) {
					alert('Käyttäjätunnus on jo käytössä!');
				} else if (error(errors, 'car', 'notblank')) {
					alert('Auto tulee täyttää!');
				} else if (error(errors, 'car_driven_years', 'notblank')) {
					alert('Ajovuodet tulee täyttää!');
				} else if (error(errors, 'driving_purpose', 'notblank')) {
					alert('Ajotarkoitus tulee täyttää!');
				} else if (error(errors, 'residence', 'notblank')) {
					alert('Kotipaikka tulee täyttää!');
				} else if (error(errors, 'why', 'notblank')) {
					alert('Esittelyteksti tulee täyttää!');
				} else {
					userPreviewDialog();
				}
			});
		});
	});
}

function userPreviewDialog() {
	$.get('ajax.php?action=user-preview-load', [], function(response, status) {
		$('.intro').append(response);
		openDialog(4);
		$('#pUp4 #previewEdit').click(function() {
			userCardDialog();
		});
		$('#pUp4 #previewSubmit').click(function() {
			$.post('ajax.php?action=user-preview-submit', [], function(response, status, request) {
				var resp = $.parseJSON(response);
				if (error(resp.errors, 'user', 'error')) {
					alert('Tarkista, että olet täyttänyt kaikki aiemmin vaaditut kohdat!');
				} else {
					closeDialog(function() {
						window.location.href = 'kartta.html?jobs=1';
					});
				}
			});
		});
	});
}

function openMapsDialog(number) {
	if (!activeDialog) {
		activeDialog = number;
		$('#pUp' + activeDialog).fadeIn('fast');
	} else {
		$('#pUp' + activeDialog).hide().remove();
		activeDialog = number;
		$('#pUp' + activeDialog).show();
	}
}

function closeDialog(callback) {
	$('#pUp' + activeDialog).fadeOut('fast', function() {
		$(this).remove();
		activeDialog = false;
		if (callback) {
			callback();
		}
	});
	$('#dark').fadeOut('fast');
}

function openDialog(number) {
	if (!activeDialog) {
		activeDialog = number;
		$('#pUp' + activeDialog).fadeIn('fast');
		$('#dark').fadeIn('fast');
	} else if (activeDialog == 5) {
		activeDialog = number;
		$('#pUp' + activeDialog).fadeIn('fast');
		$('#pUp5').fadeOut('fast');
	} else {
		$('#pUp' + activeDialog).hide().remove();
		activeDialog = number;
		$('#pUp' + activeDialog).show();
	}
}

function error(errors, column, type) {
	if (errors && errors[column]) {
		if ($.inArray(type, errors[column]) != -1) {
			return true;
		}
	}
	return false;
}

function getUrlVars() {
    var vars = [], hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
