/*
Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
Available via Academic Free License >= 2.1 OR the modified BSD license.
see: http://dojotoolkit.org/license for details
*/
if(!dojo._hasResource["dojox.atom.io.model"]){dojo._hasResource["dojox.atom.io.model"]=true;dojo.provide("dojox.atom.io.model");dojo.require("dojox.xml.parser");dojo.require("dojo.string");dojo.require("dojo.date.stamp");dojox.atom.io.model._Constants={"ATOM_URI":"http://www.w3.org/2005/Atom","ATOM_NS":"http://www.w3.org/2005/Atom","PURL_NS":"http://purl.org/atom/app#","APP_NS":"http://www.w3.org/2007/app"};dojox.atom.io.model._actions={"link":function(_1,_2){if(_1.links===null){_1.links=[];}var _3=new dojox.atom.io.model.Link();_3.buildFromDom(_2);_1.links.push(_3);},"author":function(_4,_5){if(_4.authors===null){_4.authors=[];}var _6=new dojox.atom.io.model.Person("author");_6.buildFromDom(_5);_4.authors.push(_6);},"contributor":function(_7,_8){if(_7.contributors===null){_7.contributors=[];}var _9=new dojox.atom.io.model.Person("contributor");_9.buildFromDom(_8);_7.contributors.push(_9);},"category":function(_a,_b){if(_a.categories===null){_a.categories=[];}var _c=new dojox.atom.io.model.Category();_c.buildFromDom(_b);_a.categories.push(_c);},"icon":function(_d,_e){_d.icon=dojox.xml.parser.textContent(_e);},"id":function(_f,_10){_f.id=dojox.xml.parser.textContent(_10);},"rights":function(obj,_11){obj.rights=dojox.xml.parser.textContent(_11);},"subtitle":function(obj,_12){var cnt=new dojox.atom.io.model.Content("subtitle");cnt.buildFromDom(_12);obj.subtitle=cnt;},"title":function(obj,_13){var cnt=new dojox.atom.io.model.Content("title");cnt.buildFromDom(_13);obj.title=cnt;},"updated":function(obj,_14){obj.updated=dojox.atom.io.model.util.createDate(_14);},"issued":function(obj,_15){obj.issued=dojox.atom.io.model.util.createDate(_15);},"modified":function(obj,_16){obj.modified=dojox.atom.io.model.util.createDate(_16);},"published":function(obj,_17){obj.published=dojox.atom.io.model.util.createDate(_17);},"entry":function(obj,_18){if(obj.entries===null){obj.entries=[];}var _19=obj.createEntry?obj.createEntry():new dojox.atom.io.model.Entry();_19.buildFromDom(_18);obj.entries.push(_19);},"content":function(obj,_1a){var cnt=new dojox.atom.io.model.Content("content");cnt.buildFromDom(_1a);obj.content=cnt;},"summary":function(obj,_1b){var _1c=new dojox.atom.io.model.Content("summary");_1c.buildFromDom(_1b);obj.summary=_1c;},"name":function(obj,_1d){obj.name=dojox.xml.parser.textContent(_1d);},"email":function(obj,_1e){obj.email=dojox.xml.parser.textContent(_1e);},"uri":function(obj,_1f){obj.uri=dojox.xml.parser.textContent(_1f);},"generator":function(obj,_20){obj.generator=new dojox.atom.io.model.Generator();obj.generator.buildFromDom(_20);}};dojox.atom.io.model.util={createDate:function(_21){var _22=dojox.xml.parser.textContent(_21);if(_22){return dojo.date.stamp.fromISOString(dojo.trim(_22));}return null;},escapeHtml:function(str){return str.replace(/&/gm,"&").replace(//gm,">").replace(/"/gm,""").replace(/'/gm,"'");},unEscapeHtml:function(str){return str.replace(/</gm,"<").replace(/>/gm,">").replace(/"/gm,"\"").replace(/'/gm,"'").replace(/&/gm,"&");},getNodename:function(_23){var _24=null;if(_23!==null){_24=_23.localName?_23.localName:_23.nodeName;if(_24!==null){var _25=_24.indexOf(":");if(_25!==-1){_24=_24.substring((_25+1),_24.length);}}}return _24;}};dojo.declare("dojox.atom.io.model.Node",null,{constructor:function(_26,_27,_28,_29,_2a){this.name_space=_26;this.name=_27;this.attributes=[];if(_28){this.attributes=_28;}this.content=[];this.rawNodes=[];this.textContent=null;if(_29){this.content.push(_29);}this.shortNs=_2a;this._objName="Node";},buildFromDom:function(_2b){this._saveAttributes(_2b);this.name_space=_2b.namespaceURI;this.shortNs=_2b.prefix;this.name=dojox.atom.io.model.util.getNodename(_2b);for(var x=0;x<_2b.childNodes.length;x++){var c=_2b.childNodes[x];if(dojox.atom.io.model.util.getNodename(c)!="#text"){this.rawNodes.push(c);var n=new dojox.atom.io.model.Node();n.buildFromDom(c,true);this.content.push(n);}else{this.content.push(c.nodeValue);}}this.textContent=dojox.xml.parser.textContent(_2b);},_saveAttributes:function(_2c){if(!this.attributes){this.attributes=[];}var _2d=function(_2e){var _2f=_2e.attributes;if(_2f===null){return false;}return (_2f.length!==0);};if(_2d(_2c)&&this._getAttributeNames){var _30=this._getAttributeNames(_2c);if(_30&&_30.length>0){for(var x in _30){var _31=_2c.getAttribute(_30[x]);if(_31){this.attributes[_30[x]]=_31;}}}}},addAttribute:function(_32,_33){this.attributes[_32]=_33;},getAttribute:function(_34){return this.attributes[_34];},_getAttributeNames:function(_35){var _36=[];for(var i=0;i<_35.attributes.length;i++){_36.push(_35.attributes[i].nodeName);}return _36;},toString:function(){var xml=[];var x;var _37=(this.shortNs?this.shortNs+":":"")+this.name;var _38=(this.name=="#cdata-section");if(_38){xml.push("");}else{xml.push("<");xml.push(_37);if(this.name_space){xml.push(" xmlns='"+this.name_space+"'");}if(this.attributes){for(x in this.attributes){xml.push(" "+x+"='"+this.attributes[x]+"'");}}if(this.content){xml.push(">");for(x in this.content){xml.push(this.content[x]);}xml.push(""+_37+">\n");}else{xml.push("/>\n");}}return xml.join("");},addContent:function(_39){this.content.push(_39);}});dojo.declare("dojox.atom.io.model.AtomItem",dojox.atom.io.model.Node,{constructor:function(_3a){this.ATOM_URI=dojox.atom.io.model._Constants.ATOM_URI;this.links=null;this.authors=null;this.categories=null;this.contributors=null;this.icon=this.id=this.logo=this.xmlBase=this.rights=null;this.subtitle=this.title=null;this.updated=this.published=null;this.issued=this.modified=null;this.content=null;this.extensions=null;this.entries=null;this.name_spaces={};this._objName="AtomItem";},_getAttributeNames:function(){return null;},_accepts:{},accept:function(tag){return Boolean(this._accepts[tag]);},_postBuild:function(){},buildFromDom:function(_3b){var i,c,n;for(i=0;i<_3b.attributes.length;i++){c=_3b.attributes.item(i);n=dojox.atom.io.model.util.getNodename(c);if(c.prefix=="xmlns"&&c.prefix!=n){this.addNamespace(c.nodeValue,n);}}c=_3b.childNodes;for(i=0;i\n");return s.join("");},buildFromDom:function(_5f){this._saveAttributes(_5f);this.label=this.attributes.label;this.scheme=this.attributes.scheme;this.term=this.attributes.term;if(this._postBuild){this._postBuild();}}});dojo.declare("dojox.atom.io.model.Content",dojox.atom.io.model.Node,{constructor:function(_60,_61,src,_62,_63){this.tagName=_60;this.value=_61;this.src=src;this.type=_62;this.xmlLang=_63;this.HTML="html";this.TEXT="text";this.XHTML="xhtml";this.XML="xml";this._useTextContent="true";},_getAttributeNames:function(){return ["type","src"];},_postBuild:function(){},buildFromDom:function(_64){var _65=_64.getAttribute("type");if(_65){_65=_65.toLowerCase();if(_65=="xml"||"text/xml"){_65=this.XML;}}else{_65="text";}if(_65===this.XML){if(_64.firstChild){var i;this.value="";for(i=0;i<_64.childNodes.length;i++){var c=_64.childNodes[i];if(c){this.value+=dojox.xml.parser.innerXML(c);}}}}else{if(_64.innerHTML){this.value=_64.innerHTML;}else{this.value=dojox.xml.parser.textContent(_64);}}this._saveAttributes(_64);if(this.attributes){this.type=this.attributes.type;this.scheme=this.attributes.scheme;this.term=this.attributes.term;}if(!this.type){this.type="text";}var _66=this.type.toLowerCase();if(_66==="html"||_66==="text/html"||_66==="xhtml"||_66==="text/xhtml"){this.value=dojox.atom.io.model.util.unEscapeHtml(this.value);}if(this._postBuild){this._postBuild();}},toString:function(){var s=[];s.push("<"+this.tagName+" ");if(!this.type){this.type="text";}if(this.type){s.push(" type=\""+this.type+"\" ");}if(this.xmlLang){s.push(" xml:lang=\""+this.xmlLang+"\" ");}if(this.xmlBase){s.push(" xml:base=\""+this.xmlBase+"\" ");}if(this.type.toLowerCase()==this.HTML){s.push(">"+dojox.atom.io.model.util.escapeHtml(this.value)+""+this.tagName+">\n");}else{s.push(">"+this.value+""+this.tagName+">\n");}var ret=s.join("");return ret;}});dojo.declare("dojox.atom.io.model.Link",dojox.atom.io.model.Node,{constructor:function(_67,rel,_68,_69,_6a){this.href=_67;this.hrefLang=_68;this.rel=rel;this.title=_69;this.type=_6a;},_getAttributeNames:function(){return ["href","jrefLang","rel","title","type"];},_postBuild:function(){},buildFromDom:function(_6b){this._saveAttributes(_6b);this.href=this.attributes.href;this.hrefLang=this.attributes.hreflang;this.rel=this.attributes.rel;this.title=this.attributes.title;this.type=this.attributes.type;if(this._postBuild){this._postBuild();}},toString:function(){var s=[];s.push("\n");return s.join("");}});dojo.declare("dojox.atom.io.model.Person",dojox.atom.io.model.Node,{constructor:function(_6c,_6d,_6e,uri){this.author="author";this.contributor="contributor";if(!_6c){_6c=this.author;}this.personType=_6c;this.name=_6d||"";this.email=_6e||"";this.uri=uri||"";this._objName="Person";},_getAttributeNames:function(){return null;},_postBuild:function(){},accept:function(tag){return Boolean(this._accepts[tag]);},buildFromDom:function(_6f){var c=_6f.childNodes;for(var i=0;i\n");if(this.name){s.push("\t"+this.name+"\n");}if(this.email){s.push("\t"+this.email+"\n");}if(this.uri){s.push("\t"+this.uri+"\n");}s.push(""+this.personType+">\n");return s.join("");}});dojo.declare("dojox.atom.io.model.Generator",dojox.atom.io.model.Node,{constructor:function(uri,_72,_73){this.uri=uri;this.version=_72;this.value=_73;},_postBuild:function(){},buildFromDom:function(_74){this.value=dojox.xml.parser.textContent(_74);this._saveAttributes(_74);this.uri=this.attributes.uri;this.version=this.attributes.version;if(this._postBuild){this._postBuild();}},toString:function(){var s=[];s.push(""+this.value+"\n");var ret=s.join("");return ret;}});dojo.declare("dojox.atom.io.model.Entry",dojox.atom.io.model.AtomItem,{constructor:function(id){this.id=id;this._objName="Entry";this.feedUrl=null;},_getAttributeNames:function(){return null;},_accepts:{"author":true,"content":true,"category":true,"contributor":true,"created":true,"id":true,"link":true,"published":true,"rights":true,"summary":true,"title":true,"updated":true,"xmlbase":true,"issued":true,"modified":true},toString:function(_75){var s=[];var i;if(_75){s.push("");s.push("\n");s.push(""+(this.id?this.id:"")+"\n");if(this.issued&&!this.published){this.published=this.issued;}if(this.published){s.push(""+dojo.date.stamp.toISOString(this.published)+"\n");}if(this.created){s.push(""+dojo.date.stamp.toISOString(this.created)+"\n");}if(this.issued){s.push(""+dojo.date.stamp.toISOString(this.issued)+"\n");}if(this.modified){s.push(""+dojo.date.stamp.toISOString(this.modified)+"\n");}if(this.modified&&!this.updated){this.updated=this.modified;}if(this.updated){s.push(""+dojo.date.stamp.toISOString(this.updated)+"\n");}if(this.rights){s.push(""+this.rights+"\n");}if(this.title){s.push(this.title.toString());}if(this.summary){s.push(this.summary.toString());}var _76=[this.authors,this.categories,this.links,this.contributors,this.extensions];for(var x in _76){if(_76[x]){for(var y in _76[x]){s.push(_76[x][y]);}}}if(this.content){s.push(this.content.toString());}s.push("\n");return s.join("");},getEditHref:function(){if(this.links===null||this.links.length===0){return null;}for(var x in this.links){if(this.links[x].rel&&this.links[x].rel=="edit"){return this.links[x].href;}}return null;},setEditHref:function(url){if(this.links===null){this.links=[];}for(var x in this.links){if(this.links[x].rel&&this.links[x].rel=="edit"){this.links[x].href=url;return;}}this.addLink(url,"edit");}});dojo.declare("dojox.atom.io.model.Feed",dojox.atom.io.model.AtomItem,{_accepts:{"author":true,"content":true,"category":true,"contributor":true,"created":true,"id":true,"link":true,"published":true,"rights":true,"summary":true,"title":true,"updated":true,"xmlbase":true,"entry":true,"logo":true,"issued":true,"modified":true,"icon":true,"subtitle":true},addEntry:function(_77){if(!_77.id){throw new Error("The entry object must be assigned an ID attribute.");}if(!this.entries){this.entries=[];}_77.feedUrl=this.getSelfHref();this.entries.push(_77);},getFirstEntry:function(){if(!this.entries||this.entries.length===0){return null;}return this.entries[0];},getEntry:function(_78){if(!this.entries){return null;}for(var x in this.entries){if(this.entries[x].id==_78){return this.entries[x];}}return null;},removeEntry:function(_79){if(!this.entries){return;}var _7a=0;for(var i=0;i\n");s.push("\n");s.push(""+(this.id?this.id:"")+"\n");if(this.title){s.push(this.title);}if(this.copyright&&!this.rights){this.rights=this.copyright;}if(this.rights){s.push(""+this.rights+"\n");}if(this.issued){s.push(""+dojo.date.stamp.toISOString(this.issued)+"\n");}if(this.modified){s.push(""+dojo.date.stamp.toISOString(this.modified)+"\n");}if(this.modified&&!this.updated){this.updated=this.modified;}if(this.updated){s.push(""+dojo.date.stamp.toISOString(this.updated)+"\n");}if(this.published){s.push(""+dojo.date.stamp.toISOString(this.published)+"\n");}if(this.icon){s.push(""+this.icon+"\n");}if(this.language){s.push(""+this.language+"\n");}if(this.logo){s.push(""+this.logo+"\n");}if(this.subtitle){s.push(this.subtitle.toString());}if(this.tagline){s.push(this.tagline.toString());}var _7c=[this.alternateLinks,this.authors,this.categories,this.contributors,this.otherLinks,this.extensions,this.entries];for(i in _7c){if(_7c[i]){for(var x in _7c[i]){s.push(_7c[i][x]);}}}s.push("");return s.join("");},createEntry:function(){var _7d=new dojox.atom.io.model.Entry();_7d.feedUrl=this.getSelfHref();return _7d;},getSelfHref:function(){if(this.links===null||this.links.length===0){return null;}for(var x in this.links){if(this.links[x].rel&&this.links[x].rel=="self"){return this.links[x].href;}}return null;}});dojo.declare("dojox.atom.io.model.Service",dojox.atom.io.model.AtomItem,{constructor:function(_7e){this.href=_7e;},buildFromDom:function(_7f){var i;this.workspaces=[];if(_7f.tagName!="service"){return;}if(_7f.namespaceURI!=dojox.atom.io.model._Constants.PURL_NS&&_7f.namespaceURI!=dojox.atom.io.model._Constants.APP_NS){return;}var ns=_7f.namespaceURI;this.name_space=_7f.namespaceURI;var _80;if(typeof (_7f.getElementsByTagNameNS)!="undefined"){_80=_7f.getElementsByTagNameNS(ns,"workspace");}else{_80=[];var _81=_7f.getElementsByTagName("workspace");for(i=0;i<_81.length;i++){if(_81[i].namespaceURI==ns){_80.push(_81[i]);}}}if(_80&&_80.length>0){var _82=0;var _83;for(i=0;i<_80.length;i++){_83=(typeof (_80.item)==="undefined"?_80[i]:_80.item(i));var _84=new dojox.atom.io.model.Workspace();_84.buildFromDom(_83);this.workspaces[_82++]=_84;}}},getCollection:function(url){for(var i=0;i