function initGroupFromDom( $root, $new = false )
    {
        $xpath = new DOMXPath( $root->ownerDocument );

        if ( $root && $root->getAttribute("option_counter") > 0 )
        {
            // set the name of the node
            $this->Name = $xpath->query( 'name', $root )->item( 0 )->textContent;
            $this->OptionCounter = $root->getAttribute("option_counter");
            $this->MultiOptionIDCounter = $root->getAttribute("multioption_counter")
                                          ?  $root->getAttribute("multioption_counter")
                                          : $this->MultiOptionIDCounter;

            $this->GroupIDCounter = $root->getAttribute( 'group_counter ') ? $root->getAttribute( 'group_counter ') : $this->GroupIDCounter;
            $this->GroupID = $root->getAttribute( 'group_id' ) ? $root->getAttribute( 'group_id' ) : $this->GroupID ;
            $this->ID = $root->getAttribute( 'id' ) ? $root->getAttribute( 'id' ) : $this->ID;

            $multioptionsList = $xpath->query( "multioptions/multioption", $root );
            //Loop for MultiOptions
            foreach ( $multioptionsList as $multioption )
            {
                $newID = $this->addMultiOption( $multioption->getAttribute( "name" ),
                                                $multioption->getAttribute( "priority" ),
                                                $multioption->getAttribute( "default_option_id" ),
                                                $multioption->getAttribute( "multioption_id" ) );

                $optionNode = $xpath->query( "option", $multioption );
                foreach ( $optionNode as $option )
                {
                    $isSelectable = $option->getAttribute( "is_selectable" ) === false ? 1 : $option->getAttribute( "is_selectable" );
                    $this->addOption( $newID,
                                      $option->getAttribute( "option_id" ),
                                      $option->getAttribute( "value" ),
                                      $option->getAttribute( "additional_price" ),
                                      $isSelectable,
                                      $option->getAttribute( "object" ) );
                }
                $groupNode = $xpath->query( "optiongroup", $multioption )->item( 0 );
                if( $groupNode )
                {
                    $multiOptionGroup = new eZMultiOption2( '' );
                    $multiOptionGroup->initCounters( $this );
                    $multiOptionGroup->initGroupFromDom( $groupNode );
                    $this->initCounters( $multiOptionGroup );
                    $this->Options[$newID]['child_group'] = $multiOptionGroup;
                }

            }
            $this->changeMultiOptionId();

            $groupList = $xpath->query( "groups/optiongroup", $root );
            foreach ( $groupList as $group )
            {
                $multiOptionGroup = new eZMultiOption2( '' );
                $multiOptionGroup->initCounters( $this );
                $multiOptionGroup->initGroupFromDom( $group );
                $this->initCounters( $multiOptionGroup );
                $this->ChildGroupList[] = $multiOptionGroup;
            }

        }
        else
        {
            //The control come here while creating new object for MultiOption
            if ( $new )
            {
                $nodeID = $this->addMultiOption( "", 0, false, '' );
                $this->addOption( $nodeID, "", "", "" );
            }
        }

    }
 function batchInitializeObjectAttributeData( $classAttribute )
 {
     $optionGroup = new eZMultiOption2( $classAttribute->attribute( 'data_text1' ) );
     $db = eZDB::instance();
     return array( 'data_text' => "'" . $db->escapeString( $optionGroup->xmlString() ) . "'" );
 }