	/*
		epochEdit
		------------------------------------------------------------------------------------------------------*/
		function epochEdit(event){
			var $field					= $(this).parent();
										
			var $field_form 			= $field.parent().parent().attr('id');
			var $field_label			= $field.children('label').text();
			var $field_type				= $field.children(':input').attr('type');
			var $field_name				= $field.children(':input').attr('name');
			var $field_value			= $field.children(':input').val();
		
			$('#page_overlay').fade_in();
			$('#form_overlay').load(
				'/includes/form/form_input.inc.php',
				{
					form				: $field_form, 
					label				: $field_label, 
					type				: $field_type, 
					name				: $field_name, 
					value				: $field_value 
				},
				function(event){
				    $('a[action=cancel]').click(function(event){  
				    	$('#page_overlay').fade_out();
				    	$('#form_overlay').fade_out();
				    	
				    	return false;
				    });
				
				    $('a[action=confirm]').click(function(event){
				    	$('form#'+$(this).attr('form_id')+' [name='+$('form#form_input :input').attr('name')+']').val($('form#form_input :input').val());
				    	$('#page_overlay').fade_out();
				    	$('#form_overlay').fade_out();
				    	
				    	return false;
				    });
				    
				    $('#form_overlay').fade_in();
				}
			);
			
			return false;	
		}

	/*
		epochAlert
		------------------------------------------------------------------------------------------------------*/
		function epochAlert(alert_name,alert,owner_id,dog_id){
			if($('#alert_overlay').is(':hidden')){
				$('#page_overlay').fade_in();
				$('#alert_overlay h5').html(alert_name);
				$('#alert_overlay p').html(alert);
				$('#alert_overlay').fade_in();
			} else {
				if($('#client_overlay').length == 0){
					$('#page_overlay').fade_out();
				}
				$('#alert_overlay').fade_out();
			}
			
			if(owner_id){ $('#alert_overlay div').attr('owner_id',owner_id); }
			if(dog_id){ $('#alert_overlay div').attr('dog_id',dog_id); }
			
			return false;
		}
	
	
	
	/*
    	Submit Date
    	------------------------------------------------------------------------------------------------------*/
    	function submit_date(date){ 
    	    var $birth_date       	= date;
    	    
    	    if($birth_date != '' && $birth_date.match(/^\d\d['/']\d\d['/']\d{4}$/)){
    	        $birth_date       	= $birth_date.split('/');
    	        $birth_date       	= $birth_date[2] +'-'+ $birth_date[0] +'-'+ $birth_date[1];
		
    	        return $birth_date;
    	    }
    	}

	/*
    	Coerce Date
    	------------------------------------------------------------------------------------------------------*/
    	function coerce_date(date){            
    	    var $input_date     	= new Date(date);
    	    var $input_days     	= Math.floor($input_date.getTime() / 86400000);
    	    $input_days < 0     	? $input_days += 36525 : '';
		
    	    var $coerced_date   	= new Date($input_days*1000*24*3600 + 12*3600*1000);
    	    						
    	    var $current_year   	= $coerced_date.getFullYear();
    	    var $current_month  	= $coerced_date.getMonth()+1;
    	    var $current_day    	= $coerced_date.getDate();
    	    						
    	    $current_month < 10 	? $current_month= '0'+$current_month: '';
    	    $current_day < 10   	? $current_day  = '0'+$current_day  : '';
    	        					
    	    $coerced_date       	= $current_month + '/' + $current_day + '/' + $current_year;

    	    return $coerced_date;
    	}



	/*
    	Test Fields
    	-------------------------------------------------------------------------------*/
    	function test_fields(event){
    		var $override			= event.data.override;
    	
    	    var $field  			= $(this).attr('name');
    	    var $value  			= $('[name='+$field+']').val();
    	    
    	    if($('[name='+$field+']').siblings('label').attr('type') == 'required'){
    	        if($field == 'email'){
    	            if(!/.+@.+\.[a-zA-Z]{2,4}$/.test($value)){
    	            	$('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	            	$override == '1' ? '' : epochAlert('Invalid Email Address','Please enter a valid email address.');
    	            } else {
    	            	$('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	            }
    	        } else if($field == 'zip_code'){ 
    	            if($value.length == 6 || $value.length == 7){
    	                $('[name='+$field+']').val($value.replace(/ /g,''));
    	                if(!/^[0-9a-zA-Z]+$/.test($('[name='+$field+']').val())){
    	                	$('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                	$override == '1' ? '' : epochAlert('Invalid Zip Code','Please enter a valid zip code.');
    	                } else {
    	                	$('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	                }
    	            } else if($value.length == 5){
    	                if(!/^[0-9]+$/.test($value)){
    	                	$('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                	$override == '1' ? '' : epochAlert('Invalid Zip Code','Please enter a valid zip code.');
    	                } else {
    	                	$('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	                }
    	            } else if($value.length == 10){
    	                var pass_zip= '0123456789-';
    	                var hyphens = 0;
    	                
    	                for(var i=0; i<$value.length; i++){
    	                	ext_zip = '' + $value.substring(i,i+1);
    	                	if(ext_zip == '-') hyphens++;
    	                	if(pass_zip.indexOf(ext_zip) == '-1'){ 
    	                		$('[name='+$field+']').parent().removeClass('pass').addClass('fail'); 
    	                		$override == '1' ? '' : epochAlert('Invalid Zip Code','Please enter a valid zip code.');
    	                	}
    	                	if((hyphens > 1) || (($value.length == 10) && ''+$value.charAt(5) != '-')){ 
    	                		$('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                		$override == '1' ? '' : epochAlert('Invalid Zip Code','Please enter a valid zip code.');
    	                	} else {
    	                		$('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	                	}
    	                }
    	            } else { 
    	            	$('[name='+$field+']').parent().removeClass('pass').addClass('fail'); 
    	            	$override == '1' ? '' : epochAlert('Invalid Zip Code','Please enter a valid zip code.');
    	            }
		
    	        } else if($field == 'username'){
    	            $.post(
    	                '/includes/functions/registration.inc.php?function=check_username',
    	                { username:$value },
    	                function(data){
    	                    if(data == 'pass'){
    	                        $('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	                    } else {
    	                        $('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                        $override == '1' ? '' : epochAlert('Invalid Username','Sorry, this username is already taken.');
    	                    }
    	                }
    	            );
    	        } else if($field == 'password_confirm'){
    	            if($('[name='+$field+']').val() == $('[name=password]').val() && $('[name='+$field+']').val() != ''){
    	                $('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	            } else {
    	                $('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                $override == '1' ? '' : epochAlert('Invalid Confirmation','Your passwords must match.');
    	            }
    	      	} else if($field == 'birth_date' || $field == 'registration_date'){
    	      		if($value != '' && $value.match(/^\d\d['/']\d\d['/']\d{4}$/)){  
    	      			$('[name='+$field+']').val(coerce_date($value));      
    	      			$('[name='+$field+']').parent().removeClass('fail').addClass('pass');
        			} else {
        			    $('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                $override == '1' ? '' : epochAlert('Invalid Date','Enter a valid date.<br/><b>Example</b>: April 5, 2004 = 04/05/2004');
        			}

    	        } else if($field == 'agree'){
    	            if($('[name='+$field+']').is(':checked')){
    	                $('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	            } else {
    	                $('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	                $override == '1' ? '' : epochAlert('Agreement Error','You must agree to our terms of service.');
    	            }
    	        } else {
    	            if($value == ''){
    	            	$('[name='+$field+']').parent().removeClass('pass').addClass('fail');
    	            	//$override == '1' ? '' : epochAlert('Invalid Entry','This entry is required.');
    	            } else {
    	            	$('[name='+$field+']').parent().removeClass('fail').addClass('pass');
    	            }
    	        }
    	    }
    	}
    
    
    
    
		
	/*
		Add Owner Information
		------------------------------------------------------------------------------------------------------*/
		function add_owner_information(event){
			$('blockquote[type=owner_information] input,select,textarea').bind('blur',{override:'1'},test_fields).blur();
			
			if($('blockquote[type=owner_information] p.fail').length > 0){
        	    epochAlert('Form Incomplete','Please fulfill all required fields.');
				$('form#registration blockquote[type=owner_information] input,select,textarea').bind('blur',{override:'0'},test_fields);
        	} else {
				$.post(
					'/includes/form/owner.inc.php?type=add',
					{
						id						: 0,
						username				: $('[name=username]').val(),
						password				: $('[name=password]').val(),
						password_confirm		: $('[name=password_confirm]').val(),
						first_name				: $('[name=first_name]').val(),
						last_name				: $('[name=last_name]').val(),
						address					: $('[name=address]').val(),
						address_details			: $('[name=address_details]').val(),
						city					: $('[name=city]').val(),
						state					: $('[name=state]').val(),
						zip_code				: $('[name=zip_code]').val(),
						phone_day				: $('[name=phone_day]').val(),
						phone_night				: $('[name=phone_night]').val(),
						email					: $('[name=email]').val(),
						marketing				: $('[name=marketing]').val(),
						general_information		: $('[name=general_information]').val()
					},
					function(data){
						epochAlert('Owner Information','Owner Information Saved.',data);
						$('blockquote[type=dog_information] ol').slideDown();
						update_owner();
					}
				);
			}
			
			return false;
		}
			
	/*
		Update Owner Information
		------------------------------------------------------------------------------------------------------*/
		function update_owner_information(event){	
			$('blockquote[type=owner_information] input,select,textarea').bind('blur',{override:'1'},test_fields).blur();
			
			if($('blockquote[type=owner_information] p.fail').length > 0){
        	    epochAlert('Form Incomplete','Please fulfill all required fields.');
				$('form#registration blockquote[type=owner_information] input,select,textarea').bind('blur',{override:'0'},test_fields);
        	} else {		
				$.post(
					'/includes/form/owner.inc.php?type=update',
					{
						id						: $('a[href="/includes/form/owner.inc.php?type=update"]').attr('owner_id').replace('owner_',''),
						first_name				: $('[name=first_name]').val(),
						last_name				: $('[name=last_name]').val(),
						address					: $('[name=address]').val(),
						address_details			: $('[name=address_details]').val(),
						city					: $('[name=city]').val(),
						state					: $('[name=state]').val(),
						zip_code				: $('[name=zip_code]').val(),
						phone_day				: $('[name=phone_day]').val(),
						phone_night				: $('[name=phone_night]').val(),
						email					: $('[name=email]').val(),
						marketing				: $('[name=marketing]').val(),
						general_information		: $('[name=general_information]').val()	
					},
					function(data){
						epochAlert('Owner Information','Owner Information Saved.',data);
						update_owner();
					}
				);
			}
			
			return false;
		}
		
		
		
	/*
		Toggle Dogs
		------------------------------------------------------------------------------------------------------*/
		function toggle_dogs(event){
			$('#alert_overlay div').attr('dog_id',$(this).val());
		
			$('blockquote[type=dog_information]').load('/includes/owner/dog_information.inc.php?dog_id='+$(this).val(),null,set_dog_information);
			
			if($('#alert_overlay div').attr('dog_id') != 0){
				$('blockquote[type=registration_information] ol').slideDown();
			} else {
				$('blockquote[type=registration_information] ol').slideUp();
			}
		}
		
	/*
		Add Dog Information
		------------------------------------------------------------------------------------------------------*/
		function add_dog_information(event){
			$('blockquote[type=dog_information] input,select,textarea').bind('blur',{override:'1'},test_fields).blur();
			
			if($('blockquote[type=dog_information] p.fail').length > 0){
        	    epochAlert('Form Incomplete','Please fulfill all required fields.');
				$('form#registration blockquote[type=dog_information] input,select,textarea').bind('blur',{override:'0'},test_fields);
        	} else {
				$.post(
					'/includes/form/dog.inc.php?type=add',
					{
						id						: 0,
						name					: $('[name=name]').val(),
						breed					: $('[name=breed]').val(),
						birth_date				: submit_date($('[name=birth_date]').val()),
						gender					: $('[name=gender]').val(),
						fixed					: $('[name=fixed]').val(),
						fixed_plan				: $('[name=fixed_plan]').val(),
						veterinarian			: $('[name=veterinarian]').val(),
						vaccination_information	: $('[name=vaccination_information]').val(),
						issue_information		: $('[name=issue_information]').val()
					},
					function(data){
						epochAlert('Dog Information','Dog Information Saved.','',data);
						$('blockquote[type=registration_information] ol').slideDown();
						update_owner();
					}
				);
			}
			
			return false;
		}
			
	/*
		Update Dog Information
		------------------------------------------------------------------------------------------------------*/
		function update_dog_information(event){	
			$('blockquote[type=dog_information] input,select,textarea').bind('blur',{override:'1'},test_fields).blur();
			
			if($('blockquote[type=dog_information] p.fail').length > 0){
        	    epochAlert('Form Incomplete','Please fulfill all required fields.');
				$('form#registration blockquote[type=dog_information] input,select,textarea').bind('blur',{override:'0'},test_fields);
        	} else {		
				$.post(
					'/includes/form/dog.inc.php?type=update',
					{
						id						: $('a[href="/includes/form/dog.inc.php?type=update"]').attr('dog_id').replace('dog_',''),
						name					: $('[name=name]').val(),
						breed					: $('[name=breed]').val(),
						birth_date				: submit_date($('[name=birth_date]').val()),
						gender					: $('[name=gender]').val(),
						fixed					: $('[name=fixed]').val(),
						fixed_plan				: $('[name=fixed_plan]').val(),
						veterinarian			: $('[name=veterinarian]').val(),
						vaccination_information	: $('[name=vaccination_information]').val(),
						issue_information		: $('[name=issue_information]').val()
					},
					function(data){
						epochAlert('Dog Information','Dog Information Saved.','',data);
						update_owner();
					}
				);
			}
			
			return false;
		}
		
		
		
	/*
		Submit Registration
		------------------------------------------------------------------------------------------------------*/
		function submit_registration(event){	
			$('form#registration input,select,textarea').bind('blur',{override:'1'},test_fields).blur();
			
			if($('form#registration p.fail').length > 0){
        	    epochAlert('Registration Incomplete','Please fulfill all required fields.');
				$('form#registration input,select,textarea').bind('blur',{override:'0'},test_fields);
        	} else {		
				var $type						= $('blockquote[type=registration_information]').attr('registration');
			
				$.post(
					'/includes/form/registration.inc.php?type='+$type,
					{
						id						: 0,
						dog_id					: $('a[href="/includes/form/dog.inc.php?type=update"]').attr('dog_id').replace('dog_',''),
						owner_id				: $('a[href="/includes/form/owner.inc.php?type=update"]').attr('owner_id').replace('owner_',''),
						name					: $('form#registration [name=registration_name]').val(),
			    		type					: $('form#registration [name=registration_type]').val(),
			    		date					: submit_date($('form#registration [name=registration_date]').val()),
			    		info					: $('form#registration [name=registration_info]').val()
					},
					function(data){
						if(data != 'fail'){
							epochAlert('Registration Information','<b>Registration Complete</b>.<br/>Please mail your $30.00 non-refundable deposit:<br/>The Dog School<br/>55 Leroy Road, #15<br/>Williston, VT 05495.');
							$('#alert_overlay a[href="#alert_overlay"]').bind('click',finalize_registration);
						} else {
							epochAlert('Registration Information','Registration Failed. Please re-submit.');
							update_owner();
						}
						
					}
				);
			}
			
			return false;
		}


	/*
		Finalize Registration
		------------------------------------------------------------------------------------------------------*/
		function finalize_registration(event){	
			$('blockquote[type=registration_information]').attr('registration') == 'service' ? location.href = '/services/' : location.href = '/classes/';
		}


/*
    Initialize Actions
    -------------------------------------------------------------------------------*/
	$(document).ready(function(event){
		$('form#registration input,select,textarea').live('blur',{override:'0'},test_fields);
		$('form#registration fieldset p cite').live('click',epochEdit);
		$('#alert_overlay a[href="#alert_overlay"]').live('click',epochAlert);
		
		$('a[href="/includes/form/owner.inc.php?type=add"]').bind('click',add_owner_information);
		$('a[href="/includes/form/owner.inc.php?type=update"]').bind('click',update_owner_information);
		
		$('select[name=dog]').bind('change',toggle_dogs);
		
		$('a[href="/includes/form/dog.inc.php?type=add"]').bind('click',add_dog_information);
		$('a[href="/includes/form/dog.inc.php?type=update"]').bind('click',update_dog_information);
		
		$('a[href="/includes/form/registration.inc.php"]').bind('click',submit_registration);
	});
