$path_reader = "/wwwarea/main/hreader/1";
   class xml
   {
        var $id;
		  var $mode;
		  var $value;	
		  var $value1;	
		  var $value2;	
		  var $oldyear = "";
		  var $oldpos = "";
        var $known = array("PERSON", "DATA", "TERMIN", "TERMINPLACE", "TITLE", 
									"CHRO", "PERSONPLACE", "ABC", "DOC", "DOCPLACE"
								  );
    function xml()
    {
        $this->id = xml_parser_create();
        xml_set_object($this->id, $this);
        xml_set_element_handler($this->id, "tag_open", "tag_close");
        xml_set_character_data_handler($this->id, "cdata");
    }
    function errorxml( $s )
    {
        print(sprintf("XML error: %s at line %d", $s, xml_get_current_line_number($this->id)));
		  exit;
    }
    function parse($data, $mode = "", $value = "",$value1 = "",$value2 = "")
    {
		  $this->mode = $mode;
		  $this->value = $value;
		  $this->value1 = $value1;
		  $this->value2 = $value2;
        if ( !xml_parse($this->id, "$data") )
        {
                $this->errorxml( xml_error_string(xml_get_error_code($this->id)) );
        }
    }
    function tag_open($parser, $tag, $attributes)
    {
//		 global $in;
		  if ( $this->mode == "" )	
		  {
				if ( in_array( $tag, $this->known ) )
        		{
                eval( "\$this->$tag(\$attributes,0);");
		      }
        		else
		      {
                  print "<".$tag;
                foreach( $attributes as $k=>$v )
                    print " $k=$v";
                print ">";
        		}
			}
			else
			if ( $tag == "TERMINPLACE" && $this->mode == $tag )
			{
				if ( $attributes[ "VALUE" ] == $this->value ||
					  $attributes[ "ALT" ] == $this->value	 )
				{
					print "
". $attributes[ "VALUE" ]. "
";
					print "".$attributes[ "DESCRIPTION" ]."
";
				}
			}
			else
			if ( $tag == "TITLE" && $this->mode == $tag )
			{
//				   if ( $this->value == $attributes[ "ACTION" ] )
//						print "
{$attributes[ "VALUE" ]}";
//					else
					$y = $this->oldpos*70+20;
//				   if ( $this->value == $attributes[ "ACTION" ] )
//						print "{$attributes[ "VALUE" ]}
";
//				   else
//						print "";
				   $this->oldpos++;
				   if ( $this->value == $attributes[ "ACTION" ] )
						print "{$attributes[ "VALUE" ]}";
					else
						print "{$attributes[ "VALUE" ]}";
				  print "
";
			}
			else
		  if ( $this->mode == "DATAPLACE" )	
		  {
				if ( in_array( $tag, $this->known ) )
        		{
                eval( "\$this->$tag(\$attributes,0);");
		      }
        		else
		      {
                  print "<".$tag;
                foreach( $attributes as $k=>$v )
                    print " $k=$v";
                print ">";
        		}
			}
		  else
		  if ( $this->mode == "PERSONPLACE" || $this->mode == "PERSONPLACEFOUND" )	
		  {
				if ( $this->mode == "PERSONPLACE" && $tag == "PERSON" && $attributes[ "ALT" ] == $this->value )
				{
					$this->mode = "PERSONPLACEFOUND";
					$this->PERSON( $attributes,0 );
				}
				else
				if ( $this->mode == "PERSONPLACEFOUND" )
				{
					if ( in_array( $tag, $this->known ) )
   	     		{
      	          eval( "\$this->$tag(\$attributes,0);");
		   	   }
        			else
			      {
   	               print "<".$tag;
      	          foreach( $attributes as $k=>$v )
         	           print " $k=$v";
            	    print ">";
	        		}
				}
			}
		  else
		  if ( $this->mode == "DOCPLACE" || $this->mode == "DOCPLACEFOUND" )	
		  {
				if ( $this->mode == "DOCPLACE" && $tag == "DOC" && ($attributes[ "ALT" ] == $this->value && strlen($attributes[ "ALT" ])==strlen($this->value)) )
				{
//					print "ffff".$this->value.$attributes[ "ALT" ];
					$this->mode = "DOCPLACEFOUND";
					$this->DOC( $attributes,0 );
				}
				else
				if ( $this->mode == "DOCPLACEFOUND" )
				{
					if ( in_array( $tag, $this->known ) )
   	     		{
      	          eval( "\$this->$tag(\$attributes,0);");
		   	   }
        			else
			      {
   	               print "<".$tag;
      	          foreach( $attributes as $k=>$v )
         	           print " $k=$v";
            	    print ">";
	        		}
				}
			}
    }
    function cdata($parser, $cdata)
    {
		  if ( 	$this->mode == "" || 
					$this->mode == "DATAPLACE" || 
					$this->mode == "PERSONPLACEFOUND" ||
					$this->mode == "DOCPLACEFOUND" )	
	        print $cdata;
    }
    function tag_close($parser, $tag)
    {
		  if ( $this->mode == "" )	
		  {
	        if ( in_array( $tag, $this->known ) )
   	     {
      	          eval( "\$this->$tag(array(),1);");
        		}
	        else
   	     {
                 print "$tag>";
      	  }
			}
			else
		  if ( $this->mode == "DATAPLACE" )	
		  {
	        if ( in_array( $tag, $this->known ) )
   	     {
      	          eval( "\$this->$tag(array(),1);");
        		}
	        else
   	     {
                 print "$tag>";
      	  }
			}
			else
			if ( $this->mode == "PERSONPLACEFOUND" )
			{
				if ( $tag == "PERSON" )
		           $this->mode = "PERSONPLACE";
				else
		        if ( in_array( $tag, $this->known ) )
   		     {
      	          eval( "\$this->$tag(array(),1);");
   	  		  }
	      	  else
	   	     {
	                 print "$tag>";
	      	  }
			}
			else
			if ( $this->mode == "DOCPLACEFOUND" )
			{
				if ( $tag == "DOC" )
		           $this->mode = "DOCPLACE";
				else
		        if ( in_array( $tag, $this->known ) )
   		     {
      	          eval( "\$this->$tag(array(),1);");
   	  		  }
	      	  else
	   	     {
	                 print "$tag>";
	      	  }
			}
    }
    function freexml()
    {
        xml_parser_free($this->id);
	 }
    function DOCUMENT( $a, $close=FALSE )
    {
    }
    function TITLE( $a, $close=FALSE )
    {
		if ( !$close )
		{
			print "";
		}
    }
    function TERMIN( $a, $close=FALSE )
    {
		if ( !$close )
		{
		   if ( isset( $a["ALT"] ) ) $v = $a["ALT"]; else $v=$a["VALUE"];
//			print "".$a["VALUE"]."";
//			print "".$a["VALUE"]."";
//			print "";
			print "".$a["VALUE"]."";
		}
    }
    function TERMINPLACE( $a, $close=FALSE )
    {
		if ( !$close )
		{
			print "".$a["VALUE"]."
".$a["DESCRIPTION"]."
";
		}
    }
    function ABC( $a, $close=FALSE )
    {
		if ( !$close )
		{
			print "".$a["ALT"]." - ".$a["DESCRIPTION"]."
";
		}
    }
    function DATA( $a, $close=FALSE )
    {
		if ( !$close )
		{
		  if ( $this->mode == "DATAPLACE" && $a[ "YEAR" ]==$this->value && $a[ "DAY" ]==$this->value1 )
			{
				print "
";
			}
			if ( $this->oldyear != $a[ "YEAR" ] )
			{
				print "".$a[ "YEAR" ]. "
";
				$this->oldyear = $a[ "YEAR" ];
			}
			print "".$a[ "DAY" ]. "";
		}
    }
    function CHRO( $a, $close=FALSE )
    {
		if ( !$close )
		{
//				print "";
//				print "";
				
		}
		else
				print "";
	 }
    function PERSON( $a, $close=FALSE )
    {
		if ( !$close )
		{
			print "{$a["DESCRIPTION"]}
";
		}
			
  	 }
    function PERSONPLACE( $a, $close=FALSE )
    {
		if ( !$close )
		{
//				print "";
				if ( isset($a["VALUE"]) )
					print "{$a["VALUE"]}";
				else
					print "{$a["ALT"]}";
		}
	 }
    function DOC( $a, $close=FALSE )
    {
		if ( !$close )
		{
			print "{$a["DESCRIPTION"]}
";
		}
			
  	 }
    function DOCPLACE( $a, $close=FALSE )
    {
		if ( !$close )
		{
//				print "";
				print "{$a["VALUE"]}";
		}
	 }
}
function parse_file( $f, $mode="", $value="", $value1="", $value2="" )
{
   if (strstr( $f, '/') !="" )
		$f ='intro';
	$filename = $path_reader . $f;
	$fd = fopen ($filename, "r");
	$contents = fread ($fd, filesize ($filename));
   $x = new xml();
   $x->parse( $contents, $mode, $value, $value1, $value2 );
   $x->freexml();
	fclose ($fd);
}
?>
        $in =$_GET[in];
        $value =$_GET[value];
        $year =$_GET[year];
        $day =$_GET[day];
				
	if ( !isset( $in ) )
	{
		$in = "intro";
	}
	if ( $in == "terminplace" )
	{
		include("style.css");
		print "Термины";
		parse_file( "termin", "TERMINPLACE", $value );
	}
	else
	if ( $in == "indexplace" )
	{
		include("style.css");
		parse_file( "index", "TITLE" );
	}
	else
	if ( $in == "dataplace" )
	{
		include("style.css");
		print "Хронология";
		parse_file( "chro", "DATAPLACE", $year, $day );
	}
	else
	if ( $in == "docplace" )
	{
		include("style.css");
		print "Документы";
		$n = substr( $value, 0, 1);
		parse_file( "docs".".".$n, "DOCPLACE", $value );
	}
	else
	if ( $in == "personplace" )
	{
		include("style.css");
		print "Персоналии";
		parse_file( "persons", "PERSONPLACE", $value );
	}
	else
	{
	   include 'header.php';
		parse_file( $in );
	   include 'footer.php';
	}
?>