/**
 * sabreAssist.js
 * Manages the javascript responsible for executing the traveler loyalty program operations.
 * 
 * 
 * 
 * @author 		Brandon Zarzoza - bzarzoza@gmail.com
 				Kym Van Arsdale - kym.van.arsdale@gmail.com
 				
 * @requires	'basePath' must be assigned to the path to the servlet actions. Assign in the enclosing *.jsp
 */

function init() {	
	
}


/**
 * Object to manage the various password operations.
 */
var login = {
	init:function()
	{
		
	},
	
	/**
	 * 'properties' will hold various info. 
	 * Ideal for things like DOM ids.
	 */
	properties:
	{
		forms:
		{
			input:
			{
				memberId:	"memberIdInput",
				password:	"passwordInput"
			},
			output:
			{
				catchAll:	"detailParagraph",
				transactionListParagraph: "transactionList",
				errorParagraph: "transactionError"

			}
		}
	
	},
	
	commandQuery:function() {
		
		var memberId	=	document.getElementById(login.properties.forms.input.memberId);
		var password	=	document.getElementById(login.properties.forms.input.password);
		
		var params = {
			memberId	: memberId.value,
			password : password.value
		};
	
		var bindArgs={ 
		    	url: "servlet/loginAction", 
		    	preventCache: true,
		    	handleAs: "json",
		  	    error:function(response, ioArgs)
		  	    {
		  	    	document.getElementById('userMessage').innerHTML= response.exitStateMessage;
		  	    },
		  	    load:function(response, ioArgs)
		  	    {
		  	    	if (response.exitStateMessage.substring(0,5) == "I0001")
		  	    	{
		  	    		login.populateQuery(response);
		  	    	}
		  	    	else
		  	    	{
		  	    		if(response.exitStateMessage != "")
		  	    		document.getElementById('userMessage').innerHTML= response.exitStateMessage;
		  	    		else
		  	    		document.getElementById('userMessage').innerHTML= "Member account not found.";
		  	    	}
		  	    },
		  	    content: params, 		  	    
		  	    mimetype: "text/json"
		  	  };
		dojo.xhrGet(bindArgs);
	
	},

	
	next:function(count) {
	
	//	document.getElementById("previousActivity").innerHTML="<span style='color: #b32d38; font-weight: bold;'>Loading...</span>";
		
		var transactionTable = document.getElementById("transactionTable");
		var tables = transactionTable.getElementsByTagName("table");
		
		for( i=0; i< tables.length; i++){
			var tableId = count + 10;
			if(tables[i].id == tableId){
				var currentTransactionTable = document.getElementById(count);
				currentTransactionTable.style.display = "none";

				tables[i].style.display = "block";
				scroll(0,0);
				return;
			}
		}
		
		var memberId	=	document.getElementById(login.properties.forms.input.memberId);
		var password	=	document.getElementById(login.properties.forms.input.password);
		
		var params = {
			memberId	: memberId.value,
			password : password.value, 
			transactionCount: count
		};
	
		var bindArgs={ 
		    	url: "servlet/nextAction", 
		    	preventCache: true,
		    	handleAs: "json",
		  	    error:function(response, ioArgs)
		  	    {
		  	    	var transactionTable = document.getElementById('transactionTable');
					var rowNumber = transactionTable.rows.length;
		  	    	var errorRow = transactionTable.insertRow(rowNumber);
					var errorCell = errorRow.insertCell(0);
					errorCell.innerHTML = "<div style='color: #B32D38; font-weight: bold'>There are no more member activities available.</div>";

		  	    },
		  	    load:function(response, ioArgs)
		  	    {
		  	    	if (response.exitStateMessage.substring(0,5) == "I0103")
		  	    	{
		  	    		login.addTransactionText(response, response.count);
		  	    	}
		  	    	else
		  	    	{
		  	    	var transactionTable = document.getElementById('transactionTable');
					var rowNumber = transactionTable.rows.length;
		  	    	var errorRow = transactionTable.insertRow(rowNumber);
					var errorCell = errorRow.insertCell(0);
					errorCell.innerHTML = "<div style='color: #B32D38; font-weight: bold'>There are no more member activities available.</div>";
					errorCell.colSpan = "4";
		  	    	
		  	}
		  	    },
		  	    content: params, 		  	    
		  	    mimetype: "text/json"
		  	  };
		dojo.xhrGet(bindArgs);
	
	},
	
	populateQuery:function(response) {
	
		if(response.count != null){
		var transactionText = login.generateTransactionText(response, response.count);
		}
		else{
		var transactionText = login.generateTransactionText(response, "10");
		}
		document.getElementById(login.properties.forms.output.transactionListParagraph).innerHTML = transactionText;
		
		var outputText = login.generateQueryText(response);
		document.getElementById(login.properties.forms.output.catchAll).innerHTML = outputText;
		
		
		document.getElementById('options').style.display='block'; 
		document.getElementById('login').style.display='none'; 
		document.getElementById('userMessage').style.display='none';
		
	},
	
	generateTransactionText:function(response, count)
	{
		try
		{
			var transactionString = "";
			
			if(response.transactions.length == 0){
				transactionString = "<span style='font-weight: bold; color: #B32D38'>There is no flight history available.</span>";
				return transactionString;
			}
			
			transactionString += "<table id='transactionTable' width='100%' style='text-align: left; '><tr><td>";
			transactionString += "<table id='" + count +"' width='100%'><tr><td><div style='height: 1px; border-bottom: 1px solid #DCDCDC;'><IMG SRC='images/spacer.gif' WIDTH=370 HEIGHT=4></div></td></tr>";
				
			
			var i = 0;
			for(i = 0; i < response.transactions.length; i ++)
			{
				
				transactionString += "<tr><td>" + response.transactions[i].html + "</td></tr>";
				transactionString += "<tr><td><div style='height: 1px; border-bottom: 1px solid #DCDCDC;'><IMG SRC='images/spacer.gif' WIDTH=370 HEIGHT=4></div></td></tr>";
				
			}
			
			if(response.transactions.length > 9)
			   transactionString += "<tr><td><span id='previousActivity'><a href='javascript:login.next(" + count + ");'>&#60;&#60; Previous Activity</a></span></td></tr></table></td></tr></table>";
			else
			 transactionString += "</table>";
			
			
		} catch (err)
		{
			transactionString = "<span style='font-weight: bold; color: #B32D38'>There is no flight history available.</span>";
		}
		return transactionString;
	},
	
	addTransactionText:function(response, count)
	{
	    var currentTableId = count - 10;
		var currentTransactionTable = document.getElementById(currentTableId);
		currentTransactionTable.style.display = "none";
		
		
		try
		{
			var transactionString = "";
			
			transactionString += "<table id='" + count +"' width='100%'><tr><td colspan='2'><div style='height: 1px; border-bottom: 1px solid #DCDCDC;'><IMG SRC='images/spacer.gif' WIDTH=370 HEIGHT=4></div></td></tr>";
				
			
			var i = 0;
			for(i = 0; i < response.transactions.length; i ++)
			{
				
				transactionString += "<tr><td colspan='2'>" + response.transactions[i].html + "</td></tr>";
				transactionString += "<tr><td colspan='2'><div style='height: 1px; border-bottom: 1px solid #DCDCDC;'><IMG SRC='images/spacer.gif' WIDTH=370 HEIGHT=4></div></td></tr>";
				
			}
			
			if(response.transactions.length > 9)
			   transactionString += "<tr><td><span id='previousActivity'><a href='javascript:login.next(" + count + ");'>&#60;&#60; Previous Activity</a></span></td>" + 
			                     "<td style='text-align: right'><span id='nextActivity'><a href='javascript:login.previous(" + count + ");'>Next Activity &#62;&#62;</a></span></td></tr></table>";
			
			else
			 transactionString += "<tr><td>&nbsp;</td>" + 
			                     "<td style='text-align: right'><span id='nextActivity'><a href='javascript:login.previous(" + count + ");'>Next Activity &#62;&#62;</a></span></td></tr></table>";
			
			
			
			
			
		} catch (err)
		{
			transactionString = "<span style='font-weight: bold; color: #B32D38'>There is no flight history available.</span>";
		}
		
		var transactionTable = document.getElementById("transactionTable");
		var rowNumber = transactionTable.rows.length;
		var row = transactionTable.insertRow(rowNumber);
		var cell = row.insertCell(0);
		cell.colSpan = "2";
		cell.innerHTML = transactionString;
		
		scroll(0,0);
		
		
	},
	
	previous:function(count) {
	
	
		var currentTransactionTable = document.getElementById(count);
		currentTransactionTable.style.display = "none";
		
		 var nextTableId = count - 10;
		var nextTransactionTable = document.getElementById(nextTableId);
		nextTransactionTable.style.display = "block";
		
		scroll(0,0);
	
	},
	
	generateQueryText:function(response)
	{
		try
		{
			var queryString = "";
			
			queryString += "<table width='100%' style='text-align: left; ' >";
			queryString += "<tr><th width='30%'>Member Name:</th><td>" + response.displayName + "</td><td rowspan='2' style='text-align: right;'><a target='blank' href='rewardsCard.jsp?"+ response.memberAccount +","+ response.displayName +"'><img src='images/rewards_card.gif' alt='Print Your FlyAway Rewards Card' style='border: none'/></a></td></tr>";
			queryString += "<tr><th>Points Balance:</th><td>" + response.mileBalance + " points</td></tr>";
			queryString += "<tr><td colspan='3'>&nbsp;</td></tr>";
            queryString += "</table>";
			
		} catch (err)
		{
			queryString = "<span style='font-weight: bold; color: #B32D38'>Error displaying member information.</span>";
		}
		return queryString;
	}
	
};






dojo.addOnLoad( init );