function init()
{
	clearPackageForm();
	ajaxClearPackageList();
	new Effect.Appear('selectDestination');
}

function destinationChanged(select)
{
	clearMessages();	
	new Effect.Fade('selectDestination');
	setTimeout(function () {
		verifyDestination(select);
	}, 1000);
	
}

function submitInsurance()
{
	new Effect.Fade('insuranceDiv');
	setTimeout(function() {
		if (verifyEmail() == false)
		{
			new Effect.Appear('emailForm');
		}
		else
		{
			showQuote();
		}
	}, 1000);
}

function clearMessages()
{
	if ($('errorMessage').style.display != 'none')
	{
		new Effect.Fade('errorMessage');
	}
	
	if ($('loadingMessage').style.display != 'none')
	{
		new Effect.Fade('loadingMessage');
	}
}

function shipIt()
{
	new Effect.Fade('quote');
	setTimeout(function() {
		new Effect.Appear('addressEntry');
	}, 1000);
}

function returnToSelectDestination()
{
	new Effect.Fade('packageEntry');
	setTimeout(function(){
		ajaxClearPackageList();
		new Effect.Appear('selectDestination');
	}, 1000);
}

function verifyDestination(select)
{
	new Ajax.Request('quote.php', {
        method: 'post',
        parameters: {method: 'verifyDestination', destination: select.value},
        onSuccess: function(transport) {
			var json = transport.responseText.evalJSON(); 
				if (json == true)
				{
					$('packageEntryHelp').innerHTML = 'OK, what packages are you looking to ship to <u>'+select.value+'</u>? ';
					$('packageEntryHelp').innerHTML += '(Not the country you had in mind? <a href="javascript:returnToSelectDestination()">Click here to try again.</a>)';
					new Effect.Appear('packageEntry');
				}
				else
				{
					showErrorMessage('The destination you selected could not be verified.');
					setTimeout(function(){
						new Effect.Appear('selectDestination');
					}, 1000);
				}
        }
    })
}

function showLoadingMessage(message)
{
	$('loadingMessage').innerHTML = message+' <img src="images/loading.gif" alt="Loading..." />';
	
	if ($('loadingMessage').style.display == 'none')
	{
		new Effect.Appear('loadingMessage');
	}
	else
	{
		new Effect.Highlight('loadingMessage');
	}
}

function showErrorMessage(message)
{
	$('errorMessage').innerHTML = message;
	
	if ($('errorMessage').style.display == 'none')
	{
		new Effect.Appear('errorMessage');
	}
	else
	{
		new Effect.Highlight('errorMessage');
	}
}

function packageListRemoveButton()
{
	$('packageList').deleteRow(-1);
}

function packageListAppendButton()
{
	var row = $('packageList').insertRow(-1);
	
	var cell = row.insertCell(-1);
	cell.innerHTML = '<input type="button" value="Clear list" style="width: 100%" onclick="ajaxClearPackageList()" />';
	
	cell = row.insertCell(-1);
	cell.innerHTML = '<input type="button" value="Calculate quote" style="width: 100%" onclick="finishPackageEntry()" />';
}

function packageListAddPackage(package)
{
	packageListRemoveButton();	
	
	var row = $('packageList').insertRow(-1);
	
    var cell = row.insertCell(-1);
    cell.innerHTML = package.weight+' lbs.';

    cell = row.insertCell(-1);
	cell.innerHTML = package.quantity;
    
    packageListAppendButton();
    
    if ($('packageList').style.display == 'none')
    {
    	new Effect.Appear('packageList')
    }
    else
    {
    	new Effect.Highlight(row);
    }
}

function finishPackageEntry()
{
	new Effect.Fade('packageEntry');
	setTimeout(function(){
		new Effect.Appear('insuranceDiv');
	}, 1000);
}

function clearPackageList()
{
	if ($('packageList').style.display != 'none')
	{
		new Effect.Fade('packageList');
	}
	
	setTimeout(function() {
		while ($('packageList').rows.length > 1)
		{
			$('packageList').deleteRow(-1);
		}
		
		packageListAppendButton();
	}, 1000);
}

function clearPackageForm()
{
	$('packageWeight').value = '';
	$('packageQuantity').value = '1';
}

function disablePackageForm()
{
	$('packageWeight').disabled = true;
	$('packageQuantity').disabled = true;
	$('addPackageButton').disabled = true;
}

function enablePackageForm()
{
	$('packageWeight').disabled = false;
	$('packageQuantity').disabled = false;
	verifyPackageForm();
}

