// JavaScript Document


// Global vars:

var global_map = false;
var global_control = false;
var global_coder = false;
var global_markers = new Array();
var user_info=new Array();
var global_zoom = 8;
var global_add_loc = "";
var session_started = false;
var markerOptions;
var client_location = false;
var global_timer = false;

// load map

function loadMap(start) {
	$show('map_cover');
	$html('map_feedback', "Loading the map...");
	if (!start){start = false;}
	session_started = start;
	google.load("maps", "2", {"callback" : mapLoaded});
}

function mapLoaded() {
	global_map = new google.maps.Map2(document.getElementById("map"));
	global_control = new GSmallMapControl;
	global_coder = new GClientGeocoder();
	go_to_location("52.0912623","5.1227478");
	global_map.addControl(global_control);
	
	var blueIcon = new GIcon(G_DEFAULT_ICON);
	blueIcon.image = "image/prikker.png";
	markerOptions = {icon:blueIcon};
	
	client_location = google.loader.ClientLocation;
	
	$html('map_feedback', "Initializing buttons...");
	init_buttons();
	if (session_started){
		submit_signup($value('login_email'),$value('login_pass'),$('login_remember').checked);
	} else {
		get_markers();
	}
}




// div control
function init_buttons(){
	if ($('show_login')){$('show_login').onclick = function (){show_dialog("login_body");}}
	if ($('show_search')){$('show_search').onclick = function (){show_dialog("search_body");}}
	if ($('show_signup')){$('show_signup').onclick = function (){show_dialog("signup_body");}}
	if ($('show_friends')){$('show_friends').onclick = function (){show_dialog("friends_body");}}
	if ($('show_location')){$('show_location').onclick = function (){show_dialog("location_body");}}
	
	if ($('login_button')){$('login_button').onclick = function (){submit_signup($value('login_email'),$value('login_pass'), $('login_remember').checked);}}
	if ($('location_button')){$('location_button').onclick = function (){look_up_location($value('location_txt'));}}
	if ($('signup_button')){$('signup_button').onclick = function (){sign_up_new_user($value('signup_email'), $value('signup_pass'), $value('signup_name'));}}
	if ($('search_button')){$('search_button').onclick = function (){search_user($value('search_friend'));}}
}

function search_user(query){
	clearTimeout(global_timer);
	$ajax ("php/search.php", "query="+query, search_result);
}
function search_result(result){
	$html('search_body_otuput',result);
}

function add_to_friend(ID){
	clearTimeout(global_timer);
	$ajax ("php/add_friend.php", "id="+ID, add_friend_result);
}

function add_friend_result(result){
	$html('search_body_otuput',result);
	search_user($value('search_friend'));
	if (result == "Friend added"){
		get_markers();
	}
}

function sign_up_new_user (email, pass, name){
	clearTimeout(global_timer);
	$checkmail (email, null, "a@a.com");
	$ajax ("php/signup_user.php", "name="+name+"&email="+email+"&pass="+pass, new_user_added);
}

function new_user_added(result){
	if (result == "error"){alert ("Sorry, we could not add you as a new user");
	}else if (result == "exists"){alert ("This email adress is already in use... please use another address.");
	}else{
		var arr = result.split("#");
		show_signup(false);
		submit_signup(arr[0],arr[1],null);
	}
}
	
	
function show_dialog(name){
	if ($(name).style.display == "none" || $(name).style.display == false){$(name).style.display = "block";}
	else {$(name).style.display = "none";}
}

function submit_signup(name,pass,remember){
	clearTimeout(global_timer);
	$show('map_cover');
	$html('map_feedback', "Logging in: "+name);
	$('login_email').value =name;
	$('login_pass').value =pass;
	$show('login_loader');
	if (remember){
		var days = 14;
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
		document.cookie = "email="+name+expires;
		document.cookie = "pass="+pass+expires;
		document. cookie = "remember_map="+remember+expires;
	}
	$ajax("php/check_user.php", "name="+name+"&pass="+pass, recieve_signup);
}

function recieve_signup(result){
	$hide('login_loader');
	$html('login_feedback', "<br>"+result);
	if ($('logout')){
		$html('map_feedback', "Login ok...");
		if($('logout')){$('logout').onclick = logoutUser};
		session_started = true;
		try_to_locate();
	} else {
		get_markers();
	}
}

