//whereiswaldo.js

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//	goto(tab)								
//			goto Tab
//	
//	testDraw								
//			opens map without users
//	
//	dump(arr,level)					
//			debugging dump everything
//	
//	whereWasWaldo(target_id)
//			retrive the targets earlier positionings ( up to 5) 
//			calls launchStoredPositionDialog if sucessfull
//
//	launchStoredPositionDialog(data)
//			display up to 5 stored postions		
//
//	whereIsWaldo(target_id)
//			Position target. Calls launchSinglePositionDialog
//			if successful.
//
//	launchSinglePositionDialog(data,target_id)
//			display the result of single positioning
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


function goto(tab) {  
		$('div#mainleft').find(".container").hide();
		$("#" + tab).show();  return false; 
		}
		
//////////////////////////////////////////////////////////////////
	
function testDraw(){
		mapHandler.initialize("medium" , "basic" , 0);	
		}
		
//////////////////////////////////////////////////////////////////

function dump(arr,level) {
	var dumped_text = "";
	if(!level) level = 0;
	var level_padding = "";
	for(var j=0;j<level+1;j++) level_padding += "    ";
	if(typeof(arr) == 'object') {
		for(var item in arr) {
			var value = arr[item];
			
			if(typeof(value) == 'object') { 
				dumped_text += level_padding + "'" + item + "' ...\n";
				dumped_text += dump(value,level+1);
			} else {
				dumped_text += level_padding + "'" + item + "' => \"" + value + "\"\n";
			}
		}
	} else {
		dumped_text = "===>"+arr+"<===("+typeof(arr)+")";
	}
	return dumped_text;
	}

//////////////////////////////////////////////////////////////////
	
function launchStoredPositionDialog(data){
		mapHandler.initialize("medium" , "basic"  , false);
		for(var i = 0; i < data.length; i++) {
			if(!mapHandler.userExists(data[i].target_id)) {
				mapHandler.addTarget(data[i].target_id);
				mapHandler.addStoredMarker(data[i]);
			}
		}
		
		/*
		for (var something in data)
			{
			// Has user already been added?
			if(!(mapHandler.checkUsers(data[something].target_id))){
				mapHandler.addTarget(data[something].target_id);
				}
			mapHandler.addStoredMarker(data[something]);
			}
		setTimeout("mapHandler.checkAndAddAndFit()",1000);
		*/
		setTimeout("mapHandler.checkAndAddAndFit()",1000);
	}

//////////////////////////////////////////////////////////////////
	
function launchSinglePositionDialog(data,target_id){
	//var start = new GLatLng (data.getLocationReturn.latitude , data.getLocationReturn.longitude);
	mapHandler.initialize("medium" , "basic"  , false);
	mapHandler.addTarget(target_id);
	mapHandler.addMarker(target_id , data);
	}

//////////////////////////////////////////////////////////////////
	
function loadApi(mode){
// mode 1 is POSITION  / 0 is retrive OLD
if(mode)	
	google.load("maps", "2", {"callback" : whereIsWaldo});
else
	google.load("maps", "2", {"callback" : whereWasWaldo});
}

function loadMap(mode) {
	google.load("maps", "2", {"callback" : (mode == 1 ? whereIsWaldo : whereWasWaldo)});
}

	
	
function whereWasWaldo(){
	$.ajax({		
		dataType:"json",
		url:"/ajax/get_positions.php",
		success:function(data) {
			if(data.error == true) {
				alert(data.errorString);
				$("#loading").hide();
			}
			else {
				launchStoredPositionDialog(data);
			}
			
			try {
				// If return larger  then its String Error return
				if(data.length < 6 )
					{
					$("#response1").html('</br>Done fetching ' + data.length); 
					launchStoredPositionDialog(data);
					}	
				else
					{
					$("#response1").html('</br>Fail ' + dump(data));
					}
				}
				
			catch (error) 
				{
				//alert('</br>Oh no ...' + error);
				alert(data);
				$("#loading").hide();
				}
		},
		error:function(XMLHttpRequest, textStatus, errorThrown) {
		alert("Oh no! Error:\n" + XMLHttpRequest + " " + textStatus + " " + errorThrown);
	  }
	});
	}

//////////////////////////////////////////////////////////////////
	
