var cartFx = new Fx.Style('divCart','background-color',{duration: 1500});
function addToCart(id) {
    new Ajax('/php/addToCart.php',{
        method: 'post',
        onSuccess: function(tr) {
            if(tr != 0) {
                new Fx.Style('divCart','background-color',{duration: 1500}).start('#B7BF59','#FFF');
                $('lnkAddToCart').innerHTML = '<img src="/img/cart_incart.gif" alt="in cart" />';
                $('lnkAddToCart').addEvent('click',function(e) { document.location.href="/cart.php"; });
                $('lnkAddToCart').setAttribute('class','');
                updatecart();
            }
        }
    }).request('id='+id);
}

function addSingle(id) {
    new Ajax('php/addToCart.php',{
        method: 'post',
        onSuccess: function(tr) {
            if(tr != 0) {
				if($('p'+id)) {
                    $('p'+id).innerHTML = '<a href="/cart.php"><img src="/img/cart_incart.gif" alt="in cart" class="incartAcc" /></a>';
                    $('p'+id).setStyle('cursor','default');
                }
                new Fx.Style('divCart','background-color',{duration: 1500}).start('#B7BF59','#FFF');
                updatecart();
            }
        }
    }).request('id='+id);
}

function addMachIns(l) {
    $$('input.radio').each(function(el) {
        if(el.checked == true) {
            new Ajax('php/addToCart.php',{
                method: 'post',
                onSuccess: function(tr) {
                    $('pCBIN-'+l).innerHTML = '<a href="/cart.php"><img src="/img/cart_incart.gif" alt="in cart" class="incartAcc" /></a>';
                    var thisA = $('pCBIN-'+l).getFirst();
                    thisA.inject($('pCBIN-'+l),'before');
                    $('pCBIN-'+l).remove();
                    cartBox.close();
                    updatecart();
                }
            }).request('id='+el.value+'&make='+$('make').value+'&model='+$('model').value);
        }
    });
}

function addOptions(single,id) {
    $$('input.radio').each(function(el) {
        if(el.checked == true) {
            if(single) {
                addSingle(el.value);
				$('p'+id).innerHTML = '<a href="/cart.php"><img src="/img/cart_incart.gif" alt="in cart" class="incartAcc" /></a>';
                var thisA = $('p'+id).getFirst();
                thisA.inject($('p'+id),'before');
                $('p'+id).remove();
            } else {
                addToCart(el.value);
            }
        }
        cartBox.close();
    });
}

function updatecart() {
    if($('divCartContents')) {
        new Ajax('/php/updatecart.php',{
            onSuccess: function(tr) {
                if(tr.length) {
                    var r = Json.evaluate(tr);
                    $('divCartContents').innerHTML = r.html;
                    $('cartTotal').setStyle('display','block');
                    $('cartTotal').innerHTML = 'Total  $'+r.total.toFixed(2);
                    $('divCartLinks').setStyle('display','block');
                    $('cartCount').innerHTML = r.count;
                    $('cartItems').innerHTML = r.item;
                }
            }
        }).request();
    }
}

function remFromCart(id) {
    new Ajax('/php/remFromCart.php',{
        method: 'post',
        onSuccess: function(tr) {
            var pelem = $('cic-'+id);
            new Fx.Style(pelem,'opacity',{duration: 1000}).start(0);
            new Fx.Style(pelem,'height',{duration: 1000}).start(0).chain(function() { document.location.href = document.location.href.replace('#',''); });
        }
    }).request('id='+id);
}

function remMiniCart(id) {
    new Ajax('/php/remFromCart.php',{
        method: 'post',
        onSuccess: function(tr) {
            if(parseInt(tr) > 0) {
                new Fx.Style('divCart','background-color',{duration: 1500}).start('#B7BF59','#FFF');
                updatecart();
            } else {
                document.location.href = document.location.href.replace('#','');
            }
        }
    }).request('id='+id);
}

