$(document).ready(function() {
   // Beginning Functions
   $('.ccpayment').hide();
   $('.checkpayment').hide();
   $('.cashpayment').hide();
   updatePrice();
   plural($('.bottlenum').val(),$('.bplural'));
   plural($('.coolernum').val(), $('.cplural'));
   plural($('.monthnum').val(), $('.mplural'));
   updateName();
   updateDorm();
   updatePhone();
   updateEmail();
   if ($('input[name="payment"]:checked').val() == 1) {
     $('.checkpayment').slideUp();
     $('.cashpayment').slideUp();
     $('.ccpayment').slideDown();
     updateCard();
   } else if ($('input[name="payment"]:checked').val() == 2) {
     $('.ccpayment').slideUp();
     $('.cashpayment').slideUp();
     $('.checkpayment').slideDown();
     fieldDone('.field4');
   } else if ($('input[name="payment"]:checked').val() == 3) {
     $('.ccpayment').slideUp();
     $('.checkpayment').slideUp();
     $('.cashpayment').slideDown();
     fieldDone('.field4');
   }
   
   // Price Updates
   $('.bottlenum').change(function () {
   	updatePrice();
   	plural($('.bottlenum').val(),$('.bplural'));
   })
   $('.coolernum').change(function () {
   	updatePrice();
   	plural($('.coolernum').val(), $('.cplural'));
   })
   $('.monthnum').change(function () {
   	updatePrice();
   	plural($('.monthnum').val(), $('.mplural'));
   })
   
   // Name Updates
   $('input[name="Ecom_ShipTo_Postal_Name_First"]').change(function () { updateName(); })
   $('input[name="Ecom_ShipTo_Postal_Name_Last"]').change(function () { updateName(); })
   
   // Dorm Updates
   $('input[name="building"]').change(function () { updateDorm(); })
   $('input[name="roomnum"]').change(function () { updateDorm(); })
      
   // Phone Updates
   $('input[name="Ecom_ShipTo_Telecom_Phone_Number"]').change(function () { updatePhone(); })
   
   // Email Updates
   $('input[name="Ecom_ShipTo_Online_Email"]').change(function () { updateEmail(); })
   
   // Payment Updates
   $('input[name="payment"]').change(function() {
     var $method = $('input[name="payment"]:checked').val();
     if ($method == 1) {
     	$('.checkpayment').slideUp();
     	$('.cashpayment').slideUp();
     	fieldUndone('.field4');
    	updateCard();
     	$('.ccpayment').slideDown();
     } else if ($method == 2) {
     	$('.ccpayment').slideUp();
     	$('.cashpayment').slideUp();
     	$('.checkpayment').slideDown();
     	fieldDone('.field4');
     } else if ($method == 3) {
     	$('.ccpayment').slideUp();
     	$('.checkpayment').slideUp();
     	$('.cashpayment').slideDown();
     	fieldDone('.field4');
     }
   })
   
   // Credit Card Updates
   $('input[name="Ecom_Payment_Card_Name"]').change(function() { updateCard(); })
   $('input[name="Ecom_Payment_Card_Number"]').change(function() { updateCard(); })
   $('input[name="Ecom_Payment_Card_Verification"]').change(function() { updateCard(); })
   
   // Form Validity Check
   $('.continue').click(function() {
   	   // Hide errors
   	   $('.nameError').hide();$('.fnameError').hide();$('.lnameError').hide();
   	   $('.dormError').hide();$('.buildingError').hide();$('.roomNumError').hide();
   	   $('.phoneEmailError').hide();$('.phoneError').hide();$('.emailError').hide();
   	   $('.paymentError').hide();$('.methodError').hide();$('.cardNameError').hide();$('.cardNumError').hide();$('.cvcError').hide();
   	   
   	   var $bottlenum = $('.bottlenum').val();
   	   var $coolernum = $('.coolernum').val();
   	   var $monthnum = $('.monthnum').val();
   	   var $amount = (($bottlenum*11) + ($coolernum*12)) * $monthnum
	   var $fname = $('input[name="Ecom_ShipTo_Postal_Name_First"]').val();
	   var $lname = $('input[name="Ecom_ShipTo_Postal_Name_Last"]').val();
	   var $building = $('input[name="building"]').val();
	   var $roomnum = $('input[name="roomnum"]').val();
	   var $phone = $('input[name="Ecom_ShipTo_Telecom_Phone_Number"]').val();
	   var $email = $('input[name="Ecom_ShipTo_Online_Email"]').val();
	   var $payment = $('input[name="payment"]:checked').val();
	   var $cardname = $('input[name="Ecom_Payment_Card_Name"]').val();
	   var $cardnum = $('input[name="Ecom_Payment_Card_Number"]').val();
	   var $cvc = $('input[name="Ecom_Payment_Card_Verification"]').val();
	   var $expirmon = $('select[name="Ecom_Payment_Card_ExpDate_Month"]').val();
	   var $expiryear = $('select[name="Ecom_Payment_Card_ExpDate_Year"]').val();
	   
	   var $valid = true;
	   var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
	   var phoneReg = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;
	   
	   if ($fname == "") {
	     $('div.nameError').show();
	     $('p.fnameError').show();
	     $valid = false;
	   }
	   if ($lname == "") {
	     $('div.nameError').show();
	     $('p.lnameError').show();
	     $valid = false;
	   }
	   if ($building == "") {
	     $('div.dormgError').show();
	     $('p.buildingError').show();
	     $valid = false;
	   }
	   if ($roomnum == "") {
	     $('div.dormError').show();
	     $('p.roomNumError').show();
	     $valid = false;
	   }
	   if (!phoneReg.test($phone) || $phone == "") {
	     $('div.phoneEmailError').show();
	     $('p.phoneError').show();
	     $valid = false;
	   }
	   if (!emailReg.test($email) || $email == "") {
	     $('div.phoneEmailError').show();
	     $('p.emailError').show();
	     $valid = false;
	   }
	   if ($payment != 1 && $payment != 2 && $payment != 3) {
	     $('div.paymentError').show();
	     $('p.methodError').show();
	     $valid = false;
	   }
	   if ($payment == 1 && $cardname == "") {
	     $('div.paymentError').show();
	     $('p.cardNameError').show();
	     $valid = false;
	   }
	   if ($payment == 1 && ($cardnum.length != 13 && $cardnum.length != 14 && $cardnum.length != 15 && $cardnum.length != 16)) {
	     $('div.paymentError').show();
	     $('p.cardNumError').show();
	     $valid = false;
	   }
	   if ($payment == 1 && $cvc == "") {
	     $('div.paymentError').show();
	     $('p.cvcError').show();
	     $valid = false;
	   }
	   
	   if ($valid) {
		$('.top').replaceWith("<h3 class=\"top\">Confirm Order</h3>");
		$('.bottles').text($bottlenum);
		$('.coolers').text($coolernum);
		$('.months').text($monthnum);
		$('.total').text($amount);
		$('.fname').text($fname);
		$('.lname').text($lname);
		$('.building').text($building);
		$('.room').text($roomnum);
		$('.email').text($email);
		$('.phone').text($phone);
		if($payment == 1) {
			$('tr.cc').show();
			$('.method').text("Credit Card");
			$('.cardname').text($cardname);
			$('.cardnum').text($cardnum);
			$('.expirmon').text($expirmon);
			$('.expiryear').text($expiryear);
			$('.cvc').text($cvc);
		} else if ($payment == 2) {
			$('tr.cc').hide();
			$('.method').text("Check");
		} else if ($payment == 3) {
			$('tr.cc').hide();
			$('.method').text("Cash");
		}
		
		$('#first').slideUp();
		$('#second').slideDown();
	   }
   })
   
   // Form Edit Button
   $('.editForm').click(function() {
   	$('#second').slideUp();
   	$('#first').slideDown();
   })
 }); 
 
 
 function updatePrice() {
 var $bot = $('.bottlenum').val();
 var $cool = $('.coolernum').val();
 var $mon = $('.monthnum').val();
 var $monthtot = ($bot * 11) + ($cool * 12);
 var $subtotal = $monthtot * $mon;
 var $tax = (Math.round(($subtotal*0.085)*100))/100;
 var $total = $subtotal + $tax;
 
 $('.change-month').text($monthtot);
 $('.change-subtotal').text($subtotal);
 $('.change-tax').text($tax.toFixed(2));
 $('.change-total').text($total.toFixed(2));
 $('input[name="total"]').val($total);
 }
 
 function plural($num,$change) {
 	if($num > 1) { $($change).text('s'); }
 	else { $($change).text(''); }
 }
 
 function updateName() {
    var $fname = $('input[name="Ecom_ShipTo_Postal_Name_First"]').val();
    var $lname = $('input[name="Ecom_ShipTo_Postal_Name_Last"]').val();
  
    if ($fname != "" && $lname != "") {
      fieldDone('.field1');
    } else {
      fieldUndone('.field1');
    }
}
 
 function updateDorm() {
   var $building = $('input[name="building"]').val();
   var $room = $('input[name="roomnum"]').val();
 
   if ($building != "" && $room != "") {
     fieldDone('.field2');
   } else {
     fieldUndone('.field2');
   }
}

