// Blueprint form handling
let blueprintForm = null;
let formContainer = null;
let successMessage = null;
function handleFormSubmit(event) {
event.preventDefault();
try {
console.log('Form submitted - processing locally');
// Get form data
const formData = new FormData(blueprintForm);
const requirements = {
fullName: formData.get('full_name'),
email: formData.get('email'),
companyName: formData.get('company_name'),
apiUrlA: formData.get('api_url_system_a'),
apiUrlB: formData.get('api_url_system_b'),
useCase: formData.get('use_case_description')
};
console.log('Requirements collected:', requirements);
// Validate required fields
const requiredFields = ['fullName', 'email', 'companyName', 'apiUrlA', 'apiUrlB', 'useCase'];
const missingFields = requiredFields.filter(field => !requirements[field] || requirements[field].trim() === '');
if (missingFields.length > 0) {
alert('Please fill in all required fields');
return;
}
// Show loading state
const submitBtn = document.getElementById('submitBtn');
const originalText = submitBtn.textContent;
submitBtn.textContent = 'Processing Requirements...';
submitBtn.disabled = true;
// Phase 1: Show processing message
setTimeout(() => {
submitBtn.textContent = 'Preparing Payment...';
// Phase 2: Show success and prepare redirect
setTimeout(() => {
// Hide form container
if (formContainer) {
formContainer.classList.add('hidden');
}
// Show success message
if (successMessage) {
successMessage.classList.remove('hidden');
// Populate customer name
const customerNameSpan = document.getElementById('customerName');
if (customerNameSpan) {
customerNameSpan.textContent = requirements.fullName;
}
// Populate requirements summary
const summaryDiv = document.getElementById('requirementsSummary');
if (summaryDiv) {
summaryDiv.innerHTML = `
Contact: ${requirements.fullName} (${requirements.email})
Company: ${requirements.companyName}
System A API: ${requirements.apiUrlA}
System B API: ${requirements.apiUrlB}
Use Case: ${requirements.useCase.substring(0, 200)}${requirements.useCase.length > 200 ? '...' : ''}
`;
}
// Scroll to success message
successMessage.scrollIntoView({ behavior: 'smooth' });
console.log('Success message displayed');
}
// Phase 3: Immediate redirect to Stripe
console.log('Redirecting to Stripe payment...');
// Use the exact URL provided
const stripeUrl = 'https://buy.stripe.com/9B69AU2l8bXS8yO9ci3Ru00';
// Try different redirect methods for maximum compatibility
try {
// Method 1: Direct window.location
console.log('Attempting direct redirect to:', stripeUrl);
window.location.href = stripeUrl;
} catch (redirectError) {
console.error('Direct redirect failed:', redirectError);
// Method 2: Try window.open as fallback
try {
console.log('Attempting window.open as fallback');
window.open(stripeUrl, '_self');
} catch (openError) {
console.error('Window.open failed:', openError);
// Method 3: Show manual button as final fallback
const paymentButton = successMessage.querySelector('a[href*="stripe.com"]');
if (paymentButton) {
paymentButton.href = stripeUrl;
paymentButton.target = '_blank';
paymentButton.innerHTML = `
Click Here for Payment
`;
paymentButton.classList.add('animate-bounce');
// Auto-click the button
setTimeout(() => {
paymentButton.click();
}, 100);
}
}
}
// Reset button (in case user goes back)
submitBtn.textContent = originalText;
submitBtn.disabled = false;
}, 1000);
}, 800);
} catch (error) {
console.error('Error processing form:', error);
alert('There was an error processing your request. Please try again.');
// Reset button
const submitBtn = document.getElementById('submitBtn');
if (submitBtn) {
submitBtn.textContent = 'Submit Blueprint Requirements';
submitBtn.disabled = false;
}
}
}
function attachFormListener() {
console.log('Attaching form listener...');
try {
// Find form elements
blueprintForm = document.getElementById('blueprintForm');
formContainer = document.getElementById('formContainer');
successMessage = document.getElementById('successMessage');
if (!blueprintForm) {
console.error('Blueprint form not found');
return false;
}
if (!formContainer) {
console.error('Form container not found');
return false;
}
if (!successMessage) {
console.error('Success message not found');
return false;
}
console.log('All form elements found');
// Add form submit listener
blueprintForm.addEventListener('submit', handleFormSubmit);
console.log('Form listener attached successfully');
return true;
} catch (error) {
console.error('Error attaching form listener:', error);
return false;
}
}
function init() {
console.log('Blueprint form init() called');
try {
// Try immediately
if (attachFormListener()) {
return;
}
// If not ready, wait a bit and try again
setTimeout(() => {
console.log('Retrying form attachment after delay...');
attachFormListener();
}, 100);
} catch (error) {
console.error('Error in init():', error);
}
}
function teardown() {
console.log('Blueprint form teardown() called');
try {
if (blueprintForm) {
blueprintForm.removeEventListener('submit', handleFormSubmit);
}
console.log('Blueprint form teardown complete');
} catch (error) {
console.error('Error in teardown():', error);
}
}
// Export for module system
export { init, teardown };