function addItem(packageNumberAdd)
{
	if (itemsCount[packageNumberAdd] < 99)
	{
		var tbody = document.getElementById('package_'+packageNumberAdd).getElementsByTagName('TBODY')[0];
		var newRow = document.createElement("TR");
		var row = document.getElementById('package_'+packageNumberAdd+'_last_row');
		row.parentNode.insertBefore(newRow, row);
		newRow.setAttribute('id', 'package_'+packageNumberAdd+'_itemblock_'+itemsNumbers[packageNumberAdd]);
		var itemNumber = document.createElement("TD");
		var itemPrice = document.createElement("TD");
		var productCategory = document.createElement("TD");
		var productSubcategory = document.createElement("TD");
		var product = document.createElement("TD");
		var deleteAction = document.createElement("TD");
		
		newRow.appendChild(itemNumber);
		newRow.appendChild(itemPrice);
		newRow.appendChild(productCategory);
		newRow.appendChild(productSubcategory);
		newRow.appendChild(product);
		newRow.appendChild(deleteAction);
	
		itemNumber.innerHTML = 'Item ' + itemsNumbers[packageNumberAdd];
		itemPrice.innerHTML = itemPriceInner.replace(/item_price_[0-9]+/g,'item_price_'+itemsNumbers[packageNumberAdd]).replace(/package_[0-9]+/g, 'package_'+ packageNumberAdd);
		productCategory.innerHTML = itemCategoryInner.replace(/item_category_[0-9]+/g,'item_category_'+itemsNumbers[packageNumberAdd]).replace(/package_[0-9]+/g, 'package_'+ packageNumberAdd);
		productSubcategory.innerHTML = itemSubcategoryInner.replace(/item_subcategory_[0-9]+/g,'item_subcategory_'+itemsNumbers[packageNumberAdd]).replace(/package_[0-9]+/g, 'package_'+ packageNumberAdd);
		product.innerHTML = itemProductInner.replace(/item_product_[0-9]+/g,'item_product_'+itemsNumbers[packageNumberAdd]).replace(/package_[0-9]+/g, 'package_'+ packageNumberAdd);		
		if (itemsNumbers[packageNumberAdd] > 1)
			deleteAction.innerHTML = '<a href="#" class="btn-1" onclick="javascript: deleteRow(this, '+packageNumberAdd+'); return false;" ><span>Remove</span></a>';
		deleteAction.className = 'last-td';
		
		createInterfaces(packageNumberAdd);
		refreshRowsStyle(packageNumberAdd);
		refreshRowNumbers(packageNumberAdd);
		itemsNumbers[packageNumberAdd]++;
		itemsCount[packageNumberAdd]++;
	}
	else
	{
		alert("You can add only 99 items in package");
	}
}

function deleteRow(obj, packageNumberDelete)
{
	var table = document.getElementById('package_'+packageNumberDelete);
	var rowIndex = obj.parentNode.parentNode.sectionRowIndex;
	table.deleteRow(rowIndex);
	refreshRowsStyle(packageNumberDelete);
	refreshRowNumbers(packageNumberDelete);
	itemsCount[packageNumberDelete]--;
}

function addError(obj)
{
	if (obj.nodeName == "SELECT")
	{
		obj.parentNode.className = "st-error w-180";
	}
	else 
	{
		obj.className = obj.className + " st-error";
	}
}

function addError2(obj, error)
{
	var errorSpan;
	if (obj.previousSibling.nodeName.toLowerCase() != "p")
	{
		errorSpan = document.createElement("p");
		document.getElementById(obj.id + '_container').insertBefore(errorSpan, obj);
	}
	else
	{
		errorSpan = obj.previousSibling;
	}
	errorSpan.innerHTML = error;
	errorSpan.className = "error";
	errorSpan.id = obj.id+"_error";
}

function removeError2(obj)
{
	if(obj)
	{
		obj.innerHTML = "";
	}
}

