home *** CD-ROM | disk | FTP | other *** search
- class com.dagc.DirectorSerializer
- {
- function DirectorSerializer()
- {
- }
- function deserialize(strVal)
- {
- var _loc1_ = strVal;
- if(_loc1_ == undefined || _loc1_ == "")
- {
- return undefined;
- }
- return this.deserializeXMLSerializedItem(unescape(_loc1_));
- }
- function deserializeXML(objXML)
- {
- var _loc1_ = this.parseNode(objXML.firstChild.firstChild,new Object());
- return _loc1_;
- }
- function deserializeXMLSerializedItem(strData)
- {
- var _loc1_ = new XML();
- _loc1_.ignoreWhite = true;
- _loc1_.parseXML(strData);
- var _loc2_ = this.parseNode(_loc1_.firstChild.firstChild,new Object());
- return _loc2_;
- }
- function parseNode(objXMLNode, obj)
- {
- var strNodeName = objXMLNode.nodeName;
- var strNodeValue = objXMLNode.firstChild.nodeValue;
- var strVarName = objXMLNode.attributes.name;
- var arrChildren = objXMLNode.childNodes;
- var iLen = arrChildren.length;
- switch(strNodeName)
- {
- case "obj":
- var objNew = new Object();
- var _loc1_ = 0;
- while(_loc1_ < iLen)
- {
- var _loc3_ = arrChildren[_loc1_];
- if(_loc3_.nodeType == 1)
- {
- var objVal = this.parseNode(_loc3_,objNew);
- }
- _loc1_ = _loc1_ + 1;
- }
- if(strVarName != undefined)
- {
- obj[strVarName] = objNew;
- }
- else
- {
- obj = objNew;
- }
- break;
- case "str":
- if(strVarName == undefined)
- {
- obj = this.unescapeXml(String(strNodeValue));
- }
- else
- {
- obj[strVarName] = this.unescapeXml(String(strNodeValue));
- }
- break;
- case "num":
- if(strVarName == undefined)
- {
- obj = Number(strNodeValue);
- }
- else
- {
- obj[strVarName] = Number(strNodeValue);
- }
- break;
- case "bool":
- var bln = true;
- if(strNodeValue == "false")
- {
- bln = false;
- }
- if(strVarName == null)
- {
- obj = bln;
- }
- else
- {
- obj[strVarName] = bln;
- }
- break;
- case "null":
- if(strVarName == undefined)
- {
- obj = null;
- }
- else
- {
- obj[strVarName] = null;
- }
- break;
- case "undf":
- if(strVarName == undefined)
- {
- obj = undefined;
- }
- else
- {
- obj[strVarName] = undefined;
- }
- break;
- case "date":
- if(strVarName == undefined)
- {
- obj = new Date(Number(strNodeValue));
- }
- else
- {
- obj[strVarName] = new Date(Number(strNodeValue));
- }
- break;
- case "array":
- var arr = new Array();
- var _loc2_ = 0;
- while(_loc2_ < iLen)
- {
- _loc3_ = arrChildren[_loc2_];
- if(_loc3_.nodeType == 1)
- {
- var objRef = new Object();
- var objVal = this.parseNode(_loc3_,objRef);
- arr.push(objVal);
- }
- _loc2_ = _loc2_ + 1;
- }
- if(strVarName == undefined)
- {
- return arr;
- }
- obj[strVarName] = arr;
- break;
- }
- return obj;
- }
- function serialize(obj)
- {
- var _loc1_ = new Object();
- _loc1_.xml = "<fp>";
- this.serializeNode(obj,_loc1_,null);
- _loc1_.xml += "</fp>";
- return escape(_loc1_.xml);
- }
- function serializeNode(obj, objDoc, strName)
- {
- var _loc1_ = obj;
- var _loc3_ = objDoc;
- switch(typeof _loc1_)
- {
- case "undefined":
- _loc3_.xml += "<undf" + this.addName(strName) + "/>";
- break;
- case "string":
- _loc3_.xml += "<str" + this.addName(strName) + ">" + this.escapeXml(_loc1_) + "</str>";
- break;
- case "number":
- _loc3_.xml += "<num" + this.addName(strName) + ">" + _loc1_ + "</num>";
- break;
- case "boolean":
- _loc3_.xml += "<bool" + this.addName(strName) + ">" + _loc1_ + "</bool>";
- break;
- case "object":
- if(_loc1_ == null)
- {
- _loc3_.xml += "<null" + this.addName(strName) + "/>";
- }
- else if(_loc1_ instanceof Date)
- {
- _loc3_.xml += "<date" + this.addName(strName) + ">" + _loc1_.getTime() + "</date>";
- }
- else if(_loc1_ instanceof Array)
- {
- _loc3_.xml += "<array" + this.addName(strName) + ">";
- var _loc2_ = 0;
- while(_loc2_ < _loc1_.length)
- {
- this.serializeNode(_loc1_[_loc2_],_loc3_,null);
- _loc2_ = _loc2_ + 1;
- }
- _loc3_.xml += "</array>";
- }
- else
- {
- _loc3_.xml += "<obj" + this.addName(strName) + ">";
- for(var n in _loc1_)
- {
- if(typeof _loc1_[n] != "function")
- {
- this.serializeNode(_loc1_[n],_loc3_,n);
- }
- }
- _loc3_.xml += "</obj>";
- }
- }
- }
- function addName(strName)
- {
- if(strName != null)
- {
- return " name=\"" + strName + "\"";
- }
- return "";
- }
- function escapeXml(strXML)
- {
- var _loc1_ = strXML;
- _loc1_ = _loc1_.split("&").join("|~amp;|");
- _loc1_ = _loc1_.split("<").join("|~lt;|");
- _loc1_ = _loc1_.split(">").join("|~gt;|");
- _loc1_ = _loc1_.split("&").join("&");
- _loc1_ = _loc1_.split("<").join("<");
- _loc1_ = _loc1_.split(">").join(">");
- return _loc1_;
- }
- function unescapeXml(strXML)
- {
- var _loc1_ = strXML;
- _loc1_ = _loc1_.split("&").join("&");
- _loc1_ = _loc1_.split("<").join("<");
- _loc1_ = _loc1_.split(">").join(">");
- _loc1_ = _loc1_.split("|~amp;|").join("&");
- _loc1_ = _loc1_.split("|~lt;|").join("<");
- _loc1_ = _loc1_.split("|~gt;|").join(">");
- return _loc1_;
- }
- }
-