

///////////////////////////////////////////////////////////////////////////////
// General
	var validEmailAddress = /^[^@]+@[^@]+.[a-z]{2,}$/i;  // for validation in various functions

	function strrpos( haystack, needle, offset){
	    var i = (haystack+'').lastIndexOf( needle, offset ); // returns -1
	    return i >= 0 ? i : false;
	}

	function OpenObj(c){

	      if ($('.'+c).is(":hidden")) {
	        $('.'+c).slideDown("slow");		
			//$('.'+c).css('display','block');
	      }

	}

	function CloseObj(c){

      if ($('.'+c).is(":hidden")) {
        // do nothing
      } else {
		$('.'+c).slideUp("slow");
		//$('.'+c).css('display','none');
	  }

	}
		
	
///////////////////////////////////////////////////////////////////////////////
// Ajax	
	function SetCartVar(SetVars, CbFunction){

		// SetVars should be an array
	
		$.get('process.ajax.handler.php', {
			'AjaxHandler' 	: 'SetCartVar',
			'SetVars' 		: SetVars
		}, function(data, returnStatus){
			// call back	
			if(data){
				// success
				// alert(VarName+' '+VarValue);
				
				if(CbFunction != 'bunk'){
					GetCartResult(CbFunction, 'bunk');
				}
				
			} else {
				// alert('Error:  Please try again.');
			}
		},'json');	
	}	
	
	function GetCartResult(InitFunction, CbFunction){

		$.get('process.ajax.handler.php', {
			'AjaxHandler' 	: 'GetCartResult',
			'CallFunction'	: InitFunction
		}, function(data, returnStatus){
			// call back	
			if(data){
			
				if(Cb != 'bunk'){
					GetCartResult(CbFunction, 'bunk');
				}

				
				return data;
				
				// $(ReturnToObject).html(data);
				
				// allow php to return "Error: expecting 3 parameters"
				// or  "Error: whatever else
				// if in debug mode
				
				
			} else {
				// alert('Error:  Please try again.');
			}
		},'html');	
	}
	
	
///////////////////////////////////////////////////////////////////////////////
// Captcha
	function ViewCaptchaAgain(){
		$('.CaptchaImg').css('display','block');
	}	

	function ReGenerateCaptcha(SrcURL){		
		$('.CaptchaImg').css('display','none');
		var today = new Date();
		var v = today.getTime();	

		var str = '';
		
				str += '<fieldset><legend><b>User Verification</b></legend>';
				str += '&nbsp;<img src="/test_captcha.php?v='+v+'" alt="Captcha-Image" class="CaptchaImg" />';
				str += '<br />';
				str += 'Type the exact same characters displayed in the image above:<br />';
				str += '<input type="text" class="CaptchaInput" name="CaptchaCopy" /><br />';
				str += 'Trouble reading the image? <a href="javascript:;" onclick="javascript:ReGenerateCaptcha(\'/test_captcha.php\'); return false;">Click here to re-generate</a>';
				str += '</fieldset>';	
		
		
		$('.CaptchaImg').html(str);
		setTimeout("ViewCaptchaAgain()",500);		
	}
	
	
	
