var ajaxcall = "././ajaxcall/";
var imagepath ="././images/";
var panel_id = null;
var checkbox_id = null;
var globalLabel="";
var globalAddr="";


function uncheckOldDefaultAddress()
{
	baseObj = document.getElementById("addressBookContainer");
	if( baseObj !== null ) {
		var eleTableRows = baseObj.getElementsByTagName("tr");  
		for (var i=0; i < eleTableRows.length - 1; i++)  
		{
			if (i != checkbox_id)
			{
	            document.getElementById("defaultCheckbox" + i).checked = false;
			}
		}
	}
}

function ProcessSetDefaultAddress( response )
{
	if( parseInt(response, 10) > 0) 
	{
		uncheckOldDefaultAddress();
		//alert('Address Deleted');
	}
	else
	{
		alert('Error occurred while setting default address.');
	}
}

function setDefaultAddress(id, addrid)
{
	checkbox_id = id;
	checked = document.getElementById("defaultCheckbox" + id).checked;
	var postContent = '';
	postContent += "id=" + addrid+ "&";
	postContent += "value=" + checked;
	jQuery.get(ajaxcall + "setdefaultaddress.php", postContent, ProcessSetDefaultAddress);
}

function updateAddressLabel(id, element)
{
	var postContent = '';
	postContent += "id=" + id+ "&";
	postContent += "value=" + element.value;
	jQuery.get(ajaxcall + "updateaddress.php", postContent, ProcessUpdateLabel);
	element.parentNode.childNodes[0].innerHTML = element.value;
	sortingTable.reSort();
}

function ProcessUpdateAddress(response)
{
	if(parseInt(response, 10) !== 0)
	{
		alert('Error occured while updating address.');
	}
}

function updateAddressText(id, element)
{
	var postContent = '';
	postContent += "id=" + id+ "&";
	postContent += "value=" + element.value;
	jQuery.get(ajaxcall + "updateaddresstext.php", postContent, ProcessUpdateAddress);
}

function ProcessUpdateLabel(response)
{
	if(parseInt(response, 10) !== 0)
	{
		alert('Error occured while updating label.');
	}
}

function getMaximumAddresses()
{
	var myAjax = new Ajax.Request( ajaxcall + "getMaximumAddresses.php", {
		method: 'get',
		parameters: '',
		asynchronous:false
	} );
	var max = myAjax.transport.responseText;
	return parseInt( max, 10 );
}

function resetStripping(eleTable)
{
	var eleTableRows = eleTable.getElementsByTagName("tr");  
	for (var i=1; i < eleTableRows.length; i++)  
	{
		eleTableRows[i].className = "rowodd";  
		i++;
		if (i < eleTableRows.length)
		{
		  eleTableRows[i].className = "roweven";
		}
	}
}

function deleteAddressElement() 
{
	baseObj = document.getElementById("addressBookContainer");
	baseObj.deleteRow(document.getElementById(panel_id).rowIndex);
	resetStripping(baseObj);
}

function ProcessDeleteAddress(response) 
{
	if(parseInt(response, 10) > 0) 
	{
		deleteAddressElement();
		//alert('Address Deleted');
	}
	else
	{
		alert('Error occured while deleting address.');
	}
}

function deleteAddress(addrid, id) 
{
	panel_id = 'addressPanel' + id;
	if (confirm("Are you sure you want to delete this address?")) 
	{ 
		var postContent = '';
		postContent += "id=" + addrid;
		jQuery.get(ajaxcall + "deleteaddress.php", postContent, ProcessDeleteAddress);
	}
}

function ProcessAddingAddress(response) 
{
	if(parseInt(response, 10) === 0 || response=='ERROR') 
	{
		alert('Error occured while adding address to the address book.');
	}
}

