// JavaScript Document

function popUp(URL) {
	day = new Date();
	id = day.getTime();
	eval("page" + id + " = window.open(URL, 'info', 'toolbar=0,scrollbars=1,location=0,statusbar=0,menubar=0,resizable=no,width=500,height=300,left = 390,top = 250');").focus();
}


function setSessionVars(day,month,year,chartMode){
	
	var vars;
	vars = "day=" + day + "&month=" + month + "&year=" + year + "&chartMode=" + chartMode;
	
	var checkOut = false;
	
	$.ajax({ 
		type: "POST", 
		
		url: "results/ajaxDocs/setSessionVars.php",
		data: vars,
		beforeSend: function(){	
			$("#loading").show();
		},
		success: function(msg){
			//alert("setSessionVars:\n"+msg);
			
			checkOut = true;
			
		},
		complete: function(){
			$("#loading").hide();
			if(!checkOut)
				alert("setSessionVars\nerror: checkOut="+checkOut);
			reloadComponents();
		}
	});
	
	return checkOut;
}



//********************************************************************************************************
//**************************************** RELOAD COMPONENTS *********************************************
//********************************************************************************************************
function reloadComponents(){
	
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		dataType: "json",								//--------------------- dataType
		url: "results/getResultsData.php",				//--------------------- url
		beforeSend: function(){							//--------------------- beforeSend
			$("#loading").show();
			swfObject("wykres").clearChart();
			swfObject("wykres").showLoading();
		},
		success: function(data){ 						//--------------------- success
//			alert("1a");
			//alert("unpaid: "+data.countMeasures.unpaid);
			$("#alertOverChart").html("");
			if(data.countMeasures.unpaid > 0){
				$("#alertOverChart").html("<b style='color:red;'>W tym okresie masz nieopłacone pomiary</b>");
			}
//			alert("1b");
			// INSULIN
			if(data.chartSettings.insulinMode == 1){
				$("#insulinModeCheckbox").attr("checked","checked");
			}
//			alert("1c");
			// FOOD
			if(data.chartSettings.foodMode == 1){
				$("#foodModeCheckbox").attr("checked","checked");
			}
//			alert("1d");
			reloadChartHeader(data);
			reloadCalendarDays();
			reloadChartSettings(data);
//			alert("2");
			reloadStatsForData(data);
//			alert("3");
			displayMeasuresForData(data);
//			alert("4");
			reloadChartForData(data);
//			alert("5");
			updateInsMode();
			updateFoodMode();
			displayMeasuresForSelectedTags();
//			alert("6");
			if(data.countMeasures.all == 0){
				
				swfObject("wykres").showAlert("Brak pomiarów w tym okresie");
				
			}
//			alert("7");
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			swfObject("wykres").hideLoading();
		}
	});	
	
};




//***********************************************************************************  RELOAD -- CHART HEADER
function reloadChartHeader(data){
	
	$("#dateDisplay").html(data.chartSettings.chartHeader);
	
}

//***********************************************************************************  RELOAD -- CHART SETTINGS
function reloadChartSettings(data){
	
	// GLUCOSE
	var area = $("#chartSettings #tagsMode .content");
	if(!area.html()){
		// UNTAGGED
		
		//alert("display untagged set on: "+data.chartSettings.displayUntagged);
		
		if(data.chartSettings.displayUntagged == 1)
			var checked = "checked='checked'";
		else
			var checked = "";
		
		var tmpStr = "<div><input id='untaggedCheckbox' type='checkbox' "+checked+" class='tagCheckbox' untagged='untagged' onclick='displayMeasuresForSelectedTags()'>";
		if(data.countMeasures.untagged > 0 ){
			tmpStr += "<span class='tagNameSpan' untagged='untagged'><label for='untaggedCheckbox'>...nieoznaczone</label></span>";
		}
		else{
			tmpStr += "<span class='tagNameSpan' untagged='untagged' style='color: #666; font-style:italic;'><label for='untaggedCheckbox'>...nieoznaczone</label></span>";
		}
		tmpStr += "</div>";
		
		area.append(tmpStr);
		
		// USER ALL TAGS
		for (i in data.userAllTags){
			var tagName = data.userAllTags[i].name;
			var tagId = data.userAllTags[i].id;
			var tagCount = data.userAllTags[i].count;
			if(data.userAllTags[i].display)
				var checked = "checked='checked'";
			else
				var checked = "";
			var dispStr = "<div><input id='tagCheckbox_"+tagId+"' type='checkbox' "+checked+" class='tagCheckbox' tName='"+tagName+"' tId='"+tagId+"' onclick='displayMeasuresForSelectedTags()'>";
			if(tagCount > 0){
				dispStr += "<span class='tagNameSpan' tId='"+tagId+"'><label for='tagCheckbox_"+tagId+"'>"+ tagName +"</label></span>";
			}
			else{
				dispStr += "<span class='tagNameSpan' tId='"+tagId+"' style='color: #666; font-style:italic;'><label for='tagCheckbox_"+tagId+"'>"+ tagName +"</label></span>";
			}
			dispStr += "</div>";
			area.append(dispStr);
		}
		area.append("<div>zaznacz: <a href='javascript: selectAllTags()'>Wszystkie</a> | <a href='javascript: selectNoneTags()'>Żaden</a></div>");
	}
	else{
		$(".tagNameSpan").css("color","#999");
		$(".tagNameSpan").css("font-style","italic");
		for (i in data.userAllTags){
			var tagId = data.userAllTags[i].id;
			var tagCount = data.userAllTags[i].count;
			if(tagCount > 0){
				$(".tagNameSpan[tId="+tagId+"]").css("color","#333");
				$(".tagNameSpan[tId="+tagId+"]").css("font-style","normal");
			}
		}
		if(data.countMeasures.untagged > 0 ){
			$(".tagNameSpan[untagged]").css("color","#333");
			$(".tagNameSpan[untagged]").css("font-style","normal");
		}
	}
	
}

