$(function(){

	window._FH = new FormErrorsHandler;  
  
      $("#join").validate({
    	  errorPlacement: function(error, element) {
		          if ( element.context.type == "checkbox" )
		                error.appendTo ( element.parent().parent() );
		          else
		                error.appendTo( element.parent() );
		    },
            rules: {
                  username: {
                        required: true
                  },
                  password: {
                        required: true
                  },
                  password_check: {
                        required: true,
                        equalTo: '#join_password'
                  },
                  email: {
                        required: true,
                        email: true
                  },
                  email_check: {
                        required: true,
                        equalTo: '#join_email'
                  },
                  accept: {
                      required: true
                  },
                  answer: {
                        required: function() {
                              return ($('#join_question').val() > 0);
                        }
                  },
                  code: {
                        required: true 
                  } 
            }      
      });
      if (document.getElementById('join'))
      {
      	_FH.define({
    		scheme:		'join',
    		meta:		{
      			siteID:	'DPG',
      			formID:	'JOIN'
      		},
    		callback:	'window._FH_S'
    	});
    	document.getElementById('join').onsubmit = function()
    	{
    		$('#join').validate().form();
    		var errors = $.map($('label.error:visible', this), function(item){
    			return item.innerHTML;
    		});
    		return _FH.feed(errors);
    	}
    	window._FH_S = function()
    	{
    		if ($('#join').valid())
    		{
    			document.getElementById('join').submit();
    		}
    	}
      }
  	
  		
      $("#add_question").validate({
            onfocusout: false,
            onkeyup: false,
            rules: {
                  title: {
                        required: true
                  }
            }        
      });

      $("#add_quick_question").validate({
            errorPlacement: function(error, element) {
                  if ( element.is(":checkbox") )
                        error.appendTo ( element.parent().next().parent() );
                  else
                        error.appendTo( element.parent() );
            },
            onfocusout: false,
            onkeyup: false,
            rules: {
                  title: {
                        required: true
                  },
                  diamondprice: {
                        required: true
                  },
                  author_email: {
                        required: true,
                        email: true
                  }
            }
      });
  
      $("#select_category").validate({
          rules: {
                'categories[]': {
                      required: true
                }
          }      
      });



      $("#ask_question_top").submit(function(e){
            if ($(this).find('input')[0].defaultValue != $(this).find('input').val())
            {
                  return true;
            }
		$(this).find('input').val('');
            return true;
      });
 
      
      jQuery.validator.addMethod(   
    	   "contact_us_subject_select",   
    	   function(value, element) {   
	    	   if (element.value == 0)   
	    	   {   
	    		   return false;   
	    	   }   
	    	   else
	    	   {
	    		   return true;   
	    	   }
    	   },   
    	   "Please select an option."  
    	 );   

      
      /**
       * CONTACT US
       * ----------
       */
      $("#contact_us").validate({
            onfocusout: false,
            onkeyup: false,
            rules: {
                  name: {
                        required: true
                  },
                  code: {
                        required: true 
                  },
                  email: {
                        email:true,
                        required: true 
                  },
                  message: {
                      required: true 
                  },
                  subject: {
                	  contact_us_subject_select: true 
                  }
            }
      });
      if (document.getElementById('contact_us'))
      {
    	_FH.define({
    		scheme:		'contact_us',
    		meta:		{
      			siteID:	'DPG',
      			formID:	'CONTACT_US'
      		},
    		callback:	'window._FH_S'
    	});
    	document.getElementById('contact_us').onsubmit = function()
    	{
    		$('#contact_us').validate().form();
    		var errors = $.map($('label.error:visible', this), function(item){
    			return item.innerHTML;
    		});
    		return _FH.feed(errors);
    	}
    	window._FH_S = function()
    	{
    		if ($('#contact_us').valid())
    		{
    			document.getElementById('contact_us').submit();
    		}
    	}
      }
      
      
      /**
       * ADVERTISE
       * ----------
       */
      $("#advertise").validate({
          onfocusout: false,
          onkeyup: false,
          rules: {
                name: {
                      required: true
                },
                message: {
                      required: true 
                },
                code: {
                    required: true
                },
                email: {
                      email:true, 
                      required: true
                }
          }
    });
      if (document.getElementById('advertise'))
      {
    	_FH.define({
    		scheme:		'advertise',
    		meta:		{
      			siteID:	'DPG',
      			formID:	'ADVERTISE'
      		},
    		callback:	'window._FH_S'
    	});
    	document.getElementById('advertise').onsubmit = function()
    	{
    		$('#advertise').validate().form();
    		var errors = $.map($('label.error:visible', this), function(item){
    			return item.innerHTML;
    		});
    		return _FH.feed(errors);
    	}
    	window._FH_S = function()
    	{
    		if ($('#advertise').valid())
    		{
    			document.getElementById('advertise').submit();
    		}
    	}
      }

      
      
      
      $("#blog_comment").validate({
          onfocusout: false,
          onkeyup: false,
          rules: {
                author_name: {
                      required: true
                },
                content: {
                      required: true
                },
                author_email: {
                      email:true,
                      required: true
                }
          }
    });

      
      
      $('#newsletter_subscribe').live("submit", newsletter_submit);
      
       $('#newsletter_subscribe input[type="submit"]').live("click", newsletter_submit);     
      
      $('#login .login-button').live("click", function(e) {
             e.preventDefault();
             if ($('#login_username').val() == '' || $('#login_password').val() == '')
             {
                  $('#login .js_errors').html('<label class="error">Please fill in username and password</label>');
             }
             else
             {
                  $('#login .errors').empty();
                  submit_login();
             }
             return false;
      });


      $('#add_store_review').validate({
            onfocusout: false,
            onkeyup: false,
            rules: {
                  title: {required: true, maxlength:100}
            }
      })

      $('#store_rating').validate({
            onfocusout: false,
            onkeyup: false,
            rules: {
                  customer_service_rating: {required: true},
                  ontime_delivery_rating: {required: true}  
            }
      })      
      
       $('#store_rating').submit(function(e) {
            e.preventDefault();
            var error_overall_rating = '';
            var error_will_shop_again = '';
           
            if (!$('input[name="overall_rating"]').is(':checked')) {
            	error_overall_rating = error_overall_rating + '<label class="error">Please rate merchant</label>';
            };
            if (!$('input[name="will_shop_again"]').is(':checked')) {
            	error_will_shop_again = error_will_shop_again + '<label class="error">Please check "will you shop again" selection</label>';
            };
            if ((error_overall_rating != '') || (error_will_shop_again != ''))
            {
            	$('#error_overall_rating').html(error_overall_rating);
            	$('#error_will_shop_again').html(error_will_shop_again);
            }
            else if( ($('#store_rating_customer_service_rating')[0].selectedIndex != 0) && ($('#store_rating_ontime_delivery_rating')[0].selectedIndex != 0) )
            {     
                  $('#store_rating')[0].submit();
            }
      });
      
      
      $('#store_review_login_form').validate({
            onfocusout: false,
            onkeyup: false,
            rules: {
                  username: {required: true},
                  password: {required: true}
            }
      })      
 
      $('#store_review_register_form').validate({
            onfocusout: false,
            onkeyup: false,
            errorPlacement: function(error, element) {
  	          if ( element.context.type == "checkbox" )
  	                error.appendTo ( element.parent().parent() );
  	          else
  	                error.appendTo( element.parent() );
  	    	},
            rules: {
                  email: {required: true, email:true},
                  password: {required: true},
                  password_retype: {required: true},
                  username: {required: true},
                  accept: {required: true}
            }
      })   
      
      $('#add_answer').validate({
          onfocusout: false,
          onkeyup: false,
          rules: {
                content: {required: true}
          }
    }) 
    
    $('#register_answer_new').validate({
        onfocusout: false,
        onkeyup: false,
        errorPlacement: function(error, element) {
	          if ( element.context.type == "checkbox" )
	                error.appendTo ( element.parent().parent() );
	          else
	                error.appendTo( element.parent() );
	    },
        rules: {
		    	email: {required: true, email:true},
		        password: {required: true},
		        accept: {
	                required: true
	            },
		        username: {required: true},
                        first_name: {required: true},
                        last_name: {required: true}
        }
    }) 
  
   	$('#register_answer_existing').validate({
        onfocusout: false,
        onkeyup: false,
        rules: {
   				username: {required: true},
		        password: {required: true}
        }
   	}) 
   	
    $('#register_question_new').validate({
        onfocusout: false,
        onkeyup: false,
        errorPlacement: function(error, element) {
	          if ( element.context.type == "checkbox" )
	                error.appendTo ( element.parent().parent() );
	          else
	                error.appendTo( element.parent() );
	    },
        rules: {
		    	email: {required: true, email:true},
		        password: {required: true},
		        accept: {
	                required: true
	            },
		        username: {required: true}
        }
    }) 
  
   	$('#register_question_existing').validate({
        onfocusout: false,
        onkeyup: false,
        rules: {
   				username: {required: true},
		        password: {required: true}
        }
   	})
      
   	$('#select_categories').validate({
        onfocusout: false,
        onkeyup: false,
        rules: { 'categories[]': {required: false}}
   	}) 

   	$('#article_talkback_form').validate({
            onfocusout: false,
            onkeyup: false,
            rules: {
                  author_name: {required: true},
                  content: {required: true},
                  code: {required: true}
            }
   	}) 

});


      
      function submit_login()
      {
            $.post('/main/process_login', { username:$('#login_username').val(), password:$('#login_password').val() },function(data) {
                  if (data == '')
                  {
                        window.location='/';
                  }
                  else
                  {
                        $('.login-pannel').html(data);
                  }
            });              
      }
      
      function newsletter_subscribe()
      {
            $.post('/main/newsletter_subscribe', { email:$('#newsletter_subscribe_email').val() },function(data) {
                  $('.newsletter-box').html(data);
            });            
      }
      

      
      function newsletter_submit()
      {
            var email_filter = /^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$/;
            var email = $('#newsletter_subscribe_email').val();
            if ( !(email_filter.test(email)) )
            {
                  $('.newsletter-box .invalid_email').html('<label class="error">Error: invalid email address</label>');
            }
            else
            {
                  $('.newsletter-box .invalid_email').empty();
                  newsletter_subscribe();
            }
            return false;            
      }