var curCard = 3;
var cards = new Array();
var cardTypes = [ 'Mighty Helpful', 'Good luck with your new castle', 'You\'re a cut above', 'You deserve a hand', 'Something special for your garden', 'Merry Christmas', 'Licence to go nuts', 'You\'re top shelf', 'Ribbon' ];
var postage=2.95

/*
function checkamounts()
{
	//$$("input.giftcard_amount").each(function(e){ alert(e.value)});
	var MINIMUM_AMOUNT = 20;
	var MAXIMUM_AMOUNT = 1000;
	var _myerrors = Array();
	var _frm = $('crm_CRMPerson');
	var card_exists = false;
	for (var i=0;i<_frm.length;i++)
	{
		if(_frm.elements[i].type == "checkbox" && _frm.elements[i].name.indexOf('giftcard') != -1 && _frm.elements[i].checked){
			start = _frm.elements[i].name.indexOf('[') + 1;
			stop = _frm.elements[i].name.indexOf(']');
			_num = _frm.elements[i].name.substring(start, stop);
			_amount = _frm.elements["giftcard_amount["+_num+"]"];
			_quantity = _frm.elements["giftcard_quantity["+_num+"]"];
			card_exists = true;

			if(! _amount)
			_myerrors.push("You must enter an amount for card "+num);
			else{
				if(_amount.value < MINIMUM_AMOUNT || isNaN(_amount.value))
				_myerrors.push("Amount for card "+_num+" should be at least $"+MINIMUM_AMOUNT);
				else if(_amount.value > MAXIMUM_AMOUNT )
				_myerrors.push("Amount for card "+_num+" should be no greated than $"+MAXIMUM_AMOUNT);
				else if( parseInt(_amount.value) != _amount.value )
				_myerrors.push("Amount for card "+_num+" should be in whole dollars" );
			}
			if( ! _quantity )
			_myerrors.push("Please enter a quantity for card "+_num);
			else{
				if(_quantity.value < 1 || isNaN(_quantity.value) || parseInt(_quantity.value) != _quantity.value)
				_myerrors.push("Please enter a valid quantity for card "+_num);
			}
		}

	}

	if( card_exists == false )
	_myerrors.push("Please select a gift card design and quantity/amount");

	if(_myerrors.length == 0)
	return true;
	else{
		var msg = "";
		for(var i=0; i < _myerrors.length; i++ )
		msg += _myerrors[i]+"\n";
		alert(msg);
		return false;
	}
}
*/

function checkamounts()
{
	var errs = [];
	
	if ( cards.length == 0 )
		errs.push( 'Please select a gift card design and quantity/amount' );
	
	if ( errs.length > 0 )
	{
		alert( errs.concat("\n") );
		
		return false;
	}
	
	return true;	
}

function addToList()
{
	if ( curCard == null )
	{
		alert( 'Please select a card design' );
		
		return false;
	}
	
	if ( $('add_giftcard_quantity').value == '' || isNaN( $('add_giftcard_quantity').value ) )
	{
		alert( 'Please insert a quanity. It must be a number.' );
		
		return false;
	}
	
	if ( $('add_giftcard_amount').value == '' || isNaN( $('add_giftcard_amount').value ) )
	{
		alert( 'Please insert a value. It must be a number.' );
		
		return false;
	}		
	
	cards.push( { 'num': curCard, 'quantity': parseInt( $('add_giftcard_quantity').value ), 'amount': parseInt( $('add_giftcard_amount').value ) } );
	
	buildCardTable();
	
	return false;
}

function removeCard(i)
{
	cards.splice(i,1);
	
	buildCardTable();
	
	return false;
}