//***********************************************************************************  RELOAD -- STATS
function reloadStatsForData(data){
	$("#glucoseDistribution .invisible").hide();
	$("#diabetesRateStats").html("");
	$("#insulinStats").html("");
	$("#tagsStats").html("");
	
	var sum = data.countMeasures.glucose;
	var max = 0;
	var width = 170;
	var proc = 0;
	
	
	// wyrownanie cukrzycy
	
	for(i=0;i<5;i++){
		if(max < data.stats.ratingStats[i].count){ max = data.stats.ratingStats[i].count; }  
	}
	
	
	//faces
	var rate = data.stats.glikemiaRate;
	
	
	if		(rate >= 0.8){	$("#happyFace").show(); }
	else if	(rate >= 0.6){	$("#hmmFace").show(); }
	else if	(rate > 0){ 	$("#sadFace").show(); }
	else{ 					$("#surpriseFace").show(); }
	
	
	
	if(data.countMeasures.glucose > 0){
		// diabetic procent rating
		
		
		for(i=0;i<5;i++){
			if(sum > 0){
				proc = Math.round((data.stats.ratingStats[i].count/sum)*100);
			}
			$("#diabetesRateStats").append(''+
					'<div class="statHolder" style="width:'+width+'px; margin:auto">'+
					'<div class="statProc floatRight">'+proc+'%</div>'+
					'<div class="statLabel">'+data.stats.ratingStats[i].name+'('+data.stats.ratingStats[i].count+')'+'</div>'+
					'<div id="glucose_'+i+'" class="stat" style="width:'+ ((data.stats.ratingStats[i].count/max)*width) +'px;" >'+
					'</div>'+
					'</div>');
		}
	}
	
	
	if(data.countMeasures.insulin > 0){ 
		// insulin stats
		$("#insulinStats").append('<table></table>');
		for(i = 0; i < data.stats.insulinStats.length; i ++){
			$("#insulinStats table").append('<tr>'+
					'<td>' + 
					data.stats.insulinStats[i].name + 
					'</td>'+
					'<td>'+
					'<b>'+
					data.stats.insulinStats[i].dayRate + 
					'</b>'+
					'</td>'+
					'</tr>');
		}
	}
	
	
	if(data.countMeasures.glucose > 0){
		// tags
		var scale = width / data.chartSettings.gRange;
		
		var ctAll = data.stats.tagStats.forAll.count;
		
		var forAll = new Array(data.stats.tagStats.forAll);
		
		if(data.stats.tagStats.byTagName)
			var allTagStats = forAll.concat(data.stats.tagStats.byTagName);
		else
			var allTagStats = forAll;
		
		var lvlWidths = new Array();
		var lvlVal = 0;
		for(i = 0; i < data.chartSettings.userLevels.length; i++){
			lvlWidths.push(( data.chartSettings.userLevels[i] - lvlVal ) * scale);
			lvlVal = data.chartSettings.userLevels[i];
			//alert(lvlWidths[i]);
		}
		lvlWidths.push(( data.chartSettings.gRange - lvlVal ) * scale);
		
		for(i = 0; i < allTagStats.length; i++){
			var nm = allTagStats[i].name;
			var av = Math.round(allTagStats[i].average * scale);
			var dv = Math.round(allTagStats[i].deviation * scale);
			var ct = allTagStats[i].count;
			proc = Math.round( ( ct / ctAll ) * 100 );
			
			$("#tagsStats").append(''+
				'<div class="tag">'+
					'<div class="floatRight tagTitle">'+proc+'%</div>'+
					'<div class="tagTitle">'+nm+' ('+ct+')</div>'+
					//'<div class="tagRange " style="width:'+(2*dv)+'px; margin-left:'+(av-dv)+'px;"></div>'+
					'<div class="tagRangeAvrage" style="width:2px; margin-left:'+av+'px;"></div>'+
					'<div class="tagRangeLeft" style="width:2px; margin-left:'+(av-dv)+'px;"></div>'+
					'<div class="tagRangeRight" style="width:2px; margin-left:'+(av+dv)+'px;"></div>'+
					'<div class="tagBackground">'+
						'<table class="tagTable" cellpadding="0" cellspacing="0">'+
							'<tr>'+
								'<td class="tagTd td_0" style="width:'+lvlWidths[0]+'px;"></td>'+
								'<td class="tagTd td_1" style="width:'+lvlWidths[1]+'px;"></td>'+
								'<td class="tagTd td_2" style="width:'+lvlWidths[2]+'px;"></td>'+
								'<td class="tagTd td_3" style="width:'+lvlWidths[3]+'px;"></td>'+
								'<td class="tagTd td_4" style="width:'+lvlWidths[4]+'px;"></td>'+
							'</tr>'+
						'</table>'+
					'</div>'+
				'</div>');
			
		}	
		
	}
	
	
}

