     var weaver = {
    // validation methods
    validation : {
        clear : function(container)
        {
            weaver.errors = 0;
            container.find('.error').remove();
        },
        check : function(field, rule, message)
        {
            if (rule(field) === false)
            {
                //field.after('<span class="error">' + message + '</span>')
                alert(message);
                field.focus();
                weaver.errors++;
            }
        },
        required : function(field)
        {
            return !! $(field).val();
        },
        email : function(field)
        {
            return /^[A-Z0-9._%+\-]+@[A-Z0-9.\-]+\.[A-Z]{2,6}$/i.test($(field).val());
        }  

    }
}



function clearForm(form) {
  // iterate over all of the inputs for the form
  // element that was passed in
  $(':input', form).each(function() {
 var type = this.type;
 var tag = this.tagName.toLowerCase(); // normalize case
 // it's ok to reset the value attr of text inputs,
 // password inputs, and textareas
 if (type == 'text' || type == 'password' || tag == 'textarea')
   this.value = "";
 // checkboxes and radios need to have their checked state cleared
 // but should *not* have their 'value' changed
 else if (type == 'checkbox' || type == 'radio')
   this.checked = false;
 // select elements need to have their 'selectedIndex' property set to -1
 // (this works for both single and multiple select elements)
 else if (tag == 'select')
   this.selectedIndex = -1;
  });
};



