//Custom javascript file used by our main index page to load all of our orders via ajax request
//also used to populate tables with the result of the ajax request.

var ordersTimeout=null;

function setOrdersTimeout(){
    ordersTimeout=setTimeout("handleOrdersTimeout();", 10000);
}

function handleOrdersTimeout(){
    window.location.reload();
}

function getInnerText (node) {
	if (typeof node.textContent != 'undefined') {
		return node.textContent;
	} else if (typeof node.innerText != 'undefined') {
		return node.innerText;	
	} else if (typeof node.text != 'undefined') {
		return node.text;	
	} else {
	switch (node.nodeType) {
		case 3:
		case 4:
			return node.nodeValue;
			break;
		case 1:
		case 11:
			var innerText = '';
			for (var i = 0; i < node.childNodes.length; i++) {
				innerText += getInnerText(node.childNodes[i]);
			}
			return innerText;
			break;
		default:
			return '';
		}
	}
}

function receiveCompleteRequest(transport) {
	var orders = transport.responseXML.getElementsByTagName('orders')[0].childNodes;
	var total_count = getInnerText(transport.responseXML.getElementsByTagName('total_count')[0]);
	var completed_orders_tables = document.getElementById('completed_orders');
	var columnList = new Array();
	columnList[0] = 'order_date_creation';
	columnList[1] = 'order_jobname';
	columnList[2] = 'order_type';
	columnList[3] = 'order_name_branch';
	columnList[4] = 'order_name_agent';
	columnList[5] = 'details';
	columnList[6] = 'proof';
	columnList[7] = 'tracking';
	columnList[8] = 'photo_link';
	columnList[9] = 'reorder';
	populateOrderTable(orders, total_count, completed_orders_tables, 'completed', columnList);
}

function receivePendingRequest(transport) {
	var orders = transport.responseXML.getElementsByTagName('orders')[0].childNodes;
	var total_count = getInnerText(transport.responseXML.getElementsByTagName('total_count')[0]);
	var pending_orders_tables = document.getElementById('pending_orders');
	var columnList = new Array();
	if(ordersTimeout != null){
		clearTimeout(ordersTimeout);
	}
	columnList[0] = 'edit_order';
	columnList[1] = 'order_jobname';
	columnList[2] = 'order_type';
	columnList[3] = 'attached_photos';
	columnList[4] = 'order_name_branch';
	columnList[5] = 'order_name_agent';
	columnList[6] = 'order_date_creation';
	columnList[7] = 'delete';
	populateOrderTable(orders, total_count, pending_orders_tables, 'pending', columnList);
}

function notifyFailure() {
	alert("There was an error retrieving your past order information, please try again!");
}

function showHistory(MAIN_SERVER, id_session) {
	document.getElementById('pending_tab').setAttribute('class', 'tabH');
	document.getElementById('completed_tab').setAttribute('class', 'tabH_on');
	document.getElementById('pending_tab').setAttribute('className', 'tabH');
	document.getElementById('completed_tab').setAttribute('className', 'tabH_on');
	document.getElementById('pending_orders_div').style.display = 'none';
	document.getElementById('completed_orders_div').style.display = 'block';
	if (document.getElementById('ajax_completed').style.display != 'none') {
		new Ajax.Request( 
			MAIN_SERVER + '/next/ajax/retrieve_orders.php?id_session=' + id_session,  
			{ 
 				onSuccess  : receiveCompleteRequest,
 				onFailure  : notifyFailure,
				parameters : "type=complete"
			}
		);
	}
	return false;
}

function showPending() {
	document.getElementById('pending_tab').setAttribute('class', 'tabH_on');
	document.getElementById('completed_tab').setAttribute('class', 'tabH');
	document.getElementById('pending_tab').setAttribute('className', 'tabH_on');
	document.getElementById('completed_tab').setAttribute('className', 'tabH');
	document.getElementById('pending_orders_div').style.display = 'block';
	document.getElementById('completed_orders_div').style.display = 'none';
	return false;
}




