home *** CD-ROM | disk | FTP | other *** search
- dhtmlx=function(obj){
- for (var a in obj) dhtmlx[a]=obj[a];
- return dhtmlx; //simple singleton
- };
- dhtmlx.extend_api=function(name,map,ext){
- var t = window[name];
- if (!t) return; //component not defined
- window[name]=function(obj){
- if (obj && typeof obj == "object" && !obj.tagName){
- var that = t.apply(this,(map._init?map._init(obj):arguments));
- //global settings
- for (var a in dhtmlx)
- if (map[a]) this[map[a]](dhtmlx[a]);
- //local settings
- for (var a in obj){
- if (map[a]) this[map[a]](obj[a]);
- else if (a.indexOf("on")==0){
- this.attachEvent(a,obj[a]);
- }
- }
- } else
- var that = t.apply(this,arguments);
- if (map._patch) map._patch(this);
- return that||this;
- };
- window[name].prototype=t.prototype;
- if (ext)
- dhtmlXHeir(window[name].prototype,ext);
- };
-
- dhtmlxAjax={
- get:function(url,callback){
- var t=new dtmlXMLLoaderObject(true);
- t.async=(arguments.length<3);
- t.waitCall=callback;
- t.loadXML(url)
- return t;
- },
- post:function(url,post,callback){
- var t=new dtmlXMLLoaderObject(true);
- t.async=(arguments.length<4);
- t.waitCall=callback;
- t.loadXML(url,true,post)
- return t;
- },
- getSync:function(url){
- return this.get(url,null,true)
- },
- postSync:function(url,post){
- return this.post(url,post,null,true);
- }
- }
-
- /**
- * @desc: xmlLoader object
- * @type: private
- * @param: funcObject - xml parser function
- * @param: object - jsControl object
- * @param: async - sync/async mode (async by default)
- * @param: rSeed - enable/disable random seed ( prevent IE caching)
- * @topic: 0
- */
- function dtmlXMLLoaderObject(funcObject, dhtmlObject, async, rSeed){
- this.xmlDoc="";
-
- if (typeof (async) != "undefined")
- this.async=async;
- else
- this.async=true;
-
- this.onloadAction=funcObject||null;
- this.mainObject=dhtmlObject||null;
- this.waitCall=null;
- this.rSeed=rSeed||false;
- return this;
- };
- /**
- * @desc: xml loading handler
- * @type: private
- * @param: dtmlObject - xmlLoader object
- * @topic: 0
- */
- dtmlXMLLoaderObject.prototype.waitLoadFunction=function(dhtmlObject){
- var once = true;
- this.check=function (){
- if ((dhtmlObject)&&(dhtmlObject.onloadAction != null)){
- if ((!dhtmlObject.xmlDoc.readyState)||(dhtmlObject.xmlDoc.readyState == 4)){
- if (!once)
- return;
-
- once=false; //IE 5 fix
- if (typeof dhtmlObject.onloadAction == "function")
- dhtmlObject.onloadAction(dhtmlObject.mainObject, null, null, null, dhtmlObject);
-
- if (dhtmlObject.waitCall){
- dhtmlObject.waitCall.call(this,dhtmlObject);
- dhtmlObject.waitCall=null;
- }
- }
- }
- };
- return this.check;
- };
-
- /**
- * @desc: return XML top node
- * @param: tagName - top XML node tag name (not used in IE, required for Safari and Mozilla)
- * @type: private
- * @returns: top XML node
- * @topic: 0
- */
- dtmlXMLLoaderObject.prototype.getXMLTopNode=function(tagName, oldObj){
- if (this.xmlDoc.responseXML){
- var temp = this.xmlDoc.responseXML.getElementsByTagName(tagName);
- if(temp.length==0 && tagName.indexOf(":")!=-1)
- var temp = this.xmlDoc.responseXML.getElementsByTagName((tagName.split(":"))[1]);
- var z = temp[0];
- } else
- var z = this.xmlDoc.documentElement;
-
- if (z){
- this._retry=false;
- return z;
- }
-
- if ((_isIE)&&(!this._retry)){
- //fall back to MS.XMLDOM
- var xmlString = this.xmlDoc.responseText;
- var oldObj = this.xmlDoc;
- this._retry=true;
- this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
- this.xmlDoc.async=false;
- this.xmlDoc["loadXM"+"L"](xmlString);
-
- return this.getXMLTopNode(tagName, oldObj);
- }
- dhtmlxError.throwError("LoadXML", "Incorrect XML", [
- (oldObj||this.xmlDoc),
- this.mainObject
- ]);
-
- return document.createElement("DIV");
- };
-
- /**
- * @desc: load XML from string
- * @type: private
- * @param: xmlString - xml string
- * @topic: 0
- */
- dtmlXMLLoaderObject.prototype.loadXMLString=function(xmlString){
- {
- try{
- var parser = new DOMParser();
- this.xmlDoc=parser.parseFromString(xmlString, "text/xml");
- }
- catch (e){
- this.xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
- this.xmlDoc.async=this.async;
- this.xmlDoc["loadXM"+"L"](xmlString);
- }
- }
-
- this.onloadAction(this.mainObject, null, null, null, this);
-
- if (this.waitCall){
- this.waitCall();
- this.waitCall=null;
- }
- }
- /**
- * @desc: load XML
- * @type: private
- * @param: filePath - xml file path
- * @param: postMode - send POST request
- * @param: postVars - list of vars for post request
- * @topic: 0
- */
- dtmlXMLLoaderObject.prototype.loadXML=function(filePath, postMode, postVars, rpc){
- if (this.rSeed)
- filePath+=((filePath.indexOf("?") != -1) ? "&" : "?")+"a_dhx_rSeed="+(new Date()).valueOf();
- this.filePath=filePath;
-
- if ((!_isIE)&&(window.XMLHttpRequest))
- this.xmlDoc=new XMLHttpRequest();
- else {
- if (document.implementation&&document.implementation.createDocument){
- this.xmlDoc=document.implementation.createDocument("", "", null);
- this.xmlDoc.onload=new this.waitLoadFunction(this);
- this.xmlDoc.load(filePath);
- return;
- } else
- this.xmlDoc=new ActiveXObject("Microsoft.XMLHTTP");
- }
-
- if (this.async)
- this.xmlDoc.onreadystatechange=new this.waitLoadFunction(this);
- this.xmlDoc.open(postMode ? "POST" : "GET", filePath, this.async);
-
- if (rpc){
- this.xmlDoc.setRequestHeader("User-Agent", "dhtmlxRPC v0.1 ("+navigator.userAgent+")");
- this.xmlDoc.setRequestHeader("Content-type", "text/xml");
- }
-
- else if (postMode)
- this.xmlDoc.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
-
- this.xmlDoc.setRequestHeader("X-Requested-With","XMLHttpRequest");
- this.xmlDoc.send(null||postVars);
-
- if (!this.async)
- (new this.waitLoadFunction(this))();
- };
- /**
- * @desc: destructor, cleans used memory
- * @type: private
- * @topic: 0
- */
- dtmlXMLLoaderObject.prototype.destructor=function(){
- this.onloadAction=null;
- this.mainObject=null;
- this.xmlDoc=null;
- return null;
- }
-
- dtmlXMLLoaderObject.prototype.xmlNodeToJSON = function(node){
- var t={};
- for (var i=0; i<node.attributes.length; i++)
- t[node.attributes[i].name]=node.attributes[i].value;
- t["_tagvalue"]=node.firstChild?node.firstChild.nodeValue:"";
- for (var i=0; i<node.childNodes.length; i++){
- var name=node.childNodes[i].tagName;
- if (name){
- if (!t[name]) t[name]=[];
- t[name].push(this.xmlNodeToJSON(node.childNodes[i]));
- }
- }
- return t;
- }
-
- /**
- * @desc: Call wrapper
- * @type: private
- * @param: funcObject - action handler
- * @param: dhtmlObject - user data
- * @returns: function handler
- * @topic: 0
- */
- function callerFunction(funcObject, dhtmlObject){
- this.handler=function(e){
- if (!e)
- e=window.event;
- funcObject(e, dhtmlObject);
- return true;
- };
- return this.handler;
- };
-
- /**
- * @desc: Calculate absolute position of html object
- * @type: private
- * @param: htmlObject - html object
- * @topic: 0
- */
- function getAbsoluteLeft(htmlObject){
- return getOffset(htmlObject).left;
- }
- /**
- * @desc: Calculate absolute position of html object
- * @type: private
- * @param: htmlObject - html object
- * @topic: 0
- */
- function getAbsoluteTop(htmlObject){
- return getOffset(htmlObject).top;
- }
-
- function getOffsetSum(elem) {
- var top=0, left=0;
- while(elem) {
- top = top + parseInt(elem.offsetTop);
- left = left + parseInt(elem.offsetLeft);
- elem = elem.offsetParent;
- }
- return {top: top, left: left};
- }
- function getOffsetRect(elem) {
- var box = elem.getBoundingClientRect();
- var body = document.body;
- var docElem = document.documentElement;
- var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop;
- var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft;
- var clientTop = docElem.clientTop || body.clientTop || 0;
- var clientLeft = docElem.clientLeft || body.clientLeft || 0;
- var top = box.top + scrollTop - clientTop;
- var left = box.left + scrollLeft - clientLeft;
- return { top: Math.round(top), left: Math.round(left) };
- }
- function getOffset(elem) {
- if (elem.getBoundingClientRect && !_isChrome) {
- return getOffsetRect(elem);
- } else {
- return getOffsetSum(elem);
- }
- }
-
- /**
- * @desc: Convert string to it boolean representation
- * @type: private
- * @param: inputString - string for covertion
- * @topic: 0
- */
- function convertStringToBoolean(inputString){
- if (typeof (inputString) == "string")
- inputString=inputString.toLowerCase();
-
- switch (inputString){
- case "1":
- case "true":
- case "yes":
- case "y":
- case 1:
- case true:
- return true;
- break;
-
- default: return false;
- }
- }
-
- /**
- * @desc: find out what symbol to use as url param delimiters in further params
- * @type: private
- * @param: str - current url string
- * @topic: 0
- */
- function getUrlSymbol(str){
- if (str.indexOf("?") != -1)
- return "&"
- else
- return "?"
- }
-
- function dhtmlDragAndDropObject(){
- if (window.dhtmlDragAndDrop)
- return window.dhtmlDragAndDrop;
-
- this.lastLanding=0;
- this.dragNode=0;
- this.dragStartNode=0;
- this.dragStartObject=0;
- this.tempDOMU=null;
- this.tempDOMM=null;
- this.waitDrag=0;
- window.dhtmlDragAndDrop=this;
-
- return this;
- };
-
- dhtmlDragAndDropObject.prototype.removeDraggableItem=function(htmlNode){
- htmlNode.onmousedown=null;
- htmlNode.dragStarter=null;
- htmlNode.dragLanding=null;
- }
- dhtmlDragAndDropObject.prototype.addDraggableItem=function(htmlNode, dhtmlObject){
- htmlNode.onmousedown=this.preCreateDragCopy;
- htmlNode.dragStarter=dhtmlObject;
- this.addDragLanding(htmlNode, dhtmlObject);
- }
- dhtmlDragAndDropObject.prototype.addDragLanding=function(htmlNode, dhtmlObject){
- htmlNode.dragLanding=dhtmlObject;
- }
- dhtmlDragAndDropObject.prototype.preCreateDragCopy=function(e){
- if ((e||event) && (e||event).button == 2)
- return;
-
- if (window.dhtmlDragAndDrop.waitDrag){
- window.dhtmlDragAndDrop.waitDrag=0;
- document.body.onmouseup=window.dhtmlDragAndDrop.tempDOMU;
- document.body.onmousemove=window.dhtmlDragAndDrop.tempDOMM;
- return false;
- }
-
- window.dhtmlDragAndDrop.waitDrag=1;
- window.dhtmlDragAndDrop.tempDOMU=document.body.onmouseup;
- window.dhtmlDragAndDrop.tempDOMM=document.body.onmousemove;
- window.dhtmlDragAndDrop.dragStartNode=this;
- window.dhtmlDragAndDrop.dragStartObject=this.dragStarter;
- document.body.onmouseup=window.dhtmlDragAndDrop.preCreateDragCopy;
- document.body.onmousemove=window.dhtmlDragAndDrop.callDrag;
- window.dhtmlDragAndDrop.downtime = new Date().valueOf();
-
-
- if ((e)&&(e.preventDefault)){
- e.preventDefault();
- return false;
- }
- return false;
- };
- dhtmlDragAndDropObject.prototype.callDrag=function(e){
- if (!e)
- e=window.event;
- dragger=window.dhtmlDragAndDrop;
- if ((new Date()).valueOf()-dragger.downtime<100) return;
-
- if ((e.button == 0)&&(_isIE))
- return dragger.stopDrag();
-
- if (!dragger.dragNode&&dragger.waitDrag){
- dragger.dragNode=dragger.dragStartObject._createDragNode(dragger.dragStartNode, e);
-
- if (!dragger.dragNode)
- return dragger.stopDrag();
-
- dragger.dragNode.onselectstart=function(){return false;}
- dragger.gldragNode=dragger.dragNode;
- document.body.appendChild(dragger.dragNode);
- document.body.onmouseup=dragger.stopDrag;
- dragger.waitDrag=0;
- dragger.dragNode.pWindow=window;
- dragger.initFrameRoute();
- }
-
- if (dragger.dragNode.parentNode != window.document.body){
- var grd = dragger.gldragNode;
-
- if (dragger.gldragNode.old)
- grd=dragger.gldragNode.old;
-
- //if (!document.all) dragger.calculateFramePosition();
- grd.parentNode.removeChild(grd);
- var oldBody = dragger.dragNode.pWindow;
-
- // var oldp=dragger.dragNode.parentObject;
- if (_isIE){
- var div = document.createElement("Div");
- div.innerHTML=dragger.dragNode.outerHTML;
- dragger.dragNode=div.childNodes[0];
- } else
- dragger.dragNode=dragger.dragNode.cloneNode(true);
-
- dragger.dragNode.pWindow=window;
- // dragger.dragNode.parentObject=oldp;
-
- dragger.gldragNode.old=dragger.dragNode;
- document.body.appendChild(dragger.dragNode);
- oldBody.dhtmlDragAndDrop.dragNode=dragger.dragNode;
- }
-
- dragger.dragNode.style.left=e.clientX+15+(dragger.fx
- ? dragger.fx*(-1)
- : 0)
- +(document.body.scrollLeft||document.documentElement.scrollLeft)+"px";
- dragger.dragNode.style.top=e.clientY+3+(dragger.fy
- ? dragger.fy*(-1)
- : 0)
- +(document.body.scrollTop||document.documentElement.scrollTop)+"px";
-
- if (!e.srcElement)
- var z = e.target;
- else
- z=e.srcElement;
- dragger.checkLanding(z, e);
- }
-
- dhtmlDragAndDropObject.prototype.calculateFramePosition=function(n){
- //this.fx = 0, this.fy = 0;
- if (window.name){
- var el = parent.frames[window.name].frameElement.offsetParent;
- var fx = 0;
- var fy = 0;
-
- while (el){
- fx+=el.offsetLeft;
- fy+=el.offsetTop;
- el=el.offsetParent;
- }
-
- if ((parent.dhtmlDragAndDrop)){
- var ls = parent.dhtmlDragAndDrop.calculateFramePosition(1);
- fx+=ls.split('_')[0]*1;
- fy+=ls.split('_')[1]*1;
- }
-
- if (n)
- return fx+"_"+fy;
- else
- this.fx=fx;
- this.fy=fy;
- }
- return "0_0";
- }
- dhtmlDragAndDropObject.prototype.checkLanding=function(htmlObject, e){
- if ((htmlObject)&&(htmlObject.dragLanding)){
- if (this.lastLanding)
- this.lastLanding.dragLanding._dragOut(this.lastLanding);
- this.lastLanding=htmlObject;
- this.lastLanding=this.lastLanding.dragLanding._dragIn(this.lastLanding, this.dragStartNode, e.clientX,
- e.clientY, e);
- this.lastLanding_scr=(_isIE ? e.srcElement : e.target);
- } else {
- if ((htmlObject)&&(htmlObject.tagName != "BODY"))
- this.checkLanding(htmlObject.parentNode, e);
- else {
- if (this.lastLanding)
- this.lastLanding.dragLanding._dragOut(this.lastLanding, e.clientX, e.clientY, e);
- this.lastLanding=0;
-
- if (this._onNotFound)
- this._onNotFound();
- }
- }
- }
- dhtmlDragAndDropObject.prototype.stopDrag=function(e, mode){
- dragger=window.dhtmlDragAndDrop;
-
- if (!mode){
- dragger.stopFrameRoute();
- var temp = dragger.lastLanding;
- dragger.lastLanding=null;
-
- if (temp)
- temp.dragLanding._drag(dragger.dragStartNode, dragger.dragStartObject, temp, (_isIE
- ? event.srcElement
- : e.target));
- }
- dragger.lastLanding=null;
-
- if ((dragger.dragNode)&&(dragger.dragNode.parentNode == document.body))
- dragger.dragNode.parentNode.removeChild(dragger.dragNode);
- dragger.dragNode=0;
- dragger.gldragNode=0;
- dragger.fx=0;
- dragger.fy=0;
- dragger.dragStartNode=0;
- dragger.dragStartObject=0;
- document.body.onmouseup=dragger.tempDOMU;
- document.body.onmousemove=dragger.tempDOMM;
- dragger.tempDOMU=null;
- dragger.tempDOMM=null;
- dragger.waitDrag=0;
- }
-
- dhtmlDragAndDropObject.prototype.stopFrameRoute=function(win){
- if (win)
- window.dhtmlDragAndDrop.stopDrag(1, 1);
-
- for (var i = 0; i < window.frames.length; i++){
- try{
- if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
- window.frames[i].dhtmlDragAndDrop.stopFrameRoute(window);
- } catch(e){}
- }
-
- try{
- if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
- parent.dhtmlDragAndDrop.stopFrameRoute(window);
- } catch(e){}
- }
- dhtmlDragAndDropObject.prototype.initFrameRoute=function(win, mode){
- if (win){
- window.dhtmlDragAndDrop.preCreateDragCopy();
- window.dhtmlDragAndDrop.dragStartNode=win.dhtmlDragAndDrop.dragStartNode;
- window.dhtmlDragAndDrop.dragStartObject=win.dhtmlDragAndDrop.dragStartObject;
- window.dhtmlDragAndDrop.dragNode=win.dhtmlDragAndDrop.dragNode;
- window.dhtmlDragAndDrop.gldragNode=win.dhtmlDragAndDrop.dragNode;
- window.document.body.onmouseup=window.dhtmlDragAndDrop.stopDrag;
- window.waitDrag=0;
-
- if (((!_isIE)&&(mode))&&((!_isFF)||(_FFrv < 1.8)))
- window.dhtmlDragAndDrop.calculateFramePosition();
- }
- try{
- if ((parent.dhtmlDragAndDrop)&&(parent != window)&&(parent != win))
- parent.dhtmlDragAndDrop.initFrameRoute(window);
- }catch(e){}
-
- for (var i = 0; i < window.frames.length; i++){
- try{
- if ((window.frames[i] != win)&&(window.frames[i].dhtmlDragAndDrop))
- window.frames[i].dhtmlDragAndDrop.initFrameRoute(window, ((!win||mode) ? 1 : 0));
- } catch(e){}
- }
- }
-
- var _isFF = false;
- var _isIE = false;
- var _isOpera = false;
- var _isKHTML = false;
- var _isMacOS = false;
- var _isChrome = false;
-
- if (navigator.userAgent.indexOf('Macintosh') != -1)
- _isMacOS=true;
-
-
- if (navigator.userAgent.toLowerCase().indexOf('chrome')>-1)
- _isChrome=true;
-
- if ((navigator.userAgent.indexOf('Safari') != -1)||(navigator.userAgent.indexOf('Konqueror') != -1)){
- var _KHTMLrv = parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Safari')+7, 5));
-
- if (_KHTMLrv > 525){ //mimic FF behavior for Safari 3.1+
- _isFF=true;
- var _FFrv = 1.9;
- } else
- _isKHTML=true;
- } else if (navigator.userAgent.indexOf('Opera') != -1){
- _isOpera=true;
- _OperaRv=parseFloat(navigator.userAgent.substr(navigator.userAgent.indexOf('Opera')+6, 3));
- }
-
-
- else if (navigator.appName.indexOf("Microsoft") != -1){
- _isIE=true;
- if (navigator.appVersion.indexOf("MSIE 8.0")!= -1 && document.compatMode != "BackCompat") _isIE=8;
- } else {
- _isFF=true;
- var _FFrv = parseFloat(navigator.userAgent.split("rv:")[1])
- }
-
-
- //multibrowser Xpath processor
- dtmlXMLLoaderObject.prototype.doXPath=function(xpathExp, docObj, namespace, result_type){
- if (_isKHTML || (!_isIE && !window.XPathResult))
- return this.doXPathOpera(xpathExp, docObj);
-
- if (_isIE){ //IE
- if (!docObj)
- if (!this.xmlDoc.nodeName)
- docObj=this.xmlDoc.responseXML
- else
- docObj=this.xmlDoc;
-
- if (!docObj)
- dhtmlxError.throwError("LoadXML", "Incorrect XML", [
- (docObj||this.xmlDoc),
- this.mainObject
- ]);
-
- if (namespace != null)
- docObj.setProperty("SelectionNamespaces", "xmlns:xsl='"+namespace+"'"); //
-
- if (result_type == 'single'){
- return docObj.selectSingleNode(xpathExp);
- }
- else {
- return docObj.selectNodes(xpathExp)||new Array(0);
- }
- } else { //Mozilla
- var nodeObj = docObj;
-
- if (!docObj){
- if (!this.xmlDoc.nodeName){
- docObj=this.xmlDoc.responseXML
- }
- else {
- docObj=this.xmlDoc;
- }
- }
-
- if (!docObj)
- dhtmlxError.throwError("LoadXML", "Incorrect XML", [
- (docObj||this.xmlDoc),
- this.mainObject
- ]);
-
- if (docObj.nodeName.indexOf("document") != -1){
- nodeObj=docObj;
- }
- else {
- nodeObj=docObj;
- docObj=docObj.ownerDocument;
- }
- var retType = XPathResult.ANY_TYPE;
-
- if (result_type == 'single')
- retType=XPathResult.FIRST_ORDERED_NODE_TYPE
- var rowsCol = new Array();
- var col = docObj.evaluate(xpathExp, nodeObj, function(pref){
- return namespace
- }, retType, null);
-
- if (retType == XPathResult.FIRST_ORDERED_NODE_TYPE){
- return col.singleNodeValue;
- }
- var thisColMemb = col.iterateNext();
-
- while (thisColMemb){
- rowsCol[rowsCol.length]=thisColMemb;
- thisColMemb=col.iterateNext();
- }
- return rowsCol;
- }
- }
-
- function _dhtmlxError(type, name, params){
- if (!this.catches)
- this.catches=new Array();
-
- return this;
- }
-
- _dhtmlxError.prototype.catchError=function(type, func_name){
- this.catches[type]=func_name;
- }
- _dhtmlxError.prototype.throwError=function(type, name, params){
- if (this.catches[type])
- return this.catches[type](type, name, params);
-
- if (this.catches["ALL"])
- return this.catches["ALL"](type, name, params);
-
- alert("Error type: "+arguments[0]+"\nDescription: "+arguments[1]);
- return null;
- }
-
- window.dhtmlxError=new _dhtmlxError();
-
-
- //opera fake, while 9.0 not released
- //multibrowser Xpath processor
- dtmlXMLLoaderObject.prototype.doXPathOpera=function(xpathExp, docObj){
- //this is fake for Opera
- var z = xpathExp.replace(/[\/]+/gi, "/").split('/');
- var obj = null;
- var i = 1;
-
- if (!z.length)
- return [];
-
- if (z[0] == ".")
- obj=[docObj]; else if (z[0] == ""){
- obj=(this.xmlDoc.responseXML||this.xmlDoc).getElementsByTagName(z[i].replace(/\[[^\]]*\]/g, ""));
- i++;
- } else
- return [];
-
- for (i; i < z.length; i++)obj=this._getAllNamedChilds(obj, z[i]);
-
- if (z[i-1].indexOf("[") != -1)
- obj=this._filterXPath(obj, z[i-1]);
- return obj;
- }
-
- dtmlXMLLoaderObject.prototype._filterXPath=function(a, b){
- var c = new Array();
- var b = b.replace(/[^\[]*\[\@/g, "").replace(/[\[\]\@]*/g, "");
-
- for (var i = 0; i < a.length; i++)
- if (a[i].getAttribute(b))
- c[c.length]=a[i];
-
- return c;
- }
- dtmlXMLLoaderObject.prototype._getAllNamedChilds=function(a, b){
- var c = new Array();
-
- if (_isKHTML)
- b=b.toUpperCase();
-
- for (var i = 0; i < a.length; i++)for (var j = 0; j < a[i].childNodes.length; j++){
- if (_isKHTML){
- if (a[i].childNodes[j].tagName&&a[i].childNodes[j].tagName.toUpperCase() == b)
- c[c.length]=a[i].childNodes[j];
- }
-
- else if (a[i].childNodes[j].tagName == b)
- c[c.length]=a[i].childNodes[j];
- }
-
- return c;
- }
-
- function dhtmlXHeir(a, b){
- for (var c in b)
- if (typeof (b[c]) == "function")
- a[c]=b[c];
- return a;
- }
-
- function dhtmlxEvent(el, event, handler){
- if (el.addEventListener)
- el.addEventListener(event, handler, false);
-
- else if (el.attachEvent)
- el.attachEvent("on"+event, handler);
- }
-
- //============= XSL Extension ===================================
-
- dtmlXMLLoaderObject.prototype.xslDoc=null;
- dtmlXMLLoaderObject.prototype.setXSLParamValue=function(paramName, paramValue, xslDoc){
- if (!xslDoc)
- xslDoc=this.xslDoc
-
- if (xslDoc.responseXML)
- xslDoc=xslDoc.responseXML;
- var item =
- this.doXPath("/xsl:stylesheet/xsl:variable[@name='"+paramName+"']", xslDoc,
- "http:/\/www.w3.org/1999/XSL/Transform", "single");
-
- if (item != null)
- item.firstChild.nodeValue=paramValue
- }
- dtmlXMLLoaderObject.prototype.doXSLTransToObject=function(xslDoc, xmlDoc){
- if (!xslDoc)
- xslDoc=this.xslDoc;
-
- if (xslDoc.responseXML)
- xslDoc=xslDoc.responseXML
-
- if (!xmlDoc)
- xmlDoc=this.xmlDoc;
-
- if (xmlDoc.responseXML)
- xmlDoc=xmlDoc.responseXML
-
- //MOzilla
- if (!_isIE){
- if (!this.XSLProcessor){
- this.XSLProcessor=new XSLTProcessor();
- this.XSLProcessor.importStylesheet(xslDoc);
- }
- var result = this.XSLProcessor.transformToDocument(xmlDoc);
- } else {
- var result = new ActiveXObject("Msxml2.DOMDocument.3.0");
- try{
- xmlDoc.transformNodeToObject(xslDoc, result);
- }catch(e){
- result = xmlDoc.transformNode(xslDoc);
- }
- }
- return result;
- }
-
- dtmlXMLLoaderObject.prototype.doXSLTransToString=function(xslDoc, xmlDoc){
- var res = this.doXSLTransToObject(xslDoc, xmlDoc);
- if(typeof(res)=="string")
- return res;
- return this.doSerialization(res);
- }
-
- dtmlXMLLoaderObject.prototype.doSerialization=function(xmlDoc){
- if (!xmlDoc)
- xmlDoc=this.xmlDoc;
- if (xmlDoc.responseXML)
- xmlDoc=xmlDoc.responseXML
- if (!_isIE){
- var xmlSerializer = new XMLSerializer();
- return xmlSerializer.serializeToString(xmlDoc);
- } else
- return xmlDoc.xml;
- }
-
- /**
- * @desc:
- * @type: private
- */
- dhtmlxEventable=function(obj){
- obj.dhx_SeverCatcherPath="";
- obj.attachEvent=function(name, catcher, callObj){
- name='ev_'+name.toLowerCase();
- if (!this[name])
- this[name]=new this.eventCatcher(callObj||this);
-
- return(name+':'+this[name].addEvent(catcher)); //return ID (event name & event ID)
- }
- obj.callEvent=function(name, arg0){
- name='ev_'+name.toLowerCase();
- if (this[name])
- return this[name].apply(this, arg0);
- return true;
- }
- obj.checkEvent=function(name){
- return (!!this['ev_'+name.toLowerCase()])
- }
- obj.eventCatcher=function(obj){
- var dhx_catch = [];
- var z = function(){
- var res = true;
- for (var i = 0; i < dhx_catch.length; i++){
- if (dhx_catch[i] != null){
- var zr = dhx_catch[i].apply(obj, arguments);
- res=res&&zr;
- }
- }
- return res;
- }
- z.addEvent=function(ev){
- if (typeof (ev) != "function")
- ev=eval(ev);
- if (ev)
- return dhx_catch.push(ev)-1;
- return false;
- }
- z.removeEvent=function(id){
- dhx_catch[id]=null;
- }
- return z;
- }
- obj.detachEvent=function(id){
- if (id != false){
- var list = id.split(':'); //get EventName and ID
- this[list[0]].removeEvent(list[1]); //remove event
- }
- }
- }
-