// JavaScript Document



function showForm(formId){
	$("#formsSelectionHolder").hide();
	$("#"+formId).fadeIn();
	$(".alertDiv").hide();
}

function cancel(){
	$(".formHolder").hide();
	$(".alertDiv").hide();
	$("#formsSelectionHolder").fadeIn();
}


//   	GLUCOSE FORM

function showAllTags(){
	$("#moreTagsLink").hide();
	$('#tagHolder .invisible').slideDown();
	//$('#tagHolder .invisible').fadeIn("slow");
}


function resetGlucoseForm(){
	$("#gForm [suggestionText]").each(function(){
		$(this).val("");
		$(this).blur();
	});
	var counter = 0;
	$("#gForm :checkbox").each(function(){
		$(this).removeAttr("checked");
		if(counter >=4 ) $(this).parent().hide();
		counter++;
	});
	$("#createNewTagField").parent().hide();
	$("#moreTagsLink").show();
	$("#gForm option:first").attr("selected","selected");
	clearTimeDateField("gTimeDate");
}

function submitGlucoseForm(){
	$(".alertDiv").hide();
	
	var gluMeasureOk = true;
	
	var gluValueIsNumber = (IsNumeric($("#gValue").val())) ? true : false; 
	var gluValueIsSet = ($("#gValue").hasClass("withSuggestion")) ? false : true; 
	var gluValueInRange = (($("#gValue").val()*1) > 0 && ($("#gValue").val()*1) < 1000) ? true : false;
	//var gluDateTimeIsCorrect = (vlidateTime($("#gTimeDateField").val()));
	var gluDateTimeFormatIsCorrect = (!correctTimeFormat($("#gTimeDateField").val()) && $("#gWhen").val() == "other") ? false : true;
	var gluDateTimeIsCorrect = (!correctTime($("#gTimeDateField").val()) && $("#gWhen").val() == "other") ? false : true;
	
	if(gluValueIsSet){
		if(!gluValueIsNumber){
			//alert($("#gAlert1").text());
			$("#gAlert1").show();
			gluMeasureOk = false;
			//$("#alert").append("Poziom cukru nieprawid&#322;owy.<br>");
		}
		else if(!gluValueInRange){
			//alert($("#gAlert2").text());
			$("#gAlert2").show();
			gluMeasureOk = false;
			//$("#alert").append("Poziom cukru powinien by&#263; z przedzia&#322;u [0-999]<br>");
		}
		else if(!gluDateTimeFormatIsCorrect){
			$("#gAlert4").show();
			gluMeasureOk = false;
		}
		else if(!gluDateTimeIsCorrect){
			$("#gAlert5").show();
			gluMeasureOk = false;
		}
		else{
			addMeasure('g');
		}
	}
	else{
		//alert($("#gAlert3").text());
		$("#gAlert3").show();
	}
}


function showHideGlucoseTimeDate(){
	
	if($("#gWhen").val() == 'other'){
		showTimeDateField("gTimeDate");
	}
	else{
		clearTimeDateField("gTimeDate");
	}
}



//   	INSULIN FORM


function resetInsulinForm(){
	$("#iForm [suggestionText]").each(function(){
		$(this).val("");
		$(this).blur();
	});
	$("#iUnit option:first").attr("selected","selected");
	$("#iUnit").change();
	$("#iWhen option:first").attr("selected","selected");
	clearTimeDateField("iTimeDate");
}

function submitInsulinForm(){
	$(".alertDiv").hide();
	
	var insMeasureOk = true;
	
	var insValueIsNumber = (IsNumeric($("#iValue").val())) ? true : false; 
	var insValueInRange = (($("#iValue").val()*1) > 0) ? true : false;
	var insValueIsSet = ($("#iValue").hasClass("withSuggestion")) ? false : true; 
	var insUnitIsSet = ($("#iUnit").val() != "" ) ? true : false; 
	var insDateTimeFormatIsCorrect = (!correctTimeFormat($("#iTimeDateField").val()) && $("#iWhen").val() == "other") ? false : true;
	var insDateTimeIsCorrect = (!correctTime($("#iTimeDateField").val()) && $("#iWhen").val() == "other") ? false : true;
	
	if(insValueIsSet){
		if(!insValueIsNumber){
			//alert($("#iAlert1").text());
			$("#iAlert1").show();
			insMeasureOk = false;
		}
		else if(!insValueInRange){
			//alert($("#iAlert2").text());
			$("#iAlert2").show();
			insMeasureOk = false;
		}
		else if(!insUnitIsSet){
			//alert($("#iAlert3").text());
			$("#iAlert3").show();
			insMeasureOk = false;
		}
		else if(!insDateTimeFormatIsCorrect){
			$("#iAlert6").show();
			insMeasureOk = false;
		}
		else if(!insDateTimeIsCorrect){
			$("#iAlert5").show();
			insMeasureOk = false;
		}
		else{
			addMeasure('i');
		}
	}
	else{
		//alert($("#iAlert4").text());
		$("#iAlert4").show();
	}
	
}