function populateOrderTable(orders, total_count, order_table, type, column_list) {
	if (total_count > " . $this->results_per_page . ") {
		document.getElementById(type + '_page_count').innerHTML = " . $this->results_per_page . ";
		document.getElementById(type + '_view_more').style.display = "inline";
	} else {
		document.getElementById(type + '_page_count').innerHTML = total_count;
	}
	document.getElementById(type + '_total_count').innerHTML = total_count;
	document.getElementById('ajax_' + type).style.display = 'none';
	var orderLength = orders.length;
	for (var i=0; i < orderLength; i++){
		var currColumn = 0;
		var newRow = order_table.insertRow(1 + i);
		var columnValues = new Object();
		if (i % 2 == 0) {
			newRow.className = 'row_a';
		} else {
			newRow.className = 'row_b';
		}
		columnValues['edit_order'] = '<a href="' + self + '?action=edit&id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '">Place/Edit</a>';
		columnValues['delete'] =  '<a href="' + self + '?action=delete&id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '" onClick=\"return promptUserForDelete(' + orders[i].getAttribute('order_jobname') + ');\"><img src=\"" . WS_IMAGES_ROOT . "delete.gif\" alt=\"\" width=\"15\" height=\"16\" border=\"0\"></a>';
		columnValues['details'] = '<a href="' + self + '?action=order_details&id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '"><img src=\"" . WS_IMAGES_ROOT . "info.gif\" alt=\"info.gif\" width=\"20\" height=\"20\" border=\"0\"></a>';
		columnValues['proof'] =   '<a href="' + self + '?file=' + orders[i].getAttribute('proof_page1') + '&id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '"><img src=\"" . WS_IMAGES_ROOT . "page1.gif\" alt=\"\" width=\"13\" height=\"17\" border=\"0\"></a>';
		if (orders[i].getAttribute('proof_page2') != null) {
			columnValues['proof'] = columnValues['proof'] + '<a href="' + self + '?file=' + orders[i].getAttribute('proof_page2') + '&id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '"><img src=\"" . WS_IMAGES_ROOT . "page2.gif\" alt=\"\" width=\"13\" height=\"17\" border=\"0\"></a>';
		}
		if (orders[i].getAttribute('shipping_method') == 'FedEx') {
			columnValues['tracking'] = '<a href=\"account/fedex_track.php?id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '"><img src=\"" . WS_IMAGES_ROOT . "tracking.gif\" alt=\"tracking.gif\" width=\"22\" height=\"15\" border=\"0\"/></a>';
		} else if (orders[i].getAttribute('shipping_method') == 'Mailing') {
			columnValues['tracking'] = '<a href=\"#\" onClick=\"alert(\'Your order has been printed. Mailed orders placed by 4pm (Central Time) will be submitted to the Post Office no later than the following business day. The USPS asks that you allow 3 - 7 business days for First Class delivery and 5 - 15 business days for Standard Mail delivery. (These are estimated delivery times per the United States Postal Service)\'); return false;\"><img src=\"" . WS_IMAGES_ROOT . "us_stamp.gif\" style=\"border: 0px;\"></a>'; 
		} else {
			columnValues['tracking'] = '(' + orders[i].getAttribute('shipping_method') + ')';
		}
		if (orders[i].getAttribute('attached_photos') > 0) {
			columnValues['photo_link'] = '<a href=\"account/manage_photos.php?id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=' + self + '"><img src=\"" . WS_IMAGES_ROOT . "picture.gif\" alt=\"picture.gif\" width=\"17\" height=\"15\" border=\"0\">';
		} else {
			columnValues['photo_link'] = '';
		}
		columnValues['reorder'] = '<a href=\"account/history.php?action=reorder&id_order=' + orders[i].getAttribute('id_primary') + '&id_session=' + id_session + '&referrer=" . WS_WEB_ROOT . "account/history.php\" onClick=\"return confirm(\'This will create a new order using information from the selected order.\\\\r\\\\rYou WILL be able to edit this order before placing it.\\\\r\\\\rDo you wish to continue?\')\"><img src=\"" . WS_IMAGES_ROOT . "reorder.gif\" alt=\"reorder.gif\" width=\"16\" height=\"16\" border=\"0\"></a>';
									
		for (var column = 0; column < column_list.length; column++) {
			if (columnValues[column_list[column]] != null || orders[i].getAttribute(column_list[column]) != null) {
				var currCell = newRow.insertCell(currColumn++);
				if (column_list[column] == 'proof') {
					currCell.noWrap = true;
				}
				if (columnValues[column_list[column]] != null) {
					currCell.innerHTML = columnValues[column_list[column]];
				} else if (orders[i].getAttribute(column_list[column]) != null) {
					currCell.innerHTML = orders[i].getAttribute(column_list[column]);
				}
			}
		}
	}
}