function closeDrCrDetails(){
	closeAllChildModals('drcrSlide');
	closeModalWindow('drcr');
	
}


function loadDc(){
	engDebtCreds.getDebtCreditors(callback_loadDc);
}
var k;
var tblDrCrRows;
function callback_loadDc(res){
if (res.error!=null){alert(res.error);};

	var dt = res.value;
	
	var tbl = document.getElementById("tblDC"); 
	var rows = tbl.rows; 
    while(rows.length) // length=0 -> stop 
		{
		tbl.deleteRow(rows.length-1);
		}
		
	if (dt.Rows.length!=0)
		{
			//setSpanValue('debtCredPercent', 0);
			//document.getElementById("completeProgressDebtCred").style.width = "100%";
			//var percent = (100 / dt.Rows.length);
			//setControlDisplay('debtcredProgressContainer','block');
			//debtCredPercentInterval = window.setInterval("drcrProgress(" + percent + ")",100);
			//dtdebtCredDataTable = dt;
			fillDebCredTable(dt);
			k = 0;
			debtCredPercentTableInterval = window.setInterval("showDrCrTableRows(" + k + ")",100);
			
		}
	else
		{
		var tr = document.createElement("tr");
	
		tbl.appendChild(tr);
		
								
		var tblCell1 = tr.insertCell(0)
		tblCell1.colSpan = "4";
		tblCell1.innerHTML = "You have no debtors or creditors.";
		
		}
		
		
}

function drcrProgress(value){
	
	var curr = getSpanValue('debtCredPercent');
	if ((parseInt(curr) + parseInt(value)) >= 100)
		{
		setSpanValue('debtCredPercent', 100);
		document.getElementById("completeProgressDebtCred").style.width = "0%";
		//fillDebCredTable(dtdebtCredDataTable);
		}
	else
		{
		setSpanValue('debtCredPercent', parseInt(curr) + parseInt(value));
		document.getElementById("completeProgressDebtCred").style.width = 100 - (parseInt(curr) + parseInt(value)) + "%";
		}
	
	
	if (getSpanValue('debtCredPercent') == 100)
		{
		window.clearInterval(debtCredPercentInterval);
		
		//setControlDisplay('debtcredProgressContainer','none');
		}
	//if ((getSpanValue('debtCredPercent') == 100)&&(getSpanValue('BudgetCatPercent') == 100))
	//	{
	//	closeModalWindow('loading')
	//	}
}


function fillDebCredTable(table){

	var tbl = document.getElementById("tblDC"); 
	var dt = table;
	
	var rows = tbl.rows; 
    while(rows.length) // length=0 -> stop 
		{
		tbl.deleteRow(rows.length-1);
		
		}
		
	
	
	tblDrCrRows = dt.Rows.length;
	for (var i=0; i<dt.Rows.length; i++)
				{
				
					var insertTable = document.createElement("tr");
					insertTable.style.display = "none";
					insertTable.id = "tblDC_tr_" + i;
					
					tbl.appendChild(insertTable);
								
					var tblCell1 = insertTable.insertCell(0)
					var tblCell2 = insertTable.insertCell(1)
					var tblCell3 = insertTable.insertCell(2)
					var tblCell4 = insertTable.insertCell(3)
					
					var aName = document.createElement("a");
					aName.innerHTML = dt.Rows[i].Person_Name;
					aName.href = "javascript:showDCtrans(" + dt.Rows[i].Person_ID + ",'" + dt.Rows[i].Person_Name + "')";
				
					tblCell1.appendChild(aName);
					tblCell1.scope = "row";
					
					var font = document.createElement("font");
					
					var amount = addDecimalPlaces(dt.Rows[i].Amount);
					
					font.innerHTML = dt.Rows[i].Currency + amount;
					
					switch (dt.Rows[i].DrCr)
						{
							case "Dr":
								tblCell2.innerHTML = "Owes me: ";
								font.color = "#00cc00";
							break
							case "Cr":
								tblCell2.innerHTML = "I owe: ";
								font.color = "#ff3300";
							break
							case "even":
								tblCell2.innerHTML = "Still friends.";
								font.color = "#cccccc";
							break
						}
					tblCell2.className = "action";
				
					tblCell3.appendChild(font);
				
					var aEdit = document.createElement("a");
					aEdit.innerHTML = "edit";
					aEdit.href = "javascript:showEditDebtorCreditor(" + dt.Rows[i].Person_ID + ")";
					
					var spanSpace = document.createElement("span")
					spanSpace.innerHTML = "&nbsp;or&nbsp;"
					
					var aDelete = document.createElement("a");
					aDelete.innerHTML = "remove";
					aDelete.href = "javascript:showDeleteDebtorCreditor(" + dt.Rows[i].Person_ID + ")";
							
					tblCell4.appendChild(aEdit);
					tblCell4.appendChild(spanSpace);
					tblCell4.appendChild(aDelete);
					
					tblCell4.className = "last";
				}
		//Effect.Fade('debtcredProgressContainer');
		//Effect.Appear('tblDC')
		stripetableBody();
}