//***********************************************************************************  RELOAD -- CHART
function reloadChartForData(data){
	
	
	swfObject("wykres").clearChart();
	//swfObject("wykres").showAlert("czekaj...");

	var allMeasures = new Array();
	
	for (i in data.measures){
		
		var id = data.measures[i].id;
		var userId = data.measures[i].userId;
		var type = data.measures[i].type;
		var value = data.measures[i].value;
		var unit = data.measures[i].unit;
		var time = data.measures[i].time;
		var mobileTime = data.measures[i].mobileTime;
		var msTime = data.measures[i].msTime;
		var msMobileTime = data.measures[i].msMobileTime;
		var description = data.measures[i].description;
		var tag = data.measures[i].tag;
		var src = data.measures[i].src;
			
		//alert(time);
		
		m = new Array(id,userId,type,value,unit,time,mobileTime,msTime,msMobileTime,description,tag,src);
		
		allMeasures.push(m);
		
	}
	
	//var strshow = allMeasures.toString();
	
	//alert(strshow);
	
	var gRange = data.chartSettings.gRange;
	var iRange = data.chartSettings.iRange;
	var fRange = data.chartSettings.fRange;
	var chartType = data.chartSettings.chartType;
	
	swfObject("wykres").initialSettings(data.chartSettings.userLevels,gRange,iRange,fRange,chartType,new Array(),new Array());
	if(allMeasures.length > 0)
		swfObject("wykres").addAllMeasures(allMeasures);
	
	//swfObject("wykres").initialSettings(data.chartSettings.userLevels,400,25,10,2,new Array(),new Array());
	
	
	//swfObject("wykres").setLevels(data.chartSettings.userLevels[0],data.chartSettings.userLevels[1],data.chartSettings.userLevels[2],data.chartSettings.userLevels[3]);
	
	//swfObject("wykres").drawChart(2,1);
	
	

}