function checkout(step) {
    var frmError = false;
    $$('input.required').each(function(el) {
        if(el.value == '') {
            frmError = true;
            el.setStyle('border','solid 1px #FF0000');
        } else {
            el.setStyle('border','solid 1px #BBC72F');
        }
    });
    if(step==0) {
        if(!$('ship_zip').value.test('[0-9]{5}')) {
            frmError = true;
            $('ship_zip').setStyle('border','solid 1px #FF0000');
        } else {
            $('ship_zip').setStyle('border','solid 1px #BBC72F');
        }
        if(!$('bill_zip').value.test('[0-9]{5}')) {
            frmError = true;
            $('bill_zip').setStyle('border','solid 1px #FF0000');
        } else {
            $('bill_zip').setStyle('border','solid 1px #BBC72F');
        }
        if(!$('email_address').value.test('^[a-zA-Z0-9\-\._]*\@[a-zA-Z0-9\-\._]*[a-zA-Z]{2,4}$')) {
            frmError = true;
            $('email_address').setStyle('border','solid 1px #FF0000');
        } else {
            $('email_address').setStyle('border','solid 1px #BBC72F');
        }
    } else if(step==1) {
        if(!$('cc_number').value.test('^[0-9]{15,16}$')) {
            frmError = true;
            $('cc_number').setStyle('border','solid 1px #FF0000');
        } else {
            $('cc_number').setStyle('border','solid 1px #BBC72F');
        }
        if(!$('cc_exmo').value.test('^[0-9]{2}$')) {
            frmError = true;
            $('cc_exmo').setStyle('border','solid 1px #FF0000');
        } else {
            $('cc_exmo').setStyle('border','solid 1px #BBC72F');
        }
        if(!$('cc_exyr').value.test('^[0-9][0-9]$')) {
            frmError = true;
            $('cc_exyr').setStyle('border','solid 1px #FF0000');
        } else {
            $('cc_exyr').setStyle('border','solid 1px #BBC72F');
        }
        if(!$('cc_id').value.test('^[0-9]{3,4}$')) {
            frmError = true;
            $('cc_id').setStyle('border','solid 1px #FF0000');
        } else {
            $('cc_id').setStyle('border','solid 1px #BBC72F');
        }
    }
    if(!frmError) {
        new Ajax('/php/checkout.php',{
            method: 'post',
            onSuccess: function() {
                document.location.href = '/checkout.php?step='+(step + 1);
            }
        }).request($('frmCheckout').toQueryString()+'&step='+step);
    }
}

function emptycart() {
    new Ajax('/php/emptycart.php',{
        method: 'post',
        onSuccess: function() {
            document.location.href = document.location.href.replace('#','');
            //$('divCartLinks').setStyle('display','none');
            //$('cartTotal').setStyle('display','none');
            //$('cartTotal').innerHTML = '0.00';
            //$('divCartContents').innerHTML = '';
            //$('cartCount').innerHTML = '0';
            //$('cartItems').innerHTML = 'items';
        }
    }).request();
}

function calculateShipping() {
    var weight = $('ship_weight').value;
    var zip = $('ship_zip').value;
    if(zip != '') {
        $('lnkShipCalc').innerHTML = 'calculating';
        new Ajax('/php/shipcalc.php',{
            method: 'get',
            onSuccess: function(tr) {
                $('divShip').innerHTML = '$'+tr;
				$('divTotal').innerHTML = '$'+(parseFloat(tr) + parseFloat($('ship_total').value)).toFixed(2);
				if($('promo_code').value != '') {
					new Ajax('/php/promo.php', {
						onComplete: function(r) {
							var p = Json.evaluate(r);
							if(p.disc) {
								$('divPromo').innerHTML = '-$'+p.disc;
								$('divTotal').innerHTML = '$'+(parseFloat(tr) + parseFloat(p.total)).toFixed(2);
							}
						}
					}).request('p='+$('promo_code').value);
				}
                $('lnkShipCalc').innerHTML = 'calculate';
            }
        }).request('sz='+zip);
    }
}

