function startElement($parser, $name, $pattrs)
{
    global $stack, $stack_counter, $stack_ptr, $complete, $inc_active;
    if ($name == "TRANSACTIONDATA") {
        return;
    }
    $newobj = false;
    switch ($name) {
        case "DEBTOR":
        case "CREDITOR":
        case "STOCK":
            $newobj = new clsInfoObj($name, $pattrs["ID"]);
            break;
        case "JOURNAL":
            $newobj = new clsLedger($pattrs["TYPE"]);
            break;
        case "INCLUDES":
            $inc_active = $pattrs["TYPE"];
            break;
        case "INCDEF":
            clsIncludes::addXML($inc_active, $pattrs);
            break;
        default:
            if ($stack_ptr !== false) {
                $stack_ptr->xmlStartElement($parser, $name, $pattrs);
            }
    }
    if ($newobj !== false) {
        ++$stack_counter;
        $stack[$stack_counter] = $stack_ptr = $newobj;
    }
}