function buildCardTable( noRemove )
{
	// noRemove is currently '1' on the Payments Page (uses same buildCardTable logic, just with a few differences - ie. no 'remove' button, and different title')		
	if( noRemove == 1 )
		title = "Order Summary";
	else
		title = "Your order list";
		
	var html = '<h4 style="border-bottom:1px solid #B8D4E9;">'+title+'</h4><table id="tbl_cardlist" style="margin:0px;" width="100%">';	
	var amount = 0;
		
	for ( var i = 0; i < cards.length; i++ )
	{	
		subamount = cards[i].quantity * cards[i].amount;
		
		html += '<tr'+(i%2==0?' class="odd"':'' )+'>';
		html += '<th><img src="'+site_root+'assets/images/gift-cards/cards/cards-sml-0'+cards[i].num+'.jpg"></a></th>';
		html += '<td width="400">Card Type - '+cardTypes[cards[i].num-1]+' <br /> x'+cards[i].quantity+'  @ $'+cards[i].amount+' each</td>';
		html += '<td align="right"><strong>$'+( subamount.toFixed(2) )+'</strong>';
		if( noRemove != 1 ){
			html += ' <br /> <a href="#" onclick="return removeCard('+i+');" style="padding:0px;">remove</a></td>';
		}
		//html += '<td align="left"><strong>$'+( cards[i].quantity * cards[i].amount )+'</strong></td>';
		html += '</tr>';
		
		amount += ( cards[i].quantity * cards[i].amount );
	}
	
	html += '<tr class="totals'+(i%2==0?' odd':'' )+'" style="font-weight:bold;">';
	html += '<td></td>';
	html += '<td align="right">Postage & Handling</td>';
	html += '<td align="right">$'+(postage.toFixed(2))+'</td>';
	html += '</tr>';
	html += '<tr class="totals'+(i%2==0?' odd':'' )+'" style="font-weight:bold;font-size:12px;">';
	html += '<td></td>';
	html += '<td align="right" class="deepblue">Grand Total</td>';
	html += '<td align="right">$'+(amount+postage)+'</td>';
	html += '</tr>';
	html += '</table>';	
	
	$('tbl_cards').setHTML( html );
		
	var html = '';
	
	for ( var i = 0; i < cards.length; i++ )
	{		
		html += '<input type="hidden" name="giftcard['+cards[i].num+']" value="'+(cards[i].num-1)+'" />';
		html += '<input type="hidden" name="giftcard_amount['+cards[i].num+']" value="'+cards[i].amount+'" />';
		html += '<input type="hidden" name="giftcard_quantity['+cards[i].num+']" value="'+cards[i].quantity+'" />';
	}
	
	if($('card_hiddenfields'))	
		$('card_hiddenfields').setHTML( html );
}

function updatePostage()
{
	/*
	var low = 5.95;
	var high = 8.95;
	var amount = 0;

	var num_cards = 0;

	var _frm = $('crm_CRMPerson')
	var _postage_element = $('postage');

	for (var i=0;i<_frm.length;i++)
	{
		if(_frm.elements[i].type == "checkbox" && _frm.elements[i].name.indexOf('giftcard') != -1 && _frm.elements[i].checked){
			start = _frm.elements[i].name.indexOf('[') + 1;
			stop = _frm.elements[i].name.indexOf(']');
			_num = _frm.elements[i].name.substring(start, stop);
			_amount = _frm.elements["giftcard_amount["+_num+"]"];
			_quantity = _frm.elements["giftcard_quantity["+_num+"]"];

			num_cards = num_cards + _quantity.value;
		}

	}

	if( num_cards <= 5 )
	amount = low;
	else
	amount = high;

	_postage_element.innerHTML = '$'+amount;
	*/
}