function whereIsWaldo(e){
	var target_id= $('#msuid').val();
	if(target_id)
	{
	//$("#response1").html('</br>Fetching Data ...'); $("#response2").html('');
	$.ajax({		
				type: 			"POST",
				dataType: 	"json",
				url:				"/ajax/position_uid.php",
				data: 			"target_id="+target_id, 
				/*success:function(data) {
					try{
							if(data.getLocationReturn.latitude)
								{
								 launchSinglePositionDialog(data , target_id );
								$("#response1").html('Finished </br>' + data.getLocationReturn.latitude + ' ' + data.getLocationReturn.longitude + '</br>');
								}
						} 
					catch (error) 
						{
						//alert('</br>Oh no ...' + error);
						alert(data);
						$("#loading").hide();
						}
				},*/
				success:function(data) {
					if(data.error == true) {
						alert(data.errorString);
						$("#loading").hide();
					}
					else {
						launchSinglePositionDialog(data, target_id);
					}
				},
				error:function(XMLHttpRequest, textStatus, errorThrown) {
					alert("Oh no! Error:\n" + XMLHttpRequest + " " + textStatus + " " + errorThrown);
					$("#response1").html('</br>FAILED');
					$("#loading").hide();
			  	}
			});
	}	
	else {
		alert("Error - Missing target_id");
		$("#loading").hide();
	}
	}		

//////////////////////////////////////////////////////////////////
	
	
function selectedDialog(){
	//mapHandler.initialize($('input:radio[name=setSize]:checked').val() , $('input:radio[name=setupMode]:checked').val() , $('input:radio[name=addTestUsers]:checked').val());
	mapHandler.initialize("medium", "basic" , "");
	
	}
	
//////////////////////////////////////////////////////////////////

function humanize(timestamp) {
	var now = new Date();
	var past = new Date(timestamp);
	if(past == null) {
		return "nån gång";
	}
	var diff = (now - past) / 1000;
	if(diff < 60*30) {
		return "just nu";
	}
	else {
		return "kl " + past.getHours() + ":" + past.getMinutes() + ", " + past.getDate() + " " + month(past.getMonth());
	}
}

function month(i) {
	var month = ["jan","feb","mar","apr","maj","jun","jul","aug","sep","okt","nov","dec"];
	return month[i];
}

/*
function CompareDates() 
{ 
    var str1 = document.getElementById("Fromdate").value;
    var str2 = document.getElementById("Todate").value;
    var dt1  = parseInt(str1.substring(0,2),10); 
    var mon1 = parseInt(str1.substring(3,5),10);
    var yr1  = parseInt(str1.substring(6,10),10); 
    var dt2  = parseInt(str2.substring(0,2),10); 
    var mon2 = parseInt(str2.substring(3,5),10); 
    var yr2  = parseInt(str2.substring(6,10),10); 
    var date1 = new Date(yr1, mon1, dt1); 
    var date2 = new Date(yr2, mon2, dt2); 

    if(date2 < date1)
    {
        alert("To date cannot be greater than from date");
        return false; 
    } 
    else 
    { 
        alert("Submitting ...");
        document.form1.submit(); 
    } 
} 

			function unixtimetodate() {
				var theDate = new Date(get_eid('unixtimestamp').value * 1000);
				var utc = document.getElementById('utc2').checked;
				//console.log("UTC2: " + utc);
 
				// This creates a unixtime in UTC
				if (utc) {
					dateString = theDate.toGMTString();
				// This creates a unixtime in localtime (accounting for the local timezone)
				} else {
					dateString = theDate.toLocaleString();
				}
				
				get_eid('output2').value = dateString;
 
				return false;
			}
	
			function datetounixtime() {
				var utc = document.getElementById('utc').checked;
				//console.log("UTC: " + utc);
			
				// This creates a unixtime in UTC
				if (utc) {
					var humDate = new Date(
						Date.UTC(
							get_eid('vyy').value,
							get_eid('vmm').value - 1,
							get_eid('vdd').value,
							get_eid('vhh').value,
							get_eid('vmin').value,
							get_eid('vsec').value
						)
					);
					get_eid('output1').value = (humDate.getTime()/1000.0);
				// This creates a unixtime in localtime (accounting for the local timezone)
				} else {
					var humDate = new Date(
						get_eid('vyy').value,
						get_eid('vmm').value - 1,
						get_eid('vdd').value,
						get_eid('vhh').value,
						get_eid('vmin').value,
						get_eid('vsec').value
					);
					get_eid('output1').value = (humDate.getTime()/1000.0);
				}
 
				return false;
			}
			
			function get_month($num) {
				if ($num == 1) { return "Jan"; }
				if ($num == 2) { return "Feb"; }
				if ($num == 3) { return "Mar"; }
				if ($num == 4) { return "Apr"; }
				if ($num == 5) { return "May"; }
				if ($num == 6) { return "Jun"; }
				if ($num == 7) { return "Jul"; }
				if ($num == 8) { return "Aug"; }
				if ($num == 9) { return "Sep"; }
				if ($num == 10) { return "Oct"; }
				if ($num == 11) { return "Nov"; }
				if ($num == 12) { return "Dec"; }
			}
*/