function updatePhone() {
  var $phone = $('input[name="Ecom_ShipTo_Telecom_Phone_Number"]').val();
  var phoneNumberPattern = /^\(?(\d{3})\)?[- ]?(\d{3})[- ]?(\d{4})$/;

  if($phone == "") {
  	fieldUndone('.field5');
  } else if (!phoneNumberPattern.test($phone)) {
  	fieldBad('.field5');
  } else {
  	fieldDone('.field5');
  }
}

function updateEmail() {
  var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
  var emailaddressVal = $('input[name="Ecom_ShipTo_Online_Email"]').val();

  if (emailaddressVal == "") {
	fieldUndone('.field3');
  } else if(!emailReg.test(emailaddressVal)) {
	fieldBad('.field3');
  } else {
	fieldDone('.field3');
  }
}

function updateCard() {
  var $cardName = $('input[name="Ecom_Payment_Card_Name"]').val();
  var $cardNum = $('input[name="Ecom_Payment_Card_Number"]').val();
  var $cvc = $('input[name="Ecom_Payment_Card_Verification"]').val();
  
  if ($cardName != "" && ($cardNum.length == 13 || $cardNum.length == 14 || $cardNum.length == 15 || $cardNum.length == 16) && $cvc != "") {
    fieldDone('.field4');
  } else if ($cardNum.length >= 1 && ($cardNum.length != 13 && $cardNum.length != 14 && $cardNum.length != 15 && $cardNum.length != 16)) {
    fieldBad('.field4');
  } else if ($cardName == "" || $cardNum.length == 0 || $cvc == "") {
    fieldUndone('.field4');
  }
}

function fieldDone($field) {
  $($field).css('background-color','#9FFFA1');
  $($field).css('background-image','url(/i/done.png)');
}
function fieldUndone($field) {
  $($field).css('background-color','#DEEBF1');
  $($field).css('background-image','url(/i/undone.png)');
}
function fieldBad($field) {
  $($field).css('background-color','#FFB4B4');
  $($field).css('background-image','url(/i/bad.png)');
}