function refreshRowsStyle(refreshPackageNumber)
{
	var rows = document.getElementById('package_'+refreshPackageNumber).getElementsByTagName('TBODY')[0].rows;
	for (var count = 1; count < rows.length - 1; count++)
	{
		if (count % 2 == 0)
		{
			rows[count].className = 'alt';
		}
		else
		{
			rows[count].className = '';
		}
	}	
}

function createInterfaces(packageNumberAdd) 
{
	new DutyCalculationCountriesInterface({
		'import_to_field':'country_to',
		'import_from_field': 'country_from',
		'itemsTableContainer': 'package_' + packageNumberAdd,
		'additionalCostsContainerId': 'additionalCostsContainer',
		'taxesChargerLocallyNoteContainerId': 'taxe_charged_locally_note',
		'infoAboutPackageNoteContainerId': 'info_about_package_note_' + packageNumberAdd,
		'deliveryTypeSelectId': 'service_type',
		'url': url,
		'containerId':'package_'+packageNumberAdd+'_itemblock_'+itemsNumbers[packageNumberAdd],
		'categoryField': 'package_'+packageNumberAdd+'_item_category_'+itemsNumbers[packageNumberAdd],
		'subCategoryField':'package_'+packageNumberAdd+'_item_subcategory_'+itemsNumbers[packageNumberAdd],
		'itemsField'	: 'package_'+packageNumberAdd+'_item_product_'+itemsNumbers[packageNumberAdd],
		'already_loaded' : true
	});
                    
	new DutyCalculationProductInterface({
		'acceptor': 'package_'+packageNumberAdd+'_item_subcategory_'+itemsNumbers[packageNumberAdd],
		'listen': 'package_'+packageNumberAdd+'_item_category_'+itemsNumbers[packageNumberAdd],
		'url':url,
		'containerId':'package_'+packageNumberAdd+'_itemblock_'+itemsNumbers[packageNumberAdd],
		'itemsField':'package_'+packageNumberAdd+'_item_product_'+itemsNumbers[packageNumberAdd]
	});

	new DutyCalculationProductInterface({
		'acceptor': 'package_'+packageNumberAdd+'_item_product_'+itemsNumbers[packageNumberAdd],
		'listen': 'package_'+packageNumberAdd+'_item_subcategory_'+itemsNumbers[packageNumberAdd],
		'url':url,
		'containerId':'package_'+packageNumberAdd+'_itemblock_'+itemsNumbers[packageNumberAdd],
		'issub': true,
		'url_param' : 'items',
		'itemsField':'package_'+packageNumberAdd+'_item_product_'+itemsNumbers[packageNumberAdd]
	});
}

function restorePackages(Package)
{
	var localPackageNumber;
	for (var k in Package)
	{
		for (var i in Package[k])
		{
			if (i.indexOf('package_details') != -1)
			{
				var weight = document.getElementById('package_'+k+'_weight');
				var length = document.getElementById('package_'+k+'_length');
				var width = document.getElementById('package_'+k+'_width');
				var height = document.getElementById('package_'+k+'_height');
				var currency = document.getElementsByName('package_'+k+'_currency');
				var massUnit = document.getElementsByName('package_'+k+'_mass_unit');
				var dimensionUnit = document.getElementsByName('package_'+k+'_dimension_unit');
				if (Package[k][i]['weight_error'])
				{
					addError(weight);
				}
				else
				{
					removeError(weight);
				}
				if (Package[k][i]['length_error'])
				{
					addError(length);
				}
				else
				{
					removeError(length);
				}
				if (Package[k][i]['width_error'])
				{
					addError(width);
				}
				else
				{
					removeError(width);
				}
				if (Package[k][i]['height_error'])
				{
					addError(height);
				}
				else
				{
					removeError(height);
				}
			}
			else if (parseInt(i))
			{
				var itemPrice = document.getElementById('package_'+k+'_item_price_'+i);
				var itemCategory = document.getElementById('package_'+k+'_item_category_'+i);
				var itemSubcategory = document.getElementById('package_'+k+'_item_subcategory_'+i);
				var itemProduct = document.getElementById('package_'+k+'_item_product_'+i);
				
				if (Package[k][i]['item_price_error'])
				{
					addError(itemPrice);
				}
				else
				{
					removeError(itemPrice);
				}
				if (Package[k][i]['item_category_error'])
				{
					addError(itemCategory);
				}
				else
				{
					removeError(itemCategory);
				}
				if (Package[k][i]['item_subcategory_error'])
				{
					addError(itemSubcategory);
				}
				else
				{
					removeError(itemSubcategory);
				}
				if (Package[k][i]['item_product_error'])
				{
					addError(itemProduct);
				}
				else
				{
					removeError(itemProduct);
				}
			}
			else if (i.indexOf('items_count') != -1)
			{
				if (Package[k][i] < 1 && !areTaxesChargedLocally)
				{
					addError2(document.getElementById('package_' + k), 'Please add items');
				}
				else
				{
					removeError2(document.getElementById('package_' + k + "_error"));
				}
			}
		}
	}
}