//***********************************************************************************  RELOAD -- DISPLAY MEASURES
function displayMeasuresForData(data){
	
	$('#measuresList').html("");
	
	if(data.measures.length > 0){
		
		for (i in data.selectedDays){
			
			$('#measuresList').append("<div id='date_"+data.selectedDays[i].date+"' class='measuresListHolder'>"+
					"<div class='title' style='text-align:left; padding-left:10px;'>"+
					data.selectedDays[i].strDate+", "+data.selectedDays[i].weekDay+
					"<span style='float:right; padding-right: 20px;'>Opcje</span></div>" +
					"<table class='content' cellpadding='0' cellspacing='0' width='100%'></table>"+
				"</div>");
			
		}
		
		
		for(i in data.measures){
			
			var dateStr = data.measures[i].time.substr(0,10);
			var dateYear = data.measures[i].time.substr(0,4);
			var dateMonth = data.measures[i].time.substr(5,2);
			var dateDay = data.measures[i].time.substr(8,2);
			var dateInputStr = dateDay+"."+dateMonth+"."+dateYear;
			var timeStr = data.measures[i].time.substr(11,5);
			
			var measureStr = data.measures[i].translate.str;
			var id = data.measures[i].id;
			var unit = data.measures[i].translate.unit;
			var value = data.measures[i].value;
			var description = data.measures[i].description;
			var tags = data.measures[i].tag;
			var type = data.measures[i].type;
			
			var mTxtStr = measureStr;
			
			var editDescTR = "";
			
			switch(type){
			  case 'g':{
				mTxtAlign = "left";
				
				divsWithAllTags = "";
				divsWithTag = "";
				optionsWithTags = "<option></option>";
				
				for(t in data.userAllTags){
					var arrTagName = data.userAllTags[t].name;
					var optDefaultAndAdded = "";
					if(tags.search(arrTagName) >= 0){
						optDefaultAndAdded = "default='default' added='added'";
					}
					divsWithAllTags += "<div "+optDefaultAndAdded+" tName='"+arrTagName+"'>"+arrTagName+"</div>";
					
				}
				
				editHeaderTDs = "<td align='left'>Wartość:</td><td align='left'>Etykiety:</td>";
				editInputTDs = "" +
					"<td align='left'><input id='value_measure_"+id+"' type='text' value='"+value+"' default='"+value+"' style='width:30px; text-align:right;'> "+unit+"</td>" +
					"<td align='left'>" +
						"<div id='invisible_all_tag_list_"+id+"' class='invisible'>"+ divsWithAllTags +"</div>" +
						"<div id='added_tag_list_"+id+"'></div>" +
						"<div style='color:#666;font-style:italic;'>Dodaj:</div>" +
						"<select id='tag_options_m_"+id+"' style='width:170px;' onchange='addTagToList(\""+id+"\")'></select>" +
					"</td>";
				
				editDescTR = 	"<tr><td colspan='5'>Komentarz: &nbsp;&nbsp;" +
								"<textarea cols='77' style='height:16px;' id='description_measure_"+id+"' default='"+description+"'>"+description+"</textarea>"+
								"</td></tr>";
			  }break;
			  case 'i':{
				mTxtAlign = "right";
				
				optionsWithInsulin = "";
				
				for(ins in data.availableInsulins){
					var insId = data.availableInsulins[ins].id;
					var insName = data.availableInsulins[ins].name;
					optionsWithInsulin += "<option ";
					if(insName == unit)
						optionsWithInsulin += "default='default' selected='selected' ";
					optionsWithInsulin += "value='"+insId+"'>"+insName+"</option>";
				}
				
				editHeaderTDs = "<td align='left'>Wartość:</td><td align='left'>Wybierz rodzaj insuliny:</td>";
				editInputTDs = "" +
					"<td align='left'><input id='value_measure_"+id+"' type='text' value='"+value+"' default='"+value+"' style='width:30px; text-align:right;'> j. insuliny</td>" +
					"<td align='left'><select id='unit_measure_"+id+"'>"+optionsWithInsulin+"</select></td>";
				
				editDescTR = 	"<tr><td colspan='5'>Komentarz: &nbsp;&nbsp;" +
								"<textarea cols='77' style='height:16px;' id='description_measure_"+id+"' default='"+description+"'>"+description+"</textarea>"+
								"</td></tr>";
			  }break;
			  case 'f':{
				mTxtAlign = "center";
				
				var vWW = value%256;
				var vWBT = Math.floor(value/256);
				
				editHeaderTDs = "<td align='left'>Wartość:</td><td align='left'>Opis:</td>";
				editInputTDs = "" +
					"<td align='left'>" +
					"<input id='valueWW_measure_"+id+"' type='text' value='"+vWW+"' default='"+vWW+"' style='width:30px; text-align:right;'> WW<br>"+
					"<input id='valueWBT_measure_"+id+"' type='text' value='"+vWBT+"' default='"+vWBT+"' style='width:30px; text-align:right;'> WBT"+
					"</td>" +
					"<td align='left'><textarea cols='30' id='description_measure_"+id+"' default='"+description+"'>"+description+"</textarea></td>";
				 
			  }break;
			  case 'n':{
					mTxtAlign = "center";
					
					editHeaderTDs = "<td colspan='2' align='left'>Notatka:</td>";
					editInputTDs = "" +
						"<td colspan='2' align='left'>" +
							"<input id='value_measure_"+id+"' type='hidden' value='"+value+"'>"+
							"<textarea cols='45' rows='3' id='description_measure_"+id+"' default='"+description+"'>"+description+"</textarea>" +
						"</td>";
					 
				  }break;
			}
			
			
			
			// measure display
			
			var measureDisplayStr = "" +
				"<tr id='display_measure_"+id+"' mType='"+type+"'>"+
					"<td align='left' style='width:80px; padding-left:20px;' valign='top'>"+
						timeStr +
					"</td>" +
					"<td align='"+mTxtAlign+"'>"+ mTxtStr +"</td>" +
					"<td align='right' style='width:80px; padding-right:20px;' valign='top'>" +
						"<a href='javascript: showDeleteForMeasure(\""+id+"\")'><img src='images/deleteIcon.png' border='0'/></a> | "+
						"<a href='javascript: showEditForMeasure(\""+id+"\")'><img src='images/editIcon.png' border='0'/></a>"+
					"</td>"+
				"</tr>";
			
			// measure edit
			
			var measureEditStr = "" +
				"<tr id='edit_measure_"+id+"' style='display: none;'>"+
					"<td colspan='3' align='left' style='padding-left:20px; padding-right:20px;'>" +
						"<form class='measureForm'>" +
						"<table width='100%'>" +
							"<tr>" +
								"<td width='10%' align='left'>Godzina:</td>" +
								"<td width='15%' align='left'>Data:</td>" +
								editHeaderTDs +
								"<td align='right' width='20%'>Czy zapisać zmiany?</td>" + 
							"</tr>" +
							"<tr>" +
								"<td align='left'>" +
									"<input id='type_measure_"+id+"' type='hidden' value='" + type + "'/>" +
									"<input id='time_measure_"+id+"' type='text' value='" + timeStr + "' default='" + timeStr + "' style='width:40px;'><br><span style='color:#666;font-style:italic;'>gg:mm</span>" +
								"</td>" +
								"<td align='left'><input id='date_measure_"+id+"' type='text' value='" + dateInputStr + "' default='" + dateInputStr + "' style='width:70px;'><br><span style='color:#666;font-style:italic;'>dd.mm.rrrr</span></td>" +
								editInputTDs +
								"<td align='right'>" +
									"<a href='javascript:updateMeasure(\""+id+"\")'>Zapisz</a> | " +
									"<a href='javascript:cancelMeasureForms(\""+id+"\")'>Anuluj</a>" +
								"</td>" +
							"</tr>" +
							editDescTR +
						"</table>" +
						"</form>" +
					"</td>" +
				"</tr>";
			
			// measure delete
			
			var measureDeleteStr = "" +
				"<tr id='delete_measure_"+id+"' style='display: none;'>"+
					"<td align='left' style='width:80px; padding-left:20px;' valign='top'>"+
						timeStr +
					"</td>" +
					"<td align='"+mTxtAlign+"'>" +
						mTxtStr +
						"<div style='text-align: center;'>" +
							"Czy skasować ten pomiar? " +
							"<a href='javascript:deleteMeasure(\""+id+"\")'>Usuń</a> | " +
							"<a href='javascript:cancelMeasureForms(\""+id+"\")'>Anuluj</a>" +
						"</div>" +
					"</td>" +
					"<td align='right' style='width:80px; padding-right:20px;'></td>"+
				"</tr>";
			
			$('#date_'+dateStr+' .content').append(measureDisplayStr+measureEditStr+measureDeleteStr);
			
			refreshDivList(id);
			refreshOptionList(id);
		}
		
	}
		
}