function applyPromo() {
	if($('promo_code').value != '') {
		new Ajax('/php/promo.php', {
			onComplete: function(tr) {
				var r = Json.evaluate(tr);
				if(r.disc) {
					$('divPromo').innerHTML = '-$'+r.disc;
					var shipcost = parseFloat($('divShip').innerHTML.replace('$',''));
					if(shipcost > 0) {
						$('divTotal').innerHTML = '$'+(parseFloat(r.total) + shipcost).toFixed(2);
					} else {
						$('divTotal').innerHTML = '$'+r.total;
					}
				}
			}
		}).request('p='+$('promo_code').value);
	}
}

function processOrder(step) {
    switch(step) {
        case 1:
            $('divCheckoutStatus').innerHTML += 'Verifying Address.....';
            setTimeout(function() {
                $('divCheckoutStatus').innerHTML += 'Completed<br /><br />';
                processOrder(2);
            }, 2500);
            break;
        case 2:
            new Ajax('/php/processOrder.php',{
                onRequest: function() {
                    $('divCheckoutStatus').innerHTML += 'Processing Credit Card.....';
                },
                onSuccess: function(tr) {
					if(parseInt(tr) == 100) {
                        $('divCheckoutStatus').innerHTML += "Completed<br /><br />";
                        processOrder(3);
                    } else {
                        var error_codes = new Array();
                        error_codes[101] = 'The request is missing one or more required fields.';
                        error_codes[102] = 'One or more fields in the request contains invalid data.'
                        error_codes[150] = 'Error: General system failure.'
                        error_codes[151] = 'Server Timeout: Unable to continue.'
                        error_codes[152] = 'Server Timeout: Unable to continue.'
                        error_codes[200] = 'Failed Address Verification Service (AVS) check.'
                        error_codes[202] = 'Credit Card has expired.'
                        error_codes[203] = 'Credit Card has been declined'
                        error_codes[204] = 'Credit Card has been declined'
                        error_codes[205] = 'Credit Card has been declined'
                        error_codes[207] = 'Issuing bank unavailable.'
                        error_codes[208] = 'Credit Card has been declined'
                        error_codes[209] = 'American Express Card Identification Digits (CID) did not match.'
                        error_codes[210] = 'Credit Card has been declined'
                        error_codes[211] = 'Invalid card verification number. (CCV/CCID)'
                        error_codes[221] = 'Credit Card has been declined'
                        error_codes[230] = 'Credit Card has been declined'
                        error_codes[231] = 'Invalid Credit Card account number.'
                        error_codes[233] = 'Credit Card has been declined'
                        error_codes[234] = 'Merchant Configuration Error.'
                        error_codes[240] = 'Credit Card type/number mis-match'
                        error_codes[250] = 'Server Timeout: Unable to continue.'
                        if(error_codes[parseInt(tr)]) {
                            $('divCheckoutStatus').innerHTML += error_codes[parseInt(tr)];
                            $('divCheckoutStatus').innerHTML += '<br /><br /><a href="checkout.php?step=2"><img src="/img/buttons/back.gif" alt="back" /></a>';
                        } else {
                            $('divCheckoutStatus').innerHTML += "Transaction failed. Please contact us for assistance.<br /><br />";
                        }
                    }
                }
            }).request('step=2');
            break;
        case 3:
            $('divCheckoutStatus').innerHTML += 'Finalizing Order.....';
            new Ajax('/php/processOrder.php',{
                onSuccess: function(tr) {
                    $('divCheckoutStatus').innerHTML += tr;
                }
            }).request('step=3');
    }
}

function sameas() {
    if($('sameAs').checked) {
        $('bill_first_name').value = $('ship_first_name').value;
        $('bill_last_name').value = $('ship_last_name').value;
        $('bill_address').value = $('ship_address').value;
        $('bill_address2').value = $('ship_address2').value;
        $('bill_city').value = $('ship_city').value;
        $('bill_state').value = $('ship_state').value;
        $('bill_zip').value = $('ship_zip').value;
    }
}

function updateQuan(pid,input) {
	if(!isNaN(parseInt($(input).value))) {
		new Ajax('/php/updateQuantity.php',{
			onSuccess: function(tr) {
				document.location.href = document.location.href.replace('#','');
			}
		}).request('pid='+pid+'&val='+parseInt($(input).value));
	} else {
		$(input).setStyle('border','solid 1px #FF0000');
	}
}