function removeError(obj)
{
	if (obj.nodeName == "SELECT")
	{
		obj.parentNode.className = "";
	}
	else
	{
		obj.className = obj.className.replace(/st-error/g, "");
	}
}

function addPackage(isAddItem)
{
	if (packagesCount < 10)
	{
		createPackageInfoBox();
		createPackageItemsTable();
		itemsCount[packageNumber] = 1;
		if (isAddItem)
		{
			addItem(packageNumber);
		}
		packageNumber++;
		packagesCount++;
		itemsNumbers[packageNumber] = 1;
		refreshPackagesNumbers();		
	}
	else
	{
		alert("You can add only 10 packages");
	}
}

function createPackageInfoBox()
{
	var insertBeforeThis = document.getElementById('insert_before_this');
	var div = document.createElement("DIV");
	div.id = 'package_'+packageNumber+"_container";
	document.getElementById('main_container').insertBefore(div, insertBeforeThis);
	var newDIV = document.createElement("DIV");
	div.appendChild(newDIV);
	newDIV.className = 'box-grey noMargB';
	
	var h3 = document.createElement("h3");
	newDIV.appendChild(h3);
	h3.className = 'package_number';
	h3.innerHTML = '<a href="#" class="fright btn-1" onclick="javascript: deletePackage(this); return false;"><span>Remove package</span></a>Package ' + packageNumber;
	
	var noteDiv = document.createElement("DIV");
	noteDiv.id = 'info_about_package_note_' + packageNumber;
	// hide this block if arTaxesChargedLocally
	if(areTaxesChargedLocally == true){
		noteDiv.style.display = 'none';
	}
	newDIV.appendChild(noteDiv);
		
	var p = document.createElement("p");
	noteDiv.appendChild(p);
	p.innerHTML = 'Please enter the following information about your package. You can add up to 99 items. Please submit identical items individually. We use the product classification to calculate your duty and VAT charges accurately';
	p.className = 'note-h';
	
	var newTable = document.createElement('table');
	newTable.setAttribute("border", "0");
	newTable.cellSpacing = 0;
	newTable.cellPadding = 0;
	newTable.setAttribute("width", "100%");
	
	var newTableColgroup = document.createElement("COLGROUP");
	
	var col1 = document.createElement("COL");
	
	col1.width = '41%';
	var col2 = document.createElement("COL");
	
	col2.width = '59%';
		
	var newTableTbody = document.createElement("TBODY");
	
	var row1 = document.createElement("TR");
	
	var row1TD1 = document.createElement("TD");
	var row1TD2 = document.createElement("TD");
	
	row1TD1.innerHTML = weightInfo.replace(/package_[0-9]+/g, 'package_'+packageNumber);
	row1TD2.innerHTML = dimensionInfo.replace(/package_[0-9]+/g, 'package_'+packageNumber);
	
	row1.appendChild(row1TD1);
	row1.appendChild(row1TD2);
	newTableTbody.appendChild(row1);
	newTable.appendChild(newTableTbody);
	newTableColgroup.appendChild(col1);
	newTableColgroup.appendChild(col2);
	newTable.appendChild(newTableColgroup);
	newDIV.appendChild(newTable);
	
	var br = document.createElement("BR");
	
	newDIV.appendChild(br);
}

