function updateCustomization_verse()
{
	if ($('form_verse').getInputs('radio', 'verse'))
	{
		selected = $('form_verse').getInputs('radio', 'verse').find(function(radio)
		{
			return radio.checked;
		}).id.replace(/^verse_/, '');

		if (selected && verses[selected])
		{
			// Update the DOM
			if ($('verse_label')) $('verse_label').innerHTML = 'Selected Verse:';
			if ($('verse')) $('verse').value = selected;
			if ($('verse_link')) $('verse_link').setAttribute('href', $('verse_link').getAttribute('href').replace(/selected=[0-9]*([^0-9]?)/, 'selected='+selected+'$1'));
			if ($('verse_text')) $('verse_text').innerHTML = (verses[selected].match(/^Blank|blank$/) ? 'Blank (no verse)' : '"'+verses[selected]+'"');
		
			// Close the facebox
			facebox.close();
		}
	}
	
	updateCustomization_price();
}

function updateCustomization_imprint()
{
	if ($('imprint_edit') && $('imprint'))
	{
		imprint = $F('imprint_edit');
		
		// Update the DOM
		if ($('imprint')) $('imprint').value = imprint.replace(/^[\s]+/,'').replace(/<[^>]*>/g, '');	// Strip HTML tags
		if ($('imprint_link')) $('imprint_link').setAttribute('href', $('imprint_link').getAttribute('href').replace(/imprint=[^&]*([&]?)/, 'imprint='+ajax.encode(imprint)+'$1'));
		if ($('imprint_link')) $('imprint_link').innerHTML = (trim(imprint) == '' ? 'Specify imprint &gt;' : 'Change imprint &gt;');
		if ($('imprint_label')) $('imprint_label').innerHTML = (trim(imprint) == '' ? 'Imprinting:' : 'Imprint:');
		if ($('imprint_text')) $('imprint_text').innerHTML = (trim(imprint) == '' ? 'No imprint' : '"'+trim(imprint.replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/\n/g, '<br />'))+'"');

		// Close the facebox
		facebox.close();
	}
	
	updateCustomization_price();
}

function updateCustomization_envelope()
{
	if ($('envelope_edit') && $('envelope'))
	{
		envelope = $F('envelope_edit');
		
		// Update the DOM
		if ($('envelope')) $('envelope').value = envelope.replace(/^[\s]+/,'').replace(/<[^>]*>/g, '');	// Strip HTML tags
		if ($('envelope_link')) $('envelope_link').setAttribute('href', $('envelope_link').getAttribute('href').replace(/envelope=[^&]*([&]?)/, 'envelope='+ajax.encode(envelope)+'$1'));
		if ($('envelope_link')) $('envelope_link').innerHTML = (trim(envelope) == '' ? 'Specify envelope printing &gt;' : 'Change envelope printing &gt;');
		if ($('envelope_label')) $('envelope_label').innerHTML = (trim(envelope) == '' ? 'Envelope Printing:' : 'Envelope Printing:');
		if ($('envelope_text')) $('envelope_text').innerHTML = (trim(envelope) == '' ? 'No envelope printing' : '"'+trim(envelope.replace(/>/g, '&gt;').replace(/</g, '&lt;').replace(/\n/g, '<br />'))+'"');

		// Close the facebox
		facebox.close();
	}
	
	updateCustomization_price();
}

var uploadLogo;
var uploadLogo_img;
function uploadLogoCB(response)
{
	// Show loading indicator, ITIS
	if ($('logo_loading'))
	{
		$('logo_loading').show();
	}

	if (response != null && response != 'error' && response != '')
	{
		// Grab the file that was just uploaded
		file = '/uploads/'+response;
		
		// Add the file to the session var
		ajax.transfer('action=addLogoToSession&location='+file);
		
		// Start the listener for image loading
		uploadLogo_img = new Image();
		uploadLogo_img.src = file;
		_uploadLogoCB(file, response);
	}
}