//******************* FUNCTIONS ***************************


//********************** funkcje pomocnicze do wyswietlania pomiarów pod wykresem ************************************
function createDivWithTag(id,tName){
	return "";
}
function createOptionWithTag(id,tName){
	return "";
}
function refreshDivList(id){
	$('#added_tag_list_'+id).html("");
	$("#invisible_all_tag_list_"+id+" div").each(function(){
		if($(this).attr("added")){
			var tName = $(this).attr("tName");
			$('#added_tag_list_'+id).append("<div class='tag' tName='"+tName+"'>" + tName + 
				"<a href='javascript: removeTagFromList(\""+id+"\",\""+ tName +"\")'>"+
				"<img src='images/deleteIcon.png' border='0' style='float:right;'/>"+
				"</a>" +
				"</div>");
		}
	});
}
function refreshOptionList(id){
	$("#tag_options_m_"+id).html("<option></option>");
	$("#invisible_all_tag_list_"+id+" div").each(function(){
		if(!$(this).attr("added")){
			var tName = $(this).attr("tName");
			$('#tag_options_m_'+id).append("<option onclick='addTagToList(\""+ id +"\",\""+ tName +"\")' value='"+tName+"'>"+tName+"</option>");
		}
	});
}

function addTagToList(id){
	var tName = $('#tag_options_m_'+id).val();
	if(tName.length > 0){
		
		$("#invisible_all_tag_list_"+id+" div[tName="+tName+"]").attr("added","added");
		
//		$('#added_tag_list_'+id).append(createDivWithTag(id,tName));
//		$('#tag_options_m_'+id+' option[value='+tName+']').remove();
//		$('#tag_options_m_'+id+' option:first').attr('selected','selected');
		
		refreshDivList(id);
		refreshOptionList(id);
	}
}
function removeTagFromList(id,tName){
	$("#invisible_all_tag_list_"+id+" div[tName="+tName+"]").removeAttr("added","added");
	
	refreshDivList(id);
	refreshOptionList(id);
	
//	$('#added_tag_list_'+id+' div[tName='+tName+']').remove();
//	$('#tag_options_m_'+id).append(createOptionWithTag(id,tName));
	
}
function showDeleteForMeasure(id){
	$("#display_measure_"+id).hide();
	$("#delete_measure_"+id).show();
}
function showEditForMeasure(id){
	$("#display_measure_"+id).hide();
	$("#edit_measure_"+id).show();
}
function cancelMeasureForms(id){
	
	$("#delete_measure_"+id).hide();
	$("#edit_measure_"+id).hide();
	$("#display_measure_"+id).show();
	
	// reset data form
	
	resetMeasureEditForm(id);
}
function resetMeasureEditForm(id){
	
	$("#edit_measure_"+id+" input[default]").each(function(){
		$(this).val($(this).attr("default"));
	});
	
	// glucose only
	if($("#display_measure_"+id).attr('mType') == 'g'){
		
		$("#invisible_all_tag_list_"+id+" div").each(function(){
			$(this).removeAttr('added');
			if($(this).attr('default')){
				$(this).attr('added','added');
			}
		});
		
		refreshDivList(id);
		refreshOptionList(id);
	}
	
	// insulin only
	if($("#display_measure_"+id).attr('mType') == 'i'){
		$("#unit_measure_"+id+" option[default]").attr("selected","selected");
	}
	
	$("#edit_measure_"+id+" textarea[default]").each(function(){
		$(this).val($(this).attr("default"));
	});
}