function showHideInsulinTimeDate(){
	if($("#iWhen").val() == 'other'){
		showTimeDateField("iTimeDate");
	}
	else{
		clearTimeDateField("iTimeDate");
	}
}


// 		FOOD


function resetFoodForm(){
	$("#fForm [suggestionText]").each(function(){
		$(this).val("");
		$(this).blur();
	});
	$("#fDescription").val("");
	$("#fWhen option:first").attr("selected","selected");
	clearTimeDateField("fTimeDate");
}

function submitFoodForm(){
	$(".alertDiv").hide();
	
	var WW_isNumber  	= (IsNumeric($("#fValueWW").val())) ? true : false; 
	var WBT_isNumber 	= (IsNumeric($("#fValueWBT").val())) ? true : false; 
	
	var WW_overZero		= (($("#fValueWW").val()*1) > 0) ? true : false;
	var WBT_overZero	= (($("#fValueWBT").val()*1) > 0) ? true : false;
	var WW_inRange  	= (($("#fValueWW").val()*1) >= 0 && ($("#fValueWW").val()*1) < 256) ? true : false;   //[0-255]
	var WBT_inRange 	= (($("#fValueWBT").val()*1) >= 0 && ($("#fValueWBT").val()*1) < 256) ? true : false;   //[0-255]
	
	var WW_isSet  		= ($("#fValueWW").hasClass("withSuggestion")) ? false : true; 
	var WBT_isSet 		= ($("#fValueWBT").hasClass("withSuggestion")) ? false : true; 
	var foodDescriptionIsSet = ($("#fDescription").val() != "" ) ? true : false; 
	var foodDateTimeFormatIsCorrect = (!correctTimeFormat($("#fTimeDateField").val()) && $("#fWhen").val() == "other") ? false : true;
	var foodDateTimeIsCorrect = (!correctTime($("#fTimeDateField").val()) && $("#fWhen").val() == "other") ? false : true;
	
	var alertMsg = '';
	
	if(WW_isSet || WBT_isSet || foodDescriptionIsSet){
		 
		if(WW_isSet && !WW_isNumber){
			if(alertMsg.length > 0) alertMsg += '<br>';
			alertMsg += "Wartość WW nie jest liczbą.";
		}
		else if(WW_isSet && !WW_inRange){
			if(alertMsg.length > 0) alertMsg += '<br>';
			alertMsg += "Wartość WW musi być w przedziale 0-255.";
		}
		if(WBT_isSet && !WBT_isNumber){
			if(alertMsg.length > 0) alertMsg += '<br>';
			alertMsg += "Wartość WBT nie jest liczbą.";
		}
		else if(WBT_isSet && !WBT_inRange){
			if(alertMsg.length > 0) alertMsg += '<br>';
			alertMsg += "Wartość WBT musi być w przedziale 0-255.";
		}
		
		if((WW_isSet && WW_isNumber && WW_inRange && WW_overZero) || (WBT_isSet && WBT_isNumber && WBT_inRange && WBT_overZero) || foodDescriptionIsSet){
			
			if(alertMsg.length > 0){
				
				$("#fAlert").html(alertMsg);
				$("#fAlert").show();
				
			}else{


				addMeasure('f');
				
				
			}
		}
		else{	
			
			if((WW_isSet && WW_isNumber && !WW_overZero) && (WBT_isSet && WBT_isNumber && !WBT_overZero)){
				if(alertMsg.length > 0) alertMsg += '<br>';
				alertMsg += "Jedna z wartości WBT lub WW musi być w przedziale 1 - 255."; 
			}
			
			if(alertMsg.length > 0){
				
				$("#fAlert").html(alertMsg);
				$("#fAlert").show();
			}
		}
		

		
	}
	else{
		//alert($("#iAlert4").text());
		$("#fAlert").html('Należy wypełnić chociaż jedno z trzech pól.');
		$("#fAlert").show();
	}
	
}