function _uploadLogoCB(file, filename)
{
	if (uploadLogo_img.complete)
	{
		// Update the preview image, ITIS
		if ($('logo_preview'))
		{
			updateLogoPreview(file);
		}
		
		// Update the images library, ITIS
		if ($('imageslibrary_wrapper'))
		{
			cb = function(status, resp)
			{
				if (status == 200)
				{
					$('imageslibrary_wrapper').innerHTML = resp;
				}
			}
			ajax.get('/faceboxes/module.imageslibrary.php', cb);			
			
			
		}

		// Hide loading indicator, ITIS
		if ($('logo_loading'))
		{
			$('logo_loading').hide();
		}
	}else{
		window.setTimeout("_uploadLogoCB('"+file+"', '"+filename+"');", 250);
	}
}

function updateLogoPreview(file)
{
	if (trim(file) != '')
	{
		// Update the input element with the new filename, ITIS
		if ($('logo')) $('logo').value = file;

		// Update the preview image, ITIS
		if ($('logo_preview'))
		{
			$('logo_preview').src = '/images/image.php?src='+file+'&w=200';

			$('logo_preview').show();
		}
		
		// Show the save button, ITIS
		if ($('uploadLogo_confirm')) $('uploadLogo_confirm').show();
	}
}

function removeLogo()
{
	// Update the DOM
	if ($('logo')) $('logo').value = '';
	if ($('logo_link')) $('logo_link').setAttribute('href', $('logo_link').getAttribute('href').replace(/logo=[^&]*([&]?)/, 'logo='));
	if ($('logo_link')) $('logo_link').innerHTML = 'Add a custom logo/signature &gt;';
	if ($('logo_text')) $('logo_text').show();
	$('logo_img').src = ('/images/image.php?src=&w=200');
	$('logo_img').hide();
	
	updateCustomization_price();
}

function updateCustomization_logo()
{
	if ($('logo_uploadedfilename') && $('logo_img'))
	{
		logo = $F('logo');
		
		// Update the DOM
		if ($('logo')) $('logo').value = logo;
		if ($('logo_link')) $('logo_link').setAttribute('href', $('logo_link').getAttribute('href').replace(/logo=[^&]*([&]?)/, 'logo='+ajax.encode(logo)+'$1'));
		if ($('logo_link')) $('logo_link').innerHTML = (trim(logo) == '' ? 'Add a custom logo/signature &gt;' : 'Use a different custom logo/signature &gt;');
		if ($('logo_text')) $('logo_text').hide();
		$('logo_img').src = ('/images/image.php?src='+trim(logo)+'&w=200');
		$('logo_img').show();

		// Close the facebox
		facebox.close();
	}
	
	updateCustomization_price();
}

function updateCustomization_price()
{
	if (price > 0 && parseInt($F('qty')) > 0)
	{
		qty = parseInt($F('qty'));

		// Add costs for each type of personalization, ITIS
		personalizations = ['imprint', 'envelope', 'logo'];
		personalizationcost = 0;
		for (i = 0; i < personalizations.length; i++)
		{
			if ($(personalizations[i]) && costs[personalizations[i]])
			{
				if (trim($F(personalizations[i])) != '')
				{
					// Data protection
					baseprice = parseInt(costs[personalizations[i]]['baseprice']);
					pricebreakat = parseInt(costs[personalizations[i]]['pricebreakat']);
					pricebreakprice = parseInt(costs[personalizations[i]]['pricebreakprice']);

					// Calculate cost
					thispersonalizationcost = (qty >= pricebreakat
							?
								(baseprice * (pricebreakat - 1)) + (pricebreakprice * (qty - (pricebreakat - 1)))
							:
								baseprice * qty
							);

					// Update DOM
					$(personalizations[i]+'_cost_text').innerHTML = '+ $'+thispersonalizationcost+' for '+(personalizations[i] == 'imprint' ? 'imprinting' : (personalizations[i] == 'envelope' ? 'envelope printing' : (personalizations[i] == 'logo' ? 'custom logo/signature' : 'personalization')));
					$(personalizations[i]+'_cost_text').show();

					// Update subtotal
					personalizationcost += thispersonalizationcost;
				}else{
					$(personalizations[i]+'_cost_text').hide();
				}
			}
		}

		// Update total
		if ($('totalprice'))
		{
			$('totalprice').innerHTML = '$'+number_format((price * qty) + personalizationcost, 2);
		}
	}
}

