var originalState = {value:''};
var successColor = '#9FFFB5';
var pendingColor = '#F7FFAF';
var errorColor = '#FF9F9F';
var overtimeColor = '#FFCF4F';
var summaryColor = "white";
var successFadeTime = 3000;
$.ajaxSetup({cache: false}); 
function saveValue(element){
	var value = element.value;
	if (isValidInput(value)){
		if (value != originalState.value) {
			var rowId = element.getAttribute('rowId');
			var date = element.getAttribute('date');
			var username = element.getAttribute('username');
			var departmentId = element.getAttribute('departmentId');
			var originalColor = getOriginalBackgroundColor(element);
			$.post("../app/ajax_save_hours.pl",
					{"hours":value, "row_id":rowId, "date":date , "username":username, "departmentId":departmentId},
					function(data){
						updateTotals(data, element, originalColor, value);
					},
					"json");
		} 
	}
	
}

function updateTotals(data, element, originalColor, hours){
	var rowId = data.rowId;
	var sectionIds = data.sectionId;
	var startDate = data.startDate;
	var username = data.username;
	var departmentId = data.departmentId;
	//
	var finalColor = (hours > 8 ? overtimeColor : originalColor);
	//
	$(element).css({"backgroundColor":successColor}).animate({"backgroundColor": finalColor}, successFadeTime);
	//alert('RowId: ' + rowId);   
	//alert('Start Date: ' + startDate);   
	//alert('Username: ' + username);   
	$.get(
		"../app/ajax_get_row_totals.pl", 
		{ "rowId":rowId, "startDate":startDate, "username":username, "departmentId":departmentId },
		function(data){
			//alert('Row Total Week1: ' + data.week1);
			//alert('Row Total Week2: ' + data.week2);
			//alert('Row Total Total: ' + data.total);
			updateRowTotals(data, originalColor);
		},
		"json"
	);
	//you need to pass the sectionId ARRAY not, just the sectionId because a rowId can be in many section summaries
	for (var i = 0; i < sectionIds.length ; i++ ){
		$.get(
			"../app/ajax_get_section_totals.pl", 
			{ "sectionId":sectionIds[i].sectionId, "startDate":startDate, "username":username, "departmentId":departmentId }, 
			function(data){
				updateSectionTotals(data);
			},
			"json"
		);
	}
	//alert(data.rowId + ' ' + data.sectionId + ' ' + data.username + ' ' + data.startDate);
}

function updateRowTotals(data, originalColor){
	//alert('Row Total Week1: ' + data.week1);
	//alert('Row Total Week2: ' + data.week2);
	//alert('Row Total Total: ' + data.total);
	if ($('#row' + data.rowId + '_' + 'week1').text() != data.week1){
		$('#row' + data.rowId + '_' + 'week1').stop().text(data.week1).css({"backgroundColor":successColor}).animate({"backgroundColor":originalColor}, successFadeTime);
	}
	if ($('#row' + data.rowId + '_' + 'week2').text() != data.week2){
		$('#row' + data.rowId + '_' + 'week2').stop().text(data.week2).css({"backgroundColor":successColor}).animate({"backgroundColor":originalColor}, successFadeTime);
	}
	if ($('#row' + data.rowId + '_' + 'total').text() != data.total){
		$('#row' + data.rowId + '_' + 'total').stop().text(data.total).css({"backgroundColor":successColor}).animate({"backgroundColor":originalColor}, successFadeTime);
	}

}

function updateSectionTotals(data){
	var originalColor;
	//loop all of the possible sections that the row could be summaried in.
	if ($('#section' + data.sectionId + '_' + 'week1').text() != data.week1){
		$('#section' + data.sectionId + '_' + 'week1').stop().text(data.week1).css({"backgroundColor":successColor}).animate({"backgroundColor":summaryColor}, successFadeTime);
	}
	if ($('#section' + data.sectionId + '_' + 'week2').text() != data.week2){
		$('#section' + data.sectionId + '_' + 'week2').stop().text(data.week2).css({"backgroundColor":successColor}).animate({"backgroundColor":summaryColor}, successFadeTime);
	}
	if ($('#section' + data.sectionId + '_' + 'total').text() != data.total){
		$('#section' + data.sectionId + '_' + 'total').stop().text(data.total).css({"backgroundColor":successColor}).animate({"backgroundColor":summaryColor}, successFadeTime);
	}
}


function setCurrentElementValue(element){
	var value = element.value;
	originalState.value = value;
	originalState.color = $(element).css("backgroundColor");
}

function handleChange(element){
	var value = element.value;
	if (!isValidInput(value)){
		$(element).css({"backgroundColor":errorColor});
	} else if (originalState.value != value){
		$(element).css({"backgroundColor":pendingColor});
	} else {
		$(element).css({"backgroundColor":originalState.color}); 
	}
}

function isValidInput(value){
	var isValid = true;
	if (value != ''){
		if(isNaN(value)){
			isValid = false;
		} else {
			if(value < 0 || value > 24){
				isValid = false;
			} else {
				if (value.indexOf('.') > -1){
					if ((value.substring(value.indexOf('.') + 1)).length > 1){
						isValid = false;
					} else {
						//if ((value.substring(value.indexOf('.') + 1)).length == 1 && ((value.substring(value.indexOf('.') + 1)) != '5' && (value.substring(value.indexOf('.') + 1)) != '0')){
						//	isValid = false;
						//}
					}
				}
			}
		}
	}
	return isValid;
}

function getOriginalBackgroundColor(element){
	var color;
	if($(element).attr('class').indexOf('odd') > -1){
		color = $('#odd').css("backgroundColor");
	} else {
		color = $('#even').css("backgroundColor");
	}
	return color;
}

function printAllTimeCards(){
	$.ajaxSetup({cache: false, async: false}); 
	$.get(
		"../app/ajax_get_user_timecards.pl", 
		{ "date":globalDate, "username":globalUsername, "noComments":globalNoComments, "baseId":globalBaseId, "departmentId":globalDepartmentId, "action":globalAction },
		function(data){
			loopAllTimeCards(data);
		},
		"json"
	);
	$('#printcount').hide();
	$.ajaxSetup({cache: false, async: true}); 
}
function loopAllTimeCards(data){
	var currentData;
	if (data){
		if (data.length > 0){
			var frag = document.createElement('div');
			frag.id = 'printcount';
			frag.innerHTML = '<span id="number">0</span> out of ' + data.length + ' retrieved...';
			$("#timecards").append(frag);
			for (var i = 0; i < data.length ; i++ ){
				currentData = data[i];
				$.get(
					"../app/ajax_get_user_timecard.pl", 
					{ "date":globalDate, "username":currentData.username, "noComments":globalNoComments,  "id":currentData.departmentId  },
					function(data){
						printSingleTimeCard(data, i);
					},
					"text"
				);
			}
			
		}
	}
	return false;;
}
function printSingleTimeCard(data, i){
	var frag = document.createElement('div');
	frag.innerHTML = data;
	$("#timecards").append(frag);
	$("#number").html(i + 1);
}