function showDrCrTableRows(index){
	Effect.Appear("tblDC_tr_" + k);
	//setControlDisplay("tr_" + j, 'block');
	k = k + 1;
	var tbl = document.getElementById("tblDC");
	if (k == tblDrCrRows)
		{
		window.clearInterval(debtCredPercentTableInterval);
		}
}

function showDCtrans(itemID, name){
	setSpanValue('DrCrName', name);
	setSpanValue('lblPaidTo', 'I gave ' + name);
	setSpanValue('lblPaidFrom', name + ' gave me');
	setSpanValue('radEditOweUsername', 'I gave ' + name);
	setSpanValue('radEditOwedUsername', name + ' gave me');
	setSpanValue('PersonID', itemID);
	engDebtCreds.getDCtrans(itemID, callback_showDCtrans);
}


function callback_showDCtrans(res){
	var name = getSpanValue('DrCrName');
		var dt = res.value;
	
	var tbl = document.getElementById("tblDrCrTrans"); 
	var rows = tbl.rows; 
    while(rows.length) // length=0 -> stop 
		{
		tbl.deleteRow(rows.length-1);
		}
		
	//var tr = document.createElement("tr");
	
	//tbl.appendChild(tr);
//	var td1 = tr.insertCell(0);
//	var td2 = tr.insertCell(1);
//	var td3 = tr.insertCell(2);
//	var td4 = tr.insertCell(3);
//	var td5 = tr.insertCell(4);
	
	
//	td1.innerHTML = "Date";
//	td2.innerHTML = "Paid/Received";
//	td3.innerHTML = "Amount";
//	td4.innerHTML = "Comments";
	
//	var aAdd = document.createElement("a");
//	aAdd.href = "javascript:showAddDrCrTran();";
//	aAdd.innerHTML = "add";
	
	
	
//	td5.appendChild(aAdd);
	
	if (dt.Rows.length!=0)
		{
			for (var i=0; i<dt.Rows.length; i++)
				{
					if (dt.Rows[0].drcrID == 0)
						{
						var insertTable = document.createElement("tr");
					
						tbl.appendChild(insertTable);
								
						var tblCell1 = insertTable.insertCell(0)
						tblCell1.colSpan = "4";
						tblCell1.innerHTML = "No debits or credits for this person.";
						}
					else
						{
						var insertTable = document.createElement("tr");
					
						tbl.appendChild(insertTable);
								
						var tblCell1 = insertTable.insertCell(0)
						tblCell1.className = "date";
						var tblCell2 = insertTable.insertCell(1)
						tblCell2.className = "paidReceived";
						var tblCell3 = insertTable.insertCell(2)
						tblCell3.className = "amount";
						var tblCell4 = insertTable.insertCell(3)
						tblCell4.className = "comments";
						var tblCell5 = insertTable.insertCell(4)
						tblCell5.className = "options";
					
						tblCell1.innerHTML = dt.Rows[i].DrCr_Short_Date;
						
						var font = document.createElement("span");
						
						var amount = addDecimalPlaces(dt.Rows[i].Amount);
						
						font.innerHTML = dt.Rows[i].Currency + amount;
						
						switch (dt.Rows[i].DrCr)
							{
								case "Dr":
									tblCell2.innerHTML = "Paid: " + name;
									font.style.color = "#00cc00";
								break
								case "Cr":
									tblCell2.innerHTML = "Received from: " + name;
									font.style.color = "#ff3300";
								break
							}
					
						tblCell3.appendChild(font);
					
						tblCell4.innerHTML = dt.Rows[i].DrCr_Comment;
						
						var imgEdit = document.createElement("img");
						imgEdit.src = "/images/buttons/general/edit.gif";
						imgEdit.alt = "Edit Transaction";
						imgEdit.style.width = "36px";
						
						var aEdit = document.createElement("a");
						aEdit.appendChild(imgEdit);
						aEdit.href = "javascript:showEditDrCrTran(" + dt.Rows[i].drcrID + ")";
						aEdit.className = "imageButton";
						
						var spanSpace = document.createElement("span")
						spanSpace.innerHTML = "&nbsp;"
						
						var aDelete = document.createElement("a");
						aDelete.innerHTML = "delete";
						aDelete.href = "javascript:showDeleteDrCrTran(" + dt.Rows[i].drcrID + ")";
								
						tblCell5.appendChild(aEdit);
						tblCell5.appendChild(spanSpace);
						tblCell5.appendChild(aDelete);
						}
					
				}
				
		}
	else
		{
		var insertTable = tbl.insertRow(i);
								
		var tblCell1 = insertTable.insertCell(0)
		tblCell1.colSpan = "4";
		tblCell1.innerHTML = "No debits or credits for this person.";
		
		}
		stripetableBody();
		if (document.getElementById("drcr").style.display == "none")
			{
			openModalWindow('drcr');		
			}
			
	
}