function trim(str)
{
	return str.replace(/^[\s]+/,'').replace(/[\s]+$/,'').replace(/[\s]{2,}/,' ');
}

function number_format(number, decimals, dec_point, thousands_sep) 
{
    var n = !isFinite(+number) ? 0 : +number, 
        prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
        sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,        dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
        s = '',
        toFixedFix = function (n, prec) {
            var k = Math.pow(10, prec);
            return '' + Math.round(n * k) / k;        };
    // Fix for IE parseFloat(0.55).toFixed(0) = 0;
    s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
    if (s[0].length > 3) {
        s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);    }
    if ((s[1] || '').length < prec) {
        s[1] = s[1] || '';
        s[1] += new Array(prec - s[1].length + 1).join('0');
    }    return s.join(dec);
}


function hoverRow(obj)
{
	obj.style.background='#EEEED3';
}

function unHoverRow(obj)
{
	if (obj.className.toLowerCase().indexOf('odd') > -1)
	{
		obj.style.background='#DDDDDD';
	}else{
		obj.style.background='transparent';
	}
}

function hideRow(id)
{
	if ($(id))
	{
		$(id).hide();
	}
}

function showRow(id)
{
	if ($(id))
	{
		$(id).show();
	}
}

function toggleBillingAddressSame(state)
{
	if (state)
	{
		if ($('billingaddressdiv'))
		{
			$('billingaddressdiv').hide()
		}
	}else{
		if ($('billingaddressdiv'))
		{
			$('billingaddressdiv').show()
		}
	}
}

function updateSalesTax()
{
	if ($('salestax') && $('totalbeforetaxes'))
	{
		if ($('salestax').checked)
		{
			if ($('salestaxtd'))
			{
				$('salestaxtd').innerHTML = '$' + number_format(parseFloat($('totalbeforetaxes').value) * .07, 2);
			}
			
			if ($('total'))
			{
				$('total').innerHTML = 'TOTAL: $' + number_format(parseFloat($('totalbeforetaxes').value) + (parseFloat($('totalbeforetaxes').value) * .07) + 7.5, 2);
			}
		}else{
			if ($('salestaxtd'))
			{
				$('salestaxtd').innerHTML = '$0.00';
			}

			if ($('total'))
			{
				$('total').innerHTML = 'TOTAL: $' + number_format(parseFloat($('totalbeforetaxes').value) + 7.5, 2);
			}
		}
	}else{
		alert('An error has occurred trying to update sales tax info.  Please reload this page and try again.');
	}
}




function number_format(number, decimals, dec_point, thousands_sep)
{
    var n = number, prec = decimals;
 
    var toFixedFix = function (n,prec) {
        var k = Math.pow(10,prec);
        return (Math.round(n*k)/k).toString();
    };
 
    n = !isFinite(+n) ? 0 : +n;
    prec = !isFinite(+prec) ? 0 : Math.abs(prec);
    var sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep;
    var dec = (typeof dec_point === 'undefined') ? '.' : dec_point;
 
    var s = (prec > 0) ? toFixedFix(n, prec) : toFixedFix(Math.round(n), prec); //fix for IE parseFloat(0.55).toFixed(0) = 0;
 
    var abs = toFixedFix(Math.abs(n), prec);
    var _, i;
 
    if (abs >= 1000) {
        _ = abs.split(/\D/);
        i = _[0].length % 3 || 3;
 
        _[0] = s.slice(0,i + (n < 0)) +
              _[0].slice(i).replace(/(\d{3})/g, sep+'$1');
        s = _.join(dec);
    } else {
        s = s.replace('.', dec);
    }
 
    var decPos = s.indexOf(dec);
    if (prec >= 1 && decPos !== -1 && (s.length-decPos-1) < prec) {
        s += new Array(prec-(s.length-decPos-1)).join(0)+'0';
    }
    else if (prec >= 1 && decPos === -1) {
        s += dec+new Array(prec).join(0)+'0';
    }
    return s;
}
