/*
/////////////////////////////////////////////////
//
// In order to show translated error messages,
// include the following block of Javascript code
// *before* this jQuery validation script is
// inlcuded.
//
// Note:
// Only the text on the right side of each "="
// should be translated.
//
/////////////////////////////////////////////////
<script type="text/javascript">
	var translations = new Array();
	translations['You must enter a value for'] = 'You must enter a value for';
	translations['You must select a value for'] = 'You must select a value for';
	translations['The following errors need to be fixed'] = 'The following errors need to be fixed';
	translations['Are you sure you want to clear this form?'] = 'Are you sure you want to clear this form?';
</script>
*/

// simple translation function
function t(textIn) {
  try {
  	textOut = translations[textIn];
  }
  catch (err) {
   	textOut = textIn;
  }
  return textOut;
} // end t()



(function($) {

  $.fn.initValidation = function() {

    return this.each(function() {
      var $form = $(this);
      var $required = $('.js_required',$form);

      $form.bind('submit',function(e) {
        var error = '';

        $required.each(function() {
          var $field = $(this);

          if ($field.is('textarea') || ($field.attr('type') == 'text')) {
            var value = $field.val();
            var $label = $field.prev('label');
            if (value == "") {
              var field_label = $label.text().replace('* ','').replace(':','');
              error = error + "\t"+t('You must enter a value for')+": " + field_label + "\n";
              $label.addClass('js_error');
              $field.addClass('js_error');
            } else {
              $label.removeClass('js_error');
              $field.removeClass('js_error');
            }
          } else if ($field.is('select')) {
            var value = $('option:selected',$field).val();
            var $label = $field.prev('label');
            if (value == "") {
              var field_label = $label.text().replace('* ','').replace(':','');
              error = error + "\t"+t('You must select a value for')+": " + field_label + "\n";
              $label.addClass('js_error');
              $field.addClass('js_error');
            } else {
              $label.removeClass('js_error');
              $field.removeClass('js_error');
            }
          } else if (($field.attr('type') == 'checkbox') || ($field.attr('type') == 'radio')) {
            if (! $field.attr('checked')) {
              var $siblings = $field.siblings('input');
              var checked = false;
              $siblings.each(function() { if ($(this).attr('checked')) { checked = true; } });
              if (! checked) {
                var $label = $field.parent().parent().find('label').eq(0);
                var field_label = $label.text().replace('* ','').replace(':','');
                error = error + "\t"+t('You must enter a value for')+": " + field_label + "\n";
                $label.addClass('js_error');
              }
              else { $label.removeClass('js_error'); }
            }
          }
        });

        if (error != '') {
					e.preventDefault();
					alert(t('The following errors need to be fixed')+":\n" + error);
					return false;
				} else { return true; }

      });

      $form.bind('reset',function() {
        if (confirm(t('Are you sure you want to clear this form?'))){
          $('input, label',$form).removeClass('js_error');
          return true;
        } else { return false; }
      });

    });
  }

})(jQuery);

