diff --git a/lib/form/file.php b/lib/form/file.php
index b25842b..db59ee8 100644
--- a/lib/form/file.php
+++ b/lib/form/file.php
@@ -54,6 +54,7 @@ class MoodleQuickForm_file extends HTML_QuickForm_file{
         if ($event == 'createElement') {
             $className = get_class($this);
             $this->$className($arg[0], $arg[1].' ('.get_string('maxsize', '', display_size($caller->getMaxFileSize())).')', $arg[2]);
+            $this->_formid = $caller->getAttribute('id');
             return true;
         }
         return parent::onQuickFormEvent($event, $arg, $caller);
diff --git a/lib/formslib.php b/lib/formslib.php
index b12392b..e1b0665 100644
--- a/lib/formslib.php
+++ b/lib/formslib.php
@@ -1024,7 +1024,7 @@ class MoodleQuickForm extends HTML_QuickForm_DHTMLRulesTableless {
     {
         parent::addRule($element, $message, $type, $format, $validation, $reset, $force);
         if ($validation == 'client') {
-            $this->updateAttributes(array('onsubmit' => 'try { var myValidator = validate_' . $this->_formName . '; } catch(e) { return true; } return myValidator(this);'));
+            $this->updateAttributes(array('onsubmit' => 'try { var myValidator = validate_' . $this->_formName.'_'.$this->_attributes['id'].'; } catch(e) { return true; } return myValidator(this);'));
         }
 
     } // end func addRule
@@ -1203,7 +1203,7 @@ function qf_errorHandler(element, _qfMsg) {
             list($jsArr,$element)=$jsandelement;
             //end of fix
             $js .= '
-function validate_' . $this->_formName . '_' . $elementName . '(element) {
+function validate_' . $this->_formName . '_' . $elementName . '_' . $this->_attributes['id'] .'(element) {
   var value = \'\';
   var errFlag = new Array();
   var _qfGroups = {};
@@ -1217,7 +1217,7 @@ function validate_' . $this->_formName . '_' . $elementName . '(element) {
 }
 ';
             $validateJS .= '
-  ret = validate_' . $this->_formName . '_' . $elementName.'(frm.elements[\''.$elementName.'\']) && ret;
+  ret = validate_' . $this->_formName . '_' . $elementName.'_'.$this->_attributes['id'].'(frm.elements[\''.$elementName.'\']) && ret;
   if (!ret && !first_focus) {
     first_focus = true;
     frm.elements[\''.$elementName.'\'].focus();
@@ -1228,7 +1228,7 @@ function validate_' . $this->_formName . '_' . $elementName . '(element) {
             //unset($element);
             //$element =& $this->getElement($elementName);
             //end of fix
-            $valFunc = 'validate_' . $this->_formName . '_' . $elementName . '(this)';
+            $valFunc = 'validate_' . $this->_formName . '_' . $elementName .'_'.$this->_attributes['id']. '(this)';
             $onBlur = $element->getAttribute('onBlur');
             $onChange = $element->getAttribute('onChange');
             $element->updateAttributes(array('onBlur' => $onBlur . $valFunc,
@@ -1236,7 +1236,7 @@ function validate_' . $this->_formName . '_' . $elementName . '(element) {
         }
 //  do not rely on frm function parameter, because htmlarea breaks it when overloading the onsubmit method
         $js .= '
-function validate_' . $this->_formName . '(frm) {
+function validate_' . $this->_formName.'_'.$this->_attributes['id'].'(frm) {
   if (skipClientValidation) {
      return true;
   }
@@ -1614,10 +1614,11 @@ class MoodleQuickForm_Renderer extends HTML_QuickForm_Renderer_Tableless{
         } else {
             $id = $element->getName();
         }
+        $formid = $element->_formid;
         //strip qf_ prefix and replace '[' with '_' and strip ']'
         $id = preg_replace(array('/^qf_|\]/', '/\[/'), array('', '_'), $id);
         if (strpos($id, 'id_') !== 0){
-            $element->updateAttributes(array('id'=>'id_'.$id));
+            $element->updateAttributes(array('id'=>'id_'.$id.'_'.$formid));
         }
 
         //adding stuff to place holders in template
diff --git a/lib/pear/HTML/QuickForm/element.php b/lib/pear/HTML/QuickForm/element.php
index fccad59..18e7273 100644
--- a/lib/pear/HTML/QuickForm/element.php
+++ b/lib/pear/HTML/QuickForm/element.php
@@ -361,6 +361,7 @@ class HTML_QuickForm_element extends HTML_Common
             case 'createElement':
                 $className = get_class($this);
                 $this->$className($arg[0], $arg[1], $arg[2], $arg[3], $arg[4]);
+                $this->_formid = $caller->getAttribute('id');
                 break;
             case 'addElement':
                 $this->onQuickFormEvent('createElement', $arg, $caller);