///////////////////////////////////////////////////////////////////////////////
// User Login
	function ValidReg(postURL){

		$('#RegisterButton').html('<span style="color:#CCCCCC;">please wait</span>');

		var strEmail = $('#RegEmail').val();
		var strPass = $('#RegPassword').val();
		var strConfirmPass = $('#RegConfirmPassword').val();
	
		

		
		// ajax -  check for existing email address
		var EmailExists = 0;
			$.get(postURL, {
				'CheckEmail'		: 1,
				'Email'				: strEmail
			}, function(data, returnStatus){
				// call back	

				if (data == '1'){
					// success
					EmailExists = 1;
				} 
				
				if (strEmail.search(validEmailAddress) == -1){
					$('#RegisterButton').html('<span style="color:#FF0000;">please provide a valid email address</span><br /><input type="button" value="REGISTER" onclick="javascript:ValidReg();" /><br /><a href="javascript:CloseRegForm(\'RegisterForm\');">Close</a>');
				
				} else if((strPass.length < 4) || (strPass != strConfirmPass)){
					$('#RegisterButton').html('<span style="color:#FF0000;">please complete password fields</span><br /><input type="button" value="REGISTER" onclick="javascript:ValidReg();" /><br /><a href="javascript:CloseRegForm(\'RegisterForm\');">Close</a>');
			
				} else if(EmailExists == 1){
					$('#RegisterButton').html('<br /><span style="color:#FF0000;">the email address entered already exists in our system.  please try again.</span><br /><br /><input type="button" value="REGISTER" onclick="javascript:ValidReg();" /><br /><a href="javascript:CloseRegForm(\'RegisterForm\');">Close</a>');
						
				} else {
					// success
					
					// convert the following to using ajax funcs define above
					
					$.get(postURL, {
						'NewRegistration'	: 1,
						'Email'				: escape(strEmail),
						'Password'			: escape(strPass)
					}, function(data, returnStatus){
						// call back	
						if (returnStatus == 'success'){
							// success
							$('.RegisterForm').html('<br /><center><span style="color:#FF0000;">Thank you. You\'re only a few clicks away from completion. Please check your email. Once your email has been verified you can login using the above form.</span></center>');

						} else {				
							$('#RegisterButton').html('<span style="color:#FF0000;">ERROR:  Please try again.</span><br /><input type="button" value="REGISTER" onclick="javascript:ValidReg();" /><br /><a href="javascript:CloseRegForm(\'RegisterForm\');">Close</a>');
									
						}
					});		

				}		

			});		
			
	}
	
	function ForgotPass(){		
		
		$('.VSC_CartItemList').slideUp('slow');
		
		var Email = $('#LoginEmail').val();
		
		if(confirm('Instructions for updating your password will be sent to the email address you use to login with.  If you did not enter an email address, click CANCEL and try again.')){
			
			// alert('Email Sent to '+Email);
			// $('.VSC_CartItemList').slideDown('slow');

			$.get(postURL, {
				'ForgotPassword'	: 1,
				'Email'				: Email
			}, function(data, returnStatus){
				// call back	
				if(data){
					alert('Thank you.  Please check your email.');
				} else {
					alert('Error:  Please try again.');
				}
			});	
		}
	}
		
	
	
	function ShowLargeImg(ItemID, url){	
		$('#LargeImg'+ItemID).css('display','none');
		$('#LargeImg'+ItemID).attr('src',unescape(url));
		$('#LargeImg'+ItemID).fadeIn(500);  // this should run on last function's callback
	}

	function SetBlurInputVals(id,DefaultValue){
	
		if(DefaultValue == $('#'+id).val()){	
			$('#'+id).css('fontStyle','italic');
			$('#'+id).css('color','#999999');
		}
	
		$('#'+id).focus(function() {
			if( this.value == this.defaultValue && DefaultValue == this.defaultValue) {
				this.value = "";
				$('#'+id).css('fontStyle','normal');
				$('#'+id).css('color','#000000');
			}
		}).blur(function() {
			if( !this.value.length && DefaultValue == this.defaultValue) {
				$('#'+id).css('fontStyle','italic');
				$('#'+id).css('color','#999999');
				this.value = this.defaultValue;			
			}
		});
	}

	function ShippingCheck(postURL){  // html checkbox
			if($('#ShippingCheck').is(':checked')){
				$('#ShippingForm').slideUp("slow");
			} else {
				$('#ShippingForm').slideDown("slow");
			}
			UpdateCart(postURL,0,0,0);
			return false;
	}	
		
	function UpdateCart(postURL,xItemIDs,AddQty,OutputTotalOnly){
	
		var ItemsStr = '';
	
		if(xItemIDs != 0){
		
		
			var Items = new Array();
		
			if(strrpos( xItemIDs, ',') == false){

				var ItemIDs = new Array();

				var id = xItemIDs;
				Items[0] = new Array();
				Items[0][0] = id;
				if(AddQty == 1){
					// Items[0][1] = $('#Qty_'+id).val();
					Items[0][1] = $('#Qty_').val();
					
					ItemsStr += id+','+$('#Qty_').val();
					
				} else {
					Items[0][1] = $('#UpdateQty_'+id).val();
					ItemsStr += id+','+$('#UpdateQty_'+id).val();
				}
			
				
			} else {
			
				var ItemIDs = xItemIDs.split(','); 				
				for(i=0; i<ItemIDs.length; i++){
					var id = ItemIDs[i];
					//alert(id);
					Items[i] = new Array();
					Items[i][0] = id;

					
					
					if(AddQty == 1){
						Items[i][1] = $('#Qty_'+id).val();
					} else {					
						if($('#UpdateQty_'+id).length > 0){									
							//Items[i][1] = $('#UpdateQty_'+id).val();
							
							if(i > 0){
								ItemsStr += ',';
							}
							ItemsStr += id+','+$('#UpdateQty_'+id).val();
						}
					}
				}			
			}

			
			
			
		} else {
			Items = 0;
			ItemsStr = 0;
		}
		
		

		ShippingZipVal = 0;
		if ($(".CheckoutForm:visible").size()) { 
			if($('#ShippingCheck').is(':checked')){
				ShippingZipVal = $('#BillingZipcode').val();	
			} else {	
				ShippingZipVal = $('#ShippingZipcode').val();
			}
		}


		if($('#CouponCode').val() != undefined){
			xCouponCode = $('#CouponCode').val();
		} else {
			xCouponCode = 0;
		}


		
		if(OutputTotalOnly != 1){
			OutputTotalOnly = 0;
		}	
		$.get(postURL, 
			{
			'UpdateCart'		: 1,
			'OutputTotalOnly' 	: OutputTotalOnly,
			'AddQty'			: AddQty,
			'Items'				: escape(ItemsStr),
			'ShippingZip'		: ShippingZipVal,
			'CouponCode'		: xCouponCode
			}, 
			function(data){	
				if(data){
					$('.VSC_CartItemList').html(data.MainResult);

					if($('.VSC_CheckoutTotal').val() != undefined){				
						$('.VSC_CheckoutTotal').html(data.TotalsTable);
					}
					if($('#VSC_CouponResponse').val() != undefined){
						$('#VSC_CouponResponse').html(data.CouponResponse);	
					}
					
					CallFunction('/cart/result/', 'USPS_ShippingOptions', '#ShippingOptions');
				}
		},'json');	
		
		return false;
	}
	
	function RemoveItem(postURL,ItemID){
		$.get(postURL, {
			'RemoveItem'	: 1,
			'ItemID'		: ItemID
		}, function(data, returnStatus){
			// call back	
			if(data){
				$('.VSC_CartItemList').html(data);
			}
		});	
		UpdateCart(postURL,0,0,0);
	}
	
	function SubmitPayment(postURL){

	
		var BillingFirstName 	= $('#BillingFirstName').val();
		var BillingLastName 	= $('#BillingLastName').val(); 
		var BillingAddress 		= $('#BillingAddress').val();
		var BillingCity 		= $('#BillingCity').val();
		var BillingState 		= $('#BillingState').val();
		var BillingZipcode 		= $('#BillingZipcode').val();
		var BillingEmail 		= $('#BillingEmail').val();
		var BillingCard 		= $('#BillingCard').val();
		var BillingExpMonth 	= $('#BillingExpMonth').val();
		var BillingExpYear 		= $('#BillingExpYear').val();
		var BillingCVV 			= $('#BillingCVV').val();

		var ShippingName 		= $('#ShippingName').val();
		var ShippingAddress 	= $('#ShippingAddress').val();
		var ShippingCity 		= $('#ShippingCity').val();
		var ShippingState 		= $('#ShippingState').val();
		var ShippingZipcode 	= $('#ShippingZipcode').val();
		if($('#ShippingCheck').is(':checked')){
			ShippingName 		= BillingFirstName+' '+BillingLastName;
			ShippingAddress 	= BillingAddress;
			ShippingCity 		= BillingCity;
			ShippingState 		= BillingState;
			ShippingZipcode 	= BillingZipcode;	
		}


		if(
			BillingFirstName == '' ||
			BillingLastName == '' ||
			BillingAddress == '' ||
			BillingCity == '' ||
			BillingZipcode == '' ||
			BillingEmail == '' ||
			BillingCard == '' ||
			BillingExpMonth == '' ||
			BillingExpYear == '' ||
			BillingCVV == '' ||
			ShippingName == '' ||
			ShippingAddress == '' ||
			ShippingCity == '' ||
			ShippingState == '' ||
			ShippingZipcode	 == ''		
			
		){
		
			$('#SubmitPaymentButton').html('<center><span style="color:#FF0000;">All red fields are required</span></center><br /><input type="button" class="CheckoutSubmit" value="SUBMIT" onclick="javascript: SubmitPayment(\''+postURL+'\'); return false;" /> &nbsp; &nbsp; <a href="javascript: $.scrollTo(\'.VSC_Cart\',500);  OpenObj(\'VSC_CartItemList\'); CloseObj(\'CheckoutForm\');">Cancel</a>');
		
		} else if (BillingEmail.search(validEmailAddress) == -1){		
		
			$('#SubmitPaymentButton').html('<center><span style="color:#FF0000;">Please provide a valid email address</span></center><br /><input type="button" class="CheckoutSubmit" value="SUBMIT" onclick="javascript: SubmitPayment(\''+postURL+'\'); return false;" /> &nbsp; &nbsp; <a href="javascript: $.scrollTo(\'.VSC_Cart\',500);  OpenObj(\'VSC_CartItemList\'); CloseObj(\'CheckoutForm\');">Cancel</a>');

		} else {
			
			$('#SubmitPaymentButton').html('<span style="color:#CCCCCC;">please wait</span>');
		
			$.get(postURL, {
				'Checkout'					: 1,
				'Billing[BillingFirstName]' : escape(BillingFirstName),
				'Billing[BillingLastName]' 	: escape(BillingLastName),
				'Billing[BillingAddress]' 	: escape(BillingAddress),
				'Billing[BillingCity]' 		: escape(BillingCity),
				'Billing[BillingState]' 	: escape(BillingState),
				'Billing[BillingZipcode]' 	: escape(BillingZipcode),
				'Billing[BillingEmail]' 	: escape(BillingEmail),
				'Billing[BillingCard]' 		: escape(BillingCard),
				'Billing[BillingExpMonth]' 	: escape(BillingExpMonth),
				'Billing[BillingExpYear]' 	: escape(BillingExpYear),
				'Billing[BillingCVV]' 		: escape(BillingCVV),
				'Shipping[Name]'			: escape(ShippingName),
				'Shipping[Address]'			: escape(ShippingAddress),
				'Shipping[City]'			: escape(ShippingCity),
				'Shipping[State]'			: escape(ShippingState),
				'Shipping[Zipcode]'			: escape(ShippingZipcode)
			}, function(data, returnStatus){
				// call back	

				if(data){
					if(data.Approval == 'approved'){
						//$('.WhateverClassOrID').html('<br /><center><span style="color:#FF0000;">Thank you.<br />Your approval number is '+data.ApprovalNumber+'.<br />A receipt has been emailed to '+data.Email+'.</span><br /><br /><a href="http://'+data.Homepage+'">Return to homepage</a></center>');
						//$.scrollTo('.VSC_Cart',500);
					} else {				
						$('#SubmitPaymentButton').html('<br /><center><span style="color:#FF0000;">Your card was declined. Please try again.</span></center><br /><input type="button" class="CheckoutSubmit" value="SUBMIT" onclick="javascript: SubmitPayment(\''+postURL+'\'); return false;" /> &nbsp; &nbsp; <a href="javascript: $.scrollTo(\'.VSC_Cart\',500);  OpenObj(\'VSC_CartItemList\'); CloseObj(\'CheckoutForm\');">Cancel</a>');
								
					}
				} else {
					$('#SubmitPaymentButton').html('<br /><center><span style="color:#FF0000;">Error: Please try again.</span></center><br /><input type="button" class="CheckoutSubmit" value="SUBMIT" onclick="javascript: SubmitPayment(\''+postURL+'\'); return false;" /> &nbsp; &nbsp; <a href="javascript: $.scrollTo(\'.VSC_Cart\',500);  OpenObj(\'VSC_CartItemList\'); CloseObj(\'CheckoutForm\');">Cancel</a>');
										
				}
				
			},'json');			
		
		}

	}		
	
	
	
		