function createPackageItemsTable()
{
	var div = $('package_'+packageNumber+'_container');
	var newTable = document.createElement("TABLE");
	div.appendChild(newTable);
	newTable.id = 'package_' + packageNumber;
	newTable.className = 'tbl1';	
	newTable.setAttribute('border', '0');
	newTable.cellSpacing = 0;
	newTable.cellPadding = 0;
	newTable.setAttribute('width', '100%');
	
	if(areTaxesChargedLocally) {
		newTable.style.display = 'none';
	}
		
	var newTableColgroup = document.createElement("COLGROUP");
	newTable.appendChild(newTableColgroup);
	var col1 = document.createElement("COL");
	newTableColgroup.appendChild(col1);
	col1.width = '9%';
	var col2 = document.createElement("COL");
	newTableColgroup.appendChild(col2);
	col2.width = '11%';
	var col3 = document.createElement("COL");
	newTableColgroup.appendChild(col3);
	col3.width = '22%';
	var col4 = document.createElement("COL");
	newTableColgroup.appendChild(col4);
	col4.width = '23%';
	var col5 = document.createElement("COL");
	newTableColgroup.appendChild(col5);
	col5.width = '23%';
	var col6 = document.createElement("COL");
	newTableColgroup.appendChild(col6);
	col6.width = '12%';
	
	var newTableTbody = document.createElement("TBODY");
	newTable.appendChild(newTableTbody);
	
	var row1 = document.createElement("TR");
	var row2 = document.createElement("TR");
	var row3 = document.createElement("TR");
	newTableTbody.appendChild(row1);
	newTableTbody.appendChild(row2);
	newTableTbody.appendChild(row3);
	row2.id = 'package_'+packageNumber+'_last_row';
	row2.className = 'alt';
	row3.className = 'blrow';
	
	var row1TH1 = document.createElement("TH");
	var row1TH2 = document.createElement("TH");
	var row1TH3 = document.createElement("TH");
	var row1TH4 = document.createElement("TH");
	var row1TH5 = document.createElement("TH");
	var row1TH6 = document.createElement("TH");
	row1.appendChild(row1TH1);
	row1.appendChild(row1TH2);
	row1.appendChild(row1TH3);
	row1.appendChild(row1TH4);
	row1.appendChild(row1TH5);
	row1.appendChild(row1TH6);
	row1TH1.innerHTML = '<div style="height:14px;"></div>Item #';
	row1TH2.innerHTML = productValueTooltip + 'Product value<br />' + currencyInner.replace(/package_[0-9]+/g, 'package_'+packageNumber);
	row1TH3.innerHTML = productCategoryTooltip + 'Product category';
	row1TH4.innerHTML = '<div style="height:14px;"></div>Product sub category';
	row1TH5.innerHTML = '<div style="height:14px;"></div>'+classificationUrl + 'Product';
	row1TH6.innerHTML = '<div style="height:14px;"></div>Add / Remove';
	row1TH6.className = 'last-td';
	
	var row2TD1 = document.createElement("TD");
	var row2TD2 = document.createElement("TD");
	var row2TD3 = document.createElement("TD");
	var row2TD4 = document.createElement("TD");
	var row2TD5 = document.createElement("TD");
	var row2TD6 = document.createElement("TD");
	row2.appendChild(row2TD1);
	row2.appendChild(row2TD2);
	row2.appendChild(row2TD3);
	row2.appendChild(row2TD4);
	row2.appendChild(row2TD5);
	row2.appendChild(row2TD6);
	row2TD1.innerHTML = '<br /><br />';
	row2TD2.innerHTML = '&nbsp;';
	row2TD3.innerHTML = '&nbsp;';
	row2TD4.innerHTML = '&nbsp;';
	row2TD5.innerHTML = '&nbsp;';
	row2TD6.innerHTML = '<a href="#" class="btn-1" onclick="addItem('+packageNumber+'); return false;"><span>Add Item</span></a>';
	row2TD6.className = 'last-td';
	
	
	var addPackageTable = document.createElement("TABLE");
	div.appendChild(addPackageTable);
	

	addPackageTable.className = 'tblAddPackage';
	addPackageTable.setAttribute('border', '0');
	addPackageTable.cellSpacing = 0;
	addPackageTable.cellPadding = 0;
	addPackageTable.setAttribute('width', '100%');
	
	var addPackageTableTbody = document.createElement("TBODY");
	addPackageTable.appendChild(addPackageTableTbody);
	
	var addPackageTableRow1 = document.createElement("TR");
	addPackageTableTbody.appendChild(addPackageTableRow1);
	addPackageTableRow1.className = 'blrow';
	
	var addPackageTableRow1TD1 = document.createElement("TD");
	addPackageTableRow1.appendChild(addPackageTableRow1TD1);
	addPackageTableRow1TD1.colSpan = 6;
	addPackageTableRow1TD1.innerHTML = '<a href="#" class="btn-1 fright" onclick="addPackage(true); return false;"><span>Add a package to shipment</span></a>';

}