function ajaxAddPackage()
{
    if ($('packageWeight').value > 0 && $('packageQuantity').value > 0)
	{
    	clearMessages();
    	disablePackageForm();
    	
		new Ajax.Request('quote.php', {
	        method: 'post',
			parameters: {
	            method: 'add_package',
				weight: $('packageWeight').value,
				quantity: $('packageQuantity').value
				},
			onSuccess: function(transport) {
	            var json = transport.responseText.evalJSON(); 

				clearPackageForm();
				enablePackageForm();
				
				packageListAddPackage(json);
	        }
	    });
	}
    else
    {
        showErrorMessage('You must fill out all of the package information fields before adding it to the list.');
    }
}

function verifyEmail()
{
	var regex = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	return regex.test($('emailAddress').value);
}

function submitEmail()
{
	if (verifyEmail() == false)
	{
		showErrorMessage("Please provide a valid email address where we can contact you.");
	}
	else
	{
		clearMessages();
		new Effect.Fade('emailForm');
		
		setTimeout(function() {
			showQuote();
		}, 1000);
	}
}

function showQuote()
{		
	$('quoteHelp').innerHTML = 'The quote for your shipment to <u>'+$('destination').value+'</u> is ready:';
	
	new Effect.Appear('quote');
	
	setTimeout(function(){
		getQuote();
	}, 1000);
}

function ajaxClearPackageList()
{	
    new Ajax.Request('quote.php', {
        method: 'post',
        parameters: {method: 'clear_package_list'},
        onSuccess: function(transport) {
            clearPackageList();
        }
    });
}

function returnToPackageEntry()
{
	new Effect.Fade('quote');
	setTimeout(function() {
		$('quoteLinks').style.display = 'none';
		$('globalStandard').style.display = 'none';
		$('globalPriority').style.display = 'none';
		
		new Effect.Appear('packageEntry');
	}, 1000);
}

function getQuote()
{
    new Ajax.Request('quote.php', {
        method: 'post',
        parameters: {method: 'get_quote', country: $('destination').value, email: $('emailAddress').value, insurance: $('insurance').value, fname: $('emailFName').value, lname: $('emailLName').value, phone: $('emailPhone').value, month: $('emailMonth').value, day: $('emailDay').value, year: $('emailYear').value, comments: $('emailComments').value},
        onSuccess: function(transport) {
            var json = transport.responseText.evalJSON();
            
            if (json.standard != 0)
			{
				$('standardText').innerHTML = 'Global Standard: <u>$'+json.standard.toFixed(2)+'</u>';
				new Effect.Appear('globalStandard');
			}
			if (json.priority != 0)
			{
				$('priorityText').innerHTML = 'Global Priority: <u>$'+json.priority.toFixed(2)+'</u>';
				new Effect.Appear('globalPriority');
			}
			
			setTimeout(function(){
				new Effect.Appear('quoteLinks');
			}, 1000);
        }
    });
}

function getCheckedValue(radioObj) {
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

function submitAddress()
{
	if ($('agreed').checked)
	{
		clearMessages();
		new Effect.Fade('addressEntry');
		setTimeout(function() {
			new Ajax.Request('quote.php', {
				method: 'post',
				parameters: {
					method: 'submitAddress',
					from_company: $('from_company').value,
					from_first_name: $('from_first_name').value,
					from_last_name: $('from_last_name').value,
					from_address1: $('from_address1').value,
					from_address2: $('from_address2').value,
					from_city: $('from_city').value,
					from_state: $('from_state').value,
					from_zip: $('from_zip').value,
					from_country: $('from_country').value,
					from_phone1: $('from_phone1').value,
					from_phone2: $('from_phone2').value,
					to_company: $('to_company').value,
                    to_first_name: $('to_first_name').value,
					to_last_name: $('to_last_name').value,
					to_address1: $('to_address1').value,
                    to_address2: $('to_address2').value,
                    to_city: $('to_city').value,
                    to_state: $('to_state').value,
                    to_zip: $('to_zip').value,
                    to_country: $('to_country').value,
                    to_phone1: $('to_phone1').value,
                    to_phone2: $('to_phone2').value,
                    ship_class: getCheckedValue($('shipClass'))
                },
                onSuccess: function(transport) {
                }
			});

			new Effect.Appear('finished');
		}, 1000);
	}
	else
	{
		showErrorMessage('Please agree to the Terms & Conditions before continuing.');
	}
}

function verifyPackageForm()
{	
	if ($('packageWeight').value > 0 && $('packageQuantity').value > 0)
	{
		$('addPackageButton').disabled = false;
	}
	else
	{
		$('addPackageButton').disabled = true;
	}
}

function calcPackageWeight()
{
}

