// JavaScript Document
var approvalLoop, nodeArray;
function msgDiv()
{
	var xmlHttp = ajaxInit();
    xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4)
		{				
			if (xmlHttp.responseXML.documentElement != null) {
			readData(xmlHttp.responseXML)
			}				
		}
	}
	xmlHttp.open("GET", "/admin/approval.ashx?function=pending", true);
	xmlHttp.send(null);
	approvalLoop = setTimeout("msgDiv()", 12000);
	return false;
}
//---------------------------------------------------------------------------------------------------------	
function approvalNode(){
	this.cCode = null;
	this.cName = null;
	this.docCode = null;
	this.docEntry = null;
	this.currency = null;
	this.total = null;
	this.dDate = null;
	this.custLimit = null;
	this.custCredit = null;
	this.user = null;
	this.remarks = null;
	this.terms = null;
	this.salesPerson = null;
}
//---------------------------------------------------------------------------------------------------------	
function readData(xmlDoc)
{
	var pendingXml = xmlDoc.getElementsByTagName("pending");
	var xmlLength = xmlDoc.getElementsByTagName("pending").length;
	var x = xmlDoc.getElementsByTagName("pendingList");
	
	//clear array and put in new Data
	 nodeArray = new Array();
	
	//checking pending is whether 0 or not, clear message box if needed
	if (document.getElementById('approvalCounter'))
	{
		document.getElementById('approvalCounter').removeChild(document.getElementById('approvalCounterText'));
	}
	else
	{
		var showDiv = document.createElement('div');
		showDiv.setAttribute('id','approvalCounter');
		showDiv.setAttribute('style', 'font-size:12px; position:absolute;left:3px;padding: 5px; width:80px;border:solid #999999 1px;');
		showDiv.setAttribute('onclick', 'drawApprovalMenu(nodeArray, true)');
		var docBody = document.getElementById('msgbox2');
		docBody.style.display="block";
		docBody.appendChild(showDiv);

	}
	
	if (xmlDoc.getElementsByTagName("pendingList").length > 0)
	{
		//create array with same quantity as there are elements
		var tagentry = x[0].getElementsByTagName("entry");
		var elementQty = tagentry.length;
			
		for (var i=0; i<elementQty; i++)
		{
			//for every XML node, create new approvalNode object
			var node1 = new approvalNode();
			
			//in every approvalNode object, get line one by one from XML and put in correct place in approvalNode
			node1.cCode = URLDecode(tagentry[i].getElementsByTagName("cCode")[0].childNodes[0].nodeValue);
			node1.cName = URLDecode(tagentry[i].getElementsByTagName("cName")[0].childNodes[0].nodeValue);
			node1.docCode =tagentry[i].getElementsByTagName("doccode")[0].childNodes[0].nodeValue;
			node1.docEntry =tagentry[i].getElementsByTagName("docEntry")[0].childNodes[0].nodeValue;
			node1.currency = URLDecode(tagentry[i].getElementsByTagName("currency")[0].childNodes[0].nodeValue);
			node1.total = tagentry[i].getElementsByTagName("total")[0].childNodes[0].nodeValue;
			node1.dDate = URLDecode(tagentry[i].getElementsByTagName("dDate")[0].childNodes[0].nodeValue);
			node1.custLimit = tagentry[i].getElementsByTagName("custLimit")[0].childNodes[0].nodeValue;
			node1.custCredit = tagentry[i].getElementsByTagName("custCredit")[0].childNodes[0].nodeValue;
			node1.user = URLDecode(tagentry[i].getElementsByTagName("user")[0].childNodes[0].nodeValue);
			node1.remarks = URLDecode(tagentry[i].getElementsByTagName("remarks")[0].childNodes[0].nodeValue);
			node1.terms = URLDecode(tagentry[i].getElementsByTagName("terms")[0].childNodes[0].nodeValue);
			node1.salesPerson = URLDecode(tagentry[i].getElementsByTagName("slsPrsn")[0].childNodes[0].nodeValue);
			//assign array to object
			nodeArray[i] = node1;
		}//end for loop
		
		//update text at top of page
		var showDiv = document.getElementById('approvalCounter')
		var counterTextDiv = document.createElement('div');
		counterTextDiv.setAttribute('id','approvalCounterText');
		counterTextDiv.setAttribute('class','pColor');
		counterTextDiv.setAttribute('style', 'cursor:pointer;');
		counterTextDiv.appendChild( document.createTextNode("Pending = " + elementQty));
		showDiv.appendChild(counterTextDiv);	
	}//end if
	
	else //no pending approvals
	{
		var showDiv = document.getElementById('approvalCounter')
		var counterTextDiv = document.createElement('div');
		counterTextDiv.setAttribute('id','approvalCounterText');
		counterTextDiv.setAttribute('class','pColor');		
		counterTextDiv.setAttribute('style', 'cursor:default;');
		counterTextDiv.appendChild( document.createTextNode("No Approvals"));		
		showDiv.appendChild(counterTextDiv);
	}	
}
//---------------------------------------------------------------------------------------------------------				
	function drawApprovalMenu(objArray, chkReload){
	
		if(document.getElementById('ApprovalMenuDiv'))
		{
			if (!chkReload )
			{
				var toClose = document.getElementById('ApprovalMenuDiv')
				toClose.style.display="none";
				
				document.getElementById('msgbox2').removeChild(toClose);
			}
			else
			{
				return closeDIV2();	
			}
		}		
		//retreive array
		var workingDiv = document.createElement('div');
		workingDiv.setAttribute('id','ApprovalMenuDiv');

		workingDiv.setAttribute('style', 'clear:left;font-size:12px;height:250px; margin-top:25px; padding:5px; border:solid #999999 2px; width:360px; overflow:auto;background-color:#ffffff;');
	
		var span = document.createElement('span');
		span.setAttribute('id','closeSpan');
		
		span.setAttribute('onclick','closeDIV2();');
		
		workingDiv.appendChild(span);
	
		for (var i=0; i< objArray.length; i++)
		{		
			var workingDivBorder = document.createElement('div');
			workingDivBorder.setAttribute('style', 'float:left; border:solid green 1px;padding:10px;min-width:320px;cursor:default;');
			
			var workingDiv2 = document.createElement('div');
			var span = document.createElement('p');	
			var a = document.createElement('a');
			a.setAttribute('style','cursor:pointer;');
			a.setAttribute('class','cTitle');
		//	a.setAttribute('onclick','viewApprovalDocument('+ objArray[i].docEntry +');');
			a.setAttribute('onclick', 'readSAPReportXML("'+objArray[i].cCode +'")');
			a.appendChild(document.createTextNode(objArray[i].cName));
			span.appendChild(a);
			//span.appendChild(document.createElement('br'));
			
			var span2 = document.createElement('span')
			span2.appendChild(document.createTextNode(" -- " +objArray[i].salesPerson));
			span2.setAttribute('class','cTitle');
			workingDivBorder.appendChild(span);  
			//workingDivBorder.appendChild(span2); 

			var span = document.createElement('span');			
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode("Amount: " ));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('style', 'padding:5px;');
			var a = document.createElement('a');
			a.setAttribute('style', 'cursor:pointer;');
			a.setAttribute('onclick','viewApprovalDocument('+ objArray[i].docEntry +');');
			a.appendChild(document.createTextNode(objArray[i].currency + " " + objArray[i].total));
			span.appendChild(a);
			workingDiv2.appendChild(span);
			
			//span use as a space
			var span = document.createElement("span");
			span.setAttribute('style', 'padding:20px;');
			span.appendChild(document.createTextNode(""));
			workingDiv2.appendChild(span);
			//end space
			
			var span = document.createElement('span');			
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Date: '));
			workingDiv2.appendChild(span);
			var span= document.createElement('span');			
			span.setAttribute('style', 'padding:5px;');			
			span.appendChild(document.createTextNode(objArray[i].dDate));
			workingDiv2.appendChild(span);
			
			
			workingDiv2.appendChild(document.createElement('br'));
			
			var span = document.createElement('span');			
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Balance: '));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('class','balanceText');			
			span.appendChild(document.createTextNode(objArray[i].currency +  " " + objArray[i].custCredit));
			workingDiv2.appendChild(span);
			
			workingDiv2.appendChild(document.createElement('br'));
			
			var span = document.createElement('span');			
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Credit Limit: '));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('class','creditText');			
			span.appendChild(document.createTextNode(objArray[i].currency + objArray[i].custLimit));
			workingDiv2.appendChild(span);
			
			//span use as a space
			var span = document.createElement("span");
			span.setAttribute('style', 'padding:20px;');
			span.appendChild(document.createTextNode(""));
			workingDiv2.appendChild(span);
			//end space
			
			var span = document.createElement('span');
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Terms: '));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('class','termsText');
			span.appendChild(document.createTextNode(objArray[i].terms));
			workingDiv2.appendChild(span);
						
			workingDiv2.appendChild(document.createElement('br'));
			
			var span = document.createElement('span');
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Requester: '));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('class','usersText');
			span.appendChild(document.createTextNode(objArray[i].user));
			workingDiv2.appendChild(span);
			
			//span use as a space
			var span = document.createElement("span");
			span.setAttribute('style', 'padding:20px;');
			span.appendChild(document.createTextNode(""));
			workingDiv2.appendChild(span);
			//end space
						
			var span = document.createElement('span');
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Sale Person: '));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('class','usersText');
			span.appendChild(document.createTextNode(objArray[i].salesPerson ));
			workingDiv2.appendChild(span);			
			
			workingDiv2.appendChild(document.createElement('br'));
			var span = document.createElement('span');
			span.setAttribute('style', 'padding:5px;');
			span.appendChild(document.createTextNode(' Remarks: '));
			workingDiv2.appendChild(span);
			var span = document.createElement('span');
			span.setAttribute('class','remarksText');
			span.appendChild(document.createTextNode(objArray[i].remarks ));
			workingDiv2.appendChild(span);			
			
			workingDiv2.appendChild(document.createElement('br'));
			workingDiv2.appendChild(document.createElement('br'));
		
			// Yes/ No button
			var span = document.createElement("span");
			span.setAttribute('id', 'yes');
			span.setAttribute('onclick', 'approveProcedure('+objArray[i].docCode +', true)');
			span.setAttribute('class', "buttonStyle");
			span.setAttribute('style','padding:5px;');
			span.appendChild(document.createTextNode("Approve"));
            workingDiv2.appendChild(span);
			
			//span use as a space
			var span = document.createElement("span");
			span.setAttribute('style', 'padding:20px;');
			span.appendChild(document.createTextNode(""));
			workingDiv2.appendChild(span);
			//end space
			
			var span = document.createElement("span");
			span.setAttribute('id', 'no');
			span.setAttribute('class', "buttonStyle");
			span.setAttribute('style','padding:5px;');
			span.appendChild(document.createTextNode("Decline"));
			span.setAttribute('onclick', 'approveProcedure('+objArray[i].docCode +', false)');
            workingDiv2.appendChild(span);

			//insert workingDiv2 to workingDiv
			workingDivBorder.appendChild(workingDiv2);
			workingDiv.appendChild(workingDivBorder);  
			var docBody = document.getElementById('msgbox2');
			docBody.style.display="block";
			docBody.appendChild(workingDiv);

		}//end for loop
	}//end function showList()
		
