
__xmTemplates = [];


/* INCLUDED FILE: xmpack/js_source/templates/xm_imgpresentation.lib.tpl */


__xmTemplates['xm_imgpresentation.lib'] = 
"<div id=\"window\" class=\"xm-img-presentation-window\">"+
"    <div id=\"loaderContainer\" class=\"xm-img-presentation-loader\">"+
"        <img src=\"http://xmsoft.eu/shared/images/busy_icon.gif\" />&nbsp;"+
"        <span id=\"loader\">Ładuję obraz...</span>"+
"    </div>"+
"    <div id=\"imgContainer\" class=\"xm-img-presentation-img\"></div>"+
"    <div id=\"captionContainer\" class=\"xm-img-presentation-caption\"><span id=\"caption\"></span></div>"+
"    <div id=\"infoContainer\" class=\"xm-img-presentation-info\"><span id=\"info\">Kliknij w okienko aby je zamknąć</span></div>"+
"</div>"+
"<div id=\"blockWindow\" class=\"application-block-screen\"></div>";



/* INCLUDED FILE: js/templates/site_ajax.tpl */


__xmTemplates['site_ajax'] = 
"<table class=\"vcl-xmblock application-window\" id=\"_xm-window_\">"+
"    <tr class=\"application-window-header\">"+
"        <td colspan=\"2\"><img src=\"block/block-top-left.gif\" alt=\"Image\" /></td>"+
"        <td class=\"vcl-xmblock-hc\" id=\"_xm-window-header_\"><div id=\"_xm-window-caption_\">Komunikaty systemu</div></td>"+
"        <td colspan=\"2\"><img src=\"block/block-top-right.gif\" alt=\"Image\" /></td>"+
"    </tr>"+
"    <tr>"+
"        <td class=\"vcl-xmblock-cl\"></td>"+
"        <td class=\"vcl-xmblock-cc\" colspan=\"3\">"+
"            <div id=\"_xm-window-content_\"></div>"+
"            <br />"+
"            <div class=\"a-center\">"+
"                <a href=\"#\" onclick=\"xmWindow_Hide(this); return false\">Zamknij</a>"+
"            </div>"+
"        </td>"+
"        <td class=\"vcl-xmblock-cr\"></td>"+
"    </tr>"+
"    <tr>"+
"        <td><img src=\"block/block-bottom-left.gif\" alt=\"Image\" /></td>"+
"        <td class=\"vcl-xmblock-bcl\"></td>"+
"        <td class=\"vcl-xmblock-bc\"></td>"+
"        <td class=\"vcl-xmblock-bcr\"></td>"+
"        <td><img src=\"block/block-bottom-right.gif\" alt=\"Image\" /></td>"+
"    </tr>"+
"</table>";


/* INCLUDED FILE: js/templates/xm_window.lib.tpl */


__xmTemplates['xm_window.lib'] = 
"<div class='block block-b xm-window' id=\"_xm-window_\">"+
"            <object class='xm-window-shadow' style='' type='application/x-shockwave-flash'  data='http://xmsoft.eu/shared/xmpanel/templates/default/flash/xm_window_shadow2b.swf'>"+
"                <param name = 'allowScriptAccess' value = 'sameDomain' />"+
"                <param name = 'movie' value = 'http://xmsoft.eu/shared/xmpanel/templates/default/flash/xm_window_shadow2b.swf' />"+
"                <param name = \"wmode\" value=\"transparent\"/>"+
"            </object>"+
"        <div style='padding: 11px'>"+
"            <div style='height: 35px; overflow: hidden; cursor: move;' id=\"_xm-window-header_\">"+
"                <img src=\"images/block-b/b-top-left.gif\" class='f-left d-block' alt=\"strony www\" />"+
"                <img src=\"images/block-b/b-top-right.gif\" class='f-right d-block' alt=\"projektowanie stron internetowych\" />"+
"                <div class='cap-top' style='background: transparent url(images/block-b/b-top.gif) repeat-x;'>"+
"                    <a id=\"_xm-window-closebutton_\" onclick=\"xmWindow_Hide(this); return false\" class=\"application-window-closebutton\"></a>"+
"                    <a id=\"_xm-window-minimizebutton_\" onclick=\"xmWindow_Minimize(this); return false\" class=\"application-window-minimizebutton\"></a>"+
"                    <h1 id=\"_xm-window-caption_\"></h1>"+
"                </div>"+
"            </div>"+
"            <div class='block-left clear'>"+
"            <div class='block-right'>"+
"                <div class='content' >"+
"                    <span id=\"_xm-window-content_\"></span>"+
"                    <br class='clear' />"+
"                </div>"+
"            </div>"+
"            </div>"+
"            <img src=\"images/block-g/b-bottom-left.gif\" class='f-left d-block' alt=\"strony www łódź\" />"+
"            <img src=\"images/block-g/b-bottom-right.gif\" class='f-right d-block' alt=\"projektowanie i tworzenie stron www\" />"+
"            <div class='cap-bottom' style='background: transparent url(images/block-g/b-bottom.gif) repeat-x;'></div>"+
"         </div>"+
"</div>"+
"<div class=\"xm-window-taskbar fixed-bottom\" id=\"_xm-window-taskbar_\">"+
"    <div id=\"_xm-window-taskbar-tabs_\" style=\"float:left\"></div>"+
"</div>"+
"<div class=\"xm-window-taskbar-tab\" style='height: 35px; overflow: hidden; cursor: pointer;' id=\"_xm-window-taskbar-tab_\">"+
"    <img src=\"images/block/b-top-left.gif\" class='f-left d-block' alt=\"strony www\" />"+
"    <img src=\"images/block/b-top-right.gif\" class='f-right d-block' alt=\"projektowanie stron internetowych\" />"+
"    <div class='cap-top' style='background: transparent url(images/block/b-top.gif) repeat-x;'>"+
"        <a id=\"_xm-window-taskbar-tab-closebutton_\" onclick=\"xmWindow_Hide(this); return false\" class=\"application-window-closebutton\"></a>"+
"        <a id=\"_xm-window-taskbar-tab-restorebutton_\" onclick=\"xmWindow_Minimize(this); return false\" class=\"application-window-restorebutton\"></a>"+
"        <h1 id=\"_xm-window-taskbar-tab-caption_\"></h1>"+
"    </div>"+
"</div>";