// ************************************** funkcje ajaksowe usuwania i edytowania pomiaru ******************************************************
function deleteMeasure(id){
	
	//alert("delete");
	
	var vars = "id="+id;
	
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		url: "results/display/deleteMeasure.php",		//--------------------- url
		dataType: "json",
		data: vars,
		beforeSend: function(){							//--------------------- beforeSend
			$("#loading").show();
		},
		success: function(data){ 						//--------------------- success
			if(data.error < 0){
				//alert(data.msg);
				$("#delete_measure_"+id).remove();
				$("#edit_measure_"+id).remove();
				$("#display_measure_"+id).remove();
			}
			else
				alert(data.msg);
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			reloadComponents();
		}
	});
	
}
function updateMeasure(id){
	
	var value; 
	var valueIsNumber = true;
	if($("#display_measure_"+id).attr('mType') == 'f'){
		vWW =$("#valueWW_measure_"+id).val();
		vWBT = $("#valueWBT_measure_"+id).val();
		if(!isIntegerNumber(vWW) || !isIntegerNumber(vWBT)){ 
			valueIsNumber = false;
		}
		else{
			value = parseInt(vWW) + (parseInt(vWBT) * 256);
		}
		
	}else
		value = $("#value_measure_"+id).val();
	
	var time = $("#time_measure_"+id).val();
	var date = $("#date_measure_"+id).val();
	var description = $("#description_measure_"+id).val() || "";
	var unit = $("#unit_measure_"+id).val() || "";
	var type = $("#type_measure_"+id).val();
	
	var tags = "";
	$('#added_tag_list_'+id+' div').each(function(){
		if(tags.length > 0) tags += ",";
		tags += $(this).attr("tName");
	});
	
	if(isIntegerNumber(value) && valueIsNumber){
		if(dateFormatIsCorrect(date)){
			if(timeFormatIsCorrect(time)){
				var vars = 	"id=" + id + "&" +
							"value=" + value + "&" +
							"time=" + time + "&" +
							"date=" + date + "&" +
							"description=" + description + "&" +
							"unit=" + unit + "&" +
							"tags=" + tags;
				
				$.ajax({ 
					type: "POST", 	
					url: "results/display/updateMeasure.php",
					dataType: "json",
					data: vars,
					beforeSend: function(){
						$("#loading").show();
					},
					success: function(data){
						if(data.error > 0)
							alert(data.msg);
					},
					complete: function(){
						$("#loading").hide();
						reloadComponents();
					}
				});	
			
			}
			else {
				alert("Niepoprawny format godziny!");
			}
		}
		else{
			alert("Niepoprawny format daty!");
		}
	}
	else{
		alert("Wartość nie jest liczbą!");
	}
}

function timeFormatIsCorrect(str){
	var number = "0123456789";
	var h = parseInt(str.slice(0,2),10);
	var m = parseInt(str.slice(3,5),10);
	var isCorrect = true;
	
	if(str.slice(2,3) != ':') isCorrect = false;
	if(str.length != 5) isCorrect = false;
	if(h < 0 || h > 23) isCorrect = false; 
	if(m < 0 || m > 59) isCorrect = false;
	
	if(!isIntegerNumber(h)) isCorrect = false;
	if(!isIntegerNumber(m)) isCorrect = false;
	
	return isCorrect;
}
function dateFormatIsCorrect(str){
	var number = "0123456789";
	var d = parseInt(str.slice(0,2),10);
	var m = parseInt(str.slice(3,5),10);
	var isCorrect = true;
	
	if(str.slice(2,3) != '.' || str.slice(5,6) != '.') isCorrect = false;
	if(str.length != 10) isCorrect = false;
	if(d < 1 || d > 31) isCorrect = false;
	if(m < 1 || m > 12) isCorrect = false;
	
	if(!isIntegerNumber(d)) isCorrect = false;
	if(!isIntegerNumber(m)) isCorrect = false;
	
	return isCorrect;
}

function isIntegerNumber(str){
	var number = "0123456789";
	var isCorrect = true;
	
	for (i = 0; i < str.length && isCorrect == true; i++){
		if(number.indexOf(str.charAt(i)) == -1) isCorrect = false;
	}
	
	return isCorrect;
}



/////// OTHER ///////

// SHART SETTINGS ON CHANGE FUNCTIONS
function updateInsMode(){
	if($("#insulinModeCheckbox").attr("checked")){
		setInsMode(1);
		swfObject("wykres").showInsulin();
	}
	else{
		setInsMode(0);
		swfObject("wykres").hideInsulin();
	}
}
function updateFoodMode(){
	if($("#foodModeCheckbox").attr("checked")){
		setFoodMode(1);
		swfObject("wykres").showFood();
	}
	else{
		setFoodMode(0);
		swfObject("wykres").hideFood();
	}
}
function displayMeasuresForSelectedTags(){  // updateTagsDisplayedOnChart
	
	var tagsArr = new Array();
	var tagsIdArr = new Array();
	$(".tagCheckbox:not([untagged])").each(function(){
		if($(this).attr("checked")){
			tagsArr.push($(this).attr("tName"));
			tagsIdArr.push($(this).attr("tId"));
		}
	});
	
	var displayUntaggedMeasures = false;
	if($(".tagCheckbox[untagged]").attr("checked")){
		displayUntaggedMeasures = true;
	}
	
	setDisplayedTags(tagsIdArr,displayUntaggedMeasures);
	
	//alert("tags:"+tagsArr + "\nuntagged:" + displayUntaggedMeasures);
	
	swfObject("wykres").showMeasuresWithTags(tagsArr,displayUntaggedMeasures);
	
}
function selectAllTags(){
	$(".tagCheckbox").attr("checked","checked");
	displayMeasuresForSelectedTags();
}
function selectNoneTags(){
	$(".tagCheckbox").removeAttr("checked");
	displayMeasuresForSelectedTags();
}