//---------------------------------------------------------------------------------------------------------
function approveProcedure(requestID, decision)
{
	var xmlHttp = ajaxInit();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4)
		{				
			if (xmlHttp.responseXML.documentElement != null) {		
				bannerMsgChk(xmlHttp.responseXML)
				chkConfirm(xmlHttp.responseXML, requestID, decision)
			}				
		}
	};

	if (decision)
	{
		xmlHttp.open("GET", "/admin/approval.ashx?function=approve&requestId=" + requestID, true);
		}
	else
	{
		var reason = ""
		reason = prompt("Reason for rejection:");
		if (reason.length < 1)
		{
			approveProcedure(requestID, decision);
		}
		else
			xmlHttp.open("GET", "/admin/approval.ashx?function=reject&requestId=" + requestID + "&reason=" +URLencode(reason), true);
	}
	xmlHttp.send(null);
	return false;
}
//---------------------------------------------------------------------------------------------------------
function forceApproval(requestID, decision)
{
var xmlHttp = ajaxInit();
	xmlHttp.onreadystatechange = function() {
		if (xmlHttp.readyState == 4)
		{				
			if (xmlHttp.responseXML.documentElement != null) {		
				bannerMsgChk(xmlHttp.responseXML)
			}				
		}
	};

	if (decision)
	{
		xmlHttp.open("GET", "/admin/approval.ashx?function=approve&ignore=true&requestId=" + requestID, true);
		xmlHttp.send(null);
	}
	return false;
}
//---------------------------------------------------------------------------------------------------------
function viewApprovalDocument(documentId)
{
	var xmlHttp = ajaxInit();
	xmlHttp.onreadystatechange = function(){
	if (xmlHttp.readyState == 4) {
		//alert(xmlHttp.responseText);		
		chkError(xmlHttp.responseXML);
		bannerMsgChk (xmlHttp.responseXML);
		loadSAPDocument(xmlHttp.responseXML);
	}
	};
	xmlHttp.open("GET", "/admin/approval.ashx?function=view&docentry=" + documentId, true);
	xmlHttp.send(null);
	return false;
}
//---------------------------------------------------------------------------------------------------------
function chkConfirm(docXML, requestId, decision)
{
	if (docXML.documentElement.tagName != "confirmReq")
		return true

	//so that means tagName is confirmReq
	//get number of entries to display
	var baseElement = docXML.documentElement.childNodes;
	entries = baseElement.length;
	
	if (entries == 0)
		return true
		
	var counter1 = 0;
	var outputStr = "This request has been rejected by: \n";
	var text, user;
	while (counter1 < entries)
	{
		text = baseElement[counter1].childNodes[0].childNodes[0].nodeValue;
		user = baseElement[counter1].childNodes[1].childNodes[0].nodeValue;
		outputStr = outputStr + user + ": " + text + ".\n"
		counter1 ++
	}
	outputStr = outputStr + "Click OK to force approval, or Cancel to decline."
	
	var answer = confirm(outputStr);
	if (answer)
		forceApproval(requestId, true)
	return false;
}
//---------------------------------------------------------------------------------------------------------
function closeDIV2()
	{
		if(document.getElementById('ApprovalMenuDiv'))
		{
			var toClose = document.getElementById('ApprovalMenuDiv')
			toClose.style.display="none";

			document.getElementById('msgbox2').removeChild(toClose);
		}
	}			 
//---------------------------------------------------------------------------------------------------------	

