// Validate the format of an email address
function validateEmail(email) {
	email = jQuery.trim(email);
	if( /^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/.test(email) ) {
		return (true); // Valid
	} else {
		return(false); // Invalid
	}
}

// Determine a file extension
function fileExt(path) {
	return path.substr(path.lastIndexOf('.') + 1);
}

// Focus on the selected tab
function showTab(tab) {
	$("#signup_form DIV.section").hide();
	$( $(tab).attr('href') ).show();
	$("#signup_tabs A").removeClass('selected');
	$("#signup_tabs A[href='" + $(tab).attr('href') + "']").addClass('selected');
}


// Ready!
$(document).ready( function() {
	
	// Handle tabs
	$("A.tab").click( function() {
		showTab( $(this) );
		return false;
	});
	$("A.tab:first").trigger('click');
	
	// Popup help icons
	$("a.help").hover( function() {
		$(this).next('span').css('display' , 'block');
	}, function() {
		$(this).next('span').css('display' , 'none');
	});
	
	// Disable help buttons click
	$("a.help").click( function() {
		return false;
	});
	
	// Limit description to X characters determined by plan
	var maxchars = $('#plan_desc_length').val();
	$("#description").keyup( function(e) {
		if( $("#description").val().length >= maxchars ) {
			$("#description").val( $('#description').val().substr(0, maxchars - 1) );
		}
	});
	
	// Limit about military service to 500 chars
	$("#service_benefit").keyup( function(e) {
		if( $("#service_benefit").val().length >= 500 ) {
			$("#service_benefit").val( $('#service_benefit').val().substr(0, 499) );
		}
	});
	
	//Get counties for state
	$("#state").change( function() {
		$("#state").after('<img id="county_load_status" src="includes/styles/images/spinner.gif" alt="Loading..." />');
		$.post('includes/ajax/signup.ajax.php', { cmd: 'get_county_list', state: $("#state").val() }, function(data) {
			$("#county").html(data);
			$("#county_load_status").remove();
		});
	}); //End #state change
	
	// Fill in special offer form
	$('#so_type_text').click( function() {
		$.post('includes/ajax/signup.ajax.php', { cmd: 'get_text_special_offer_form' }, function(data) {
			$('#special_offer_form').html(data);
			
			$('#special_offer_title').keyup(function() {
				$('#special_offer_preview H3').html($('#special_offer_title').val());
			});
			
			$('#special_offer_desc').keyup(function() {
				var data = $('#special_offer_desc').val();
				data = data.replace( /\n/g, '<br />\n' );
				$('#special_offer_preview P').html(data);
			});
			
		});
	}); // End #plan_type_text CLICK
	
	// Fill in special offer form
	$('#so_type_banner').click( function() {
		$.post('includes/ajax/signup.ajax.php', { cmd: 'get_banner_special_offer_form' }, function(data) {
			$('#special_offer_form').html(data);
		});
	}); // End #plan_type_text CLICK
	
	// Handle category picker
	$("#category_picker LI.expandable A").livequery('click', function() {
		var el = $(this);
		$(el).parent().find('UL').remove();
		if( !$(el).parent().hasClass('show_subs') ) {
			$(el).parent().append('<ul><li>Searching...</li></ul>');
			$.post('includes/ajax/signup.ajax.php', { cmd: 'get_categories', category: $(this).attr('rel') }, function(data) {
				$(el).parent().find('UL').remove();
				$(el).parent().append(data);
				$(el).parent().addClass('show_subs');
			});
		} else {
			$(el).parent().removeClass('show_subs');
			$(el).parent().find('UL').remove();
		}
		return false;
	});
	
	$("#sponsor").click( function(data) {
		if( $(this).attr('checked') ) {
			$("#sponsorship_info").removeClass('hidden');
		} else {
			$("#sponsorship_info").addClass('hidden');
		}
		
	});
	
	// Calculate selections
	$("#category_picker :checkbox, #category_picker LI.expandable A, #free_category").livequery('click', function() {
		// Update number of categories selected
		var i = 0;
		var ec =0;
		var charge = 0;
		var max_cats = $("#max_cats").val()
		if ( $('#free_category').attr('checked') ) {
			max_cats++;
		}

		$("#category_picker :checkbox").each( function() {

			if( i >= max_cats ) {

			if( $(this).attr('checked') ) {
			
				i++;
			        ec++;	
				charge=charge+10;
				$("#pay_cats").val(i - max_cats);
				$("#submit").html('Continue to payment &raquo;');
				
				}			

			} else {

			if( $(this).attr('checked') ) i++;

			}
		});

		var total;	
		var status = 'No categories selected';
		if( i == 1 ) status = '1 Category Selected';
		if( i > 1 ) status = i + ' Categories Selected';
		
		if( i > max_cats ) { 
			
			extra = 'Extra Categories Selected: ' + ec;
			total = 'Total Chargables:  ' + '$' + charge; 
		}
		
		if ( i <= max_cats) {
			$("#pay_cats").val(i - max_cats);
			$("#selected_categories").html('<p>' + status + '</p>');
			if( $("#plan_price").val() == "0" &&  $("#logo_full").val() == "" ) $("#submit").html('Submit your listing');
			
		
		} else {

		$("#selected_categories").html('<p>' + status + '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;' + extra + '<br><br>' + total + '</p>');

		}
		
		if( $('#free_category').attr('checked') ) {
			var cat_select = $("#free_category_select OPTION:selected").val();
			$("#free_category_select").html('');
			$("#category_picker :checked").each( function() {
				var elm = $(this);
				if( $(elm).val() == cat_select ) {
					$("#free_category_select").append('<option selected="selected" value="' + $(elm).val() + '">' + $(elm).next('A').find('span').text() + '</option>');
				} else {
					$("#free_category_select").append('<option value="' + $(elm).val() + '">' + $(elm).next('A').find('span').text() + '</option>');	
				}
			});
		}

	});
	
	
	
	
	// Handle submit
	$("A[href='#submit']").click( function() {
		//Processing...
		var buttn = $(this).html();
		$(this).html('<img id="submit_status" src="images/green_loader.gif" alt="" /> Processing... ');
		// Check password fields for match
		if( $("#password").val() != $("#confirm_password").val() ) {
			alert('The passwords you entered don\'t match. Use the tabs above to go back.');
			$("#password, #confirm_password").addClass('error');
			$(this).html(buttn);
			return false;
		} else {
			$("#password, #confirm_password").removeClass('error');
		}
		// Check password field for length
		if( $("#password").val().length > 0 && $("#password").val().length < 6 ) {
			alert('The password you entered too short\n\nPasswords need to be at least six characters long.\n\nUse the tabs above to go back.');
			$("#password, #confirm_password").addClass('error');
			$(this).html(buttn);
			return false;
		} else {
			$("#password, #confirm_password").removeClass('error');
		}
		
		// Submit
		$.post('includes/ajax/signup.ajax.php', $("#signup_form").serialize(), function(data) {
			// Show validation errors
			// Required text fields/textareas/dropdowns/etc.
			$("#signup_form .required").not(":checkbox").each( function() {
				if( $(this).val() == '' ) {
					$(this).addClass('error');
				} else {
					$(this).removeClass('error');
				}
			});
			// Required checkboxes
			$("#signup_form :checkbox.required").each( function() {
				if( !$(this).attr('checked') ) {
					$(this).parent().addClass('error');
				} else {
					$(this).parent().removeClass('error');
				}
			});
			// Check email fields for proper format
			if( !validateEmail( $("#email").val() ) ) {
				$("#email").addClass('error');
			} else {
				$("#email").removeClass('error');
			}
			
			
			
			// Handle response
			switch(data) {
				case 'user_already_exists':
					alert('The email address you have entered is already being used on VOB\n\nUse the tabs to go back and use a different email address.');
					$("A[href='#submit']").html(buttn);
				break;
				
				case 'invalid_email':
					alert('The email address you entered in the Contact step is invalid');
					$("A[href='#submit']").html(buttn);
				break;
				
				case 'incomplete':
					alert('One or more required fields are missing or incomplete\n\nPlease use the tabs to go back and review each section again.  Errors have been highlighted.');
					$("A[href='#submit']").html(buttn);
					
				break;
				
				case 'no_categories':
					alert('For your listing to appear in the directory, you need to select at least one category. Click on the Categories tab to go back.');
					$("A[href='#submit']").html(buttn);
				break;
				
				case 'must_agree':
					alert('You must agree to the terms and conditions before submitting your listing');
					$("A[href='#submit']").html(buttn);
				break;
				
				case 'success':
					$.post("includes/php/after_signup.php", $("#signup_form").serialize(), function(data){
						$("#signup_form").remove();
  						$("#success").html(data);
						});
				break;
				
				case 'fail':
				default:
					alert('An error occurred and your listing was not submitted\n\nIf this problem continues, please contact us directly');
					$("A[href='#submit']").html(buttn);
				break;
			}
			
			
		});
		
		return false;
	});
	
	// Handle other type
	$('#type').change( function() {
		if( $(this).val() == "O" ) $('#type_other_container').slideDown('medium'); else $('#type_other_container').slideUp('medium');
	});
	
	// Input masks
	$(":input.phone").mask("(999) 999-9999", { placeholder: ' '});
	$("#postal_code").mask("99999", { placeholder: ' '});
	
	// Handle logo upload
	$("#logo").change( function() {
		// Remove logo status
		$("#logo_status").remove();
		// Verify file extension
		switch( fileExt( $('#logo').val() ).toLowerCase() ) {
			case 'jpeg':
			case 'jpg':
			case 'png':
			case 'gif':
				// Valid image, do nothing
			break;
			default:
				// Invalid image extension
				$("#logo").after('<img id="logo_status" src="includes/styles/images/cross.png" alt="" />');
				return false;
			break;
		}
		// Spinner
		$("#logo").after('<img id="logo_status" src="includes/styles/images/spinner.gif" alt="Loading..." />');
		// Temporarily change the action and cmd
		$("#cmd").val('upload_logo');
		$("#signup_form").attr('action', 'includes/ajax/signup.ajax.php').attr('target', 'logo_uploader').trigger('submit');
		// Change back
		$("#cmd").val('submit');
		$("#signup_form").attr('action', '').attr('target', 'logo_uploader');
		// Handle changeing submit link if logo is not included in plan
		if($("#plan_logo").val() == "0") $("#submit").html('Continue to payment &raquo;');
		
	});
	
	// More logo stuff...
	$("#logo_uploader").load( function() {
		$("#logo_status").remove();
		$("#signup_form").attr('target', '');
		//data = window.frames['logo_uploader'].document.body.innerHTML;
		data = $('#logo_uploader').contents().find('P').html();
		if( data == "" ) {
			// Do nothing (triggered by inital page load)
		} else if( data == '' ) {
			$("#logo").after('<img id="logo_status" src="includes/styles/images/cross.png" alt="" />');
		} else {
			data = data.split('|');
			var rand = Math.floor(Math.random() * 99999); // random number used to prevent caching
			$("#logo_preview").html('<img src="' + data[0] + '?nocache=' + rand + '" alt="Preview" />');
			$("#logo").after('<img id="logo_status" src="includes/styles/images/tick.png" alt="" />');
			$("#logo_thumb").val(data[0]);
			$("#logo_full").val(data[1]);
			// Show cancel button
			$("#cancel_logo").removeClass('hidden');
		}
	});
	
	//Add generic logo when branch is selected and logo is included in plan
	$("#service_branch").change( function() {
		if( $("#plan_logo").val() == '1' ) {
			var rand = Math.floor(Math.random() * 99999); // random number used to prevent caching
			var branch = $("#service_branch").val();
			$("#logo_preview").html('<img src="images/branch_logos/' + branch + '_thumb.png" alt="Preview" />');
			$("#logo_thumb").val('images/branch_logos/' + branch + '_thumb.png');
			$("#logo_full").val('images/branch_logos/' + branch + '_logo.png');
		}
	});
	
	//Remove logo after upload
	$("#cancel_logo").click( function() {
		$("#logo_status").remove();
		$("#logo").val('');
		$("#cancel_logo").addClass('hidden');
		$("#logo_preview").html('');
		$("#logo_thumb").val('');
		$("#logo_full").val('');
		if($("#plan_logo").val() == "0" && $("#pay_cats").val() <= 0 ) $("#submit").html('Submit your listing');
		
	});
	//###################################################
	// Handle Special Offer image upload
	$("#special_offer_image").livequery('change', function() {
		// Remove image status
		$("#image_status").remove();
		// Verify file extension
		switch( fileExt( $('#special_offer_image').val() ).toLowerCase() ) {
			case 'jpeg':
			case 'jpg':
			case 'png':
			case 'gif':
				// Valid image, do nothing
			break;
			default:
				// Invalid image extension
				$("#special_offer_image").after('<img id="image_status" src="includes/styles/images/cross.png" alt="" />');
				return false;
			break;
		}
		// Spinner
		$("#special_offer_image").after('<img id="image_status" src="includes/styles/images/spinner.gif" alt="Loading..." />');
		// Temporarily change the action and cmd
		$("#cmd").val('upload_special_offer_image');
		$("#signup_form").attr('action', 'includes/ajax/signup.ajax.php').attr('target', 'special_offer_uploader').trigger('submit');
		// Change back
		$("#cmd").val('submit');
		$("#signup_form").attr('action', '').attr('target', '');
		
	});
	
	// More so image stuff...
	$("#special_offer_uploader").livequery('load', function() {
		$("#image_status").remove();
		$("#signup_form").attr('target', '');
		//data = window.frames['special_offer_uploader'].document.body.innerHTML;
		data = $('#special_offer_uploader').contents().find('P').html();
		if( data == null ) {
			// Do nothing (triggered by inital page load)
		} else if( data == '' ) {
			$("#special_offer_image").after('<img id="image_status" src="includes/styles/images/cross.png" alt="" />');
		} else {
			var rand = Math.floor(Math.random() * 99999); // random number used to prevent caching
			$("#special_offer_preview_image").html('<img src="http://www.veteranownedbusiness.com/' + data + '?nocache=' + rand + '" alt="Preview" />').removeClass('hidden');
			$("#special_offer_image").after('<img id="image_status" src="includes/styles/images/tick.png" alt="" />');
			$("#special_offer_image_hold").val(data);
			// Show cancel button
			$("#cancel_image").removeClass('hidden');
		}
	});
	
	
	//Remove so image after upload
	$("#cancel_image").livequery('click', function() {
		$("#image_status").remove();
		$("#special_offer_image").val('');
		$("#cancel_image").addClass('hidden');
		$("#special_offer_preview_image").html('');
		$("#special_offer_image_hold").val('');
		$("#special_offer_uploader").attr('src', '');
		
	});
	
	$('.test_change').livequery('click', function() {
			$.post('signup_plans.php', { cmd: 'test_change', count: $(this).attr('rel') }, function(data) {
			$('#signup_testimonial').html(data);
			}); //End POST
			return false;
		}); //End .tect_change CLICK
});

	