function ProcessAddingAddressTab(response) 
{
   if(parseInt(response, 10) === 0 || response=='ERROR') 
   {
      alert('Error occured while adding address to the address book.');
   }else{
      var responseArr = response.split('###');
      var routeID = parseInt(responseArr[0],10);
      var baseObj = document.getElementById("addressBookContainer");
      var num = baseObj.rows.length-1;
      var newRow = baseObj.insertRow(-1);
      var newCell0 = newRow.insertCell(0);//has to be done with DOM because IE doesn't support dynamic tables with innerHTML
      newCell0.align="left";
      newCell0.innerHTML="<input id=\"addToRouteCheckBox" +num+ "\" type=\"checkbox\" " +
            "onclick=\"addToList(" +routeID+ "," +num+ ")\" />";
      var newCell1 = newRow.insertCell(1);
      newCell1.align="left";
      newCell1.innerHTML="<div style=\"" +
            "display:none;\">" +globalLabel+ "</div><input type=\"text\" size=\"40\" maxlength=\"40\" " +
            "value=\"" +globalLabel+ "\" onchange=\"updateAddressLabel(" +routeID+ ", this)\"/>";
      var newCell2 = newRow.insertCell(2);
      newCell2.align="left";
      newCell2.innerHTML=globalAddr;
      var newCell3 = newRow.insertCell(3);
      newCell3.align="center";
      newCell3.innerHTML="<input id=\"defaultCheckbox" +num+
            "\" type=\"checkbox\" onclick=\"setDefaultAddress(" +num+ ", '" +routeID+"');\" " +
            "value=\"0\" />";
      var newCell4 = newRow.insertCell(4);
      newCell4.align="center";
      newCell4.innerHTML="<a href=\"javascript: deleteAddress('" +routeID+ "','" +num+ 
                  "');\" title=\"Delete this address\"><img src=\"" +imagepath+ "delete_small.png\" class=\"valign_icon\" /></a>";
/*      newRow.innerHTML="<td align=\"left\"> <input id=\"addToRouteCheckBox" +num+ "\" type=\"checkbox\" " +
      		"onclick=\"addToList(" +routeID+ "," +num+ ")\" /></td><td align=\"left\"><div style=\"" +
      				"display:none;\">" +globalLabel+ "</div><input type=\"text\" size=\"40\" maxlength=\"40\" " +
      				"value=\"" +globalLabel+ "\" onchange=\"updateAddressLabel(" +routeID+ ", this)\"/></td>" +
      				"<td align=\"left\">" +globalAddr+ "</td><td align=\"center\"><input id=\"defaultCheckbox" +num+
      				"\" type=\"checkbox\" onclick=\"setDefaultAddress(" +num+ ", '" +routeID+"');\" " +
      				"value=\"0\" /></td><td align=\"center\">" +
      				"<a href=\"javascript: deleteAddress('" +routeID+ "','" +num+ 
      				"');\" title=\"Delete this address\"><img src=\"" +imagepath+ "delete_small.png\" class=\"valign_icon\" /></a></td>";*/
      resetStripping(baseObj);
   }
}

function closeAddressBookDialog()
{
	jQuery("#addressbookdialog").dialog("close");
}

function addToAddressBookTab(id)
{
   var label = "";
   var data = document.getElementById(id).value;
   var separator = data.indexOf(":");
   if (separator >= 0){
      label = data.substr(0, separator);
      data = data.substring(separator + 1)
   }
   // call backend to add address
   globalLabel=label;
   globalAddr = data;
   var postContent = '';
   postContent += "label="+ label + "&";
   postContent += "addr=" + data + "&";
   postContent += "lat=0"+ "&";
   postContent += "lon=0";
   jQuery.get(ajaxcall + "addAddress.php", postContent, ProcessAddingAddressTab);
}