xmGlobalVars = [];
xmGlobalVars['user'] = '';
xmGlobalVars['XM_BASE_DIR'] = '';
xmGlobalVars['XM_SITE_DOMAIN'] = 'xmsoft.pl';
xmGlobalVars['XM_SHARED_DIR'] = '';
xmGlobalVars['XM_PACK_DIR'] = 'xmpack/';
xmGlobalVars['XM_CACHE_DIR'] = '_tplcache/xmsoft.pl/';
xmGlobalVars['XM_LOG_QUERY'] = '1';
xmGlobalVars['XM_ACT_READ'] = '0';
xmGlobalVars['XM_ACT_ADD'] = '1';
xmGlobalVars['XM_ACT_EDIT'] = '2';
xmGlobalVars['XM_ACT_DELETE'] = '3';
xmGlobalVars['XM_ACT_PERM_SELF'] = '0';
xmGlobalVars['XM_ACT_PERM_SELF_FORCE'] = '1';
xmGlobalVars['XM_ACT_PERM_SUBITEMS'] = '2';
xmGlobalVars['XM_SQL_CONDITION_EQ'] = '=';
xmGlobalVars['XM_SQL_CONDITION_NEQ'] = '<>';
xmGlobalVars['XM_SQL_CONDITION_GT'] = '>';
xmGlobalVars['XM_SQL_CONDITION_LT'] = '<';
xmGlobalVars['XM_SQL_CONDITION_GE'] = '>=';
xmGlobalVars['XM_SQL_CONDITION_LE'] = '<=';
xmGlobalVars['XM_SQL_CONDITION_REG'] = 'REGEXP';
xmGlobalVars['XM_SQL_CONDITION_IN'] = 'IN';
xmGlobalVars['XM_SQL_CONDITION_NIN'] = 'NOT IN';
xmGlobalVars['XM_SQL_CONDITION_NULL'] = 'NULL';
xmGlobalVars['XM_SQL_CONDITION_NNULL'] = 'NNULL';
xmGlobalVars['XM_SQL_CONDITION_LIKE'] = 'LIKE';
xmGlobalVars['XM_SQL_CONDITION_NLIKE'] = 'NOT LIKE';
xmGlobalVars['XM_MODE_NORMAL'] = '1';
xmGlobalVars['XM_MODE_AJAX'] = '2';
xmGlobalVars['XM_MODE_META'] = '4';
xmGlobalVars['XM_META_INCLUDE_GLOBAL'] = '1';
xmGlobalVars['XM_META_INCLUDE_SELF'] = '2';
xmGlobalVars['XM_META_INCLUDE_XMPACK'] = '4';
xmGlobalVars['XM_META_INCLUDE_ALL'] = '255';
xmGlobalVars['XM_META_INCLUDE_NONE'] = '0';
xmGlobalVars['XM_MESSAGE_INFO'] = 'info';
xmGlobalVars['XM_MESSAGE_OK'] = 'ok';
xmGlobalVars['XM_MESSAGE_ERROR'] = 'error';
xmGlobalVars['XM_SHARED_URL'] = 'http://xmsoft.eu/shared/';
xmGlobalVars['XM_SITE_URL'] = 'http://www.xmsoft.pl/';
xmGlobalVars['lng'] = 'pl';
xmGlobalVars['mod'] = 'home';
xmGlobalVars['module'] = [];
xmGlobalVars['module']['menu_link'] = '1';
xmGlobalVars['module']['enabled'] = '1';
xmGlobalVars['module']['include_static_content'] = '1';
xmGlobalVars['module']['js_meta_files'] = [];
xmGlobalVars['module']['js_meta_files']['include'] = '1';
xmGlobalVars['module']['js_meta_files']['locations'] = '255';
xmGlobalVars['module']['js_meta_files']['files'] = [];
xmGlobalVars['module']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['module']['js_meta_files']['components'] = [];
xmGlobalVars['module']['css_meta_files'] = [];
xmGlobalVars['module']['css_meta_files']['include'] = '';
xmGlobalVars['module']['css_meta_files']['locations'] = '255';
xmGlobalVars['module']['css_meta_files']['files'] = [];
xmGlobalVars['module']['caption'] = 'Strona główna';
xmGlobalVars['module']['sort_value'] = '1';
xmGlobalVars['modules'] = [];
xmGlobalVars['modules']['xmpanel'] = [];
xmGlobalVars['modules']['xmpanel']['menu_link'] = '';
xmGlobalVars['modules']['xmpanel']['enabled'] = '1';
xmGlobalVars['modules']['xmpanel']['include_static_content'] = '';
xmGlobalVars['modules']['xmpanel']['js_meta_files'] = [];
xmGlobalVars['modules']['xmpanel']['js_meta_files']['locations'] = '6';
xmGlobalVars['modules']['xmpanel']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['xmpanel']['js_meta_files']['components']['fckeditor/fckeditor.js'] = '4';
xmGlobalVars['modules']['xmpanel']['js_meta_files']['components']['jscalendar.js'] = '4';
xmGlobalVars['modules']['xmpanel']['css_meta_files'] = [];
xmGlobalVars['modules']['xmpanel']['css_meta_files']['locations'] = '6';
xmGlobalVars['modules']['xmpanel']['caption'] = 'xmPanel';
xmGlobalVars['modules']['xmpanel']['remember_module_disabled'] = '1';
xmGlobalVars['modules']['home'] = [];
xmGlobalVars['modules']['home']['menu_link'] = '1';
xmGlobalVars['modules']['home']['enabled'] = '1';
xmGlobalVars['modules']['home']['include_static_content'] = '1';
xmGlobalVars['modules']['home']['js_meta_files'] = [];
xmGlobalVars['modules']['home']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['home']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['home']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['home']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['home']['css_meta_files'] = [];
xmGlobalVars['modules']['home']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['home']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['home']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['home']['caption'] = 'Strona główna';
xmGlobalVars['modules']['home']['sort_value'] = '1';
xmGlobalVars['modules']['portfolio'] = [];
xmGlobalVars['modules']['portfolio']['menu_link'] = '1';
xmGlobalVars['modules']['portfolio']['enabled'] = '1';
xmGlobalVars['modules']['portfolio']['include_static_content'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files'] = [];
xmGlobalVars['modules']['portfolio']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['portfolio']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['portfolio']['css_meta_files'] = [];
xmGlobalVars['modules']['portfolio']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['portfolio']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['portfolio']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['portfolio']['caption'] = 'Realizacje';
xmGlobalVars['modules']['portfolio']['sort_value'] = '2';
xmGlobalVars['modules']['sprzet'] = [];
xmGlobalVars['modules']['sprzet']['menu_link'] = '1';
xmGlobalVars['modules']['sprzet']['enabled'] = '1';
xmGlobalVars['modules']['sprzet']['include_static_content'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files'] = [];
xmGlobalVars['modules']['sprzet']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['sprzet']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['sprzet']['css_meta_files'] = [];
xmGlobalVars['modules']['sprzet']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['sprzet']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['sprzet']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['sprzet']['caption'] = 'Sprzęt komputerowy';
xmGlobalVars['modules']['sprzet']['sort_value'] = '3';
xmGlobalVars['modules']['oferta'] = [];
xmGlobalVars['modules']['oferta']['menu_link'] = '1';
xmGlobalVars['modules']['oferta']['enabled'] = '1';
xmGlobalVars['modules']['oferta']['include_static_content'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files'] = [];
xmGlobalVars['modules']['oferta']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['oferta']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['oferta']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['oferta']['css_meta_files'] = [];
xmGlobalVars['modules']['oferta']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['oferta']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['oferta']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['oferta']['caption'] = 'Oferta';
xmGlobalVars['modules']['oferta']['sort_value'] = '3';
xmGlobalVars['modules']['produkty'] = [];
xmGlobalVars['modules']['produkty']['menu_link'] = '1';
xmGlobalVars['modules']['produkty']['enabled'] = '1';
xmGlobalVars['modules']['produkty']['include_static_content'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files'] = [];
xmGlobalVars['modules']['produkty']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['produkty']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['produkty']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['produkty']['css_meta_files'] = [];
xmGlobalVars['modules']['produkty']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['produkty']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['produkty']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['produkty']['caption'] = 'Produkty';
xmGlobalVars['modules']['produkty']['sort_value'] = '4';
xmGlobalVars['modules']['news'] = [];
xmGlobalVars['modules']['news']['menu_link'] = '';
xmGlobalVars['modules']['news']['enabled'] = '1';
xmGlobalVars['modules']['news']['include_static_content'] = '1';
xmGlobalVars['modules']['news']['js_meta_files'] = [];
xmGlobalVars['modules']['news']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['news']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['news']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['news']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['news']['css_meta_files'] = [];
xmGlobalVars['modules']['news']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['news']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['news']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['news']['caption'] = 'News';
xmGlobalVars['modules']['news']['sort_value'] = '9';
xmGlobalVars['modules']['contact'] = [];
xmGlobalVars['modules']['contact']['menu_link'] = '1';
xmGlobalVars['modules']['contact']['enabled'] = '1';
xmGlobalVars['modules']['contact']['include_static_content'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files'] = [];
xmGlobalVars['modules']['contact']['js_meta_files']['include'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['locations'] = '255';
xmGlobalVars['modules']['contact']['js_meta_files']['files'] = [];
xmGlobalVars['modules']['contact']['js_meta_files']['files']['site_common'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['site_ajax'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_window.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_common.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_ajax.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_effects.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_xml.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_globalevents.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_objectevents.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_dragging.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['files']['xm_imgpresentation.lib'] = '1';
xmGlobalVars['modules']['contact']['js_meta_files']['components'] = [];
xmGlobalVars['modules']['contact']['css_meta_files'] = [];
xmGlobalVars['modules']['contact']['css_meta_files']['include'] = '';
xmGlobalVars['modules']['contact']['css_meta_files']['locations'] = '255';
xmGlobalVars['modules']['contact']['css_meta_files']['files'] = [];
xmGlobalVars['modules']['contact']['caption'] = 'Kontakt';
xmGlobalVars['modules']['contact']['sort_value'] = '10';
xmGlobalVars['languages'] = [];
xmGlobalVars['languages']['polish'] = 'pl';
xmGlobalVars['defaultLanguage'] = 'pl';
xmGlobalVars['moddir'] = 'modules/home/';
xmGlobalVars['__server'] = [];
xmGlobalVars['__server']['HTTP_X_CC_ID'] = 'ccc03-01';
xmGlobalVars['__server']['HTTP_HOST'] = 'www.xmsoft.pl';
xmGlobalVars['__server']['HTTP_USER_AGENT'] = 'CCBot/1.0 (+http://www.commoncrawl.org/bot.html)';
xmGlobalVars['__server']['HTTP_ACCEPT'] = 'text/html,application/xhtml+xml,text/xml;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5';
xmGlobalVars['__server']['HTTP_ACCEPT_LANGUAGE'] = 'en-us,en;q=0.5';
xmGlobalVars['__server']['HTTP_ACCEPT_ENCODING'] = 'gzip';
xmGlobalVars['__server']['HTTP_ACCEPT_CHARSET'] = 'ISO-8859-1,utf-8;q=0.7,*;q=0.7';
xmGlobalVars['__server']['HTTP_CONNECTION'] = 'close';
xmGlobalVars['__server']['HTTP_CACHE_CONTROL'] = 'no-cache';
xmGlobalVars['__server']['HTTP_PRAGMA'] = 'no-cache';
xmGlobalVars['__server']['HTTP_COOKIE'] = 'dbSESSID=6c9f6aa87919afe2d4aa89b96f14b584';
xmGlobalVars['__server']['PATH'] = '/sbin:/usr/sbin:/usr/local/sbin:/usr/bin:/bin';
xmGlobalVars['__server']['SERVER_SIGNATURE'] = '<address>Apache/2.2.10 (Linux/SUSE) Server at www.xmsoft.pl Port 80</address>\n';
xmGlobalVars['__server']['SERVER_SOFTWARE'] = 'Apache/2.2.10 (Linux/SUSE)';
xmGlobalVars['__server']['SERVER_NAME'] = 'www.xmsoft.pl';
xmGlobalVars['__server']['SERVER_ADDR'] = '81.169.142.177';
xmGlobalVars['__server']['SERVER_PORT'] = '80';
xmGlobalVars['__server']['REMOTE_ADDR'] = '38.107.191.100';
xmGlobalVars['__server']['DOCUMENT_ROOT'] = '/srv/www/vhosts/xmsoft.eu/httpdocs';
xmGlobalVars['__server']['SERVER_ADMIN'] = 'chudczan@gmail.com';
xmGlobalVars['__server']['SCRIPT_FILENAME'] = '/srv/www/vhosts/xmsoft.eu/httpdocs/index.php';
xmGlobalVars['__server']['REMOTE_PORT'] = '34633';
xmGlobalVars['__server']['GATEWAY_INTERFACE'] = 'CGI/1.1';
xmGlobalVars['__server']['SERVER_PROTOCOL'] = 'HTTP/1.1';
xmGlobalVars['__server']['REQUEST_METHOD'] = 'GET';
xmGlobalVars['__server']['QUERY_STRING'] = 'mod=home&hash=106a6c241b8797f52e1e77317b96a201&mode=4&files=js';
xmGlobalVars['__server']['REQUEST_URI'] = '/?mod=home&hash=106a6c241b8797f52e1e77317b96a201&mode=4&files=js';
xmGlobalVars['__server']['SCRIPT_NAME'] = '/index.php';
xmGlobalVars['__server']['PHP_SELF'] = '/index.php';
xmGlobalVars['__server']['REQUEST_TIME'] = '1283818326';
xmGlobalVars['__get'] = [];
xmGlobalVars['__get']['mod'] = 'home';
xmGlobalVars['__get']['hash'] = '106a6c241b8797f52e1e77317b96a201';
xmGlobalVars['__get']['mode'] = '4';
xmGlobalVars['__get']['files'] = 'js';
xmGlobalVars['__post'] = [];
xmGlobalVars['__request'] = [];
xmGlobalVars['__request']['mod'] = 'home';
xmGlobalVars['__request']['hash'] = '106a6c241b8797f52e1e77317b96a201';
xmGlobalVars['__request']['mode'] = '4';
xmGlobalVars['__request']['files'] = 'js';
xmGlobalVars['__request']['dbSESSID'] = '6c9f6aa87919afe2d4aa89b96f14b584';
xmGlobalVars['siteTitle'] = 'STRONY WWW, SYSTEMY CMS :: xmSoft, tworzenie stron www Łódź. Projektowanie stron i aplikacji internetowych';
xmGlobalVars['siteDescr'] = 'Projektowanie i tworzenie stron / serwisów www. Aplikacje internetowe, systemy cms, strony www. Łódź Radomsko Częstochowa Bełchatów Piotrków. Systemy zarządzania treścią, pozycjonowanie stron w internecie';


/* INCLUDED FILE: xmpack/js_source/xm_ajax.lib.js */

/**
 * AJAX library
 * Copywrite (R) xmSoft 2007
 *
 */

/*-------------------------------------------------------------------------------------*/
/* xmAjax_XHRThread class                                                                   */
/*-------------------------------------------------------------------------------------*/
function xmAjax_XHRThread(aAjax)
{
    /*---------------------------------------------------------------------------------*/
    /* Initialization                                                                  */
    /*---------------------------------------------------------------------------------*/

    /*trace("Ajax thread: creating xmlhttprequest object...\n");*/
    this.fXhr = xmUtil.createXHRObject()

    if (!this.fXhr) {
        /*alert(__jsMsg["xmajax"]["cannt_create_thread"]);*/
        return;
    }


    /**
    *
    */
    this.sendRequest = function (aData)
    {
        clearTimeout(this.fTimeoutId);
        this.fTimeoutId = setTimeout("if (xmUtil.isObject(xmAjax._xhrThreads["+ this.fId +"]) && xmAjax._xhrThreads["+ this.fId +"].fFree == false)xmAjax._xhrThreads["+ this.fId +"].fAjax._onRequestTimeout(xmAjax._xhrThreads["+ this.fId +"]);", this.fTimeout);
        if (xmUtil.isObject(this.fXhr)) {
            this.fRequestTime = (new Date()).getTime();
            this.fXhr.send(this.fData);
        }
    }


    /**
     *
     */
    this._reset = function ()
    {
        this.fCallback    = null;
        this.fUserData    = null;
        this.fAsynch      = true;
        this.fURL         = "";
        this.fMethod      = "GET";
        this.fHeaders     = [];
        this.fData        = null;
        this.fNoStaticURL = false;
        this.fRunning     = false;
        this.fTimeout     = 90000; /* timeout in miliseconds*/
        this.fFree        = true;

        /* attach ready state change event*/
        this.fXhr.onreadystatechange = new Function (
            "xmAjax._xhrThreads["+ this.fId +"].fAjax._onReadyStateChange(xmAjax._xhrThreads["+ this.fId +"]);"
        );
    }


    /*---------------------------------------------------------------------------------*/
    /* Properties                                                                      */
    /*---------------------------------------------------------------------------------*/

    this.fId      = aAjax.getNextThreadId();
    this.fAjax    = aAjax;
    this.fRequestTime = 0;

    this._reset();
}



/*-------------------------------------------------------------------------------------*/
/* xmAjax object                                                                       */
/*-------------------------------------------------------------------------------------*/
var xmAjax = new function()
{
    /*---------------------------------------------------------------------------------*/
    /* Properties                                                                      */
    /*---------------------------------------------------------------------------------*/

    /***** Private *****/
    /** array with ajax threads */
    this._xhrThreads = [];

    this.fNextThreadId = 1;

    /***** Public *****/
    this.staticURL = String(document.location).substring(0, String(document.location).lastIndexOf('/')) + "/index.php?mode=2&";

    this.onBeforeRequestStart = null;
    this.onRequestStart       = null;
    this.onRequestsDone       = null;
    this.onRequestDone        = null;
    this.onRequestTimeout     = null;


    /*---------------------------------------------------------------------------------*/
    /* Private Methods                                                                 */
    /*---------------------------------------------------------------------------------*/

    /**
     *
     */
    this._createThread = function ()
    {
/*        trace("Ajax: creating new thread...\n");?*/
        var id;
        for (id in xmAjax._xhrThreads)
        {
            if (xmUtil.isObject(xmAjax._xhrThreads[id]) && xmAjax._xhrThreads[id].fFree)
            {
                xmAjax._xhrThreads[id]._reset();
                xmAjax._xhrThreads[id].fFree = false;
                return xmAjax._xhrThreads[id];
            }
        }
        var thread = new xmAjax_XHRThread(this);
        return thread;
    }


    /**
     *
     */
    this._destroyThread = function (aThreadId)
    {
        /*trace("Ajax: destroying thread #" + aThreadId);*/
        try
        {
            if (xmUtil.isObject(xmAjax._xhrThreads[aThreadId]) && xmUtil.isObject(xmAjax._xhrThreads[aThreadId].fXhr))
            {
                xmAjax._xhrThreads[aThreadId].fXhr.onreadystatechange = function() {};
                /*xmAjax._xhrThreads[aThreadId].fXhr = null;*/
            }
        }
        finally
        {
            try
            {
                xmAjax._xhrThreads[aThreadId].fXhr.abort();
            }
            finally
            {
                if (xmUtil.isFunction(this.onRequestDone))
                    this.onRequestDone(null, xmAjax._xhrThreads[aThreadId]);

                try
                {
                    xmAjax._xhrThreads[aThreadId]._reset();
                    xmAjax._xhrThreads[aThreadId].fFree = true;
                }
                finally
                {
                    if (xmUtil.isFunction(this.onRequestsDone) && this._threadsCount(null, -1, null) == 0)
                        this.onRequestsDone();
                }
            }
        }
    }


    /**
     *
     */
    this._onReadyStateChange = function (aThread)
    {
        if (aThread.fXhr.readyState == 4)
        {
            /*trace("Ajax: request completed #" + aThread.fId);*/
            try
            {   /*alert("Receiving "+aThread.fId);*/
                //if (aThread.fXhr.status != '200')
                //    return alert("Wystąpił błąd! Zasoby serwera nie są dostępne. Proszę spróbować ponownie za chwilę.");

                aThread.fRequestTime = (new Date()).getTime() - aThread.fRequestTime;
                if (xmUtil.isFunction(aThread.fCallback))
                    aThread.fCallback(aThread);
            }
            finally
            {
                try
                {
                    this._destroyThread(aThread.fId);
                }
                finally
                {
                    /*alert("running next synch thread");*/
                    this._runNextSynchThread();
                }
            }
        }
    }


    /**
     *
     */
    this._onRequestTimeout = function (aThread)
    {
        if (!xmUtil.isObject(aThread)) return;

        /*trace("Ajax: request timeout #" + aThread.fId);*/

        try
        {
            try
            {
                aThread.fXhr.onreadystatechange = function() {};
            }
            finally
            {
                if (xmUtil.isFunction(this.onRequestTimeout))
                    this.onRequestTimeout(null, aThread);
            }
        }
        finally
        {
            this._destroyThread(aThread.fId);
        }
    }


    /**
     *
     */
     this._runNextSynchThread = function ()
     {
        var key;
        for (key in xmAjax._xhrThreads)
        {
            if (xmUtil.isObject(xmAjax._xhrThreads[key]) && xmUtil.isObject(xmAjax._xhrThreads[key].fXhr) && !xmAjax._xhrThreads[key].fAsynch)
            {
/*                alert(xmAjax._xhrThreads[key].fAsynch);*/
                /*trace("Ajax: executing next thread...");*/
                if (this._runThread(key, true))
                    return;
            }
        }
     }


    /**
     *
     */
    this._runThread = function (aThreadId)
    {
        try
        {
            if (xmAjax._xhrThreads[aThreadId].fRunning)
                return false;

            if (!xmAjax._xhrThreads[aThreadId].fAsynch && this._threadsCount(null, aThreadId, true) > 0)
                return false;

            var thread = xmAjax._xhrThreads[aThreadId];

            with (thread)
            {
                if ((xmUtil.isFunction(this.onBeforeRequestStart) && !this.onBeforeRequestStart(null, thread)) ||
                    (xmUtil.isFunction(this.onRequestStart) && !this.onRequestStart(null, thread)))
                    {
/*                        trace("Ajax: request #"+fId+" aborted from event (onBeforeRequestStart or onRequestStart)");*/
                        _reset();
                        fFree = true;
/*                        delete xmAjax._xhrThreads[aThreadId];*/
                        return false;
                    }

                fRunning = true;

/*                trace("Ajax: sending request #" + fId + " " + ((fNoStaticURL === true) ? fURL : this.staticURL + fURL));*/

                var time = (new Date()).getTime();
                fXhr.open(fMethod, ((fNoStaticURL === true) ? fURL : this.staticURL + fURL + "&" + time), true);

                var name;
                for (name in fHeaders) {
                    fXhr.setRequestHeader(name, fHeaders[name]);
/*                    alert(name + ": " +fHeaders[name]);*/
                }

                thread.sendRequest(fData);
                return true;
            }
        }
        catch (e)
        {
            this._destroyThread(aThreadId);
            return true;
        }
    }


    /**
     *
     */
    this._threadsCount = function (aAsynch, aThreadId, aRunning)
    {
        var count = 0, key;

        for (key in xmAjax._xhrThreads)
        {
            if (key != aThreadId && xmUtil.isObject(xmAjax._xhrThreads[key]) && xmUtil.isObject(xmAjax._xhrThreads[key].fXhr) && xmAjax._xhrThreads[key].fFree == false
                && ((aAsynch === null) || (aAsynch == xmAjax._xhrThreads[key].fAsynch))
                && ((aRunning === null) || (aRunning == xmAjax._xhrThreads[key].fRunning)))
                count++;
        }

        return count;
    }


    /*---------------------------------------------------------------------------------*/
    /* Public Methods                                                                  */
    /*---------------------------------------------------------------------------------*/


    /**
     *
     */
    this.getNextThreadId = function ()
    {
        return this.fNextThreadId++;
    }


    this.threadsCount = function ()
    {
        return this._threadsCount(null, null, null);
    }


    /**
     *
     */
    this.sendRequest = function (aURL, aMethod, aCallback, aUserData, aNoStaticURL, aAsynch, aData, aHeaders)
    {
        if (!xmUtil.isString(aMethod))
            aMethod = "GET";

/*        trace("Ajax: preparing input data\n");*/

        if (aMethod.toUpperCase() != "GET" && aMethod.toUpperCase() != "POST")
            return false;/*(trace) ? trace('Invalid request method: ' + aMethod) : false;*/

        if (xmUtil.isUndefined(aNoStaticURL)) aNoStaticURL = false;
        if (xmUtil.isUndefined(aAsynch)) aAsynch = true;
        if (xmUtil.isUndefined(aData)) aData = null;
        if (!xmUtil.isObject(aHeaders)) aHeaders = [];

        var thread = this._createThread();

        with (thread)
        {
            fMethod      = aMethod;
            fCallback    = aCallback;
            fUserData    = aUserData;
            fAsynch      = aAsynch;
            fURL         = aURL;
            fHeaders     = aHeaders;
            fNoStaticURL = aNoStaticURL;
            fData        = aData;
            fFree        = false;
/*             add this thread to global array*/
            xmAjax._xhrThreads[fId] = thread;
            this._runThread(fId);
        }

        return true;
    }


    /**
     *
     */
    this.sendForm = function (aFormName, aURL, aMethod, aCallback, aUserData, aNoStaticURL, aAsynch, aData, aHeaders)
    {
        if (!xmUtil.isObject(aHeaders)) aHeaders = [];

        if (!xmUtil.isString(aMethod))
            aMethod = "POST";

        var headers = [],
            postParams = this.getFormDataAsString(aFormName);

        headers["Content-Type"]   = "application/x-www-form-urlencoded";
        headers["Content-length"] = postParams.length;
        headers["Connection"]     = "close";

        var name;
        for (name in aHeaders)
            headers[name] = aHeaders[name];

        aData = xmUtil.isString(aData) ? aData : '';

        this.sendRequest(aURL, aMethod, aCallback, aUserData, aNoStaticURL, aAsynch, postParams + aData, headers);
    }


    /**
     *
     */
    this.getFormDataAsString = function (aForm)
    {
        var qstr = '',
            boxes = [],
            form = $(aForm) ? $(aForm) : document.forms[aForm];

        if (!form) return qstr;

        for (var i = 0; i < form.length; i++)
        {
            if (form[i].type == 'radio')
            {
                if (form[i].checked)
                    qstr += encodeURIComponent(form[i].name) + '=' + encodeURIComponent(form[i].value) + '&';
                continue;
            }
            if (form[i].type == 'checkbox') {
                boxes[form[i].name] = form[i].checked ? encodeURIComponent(form[i].value) : 0;
                continue;
            }
            qstr += (form[i].name != "") ? encodeURIComponent(form[i].name) + '=' + encodeURIComponent(form[i].value) + '&' : "";
        }

        var key;
        for (key in boxes)
            if (boxes[key] != null)
                qstr += encodeURIComponent(key) + '=' + encodeURIComponent(boxes[key]) + '&';

        return qstr;
    }


    /**
    */
    this.abortAll = function ()
    {
        var threadId;
        for (threadId in xmAjax._xhrThreads)
            this._destroyThread(threadId);
    }


    /**
    */
    this.attachBeforeRequestStartHandler = function (aName, aHandler, aUserData)
    {
        xmObjectEvents.attachHandler(this, "onBeforeRequestStart", aHandler, aUserData);
    }


    /**
    */
    this.attachRequestStartHandler = function (aName, aHandler, aUserData)
    {
        xmObjectEvents.attachHandler(this, "onRequestStart", aHandler, aUserData);
    }


    /**
    */
    this.attachRequestsDoneHandler = function (aName, aHandler, aUserData)
    {
        xmObjectEvents.attachHandler(this, "onRequestsDone", aHandler, aUserData);
    }


    /**
    */
    this.attachRequestDoneHandler = function (aName, aHandler, aUserData)
    {
        xmObjectEvents.attachHandler(this, "onRequestDone", aHandler, aUserData);
    }


    /**
    */
    this.attachRequestTimeoutHandler = function (aName, aHandler, aUserData)
    {
        xmObjectEvents.attachHandler(this, "onRequestTimeout", aHandler, aUserData);
    }
}



/* INCLUDED FILE: xmpack/js_source/xm_common.lib.js */

/*-------------------------------------------------------------------------------------*/
/**
 * @desc The only function that is outsite the xmUtil object
 */
function $(obj)
{
    if (!xmUtil.isObject(obj))
        if (!xmUtil.isObject(obj = document.getElementById(obj)))
            return false;

    return obj;
}

/*-------------------------------------------------------------------------------------*/
/**
 *
 */

var xmUtil = new function()
{
    this.isObject = function (x)
    {
        return typeof x == "object" && x !== null;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isNumber = function (x)
    {
        return typeof x == "number";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isArray = function (x)
    {
        return xmUtil.isObject(x) && x.constructor == Array;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isBool = function (x)
    {
        return typeof x == "boolean";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isString = function (x)
    {
        return typeof x == "string";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isStringEmpty = function (x)
    {
        return (typeof x == "string") && (x == "");
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isUndefined = function (x)
    {
        return typeof x == "undefined";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isUndefOrNull = function (x)
    {
        return typeof x == "undefined" || x === null;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isFunction = function (x)
    {
        return typeof x == "function";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.serializeArray = function (aArray)
    {
        var k, serialized = "";
        for (k in aArray)
            serialized += encodeURIComponent(aArray[k]) + "&";
        return serialized;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.unserializeArray = function (aString)
    {
        if (!xmUtil.isString(aString)) return [];

        var k, elements = aString.split("&");

        for (k in elements)
            elements[k] = decodeURIComponent(elements[k]);

        return elements;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.toInt = function (num, def)
    {
        if (xmUtil.isNumber(num))  return num;
        if (!xmUtil.isString(num)) return parseInt(def) ? parseInt(def) : 0;

        var integerPattern = /^(-)?0*([0-9]*)[^0-9]*$/;
        var match = num.match(integerPattern);

        if (!match) return parseInt(def) ? parseInt(def) : 0;

        return match[2] ? parseInt(match[2]) * (match[1] ? -1 : 1) : 0;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.toFloat = function (num)
    {
        if (xmUtil.isNumber(num))  return num;
        if (!xmUtil.isString(num)) return 0;

        var integerPattern = /^(-)?0*([0-9]*)(\.|,)?([0-9]*)[^0-9]*$/;
        var match = num.match(integerPattern);

        if (!match) return 0;

        return match[2] ? parseFloat(match[2]+"."+match[4]) * (match[1] ? -1 : 1) : 0.0;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.createCookie = function (name, value, days)
    {
        if (days)
        {
            var date = new Date();
            date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
            var expires = "; expires="+date.toGMTString();
        }
        else
            var expires = "";

        document.cookie = name + "=" + value + expires + "; path=/";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.readCookie = function (name)
    {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');

        for (var i = 0; i < ca.length; i++)
        {
            var c = ca[i];

            while (c.charAt(0) == ' ')
                c = c.substring(1, c.length);

            if (c.indexOf(nameEQ) == 0)
                return c.substring(nameEQ.length, c.length);
        }
        return null;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.eraseCookie = function (name)
    {
        xmUtil.createCookie(name, "", -1);
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getElementX = function (obj, endObject)
    {
        var curleft = 0;
        if (obj.offsetParent)
        {
            while (obj.offsetParent && obj != endObject)
            {
                curleft += obj.offsetLeft;
                obj = obj.offsetParent;
            }
        }
        else if (typeof obj.x != "undefined")
            curleft += obj.x;
        return curleft;/* + (is_ie ? 12 : 0);*/
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getElementY = function (obj, endObject)
    {
        var curtop = 0;
        if (obj.offsetParent)
        {
            while (obj.offsetParent && obj != endObject)
            {
                curtop += obj.offsetTop;
                obj = obj.offsetParent;
            }
        }
        else if (typeof obj.y != "undefined")
            curtop += obj.y;
        return curtop;/* + (is_ie ? 17 : 0);*/
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getChildNodesList = function (aObj, aOutput, tag, recursive)
    {
        if (!xmUtil.isObject(aObj)) return;
        if (!aObj.hasChildNodes()) return;

        var child = aObj.firstChild;
        tag = xmUtil.isString(tag) ? tag : "";

        do
        {
            if (tag == "" || (child.nodeType != 3 && child.tagName && child.tagName.toLowerCase() == tag))
                aOutput[aOutput.length] = child;
            if (child.hasChildNodes() && recursive == true)
                xmUtil.getChildNodesList(child, aOutput, tag, recursive);
            child = child.nextSibling;
        }
        while (child);
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getChildNodesByAttributes = function (aObj, aOutput, aAttrName, aValue, recursive, aUseGetAttributeMethod)
    {
        if (!xmUtil.isObject(aObj)) return;
        if (!aObj.hasChildNodes()) return;

        var child = aObj.firstChild,
            matches;

        do
        {
            if (aValue.test)
                 eval("try { matches = "+aValue+".test(child."+aAttrName+") } catch(e) {}");
            else if (aUseGetAttributeMethod)
                 eval("try { matches = child.getAttribute('" + aAttrName + "') == '" + aValue.replace("'", "\\'") + "' } catch(e) {}");
            else eval("try { matches = child." + aAttrName + " == '" + aValue.replace("'", "\\'") + "' } catch(e) {}");

            if (matches && child.nodeType != 3)
                aOutput[aOutput.length] = child;

            if (child.hasChildNodes() && recursive == true && child.tagName.toLowerCase() != 'iframe')
                xmUtil.getChildNodesByAttributes(child, aOutput, aAttrName, aValue, recursive, aUseGetAttributeMethod);

            child = child.nextSibling;
        }
        while (child);
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isInArray = function (aArray, aNeedle)
    {
        if (!xmUtil.isArray(aArray)) return false;

        var key;
        for (key in aArray)
            if (aArray[key] === aNeedle)
                return true;
        return false;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.isMouseIn = function (obj)
    {
        if (!xmUtil.isObject(obj))
            return false;

        oX = xmUtil.getElementX(obj);
        oY = xmUtil.getElementY(obj);
        oW = obj.offsetWidth;
        oH = obj.offsetHeight;
        if (xmGlobalEvents.mousePos.x <= (oX + oW) &&
            xmGlobalEvents.mousePos.x >= oX &&
            xmGlobalEvents.mousePos.y <= (oY + oH) &&
            xmGlobalEvents.mousePos.y >= oY)
        return true; else return false;
    }

    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.bubbleEvent = function (aEvent, aBubble)
    {
        try
        {
            if (!aEvent)
                if (!(aEvent = window.event)) return;

            aEvent.cancelBubble = !aBubble;

            if (aEvent.stopPropagation && !aBubble)
                aEvent.stopPropagation();
        }
        catch (e) {};
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.clearDocumentSelection = function ()
    {
        if (document.selection)
            if (document.selection.clear)
                document.selection.clear();

        if (window.getSelection)
        {
            if (window.getSelection().removeAllRanges)
                window.getSelection().removeAllRanges();
        }
        else
        {
            if (document.getSelection)
                if (document.getSelection().removeAllRanges)
                    document.getSelection().removeAllRanges();
        }

        if (document.clearSelection)
            document.clearSelection();
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.centerWindow = function (wnd)
    {
        wnd = $(wnd);

        if (!wnd) return;

        try
        {
            var x = Math.floor((xmUtil.getDocumentDmi().w  - wnd.offsetWidth)  / 2);
            var y = Math.floor((xmUtil.getDocumentDmi().h - wnd.offsetHeight) / 2);

            wnd.style.left = ((x < 0) ? 0 : x) + xmUtil.getDocumentScroll().x + "px";
            wnd.style.top  = ((y < 0) ? 0 : y) + xmUtil.getDocumentScroll().y  + "px";
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getDocumentDmi = function ()
    {
        if (self.innerWidth)
        {
            return {
                w : self.innerWidth,
                h : self.innerHeight
            }
        }
        else if (document.documentElement && document.documentElement.clientWidth)
        {
            return {
                w : document.documentElement.clientWidth,
                h : document.documentElement.clientHeight
            }
        }
        else if (document.body)
        {
            return {
                w : document.body.clientWidth,
                h : document.body.clientHeight
            }
        }

        return { w : 0, h : 0 }
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getDocumentScroll = function ()
    {
        var scrOfX = 0, scrOfY = 0;

        if( typeof( window.pageYOffset ) == 'number' )
        {
            return {
                y : window.pageYOffset,
                x : window.pageXOffset
            }
        }
        else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) )
        {
            return {
                y : document.body.scrollTop,
                x : document.body.scrollLeft
            }
        }
        else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) )
        {
            return {
                y : document.documentElement.scrollTop,
                x : document.documentElement.scrollLeft
            }
        }

        return { x : 0, y : 0 }
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.encodeURLParam = function (param)
    {
        if (param === null | xmUtil.isUndefined(param))
            return '';
        return encodeURIComponent(param);
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getStyleProp = function (element, property)
    {
        var el = $(element), value;

        if (el.currentStyle)
            var value = el.currentStyle[property];
        else if (window.getComputedStyle)
            var value = document.defaultView.getComputedStyle(el, null).getPropertyValue(property);

        return value;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.htmlSpecialChars = function (aString)
    {
        return (aString + "").replace('&','&amp;').replace('<', '&lt;').replace('>','&gt;');
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.hideElement = function (el)
    {
        var obj = $(el);
        if (!obj) return;
        if (!obj.style) return;
        obj.style.display = "none";
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.showElement = function (el, type)
    {
        var obj = $(el);
        if (!obj) return;
        if (!obj.style) return;
        obj.style.display = xmUtil.isUndefined(type) ? "block" : type;
    }


    var __atSign = '(malpa)', __dotSign = "(kropka)";
    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.decodeEmailLink = function (aElement)
    {
        aElement = $(aElement);
        try
        {
            aElement.innerHTML = aElement.innerHTML.replace(new RegExp(xmUtil.regExpEscape(__atSign),'ig'), '@').replace(new RegExp(xmUtil.regExpEscape(__dotSign),'ig'), '.');
            aElement.href = aElement.href.replace(new RegExp(xmUtil.regExpEscape(encodeURIComponent(__atSign)),'ig'), '@').replace(new RegExp(xmUtil.regExpEscape(encodeURIComponent(__dotSign)),'ig'), '.');
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.decodeEmailLinks = function ()
    {
        var links = document.body.getElementsByTagName("a");
        try
        {
            var i;
            for (i in links)
                if (links[i].href && links[i].href.substring(0, 7) == "mailto:")
                    xmUtil.decodeEmailLink(links[i]);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getObjProperty = function (aObj, aProperty)
    {
        eval("var value = aObj." + aProperty);
        return value;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.setObjectProperty = function (aObj, aProperty, aVal)
    {
        eval("aObj." + aProperty + " = '" + aVal + "'");
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.regExpEscape = function (exp)
    {
        if (!xmUtil.isString(exp)) return "";
        var specials = ['/', '.', '*', '+', '?', '|', '(', ')', '[', ']', '{', '}', '\\'];
        var re = new RegExp('(\\' + specials.join('|\\') + ')', 'g');
        return exp.replace(re, '\\$1');
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getObjFromArrayById = function (aObjArray, aId)
    {
        var i;
        for (i in aObjArray)
            if (aObjArray[i].id == aId)
                return aObjArray[i];

        return false;
    }


    /*-------------------------------------------------------------------------------------*/
    this.setOpacity = function (aElement, aOpacity)
    {
        try
        {
            with ($(aElement))
            {
                if (window.ActiveXObject)
                     style.filter = "alpha(opacity="+(aOpacity * 100)+")";
                else style.opacity = aOpacity;
            }
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    this.getOpacity = function (aElement)
    {
        try {
            if (window.ActiveXObject)
                 return xmUtil.toInt($(aElement).style.filter.match(/.*alpha\s*\(opacity\s*\=\s*([0-9]*).*/i)[1]) / 100;
            return parseFloat(xmUtil.getStyleProp($(aElement), 'opacity'));
        }
        catch (e) {
            return 1;
        }
    }


    /*-------------------------------------------------------------------------------------*/
    this.getWindowInnerHeight = function ()
    {
        return xmUtil.getSiteH();
    }


    /*-------------------------------------------------------------------------------------*/
    this.getWindowInnerWidth = function ()
    {
        return xmUtil.getSiteW();
    }


    /*-------------------------------------------------------------------------------------*/
    this.getSiteH = function ()
    {
        return Math.max(Math.max(window.document.body.offsetHeight, window.innerHeight ? window.innerHeight : window.document.documentElement.clientHeight), window.document.documentElement.scrollHeight);
    }


    /*-------------------------------------------------------------------------------------*/
    this.getSiteW = function ()
    {
        return Math.max(window.innerWidth ? window.innerWidth : window.document.documentElement.clientWidth, window.document.documentElement.scrollWidth);
    }


    /*-------------------------------------------------------------------------------------*/
    this.getWindowInnerH = function ()
    {
        return window.innerHeight ? window.innerHeight : window.document.documentElement.clientHeight;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getWindowInnerW = function ()
    {
        return window.innerWidth ? window.innerWidth : window.document.documentElement.clientWidth;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getWindowInnerRect = function ()
    {
        return {
            w : xmUtil.getWindowInnerW(),
            h : xmUtil.getWindowInnerH(),
            x : window.document.documentElement.scrollLeft,
            y : window.document.documentElement.scrollTop
        }
    }


    /*-------------------------------------------------------------------------------------*/
    this.getMouseSector = function ()
    {
        var wRect = xmUtil.getWindowInnerRect(),
            mouseRelX = xmGlobalEvents.mousePos.x - wRect.x,
            mouseRelY = xmGlobalEvents.mousePos.y - wRect.y,
            xBorder = wRect.w / 2,
            yBorder = wRect.h / 2;

        return mouseRelX < xBorder ? (mouseRelY < yBorder ? 1 : 3) : (mouseRelY < yBorder ? 2 : 4);
    }


    /*-------------------------------------------------------------------------------------*/
    this.checkEmailSyntax = function (aEmail)
    {
        return /^\s*[a-z0-9]+[\w\-\.]*@([\w\-]+\.)+[a-z]+\s*$/i.test(aEmail);
    }


    /*-------------------------------------------------------------------------------------*/
    this.showHideElement = function (aElement)
    {
        try
        {
            aElement = $(aElement);
            aElement.style.display = aElement.style.display == "none" ? "" : "none";
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    this.stringToHash = function (aString, aSeparator)
    {
        if (xmUtil.isUndefined(aSeparator))
            aSeparator = ',';

        var data = aString.split(aSeparator), param, hash = [],
            i;
        for (i in data)
        {
            if (typeof data[i] != "string")
                continue;

            param = data[i].split('=');
            hash[param[0]] = param[1];
        }

        return hash;
    }

    /*-------------------------------------------------------------------------------------*/
    this.replaceCharAt = function (aString, aIndex, aReplacement)
    {
        return "".concat(
            aString.substring(0, aIndex),
            aReplacement,
            aString.substring(aIndex + 1, aString.length));
    }

    /*-------------------------------------------------------------------------------------*/
    this.getUpperFolder = function (aFolder)
    {
        var folders = aFolder.split('/'),
            result = '';

        for (var i = 0; i < folders.length - 2; i++)
            if (folders[i] != '')
                result += folders[i] + '/';

        return result;
    }


    /*-------------------------------------------------------------------------------------*/
    this.lTrim = function ( value )
    {
        var re = /\s*((\S+\s*)*)/;
        return value.replace(re, "$1");

    }


    /*-------------------------------------------------------------------------------------*/
    this.rTrim = function( value )
    {
        var re = /((\s*\S+)*)\s*/;
        return value.replace(re, "$1");
    }


    /*-------------------------------------------------------------------------------------*/
    this.trim = function( value )
    {
        return xmUtil.lTrim(xmUtil.rTrim(value));
    }


    /*-------------------------------------------------------------------------------------*/
    this.fileName = function( aPath )
    {
        var pathParts = aPath.split(/\\|\//);
        return pathParts[pathParts.length - 1];
    }


    /*-------------------------------------------------------------------------------------*/
    this.fileExtension = function( aPath )
    {
        var pathParts = aPath.split('.');
        return pathParts[pathParts.length - 1];
    }


    /*-------------------------------------------------------------------------------------*/
    this.moveOptions = function( aSource, aDestination )
    {
        aSource = $(aSource);
        aDestination = $(aDestination);

        if (!aSource || !aDestination) return false;

        for (var i = aSource.length - 1; i >= 0; i--)
        {
            if (!aSource.options[i].selected) continue;
            aDestination.options[aDestination.options.length] = new Option(aSource.options[i].text, aSource.options[i].value);
            aSource.options[i] = null;
        }

        return true;
    }


    /*-------------------------------------------------------------------------------------*/
    this.executeScriptTags = function(aContainer, aStringContent)
    {
        if (xmUtil.isString(aStringContent))
        {
            aContainer = document.createElement('span');
            aContainer.innerHTML = aStringContent;
        }
        else aContainer = $(aContainer);

        if(!aContainer) return;

        var elements = [];
        xmUtil.getChildNodesList(aContainer, elements, 'script', true);

        var i;
        for (i in elements)
        {
            if (!xmUtil.isObject(elements[i])) continue;
            try
            {
                if (elements[i].src != '')
                {
                    var newElement = document.createElement('script');
                    elements[i].parentNode.appendChild(newElement);
                    newElement.src = elements[i].src;
                    elements[i].parentNode.removeChild(elements[i]);
                }
                window.eval(elements[i].innerHTML);
            }
            catch (e) { continue; }
        }
    }


    /*-------------------------------------------------------------------------------------*/
    this.createXHRObject = function()
    {
        if(window.XMLHttpRequest)
        {
            try {
                return new XMLHttpRequest();
            } catch(e) {
                return false;
            }
        }
        else if(window.ActiveXObject)
        {
            var xhrVersions = new Array(
                'MSXML2.XMLHTTP.6.0',
                'MSXML2.XMLHTTP.5.0',
                'MSXML2.XMLHTTP.4.0',
                'MSXML2.XMLHTTP.3.0',
                'MSXML2.XMLHTTP',
                'Microsoft.XMLHTTP'
            );

            for (var i = 0; i < xhrVersions.length && !this.fXhr; i++)
            {
                try
                {
                    return new ActiveXObject(xhrVersions[i]);
                }
                catch (e) { continue; }
            }
        }
        return false;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getFormElementByName = function(aForm, aName)
    {
        for (var i = 0; i < aForm.length; i++)
            if (aForm[i].name == aName)
                return aForm[i];
        return false;
    }


    /*-------------------------------------------------------------------------------------*/
    this.removePrecedentSlash = function(aPath)
    {
        if (aPath.charAt(0) == '/' || aPath.charAt(0) == '\\')
            return aPath.substr(1, aPath.length);
        return aPath;
    }


    /*-------------------------------------------------------------------------------------*/
    this.validateTextAreaLength = function(aEvent, aTextArea, aMaxLength)
    {
        aEvent = (aEvent) ? aEvent : window.event;

        var ctrlKeys = {
            37 : 1, // left
            38 : 1, // up
            39 : 1, // right
            40 : 1, // down
            8  : 1, // backspace
            46 : 1, // delete
            9  : 1, // tab
            33 : 1, // pgUp
            34 : 1, // pgDown
            17 : 1, // ctrl
            18 : 1, // alt
            20 : 1, // caps
            16 : 1, // shift
            35 : 1, // home
            36 : 1, // end
            44 : 1  // printSrc
         }, i, keyCode;

        if (aEvent.keyCode)
             keyCode = aEvent.keyCode
        else keyCode = aEvent.which;

        try
        {
            if (aTextArea.value.length > aMaxLength)
            {
                return (keyCode in ctrlKeys);
            }
            return true;
        }
        catch (e)
        {
            return true;
        }
    }


    /*-------------------------------------------------------------------------------------*/
    this.toggleFormElements = function(aParent, aEnable, aRememberState)
    {
        var elements = [
            aParent.getElementsByTagName('input'),
            aParent.getElementsByTagName('textarea'),
            aParent.getElementsByTagName('button')
        ], i, j;

        for (i in elements)
            for (j in elements[i])
            {
                if (aRememberState)
                {
                    if (aEnable)
                         elements[i][j]._beforeEnableState = elements[i][j].disabled;
                    else elements[i][j]._beforeDisableState = elements[i][j].disabled;
                }
                //else
                {
                    elements[i][j].disabled =
                        aEnable ?
                            (xmUtil.isUndefined(elements[i][j]._beforeDisableState) ? true : elements[i][j]._beforeDisableState )
                            :
                            (xmUtil.isUndefined(elements[i][j]._beforeEnableState) ? false : elements[i][j]._beforeEnableState);
                }
            }
    }


    /*-------------------------------------------------------------------------------------*/
    this.getZIndex = function(aElement, aDefault, aDefaultOnAuto)
    {
        var index = xmUtil.getStyleProp(aElement, 'z-index') ? xmUtil.getStyleProp(aElement, 'z-index') : xmUtil.getStyleProp(aElement, 'zIndex');
        if (index == 'auto' && aDefaultOnAuto)
            return aDefault;
        return /[0-9]+/.test(index) ? parseInt(index) : aDefault;
    }


    /*-------------------------------------------------------------------------------------*/
    this.slideElement = function(aElement, aDoSlideUp)
    {
        aElement = $(aElement);
        if (!aElement) return;

        var destHeight = 0
            forceSlideDirection = !xmUtil.isUndefined(aDoSlideUp);

        if (!aElement.offsetHeight)
        {
            if (forceSlideDirection && aDoSlideUp)
                return;
            aElement.style.height = "auto";
            aElement.style.overflow = "auto";
            destHeight = aElement.offsetHeight;
            aElement.style.height = "0px";
        }
        else if (forceSlideDirection && !aDoSlideUp) return;

        aElement.style.overflow = "hidden";

        xmEffects.transformValue(aElement, aElement.offsetHeight, destHeight, 40, 20, null,
            function(aThread)
            {
                aThread['id'].style.height = aThread['value'] + "px";
            }
        );
    }


    /*-------------------------------------------------------------------------------------*/
    this.getElementCaretPos = function (aElement)
    {
        var iCaretPos = 0;
        aElement = $(aElement);

        if (document.selection)
        {
            aElement.focus ();
            var oSel = document.selection.createRange ();
            oSel.moveStart ('character', -aElement.value.length);
            iCaretPos = oSel.text.length;
        }
        else
            if (aElement.selectionStart || aElement.selectionStart == '0')
                iCaretPos = aElement.selectionStart;

        return (iCaretPos);
    }


    /*-------------------------------------------------------------------------------------*/
    this.setElementCaretPos = function (aElement, aCaretPos)
    {
        aElement = $(aElement);
        if (aElement.createTextRange)
        {
            var range = aElement.createTextRange();
            range.collapse(true);
            range.moveEnd('character', aCaretPos);
            range.moveStart('character', aCaretPos);
            range.select();
        }
        else if (aElement.selectionStart || aElement.selectionStart == '0')
        {
            aElement.selectionStart = aCaretPos;
            aElement.selectionEnd = aCaretPos;
            aElement.focus();
        }
    }


    /*-------------------------------------------------------------------------------------*/
    this.inputFilter = new function()
    {
        this._maskChars = {
            '9' : {
                exp : /[0-9]{1}/,
                alt : '_'
            },

            'A' : {
                exp : /[a-z]{1}/i,
                alt : '_'
            },

            'L' : {
                exp : /[a-z]{1}/i,
                alt : '_',
                trans : function(aChar) { return aChar.toLowerCase() }
            },

            'U' : {
                exp : /[a-z]{1}/i,
                alt : '_',
                trans : function(aChar) { return aChar.toUpperCase() }
            }
        }

        this._keys = {
            arrows : {
                37 : 1, // left
                38 : 1, // up
                39 : 1, // right
                40 : 1  // down
            },
            erase : {
                8  : 1, // backspace
                46 : 1  // delete
            },
            allowed : {
                9  : 1, // tab
                33 : 1, // pgUp
                34 : 1, // pgDown
                17 : 1, // ctrl
                18 : 1, // alt
                20 : 1, // caps
                16 : 1, // shift
                35 : 1, // home
                36 : 1, // end
                44 : 1, // printSrc,
                144: 1  // numlock
            }
        }


        /*-------------------------------------------------------------------------------------*/
        this.applyTo = function(aInput, aMask, aResult, aNoMatchReplacements)
        {
           if (!(aInput = $(aInput)))
                return;

           var maskChar, displayMask = aMask;

           for (maskChar in xmUtil.inputFilter._maskChars)
                displayMask = displayMask.replace(new RegExp(maskChar, 'g'), xmUtil.inputFilter._maskChars[maskChar].alt);

           this.validateInput(aMask, aInput);
           aInput._xminputfilter = {
                mask : aMask,
                result : aResult,
                noMatchAlts : aNoMatchReplacements
           }

           var handler = new Function('event', "return xmUtil.inputFilter.execFilterEvent(window.event ? window.event : event)");
           if (window.opera)
                aInput.onkeypress = handler;
           else aInput.onkeydown = handler;

           var firstEditable = -1;
           while (!xmUtil.inputFilter._maskChars[aMask.charAt(++firstEditable)]);

           aInput.onfocus = new Function("xmUtil.setElementCaretPos(this, " + firstEditable + ")");
        }


        /*-------------------------------------------------------------------------------------*/
        this.execFilterEvent = function(aEvent)
        {
            if (!(input = aEvent.target || aEvent.srcElement))
                return;

            var mask;

            if (!input._xminputfilter || !xmUtil.isString(mask = input._xminputfilter.mask))
                return;

            input.onkeyup = null;

            if (window.opera && input.onkeydown)
            {
                input.onkeypress = input.onkeydown;
                input.onkeydown = null;
                return true;
            }

            var keyCode = aEvent.keyCode || aEvent.which,
                keyChar = String.fromCharCode(keyCode),
                caretPos = xmUtil.getElementCaretPos(input),
                maskChar = mask.charAt(caretPos),
                isPrintable = new RegExp('[0-9a-z]{1}', 'i'),
                deleteCharacterIndex = 0;

            if (xmUtil.inputFilter._keys.allowed[keyCode] || xmUtil.inputFilter._keys.arrows[keyCode])
                return true;

            if (isPrintable.test(keyChar))
            {
                if (caretPos >= mask.length)
                    return false;

                caretPos = xmUtil.inputFilter.validateInput(mask, input, caretPos);
                maskChar = mask.charAt(caretPos);

                if (!xmUtil.inputFilter._maskChars[maskChar])
                    return false;

                if (xmUtil.inputFilter._maskChars[maskChar].exp.test(keyChar))
                {
                    deleteCharacterIndex = caretPos;
                    if (mask.length > (caretPos + 1) && !xmUtil.inputFilter._maskChars[mask.charAt(caretPos + 1)])
                        caretPos = xmUtil.inputFilter.validateInput(mask, input, caretPos + 1);
                    else caretPos++;

                    input.value = xmUtil.replaceCharAt(input.value, deleteCharacterIndex, '');
                    input.value = input.value.substr(0, mask.length);
                    xmUtil.setElementCaretPos(input, deleteCharacterIndex);

                    if (xmUtil.isFunction(xmUtil.inputFilter._maskChars[maskChar].trans))
                         input.onkeyup = new Function(
                            "this.value = xmUtil.replaceCharAt(this.value, " + (deleteCharacterIndex) + ", '" + xmUtil.inputFilter._maskChars[maskChar].trans(keyChar) + "');"+
                            "xmUtil.setElementCaretPos(this, " + caretPos + ");");
                    else input.onkeyup = new Function("xmUtil.setElementCaretPos(this, " + caretPos + ")");

                    return true;
                }

                return false;
            }

            if (xmUtil.inputFilter._keys.erase[keyCode])
            {
                if (window.opera)
                {
                    input.value = input.value.substr(0, mask.length + (caretPos == mask.length ? 0 : -1));
                    input.onkeyup = new Function('event',
                        "xmUtil.inputFilter.validateInput('" + mask + "', this);"+
                        "xmUtil.setElementCaretPos(this, " + (caretPos + (keyCode == 8 ? -1 :0)) + ");");
                    return true;
                }
                else
                {
                    if (keyCode == 46)
                    {
                        if (xmUtil.inputFilter._maskChars[mask.charAt(caretPos)] && input.value.charAt(caretPos) != '')
                            input.value = xmUtil.replaceCharAt(input.value, caretPos, xmUtil.inputFilter._maskChars[mask.charAt(caretPos)].alt);
                    }
                    else if (keyCode == 8)
                    {
                        while (!xmUtil.inputFilter._maskChars[mask.charAt(caretPos - 1)] && caretPos >= 0)
                            caretPos--;
                        if (input.value.charAt(caretPos - 1) != '')
                            input.value = xmUtil.replaceCharAt(input.value, --caretPos, xmUtil.inputFilter._maskChars[mask.charAt(caretPos)].alt);
                    }
                    input.value = input.value.substr(0, mask.length);
                    xmUtil.setElementCaretPos(input, caretPos);
                }
            }

            return false;
        }


        /*-------------------------------------------------------------------------------------*/
        this.validateInput = function(aMask, aInput, aStartPos)
        {
            var maskChar;

            if (xmUtil.isUndefined(aStartPos))
            {
                aStartPos = -1;
                while (aMask.length > ++aStartPos)
                {
                    maskChar = aMask.charAt(aStartPos);

                    if (!xmUtil.inputFilter._maskChars[maskChar])
                         aInput.value = xmUtil.replaceCharAt(aInput.value, aStartPos, maskChar);
                    else if (!xmUtil.inputFilter._maskChars[maskChar].exp.test(aInput.value.charAt(aStartPos)))
                         aInput.value = xmUtil.replaceCharAt(aInput.value, aStartPos, xmUtil.inputFilter._maskChars[maskChar].alt);
                }
            }
            else
                while (aMask.length > aStartPos && !xmUtil.inputFilter._maskChars[aMask.charAt(aStartPos)])
                    aInput.value = xmUtil.replaceCharAt(aInput.value, aStartPos, aMask.charAt(aStartPos++));

            return aStartPos;
        }
    }


    /*-------------------------------------------------------------------------------------*/
    this.toASCIString = function (aString)
    {
        var search = [
                'ą','Ą',
                'ć','Ć',
                'ę','Ę',
                'ł','Ł',
                'ń','Ń',
                'ó','Ó',
                'ś','Ś',
                'ż','Ż',
                'ź','Ź'
            ],
            replace = [
                'a','A',
                'c','C',
                'e','E',
                'l','L',
                'n','N',
                'o','O',
                's','S',
                'z','Z',
                'z','Z'
            ];

        for (var i = 0; i < search.length; i++)
            aString = aString.replace(search[i], replace[i]);

        return aString;
    }
}



/* INCLUDED FILE: xmpack/js_source/xm_dragging.lib.js */


var xmDragging = new function()
{
    this._objects = [],
    this.prefix = "_dragging_";


    /*-------------------------------------------------------------------------------------*/
    this.isRegistered = function (aHook)
    {
        return xmUtil.isObject(this._objects[aHook]);
    }


    /*-------------------------------------------------------------------------------------*/
    this.registerObject = function (aHook, aTarget, aAllowNegativeCoords, aUserData, aClearExistingHandlers)
    {
        var h = $(aHook);
        if (!h) return false;

        this._objects[aHook] = {
            hook          : h,
            target        : aTarget,
            allowNegative : aAllowNegativeCoords,
            x             : 0,
            y             : 0,
            userData      : aUserData
        }

        return xmObjectEvents.attachHandler(
            h,
            "onmousedown",
            new Function("xmDragging._start(xmDragging._objects['" + aHook + "'])"),
            aUserData,
            false,
            aClearExistingHandlers
        );
    }


    /*-------------------------------------------------------------------------------------*/
    this.unregisterObject = function (aHook)
    {
        xmGlobalEvents.unregisterHandler(xmDragging.prefix + aHook, "mousemove");
        xmGlobalEvents.unregisterHandler(xmDragging.prefix + aHook, "mouseup");
        delete xmDragging._objects[aHook];
        return true;
    }


    /*-------------------------------------------------------------------------------------*/
    this._start = function (aElement)
    {
        if (!xmUtil.isObject(aElement)) return;

        if (!$(aElement.hook) || !$(aElement.target))
             return;

        aElement.x = xmGlobalEvents.mousePos.x;
        aElement.y = xmGlobalEvents.mousePos.y;

        if (!xmGlobalEvents.registerHandler(xmDragging.prefix + aElement.hook, "mouseup", xmDragging._onStop, aElement))
            return;

        if (!xmGlobalEvents.registerHandler(xmDragging.prefix + aElement.hook, "mousemove", xmDragging._onDragg, aElement))
            xmGlobalEvents.unregisterHandler(xmDragging.prefix + aElement.hook, "mouseup");
    }


    /*-------------------------------------------------------------------------------------*/
    this._onStop = function (aEvent, aElement)
    {
        xmGlobalEvents.unregisterHandler(xmDragging.prefix + aElement.hook, "mousemove");
        xmGlobalEvents.unregisterHandler(xmDragging.prefix + aElement.hook, "mouseup");
    }


    /*-------------------------------------------------------------------------------------*/
    this._onDragg = function (aEvent, aElement)
    {
        var hook   = $(aElement.hook),
            target = $(aElement.target);

        if (!target) return;

        var newX   = xmUtil.toInt(target.style.left) + xmUtil.toInt(xmGlobalEvents.mousePos.x - aElement.x),
            newY   = xmUtil.toInt(target.style.top)  + xmUtil.toInt(xmGlobalEvents.mousePos.y - aElement.y);

        if (!aElement.allowNegative)
        {
            if (newX < 0) newX = 0;
            if (newY < 0) newY = 0;
        }

        target.style.left = newX + "px";
        target.style.top  = newY + "px";
        aElement.x = xmGlobalEvents.mousePos.x;
        aElement.y = xmGlobalEvents.mousePos.y;

        xmUtil.clearDocumentSelection();
    }
}



/* INCLUDED FILE: xmpack/js_source/xm_effects.lib.js */

var xmEffects = new function()
{

    /*****************************************************************************************************/
    this._transformValueThreads = [];

    /*****************************************************************************************************/
    this._transformElementAlphaSetFunc = function (aThread)
    {
        xmUtil.setOpacity(aThread['id'], aThread['value']);
    }

    /*****************************************************************************************************/
    this._transformValue = function (aThreadName)
    {
        var thread = this._transformValueThreads[aThreadName];

        if (!xmUtil.isArray(thread)) return;
        if (!xmUtil.isFunction(thread['setfunc'])) return;

        if (thread['value'] < thread['limit'])
        {
            if ((thread['value'] += thread['step']) >= thread['limit'])
            {
                thread['value'] = thread['limit'];
                thread['setfunc'](thread);
                if (xmUtil.isFunction(thread['callback']))
                    this._transformValueCallback(aThreadName);
                return;
            }
        }
        else
        {
            if ((thread['value'] -= thread['step']) <= thread['limit'])
            {
                thread['value'] = thread['limit'];
                thread['setfunc'](thread);
                if (xmUtil.isFunction(thread['callback']))
                    this._transformValueCallback(aThreadName);
                return;
            }
        }

        thread['setfunc'](thread);
        thread['timer'] = setTimeout("xmEffects._transformValue('"+aThreadName+"')", thread['interval']);
    }


    /*****************************************************************************************************/
    this._transformValueCallback = function (aThreadName)
    {
        try
        {
            if (xmUtil.isArray(this._transformValueThreads[aThreadName]))
                if (xmUtil.isFunction(this._transformValueThreads[aThreadName]['callback']))
                    this._transformValueThreads[aThreadName]['callback'](this._transformValueThreads[aThreadName]);
        }
        finally {
            delete this._transformValueThreads[aThreadName];
        }
    }

    /*****************************************************************************************************/
    this.transformValue = function (aThreadName, aValue, aLimit, aStep, aInterval, aCallback, aSetFunc, aUserData)
    {
        var thread = false;

        if (xmUtil.isArray(this._transformValueThreads[aThreadName]))
        {
            clearTimeout(this._transformValueThreads[aThreadName]['timer']);
            thread = this._transformValueThreads[aThreadName];
        }
        else
        {
            thread = [];
            this._transformValueThreads[aThreadName] = thread;
        }

        thread['id'] = aThreadName;
        thread['value'] = xmUtil.toInt(aValue);
        thread['timer'] = 0;
        thread['step'] = aStep;
        thread['limit'] = aLimit;
        thread['interval'] = aInterval;
        thread['callback'] = aCallback;
        thread['userdata'] = aUserData;
        thread['setfunc'] = aSetFunc;

        this._transformValue(aThreadName);

    }


    /*****************************************************************************************************/
    this.abortTransformation = function (aThreadName)
    {
        if (xmEffects._transformValueThreads[aThreadName])
        {
            clearTimeout(xmEffects._transformValueThreads[aThreadName]['timer']);
            delete xmEffects._transformValueThreads[aThreadName];
        }
    }


    /*****************************************************************************************************/
    this.transformElementAlpha = function (aElement, aStep, aLimit, aInterval, aCallback, aUserData)
    {
        this.transformValue(aElement, xmUtil.getOpacity(aElement), aLimit, aStep, aInterval, aCallback, this._transformElementAlphaSetFunc, aUserData) ;
    }

}



/* INCLUDED FILE: xmpack/js_source/xm_globalevents.lib.js */


/*-------------------------------------------------------------------------------------*/
/* Global events manager object                                                        */
/*-------------------------------------------------------------------------------------*/

var xmGlobalEvents = new function()
{

    /* mouse coordinates*/
    this.mousePos = { x: null, y: null };

    /* global events handlers arrays*/
    this._onClickEvents      = new Array();
    this._onMouseMoveEvents  = new Array();
    this._onMouseUpEvents    = new Array();
    this._onMouseDownEvents  = new Array();
    this._onScrollEvents     = new Array();
    this._onDblClickEvents   = new Array();
    this._onBlurEvents       = new Array();


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.registerHandler = function (aName, aEventType, aHandler, aUserData)
    {
        aEventType = aEventType.toLowerCase();

        switch (aEventType)
        {
            case 'mousemove':
                xmGlobalEvents._onMouseMoveEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            case 'mouseup':
                xmGlobalEvents._onMouseUpEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            case 'mousedown':
                xmGlobalEvents._onMouseDownEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            case 'click':
                xmGlobalEvents._onClickEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            case 'scroll':
                xmGlobalEvents._onScrollEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            case 'dblclick':
                xmGlobalEvents._onDblClickEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            case 'blur':
                xmGlobalEvents._onDblClickEvents[aName] = {
                    name     : aName,
                    handler  : aHandler,
                    userData : aUserData
                }
            break;

            default: return false;
        }

        return true;
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.unregisterHandler = function (aName, aEventType)
    {
        aEventType = aEventType.toLowerCase();

        switch (aEventType)
        {
            case 'mousemove':
                return delete xmGlobalEvents._onMouseMoveEvents[aName];
            break;

            case 'mouseup':
                return delete xmGlobalEvents._onMouseUpEvents[aName];
            break;

            case 'mousedown':
                return delete xmGlobalEvents._onMouseDownEvents[aName];
            break;

            case 'click':
                return delete xmGlobalEvents._onClickEvents[aName];
            break;

            case 'scroll':
                return delete xmGlobalEvents._onClickEvents[aName];
            break;

            case 'dblclick':
                return delete xmGlobalEvents._onClickEvents[aName];
            break;

            case 'blur':
                return delete xmGlobalEvents._onClickEvents[aName];
            break;

            default: return false;
        }
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onMouseMove = function (aEvent)
    {
	    if (!aEvent)
            var aEvent = window.event;

        try
        {
	        if (aEvent.pageX || aEvent.pageY)
	        {
		        xmGlobalEvents.mousePos.x = aEvent.pageX;
		        xmGlobalEvents.mousePos.y = aEvent.pageY;
	        }
	        else if (aEvent.clientX || aEvent.clientY)
	        {
                var docScroll = xmUtil.getDocumentScroll();
		        xmGlobalEvents.mousePos.x = aEvent.clientX + docScroll.x;
		        xmGlobalEvents.mousePos.y = aEvent.clientY + docScroll.y;
	        }
        }
        catch (e)
        {
            return;
        }

        xmUtil.bubbleEvent(aEvent, false);

        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onMouseMoveEvents)
                if (xmGlobalEvents._onMouseMoveEvents[handlerId])
                    if (typeof xmGlobalEvents._onMouseMoveEvents[handlerId].handler == 'function')
                        xmGlobalEvents._onMouseMoveEvents[handlerId].handler(aEvent, xmGlobalEvents._onMouseMoveEvents[handlerId].userData);
        }
        catch (e) {}

    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onClick = function (aEvent)
    {
        /*/trace("[click]");*/
        xmUtil.bubbleEvent(aEvent, false);
        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onClickEvents)
                if (xmUtil.isFunction(xmGlobalEvents._onClickEvents[handlerId].handler))
                    xmGlobalEvents._onClickEvents[handlerId].handler(aEvent, xmGlobalEvents._onClickEvents[handlerId].userData);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onMouseUp = function (aEvent)
    {
    /*    trace("[mouseup]");*/
        xmUtil.bubbleEvent(aEvent, false);
        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onMouseUpEvents)
                if (xmUtil.isFunction(xmGlobalEvents._onMouseUpEvents[handlerId].handler))
                    xmGlobalEvents._onMouseUpEvents[handlerId].handler(aEvent, xmGlobalEvents._onMouseUpEvents[handlerId].userData);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onMouseDown = function (aEvent)
    {
    /*    trace("[mousedown]");*/
        xmUtil.bubbleEvent(aEvent, false);
        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onMouseDownEvents)
                if (xmUtil.isFunction(xmGlobalEvents._onMouseDownEvents[handlerId].handler))
                    xmGlobalEvents._onMouseDownEvents[handlerId].handler(aEvent, xmGlobalEvents._onMouseDownEvents[handlerId].userData);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onScroll = function (aEvent)
    {
    /*    trace("[onscroll]");*/
        xmUtil.bubbleEvent(aEvent, false);
        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onScrollEvents)
                if (xmUtil.isFunction(xmGlobalEvents._onScrollEvents[handlerId].handler))
                    xmGlobalEvents._onScrollEvents[handlerId].handler(aEvent, xmGlobalEvents._onScrollEvents[handlerId].userData);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onDblClick = function (aEvent)
    {
    /*    trace("[dblclick]");*/
        xmUtil.bubbleEvent(aEvent, false);
        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onDblClickEvents)
                if (xmUtil.isFunction(xmGlobalEvents._onDblClickEvents[handlerId].handler))
                    xmGlobalEvents._onDblClickEvents[handlerId].handler(aEvent, xmGlobalEvents._onDblClickEvents[handlerId].userData);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._onBlur = function (aEvent)
    {
    /*    trace("[onblur]");*/
        xmUtil.bubbleEvent(aEvent, false);
        try
        {
            var handlerId;
            for (handlerId in xmGlobalEvents._onBlurEvents)
                if (xmUtil.isFunction(xmGlobalEvents._onBlurEvents[handlerId].handler))
                    xmGlobalEvents._onBlurEvents[handlerId].handler(aEvent, xmGlobalEvents._onBlurEvents[handlerId].userData);
        }
        catch (e) {}
    }
}



    /*-------------------------------------------------------------------------------------*/
    /* Attach global events handlers                                                       */
    /*-------------------------------------------------------------------------------------*/

    window.document.onmousemove = xmGlobalEvents._onMouseMove;
    window.document.onmouseup   = xmGlobalEvents._onMouseUp;
    window.document.onmousedown = xmGlobalEvents._onMouseDown;
    window.document.onclick     = xmGlobalEvents._onClick;
    window.onscroll             = xmGlobalEvents._onScroll;
    window.document.ondblclick  = xmGlobalEvents._onDblClick;
    window.onblur               = xmGlobalEvents._onBlur;



/* INCLUDED FILE: xmpack/js_source/xm_imgpresentation.lib.js */

var xmImgPresentation = new function()
{

    /*****************************************************************************************************/
    this._init = function ()
    {
        try
        {
            if (!this._cfg._wnd || this._cfg._wnd.parentNode != document.body)
            {
                /** temporary container for template code */
                var container = document.createElement("span");

                with (container) with (this._cfg)
                {
                    innerHTML = __xmTemplates['xm_imgpresentation.lib'];

                    var elements = [];
                    xmUtil.getChildNodesList(container, elements, null, true);

                    _wnd = xmUtil.getObjFromArrayById(elements, 'window');
                    if (!_wnd) return false;

                    _imgContainer = xmUtil.getObjFromArrayById(elements, 'imgContainer');
                    if (!_imgContainer) return false;

                    if (_infoContainer = xmUtil.getObjFromArrayById(elements, 'infoContainer'))
                        _info = xmUtil.getObjFromArrayById(elements, 'info');

                    if (_captionContainer = xmUtil.getObjFromArrayById(elements, 'captionContainer'))
                        _caption = xmUtil.getObjFromArrayById(elements, 'caption');

                    if (_loaderContainer = xmUtil.getObjFromArrayById(elements, 'loaderContainer'))
                        _loader = xmUtil.getObjFromArrayById(elements, 'loader');

                    _blockWnd = xmUtil.getObjFromArrayById(elements, 'blockWindow');

                    _wnd.id = _imgContainer.id = _captionContainer.id = _loaderContainer.id = _infoContainer.id = _caption.id = _loader.id = _info.id = "";

                    _wnd.style.display = "none";
                    window.document.body.appendChild(_wnd);

                    if (_blockWnd)
                    {
                        _blockWnd.style.display = "none";
                        window.document.body.appendChild(_blockWnd);
                    }
                }
            }

            if (!this._cfg._wnd || this._cfg._wnd.parentNode != document.body)
                return false;

            return true;
        }
        catch (e) { return false; }
    }


    /*****************************************************************************************************/
    this._onError = function ()
    {
        xmImgPresentation.xmImgPresentationHideImage();
    }


    /*****************************************************************************************************/
    this._onAbort = function ()
    {
        xmImgPresentation.xmImgPresentationHideImage();
    }


    /*****************************************************************************************************/
    this._onLoad = function ()
    {
        with (xmImgPresentation._cfg)
        {
            _effects[_currentEffect]['onload']();
        }
    }


    /*****************************************************************************************************/
    this._onClose = function ()
    {
        with (xmImgPresentation._cfg)
        {
            _effects[_currentEffect]['onunload']();
            xmImgPresentation._blockSite(false);
        }
    }


    /*****************************************************************************************************/
    this._blockSite = function (aBlock)
    {
        with (xmImgPresentation._cfg)
        {
            if (!_blockWnd) return;
            _blockWnd.style.width = "100%";
            _blockWnd.style.position = "absolute";
            _blockWnd.style.top = _blockWnd.style.left = 0;
            _blockWnd.style.zIndex = parseFloat(xmUtil.getStyleProp(_wnd, 'z-index') ? xmUtil.getStyleProp(_wnd, 'z-index') : xmUtil.getStyleProp(_wnd, 'zIndex')) - 2;
            _blockWnd.style.height = xmUtil.getWindowInnerHeight() + "px";
            _blockWnd.style.display = aBlock ? "block" : "none";
        }
    }


    /*****************************************************************************************************/
    this.show = function (aImagePath, aCaption, aEffect, aEffectOptions, aBlockSite)
    {
        with (this._cfg)
        {
            if (_img)
                _img.onload = _img.onerror = _img.onabort = null;

            if (!this._init())
            {
                alert("Błąd! Nie można zainicjalozować okna prezentacji!");
                return false;
            }

            /* ukrywamy wszystko po kolei*/
            if (_captionContainer) {
                if (_caption)
                    _caption.innerHTML = xmUtil.isString(aCaption) ? aCaption : "";
                _captionContainer.style.display = "none";
            }

            if (_infoContainer && _info)
                _infoContainer.style.display = "none";

            _imgContainer.style.display = "none";

            _currentEffect = xmUtil.isArray(_effects[aEffect]) ? aEffect : _defaultEffect;
            _currentEffectOptions = !xmUtil.isUndefined(aEffectOptions) ? aEffectOptions : _defaultEffectOptions;
            _currentBlockSite = !xmUtil.isUndefined(aBlockSite) ? aBlockSite : _defaultBlockSite;

    /*         pokazujemy jedynie loadera*/
            if (_loaderContainer && _loader)
                _loaderContainer.style.display = "";

    /*         tworzymy obiekt obrazu*/
            _img = new Image();
            _img.error = this._onError;
            _img.onabort = this._onAbort;
            _img.onload = this._onLoad;

            this._blockSite(_currentBlockSite);
            xmUtil.setOpacity(_wnd, 0);
            _wnd.onclick = this._onClose;
            _wnd.style.display = "block";

            xmUtil.centerWindow(_wnd);
            xmUtil.setOpacity(_wnd, 1);

            _img.src = aImagePath;// + "?" + (new Date()).getTime();
        }

        return true;
    }

    /*****************************************************************************************************/
    this._onLoad_FadeIn = function ()
    {
    /*     na początku okno jest całkowicie przezroczyste*/
        xmUtil.setOpacity(xmImgPresentation._cfg._wnd, 0);

    /*     pokazujemy wszystko oprócz loadera*/
        if (xmImgPresentation._cfg._captionContainer)
            xmImgPresentation._cfg._captionContainer.style.display = "";

        if (xmImgPresentation._cfg._infoContainer && xmImgPresentation._cfg._info)
            xmImgPresentation._cfg._infoContainer.style.display = "";

        xmImgPresentation._cfg._imgContainer.style.display = "";

    /*     ukrywamy jedynie loadera*/
        if (xmImgPresentation._cfg._loaderContainer && xmImgPresentation._cfg._loader)
            xmImgPresentation._cfg._loaderContainer.style.display = "none";

        if (xmImgPresentation._cfg._img.width > xmImgPresentation._cfg._windowW || xmImgPresentation._cfg._img.height > xmImgPresentation._cfg._windowH)
        {
            var ratio = Math.min(xmImgPresentation._cfg._windowW / xmImgPresentation._cfg._img.width, xmImgPresentation._cfg._windowH / xmImgPresentation._cfg._img.height);
            xmImgPresentation._cfg._img.width = Math.round(ratio * xmImgPresentation._cfg._img.width);
            xmImgPresentation._cfg._img.height = Math.round(ratio * xmImgPresentation._cfg._img.height);
        }

        xmImgPresentation._cfg._wnd.style.top = xmImgPresentation._cfg._wnd.style.left = "-1000px";
        xmImgPresentation._cfg._imgContainer.innerHTML = "";
        xmImgPresentation._cfg._imgContainer.appendChild(xmImgPresentation._cfg._img);

        xmUtil.centerWindow(xmImgPresentation._cfg._wnd);

        xmEffects.transformElementAlpha(xmImgPresentation._cfg._wnd, 0.1, 1, 50);
    }


    /*****************************************************************************************************/
    this._onLoad_SlideIn = function ()
    {
        with (xmImgPresentation._cfg)
        {
    /*         na początku okno jest całkowicie przezroczyste*/
            xmUtil.setOpacity(_wnd, 0);

    /*         pokazujemy wszystko oprócz loadera*/
            if (_captionContainer)
                _captionContainer.style.display = "";

            if (_infoContainer && _info)
                _infoContainer.style.display = "";

            _imgContainer.style.display = "";

    /*         ukrywamy jedynie loadera*/
            if (_loaderContainer && _loader)
                _loaderContainer.style.display = "none";

            if (xmImgPresentation._cfg._img.width > xmImgPresentation._cfg._windowW || xmImgPresentation._cfg._img.height > xmImgPresentation._cfg._windowH)
            {
                var ratio = Math.min(_windowW / _img.width, _windowH / _img.height);
                _img.width = Math.round(ratio * _img.width);
                _img.height = Math.round(ratio * _img.height);
            }

            _imgContainer.innerHTML = "";
            _imgContainer.appendChild(_img);

            xmUtil.centerWindow(_wnd);

            if (_currentEffectOptions == 5)
                _currentEffectOptions = Math.ceil(Math.random() * 3);

            var slideCoords = xmImgPresentation._slideGetCoords();

            if (_currentEffectOptions < 2)
                 _wnd.style.top = slideCoords.start;
            else _wnd.style.left = slideCoords.start;

            xmUtil.setOpacity(_wnd, 1);
            xmEffects.transformValue("xmImgPresentationSlideIn", slideCoords.start, slideCoords.stop, 80, 30, null, xmImgPresentation._onLoad_SlideIn_setPos);
        }
    }


    /*****************************************************************************************************/
    this._onLoad_SlideIn_setPos = function (aThread)
    {
        if (xmImgPresentation._cfg._currentEffectOptions < 2)
             xmImgPresentation._cfg._wnd.style.top = aThread['value'] + "px";
        else xmImgPresentation._cfg._wnd.style.left = aThread['value'] + "px";
    }


    /*****************************************************************************************************/
    this._onLoad_FadeOut = function ()
    {
        xmEffects.transformElementAlpha(xmImgPresentation._cfg._wnd, 0.1, 0, 50, xmImgPresentation.hide);
    }


    /*****************************************************************************************************/
    this._onLoad_SlideOut = function ()
    {
        with (xmImgPresentation._cfg)
        {
            var slideCoords = xmImgPresentation._slideGetCoords();
            xmEffects.transformValue("xmImgPresentationSlideIn", slideCoords.stop, slideCoords.start, 120, 30, xmImgPresentation.hide, xmImgPresentation._onLoad_SlideIn_setPos);
        }
    }

    /*****************************************************************************************************/
    this._slideGetCoords = function ()
    {
        with (xmImgPresentation._cfg)
        {
            if (_currentEffectOptions == 5)
                _currentEffectOptions = Math.ceil(Math.random() * 3);

            var slideTo = xmUtil.toInt((_currentEffectOptions < 2) ? _wnd.style.top : _wnd.style.left);

            var inH = xmUtil.getWindowInnerHeight(), inW = xmUtil.getWindowInnerWidth(), slideFrom;

            switch (_currentEffectOptions)
            {
                case  3: slideFrom = xmUtil.getWindowInnerWidth() + xmUtil.toInt(_wnd.offsetWidth); break;
                case  2: slideFrom = - xmUtil.toInt(_wnd.offsetWidth); break;
                case  1: slideFrom = xmUtil.getWindowInnerHeight() + xmUtil.toInt(_wnd.offsetHeight); break;
                default: slideFrom = - xmUtil.toInt(_wnd.offsetHeight);
            }
        }

        return {start : slideFrom, stop : slideTo};
    }


    /*****************************************************************************************************/
    this.hide = function ()
    {
       xmImgPresentation._cfg._wnd.style.display = "none";
    }

    this._cfg =
    {
        _img : false,
        _imgContainer : false,

        _loader: false,
        _loaderContainer: false,

        _info : false,
        _infoContainer : false,

        _caption : false,
        _captionContainer : false,

        _wnd : false,

        _blockWnd : false,

        _timer : false,

        _windowW : 640,
        _windowH : 480,

        _currentEffect : "",
        _currentEffectOptions : null,
        _currentBlockSite : false,

        _defaultEffect : "fadein-fadeout",
        _defaultEffectOptions : 5,
        _defaultBlockSite : false

    }
}

with (xmImgPresentation._cfg)
{
    _effects = {
        "fadein-fadeout" : {
            'onload' : xmImgPresentation._onLoad_FadeIn,
            'onunload' : xmImgPresentation._onLoad_FadeOut
        },
        "fadein-slideout" : {
            'onload' : xmImgPresentation._onLoad_FadeIn,
            'onunload' : xmImgPresentation._onLoad_SlideOut
        },
        "slidein-slideout" : {
            'onload' : xmImgPresentation._onLoad_SlideIn,
            'onunload' : xmImgPresentation._onLoad_SlideOut
        },
        "slidein-fadeout" : {
            'onload' : xmImgPresentation._onLoad_SlideIn,
            'onunload' : xmImgPresentation._onLoad_FadeOut
        }
    }
}



/* INCLUDED FILE: xmpack/js_source/xm_objectevents.lib.js */


/*-------------------------------------------------------------------------------------*/
/* Object events manager object                                                        */
/*--------------r-----------------------------------------------------------------------*/


var xmObjectEvents = new function()
{
    this._handlers = new Array();


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.attachHandler = function (aObject, aEventType, aHandler, aUserData, aNoBubble, aClearExistingTriggers)
    {
        if (!xmUtil.isObject(aObject)) return;

    /*     find or create new object handler*/
        var oHandler = xmObjectEvents._getObjectHandler(aObject, aClearExistingTriggers);

        try
        {
            var objectEvent = null,
                eventTriggers;

    /*         get object event*/
            eval("objectEvent = aObject." + aEventType);

    /*         if this event has no triggers yet, create first one*/
            if (!xmUtil.isArray(oHandler.triggers[aEventType]))
            {
    /*             create triggers array for this event*/
                eventTriggers = oHandler.triggers[aEventType] = [];
    /*             add a handler*/
                eventTriggers[eventTriggers.length] = {
                    handler  : aHandler,
                    userData : aUserData,
                    noBubble : aNoBubble,
                    otherArguments : null
                }
            }
            else
            {
                var eventHandler = xmObjectEvents._findEventHandler(oHandler.triggers[aEventType], aHandler);
                if (eventHandler)
                {
                    eventHandler.handler  = aHandler;
                    eventHandler.userData = aUserData;
                    eventhandler.noBubble = aNoBubble;
                    eventhandler.otherArguments = null;
                }
                else
                {
                    eventTriggers = oHandler.triggers[aEventType];
                    eventTriggers[eventTriggers.length] = {
                        handler  : aHandler,
                        userData : aUserData,
                        noBubble : aNoBubble,
                        otherArguments : null
                    }
                }
            }

    /*         attach oryginal object event*/

            eval("aObject."+aEventType+" = function(aEvent) { return xmObjectEvents._triggerObjectEvent(aEvent, '" + oHandler.id + "', '" + aEventType + "', arguments); }");

            return true;
        }
        catch (e)
        {
            return false;
        }
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.detachHandler = function (aObject, aEventType)
    {
        var oHandler = xmObjectEvents._getObjectHandler(aObject);
        try
        {
            delete (oHandler.triggers[aEventType]);
        }
        catch (e) {}
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._findEventHandler = function (aTriggers, aHandler)
    {
        try
        {
            var key;
            for (key in aTriggers)
                if (xmUtil.isObject(aTriggers[key]))
                    if (aTriggers[key].handler === aHandler)
                        return aTriggers[key];
        }
        catch (e) { return false; }

        return false;
    }

    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._getObjectHandler = function (aObject, aClearExistingTriggers)
    {
        var key;
        for (key in xmObjectEvents._handlers)
            if (xmUtil.isObject(xmObjectEvents._handlers[key]))
                if (xmObjectEvents._handlers[key].object === aObject)
                {
                    if (aClearExistingTriggers)
                        xmObjectEvents._handlers[key].triggers = [];
                    return xmObjectEvents._handlers[key];
                }

        return xmObjectEvents._handlers[xmObjectEvents._handlers.length] = {
            id       : xmObjectEvents._handlers.length,
            object   : aObject,
            triggers : []
        }
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this.getObjectTriggerObject = function (aObject, aEventType, aHandler)
    {
        var key, tkey, hkey;
        for (key in xmObjectEvents._handlers)
            if (xmUtil.isObject(xmObjectEvents._handlers[key]))
                if (xmObjectEvents._handlers[key].object === aObject)
                    for (tkey in xmObjectEvents._handlers[key].triggers)
                        if (tkey == aEventType)
                            for (hkey in xmObjectEvents._handlers[key].triggers[tkey])
                                if (xmObjectEvents._handlers[key].triggers[tkey][hkey].handler == aHandler)
                                    return xmObjectEvents._handlers[key].triggers[tkey][hkey];

        return {};
    }


    /*-------------------------------------------------------------------------------------*/
    /**
     *
     */
    this._triggerObjectEvent = function (aEvent, aObjectHandlerId, aEventType, aOtherArguments)
    {
        try
        {
    /*        trace("["+aEvent+"-"+aObjectHandlerId+"-"+aEventType+"]\n");*/
            var result = true, id,
                triggers = xmObjectEvents._handlers[aObjectHandlerId].triggers[aEventType];

    /*        trace("[looping triggers...]\n");*/
            for (id in triggers)
            {
                if (xmUtil.isFunction(triggers[id].handler))
                {
    /*                trace("[running trigger '"+id+"-"+triggers[id].handler+"-"+triggers[id].userData+"']\n");*/
                    if (typeof aOtherArguments == 'object' && aOtherArguments.length > 1)
                    {
                        triggers[id].otherArguments = aOtherArguments;

                        var arguments = '';
                        for (var argNo = 0; argNo < aOtherArguments.length; argNo++)
                        {
                            if (argNo == 1)
                                 arguments += ', xmObjectEvents._handlers['+aObjectHandlerId+'].triggers["'+aEventType+'"]['+id+'].userData';
                            if (argNo == 0)
                                 arguments += 'xmObjectEvents._handlers['+aObjectHandlerId+'].triggers["'+aEventType+'"]['+id+'].otherArguments['+argNo+']';
                            else arguments += ', xmObjectEvents._handlers['+aObjectHandlerId+'].triggers["'+aEventType+'"]['+id+'].otherArguments['+argNo+']';
                        }

                        window.eval('result = xmObjectEvents._handlers['+aObjectHandlerId+'].triggers["'+aEventType+'"]['+id+'].handler('+arguments+')');
                    }
                    else
                        result = result && triggers[id].handler(aEvent, triggers[id].userData);
                }
                xmUtil.bubbleEvent(aEvent, !triggers[id].noBubble);
            }

            return result;
        }
        catch (e) { return result; }
    }
}



/* INCLUDED FILE: xmpack/js_source/xm_window.lib.js */

/* c_xmWindows library
 *
 *
 */



//  we need to store some custom data in some html elements
try
{
  if (HTMLElement)
      HTMLElement.prototype.userData = null;
}
catch (e) {  }


/*-------------------------------------------------------------------------------------*/
/* xmWindow
 *
 */
function xmWindow(aName, aTemplate, aParent, aCaption, aModal, aWindowManager, aShowCloseButton)
{
    // if something goes wrong fName will be false
    this.fName = false;
    this.userData = false;

    /*---------------------------------------------------------------------------------*/
    /* Methods                                                                         */
    /*---------------------------------------------------------------------------------*/


    /**
     *
     */
    this._savePos = function ()
    {
        try
        {
            this.fDims.x = xmUtil.getElementX(this.fWindow);
            this.fDims.y = xmUtil.getElementY(this.fWindow);
        }
        catch (e) { }
    }


    /**
     *
     */
     /*
    this.visible = function (aVisible)
    {
        if (window.ActiveXObject)
            return this.doVisible(aVisible);

        try
        {
            with (this.fWindow.style)
            {
                if (!xmUtil.isUndefined(aVisible))
                {
                    if (display == "none" && aVisible)
                    {
                        xmUtil.setOpacity(this.fWindow, 0);
                        display = "block";
                    }
                    this.fWindowManager.updateModalWindow();//modal();

                    if (window.ActiveXObject)
                         xmEffects.transformElementAlpha(this.fWindow, 0.4, aVisible ? 1 : 0, 20, aVisible ? function (th) { th['userdata'].doVisible(true); } : function (th) { th['userdata'].doVisible(false); }, this);
                    else xmEffects.transformElementAlpha(this.fWindow, 0.3, aVisible ? 1 : 0, 30, aVisible ? function (th) { th['userdata'].doVisible(true); } : function (th) { th['userdata'].doVisible(false); }, this);
                }
                return (display != "none") ? true : false;
            }
        }
        catch (e) {  }
    }*/



    /**
     *
     */
    this.visible = function (aVisible, aMinimize)
    {
        return xmWindowManager.windowVisible(this, aVisible, aMinimize);
    }


    /**
     *
     */
    this.minimize = function ()
    {
        xmWindowManager.minimize(this);
    }


    /**
     *
     */
    this.restore = function ()
    {
        xmWindowManager.restore(this);
    }


    /**
     *
     */
    this.center = function ()
    {
        try
        {
            with (this.fWindow)
            {
                var oldDisplay = style.display;

                this.moveTo(-9999, -9999, true);
                style.display = '';

                x = Math.floor((xmUtil.getDocumentDmi().w - offsetWidth)  / 2);
                y = Math.floor((xmUtil.getDocumentDmi().h - offsetHeight) / 2);

                style.left = ((x < 0) ? 0 : x) + xmUtil.getDocumentScroll().x + "px";
                style.top  = ((y < 0) ? 0 : y) + xmUtil.getDocumentScroll().y + "px";

                style.display = oldDisplay;
            }
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.destroy = function ()
    {
        try
        {
            this.fWindowManager.destroyWindow(this.aName);
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.allowMoving = function (aAllow)
    {
        try
        {
            if (xmUtil.isUndefined(aAllow))
                return xmDragging.isRegistered(this.fHeader.id);

            if (aAllow)
            {
                if (!xmDragging.isRegistered(this.fHeader.id))
                    xmDragging.registerObject(this.fHeader.id, this.fWindow.id, false, false, true);
            }
            else
            {
                xmDragging.unregisterObject(this.fHeader.id);
            }
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.bringToTop = function()
    {
        xmWindow_BringToTop(null, this);
    }


    /**
     *
     */
    this.bringToTopAndCenter = function()
    {
        this.center();
        xmWindow_BringToTop(null, this);
    }


    /**
     *
     */
    this.bringToTopAndDock = function(aElement)
    {
        aElement = $(aElement);
        if (!aElement) return;

        if (!this.visible())
            xmUtil.setOpacity(this.fWindow, 0);

        this.moveTo(-9999, -9999, true);
        xmWindow_BringToTop(null, this);
        this.moveTo(xmUtil.getElementX(aElement), xmUtil.getElementY(aElement) + aElement.offsetHeight);

        xmUtil.setOpacity(this.fWindow, 1);
    }


    /**
     *
     */
    this.moveTo = function (aX, aY, aNoSave)
    {
        try
        {
            if (!aNoSave || typeof aNoSave == 'undefined')
                this._savePos();

            with (this.fWindow)
            {
                style.left = ((this.allowNegative && aX < 0) ? 0 : parseInt(aX)) + "px";
                style.top  = ((this.allowNegative && aY < 0) ? 0 : parseInt(aY)) + "px";
            }
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.showCloseButton = function (aShow)
    {
        try
        {
            if (this.fCloseButton)
            {
                if (!xmUtil.isUndefined(aShow))
                    this.fCloseButton.style.display = aShow ? "" : "none";
                return this.fCloseButton.style.display == "none" ? false : true;
            }
            return false;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.showMinimizeButton = function (aShow)
    {
        try
        {
            if (this.fMinimizeButton)
            {
                if (!xmUtil.isUndefined(aShow))
                    this.fMinimizeButton.style.display = aShow ? "" : "none";
                return this.fMinimizeButton.style.display == "none" ? false : true;
            }
            return false;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.caption = function (aCaption)
    {
        try
        {
            if (!xmUtil.isUndefined(aCaption))
                return xmWindowManager.taskbar.buttonCaption(this, this.fCaption.innerHTML = aCaption);

            return this.fCaption.innerHTML;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.alwaysOnTop = function (aValue)
    {
        try
        {
            if (!xmUtil.isUndefined(aValue))
                return this.fAlwaysOnTop = aValue ? true : false;

            return this.fAlwaysOnTop;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.content = function (aContent)
    {
        try
        {
            if (!this.fBlockContent && !xmUtil.isUndefined(aContent))
                return this.fContent.innerHTML = aContent;

            return this.fContent.innerHTML;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.reInsert = function ()
    {
        if (this.fParent && !$(this.fWindow.id)) {
            this.fParent.appendChild(this.fWindow);
        }
    }


    /**
     *
     */
    this.blockContent = function (aBlock)
    {
        if (!xmUtil.isUndefined(aBlock))
            this.fBlockContent = aBlock ? true : false;
        return this.fBlockContent;
    }


    /**
     *
     */
    this.showInTaskbar = function(aShow)
    {
        if (!xmUtil.isUndefined(aShow))
        {
            this.fShowInTaskbar = aShow ? true : false;
            xmWindowManager.taskbar.refreshButtonVisibility(this);
        }

        return this.fShowInTaskbar;
    }


    /**
     *
     */
    this.taskbarButtonClickEnabled = function(aEnabled)
    {
        if (!xmUtil.isUndefined(aEnabled))
        {
            this.fTaskbarButtonClickEnabled = aEnabled ? true : false;
            xmWindowManager.taskbar.taskbarButtonClickEnabled(this, aEnabled);
        }

        return this.fTaskbarButtonClickEnabled;
    }


    /**
     *
     */
    this.showTaskbarRestoreMinimizeButtons = function(aEnabled)
    {
        if (!xmUtil.isUndefined(aEnabled))
        {
            this.fShowTaskbarRestoreMinimizeButtons = aEnabled ? true : false;
            xmWindowManager.taskbar.refreshButtonVisibility(this);
        }

        return this.fShowTaskbarRestoreMinimizeButtons;
    }


    /**
     *
     */
    this.showTaskbarCloseButton = function(aEnabled)
    {
        if (!xmUtil.isUndefined(aEnabled))
        {
            this.fShowTaskbarCloseButton = aEnabled ? true : false;
            xmWindowManager.taskbar.refreshButtonVisibility(this);
        }

        return this.fShowTaskbarCloseButton;
    }

    /**
    *
    */
    this.width = function(aWidth)
    {
        if (typeof aWidth != 'undefined')
            this.fContainer.style.width = aWidth;
        return this.fContainer.style.width;
    }


    /**
    *
    */
/*    this.modal = function (aModal)
    {           return;
        if (!xmUtil.isUndefined(aModal))
            this.fModal = aModal ? true : false;

        if (this.fModal && this.visible() && this.fIsOnTop) with (this.fWindowManager)
        {
             if (fLastActiveModalWindow != this)
                this.fLastActiveModalWindow = fLastActiveModalWindow;
             fLastActiveModalWindow = this;

             fModalWindow.style.zIndex = xmUtil.toInt(this.fWindow.style.zIndex) - 1;
             fModalWindow.style.display = "block";
             fModalWindow.style.width   = "100%";
             fModalWindow.style.height  = xmUtil.getWindowInnerHeight() + "px";
        }
        else
        {
            if (!this.visible() && this.fModal && isXmWindow(this.fLastActiveModalWindow))
            {
                this.fWindowManager.fModalWindow.style.zIndex = xmUtil.toInt(this.fLastActiveModalWindow.fWindow.style.zIndex) - 1;
                this.fWindowManager.fLastActiveModalWindow = this.fLastActiveModalWindow;
            }
            else
                this.fWindowManager.fModalWindow.style.display = "none";
        }

        return this.fModal;
    }   */


    /*---------------------------------------------------------------------------------*/
    /* Creating window structure                                                       */
    /*---------------------------------------------------------------------------------*/

    if (!xmUtil.isString(aTemplate))
        return false;

    /** temporary container for template code */
    var container = document.createElement("span"), i;


        /** a little help for searching elements by ID */
        function getById(aObjArray, aId)
        {
            var i;
            for (i in aObjArray)
                if (aObjArray[i].id == aId)
                    return aObjArray[i];

            return false;
        }


    with (container)
    {
        innerHTML = aTemplate;

        var elements = [];
        xmUtil.getChildNodesList(container, elements, null, true);

        this.fWindow = getById(elements, '_xm-window_');
        if (!this.fWindow) return false;
        this.fWindow.id = cfg_xmWindow.idPrefix + aName;
        this.fWindow.userData = this;

        if (!(this.fContainer = getById(elements, '_xm-window-container_')))
            this.fContainer = this.fWindow;

        this.fContent = getById(elements, '_xm-window-content_');
        if (!this.fContent) return false
        this.fContent.id = cfg_xmWindow.idPrefix + aName + "-content";

        if (this.fHeader = getById(elements, '_xm-window-header_'))
            this.fHeader.id = cfg_xmWindow.idPrefix + aName + "-header";

        if (this.fCaption = getById(elements, '_xm-window-caption_'))
        {
            this.fCaption.id = cfg_xmWindow.idPrefix + aName + "-caption";

            if (xmUtil.isString(aCaption) && aCaption != "")
                this.fCaption.innerHTML = aCaption;
        }

        if (this.fCloseButton = getById(elements, '_xm-window-closebutton_'))
            this.fCloseButton.id = cfg_xmWindow.idPrefix + aName + "-closebutton";

        if (this.fMinimizeButton = getById(elements, '_xm-window-minimizebutton_'))
            this.fMinimizeButton.id = cfg_xmWindow.idPrefix + aName + "-minimizebutton";
    }

    if (aParent === null || xmUtil.isUndefined(aParent))
         aParent = document.body;
    else aParent = $(aParent);

    if (!xmUtil.isObject(aParent) || !aParent.appendChild || !xmUtil.isString(aTemplate) || !xmUtil.isString(aName) || aName == "")
        return false;

    /*---------------------------------------------------------------------------------*/
    /* Properties                                                                      */
    /*---------------------------------------------------------------------------------*/

    this.fWindowManager = aWindowManager;

    /***** Private *****/
    /* xmWindow_Manager object reference*/
    this.fMinimized = false;
    this.fBlockContent = false;
    this.fModal = aModal;
    this.fShowInTaskbar = xmWindowManager.taskbar.cfg.defaultShowInTaskbar;
    this.fShowTaskbarCloseButton = xmWindowManager.taskbar.cfg.defaultCloseButtonEnabled;
    this.fShowTaskbarRestoreMinimizeButtons = xmWindowManager.taskbar.cfg.defaultRestoreMinimizeButtonsEnabled;
    this.fTaskbarButtonClickEnabled = xmWindowManager.taskbar.cfg.defaultButtonClickEnabled;
    /*this.modal(aModal);*/
    /*this.fLastActiveModalWindow = null*/

    this.fDims = {
        x : -10000,
        y : -10000
    }

    /***** Public *****/
    /* window name*/
    this.fName = aName;
    /* window events*/
    this.onshow       = null;
    this.onhide       = null;
    this.onactivate   = null;
    this.ondeactivate = null;

    this.fBubbleEvents = true;

    this.fIsOnTop = false;
    this.fAlwaysOnTop = false;

    this.fWindow.style.display = "none";
    this.fWindow.style.zIndex = xmUtil.getZIndex(this.fWindow) ? xmUtil.getZIndex(this.fWindow) : xmWindowManager.cfg.defaultZIndex;
    aParent.appendChild(this.fWindow);
    this.fParent = aParent;
    this.showCloseButton(xmUtil.isUndefined(aShowCloseButton) ? false : aShowCloseButton);
    this.showMinimizeButton(false);
    /* allow to move window*/
    /*this.allowMoving(true);*/
    xmDragging.registerObject(this.fHeader.id, this.fWindow.id, false, false, true);
    /* capture mouse down events*/
    //xmGlobalEvents.registerHandler(this.fWindow.id, "mousedown", xmWindow_BringToTop, this);
    xmObjectEvents.attachHandler(this.fWindow, "onmousedown", xmWindow_BringToTop, this, false, true);
}


/*-------------------------------------------------------------------------------------*/
/* xmWindow_Manager
 *
 */
var xmWindowManager = new function()
{
    /*---------------------------------------------------------------------------------*/
    /* Properties                                                                      */
    /*---------------------------------------------------------------------------------*/

    this.fWindows = new Array();
    /*this.fActiveStack = new Array();*/
    this.fCount = 0;

    this.fModalWindow = document.createElement("div");
    /*this.fLastActiveModalWindow = null;*/

    this.cfg = {
        defaultZIndex : 10
    }


    this.onminimize = null;
    this.onrestore = null;
    this.onshow = null;
    this.onhide = null;
    this.onclose = null;


    /*---------------------------------------------------------------------------------*/
    /* Methods                                                                         */
    /*---------------------------------------------------------------------------------*/


    /**
    *
    */
    this.setModalWindowClass = function (aClassName)
    {
        if (xmUtil.isString(aClassName))
            this.fModalWindow.className = aClassName;
    }

    /**
    *
    */
    this.updateModalWindow = function ()
    {
        if (this.fModalWindow.parentNode != document.body)
            document.body.appendChild(this.fModalWindow);

        var wnd = this.getHighestWindow(true, true);

        if (wnd)
        {
            this.fModalWindow.style.zIndex = xmUtil.toInt(wnd.fWindow.style.zIndex) - 1;
            this.fModalWindow.style.height  = xmUtil.getWindowInnerHeight() + "px";
            this.fModalWindow.style.width   = "100%";
            this.fModalWindow.style.display = "block";
        }
        else
        {
            this.fModalWindow.style.display = "none";
        }
    }


    /**
    *
    */
    this.getActiveWindow = function ()
    {
        var wndName;
        for (wndName in this.fWindows)
        {
            if (this.fWindows[wndName].window.fIsOnTop && this.fWindows[wndName].window.visible() && this.fWindows[wndName].window.fParent && $(this.fWindows[wndName].window.fWindow.id))
                return this.fWindows[wndName].window;
        }
        return false;
    }


    /**
    *
    */
    this.getHighestWindow = function (aOnlyModal, aExcludeAlwaysOnTop)
    {
        var maxZIndex = -0xFFFFFF, z, v, wnd = false;
        aOnlyModal = xmUtil.isUndefined(aOnlyModal) ? false : aOnlyModal;

        var wndName;
        for (wndName in this.fWindows) with (this.fWindows[wndName].window)
        {
            if (fAlwaysOnTop && aExcludeAlwaysOnTop) continue;
            z = xmUtil.getZIndex(fWindow);
            v = visible();
            if (z > maxZIndex && (fModal || !aOnlyModal) && (v || (!v && fMinimized)) && fParent && $(fWindow.id))
            {
                maxZIndex = z;
                wnd = this.fWindows[wndName].window;
            }
        }
        return wnd;
    }


    /**
     *
     */
    this.createWindow = function (aName, aTemplate, aParent, aCaption, aModal, aShowCloseButton)
    {
        if (xmUtil.isObject(this.fWindows[aName]))
        {
            if (this.fWindows[aName].window.fWindow.innerHTML == "")
            {
                 delete this.fWindows[aName];
                 this.fCount--;
            }
            else return this.fWindows[aName].window;
        }

        wnd = new xmWindow(aName, aTemplate, aParent, aCaption, aModal, this, aShowCloseButton);
        if (wnd.fName == false) return false;

        this.fWindows[wnd.fName] = {
            window        : wnd,
            taskbarButton : xmWindowManager.taskbar.createTaskbarButton(wnd)
        }

        this.fCount++;

        return wnd;
    }


    /**
     *
     */
    this.destroyWindow = function (aName)
    {
        try
        {
            var wnd = this.fWindows[aName].window;

            wnd.visible(false);
            wnd.fParent.removeChild(wnd.fWindow);

            this.taskbar.destroyTaskbarButton(wnd);

            delete this.fWindows[aName];
            this.fCount--;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.windowsCount = function ()
    {
        return this.fCount;
    }


    /**
     *
     */
    this.getWindow = function (aName)
    {
        try
        {
            return isXmWindow(this.fWindows[aName].window) ? this.fWindows[aName].window : false;
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.minimizeAll = function ()
    {
        try
        {
            var name;
            for (name in this.fWindows)
                this.fWindows[name].window.minimize();
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.restoreAll = function ()
    {
        try
        {
            var name;
            for (name in this.fWindows)
                this.fWindows[name].window.restore();
        }
        catch (e) {  }
    }


    /**
     *
     */
    this.hideAndClearAll = function ()
    {
        try
        {
            var name;
            for (name in this.fWindows)
            {
                this.fWindows[name].window.visible(false);
                this.fWindows[name].window.content("");
            }
        }
        catch (e) {  }
    }


    /**
    *
    */
    this.windowVisible = function (aWindow, aVisible, aMinimize)
    {
        if (!isXmWindow(aWindow))
            if (!(this.fWindows[aWindow] && (aWindow = this.fWindows[aWindow].window)))
                return;

        var isVisible = aWindow.fWindow.style.display == 'none' ? false : true,
            result = isVisible;

        if (typeof aVisible != 'undefined')
        {
            if (aVisible)
            {
                if (isVisible) return true;

                if (aWindow.fMinimized)
                {
                    if (typeof this.onrestore == 'function')
                        if (!this.onrestore(aWindow))
                            return false;
                    if (typeof aWindow.onrestore == 'function')
                        if (!aWindow.onrestore(aWindow))
                            return false;
                }

                if (typeof this.onshow == 'function')
                    if (!this.onshow(aWindow))
                        return false;
                if (typeof aWindow.onshow == 'function')
                    if (!aWindow.onshow(aWindow))
                        return false;

                aWindow.fMinimized = false;
                aWindow.fWindow.style.display = "";
                result = true;
            }
            else
            {
                var isUnderModal =
                    (xmWindowManager.fModalWindow.style.display == "block" &&
                    xmUtil.toInt(xmWindowManager.fModalWindow.style.zIndex) > xmUtil.toInt(aWindow.fWindow.style.zIndex));

                if (isUnderModal) return;

                if (!aWindow.fMinimized && aMinimize)
                {
                    if (typeof this.onminimize == 'function')
                        if (!this.onminimize(aWindow))
                            return isVisible;
                    if (typeof aWindow.onminimize == 'function')
                        if (!aWindow.onminimize(aWindow))
                            return isVisible;
                }

                if (isVisible)
                {
                    if (typeof this.onhide == 'function')
                        if (!this.onhide(aWindow))
                            return true;
                    if (typeof aWindow.onhide == 'function')
                        if (!aWindow.onhide(aWindow))
                            return true;
                }

                aWindow.fMinimized = aMinimize ? true : false;
                aWindow.fWindow.style.display = "none";
                result = false;
            }

            xmWindowManager.updateModalWindow();
            xmWindowManager.taskbar.refreshButtonVisibility(aWindow);
        }
        return result;
    }


    /**
     *
     */
    this.minimize = function (aWindow)
    {
        this.windowVisible(aWindow, false, true);
    }


    /**
     *
     */
    this.restore = function (aWindow)
    {
        this.windowVisible(aWindow, true);
    }


    /**
    *
    */
    this.taskbar = new function()
    {
        this.fContainer = null;
        this.fTabsContainer = null;
        this.fParent = null;

        this.fTemplate = '';
        this.fTemplateObjects = [];

        this.cfg = {
            idPrefix: '__xmTaskbar__',
            defaultCloseButtonEnabled : true,
            defaultRestoreMinimizeButtonsEnabled : false,
            defaultButtonClickEnabled : true,
            defaultShowInTaskbar : true
        }

        this.fButtons = [];

        /**
        *
        */
        this.initialize = function(aTemplate, aParent)
        {
            if (!xmUtil.isString(aTemplate))
                return false;

            this.fTemplate = aTemplate;

            var templateContainer = document.createElement("span");
            templateContainer.innerHTML = aTemplate;

            this.fTemplateObjects = [];
            xmUtil.getChildNodesList(templateContainer, this.fTemplateObjects, null, true);

            /** taskbar template */
            this.fContainer = xmUtil.getObjFromArrayById(this.fTemplateObjects, '_xm-window-taskbar_');
            if (!this.fContainer) return false;
            this.fContainer.id = xmWindowManager.taskbar.cfg.idPrefix;
            this.fContainer.userData = this;

            this.fTabsContainer = xmUtil.getObjFromArrayById(this.fTemplateObjects, '_xm-window-taskbar-tabs_');
            if (!this.fTabsContainer) return false
            this.fTabsContainer.id = xmWindowManager.taskbar.cfg.idPrefix + "-tabs";

            if (aParent === null || xmUtil.isUndefined(aParent))
                 aParent = document.body;
            else aParent = $(aParent);

            if (!xmUtil.isObject(aParent) || !aParent.appendChild)
                return false;

            this.fContainer.style.display = 'none';
            aParent.appendChild(this.fContainer);

            return true;
        }


        /**
        *
        */
        this.createTaskbarButton = function(aWindow)
        {
            if (!this.fContainer)
                return false;

            var templateContainer = document.createElement("span");
            templateContainer.innerHTML = xmWindowManager.taskbar.fTemplate;

            var templateObjects = [];
            xmUtil.getChildNodesList(templateContainer, templateObjects, null, true);

            var button = this.fButtons[aWindow.fName] = {
                fWindow : aWindow,
                fContainer : xmUtil.getObjFromArrayById(templateObjects, '_xm-window-taskbar-tab_'),
                fCaption : xmUtil.getObjFromArrayById(templateObjects, '_xm-window-taskbar-tab-caption_'),
                fCloseButton : xmUtil.getObjFromArrayById(templateObjects, '_xm-window-taskbar-tab-closebutton_'),
                fRestoreButton : xmUtil.getObjFromArrayById(templateObjects, '_xm-window-taskbar-tab-restorebutton_'),
                fMinimizeButton : xmUtil.getObjFromArrayById(templateObjects, '_xm-window-taskbar-tab-minimizebutton_')
            }

            button.fContainer.userData = aWindow;
            button.fContainer.style.display = (aWindow.fShowInTaskbar && (aWindow.visible() || aWindow.fMinimized)) ? '' : 'none';
            button.fCaption.innerHTML = aWindow.fCaption.innerHTML;

            if (this.fTabsContainer)
                this.fTabsContainer.appendChild(button.fContainer);

            if (aWindow.fTaskbarButtonClickEnabled)
                xmObjectEvents.attachHandler(button.fContainer, 'onclick', xmWindowManager.taskbar._buttonClick, aWindow, true);

            if (button.fCloseButton)
                xmObjectEvents.attachHandler(button.fCloseButton, 'onclick', xmWindowManager.taskbar._closeButtonClick, aWindow, true);
            if (button.fRestoreButton)
                xmObjectEvents.attachHandler(button.fRestoreButton, 'onclick', xmWindowManager.taskbar._restoreButtonClick, aWindow, true);
            if (button.fMinimizeButton)
                xmObjectEvents.attachHandler(button.fMinimizeButton, 'onclick', xmWindowManager.taskbar._minimizeButtonClick, aWindow, true);

            return button;
        }


        /**
        *
        */
        this.refreshButtonVisibility = function(aWindow)
        {
            try
            {
                if (xmUtil.isObject(aWindow))
                     aWindow = xmWindowManager.fWindows[aWindow.fName];
                else aWindow = xmWindowManager.fWindows[aWindow];

                if (!aWindow) return false;

                var wVisible= aWindow.window.visible();

                aWindow.taskbarButton.fContainer.style.display = (aWindow.window.fShowInTaskbar && (wVisible || aWindow.window.fMinimized)) ? '' : 'none'

                if (aWindow.taskbarButton.fRestoreButton)
                    aWindow.taskbarButton.fRestoreButton.style.display = (wVisible || !aWindow.window.fShowTaskbarRestoreMinimizeButtons) ? 'none' : '';
                if (aWindow.taskbarButton.fMinimizeButton)
                    aWindow.taskbarButton.fMinimizeButton.style.display = (wVisible && aWindow.window.fShowTaskbarRestoreMinimizeButtons) ? '' : 'none';
                if (aWindow.taskbarButton.fCloseButton)
                    aWindow.taskbarButton.fCloseButton.style.display = aWindow.window.fShowTaskbarCloseButton ? '' : 'none';
            }
            catch (e) {}
        }


        /**
        *
        */
        this.taskbarButtonClickEnabled = function(aWindow, aEnabled)
        {
            try
            {
                if (xmUtil.isObject(aWindow))
                     aWindow = xmWindowManager.fWindows[aWindow.fName];
                else aWindow = xmWindowManager.fWindows[aWindow];

                if (!aWindow) return false;

                if (aEnabled)
                     return xmObjectEvents.attachHandler(button.fContainer, 'onclick', xmWindowManager.taskbar._buttonClick, aWindow, true);
                else return xmObjectEvents.detachHandler(button.fContainer, 'onclick');
            }
            catch (e) {}
        }


        /**
        *
        */
        this.destroyTaskbarButton = function(aWindow)
        {
            try
            {
                if (xmUtil.isObject(aWindow))
                     aWindow = xmWindowManager.fWindows[aWindow.fName];
                else aWindow = xmWindowManager.fWindows[aWindow];

                if (!aWindow) return false;

                aWindow.taskbarButton.fContainer.parentNode.removeChild(aWindow.taskbarButton.fContainer);
                delete this.fButtons[aWindow.window.fName];
            }
            catch (e) {}
        }


        /**
        *
        */
        this.buttonCaption = function(aWindow, aCaption)
        {
            try
            {
                if (xmUtil.isObject(aWindow))
                     aWindow = xmWindowManager.fWindows[aWindow.fName];
                else aWindow = xmWindowManager.fWindows[aWindow];

                if (!aWindow) return false;

                if (!xmUtil.isUndefined(aCaption))
                    aWindow.taskbarButton.fCaption.innerHTML = aCaption;
                return aCaption;
            }
            catch (e) {}
        }


        /**
        *
        */
        this.visible = function(aVisible)
        {
            try
            {
                with (this.fContainer.style)
                {
                    if (!xmUtil.isUndefined(aVisible))
                        display = aVisible ? "" : "none";
                    return (display != "none") ? true : false;
                }
            }
            catch (e) {  }
        }


        /**
        *
        */
        this._buttonClick = function(aEvent, aWindow)
        {
            try
            {
                var visible = aWindow.visible(),
                    isHighest = (xmWindowManager.getHighestWindow(false, true) == aWindow) ? true : false;

                var isUnderModal =
                    (xmWindowManager.fModalWindow.style.display == "block" &&
                    xmUtil.toInt(xmWindowManager.fModalWindow.style.zIndex) > xmUtil.toInt(aWindow.fWindow.style.zIndex)) &&
                    visible;

                if (visible && !isUnderModal && isHighest)
                    aWindow.minimize();
                if (!visible)
                    aWindow.restore();

                if (!isHighest && !isUnderModal)
                    aWindow.bringToTop();
            }
            catch (e) {}
        }


        /**
        *
        */
        this._closeButtonClick = function(aEvent, aWindow)
        {
            xmWindow_Hide(aWindow);
        }


        /**
        *
        */
        this._minimizeButtonClick = function(aEvent, aWindow)
        {
            xmWindow_Minimize(aWindow);
        }


        /**
        *
        */
        this._restoreButtonClick = function(aEvent, aWindow)
        {
            xmWindow_Restore(aWindow);
        }
    }


    xmGlobalEvents.registerHandler("__xmWindow_ClickAnywhere__", "mousedown", xmWindow_BringToTop, null);
}


/*-------------------------------------------------------------------------------------*/
function isXmWindowManager(aX)
{
    return xmUtil.isObject(aX) && xmUtil.isArray(aX.fWindows);
}


/*-------------------------------------------------------------------------------------*/
function isXmWindow(aX)
{
    return xmUtil.isObject(aX) && xmUtil.isObject(aX.fContent);
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_BringToTop(aEvent, aWindow)
{
    var maxZIndex = -1,
        sender = false;

    if (!isXmWindow(aWindow))
    {
        if (!isXmWindow(xmWindow_GetByElement(aWindow)))
        {
            if (xmUtil.isObject(aWindow) && !xmUtil.isUndefined(aWindow.sender))
            {
                sender = aWindow.sender;
                aWindow = aWindow.window
            }
            else aWindow = false;
        }
        else aWindow = xmWindow_GetByElement(aWindow);
    }

    if (isXmWindow(aWindow))
    {
        var trigger = xmObjectEvents.getObjectTriggerObject(aWindow.fWindow, 'onmousedown', xmWindow_BringToTop);
        if (trigger)
            trigger.noBubble = !aWindow.fBubbleEvents;
    }

    var windowName = '';
    for (windowName in xmWindowManager.fWindows)
    {
        if (!aWindow || windowName != aWindow.fName)
        {
            if (xmWindowManager.fWindows[windowName].window.fIsOnTop && xmUtil.isFunction(xmWindowManager.fWindows[windowName].window.ondeactivate))
                xmWindowManager.fWindows[windowName].window.ondeactivate(xmWindowManager.fWindows[windowName].window);
            xmWindowManager.fWindows[windowName].window.fIsOnTop = false;
        }
    }

    var highestWindow = xmWindowManager.getHighestWindow(false, true);
    if (highestWindow && highestWindow != aWindow)
        maxZIndex = xmUtil.toInt(highestWindow.fWindow.style.zIndex);

    if (isXmWindow(aWindow))
    {
        aWindow.fIsOnTop = true;

        var isUnderModal =
            (aWindow.fWindowManager.fModalWindow.style.display == "block" &&
            xmUtil.toInt(aWindow.fWindowManager.fModalWindow.style.zIndex) > xmUtil.toInt(aWindow.fWindow.style.zIndex)) &&
            aWindow.visible();

        if (xmUtil.getZIndex(aWindow.fWindow) <= maxZIndex && !isUnderModal)
            aWindow.fWindow.style.zIndex = xmUtil.toInt(maxZIndex) + 2;

        if (!aWindow.visible())
            aWindow.visible(true);

        if (xmUtil.isFunction(aWindow.onactivate) && !isUnderModal)
            aWindow.onactivate(aWindow);
    }
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_GetByElement(aElement)
{
    if (isXmWindow(aElement)) return aElement;
    if (!xmUtil.isObject(aElement)) return
    if (!aElement.parentNode) return;

    try
    {
        do
        {
            if (aElement.userData && isXmWindow(aElement.userData))
                return aElement.userData;
        }
        while (aElement = aElement.parentNode);
    }
    catch (e) { return false; }

    return false;
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_Visible(aElement, aVisible)
{
    var wnd = xmWindow_GetByElement(aElement);
    if (wnd) return wnd.visible(aVisible);
    return false;
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_Hide(aElement)
{
    return xmWindow_Visible(aElement, false);
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_Show(aElement)
{
    return xmWindow_Visible(aElement, true);
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_Minimize(aElement)
{
    var wnd = xmWindow_GetByElement(aElement);
    if (wnd) wnd.minimize();
}


/*-------------------------------------------------------------------------------------*/
function xmWindow_Restore(aElement)
{
    var wnd = xmWindow_GetByElement(aElement);
    if (wnd) wnd.restore();
}



/* INCLUDED FILE: xmpack/js_source/xm_xml.lib.js */

var
    XML_NODE_ROOT                      = 'document',

    XML_NODE_SECTION_RESPONSE          = 'response',
    XML_NODE_SECTION_ATTACHMENT        = 'attachment',

    XML_NODE_ELEMENT_TYPE_HTML         = 'ht',
    XML_NODE_ELEMENT_TYPE_JS           = 'js',

    XML_NODE_ELEMENT_DATA              = 'data',

    XML_NODE_SUBSECTION_JAVASCRIPT     = 'javascript',
    XML_NODE_SUBSECTION_APP_MESSAGES   = 'appmessages',
    XML_NODE_SUBSECTION_RETURN_VALUE   = 'returnvalue',
    XML_NODE_SUBSECTION_APP_STATUS     = 'appstatus';


/** xmAjax XML Utils */
var xmAjaxXMLUtil = new function()
{

    /*-------------------------------------------------------------------------------------*/
    this.checkXMLDocument = function (xmlDocument)
    {
        try
        {
            if (xmUtil.isObject(xmlDocument.documentElement) && xmlDocument.documentElement.tagName == "document")
                return true;
        }
        catch (e) { return false }
        return false;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getFirstNodeByName = function (xml, aSectionName)
    {
        try
        {
            var node = xml.getElementsByTagName(aSectionName);

            if (node.length && node.item(0))
                return node.item(0);
        }
        catch (e) { return false }
        return false;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getXMLNodeText = function (node)
    {
         var text = node.textContent || node.text || node.innerText;
         return text ? text : '';
    }


    /*-------------------------------------------------------------------------------------*/
    this.getResponseData = function (xmlDocument)
    {
        if (!xmUtil.isObject(xmlDocument) || !xmlDocument.documentElement)
            return false;

        var response = xmAjaxXMLUtil.getFirstNodeByName(xmlDocument.documentElement, XML_NODE_SECTION_RESPONSE);
        if (!response) return false;

        var node, output = [], dataNodes, nodeData;

        for (var i = 0; i < response.childNodes.length; i++)
        {
            node = response.childNodes.item(i);

            if (node.nodeName != XML_NODE_ELEMENT_TYPE_HTML && node.nodeName != XML_NODE_ELEMENT_TYPE_JS)
                continue;

            dataNodes = node.getElementsByTagName(XML_NODE_ELEMENT_DATA);

            nodeData = "";
            for (var j = 0; j < dataNodes.length; j++)
                nodeData += xmAjaxXMLUtil.getXMLNodeText(dataNodes.item(j));

            output[output.length] = {
                type : node.nodeName,
                data : nodeData
            };
        }

        return output;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getAppStatusData = function (xmlDocument)
    {
        if (!xmUtil.isObject(xmlDocument) || !xmlDocument.documentElement)
            return false;

        var status = xmAjaxXMLUtil.getFirstNodeByName(xmlDocument.documentElement, XML_NODE_SUBSECTION_APP_STATUS);
        if (!status) return [];

        var node, output = [], dataNodes, nodeData;

        for (var i = 0; i < status.childNodes.length; i++)
        {
            node = status.childNodes.item(i);

            if (node.nodeType != 1) continue;

            dataNodes = node.getElementsByTagName(XML_NODE_ELEMENT_DATA);

            nodeData = "";
            for (var j = 0; j < dataNodes.length; j++)
                nodeData += xmAjaxXMLUtil.getXMLNodeText(dataNodes.item(j));

            output[node.nodeName] = nodeData;
        }

        return output;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getJavaScriptData = function (xmlDocument)
    {
        if (!xmUtil.isObject(xmlDocument) || !xmlDocument.documentElement)
            return false;

        var jsnode = xmAjaxXMLUtil.getFirstNodeByName(xmlDocument.documentElement, XML_NODE_SUBSECTION_JAVASCRIPT);
        if (!jsnode) return false;

        var node, output = [], dataNodes, nodeData;

        for (var i = 0; i < jsnode.childNodes.length; i++)
        {
            node = jsnode.childNodes.item(i);

            if (node.nodeName != XML_NODE_ELEMENT_TYPE_JS)
                continue;

            dataNodes = node.getElementsByTagName(XML_NODE_ELEMENT_DATA);

            nodeData = "";
            for (var j = 0; j < dataNodes.length; j++)
                nodeData += xmAjaxXMLUtil.getXMLNodeText(dataNodes.item(j));

            output[output.length] = nodeData;
        }

        return output;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getAppMessagesData = function (xmlDocument)
    {
        if (!xmUtil.isObject(xmlDocument) || !xmlDocument.documentElement)
            return false;

        var messages = xmAjaxXMLUtil.getFirstNodeByName(xmlDocument.documentElement, XML_NODE_SUBSECTION_APP_MESSAGES);
        if (!messages) return false;

        var node, output = [], dataNodes, nodeData;

        for (var i = 0; i < messages.childNodes.length; i++)
        {
            node = messages.childNodes.item(i);

            if (node.nodeType != 1) continue;

            dataNodes = node.getElementsByTagName(XML_NODE_ELEMENT_DATA);

            nodeData = "";
            for (var j = 0; j < dataNodes.length; j++)
                nodeData += xmAjaxXMLUtil.getXMLNodeText(dataNodes.item(j));

            output[output.length] = {
                type : node.nodeName,
                data : nodeData
            };
        }

        return output;
    }


    /*-------------------------------------------------------------------------------------*/
    this.getReturnValue = function (xmlDocument)
    {
        try
        {
            if (!xmUtil.isObject(xmlDocument) || !xmlDocument.documentElement)
                return false;

            var valueNode = xmlDocument.documentElement.getElementsByTagName(XML_NODE_SUBSECTION_RETURN_VALUE);

            return xmAjaxXMLUtil.getXMLNodeText(valueNode.item(0));
        }
        catch (e) { return false; }
    }


    /*-------------------------------------------------------------------------------------*/
    this.processResponseData = function (responseData, targetElement)
    {
        if (!xmUtil.isArray(responseData))
            return false;

        if (targetElement = $(targetElement))
            targetElement.innerHTML = "";

        var k;
        for (k in responseData)
            try
            {
                if (responseData[k].type == XML_NODE_ELEMENT_TYPE_HTML && targetElement)
                     targetElement.innerHTML += responseData[k].data;
                else if (responseData[k].type == XML_NODE_ELEMENT_TYPE_JS)
                     window.eval(responseData[k].data);
            }
            catch (e) { continue; }

        return true;
    }


    /*-------------------------------------------------------------------------------------*/
    this.extractResponseDataHtml = function (responseData)
    {
        if (!xmUtil.isArray(responseData))
            return false;

        var outputHtml = "",
            k;
        for (k in responseData)
            try
            {
                if (responseData[k].type == XML_NODE_ELEMENT_TYPE_HTML)
                     outputHtml += responseData[k].data;
            }
            catch (e) { continue; }

        return outputHtml;
    }


    /*-------------------------------------------------------------------------------------*/
    this.processJavaScriptData = function (jsData)
    {
        if (!xmUtil.isArray(jsData))
            return false;

        var k;
        for (k in jsData)
            try
            {
                window.eval(jsData[k]);
            }
            catch (e) { continue; }

        return true;
    }


    /*-------------------------------------------------------------------------------------*/
    this.serializeXML = function (obj)
    {
        if ((typeof XMLSerializer != "undefined") && xmUtil.isObject(obj))
        {
            var serializer = new XMLSerializer();
            return serializer.serializeToString(obj);
        }
        return obj;
    }


    /*-------------------------------------------------------------------------------------*/
    this.createXMLDOMObject = function (aContent)
    {
        try
        {
            /* IE */
            if (window.ActiveXObject)
            {
                var doc = new ActiveXObject("Microsoft.XMLDOM");
                doc.async = "false";
                doc.loadXML(aContent);
                return doc;
            }
            /* Mozilla, Firefox, Opera, etc. */
            else
                return (new DOMParser()).parseFromString(aContent, "text/xml");
        }
        catch (e) { return 'Invalid XML response.' }
    }
}



/* INCLUDED FILE: js/site_ajax.js */

var cfg_xmWindow = {
    idPrefix: "__xmWindow_"
}

var __messagesWnd = null;

function initSite()
{
    if (__messagesWnd)
        return;

    xmWindowManager.taskbar.initialize(__xmTemplates['xm_window.lib']);
    xmWindowManager.taskbar.visible(true);
    xmWindowManager.taskbar.cfg.defaultButtonClickEnabled = false;
    xmWindowManager.taskbar.cfg.defaultRestoreMinimizeButtonsEnabled = true;
    xmWindowManager.taskbar.cfg.defaultShowInTaskbar = false;

    xmWindowManager.onminimize = function(aWindow) {
        aWindow.showInTaskbar(true);
        return true;
    };
    xmWindowManager.onrestore = xmWindowManager.onshow = function(aWindow) {
        aWindow.showInTaskbar(false);
        aWindow.center();
        return true;
    };

    if (!(__messagesWnd = xmWindowManager.createWindow('site-messages-window', __xmTemplates['site_ajax'])))
        alert("Błąd podczas tworzenia okienka komunikatów systemu! Prawdopodobnie załadowano błedny szablon okienka.");
    else
    {
        __messagesWnd.ondeactivate = function (aWindow) { aWindow.visible(false) };
        __messagesWnd.allowMoving(true);
        __messagesWnd.content("");
        __messagesWnd.alwaysOnTop(true);
        __messagesWnd.fWindow.style.width = "350px";
        __messagesWnd.fBubbleEvents = false;
        __messagesWnd.onhide = function () { __messagesWnd.content("") };
    }

    xmWindowManager.setModalWindowClass("site-modal-screen");
}


/************************************************************************************************************/
function sendRequest(aURL, aMethod, aCallback, aUserData, aNoStaticURL, aAsynch, aData, aHeaders)           //
{                                                                                                           //
    var exUserData = {                                                                                      //
        userCallback : aCallback,                                                                           //
        userData     : aUserData                                                                            //
    }                                                                                                       //
    xmAjax.sendRequest(aURL, aMethod, ajaxCallback, exUserData, aNoStaticURL, aAsynch, aHeaders);         //
}                                                                                                           //
                                                                                                            //
                                                                                                            //
/*-------------------------------------------------------------------------------------*/                   //
function sendForm(aForm, aURL, aMethod, aCallback, aUserData, aNoStaticURL, aAsynch, aData, aHeaders)       //
{                                                                                                           //
    var exUserData = {                                                                                      //
        userCallback : aCallback,                                                                           //
        userData     : aUserData                                                                            //
    }                                                                                                       //
    xmAjax.sendForm(aForm, aURL, aMethod, ajaxCallback, exUserData, aNoStaticURL, aAsynch, aData, aHeaders); //
}                                                                                                           //
                                                                                                            //
/************************************************************************************************************/


/*********************************************************************************************************************/
var __status = __prev_status = [];                                                                                   //
                                                                                                                     //
/*-------------------------------------------------------------------------------------*/                            //
function ajaxCallback(xhrThread)                                                                                   //
{                                                                                                                    //
    var isValidXML = xmAjaxXMLUtil.checkXMLDocument(xhrThread.fXhr.responseXML);                                     //
                                                                                                                     //
    __prev_status = __status;                                                                                        //
    __status = xmAjaxXMLUtil.getAppStatusData(xhrThread.fXhr.responseXML);                                           //
                                                                                                                     //
    if (isValidXML)                                                                                                  //
        addMessages(xmAjaxXMLUtil.getAppMessagesData(xhrThread.fXhr.responseXML));                                //
                                                                                                                     //
    var exUserData = xhrThread.fUserData;                                                                            //
    if (xmUtil.isObject(exUserData) && xmUtil.isFunction(exUserData.userCallback))                                   //
    {                                                                                                                //
        xhrThread.fUserData = exUserData.userData;                                                                   //
        exUserData.userCallback(xhrThread);                                                                          //
    }                                                                                                                //
                                                                                                                     //
    if (isValidXML)                                                                                                  //
        xmAjaxXMLUtil.processJavaScriptData(xmAjaxXMLUtil.getJavaScriptData(xhrThread.fXhr.responseXML));            //

    xmUtil.executeScriptTags(false, xmAjaxXMLUtil.extractResponseDataHtml(xmAjaxXMLUtil.getResponseData(xhrThread.fXhr.responseXML)));                                                               //
    //inputsToWYSIWYG(document.body);                                                                                  //
    //setupJSCalendarFields(document.body);
    xmUtil.decodeEmailLinks();
}                                                                                                                    //
/*********************************************************************************************************************/                                                                                                                     //


/*-------------------------------------------------------------------------------------*/
xmAjax.attachRequestDoneHandler("xmAjax_requests_done_handler", function ()
{
    blockSite(false);
    if (__messagesWnd.content() != "")
        showAppMessages();
});


/*-------------------------------------------------------------------------------------*/
xmAjax.attachRequestStartHandler("xmAjax_requests_start_handler", function ()
{
    //if (xmAjax.threadsCount() == 1)
    blockSite(true);
    return true;
});




/*--------------------------------------------------------------------------------------*/
var __blockSiteCount = 0;
function blockSite(aBlock, aInfo, aForceUnblock)
{
    if (aForceUnblock)
    {
        aBlock = false;
        __blockSiteCount = 1;
    }

    var blockScreen = $('site-block-screen');
    var infoWnd = $('site-busy-screen');

    if (!blockScreen || !infoWnd) return;

    if (aBlock)
    {
         __blockSiteCount++;
         blockScreen.style.width   = "100%";
         blockScreen.style.height  = xmUtil.getWindowInnerHeight() + "px";
         blockScreen.style.display = "block";
         infoWnd.style.display = "block";
         try { $("site-busy-screen-msg").innerHTML = xmUtil.isString(aInfo) ? aInfo : ""; } catch (e) {}
         xmUtil.centerWindow(infoWnd);
    }
    else if ((--__blockSiteCount) <= 0) {
        __blockSiteCount = 0;
        blockScreen.style.display = "none";
        infoWnd.style.display = "none";
    }
}


/*-------------------------------------------------------------------------------------*/
function setBusyMessage(message)
{
    var msg = $("site-busy-screen-msg");
    if (!msg) return;
    msg.innerHTML = message;
}


/*-------------------------------------------------------------------------------------*/
function showAppMessages()
{
    try
    {
        __messagesWnd.bringToTopAndCenter();
    }
    catch (e) {}
}


/*-------------------------------------------------------------------------------------*/
function hideAppMessages()
{
    try
    {
        __messagesWnd.visible(false);
    }
    catch (e) {}
}


/*-------------------------------------------------------------------------------------*/
function addMessages(msg)
{
    try
    {
        if (xmUtil.isArray(msg))
            for (i in msg) addMessages(msg[i]);
        else if (xmUtil.isObject(msg))
            addMessages(msg.data);
        else
        {
            __messagesWnd.content(
                __messagesWnd.content() +
                (xmUtil.isStringEmpty(msg) ? "" : (xmUtil.isStringEmpty(__messagesWnd.content()) ? msg : "<br />" + msg))
            );
        }
    }
    catch (e) {}
}


/*--------------------------------------------------------------------------------------*/
function loadModule(aModule, aParams, aTarget)
{
    try
    {
        var mainMenu = $('main-menu');
        if (mainMenu)
        {
            var links = mainMenu.getElementsByTagName('a');
            for (i in links)
                 links[i].className = links[i].id == "menu-item-" + aModule ? "active" : "";
        }
    }
    finally
    {
        aModule = aModule ? aModule : "";
        aParams = aParams ? aParams : "";
        sendRequest("mod=" + aModule + "&" + aParams, "get",
            function (xhrThread)
            {
                xmAjaxXMLUtil.processResponseData(xmAjaxXMLUtil.getResponseData(xhrThread.fXhr.responseXML), xhrThread.fUserData.target);
                xmUtil.executeScriptTags(xhrThread.fUserData.target);
            }
        , {"target" : (aTarget ? aTarget : "content-body"), "module": aModule});
    }
}



/* INCLUDED FILE: js/site_common.js */

/*-------------------------------------------------------------------------------------*/
function showWindow(aParams, aTitle, aWidth, aWindowId)
{
    userData = {
        title: aTitle,
        width: aWidth,
        windowID: aWindowId
    }
    sendRequest(aParams, 'get',
        function (xhrThread)
        {
            var wnd = xmWindowManager.createWindow(xhrThread.fUserData.windowID, __xmTemplates["xm_window.lib"], null, xhrThread.fUserData.title, false, true);
            wnd.showMinimizeButton(true);
            wnd.content(xmAjaxXMLUtil.extractResponseDataHtml(xmAjaxXMLUtil.getResponseData(xhrThread.fXhr.responseXML)));
            if (xhrThread.fUserData.width)
                wnd.fWindow.style.width = xhrThread.fUserData.width;
            wnd.bringToTopAndCenter();
        },
        userData
    );
}
/*-------------------------------------------------------------------------------------*/
var _alphaSequence = [];


function initPage(preloadImages)
{
    preloadImages = false;
    if (preloadImages)
         psiLoadImages(slideTop);
    else slideTop();
}


/*-------------------------------------------------------------------------------------*/
function slideTop()
{
    //$("preload-info").parentNode.removeChild($("preload-info"));
    $("header").style.display = "block";
    setTimeout('xmEffects.transformElementAlpha("topimg", 0.15, 1, 90)', 500);
    setTimeout('xmEffects.transformElementAlpha("logo", 0.08  , 1, 90)', 1400);
    setTimeout('xmEffects.transformElementAlpha("location", 0.08, 1, 90)', 1400);

    for (i in _alphaSequence)
        setTimeout('xmEffects.transformElementAlpha("'+_alphaSequence[i][0]+'", '+_alphaSequence[i][1]+', '+_alphaSequence[i][2]+', '+_alphaSequence[i][3]+')', _alphaSequence[i][4]);
}

/*-------------------------------------------------------------------------------------*/
function getContactForm()
{
    blockSite(true);

    var cfw = $("contact-form-window");
    if (cfw)
    {
//    }|'[p.m;p
        $("contact-form").reset();
        cfw.style.display = "block";
        xmUtil.centerWindow(cfw);
        return;
    }

    sendRequest('mod=contact&a=getcontactform', 'GET', _onContactForm);
}


function _onContactForm(xhrThread)
{
    $("info-window").style.display = "none";
    var cf = document.createElement("div");
    cf.innerHTML = xmAjaxXMLUtil.extractResponseDataHtml(xmAjaxXMLUtil.getResponseData(xhrThread.fXhr.responseXML));//xhrThread.fXhr.responseText;
    cf.style.display = "none";
    cf.id = "contact-form-window";
    cf.style.position = "absolute";
    cf.style.top = "-9999px";
    cf.style.left = "-9999px";
    document.body.appendChild(cf);
    cf.style.width = "550px";
    cf.style.display = "block";
    cf.style.zIndex = 3;
    xmUtil.centerWindow(cf);
    dragging_RegisterObject("contact-form-header", "contact-form-window", false);
}

function closeContactForm()
{
    $("contact-form-window").style.display = "none";
    blockSite(false);
}


function sendContactForm()
{
    var f = $('contact-form'); 

        if (f.email_subject.value == '' || f.email_sender.value == '' || f.email_replyto.value == '' || f.email_msg.value == '')
        {
            alert("Wszystkie pola są wymagane. Proszę uzupełnić formularz i spróbować ponownie.");
            return false;
        }
        if (!xmUtil.checkEmailSyntax(f.email_replyto.value))
        {
            alert("Proszę wpisać poprawny adres e-mail.");
            return false;
        }
    sendForm(f,'mod=contact&a=send_contact_form','POST');
    xmWindow_Hide(f); 
   
}
function sendDemoForm() {
    var f = $('demo_xmpanel_form');
   
    if (f.email_subject.value == '' || f.email_sender.value == '' || f.email_replyto.value == '')
    {
        alert("Pola oznaczone \"*\" są wymagane. Proszę uzupełnić formularz i spróbować ponownie.");
        return false;
    }
    if (!xmUtil.checkEmailSyntax(f.email_replyto.value))
    {
        alert("Proszę wpisać poprawny adres e-mail.");
        return false;
    }
    sendForm(f,'mod=contact&a=send_demo_form','POST');
    xmWindow_Hide(f);    
}


/* GENERATION TIME: 0.714 */