function showHideFoodTimeDate(){
	if($("#fWhen").val() == 'other'){
		showTimeDateField("fTimeDate");
	}
	else{
		clearTimeDateField("fTimeDate");
	}
}


// 		NOTE

function resetNoteForm(){
	$("#nForm [suggestionText]").each(function(){
		$(this).val("");
		$(this).blur();
	});
	$("#nDescription").val("");
	$("#nWhen option:first").attr("selected","selected");
	clearTimeDateField("nTimeDate");
}

function submitNoteForm(){
	$(".alertDiv").hide();
	
	var noteMeasureOk = true;
	
	var noteDescriptionIsSet = ($("#nDescription").val() != "" ) ? true : false; 
	var noteDateTimeFormatIsCorrect = (!correctTimeFormat($("#nTimeDateField").val()) && $("#nWhen").val() == "other") ? false : true;
	var noteDateTimeIsCorrect = (!correctTime($("#nTimeDateField").val()) && $("#nWhen").val() == "other") ? false : true;
	
	if(noteDescriptionIsSet){
		
		if(!noteDateTimeFormatIsCorrect){
			$("#nAlert").html("Niepoprawny format daty.");
			$("#nAlert").show();
			noteMeasureOk = false;
		}
		else if(!noteDateTimeIsCorrect){
			$("#nAlert").html("Wprowadzona data jest błędna.");
			$("#nAlert").show();
			noteMeasureOk = false;
		}
		else{
			
			addMeasure('n');
			
		}
	}
	else{
		$("#nAlert").html("Należy wpisać treść notatki.");
		$("#nAlert").show();
	}
}

function showHideNoteTimeDate(){
	if($("#nWhen").val() == 'other'){
		showTimeDateField("nTimeDate");
	}
	else{
		clearTimeDateField("nTimeDate");
	}
}



/**********************************************************/

function showTimeDateField(field){
	$("#"+field).show();
}

function clearTimeDateField(field){
	$("#"+field).hide();
	$("#"+field+"Field").val("gg:mm dd.mm.rrrr");
}



function getVars(type){  // 'g','i','f','n'
	
	var vars = '';
	var cnt = 0;
	
	if(type == 'g' || type == 'i' || type == 'f' || type == 'n'){
		
		cnt = 1;
		
		var tp  = type;					// (string) measure type, one of "g" (glucose), "i" (insulin) or "f" (food)
		
		
		if($("#"+type+"When").val() == "other"){
			
			var timeStr = $("#"+type+"TimeDateField").val();
			
			var h = timeStr.slice(0,2);
			var mi = timeStr.slice(3,5);
			var d = timeStr.slice(6,8);
			var mo = timeStr.slice(9,11);
			var y = timeStr.slice(12);
			
			var t = y+mo+d+h+mi;
			
			//alert(y+mo+d+h+mi);
			
		}
		else{
		
			var date = new Date();
			var tm = date.getTime() - ($("#"+type+"When").val() * 60000);
			date = new Date(tm);
			
			var timeStr = "";
			timeStr += date.getFullYear();
			timeStr += (date.getMonth()+1) < 10 ? "0" : "";
			timeStr += (date.getMonth()+1);
			timeStr += date.getDate() < 10 ? "0" : "";
			timeStr += date.getDate();
			timeStr += date.getHours() < 10 ? "0" : "";
			timeStr += date.getHours();
			timeStr += date.getMinutes() < 10 ? "0" : "";
			timeStr += date.getMinutes();
			
			var t  = timeStr;
		}
		
		switch(type){
			case 'g':{
				
					var v  = $("#"+type+"Value").val(); 	// (integer) value
					var u  = 'mgdl'; // $("#"+type+"Unit").val();
					var tag = '';
		
					if(type == 'g'){
						var dot = false;
						$(".tagCheck").each(function(){
							if($(this).attr("checked")){
								if(dot)
									tag += ","; 
								
								tag += $(this).val();
								dot = true;
							}
						});
						if($("#createNewTagField:not(.withSuggestion)").length >0 ){
							
							if(tag.length > 0){
								tag += ","; 
							}
							tag +=  $("#createNewTagField:not(.withSuggestion)").val();
						};
						
					}
					
					//var d  = '';
					
				}break;
				
			case 'i':{
					var v  = $("#"+type+"Value").val(); 	// (integer) value
					var u  = $("#"+type+"Unit").val();
					var tag = '';
					//var d  = '';
				
				}break;
				
			case 'f':{
					
					var vWW  = $("#"+type+"ValueWW").val(); 	
					var vWBT  = $("#"+type+"ValueWBT").val(); 	
					
					if(!IsNumeric(vWW)) vWW = 0;
					if(!IsNumeric(vWBT)) vWBT = 0;
					
					// kodowanie dwoch wartosci
					var v = parseInt(vWW) + (parseInt(vWBT) * 256);
					
					var u  = '';
					var tag = '';
					//var d  = $("#"+type+"Description").val();
					
				}break;
			case 'n':{
					var v = 0;
					var u  = '';
					var tag = '';
					//var d  = $("#"+type+"Description").val();
				}break;
		}
		
		var d  = $("#"+type+"Description").val();
		
		 	// (string) unit, one of "mmoll","mgdl","humalog","lantus"
		
		
		
		vars = "cnt="+cnt+"&tp0="+tp +"&v0="+v +"&u0="+u +"&t0="+t +"&tag0="+tag +"&d0="+d;
	}
	
	return vars;
}




