/**************************************************************
 *
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 *
 *   http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.
 *
 *************************************************************/



// MARKER(update_precomp.py): autogen include statement, do not remove
#include "precompiled_xmloff.hxx"
#include "EventMap.hxx"
#include "xmloff/xmlnmspe.hxx"


XMLTransformerEventMapEntry aTransformerEventMap[] =
{
	{ XML_NAMESPACE_DOM,	"select",	"on-select" },
	{ XML_NAMESPACE_OFFICE,	"insert-start",	"on-insert-start" },
	{ XML_NAMESPACE_OFFICE,	"insert-done",	"on-insert-done" },
	{ XML_NAMESPACE_OFFICE,	"mail-merge",	"on-mail-merge" },
	{ XML_NAMESPACE_OFFICE,	"alpha-char-input",	"on-alpha-char-input" },
	{ XML_NAMESPACE_OFFICE,	"non-alpha-char-input",	"on-non-alpha-char-input" },
	{ XML_NAMESPACE_DOM,	"resize",	"on-resize" },
	{ XML_NAMESPACE_OFFICE,	"move",	"on-move" },
	{ XML_NAMESPACE_OFFICE, "page-count-change", "on-page-count-change" },
	{ XML_NAMESPACE_DOM,	"mouseover",	"on-mouse-over" },
	{ XML_NAMESPACE_DOM,	"click",	"on-click" },
	{ XML_NAMESPACE_DOM,	"mouseout",	"on-mouse-out" },
	{ XML_NAMESPACE_OFFICE,	"load-error",	"on-load-error" },
	{ XML_NAMESPACE_OFFICE,	"load-cancel",	"on-load-cancel" },
	{ XML_NAMESPACE_OFFICE,	"load-done",	"on-load-done" },
	{ XML_NAMESPACE_DOM,	"load",	"on-load" },
	{ XML_NAMESPACE_DOM,	"unload",	"on-unload" },
	{ XML_NAMESPACE_OFFICE,	"start-app",	"on-start-app" },
	{ XML_NAMESPACE_OFFICE,	"close-app",	"on-close-app" },
	{ XML_NAMESPACE_OFFICE,	"new",	"on-new" },
	{ XML_NAMESPACE_OFFICE,	"save",	"on-save" },
	{ XML_NAMESPACE_OFFICE,	"save-as",	"on-save-as" },
	{ XML_NAMESPACE_DOM,	"DOMFocusIn",	"on-focus" },
	{ XML_NAMESPACE_DOM,	"DOMFocusOut",	"on-unfocus" },
	{ XML_NAMESPACE_OFFICE,	"print",	"on-print" },
	{ XML_NAMESPACE_DOM,	"error",	"on-error" },
	{ XML_NAMESPACE_OFFICE,	"load-finished",	"on-load-finished" },
	{ XML_NAMESPACE_OFFICE,	"save-finished",	"on-save-finished" },
	{ XML_NAMESPACE_OFFICE,	"modify-changed",	"on-modify-changed" },
	{ XML_NAMESPACE_OFFICE,	"prepare-unload",	"on-prepare-unload" },
	{ XML_NAMESPACE_OFFICE,	"new-mail",	"on-new-mail" },
	{ XML_NAMESPACE_OFFICE,	"toggle-fullscreen",	"on-toggle-fullscreen" },
	{ XML_NAMESPACE_OFFICE,	"save-done",	"on-save-done" },
	{ XML_NAMESPACE_OFFICE,	"save-as-done",	"on-save-as-done" },
    { XML_NAMESPACE_OFFICE, "create",    "on-create" },
    { XML_NAMESPACE_OFFICE, "save-as-failed",    "on-save-as-failed" },
    { XML_NAMESPACE_OFFICE, "save-failed",    "on-save-failed" },
    { XML_NAMESPACE_OFFICE, "copy-to-failed",    "on-copy-to-failed" },
    { XML_NAMESPACE_OFFICE, "title-changed",    "on-title-changed" },

	{ XML_NAMESPACE_FORM,	"approveaction",	"on-approveaction" },
	{ XML_NAMESPACE_FORM,	"performaction",	"on-performaction" },
	{ XML_NAMESPACE_DOM,	"change",	"on-change" },
	{ XML_NAMESPACE_FORM,	"textchange",	"on-textchange" },
	{ XML_NAMESPACE_FORM,	"itemstatechange",	"on-itemstatechange" },
	{ XML_NAMESPACE_DOM,	"keydown",	"on-keydown" },
	{ XML_NAMESPACE_DOM,	"keyup",	"on-keyup" },
	{ XML_NAMESPACE_FORM,	"mousedrag",	"on-mousedrag" },
	{ XML_NAMESPACE_DOM,	"mousemove",	"on-mousemove" },
	{ XML_NAMESPACE_DOM,	"mousedown",	"on-mousedown" },
	{ XML_NAMESPACE_DOM,	"mouseup",	"on-mouseup" },
	{ XML_NAMESPACE_FORM,	"approvereset",	"on-approvereset" },
	{ XML_NAMESPACE_DOM,	"reset",	"on-reset" },
	{ XML_NAMESPACE_DOM,	"submit",	"on-submit" },
	{ XML_NAMESPACE_FORM,	"approveupdate",	"on-approveupdate" },
	{ XML_NAMESPACE_FORM,	"update",	"on-update" },
	{ XML_NAMESPACE_FORM,	"startreload",	"on-startreload" },
	{ XML_NAMESPACE_FORM,	"reload",	"on-reload" },
	{ XML_NAMESPACE_FORM,	"startunload",	"on-startunload" },
	{ XML_NAMESPACE_FORM,	"confirmdelete",	"on-confirmdelete" },
	{ XML_NAMESPACE_FORM,	"approverowchange",	"on-approverowchange" },
	{ XML_NAMESPACE_FORM,	"rowchange",	"on-rowchange" },
	{ XML_NAMESPACE_FORM,	"approvecursormove",	"on-approvecursormove" },
	{ XML_NAMESPACE_FORM,	"cursormove",	"on-cursormove" },
	{ XML_NAMESPACE_FORM,	"supplyparameter",	"on-supplyparameter" },
	{ XML_NAMESPACE_FORM,	"adjust",	"on-adjust" },
	{ 0, 0, 0 }
};

XMLTransformerEventMapEntry aFormTransformerEventMap[] =
{
	{ XML_NAMESPACE_DOM,	"mouseover",	"on-mouseover" },
	{ XML_NAMESPACE_DOM,	"mouseout",	"on-mouseout" },
	{ XML_NAMESPACE_DOM,	"DOMFocusOut",	"on-blur" },
	{ 0, 0, 0 }
};