/*************************************************************************************************************************/
/******************************************************** SESSION ********************************************************/
/*************************************************************************************************************************/

// SAVING DATA FROM CHART SETTINGS INTO SESSION  

function setChartMode(chartMode){
	var vars = "chartMode=" + chartMode;
	$.ajax({
		type: "POST",
		url: "results/sessionControllers/setChartMode.php",
		dataType:"json",
		data: vars,
		beforeSend: function(){								
			$("#loading").show();
		},
		success: function(data){
			if(!data.success){
				alert(data.info);
			}
		},
		complete: function(){
			$("#loading").hide();
			reloadChartModeSelection(chartMode);
			reloadComponents();
		}
	});		
}
function setInsMode(insMode){
	var vars = "insMode=" + insMode;
	$.ajax({
		type:"POST",
		url:"results/sessionControllers/setInsMode.php",
		dataType: "json",
		data: vars,
		beforeSend: function(){
			$("#loading").show();
		},
		success: function(data){
			if(!data.success){
				alert(data.info);
			}
		},
		complete: function(){
			$("#loading").hide();
		}
	});
}
function setFoodMode(foodMode){
	var vars = "foodMode=" + foodMode;
	$.ajax({
		type:"POST",
		url:"results/sessionControllers/setFoodMode.php",
		dataType: "json",
		data: vars,
		beforeSend: function(){
			$("#loading").show();
		},
		success: function(data){
			if(!data.success){
				alert(data.info);
			}
		},
		complete: function(){
			$("#loading").hide();
		}
	});
}
function setDisplayedTags(tagsArr,displayUntaggedMeasures){
	var vars = "";
	var cnt = 0;
	for(i in tagsArr){
		vars += "&tag"+i+"="+tagsArr[i];
		cnt++;
	}
	if(displayUntaggedMeasures)
		var untagged = "untagged=1";
	else
		var untagged = "untagged=0";
	vars = "cnt="+cnt+"&" + untagged + vars;
	//alert(vars);
	$.ajax({
		type:"POST",
		url:"results/sessionControllers/setDisplayedTags.php",
		dataType: "json",
		data: vars,
		beforeSend: function(){
			$("#loading").show();
		},
		success: function(data){
			//alert(data.info);
			if(!data.success){
				alert(data.info);
			}
		},
		complete: function(){
			$("#loading").hide();
		}
	});
} 

// CHART HEADER NAVIGATION (PREV, NEXT, TODAY, REFRESH)

function setPrevDate(){
	$.ajax({ 											
		type: "POST", 									
		url: "results/sessionControllers/setPrevDate.php",	
		dataType: "json",
		beforeSend: function(){							
			$("#loading").show();
		},
		success: function(data){ 						
			//alert(data.newDate);
		},
		complete: function(){     						
			$("#loading").hide();
			reloadComponents();
		}
	});	
}
function setNextDate(){
	$.ajax({ 					
		type: "POST", 						
		url: "results/sessionControllers/setNextDate.php",	
		dataType:"json",
		beforeSend: function(){	
			$("#loading").show();
		},
		success: function(data){ 			
			//alert(data.newDate);
		},
		complete: function(){     
			$("#loading").hide();
			reloadComponents();
		}
	});
}
function setToday(){
	$.ajax({ 											
		type: "POST", 									
		url: "results/sessionControllers/setToday.php",	
		dataType:"json",
		beforeSend: function(){							
			$("#loading").show();
		},
		success: function(data){ 						
			//alert(data.newDate);
		},
		complete: function(){     						
			$("#loading").hide();
			reloadComponents();
		}
	});
}

// REFRESH ALL

function refreshPage(){
	location.reload();
}



/**************************************************************************************************************************/
/********************************************  Days range (over chart)  ***************************************************/
/**************************************************************************************************************************/




/**************************************************************************************************************************/
/*************************************  chart mode selection (top on the left side)  **************************************/
/**************************************************************************************************************************/

function reloadChartModeSelection(chartMode){
	//alert("hello: "+chartMode);
	$(".chartModeBtn").removeClass("chartModeBtnDisabled");
	if(chartMode < 4){
		
		$("#chartModeBtn"+chartMode).addClass("chartModeBtnDisabled");
		$("#chartModeBtn4_4").hide();
		$("#chartModeBtn4_5").hide();
		$("#sectionBtn_4").hide();
		$("#sectionBtn_5").hide();
	}
	else{
		$("#chartModeBtn4").addClass("chartModeBtnDisabled");
		$("#chartModeBtn4_"+chartMode).addClass("chartModeBtnDisabled");
		if(chartMode == 4){
			$("#sectionBtn_4").show();
			$("#sectionBtn_5").hide();
		}
		else{
			$("#sectionBtn_4").hide();
			$("#sectionBtn_5").show();
		}
		
		$("#chartModeBtn4_4").css("display","inline-block");
		$("#chartModeBtn4_5").css("display","inline-block");
	}
	if(chartMode > 2 && chartMode < 5){
		$("#bottomScaleLegend").html("dni");
	}
	else{
		$("#bottomScaleLegend").html("godziny");
	}
};



