<?php
  class FileMaker_Parser_FMPXMLLAYOUT
{
  var $Vd05b6ed7;
 var $Ve3ad9440;

  
 var $V6a45a325;
 var $_fm;
 var $V5431b8d4;
 var $V6de51026 = false;
 var $V191be3bd;
 var $V32e51cce;

  
 var$V582ddd29;
 function FileMaker_Parser_FMPXMLLAYOUT(&$V0ab34ca9)
 {
 $this->_fm =& $V0ab34ca9;
}
 function parse($V0f635d0e)
 {
 if (empty($V0f635d0e)) {
 return new FileMaker_Error($this->_fm, 'Did not receive an XML document from the server.');
} 
 $this->V5431b8d4= xml_parser_create();
xml_set_object($this->V5431b8d4, $this);
xml_parser_set_option($this->V5431b8d4, XML_OPTION_CASE_FOLDING, false);
xml_parser_set_option($this->V5431b8d4, XML_OPTION_TARGET_ENCODING, 'UTF-8');
xml_set_element_handler($this->V5431b8d4, '_start', '_end');
xml_set_character_data_handler($this->V5431b8d4, '_cdata'); 
 if (!@xml_parse($this->V5431b8d4, $V0f635d0e)) {
 return new FileMaker_Error(sprintf('XML error: %s at line %d',
 xml_error_string(xml_get_error_code($this->V5431b8d4)),
 xml_get_current_line_number($this->V5431b8d4)));
} 
 xml_parser_free($this->V5431b8d4); 
 if (!empty($this->Vcb5e100e)) {
 return new FileMaker_Error($this->_fm, null, $this->Vcb5e100e);
}
$this->V6de51026= true;
return true;
}
 function setExtendedInfo(&$Vc6140495)
 {
 if (!$this->V6de51026) {
 return new FileMaker_Error($this->_fm, 'Attempt to set extended information before parsing data.');
}
$Vc6140495->_valueLists = $this->Ve3ad9440;
$Vc6140495->Vab234ad8= $this->V6a45a325;
foreach ($this->Vd05b6ed7 as $V972bf3f0 => $V77be71a4) {
 $V8fa14cdd =& $Vc6140495->getField($V972bf3f0);
$V8fa14cdd->_impl->_styleType = $V77be71a4['styleType'];
$V8fa14cdd->_impl->_valueList = $V77be71a4['valueList'] ? $V77be71a4['valueList'] : null;
}
}
 function _start($V3643b863, $Vb068931c, $V5d06e8a3)
 { 
 $V5d06e8a3 = $this->_fm->toOutputCharset($V5d06e8a3);
switch ($Vb068931c) {
 case 'FIELD':
 $this->V191be3bd= $V5d06e8a3['NAME'];
break;
case 'STYLE':
 $this->Vd05b6ed7[$this->V191be3bd]['styleType'] = $V5d06e8a3['TYPE'];
$this->Vd05b6ed7[$this->V191be3bd]['valueList'] = $V5d06e8a3['VALUELIST'];
break;
case 'VALUELIST':
 $this->Ve3ad9440[$V5d06e8a3['NAME']] = array();
$this->V6a45a325[$V5d06e8a3['NAME']] = array();
$this->V32e51cce= $V5d06e8a3['NAME'];
break;
case 'VALUE':
 $this->V582ddd29= $V5d06e8a3['DISPLAY'];
$this->Ve3ad9440[$this->V32e51cce][] = '';
break;
}
$this->inside_data = false;
}
 function _end($V3643b863, $Vb068931c)
 {
 switch ($Vb068931c) {
 case 'FIELD':
 $this->V191be3bd= null;
break;
case 'VALUELIST':
 $this->V32e51cce= null;
break;
}

 $this->inside_data = false;
}
 function _cdata($V3643b863, $V8d777f38)
 {
 if ($this->V32e51cce!== null && preg_match('|\S|', $V8d777f38)) {
  
 if($this->inside_data){
 $V78656626 = $this->V6a45a325[$this->V32e51cce][$this->V582ddd29];
$V8d777f38 = $V78656626 . $V8d777f38;
}
$V83ee0926 = array( $this->V582ddd29=> $this->_fm->toOutputCharset($V8d777f38));
$this->associative_array_push($this->V6a45a325[$this->V32e51cce], $V83ee0926);
$this->Ve3ad9440[$this->V32e51cce][count($this->Ve3ad9440[$this->V32e51cce]) - 1] .= $this->_fm->toOutputCharset($V8d777f38);
$this->inside_data = true;
}

 }

	 
	function associative_array_push(&$Vf1f713c9, $V34ec78fc) {
 if (is_array($V34ec78fc)) {
 foreach ($V34ec78fc as $V3c6e0b8a => $V2063c160) {
 $Vf1f713c9[$V3c6e0b8a] = $V2063c160;
}
return $Vf1f713c9;
}
return false;
}
}