function changeUnits(obj)
{
	document.getElementById(obj.name+"_span").innerHTML = obj.value;
}
		//var LLA_Measures_Raw_Values={}
		//var LLA_Measures_Switch_Elements_Cache={}
		function switchWeight(input){
			var name = input.name
			try{
				var elements=document.getElementsByClassName(name)
			}catch(err){
				return false
			}
			for (var x=0;x<elements.length;x++){
				var elementValue=elements[x].innerHTML
				if(!elements[x].rawValue){
					elements[x].rawValue=elements[x].innerHTML
					elements[x].addUnits=elements[x].innerHTML.match(/(kg|lb)/)
					if(elements[x].addUnits && elements[x].addUnits[1]){
						elements[x].currentUnit=elements[x].addUnits[1]
					}
					elements[x].toConvertUnit=input.value
				}
				if(elements[x].currentUnit && elements[x].currentUnit==input.value){
					return false
				}
				elements[x].currentUnit=input.value
				//We have only 2 way switches that is why
				if(elements[x].toConvertUnit!=input.value){
					elements[x].innerHTML=elements[x].rawValue
				}else{
					var value=parseFloat(elementValue)
					if(input.value=='kg'){
						if(elements[x].addUnits){
							elements[x].innerHTML=Math.round(value*0.45359237*100)/100 + 'kg'
						}else{
							elements[x].innerHTML=Math.round(value*0.45359237*100)/100
						}
					} else if(input.value=='lb'){
						if(elements[x].addUnits){
							elements[x].innerHTML=Math.round(value*2.20462262*100)/100 + 'lb'
						}else{
							elements[x].innerHTML=Math.round(value*2.20462262*100)/100
						}
					}
				}
			}
		}
		function switchDimension(input){
			var name = input.name
			try{
				var elements=document.getElementsByClassName(name)
			}catch(err){
				return false
			}
			for (var x=0;x<elements.length;x++){
				var elementValue=elements[x].innerHTML
				if(!elements[x].rawValue){
					elements[x].rawValue=elements[x].innerHTML
					elements[x].addUnits=elements[x].innerHTML.match(/(cm|in)/)
					if(elements[x].addUnits && elements[x].addUnits[1]){
						elements[x].currentUnit=elements[x].addUnits[1]
					}
					elements[x].toConvertUnit=input.value
				}
				if(elements[x].currentUnit && elements[x].currentUnit==input.value){
					return false
				}
				elements[x].currentUnit=input.value
				//We have only 2 way switches that is why
				if(elements[x].toConvertUnit!=input.value){
					elements[x].innerHTML=elements[x].rawValue
				}else{
					var value=parseFloat(elementValue)
					if(input.value=='cm'){
						if(elements[x].addUnits){
							elements[x].innerHTML=Math.round(value*2.54*100)/100 + 'cm'
						}else{
							elements[x].innerHTML=Math.round(value*2.54*100)/100
						}
					} else if(input.value=='in'){
						if(elements[x].addUnits){
							elements[x].innerHTML=Math.round(value*0.393700787*100)/100 + 'in'
						}else{
							elements[x].innerHTML=Math.round(value*0.393700787*100)/100
						}
					}
				}
			}
		}
		
