public void startElement(String namespaceURI, String localName, String qName, Attributes atts)
	      throws SAXException {
		
		//Handle accumulated text
		finishText();
		
		insideElement = localName;
				
	    if (ELEMENT_document.equals(localName)){
	    	createPageObject();
			//Producer
			int i;
			if ((i = atts.getIndex(ATTR_producer)) >= 0) {
				if (metaData != null)
					metaData.setCreator(atts.getValue(i));
			}
	    }
	    else if (ELEMENT_page.equals(localName)){
	    	handlePageElement(atts);
	    } 
	    else if (ELEMENT_region.equals(localName)) {
	    	if (currentGeometricObject != null)
	    		currentGeometricObject.setCoords(new Polygon());
	    	currentRects = new ArrayList<Rect>();
	    }
	    else if (ELEMENT_rect.equals(localName)) {
	    	handleRegionRect(atts);
	    }
	    else if (ELEMENT_block.equals(localName)) {
	    	currentRegion = createRegion(atts);
	    	currentGeometricObject = currentRegion;
	    }
	    /*else if (ELEMENT_TextLine.equals(localName)) {
	    	currentTextLine = null;
	    	if (currentRegion != null && currentRegion.getType() == RegionType.TextRegion)
	    		currentTextLine = ((TextRegion)currentRegion).createTextLine(readId(atts));
	    	currentGeometricObject = currentTextLine;
	    	currentTextObject = currentTextLine;
	    	handleContentObject(currentTextLine, atts);
	    }
	    else if (ELEMENT_Word.equals(localName)) {
	    	currentWord = null;
	    	if (currentTextLine != null)
	    		currentWord = currentTextLine.createWord(readId(atts));
	    	currentGeometricObject = currentWord;
	    	currentTextObject = currentWord;
	    	handleContentObject(currentWord, atts);
	    }
	    else if (ELEMENT_Glyph.equals(localName)) {
	    	currentGlyph = null;
	    	if (currentWord != null)
	    		currentGlyph = currentWord.createGlyph(readId(atts));
	    	currentGeometricObject = currentGlyph;
	    	currentTextObject = currentGlyph;
	    	handleContentObject(currentGlyph, atts);
	    }*/
	}