function showAddDebtorCreditor(){
	openModalWindow('AddNewDrcr');
	
}

function addNewDebtorCreditor(){
	var Name = getControlValue('txtDbCrName');
	
	showFeedback('AddNewDrcrActionContainer');
	engDebtCreds.addDebtorCreditor('txtDbCrName', Name, callback_addDebtorCreditor);
}

function callback_addDebtorCreditor(res){
	var results = res.value.Tables[0];
	if (results.Rows[0].result == "True")
		{
		var controls = res.value.Tables[1];
		for (var i=0; i<controls.Rows.length; i++)
			{
			clearInputField(controls.Rows[i].controlID);
			setControlErrorMessage(controls.Rows[i].controlID,'');
			}
			switch (results.Rows[0].errMessage)
				{
					case "valid":
						clearInputField('txtDbCrName');
						
						feedbackValid('Saving','Saved');
						
						window.setTimeout('hideAddDebtorCreditor();', 4000);
					break
				}
		}
	else
		{
		var controls = res.value.Tables[1];
		switch (results.Rows[0].errMessage)
				{
					case "invalid":
						feedbackInvalid('AddNewDrcrActionContainer');
						window.setTimeout(function(){processValidationResponse(controls)}, 2001);
					break
				}
		}
}

function hideAddDebtorCreditor(){
	closeModalWindow('AddNewDrcr');
	cleanupFeedback('AddNewDrcrActionContainer');
	loadDc();
	loadDrCrDropDown();
	
}

function showEditDebtorCreditor(itemID){
	engDebtCreds.populateDebtCreditor(itemID, callback_populateDebtCreditor);
}

function callback_populateDebtCreditor(res){
	var dt = res.value;
	
	setSpanValue('editPersonID', dt.Rows[0].Person_ID);
	setControlValue('editPersonName', dt.Rows[0].Person_Name);
	
	openModalWindow('editDrcr');
}

function editDebtorCreditor(){
	var editPersonID = getSpanValue('editPersonID');
	var name = getControlValue('editPersonName');
	showFeedback('editDrcrActionContainer');
	engDebtCreds.editDebtorCreditor(editPersonID, 'editPersonName', name, callback_editDebtorCreditor);
	
}

