(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]}})(jQuery);

j.ajaxSetup ({
    // Disable caching of AJAX responses */
    cache: false
});

j(document).ready(function(){
	if (j.browser.msie) {
        j('input:radio').click(function () {
            this.blur();
            this.focus();
        });
    }
	
	j('.itemSelectorRadio').change(function(){
		var val = j(this).val(); 
		unselectRadios();
		j('#itemSelector'+val).addClass('selectedItem');
	});
	
	j('.newAddress input').focus(function(){
		unselectRadios();
		j('.itemSelectorRadio:checked').attr('checked', false);
	});

	j('.newCreditCard input').focus(function(){
		unselectRadios();
		j('.itemSelectorRadio:checked').attr('checked', false);
	});
	
	j('select.quantity').change(function(){
		var releaseId = j(this).attr('id').match(/\d+/);
		var quantity = j(this).val();
		
		var quantityLabel = 'quantity'+releaseId;
		j('#priceLine'+releaseId).css({'backgroundColor': '#b3dab5'});
		j('#priceLine'+releaseId).animate({'backgroundColor': '#ffffff'}, 1000, 'linear');
		
		j('#checkoutTotals').load('/actions/basket.do?', 
			'method=updateCart&ajax=true&releaseId='+releaseId+'&'+quantityLabel+'='+quantity,
			function(){
				if (releaseData[releaseId]['saleModifier'] != 0)
					location.reload(true);
				
				j('#priceLine'+releaseId).empty();
				
				if (quantity > 1){
					if (j('#itemPrice'+releaseId).hasClass('multiple') == false)
						j('#itemPrice'+releaseId).addClass('multiple');
					
					var data = releaseData[releaseId];
					var itemPrice = data['unitPrice'] * quantity;
					var item = getDollarsAndCents(itemPrice);
					
					var html = '<span class="purchasePrice">$'+item['dollars']+
						'<span class="cents">.'+item['cents']+"</span>";
					if ( data['gst'])
						html += ' <small>inc. GST</small>';
					html += '</span><span class="discountInfo">&nbsp;&nbsp;'+quantity+' Items @ $'+data['unitPrice'].toFixed(2)+ 'each</span>';
					
					j('#priceLine'+releaseId).append(html);
				}
				else{
					if (j('#itemPrice'+releaseId).hasClass('multiple'))
						j('#itemPrice'+releaseId).removeClass('multiple');
				}
			});
		
	});
	
	j('a.deleteLink').click(function(){
		var href = j(this).attr('href');
		var releaseId = href.match(/\d+/);
		
		j('#checkoutTotals').load('/actions/basket.do?', 
			'method=updateCart&ajax=true&deleteReleaseId='+releaseId,
			function(){
				j('div#shoppingCartItem'+releaseId).next('hr').hide();
				j('div#shoppingCartItem'+releaseId).slideUp('fast', function(){
					j('div#shoppingCartItem'+releaseId).remove();
					var children =  j('div.preorderItemsList').children('div.shoppingCartItem');
					var preorder = children.length;
					if (preorder == 0){
						j('.preorderItems').hide();
						j('.splitOrder').hide();
					}
					children = j('div#availableItemList').children('div.shoppingCartItem');
					var available = children.length;
					if (available == 0)
						j('.availableItems').hide();
					
					if (available + preorder == 0){
						j('div#shoppingCartItems').append('<div class="shoppingCartEmpty"><p>There are no items in your shopping basket.</p></div>');
						if (j('div.submit input').length > 0){
							j('div.submit input').remove();
							j('#continueShoppingLink').show();
						}
					}
					
					if (j('div#splitOrderBox').length > 0 && preorder == 0)
						j('div#splitOrderBox').hide();
						
				});
				
			});
		return false;
	});
	
	j('a.editAddress').colorbox({iframe:true, width:665, height:475, overlayClose:false, scrolling:false});
	j('a.deleteAddress').click(function(){
		if (confirm('Are you sure you want to delete this address?')){
			var url = j(this).attr('href');
			var id = url.match(/\d+/);
			j.get(url, {'ajax':true}, function(data){
				if (data.search('/OK/')){
					//Determine if the currently selected address is being removed
					var bDeleteSelected = j('#itemSelector'+id+' input:radio[value='+id+']').attr("checked");
					j('#itemSelector'+id).fadeOut('slow', function(){
						if (j('div.existingAddress').length > 0){
							var children = j('div.existingAddress').children('.itemSelector:visible');
							if (children.length == 0){
								if (j('#selectDeliveryAddress').length > 0){
									j('#selectDeliveryAddress').hide();
								}
							}
							else if (bDeleteSelected) {
								//Select the next address as the default
								var nextAddressId = j(children[0]).attr('id');
								j('#'+nextAddressId+' input:radio').attr('checked', true);
								j('#'+nextAddressId+' input:radio').change();
							}
						}
						var count = j('div.itemListing:visible').length;
						if (count == 0){
							if (j('div.creditCardForm').length > 0){
								if (j('div.creditCardForm').css('display') == 'none')
									j('div.creditCardForm').fadeIn('fast');
							}
							if (j('p.cardMessage').length > 0)
								j('p.cardMessage').hide();
						}
						else{							
							if (j('span#messageItem').length > 0){
								var message = count + ' stored address';
								if (count > 1)
									message += 'es';
								j('span#messageItem').html(message);
							}
						}
					});
					
				}
			});
		}
		return false;
	});
	
	j('a.editCreditCard').colorbox({iframe:true, width:580, height:385, overlayClose:false, scrolling: false, title:false});
	
	j('a.deleteCreditCard').click(function(){
		if (confirm('Are you sure you want to delete this credit card?')){
			var url = j(this).attr('href');
			var id = url.match(/\d+/);
			j.get(url, {'ajax':true}, function(data){
				if (data.search('/OK/')){
					//Determine if the currently selected address is being removed
					var bDeleteSelected = j('#itemSelector'+id+' input:radio[value='+id+']').attr("checked");
					j('#itemSelector'+id).fadeOut('slow', function(){
						if (j('div.existingCard').length > 0){
							var children = j('div.existingCard').children('.itemSelector:visible');
							if (children.length == 0){
								j('#selectCreditCard').hide();
							}
							else if (bDeleteSelected){
								//Select the next card as the default
								var nextCardId = j(children[0]).attr('id');
								j('#'+nextCardId+' input:radio').attr('checked', true);
								j('#'+nextCardId+' input:radio').change();
							}
						}
						var count = j('div.itemListing:visible').length;
						if (count == 0){
							if (j('div.creditCardForm').length > 0){
								if (j('div.creditCardForm').css('display') == 'none')
									j('div.creditCardForm').fadeIn('fast');
							}
							if (j('p.cardMessage').length > 0)
								j('p.cardMessage').hide();
						}
						else{
							if (j('span#messageItem').length > 0){
								var message = count + ' stored card';
								if (count > 1) message += 's';
								j('span#messageItem').html(message);
							}
						}
					});
					
				}
			});
		}
		return false;
	});
	
	j('#deliveryAddressPostcode').change(checkPostcode);
	//j('#deliveryAddressCity').change(checkPostcode);
	
	j('#submitNewAddress').click(function(){
		j('.errorMessage').hide();
		j('.errorMessage').children('p').remove();
		
		var postcode = j('#deliveryAddressPostcode').val();
		var city = j('#deliveryAddressCity').val();
		var country = j('#deliveryAddressCountry').val();
			
		if (country == 1 && postcode.length > 0 && city.length > 0){
			j.get('/actions/deliveryAddress.do?method=validateSuburbAjax',
				{'deliveryAddress.postcode':postcode, 'deliveryAddress.city':city},
				function(data){
					if (data.length > 20){
						if (j('.errorMessage').children('p').length == 0){
							j('.errorMessage').append('<p>' + data + '</p>').show();
						}
					}
					else
						j('#deliveryAddressForm').submit();
				});
			
		}
		else
			j('#deliveryAddressForm').submit();
		return false;
	});
	
	j('.submitDeliveryAddressAjax').click(function(){
		j('.errorMessage').hide();
		j('.errorMessage').children('p').remove();
		
		var postcode = j('#deliveryAddressPostcode').val();
		var city = j('#deliveryAddressCity').val();
		var country = j('#deliveryAddressCountry').val();
		var state = j('#deliveryAddressState').val();
		
		if (country == 1 && postcode.length > 0 && city.length > 0 && state.length > 0){
			j.get('/actions/deliveryAddress.do?method=validateSuburbAjax',
				{'deliveryAddress.postcode':postcode, 'deliveryAddress.city':city, 'deliveryAddress.stateId':state},
				function(data){
					if (data.length > 20){
						if (j('.errorMessage').children('p').length == 0){
							j('.errorMessage').append('<p>' + data + '</p>').show();
							parent.j.fn.colorbox.myResize(625, 500);
						}
					}
					else
						j('#deliveryAddressForm').submit();
				});
			
		}
		else
			j('#deliveryAddressForm').submit();
		return false;
	});
	
	j('.postcodeLink').live('click', function(){
		var suburb = j(this).attr('title');
		var state = j(this).attr('id').match(/\d+/);
		
		j('#deliveryAddressPostcode').val(suburb);
		if (state)
			j('#deliveryAddressState').val(state);
		j('.errorMessage').slideUp('fast');
		if (parent)
			parent.j.fn.colorbox.myResize(625, 440);
		
		return false;
	});
	
	j('.suburbLink').live('click', function(){
		var suburb = j(this).attr('title');
		
		var state = j(this).attr('id').match(/\d+/);
		if (state)
			j('#deliveryAddressState').val(state);
		
		j('#deliveryAddressCity').val(suburb);
		j('.errorMessage').slideUp('fast');
		if (parent)
			parent.j.fn.colorbox.myResize(625, 440);
		
		return false;
	});
	
	j('a.termsConditionsLink').colorbox({inline:true, width:520, height:520, scrolling:false, href:"#termsConditions"});
	
	j('a.creditCardSecurityLink').colorbox({width:480, height:355, scrolling:false});
	j('a#pciInfoLink').colorbox({ width:400, height:280, scrolling:false});
	j('a#directDepositOptionLink').colorbox({width:400, height:320, scrolling:false});
	
	j('a.newCreditCardDisplayer').click(function(){
		j('p.cardMessage').fadeOut('slow', function(){
			if (j('div.creditCardForm').css('visible') == false || j('div.creditCardForm').css('display') == 'none'){
				j('div.creditCardForm').fadeIn('fast');
			}
		});	
		return false;
	});
	
	j('#selectCreditCardButton').click(function(){
		if (j('.itemSelectorRadio:checked').length == 0){
			alert('You must select a credit card to continue.');
			return false;
		}
	});
	
	j('#btnConfirmSubmit').click(function(){
		if (j('#termsAndConditionsAccepted').length > 0){
			if (j('#termsAndConditionsAccepted').attr('checked') != true){
				alert('You must accept our terms and conditions to continue.');
				return false;
			}
		}
		
		j('#btnConfirmSubmitLink').hide();
	});
	
	j('.popupEditorCloseLocal').live('click', function(){
		j.fn.colorbox.close();
		return false;
	});
	
	//Allow clicking on the containing itemSelector div to select a radio button 
	j('div[id^=itemSelector]').click(function() {
		var id = j(this).attr('id');
		//Retrieve the object primary key from the div id (i.e. '1234' part of 'itemSelector1234')
		var value = id.substring(('itemSelector').length);
		j('#'+id+'  input:radio[value='+value+']').attr('checked', true);
		j('#'+id+'  input:radio[value='+value+']').change();
	});
	
	function getDollarsAndCents(price){
		var priceStr = String(price.toFixed(2));
		var dec = priceStr.lastIndexOf('.');
		var dollars = priceStr.substring(0, dec);
		var cents = priceStr.substring(dec + 1);
		
		return {'dollars':dollars, 'cents':cents};
	}
	
	function unselectRadios(){
		j('.itemSelector').each(function(){
			if (j(this).hasClass('selectedItem'))
				j(this).removeClass('selectedItem');
		});
	}
	
	function checkPostcode(){
		j('.errorMessage').hide();
		if (parent)
			parent.j.fn.colorbox.myResize(625, 440);
		
		j('.errorMessage').children('p').remove();
		var postcode = j('#deliveryAddressPostcode').val();
		var city = j('#deliveryAddressCity').val();
		var country = j('#deliveryAddressCountry').val();
		if (country == 1 && postcode.length > 0 && city.length > 0){
			j.get('/actions/deliveryAddress.do?method=validateSuburbAjax',
				{'deliveryAddress.postcode':postcode, 'deliveryAddress.city':city},
				function(data){
					if (data.length > 20){
						if (j('.errorMessage').children('p').length == 0){
							j('.errorMessage').append('<p>' + data + '</p>').show();
							if (parent)
								parent.j.fn.colorbox.myResize(625, 505);
						}
					}
				});
		}
		
	}
});