function try_to_locate(){
	clearTimeout(global_timer);
	$html('map_feedback', "Looking for your location");
	if (client_location){
		var cl = client_location;
        var location = [cl.address.city, cl.address.region, cl.address.country].join(', ');
		if (prompt ("Are you currently at: "+location+"?", true)){
			var point = new google.maps.LatLng(cl.latitude, cl.longitude);
			$('location_txt').value = location;
			add_location(point);
		} else {
			$('location_txt').value = "Unknown";
			get_markers();
		}
	}  else {
		$('location_txt').value = "Unknown";
		get_markers();
	}
	client_location=false;
}

function logoutUser(){
	clearTimeout(global_timer);
	$html('map_feedback', "Logging out user...");
	$('login_email').value ="";
	$('login_pass').value ="";
	$('friends_body').innerHTML = "";
	var expires = ";-1";
	document.cookie = "email="+""+expires;
	document.cookie = "pass="+""+expires;
	document. cookie = "remember_map="+false+expires;
	$ajax("php/logout.php", null, recieve_logout);
}
function recieve_logout(result){
	$html('map_feedback', "You have succesfully logged out...");
	$html('login_feedback',"Not logged in");
	session_started = false;
	get_markers();
}

function get_markers(){
	// remove
	$html('map_feedback', "Getting pins..");
	for (var i = 0; i < user_info.length; i++) {
		if ((user_info[i][0] != false && user_info[i][0] != "|") && (user_info[i][1] != false && user_info[i][1] != "|")){
			global_map.removeOverlay(global_markers[i]);
		}
	}
	global_markers.length = 0;
	user_info.length = 0;
	// set
	$ajax("php/get_locations.php", null, set_markers);
}

function set_markers(result){
	user_info = $ajaxRespArray(result,"|","#");
	if(session_started){
		$('friends_body').innerHTML = "";
	}
	$html('map_feedback', "Setting pins..");
	for (var i=0; i<user_info.length; i++){
		if ((user_info[i][0] != false && user_info[i][0] != "|") && (user_info[i][1] != false && user_info[i][1] != "|")){
			global_markers[i] = new GMarker(new google.maps.LatLng(user_info[i][0],user_info[i][1]), markerOptions);
			
			global_map.addOverlay(global_markers[i]);
			$html('map_feedback', "Placing pin "+i);
			global_markers[i].id=i;
			GEvent.addListener(global_markers[i], "click", function() {var popup_content = "<h3>"+user_info[this.id][4] + "</h3><small>"+ user_info[this.id][3] + "</small><br>"+ user_info[this.id][2] + "."; this.openInfoWindowHtml(popup_content);})
			if(session_started){
				if (i != 0){
				$('friends_body').innerHTML += "<h3>"+user_info[i][4]+"</h3><small>"+ user_info[i][3] + " </small><br>"+ user_info[i][2] + ". - <a href=\"#null\" onclick=\"locatefriend("+i+");\">Locate</a><hr>";
				}
			}
		}
	}
	$hide('map_cover');
	global_timer = setTimeout("reset_page();",600000);
}

function locatefriend (id){
	clearTimeout(global_timer);
	$show('map_cover');
	$html('map_feedback', "Locating your friend");
	global_zoom = 10;
	go_to_location (user_info[id][0],user_info[id][1]);
}


function go_to_location(lat, len){
	var point = new google.maps.LatLng(lat,len);
	global_map.setCenter(point, global_zoom);
	$hide('map_cover');
}

function look_up_location(value){
	if ((!session_started) || (value == "Unknown")){
		alert ("You have to log in and specify your location to add your current position.");
	} else {
		$show('map_cover');
		$html('map_feedback', "Looking up your location");
		global_add_loc = value;
		global_coder.getLatLng(value, add_location);
	}
}

function add_location(point){
	if (point){
		$html('map_feedback', "Adding your location");
		var lat = point.lat();
		var lng = point.lng();
		go_to_location(point.lat(),point.lng());
		var loc = global_add_loc;
		global_add_loc = "";
		$ajax("php/set_location.php","lat="+lat+"&lng="+lng+"&loc="+loc, location_added);
	} else {
		alert ("Sorry, we cannot find your location. Please retype your address.");
	}
}

function location_added(result){
	//alert (result);
	$html('map_feedback', "Your location is added...");
	get_markers();
}

function show_signup(show){
	if (show){
		$show('signup');
		$hide('login');
	} else {
		$hide('signup');
		$show('login');
	}
}

function reset_page(){
	alert ("relaoding page..");
	location.reload(true);
}