function callback_editDebtorCreditor(res){
	var results = res.value.Tables[0];
	if (results.Rows[0].result == "True")
		{
		var controls = res.value.Tables[1];
		for (var i=0; i<controls.Rows.length; i++)
			{
			clearInputField(controls.Rows[i].controlID);
			setControlErrorMessage(controls.Rows[i].controlID,'');
			}
			switch (results.Rows[0].errMessage)
				{
					case "valid":
						clearInputField('editPersonName');
						
						feedbackValid('Saving','Saved');
						
						window.setTimeout('hideEditDebtorCreditor();', 4000);
					break
				}
		}
	else
		{
		var controls = res.value.Tables[1];
		switch (results.Rows[0].errMessage)
				{
					case "invalid":
						feedbackInvalid('editDrcrActionContainer');
						window.setTimeout(function(){processValidationResponse(controls)}, 2001);
					break
				}
		}
}

function hideEditDebtorCreditor(){
	closeModalWindow('editDrcr');
	cleanupFeedback('editDrcrActionContainer');
	loadDc();
	loadDrCrDropDown();
}

function showDeleteDebtorCreditor(itemID){
	engDebtCreds.populateDebtCreditor(itemID, callback_showDeleteDebtorCreditor);
}

function callback_showDeleteDebtorCreditor(res){
	var dt = res.value;
	
	setSpanValue('deleteDebtCredID', dt.Rows[0].Person_ID);
	setSpanValue('deleteDebtCredDetails', dt.Rows[0].Person_Name);
	setSpanValue('deleteDebtCredTranCount',"with " + dt.Rows[0].tranCount + " transactions");
	openModalWindow('removeDebtCred');
}


function deleteDebtCred(){
	var personID = getSpanValue('deleteDebtCredID');
	showFeedback('removeDebtCredActionContainer');
	engDebtCreds.deleteDebtCred(personID, callback_deleteDebtCred);
	
}

function callback_deleteDebtCred(res){
	if (res.value)
		{
		
		feedbackValid('Removing','Removed');
		
		window.setTimeout('closeDeleteDebtCred();', 4000);
		}
	else
		{
		feedbackInvalid('removeDebtCredActionContainer');
		}
}

function closeDeleteDebtCred(){
	loadDc();
	loadDrCrDropDown();
	closeModalWindow('removeDebtCred');
	cleanupFeedback('removeDebtCredActionContainer');
}
//transactions

function showAddDrCrTran(){
	//openModalWindow('AddNewDrCrTran');
	showChildPanel('drcrSlide','addDrCrSlide');
}

function addNewDrCrTran(){
	var personID = getSpanValue('PersonID');

	var date = getDropDownSelected('ddAddDrCrTranDate');
		

	var Amount = getControlValue('txtDrCrTranAmount');
	var Comment = getControlValue('txtDrCrTranComment');
	var DrCr = getSelectedRadioValue('OweOwed');
	
	showFeedback('AddNewDrCrTranActionContainer');
	engDebtCreds.addDebtorCreditorTran('txtDrCrTranDate', date, 'txtDrCrTranAmount', Amount, DrCr, Comment, personID, callback_addNewDrCrTran);
}

function callback_addNewDrCrTran(res){
	var results = res.value.Tables[0];
	if (results.Rows[0].result == "True")
		{
		var controls = res.value.Tables[1];
		for (var i=0; i<controls.Rows.length; i++)
			{
			clearInputField(controls.Rows[i].controlID);
			setControlErrorMessage(controls.Rows[i].controlID,'');
			}
			switch (results.Rows[0].errMessage)
				{
					case "valid":
						//clearInputField('txtDrCrTranDate');
						clearInputField('txtDrCrTranAmount');
						clearInputField('txtDrCrTranComment');
					
						
						feedbackValid('Saving','Saved');
						
						
						window.setTimeout('hideAddDebtorCreditorTran();', 4000);
					break
				}
		}
	else
		{
		var controls = res.value.Tables[1];
		switch (results.Rows[0].errMessage)
				{
					case "invalid":
						feedbackInvalid('AddNewDrCrTranActionContainer');
						window.setTimeout(function(){processValidationResponse(controls)}, 2001);
					break
				}
		}
}