/**************************************************************************************************************************/
/************************************************  calendar (on the left side)  *******************************************/
/**************************************************************************************************************************/

function setDay(day,month,year,chMode){
	
	//alert("setSay: "+day+","+month+","+year+","+chMode);
	setSessionVars(day,month,year,chMode);
	//reloadComponents();
	//reloadDaysRange();
	//reloadCalendarDays();
}

function reloadCalendarDays(){
	//alert("reloadCalendarDays");
	var start;
	var stop;
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		url: "results/calendar/getCalendarDays.php",	//--------------------- url
		beforeSend: function(){							//--------------------- beforeSend
			$("#loading").show();
			start = new Date;
		},
		success: function(msg){ 						//--------------------- success
			//alert(msg);
			$("#calendarDays").html(msg);
			$("#calendarHolder").text(msg);
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			stop = new Date;
			window.t2 = stop.getTime()-start.getTime();
			window.endTime = new Date();
		}
	});	
	//return start.getTime()-stop.getTime();
}

function calendarNextMonth(){
	//alert("nextMonth");
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		url: "results/calendar/calendarNextMonth.php",	//--------------------- url
		beforeSend: function(){							//--------------------- beforeSend
			$("#loading").show();
		},
		success: function(msg){ 						//--------------------- success
			//alert(msg);
			//$("#calendarDays").html(msg);
			//$("#calendarHolder").text(msg);
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			reloadCalendarDays();
		}
	});	
};


function calendarPrevMonth(){
	//alert("prevMonth");
	$.ajax({ 											// -------------------------------- AJAX
		type: "POST", 									//--------------------- type
		url: "results/calendar/calendarPrevMonth.php",	//--------------------- url
		beforeSend: function(){							//--------------------- beforeSend
			$("#loading").show();
		},
		success: function(msg){ 						//--------------------- success
			//alert(msg);
			//$("#calendarDays").html(msg);
			//$("#calendarHolder").text(msg);
		},
		complete: function(){     						//-------------------- complete
			$("#loading").hide();
			reloadCalendarDays();
		}
	});	
};

function onMouseOverAction(day,month,week,chartMode){
	//alert("onMouseOverAction");
	switch(chartMode){
		case 1:{$("[day="+day+"][month="+month+"]").addClass("calendarCellOnMouseOver");}break;	
		case 2:{$("[week="+week+"]").addClass("calendarCellOnMouseOver");}break;
		case 3:{$("[week="+week+"]").addClass("calendarCellOnMouseOver");}break;
		case 4:{$("[month="+month+"]").addClass("calendarCellOnMouseOver");}break;
	}
}
function onMouseOutAction(){
	//alert("onMouseOutAction");
	$(".calendarCellOnMouseOver").removeClass("calendarCellOnMouseOver");
}



//temp for other file

function correctTimeFormat(str){
	
    var number = "0123456789";
    var pom = "";
    var isCorrect = true;
    
    if(str.length != 16) isCorrect = false;
   
    for (i = 0; i < str.length && isCorrect == true; i++){
    	pom += i+",";
    	if(i == 2){
    		if(str.charAt(i)!=":"){
    			isCorrect = false;
    		}
    	}
    	else if(i == 5){
    		if(str.charAt(i)!=" "){
    			isCorrect = false;
    		}
    	}
    	else if(i == 8 || i == 11){
    		if(str.charAt(i)!="."){
    			isCorrect = false;
    		}
    	}
    	else{
    		if(number.indexOf(str.charAt(i)) == -1){
    			isCorrect = false;
    		}
    	}
    }
   
	return isCorrect;
} 

function correctTime(str){
	
	var isCorrect = true;
	
	var h = parseInt(str.slice(0,2),10);
	var mi = parseInt(str.slice(3,5),10);
	var d = parseInt(str.slice(6,8),10);
	var mo = parseInt(str.slice(9,11),10);
	
	if(h < 0 || h > 23) isCorrect = false; 
	if(mi < 0 || mi > 59) isCorrect = false;
	if(d < 1 || d > 31) isCorrect = false;
	if(mo < 1 || mo > 12) isCorrect = false;
	
	return isCorrect;
	
}




function resetChart(){
	var loaded = false;
	var eCatch = "";
	try{
		loaded = swfObject("wykres").clearChart();
	}
	catch(e){
		eCatch = e;
	}
	
//	$("#tempChartData").append("loaded: "+loaded+", ");
	$("#tempChartData").append(eCatch+", ");
	
	if(loaded){
		reloadComponents();
		
		//$("#tempChartData").append("reloadComponents()<br>");
	}
	else{
		setTimeout("resetChart()", 10);
	}
}


jQuery(document).ready(function(){

	//alert("ustawienia poczatkowe");
	
	if($("#resultsMainConteiner").size()){
		

		var t;
		
		t = setTimeout("resetChart()", 10);
		
		
		
		
	}
	
	
	
});
