function $(){var a=new Array();for(var i=0;i<arguments.length;i++){var b=arguments[i];if(typeof b=='string')b=document.getElementById(b);if(arguments.length==1)return b;a.push(b)}return a};function htmlentities(s){var a=document.createElement('div');var b=document.createTextNode(s);a.appendChild(b);return a.innerHTML};function time(){return(new Date()).getTime()};function maxZIndex(a){var b=0;var c=0;var d=Array();if(a){d=a.getElementsByTagName('*')}else{d=document.getElementsByTagName('*')}for(var i=0;i<d.length;i++){if(d[i].currentStyle){c=parseFloat(d[i].currentStyle['zIndex'])}else if(window.getComputedStyle){c=parseFloat(document.defaultView.getComputedStyle(d[i],null).getPropertyValue('z-index'))}if(!isNaN(c)&&c>b){b=c}}return b};function str2DOM(b){b=trim(b);var c=b.substr(1,2);var d=document.createElement('div');if(c=='tr'){b='<table><tbody>'+b+'</tbody></table>';d.innerHTML=b;d=d.firstChild.firstChild}else if(b.substr(b,0,3)=='td'||b.substr(b,0,3)=='th'){b='<table><tbody><tr>'+b+'</tr></tbody></table>';d.innerHTML=b;d=d.firstChild.firstChild.firstChild}else{d.innerHTML=b}var n=d.firstChild;var e=null;var a=new Array();while(n!=null){a.push(n);e=n;n=n.nextSibling;if(e!=null)d.removeChild(e)}if(a.length==1)return a.pop();return a}function trim(a,b){return ltrim(rtrim(a,b),b)};function ltrim(a,b){b=b||"\\s";return a.replace(new RegExp("^["+b+"]+","g"),"")};function rtrim(a,b){b=b||"\\s";return a.replace(new RegExp("["+b+"]+$","g"),"")};function Listener(c,d){if(typeof(c)!='object')throw new Error("Supplied parameter 1 '"+c+"' is not an object");this.obj=c;if(!(d instanceof Function))throw new Error("Supplied parameter 2 '"+d+"' is not a function");this.func=d;this.onEvent=function(a,b){return this.func.call(this.obj,a,b,this)}};function ListenerHandler(d){this.caller=d;this.listeners=new Array();this.allListeners=new Array();this.informListeners=function(a,b){this.currEvType=b;var c;if(this.listeners[b]!=undefined)for(this.currLis=0;this.currLis<this.listeners[b].length;++this.currLis){c=this.listeners[b][this.currLis];informListener(c,a,this.caller)}for(this.currLis=0;this.currLis<this.allListeners.length;++this.currLis){c=this.allListeners[this.currLis];informListener(c,a,this.caller)}};this.addListener=function(a,b){if(!a)throw new Error("Supplied parameter 1 '"+a+"' is neither a function nor Listener object");var c;if(b==undefined)c=this.allListeners;else{if(this.listeners[b]==undefined)this.listeners[b]=new Array();c=this.listeners[b]}for(var i=0;i<c.length;++i){if(c[i]==a)return false}c.push(a);return true};this.removeListener=function(a,b){var c;if(b==undefined)c=this.allListeners;else c=this.listeners[b];if(c==undefined||c==null)return false;for(var i=0;i<c.length;++i){if(c[i]==a){c.splice(i,1);if(this.currLis>=i&&b==this.currEvType)--this.currLis;return true}}return false}};function informListener(a,b,c){if(typeof(a)=='object')return a.onEvent(b,c);else return a.call(c,b)}function Hash(){this.length=0;this.items=new Array();for(var i=0;i<arguments.length;i+=2){if(typeof(arguments[i+1])!='undefined'){this.items[arguments[i]]=arguments[i+1];this.length++}}this.removeItem=function(a){var b;if(typeof(this.items[a])!='undefined'){this.length--;var b=this.items[a];delete this.items[a]}return b};this.getItem=function(a){return this.items[a]};this.setItem=function(a,b){if(typeof(b)!='undefined'){if(typeof(this.items[a])=='undefined'){this.length++}this.items[a]=b}return b};this.hasItem=function(a){return typeof(this.items[a])!='undefined'};this.clear=function(){this.length=0;this.items=new Array()};this.toArray=function(){var a=new Array();for(var i in this.items)a.push(this.items[i]);return a};this.keys=function(){var a=new Array();for(var i in this.items)a.push(i);return a}};var SELECT_EVENT='select';var HIGHLIGHT_EVENT='select';var RUN_EVENT='run';var REMOVE_EVENT='remove';var INSERT_EVENT='insert';var MOVE_EVENT='move';var CLICK_EVENT='click';var DBLCLICK_EVENT='dblclick';var MOUSE_OVER_EVENT='mouseover';var MOUSE_OUT_EVENT='mouseover';var APPEND_CHILD_EVENT='append';var ADD_BEFORE_EVENT='addbefore';var eventHandler={evtHash:[],ieGetUniqueID:function(a){if(a===window){return'theWindow'}else if(a===document){return'theDocument'}else{return a.uniqueID}},addListener:function(b,c,d,g){var f;var h;if(!b)throw new Error("Given object to be listened is null!");if(d instanceof Listener){f=function(a){if(a.srcElement)try{a.target=a.srcElement}catch(e){}informListener(d,a,b)};h=d.func}else{f=d;h=d}var i='{FNKEY::obj_'+eventHandler.ieGetUniqueID(b)+'::evt_'+c+'::fn_'+h+'}';if(typeof b.addEventListener!='undefined'){b.addEventListener(c,f,g)}else if(typeof b.attachEvent!='undefined'){var j=eventHandler.evtHash[i];if(typeof j!='undefined')return;if(!(d instanceof Listener)){f=function(a){if(a.srcElement){try{a.target=a.srcElement}catch(e){}}d.call(b,a)}}b.attachEvent('on'+c,f);window.attachEvent('onunload',function(){b.detachEvent('on'+c,f)})}else{b['on'+c]=f}eventHandler.evtHash[i]=f;i=null},removeListener:function(a,b,c,d){var e;if(c instanceof Listener)e=c.func;else e=c;var g='{FNKEY::obj_'+eventHandler.ieGetUniqueID(a)+'::evt_'+b+'::fn_'+e+'}';var f=eventHandler.evtHash[g];if(typeof a.removeEventListener!='undefined'){if(typeof f!='undefined')a.removeEventListener(b,f,d)}else if(typeof a.detachEvent!='undefined'){if(typeof f!='undefined')a.detachEvent('on'+b,f)}delete eventHandler.evtHash[g];g=null},cancelEvent:function(e){if(e.stopPropagation)e.stopPropagation();if(e.preventDefault)e.preventDefault();e.cancelBubble=true;e.cancel=true;e.returnValue=false;return false}};eventHandler.addListener(window,'load',function(){var b=document.getElementsByTagName('a');for(var i=0;i<b.length;++i){if(b[i].className.match(/external/))eventHandler.addListener(b[i],'click',new Listener(b[i],function(a){window.open(this.href);eventHandler.cancelEvent(a)}))}});var AJAX_ADD_HTML_PHASE='addHTML';var AJAX_LOCAL_INIT_PHASE='localInit';var AJAX_GLOBAL_INIT_PHASE='globalInit';var AJAX_STATIC_PHASE='static';var AJAX_NORMAL_PHASE='normal';function AJAXEventEngine(){this.message=new AJAXMessage();this.response=null;this.previousEvents=new Array();this.listeners=new Array();this.listeners[AJAX_STATIC_PHASE]=new Array();this.listeners[AJAX_NORMAL_PHASE]=new Array();this.listeners[AJAX_LOCAL_INIT_PHASE]=new Array();this.listeners[AJAX_ADD_HTML_PHASE]=new Array();this.listeners[AJAX_GLOBAL_INIT_PHASE]=new Array();this.currLisIndex=0;this.currLisPhase=0;this.addListener=function(a,b,c,d,e){var o=new Object();if(d==undefined)d=AJAX_NORMAL_PHASE;o.source=a;o.name=b;o.phase=d;o.listener=c;if(this.listeners[d]==undefined)throw new Error("Given phase: '"+d+"' is not correct");if(e)this.listeners[d].unshift(o);else this.listeners[d].push(o)};this.removeListener=function(a,b,c){var d=false;for(var p in this.listeners)for(var i in this.listeners[p]){if(this.listeners[p][i].listener==a&&(this.listeners[p][i].source==b||b==undefined)&&(this.listeners[p][i].name==c||c==undefined)){this.listeners[p].splice(i,1);if(this.currLisIndex>=i&&this.currLisPhase==p)--this.currLisIndex;d=true}}return d};this.informListeners=function(){this.informLisAbout(AJAX_STATIC_PHASE);this.informLisAbout(AJAX_ADD_HTML_PHASE);this.informLisAbout(AJAX_LOCAL_INIT_PHASE);this.informLisAbout(AJAX_GLOBAL_INIT_PHASE);this.informLisAbout(AJAX_NORMAL_PHASE)};this.informLisAbout=function(p){var a=this.listeners[p];this.currLisPhase=p;var b=this.response.getAllEvents();var j;var c=false;for(this.currLisIndex=0;this.currLisIndex<a.length;++this.currLisIndex){j=this.currLisIndex;for(var i=0;i<b.length;++i){if((a[j].source==b[i].getSource()||a[j].source==undefined)&&(a[j].name==b[i].getName()||a[j].name==undefined)){informListener(a[j].listener,b[i],this);c=true}}if(!c){if(a[j].source==undefined&&a[j].name==undefined)informListener(a[j].listener,null,this)}}};this.createEvent=function(a,b,c){return this.message.createEvent(a,b,c)};this.createFormEvent=function(a){return this.message.createFormEvent(a)};this.receive=function(a){var p=new AJAXMessageParser();this.response=p.parse(a);this.handleLastFunctionality();this.informListeners()};this.handleLastFunctionality=function(){this.removeNotLast();this.addPreviousEvents()};this.removeNotLast=function(){var a=this.response.getAllEvents();var b=new Array();for(var i=0;i<a.length;++i){if(a[i].getHandleType()==AJAX_HANDLE_LAST&&!this.isLast(a[i])){b.push(a[i])}}for(var i=0;i<b.length;++i)this.response.removeEvent(b[i])};this.isLast=function(a){for(var i=this.previousEvents.length-1;i>=0;++i){if(this.previousEvents[i]['time']<a.getMessage().getTimeSent())break;if(this.previousEvents[i]['source']==a.getSource()&&this.previousEvents[i]['name']==a.getName())return false}return true};this.addPreviousEvents=function(){var t=this.response.getTimeSent();var a=this.response.getAllEvents();var b;for(var i=0;i<a.length;++i){b=new Array();b['time']=t;b['source']=a[i].getSource();b['name']=a[i].getName();this.previousEvents.push(b)}if(this.previousEvents.length==0)return;var c=this.previousEvents.shift();while(t-c['time']>120){if(this.previousEvents.length==0)break;c=this.previousEvents.shift()}this.previousEvents.unshift(c)};this.send=function(a){if(a==undefined)a=AJAX_ADDRESS;var b=$('doc');var c=this.prepareMessageXMLToSend(this.message);this.message=new AJAXMessage();var d=this.getXMLHTTPRequest();this.lastRequest=d;d.open('POST',a,true);var e=function(){ajax.processResponse(this)};d.onreadystatechange=e;c='AJAX_MESSAGE='+encodeURIComponent(c);d.setRequestHeader("Content-type","application/x-www-form-urlencoded");d.send(c)};this.prepareMessageXMLToSend=function(a){var p=new AJAXMessageParser();a.setTimeSent(time()/1000);var b=p.createDocument(a);var c;try{var d=new XMLSerializer();c=d.serializeToString(b)}catch(err){if(b.xml)c=b.xml;else throw new Error("Couldn't convert XMLDocument to string.");}if(c.substr(0,5)!='<?xml')c='<?xml version="1.0" encoding="UTF-8"?>'+c;return c};this.getXMLHTTPRequest=function(){var a=false;try{a=new XMLHttpRequest()}catch(err1){try{a=new ActiveXObject('Msxml2.XMLHTTP')}catch(err2){try{a=new ActiveXObject('Microsoft.XMLHTTP')}catch(err3){throw new Error("No AJAX functionality found.");}}}return a};this.processResponse=function(a){if(a.send==undefined){a=this.lastRequest}if(a.readyState==4){if(a.status==200){this.loadResponseXML(a.responseXML,a.responseText)}}};this.loadResponseXML=function(a,b){if(a==null||a.documentElement==null)alert('AJAX message is not a valid XML: '+b);else if(a.documentElement.nodeName=='exception')alert(getTextFromNode(a.documentElement));else if(a.documentElement.nodeName=='message')this.receive(a);else alert('AJAX message is not a valid XML: '+b)};this.loadResponseHTML=function(a){var n=a.documentElement.firstChild;var b=null;while(n!=null){if(n.nodeName=='body'||n.nodeName=='BODY'){b=n.firstChild;break}n=n.nextSibling}if(b==null)b=a.documentElement;this.loadResponseComment(b)};this.loadResponseComment=function(a){var b='';var c=a.firstChild;var d;while(c!=null){b+=c.nodeValue;c=c.nextSibling}try{d=new ActiveXObject("Microsoft.XMLDOM");d.async="false";d.loadXML(b)}catch(e){var f=new DOMParser();d=f.parseFromString(b,"text/xml")};this.loadResponseXML(d,b)};this.newLocation=function(a){window.location=a.getParam()};this.onPageLoad=function(){var a=$('AJAXEventEngineResponse');if(a==undefined)return;ajax.loadResponseComment(a)};eventHandler.addListener(window,'load',this.onPageLoad);this.addListener('AJAXEventEngine','newLocation',new Listener(this,this.newLocation))};var AJAX_HANDLE_ALL='all';var AJAX_HANDLE_LAST='last';var AJAX_HANDLE_ONCE='once';function AJAXEvent(c,d,e,f){this.message=c;this.handle=AJAX_HANDLE_ALL;this.source=d;this.name=e;this.stat=false;this.getStatic=function(){return this.stat};this.setStatic=function(a){if(a==undefined)a=true;this.stat=a};this.getParams=function(){return this.params};this.getHandleType=function(){return this.handle};this.setHandleType=function(a){this.handle=a};this.getName=function(){return this.name};this.getSource=function(){return this.source};this.getMessage=function(){return this.message};if(f==undefined)this.params=new Hash();else if(f instanceof Hash)this.params=f;else{this.params=new Hash();this.params.setItem(0,f)}this.getParam=function(a){if(a==undefined)a=0;return this.params.getItem(a)};this.setParam=function(a,b){if(b==undefined)b=0;return this.params.setItem(b,a)}}function AJAXMessage(d){this.events=new Array();this.getId=function(){return this.id};this.timeSent=null;this.getTimeSent=function(){return this.timeSent};this.setTimeSent=function(a){this.timeSent=a};if(d==undefined)this.id=++AJAXMessage.messageIdCounter;else this.id=d;this.getEventsBySource=function(a){var b=new Hash();for(var i=0;i<this.events.length;++i){if(this.events[i].getSource()==a){b.setItem(this.events[i].getName(),this.events[i])}}return b};this.removeEvent=function(a){for(var i in this.events){if(this.events[i]==a){this.events.splice(i,1);return true}}return false};this.getEventsByName=function(a){var b=new Hash();for(var i=0;i<this.events.length;++i){if(this.events[i].getName()==a){b.setItem(this.events[i].getSource(),this.events[i])}}return b};this.getAllEvents=function(){return this.events};this.getEvent=function(a,b){for(var i=0;i<this.events.length;++i){if(this.events[i].getName()==b&&this.events[i].getSource()==a)return this.events[i]}return null};this.createEvent=function(a,b,c){var e=new AJAXEvent(this,a,b,c);this.events.push(e);return e};this.createFormEvent=function(a){var b=this.createEvent(a.id,'submit');var c=a.elements;var n;for(var i=0;i<c.length;++i){n=c[i].name;if(c[i].type=='radio'&&!c[i].checked)continue;if(c[i].type=='checkbox'&&!c[i].checked)continue;if(c[i].type=='select-multiple'){if(n.charAt(n.length-1)==']'){n=n.substr(0,n.length-2);var p=new Array();var o=c[i].options;for(var j=0;j<c[i].length;++j){if(o[j].selected)p.push(o[j].value)}b.setParam(p,n);continue}}if(n.charAt(n.length-1)==']'){n=n.substr(0,n.length-2);var p=b.getParam(n);if(p==undefined)p=new Array();p.push(c[i].value);b.setParam(p,n);continue}b.setParam(c[i].value,n)}return b};this.eventExists=function(a,b){for(var i=0;i<this.events.length;++i){if(this.events[i].getSource()==a&&this.events[i].getName()==b)return true}return false}}AJAXMessage.messageIdCounter=0;var AJAX_STRING_TYPE='string';var AJAX_NUMBER_TYPE='number';var AJAX_ARRAY_TYPE='array';var AJAX_OBJECT_TYPE='object';var AJAX_BOOL_TYPE='bool';var AJAX_NULL_TYPE='null';function AJAXMessageParser(){this.xml=null;this.msg=null;this.objects=null;this.createDocument=function(a){this.xml=null;if(document.implementation&&document.implementation.createDocument){this.xml=document.implementation.createDocument("","",null)}else if(window.ActiveXObject){this.xml=new ActiveXObject("Microsoft.XMLDOM")}else{throw new Error("Couldn't create new XMLDocument");}this.xmlMessage(a);return this.xml};this.saveXML=function(a){return this.createDOMDocument(a).innerHTML};this.xmlMessage=function(a){this.objects=new Array();var b=this.xml.createElement('message');b.setAttribute('id',a.id);this.xml.appendChild(b);var c=this.xml.createElement('time');c.appendChild(this.xml.createTextNode(a.timeSent));b.appendChild(c);var d=this.xmlEvents(a.getAllEvents());for(var i=0;i<d.length;++i){b.appendChild(d[i])}if(this.objects.length>0)b.appendChild(this.xmlObjects())};this.xmlEvents=function(a){var b=new Array();for(var i in a){b.push(this.xmlEvent(a[i]))}return b};this.xmlEvent=function(a){var e=this.xml.createElement('event');var s=this.xml.createElement('source');s.appendChild(this.xml.createTextNode(a.getSource()));e.appendChild(s);var n=this.xml.createElement('name');n.appendChild(this.xml.createTextNode(a.getName()));e.appendChild(n);if(a.handle!=AJAX_HANDLE_ALL){var h=this.xml.createElement('handle');h.appendChild(this.xml.createTextNode(a.getHandleType()));e.appendChild(h)}if(a.getStatic()){var t=this.xml.createElement('static');t.appendChild(this.xml.createTextNode('1'));e.appendChild(t)}var p=a.params;if(p.length>0){e.appendChild(this.xmlParams(p))}return e};this.xmlParams=function(a){var p=this.xml.createElement('params');for(var b in a.items){p.appendChild(this.xmlParam(a.items[b],b))}return p};this.xmlParam=function(a,b,c,d){if(b==undefined)b=null;if(c==undefined)c=AJAX_STRING_TYPE;if(d==undefined)d='p';var e;var p=this.xml.createElement(d);if(b!=null){p.setAttribute('id',b)}if(a==null){e=AJAX_NULL_TYPE}else if(typeof(a)=='string'||(typeof(a)=='object'&&a instanceof String)){this.xmlStringParam(p,a);e=AJAX_STRING_TYPE}else if(typeof(a)=='number'){this.xmlNumberParam(p,a);e=AJAX_NUMBER_TYPE}else if(typeof(a)=='boolean'){this.xmlBoolParam(p,a);e=AJAX_BOOL_TYPE}else if(a instanceof Array||a instanceof Hash){this.xmlArrayParam(p,a);e=AJAX_ARRAY_TYPE}else if(typeof(a)=='object'){this.xmlObjectParam(p,a);e=AJAX_OBJECT_TYPE}else{throw new Error("Could not create AJAX message XML. One of the parameters has unhandled type '"+typeof(a)+"'");}if(c!=e)p.setAttribute('type',e);return p};this.xmlStringParam=function(p,a){var c;if(a!=htmlentities(a))c=this.xml.createCDATASection(a);else c=this.xml.createTextNode(a);p.appendChild(c)};this.xmlNumberParam=function(p,a){var c=this.xml.createTextNode(a);p.appendChild(c)};this.xmlBoolParam=function(p,a){var v;if(a==true)v=1;else v=0;var c=this.xml.createTextNode(v);p.appendChild(c)};this.xmlArrayParam=function(p,a){var k,v,c;if(a instanceof Hash)a=a.items;for(key in a){if(!isNaN(key))k=this.xmlParam(parseFloat(key),null,AJAX_NUMBER_TYPE,'k');else k=this.xmlParam(key,null,AJAX_NUMBER_TYPE,'k');v=this.xmlParam(a[key],null,AJAX_STRING_TYPE,'v');c=this.xml.createElement('c');c.appendChild(k);c.appendChild(v);p.appendChild(c)}};this.xmlObjectParam=function(p,a){var b=this.objectToXML(a);p.setAttribute('refer',b)};this.objectToXML=function(a){for(var i=0;i<this.objects.length;++i){if(this.objects[i]==a)return i}this.objects.push(a);return this.objects.length-1};this.xmlObjects=function(){var a=this.xml.createElement('objects');for(var i=0;i<this.objects.length;++i){a.appendChild(this.xmlObject(this.objects[i],i))}return a};this.xmlObject=function(a,b){var o=this.xml.createElement('object');o.setAttribute('id',b);for(var c in a){o.appendChild(this.xmlParam(a[c],c))}return o};this.parse=function(a){this.xml=a;var b=this.xml.documentElement;if(b==undefined||b.nodeName!='message')throw new Error("Given AJAX message XML is incorrect. No main node called 'message'");if(b.getAttribute('id')==undefined)throw new Error("Given AJAX message XML is incorrect. Message main node has no id attribute");this.msg=new AJAXMessage(b.getAttribute('id'));b=b.firstChild;var c=new Array();while(b!=undefined){switch(b.nodeName){case'time':this.msg.setTimeSent(parseFloat(getTextFromNode(b)));break;case'event':c.push(b);break;case'objects':this.parseObjects(b);break}b=b.nextSibling}if(this.msg.getTimeSent()==null)throw new Error("AJAX message XML is incorrect. Message misses reguired 'time' node");this.parseEvents(c);return this.msg};this.parseObjects=function(a){this.objects=new Hash();var b=a.firstChild;var c=new Array();while(b!=undefined){if(b.nodeName=='object'){if(b.getAttribute('id')==undefined)throw new Error("AJAX message XML is incorrect. At least one passed object doesn't have 'id' attribute");this.objects.setItem(b.getAttribute('id'),new Object());c.push(b)}b=b.nextSibling}for(var i=0;i<c.length;++i){this.parseObject(c[i],this.objects.getItem(c[i].getAttribute('id')))}};this.parseObject=function(a,b){var c=a.firstChild;while(c!=undefined){if(c.nodeName=='p'){var d=this.getParamId(c,false);b[d]=this.getParamValue(c)}c=c.nextSibling}return b};this.parseEvents=function(a){for(var i=0;i<a.length;++i){if(a[i].nodeName=='event'){this.parseEvent(a[i])}}};this.parseEvent=function(a){var b=a.firstChild;var c=new Hash();var d=AJAX_HANDLE_ALL;var e,name;var f=false;while(b!=undefined){switch(b.nodeName){case'source':e=getTextFromNode(b);break;case'name':name=getTextFromNode(b);break;case'handle':d=getTextFromNode(b);break;case'static':f=this.parseBool(getTextFromNode(b));break;case'params':c=this.parseEventParams(b);break}b=b.nextSibling}if(name==undefined)throw new Error("AJAX message XML data is incorrect. At least one event doesn't have required name node");if(e==undefined)throw new Error("AJAX message XML data is incorrect. At least one event doesn't have required source node");var g=this.msg.createEvent(e,name,c);g.setHandleType(d);g.setStatic(f);return g};this.parseEventParams=function(a){var p=new Hash();var b=a.firstChild;var c;while(b!=undefined){if(b.nodeName=='p'){c=this.getParamId(b);if(c==undefined&&p[c]!=undefined)throw new Error("AJAX message XML data is incorrect. One of the events has more than one default parameter (parameter without 'id' attribute).");p.setItem(c,this.getParamValue(b))}b=b.nextSibling}return p};this.getParamId=function(a,b){if(b==undefined)b=true;if(!b&&a.getAttribute('id')==undefined)throw new Error("AJAX message XML is incorrect. At least one parameter lacks required 'id' attribute.");if(a.getAttribute('id')!=undefined)return a.getAttribute('id');else return null};this.getParamValue=function(a,b){if(b==undefined)b=AJAX_STRING_TYPE;var c=b;if(a.getAttribute('type')!=undefined)c=a.getAttribute('type');switch(c){case AJAX_STRING_TYPE:return getTextFromNode(a);case AJAX_NUMBER_TYPE:return parseFloat(getTextFromNode(a));case AJAX_BOOL_TYPE:if(getTextFromNode(a)=='1')return true;return false;case AJAX_NULL_TYPE:return null;case AJAX_ARRAY_TYPE:return this.parseArray(a);case AJAX_OBJECT_TYPE:if(a.getAttribute('refer')==undefined)throw new Error("AJAX message XML is incorrect. One of the params is of object type but has no 'refer' attribute");return this.objects.getItem(a.getAttribute('refer'));default:throw new Error("One of the params in AJAX message XML has unrecognized type: 'type'.");}};this.parseArray=function(a){var b=new Array();var c=a.firstChild;while(c!=undefined){if(c.nodeName=='c'){this.parseArrayCell(c,b)}c=c.nextSibling}return b};this.parseArrayCell=function(a,b){var c=a.firstChild;var k,v;while(c!=undefined){switch(c.nodeName){case'k':k=this.getParamValue(c,AJAX_NUMBER_TYPE);break;case'v':v=this.getParamValue(c);break}c=c.nextSibling}if(typeof(v)=='undefined'){throw new Error("AJAX message XML is incorrect. One of the cells (c node '"+k+"') in array misses value (v node)");}if(typeof(k)=='undefined')throw new Error("AJAX message XML is incorrect. One of the cells (c node '"+v+"') in array misses key (k node)");b[k]=v}}function getTextFromNode(n){if(n.text!=undefined)return n.text;else if(n.textContent!=undefined)return n.textContent;return''};var ajax=new AJAXEventEngine();var DIVWindow_CLOSE='close';var DIVWindow_HIDE='hide';function DIVWindow(f,g){this.container=null;this.width='300px';this.height='150px';this.align="center";this.verticalAlign="center";this.titleBar=null;this.htmlArea=null;this.id=f;this.showing=false;this.quater=0;this.minPadding=0;this.actionOnClose=null;this.listener=new ListenerHandler(this);this.addListener=function(a,b){this.listener.addListener(a,b)};this.removeListener=function(a,b){this.listener.removeListener(a,b)};this.setActionOnClose=function(a){this.actionOnClose=a};this.setMinPadding=function(a){this.minPadding=a;if(this.showing)this.show()};this.setQuater=function(a){this.quater=a;if(this.showing)this.show()};this.setWidth=function(a){this.width=a;if(this.showing)this.show()};this.setHeight=function(a){this.height=a;if(this.showing)this.show()};this.setAlign=function(a){this.align=a;if(this.showing)this.show()};this.setVerticalAlign=function(a){this.verticalAlign=a;if(this.showing)this.show()};this.setContents=function(a){this.htmlArea.innerHTML=a};this.getContents=function(){return this.htmlArea.innerHTML};this.setTitle=function(a){this.titleBar.titlePlace.innerHTML=a};this.getTitle=function(){return this.titleBar.titlePlace.innerHTML};this.show=function(){if($(this.id)==undefined)document.body.appendChild(this.modal);this.modal.style.display='block';this.showing=true;this.positionTitleBar(this.titleBar);this.positionHTMLArea(this.htmlArea);this.positionContainer(this.container)};this.hide=function(){if(this.showing){this.showing=false;this.modal.style.display='none';var e=new Object();e.type=DIVWindow_HIDE;e.source=this;this.listener.informListeners(e,e.type)}};this.close=function(){if($(this.id)==undefined)return;var e=new Object();e.type=DIVWindow_CLOSE;e.source=this;this.listener.informListeners(e,e.type);this.showing=false;document.body.removeChild(this.modal)};this.getContainerWidth=function(){return this.getContainerSize(this.width,document.documentElement.clientWidth)};this.getContainerHeight=function(){return this.getContainerSize(this.height,document.documentElement.clientHeight)};this.getContainerSize=function(a,b){if(a.charAt(a.length-1)=='%'){p=parseInt(a);a=Math.round(p/100*b)}else a=parseInt(a);return a};this.createTitleBar=function(a){var t=document.createElement('div');t.className='DIVWindowTitleBar';var b=document.createElement('div');b.className='DIVWindowTitle';t.titlePlace=b;t.appendChild(b);var c=document.createElement('div');c.className='DIVWindowCloseButton';t.closeButton=c;t.appendChild(c);eventHandler.addListener(c,'click',this.closeListener);return t};this.positionTitleBar=function(t){t.style.width=this.getContainerWidth()+'px';t.titlePlace.style.width=(this.getContainerWidth()-16)+'px'};this.closeListener=function(a){var c=this.parentNode.parentNode.controller;if(c.actionOnClose==null)return;c.actionOnClose(a)};this.createHTMLArea=function(){var h=document.createElement('div');h.className='DIVWindowHTMLArea';return h};this.positionHTMLArea=function(h){h.style.width=this.getContainerWidth()+'px';h.style.height=this.getContainerHeight()+'px'};this.createContainer=function(a,b){var d=document.createElement('div');d.className='DIVWindow';d.setAttribute('id',this.id);d.controller=this;d.appendChild(a);d.appendChild(b);return d};this.positionContainer=function(d){d.style.width=(this.getContainerWidth())+'px';d.style.height=(this.getContainerHeight()+22)+'px';this.setPosition(d)};this.setPosition=function(d){d.style.top=0;var a=0,yoff=0;if(document.documentElement.scrollLeft>0)a=document.documentElement.scrollLeft;else if(window.pageXOffset>0)a=window.pageXOffset;if(document.documentElement.scrollTop>0)yoff=document.documentElement.scrollTop;else if(window.pageYOffset>0)yoff=window.pageYOffset;var w=document.documentElement.clientWidth,h=document.documentElement.clientHeight;if(this.quater>0){w=w/2;h=h/2;switch(this.quater){case 2:a+=w;break;case 3:yoff+=h;break;case 4:a+=w;yoff+=h;break}}d.style.left=this.countPosition(this.align,this.getContainerWidth(),w)+a+'px';d.style.top=this.countPosition(this.verticalAlign,this.getContainerHeight(),h)+yoff+'px'};this.countPosition=function(a,b,c,d){var p;if(d==undefined)d=0;if(a=='top'||a=='left')p=this.minPadding;else if(a=='bottom'||a=='right')p=c-b-this.minPadding;else if(a=='center'){p=Math.round(c/2-b/2);if(p<this.minPadding)p=this.minPadding}else throw new Error("Unrecognized align type '"+a+"'.");return(p+d)};this.createModal=function(a,b){var m=document.createElement('div');var z=maxZIndex();m.style.zIndex=z+1;a.style.zIndex=z+2;if(b){m.className='DIVWindowModal';m.style.position='absolute';m.style.top=0;m.style.right=0;m.style.left=0;var h=Math.max(document.body.clientHeight,document.documentElement.clientHeight,document.documentElement.scrollHeight);m.style.height=h+'px'}m.appendChild(a);return m};this.titleBar=this.createTitleBar(this.title);this.htmlArea=this.createHTMLArea();this.container=this.createContainer(this.titleBar,this.htmlArea);this.modal=this.createModal(this.container,g);this.actionOnClose=this.close};function DIVDialogWindow(b,c,d){if(d==undefined)d=true;var w=new DIVWindow(b,d);w.setHeight('100px');var x='<div style="text-align: center; padding: 10px;"></div><div style="text-align: center;">';if(c==undefined||c.length==0){c=new Array();c.push('OK')}x=x+'<input type="button" class="button" value="'+c[0]+'" onclick="$(\''+w.id+'\').controller.onOK()"/>';if(c.length>1)for(var i=1;i<c.length;++i)x=x+'<input type="button" class="button" value="'+c[i]+'" onclick="$(\''+w.id+'\').controller.onCancel('+i+')"/>';x=x+'</div>';w.htmlArea.innerHTML=x;w.onOK=function(){this.returnStatus=true;this.buttonIndex=0;this.actionOnClose()};w.onCancel=function(a){this.returnStatus=false;this.buttonIndex=a;this.actionOnClose()};w.setMessage=function(a){this.htmlArea.firstChild.innerHTML=a};w.getMessage=function(){return this.htmlArea.firstChild.innerHTML};w.setMessage('');return w}function DIVPageWindow(a,b,c){var w=new DIVWindow(a,c);w.setTitleFromDoc=function(){w.contentWindow=w.htmlArea.firstChild.contentWindow;if(this.getTitle()=='')this.setTitle(this.htmlArea.firstChild.contentWindow.document.title)};w.extendsSetWidth=w.setWidth;w.setWidth=function(w){this.extendsSetWidth(w);this.htmlArea.firstChild.width=w};w.extendsSetHeight=w.setHeight;w.setHeight=function(h){this.extendsSetHeight(h);this.htmlArea.firstChild.height=h};w.setContents('<iframe src="'+b+'" id="'+a+'Object" frameborder="0"  style="border: 0px;">Your browser is not compatible with this page.</iframe>');w.setWidth('920px');w.setHeight('480px');w.setMinPadding(30);w.show();w.htmlArea.style.overflow='hidden';eventHandler.addListener(w.htmlArea.firstChild,'load',new Listener(w,w.setTitleFromDoc));return w}function parentDIVWindow(){var a=parentWindow().document.getElementsByTagName('iframe');for(var i=0;i<a.length;++i){if(a[i].contentWindow==window){var b=a[i].id;b=b.substr(0,b.length-6);var c=parentWindow().document.getElementById(b);if(c==undefined)return null;return c.controller}}return null};function parentWindow(){return window.parent};function topWindow(){var w=window;while(w.parent!=w)w=w.parent;return w}function DIVWindowShowDialog(a){var w=new DIVDialogWindow('dialogFromServer'+time());w.setMessage(a.getParam('message'));w.setTitle(a.getParam('title'));w.setWidth('250px');w.setHeight('110px');if(a.getParam('width')!=null)w.setWidth(a.getParam('width'));if(a.getParam('height')!=null)w.setHeight(a.getParam('height'));w.show()};ajax.addListener('DIVWindow','showDialog',DIVWindowShowDialog);function DIVWindowClose(a){parentDIVWindow().close()};ajax.addListener('DIVWindow','close',DIVWindowClose);function AJAXInput(d){this.addError=function(a){this.addErrorDIV();var b=document.createTextNode(a);var c=document.createElement('br');this.errorDiv.firstChild.appendChild(b);this.errorDiv.firstChild.appendChild(c)};this.removeErrors=function(){if(this.errorDiv==null)return;this.errorDiv.parentNode.replaceChild(this.input,this.errorDiv);this.errorDiv=null};this.addErrorDIV=function(){if(this.errorDiv!=null)return;if(this.errorDiv!=undefined)return;this.errorDiv=document.createElement('div');this.errorDiv.setAttribute('id',this.input.id+'ErrorDiv');for(var i in this.attr){if(i=='class'&&this.errorDiv.className!=undefined)this.errorDiv.className=this.attr[i];else this.errorDiv.setAttribute(i,this.attr[i])}this.input.parentNode.replaceChild(this.errorDiv,this.input);var a=document.createElement('div');for(var i in this.txtAttr){if(i=='class'&&a.className!=undefined)a.className=this.txtAttr[i];else a.setAttribute(i,this.txtAttr[i])}this.errorDiv.appendChild(a);this.errorDiv.appendChild(this.input)};this.setErrors=function(a){this.removeErrors();for(var i in a){this.addError(a[i])}};this.ajaxErrors=function(a){var c=$(a.getSource()).controller;var b=a.getParam('errors');if(a.getParam()==true)c.removeErrors();else c.setErrors(b)};this.ajaxSet=function(a){var v=a.getParam();var c=$(a.getSource());switch(c.type){case'checkbox':case'radio':if(v)c.checked=true;else c.checked=false;break;case'select-one':var t=new Array();t.push(v);v=t;case'select-multiple':for(var i=0;i<c.options.length;++i){c.options[i].selected=false;for(var b in v){if(c.options[i].value==v[b]){c.options[i].selected=true}}}break;default:c.value=v;break}};this.attr=new Array();this.txtAttr=new Array();this.input=$(d);this.input.controller=this;this.errorDiv=null;var x=$(this.input.getAttribute('id')+'ErrorDiv');if(x!=undefined)this.errorDiv=x;ajax.addListener(d,'errorsInfo',this.ajaxErrors,AJAX_LOCAL_INIT_PHASE);ajax.addListener(d,'set',this.ajaxSet,AJAX_LOCAL_INIT_PHASE)};function initAJAXInput(a){if($(a.getParam())!=undefined){var i=new AJAXInput(a.getParam());i.attr=a.getParam('attr');i.txtAttr=a.getParam('txtAttr')}};ajax.addListener('AJAXInput','ajaxInit',initAJAXInput,AJAX_LOCAL_INIT_PHASE);var FORM_PASS_EVENT='pass';var FORM_FAIL_EVENT='fail';var FORM_SUBMIT_EVENT='submit';function AJAXForm(f){this.setErrors=function(a){this.removeErrors();for(var i in a){this.addError(a[i])}};this.addError=function(a){this.errors.push(a);this.errorDiv.style.display='block';this.errorDiv.appendChild(document.createTextNode(a));this.errorDiv.appendChild(document.createElement('br'))};this.removeErrors=function(){this.errorDiv.style.display='none';this.errorDiv.innerHTML='';this.errors=new Array()};this.onAjaxSubmit=function(a){this.ajaxSubmit(a)};this.ajaxSubmit=function(a){ajax.addListener(this.form.id,'submitResponse',new Listener(this,this.ajaxSubmitResponse));var b=ajax.createFormEvent(this.form);var e=new Object();e.source=this;e.name=FORM_SUBMIT_EVENT;this.listeners.informListeners(e,FORM_SUBMIT_EVENT);eventHandler.cancelEvent(a);this.Loader.startLoad();ajax.send()};this.ajaxSubmitResponse=function(a,b,c){ajax.removeListener(this.form.id,'submitResponse',c);this.Loader.endLoad();if(a.getParam('status')=='OK'){this.removeErrors();var d=new Object();d.source=this;d.name=FORM_PASS_EVENT;d.status=true;this.listeners.informListeners(d,FORM_PASS_EVENT)}else{if(typeof(a.getParam('errors'))=='object')this.setErrors(a.getParam('errors'));var d=new Object();d.source=this;d.name=FORM_FAIL_EVENT;d.status=false;this.listeners.informListeners(d,FORM_FAIL_EVENT)}};this.addListener=function(a,b){return this.listeners.addListener(a,b)};this.removeListener=function(a,b){return this.listeners.removeListener(a,b)};this.Loader=function(a){this.id=a;this.form=$(a);this.startLoad=function(){for(var i=0;i<this.form.elements.length;++i){this.form.elements[i].disabledState=this.form.elements[i].disabled;this.form.elements[i].disabled=true}};this.endLoad=function(){for(var i=0;i<this.form.elements.length;++i){this.form.elements[i].disabled=this.form.elements[i].disabledState}}};this.Loader=new this.Loader(f);this.elements=new Array();this.errors=new Array();this.id=f;this.form=$(f);this.form.controller=this;this.listeners=new ListenerHandler(this);this.errorDiv=$(this.form.id+'_errorDialog');eventHandler.addListener(this.form,'submit',new Listener(this,this.onAjaxSubmit))};function initAJAXForm(a){if($(a.getParam())!=undefined)new AJAXForm(a.getParam())};ajax.addListener('AJAXForm','ajaxInit',initAJAXForm,AJAX_LOCAL_INIT_PHASE);function AJAXFileForm(b){var c=new AJAXForm(b);c.ajaxSubmit=function(a){ajax.addListener(this.form.id,'submitResponse',new Listener(this,this.ajaxSubmitResponse));this.frameSubmit(a)};c.frameSubmit=function(a){var e=new Object();e.source=this;e.name=FORM_SUBMIT_EVENT;this.listeners.informListeners(e,FORM_SUBMIT_EVENT)};c.createFrame=function(){var n='f'+time();var d=document.createElement('div');d.id='d'+n;d.innerHTML='<iframe style="display: none;" src="about:blank" id="'+n+'" name="'+n+'"></iframe>';document.body.appendChild(d);var f=document.getElementById(n);f.controller=this;eventHandler.addListener(f,'load',new Listener(this,this.onFrameResponse));this.form.setAttribute('target',n);return n};c.onFrameResponse=function(a,i){if(i.contentDocument){var d=i.contentDocument}else if(i.contentWindow){var d=i.contentWindow.document}if(d.location.href=="about:blank"){return}ajax.loadResponseHTML(d);this.createFrame()};var i=document.createElement('input');i.setAttribute('type','hidden');i.setAttribute('name','AJAX_MESSAGE');c.form.appendChild(i);var g=new AJAXMessage();g.createEvent(c.id,'frameSubmit');i.value=ajax.prepareMessageXMLToSend(g);c.createFrame()};function initAJAXFileForm(a){if($(a.getParam())!=undefined)new AJAXFileForm(a.getParam())};ajax.addListener('AJAXFileForm','ajaxInit',initAJAXFileForm,AJAX_LOCAL_INIT_PHASE);function ActionLink(c){this.onClick=function(a,b){if(this.action!=null){eventHandler.cancelEvent(a);eval(this.action)}};this.a=$(c);this.a.controller=this;this.action=null;eventHandler.addListener(this.a,'click',new Listener(this,this.onClick))};function initActionLink(b){var a=new ActionLink(b.getParam());a.address=b.getParam('address');a.action=b.getParam('action')};ajax.addListener('ActionLink','initAjax',initActionLink,AJAX_LOCAL_INIT_PHASE);function inArray(a,b){for(var i=0;i<b.length;++i)if(b[i]==a)return true;return false};