function hideAddDebtorCreditorTran(){
	//closeModalWindow('AddNewDrCrTran');
	cleanupFeedback('AddNewDrCrTranActionContainer');
	window.setTimeout("backToParentPanel('drcrSlide','addDrCrSlide');", 1000);
}


function showEditDrCrTran(itemID){

	engDebtCreds.populateDrCr(itemID, callback_populateDrCr);
	
}

function callback_populateDrCr(res){
	var dt = res.value;
	
	
	setSpanValue('editDrCrID', dt.Rows[0].drcr_ID);
	setControlValue('txtEditDrCrTranDate', dt.Rows[0].Short_Date);
	var amt = addDecimalPlaces(dt.Rows[0].Amount);
	setControlValue('txtEditDrCrTranAmount', amt);
	setSelectedRadioValue('EditOweOwed', dt.Rows[0].DrCr);
	setControlValue('txtEditDrCrTranComment', dt.Rows[0].DrCr_Comment);
	//openModalWindow('editDrCrTran');
	showChildPanel('drcrSlide','editDrCrSlide');
}

function editDrCrTran(){
	var drcrID = getSpanValue('editDrCrID');
	if (IsDate(getControlValue('txtEditDrCrTranDate'))) 
		{
		var date = FormatDate(getControlValue('txtEditDrCrTranDate'),dateFormatString);
		}
	else
		{
		var date = getControlValue('txtEditDrCrTranDate');
		}

	var Amount = getControlValue('txtEditDrCrTranAmount');
	var Comment = getControlValue('txtEditDrCrTranComment');
	var DrCr = getSelectedRadioValue('EditOweOwed');
	
	showFeedback('editDrCrTranActionContainer');
	engDebtCreds.editDebtorCreditorTran(drcrID, 'txtEditDrCrTranDate', date, 'txtEditDrCrTranAmount', Amount, DrCr, Comment, callback_editDrCrTran);
}

function callback_editDrCrTran(res){
if (res.error!=null){alert(res.error)};
	var results = res.value.Tables[0];
	if (results.Rows[0].result == "True")
		{
		var controls = res.value.Tables[1];
		for (var i=0; i<controls.Rows.length; i++)
			{
			clearInputField(controls.Rows[i].controlID);
			setControlErrorMessage(controls.Rows[i].controlID,'');
			}
			switch (results.Rows[0].errMessage)
				{
					case "valid":
						clearInputField('txtEditDrCrTranDate');
						clearInputField('txtEditDrCrTranAmount');
						clearInputField('txtEditDrCrTranComment');
					
						
						feedbackValid('Saving','Saved');
						//var drcrName = getSpanValue('DrCrName');
						//var drcrID = getSpanValue('PersonID');
						//showDCtrans(drcrID, drcrName);
						//loadDc();
						window.setTimeout('hideEditDebtorCreditorTran();', 4000);
					break
				}
		}
	else
		{
		var controls = res.value.Tables[1];
		switch (results.Rows[0].errMessage)
				{
					case "invalid":
						feedbackInvalid('editDrCrTranActionContainer');
						window.setTimeout(function(){processValidationResponse(controls)}, 2001);
					break
				}
		}
}

function hideEditDebtorCreditorTran(){
	//closeModalWindow('editDrCrTran');
	cleanupFeedback('editDrCrTranActionContainer');
	window.setTimeout("backToParentPanel('drcrSlide','editDrCrSlide');", 1000);
}


function showDeleteDrCrTran(itemID){
	engDebtCreds.populateDrCr(itemID, callback_showDeleteDrCrTran);
}

function callback_showDeleteDrCrTran(res){
	var dt = res.value;
	setSpanValue('deleteDrCrID', dt.Rows[0].drcr_ID);
	var amt = addDecimalPlaces(dt.Rows[0].Amount);
	
	if (dt.Rows[0].DrCr == "Dr")
		{
		setSpanValue('deleteDrCrTranDetails', "Owed:" + amt + " from: " + dt.Rows[0].Short_Date + " - " + dt.Rows[0].DrCr_Comment);
		}
	else
		{
		setSpanValue('deleteDrCrTranDetails', "Owe:" + amt + " from: " + dt.Rows[0].Short_Date + " - " + dt.Rows[0].DrCr_Comment);
		}
	//openModalWindow('removeDebtCredTran');
	showChildPanel('drcrSlide','removeDrCrSlide');
}