function addAddressToAddressBook(id)
{
	var label = "";
	var data = document.getElementById(id).value;
	var separator = data.indexOf(":");
	if (separator >= 0){
		label = data.substr(0, separator);
		data = data.substring(separator + 1)
	}
	// call backend to add address
	var postContent = '';
	postContent += "label="+ label + "&";
	postContent += "addr=" + data + "&";
	postContent += "lat=0"+ "&";
	postContent += "lon=0";
	jQuery.get(ajaxcall + "addAddress.php", postContent, ProcessAddingAddress);
	closeAddressBookDialog();
}

var addressBookDialogOpened = false;

function openAddressBook(id)
{
  if( !addressBookDialogOpened ) {
   addressBookDialogOpened = true;

   jQuery("#addressbookdialog").dialog({
      autoOpen:false, 
      resizable: false, 
      close: function(event, ui) { 
        addressBookDialogOpened = false;
      }
   });

   jQuery("#addressbookdialog").load("addressbookdialog", "", function(){
      jQuery("#addressBookBody tr").mouseover(function(){
			   jQuery(this).toggleClass('highlight');
			   if( jQuery(this).hasClass('alt') ) {
			      jQuery(this).toggleClass('alt');
               jQuery(this).toggleClass('isEvenRow'); // just a marker
			   }
			   if( jQuery(this).hasClass('roweven') ) {
               jQuery(this).toggleClass('roweven');
            }
			   if( jQuery(this).hasClass('rowodd') ) {
               jQuery(this).toggleClass('rowodd');
            }
			   if( jQuery(this).hasClass('odd') ) {
               jQuery(this).toggleClass('odd');
               jQuery(this).toggleClass('isOddRow'); // just a marker
            }
			});
      jQuery("#addressBookBody tr").mouseout(function(){
				jQuery(this).toggleClass('highlight');
				if( jQuery(this).hasClass('isEvenRow') ) {
//				   jQuery(this).toggleClass('roweven');
				   jQuery(this).toggleClass('alt');
				   jQuery(this).toggleClass('isEvenRow');
				}
				if( jQuery(this).hasClass('isOddRow')){
				   jQuery(this).toggleClass('odd');
				   jQuery(this).toggleClass('isOddRow');
				}
			});

//		jQuery("#addressBookBody tr:even").addClass('roweven');
//      jQuery("#addressBookBody tr:even").addClass('isEvenRow'); // just a marker

		jQuery("#addressBookBody tr").click(function() {
			// set address text for id
			var label = jQuery(this).children(':first').text() + ":";
			if (label == ":"){
				label = "";
			}
			document.getElementById(id).value = label + jQuery(this).children(':last').text();
			document.getElementById(id).onchange();
			document.getElementById(id).style.color = '#333333';

			closeAddressBookDialog();
		}
		);
		
		jQuery("#addAddressButton").click(function(){
			addAddressToAddressBook(id);
		});
		// validate not at limit
		var count = jQuery("#addressBookContainer tr").length;
		var limit = jQuery("#maxAddresses").attr("value");
		var data = document.getElementById(id).value;
		document.getElementById("addressToAdd").innerHTML = data;
		if (data.length < 5 || count > limit || data.indexOf("stop address") >= 0)
		{
			jQuery("#addAddressButton").hide();
			document.getElementById("addressToAdd").innerHTML = "";
		}
		else
		{
			jQuery("#addAddressButton").show();
		}
	}
	);
	
	jQuery("#addressbookdialog").data("height.dialog", 500);
	jQuery("#addressbookdialog").data("width.dialog", 550);
	jQuery("#addressbookdialog").dialog("open");
  }
}

function ProcessLoadDefaultAddress(response) 
{
	if( response !== '') 
	{
		jQuery("#routeA").attr("value", response);
		jQuery("#routeA").change();
		jQuery("#routeA").attr("style", "color:#333333");
		jQuery("#routeB").focus();
	}
}

function loadDefaultAddress()
{
	if( addList.length == 0 ){
		var postContent = '';
		jQuery.get(ajaxcall + "getDefaultAddress.php", postContent, ProcessLoadDefaultAddress);
	}
}