function validateCreditCard( frmname )
{
	var _myerrors = Array();
	var cardFrm = $(frmname);
	var d = new Date();

	/* sanity check each element */
	var cardNumber 		= cardFrm.elements.card_number;
	var cardExpiryMonth = cardFrm.elements.card_expiry_month;
	var cardExpiryYear 	= cardFrm.elements.card_expiry_year;
	var cardName 		= cardFrm.elements.card_name;
	var cardCVV 		= cardFrm.elements.card_cvv;
	var cardType		= cardFrm.elements["card_type[card_type]"];

	for(var i = 0; i< cardFrm.elements.length; i++)
	{
		if( cardFrm.elements[i].name == "card_type[card_type]" && cardFrm.elements[i].checked )
		cardType = cardFrm.elements[i];
	}

	if( !cardType.value )
	_myerrors.push("Please select a card type");
	if( !cardNumber.value || isNaN( cardNumber.value) || cardNumber.length == 0 )
	_myerrors.push("Please enter a valid credit card number");
	if( !cardName.value || cardName.length == 0 )
	_myerrors.push("Please enter your name as it appears on the credit card");
	if( !cardCVV.value || isNaN( cardCVV.value) || cardCVV.length == 0 )
	_myerrors.push("Please enter the credit card security code as it appears on the back of the card");
	else if( isNaN(cardCVV.value) || cardCVV.value > 999 )
	_myerrors.push("The security code must be 3 digits in length");


	/* Check card number */
	if( luhn_check( cardNumber.value ) == false )
	_myerrors.push("The credit card number you entered is invalid");

	/* Check expiry */
	if( parseInt( cardExpiryYear.value, 10 ) == d.getFullYear() && parseInt( cardExpiryMonth.value, 10 ) < d.getMonth() )
	_myerrors.push("The expiry date of the credit card must be valid.");


	if(_myerrors.length == 0)
	return true;
	else{
		var msg = "";
		for(var i=0; i < _myerrors.length; i++ )
		msg += _myerrors[i]+"\n";
		alert(msg);
		return false;
	}
}

function swapcard(siteroot, num)
{
	var imageloc = siteroot + 'assets/images/gift-cards/cards/cards-big-0' + num + '.jpg';
			
	$("bigcard").setStyle("background-image","url(" + imageloc + ")");
	
	curCard = num;
}


/*  ================================================================
FUNCTION:  luhn_check(st)

INPUT:     st - a string representing a credit card number

RETURNS:  true, if the credit card number passes the Luhn Mod-10
test.
false, otherwise
================================================================ */
function luhn_check(st) {
	// Encoding only works on cards with less than 19 digits
	if (st.length > 19)
	return (false);

	sum = 0; mul = 1; l = st.length;
	for (i = 0; i < l; i++) {
		digit = st.substring(l-i-1,l-i);
		tproduct = parseInt(digit ,10)*mul;
		if (tproduct >= 10)
		sum += (tproduct % 10) + 1;
		else
		sum += tproduct;
		if (mul == 1)
		mul++;
		else
		mul--;
	}
	// Uncomment the following line to help create credit card numbers
	// 1. Create a dummy number with a 0 as the last digit
	// 2. Examine the sum written out
	// 3. Replace the last digit with the difference between the sum and
	//    the next multiple of 10.

	//  document.writeln("<BR>Sum      = ",sum,"<BR>");
	//  alert("Sum      = " + sum);

	if ((sum % 10) == 0)
	return (true);
	else
	return (false);

}

function copybilling(element){
	var _frm = $('crm_CRMPerson')

	if(element.checked){

		_frm.elements["CRMAddress.2__unit"].value = _frm.elements["CRMAddress__unit"].value;
		_frm.elements["CRMAddress.2__street1"].value = _frm.elements["CRMAddress__street1"].value;
		_frm.elements["CRMAddress.2__suburb"].value = _frm.elements["CRMAddress__suburb"].value;
		_frm.elements["CRMAddress.2__postcode"].value = _frm.elements["CRMAddress__postcode"].value;
		_frm.elements["CRMAddress.2__state"].value = _frm.elements["CRMAddress__state"].value;
		_frm.elements["CRMAddress__person_to"].value = _frm.elements["firstname"].value + ' ' + _frm.elements["lastname"].value;

		$$("div.billingaddress").each(function(e){e.setStyle("display", "none")});
	}
	else{
		$$("div.billingaddress").each(function(e){e.setStyle("display", "")});
	}
}