function removeDrCrTran(){
	var drcrID = getSpanValue('deleteDrCrID');
	
	showFeedback('removeDebtCredTranActionContainer');
	engDebtCreds.deleteDebtCredTran(drcrID, callback_removeDrCrTran);

}

function callback_removeDrCrTran(res){
	if (res.value)
		{
		
		feedbackValid('Deleting','Deleted');
		//var drcrName = getSpanValue('DrCrName');
		//var drcrID = getSpanValue('PersonID');
		//showDCtrans(drcrID, drcrName);
		//loadDc();
		window.setTimeout('closeDeleteDrCrTran();', 4000);
		}
	else
		{
		feedbackInvalid('removeDebtCredTranActionContainer');
		}
}

function closeDeleteDrCrTran(){
	//closeModalWindow('removeDebtCredTran');
	cleanupFeedback('removeDebtCredTranActionContainer');
	window.setTimeout("backToParentPanel('drcrSlide','removeDrCrSlide');", 1000);
}

function loadDrCrDropDown(){
	engDebtCreds.getDebtCreditors(callback_loadDrCrDropDown);
	
}

function callback_loadDrCrDropDown(res){
	var dt = res.value;
	
	var ul = document.getElementById("drcrList");
	ul.innerHTML = "";
	
	var defAdd = document.createElement("option");
	defAdd.innerHTML = "Select Debtor/Creditor";
	defAdd.value = "0";
	
	ul.appendChild(defAdd);
	
	for (var i=0; i<dt.Rows.length; i++)
		{
			
			var opt = document.createElement("option");
			
			opt.innerHTML = dt.Rows[i].Person_Name;
			opt.value = dt.Rows[i].Person_ID;
			
			
			ul.appendChild(opt);
			
			
		}
}

function addUberDrCrTran(){
	var personID = getDropDownSelected('drcrList');

	var date = getDropDownSelected('ddAddUberDrCrTranDate');
		

	var Amount = getControlValue('txtUberDrCrTranAmount');
	var Comment = getControlValue('txtUberDrCrTranComment');
	var DrCr = getSelectedRadioValue('UberOweOwed');
	
	showFeedback('AddNewUberDrCrTranActionContainer');
	engDebtCreds.addUberDebtorCreditorTran('txtUberDrCrTranDate', date, 'txtUberDrCrTranAmount', Amount, DrCr, Comment,'drcrList', personID, callback_addUberDrCrTran);
}

function callback_addUberDrCrTran(res){
//alert(res.error);
	var results = res.value.Tables[0];
	if (results.Rows[0].result == "True")
		{
		var controls = res.value.Tables[1];
		for (var i=0; i<controls.Rows.length; i++)
			{
			clearInputField(controls.Rows[i].controlID);
			setControlErrorMessage(controls.Rows[i].controlID,'');
			}
			switch (results.Rows[0].errMessage)
				{
					case "valid":
						//clearInputField('txtUberDrCrTranDate');
						//clearInputField('txtUberDrCrTranAmount');
						clearInputField('txtUberDrCrTranComment');
					
						
						feedbackValid('Saving','Saved');
						
						loadDc();
						window.setTimeout('hideAddUberDebtorCreditorTran();', 4000);
					break
				}
		}
	else
		{
		var controls = res.value.Tables[1];
		switch (results.Rows[0].errMessage)
				{
					case "invalid":
						feedbackInvalid('AddNewUberDrCrTranActionContainer');
						window.setTimeout(function(){processValidationResponse(controls)}, 2001);
					break
				}
		}
}

function hideAddUberDebtorCreditorTran(){
	closeModalWindow('AddNewUberDrCrTran');
	cleanupFeedback('AddNewUberDrCrTranActionContainer');
	
}