function addMeasure(type){
	
	var vars = getVars(type);
	
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		url: "m/v1.0/saveInBrowser.php",				//--------------------- url
		data: vars,
		dataType: "json",
		beforeSend: function(){							//--------------------- beforeSend
			
			$("#loading").show();
		},
		success: function(data){
			cancel();
			if(data.error > 0){
				$("#addMeasureErrorAlert").html('Błąd zapisu pomiaru.');
				$("#addMeasureErrorAlert").show();
			}
			else{
				$("#addMeasureSuccessAlert").html('Pomiar został dodany.');
				$("#addMeasureSuccessAlert").show();
			}
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			
			switch (type){
				case 'i':{ resetInsulinForm(); }break;	
				case 'g':{ resetGlucoseForm(); reloadTags(); }break;
				case 'f':{ resetFoodForm(); }break;	
				case 'n':{ resetNoteForm(); }break;
			}
			
		}
	});
	
}
	



function updateClock ( )
{
	var currentTime = new Date ( );
	
	var currentDay = currentTime.getDate();
	var currentMonth = currentTime.getMonth();
	var currentYear = currentTime.getFullYear();
	var currentHours = currentTime.getHours();
	var currentMinutes = currentTime.getMinutes();
	var currentSeconds = currentTime.getSeconds();
	
	currentHours = ( currentHours < 10 ? "0" : "" ) + currentHours;
	currentMinutes = ( currentMinutes < 10 ? "0" : "" ) + currentMinutes;
	currentSeconds = ( currentSeconds < 10 ? "0" : "" ) + currentSeconds;
	
	// require php document included: 'app_month_names.php'
	currMonth = $(".monthName:eq("+currentMonth+")").text();
	
	var currentDateString = currentDay +" "+ currMonth +" "+ currentYear;
	var currentTimeString = currentHours + ":" + currentMinutes; // + ":" + currentSeconds;
	
	// Update the time display
	$("#dateTimeHolder #date").text(currentDateString);
	$("#dateTimeHolder #time").text(currentTimeString);
}





function reloadTags(){
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		url: "results/addMeasure/getTags.php",			//--------------------- url
		dataType: "json", 
		beforeSend: function(){							//--------------------- beforeSend
			$("#loading").show();
			$("#reloadedContent").html("");
		},
		success: function(tags){ 						//--------------------- success
			//alert("len: "+$(".tag").length);
			for(var i=0;i<tags.length;i++){
				$("#reloadedContent").append(tags[i]);
			}
			if(tags.length <= 3)
				$(".newtag").show();
			//$("#reloadedContent").html(msg);
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			
		}
	});	
}



function IsNumeric(sText)

{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;

 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
      {
         IsNumber = false;
      }
   }
   return IsNumber;
   
}




jQuery(document).ready(function(){
	
	if($("#addMeasureBox").size() > 0){
		reloadTags();
		updateClock(); 
		setInterval('updateClock()', 1000 );
	};
	
	
});