function restoreCalculationData(calculation)
{
	var container = document.getElementById('calculation_container');
	container.innerHTML = '';
	var inner = '';
	inner += '<h3 class="und noMargB" id="loading">Our estimated shipping costs</h3>';
	inner += '<p class="note-h">Please find below our estimated shipping costs for your shipment.  Changes in weight, dimensions, item value and product classification will impact the final quote.</p>';
	inner += '<div class="box-grey">';
	inner += '<ul class="list-4">';
	inner += '<li><span class="c-1 w-245"><strong>Total shipping estimate:</strong></span><span class="c-2" style="float: none;"><strong>'+calculation['total_ship']+'</strong></span></li>';
	inner += '<li></li>';
	inner += '<li><span class="c-1 w-245">Import duty:</span><span class="c-2" style="float: none;">'+ calculation['customs_duty'] +'</span>'+customsDutyTooltip+'</li>';
	inner += '<li><span class="c-1 w-245">Import VAT:</span><span class="c-2" style="float: none;">'+ calculation['import_vat'] +'</span>'+importVatTooltip+'</li>';
	inner += '<li><span class="c-1 w-245">Handling fee import duty & VAT:</span><span class="c-2" style="float: none;">'+ calculation['handling_fee_vat_and_duty'] +'</span>'+handlingFeeAndDutyTooltip+'</li>';
	inner += '<li><span class="c-1 w-245"><strong>Total import duty & VAT charges:</strong></span><span class="c-2" style="float: none;"><strong>'+ calculation['total_vat_and_duty'] +'</strong></span></li>';
	inner += '<li></li>';
	inner += '<li><span class="c-1 w-245"><strong>Total estimate including import duty & VAT:</strong></span><span class="c-2" style="float: none;"><strong>'+ calculation['total_with_duty_and_vat_and_ipt'] +'</strong></span></li>';
	inner += '</ul></div>';
	container.innerHTML = inner;
}

function sendRequestUpdate(removeAction)
{
	var data = $('shipping_estimate').serialize(true);
	new Ajax.Request(url+'update/'+removeAction, {
					parameters: data,
					method: 'post',
					'onSuccess' : function(transport) {
					eval(transport.responseText);
						if (objTooltips)
							objTooltips.onReady();
					},
					'onLoading' : function() {
						$('loading').innerHTML = "Calculating...";
					}
	});
}

function deletePackage(obj)
{
	$('main_container').removeChild(obj.parentNode.parentNode.parentNode);
	packagesCount--;
	refreshPackagesNumbers();
}

function refreshRowNumbers(packageNumber)
{
	var rows = $('package_'+packageNumber).getElementsByTagName('TBODY')[0].rows;
	for (counter = 1; counter < (rows.length-2); counter++)
	{
		rows[counter].firstChild.innerHTML = 'Item ' + counter;
	}
}

function refreshPackagesNumbers()
{
	var packages = document.getElementsByClassName('package_number');
	for (counter = 0; counter < (packages.length); counter++)
	{
		packages[counter].innerHTML = packages[counter].innerHTML.replace(/Package [0-9]+/, 'Package ' + (counter + 1));
	}
	if (objTooltips)
		objTooltips.onReady();
}