/*
	Copyright (c) 2004-2012, 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
*/

//>>built
define("dojo/html",["./_base/kernel","./_base/lang","./_base/array","./_base/declare","./dom","./dom-construct","./parser"],function(_1,_2,_3,_4,_5,_6,_7){var _8={};_2.setObject("dojo.html",_8);var _9=0;_8._secureForInnerHtml=function(_a){return _a.replace(/(?:\s*<!DOCTYPE\s[^>]+>|<title[^>]*>[\s\S]*?<\/title>)/ig,"");};_8._emptyNode=_6.empty;_8._setNodeContent=function(_b,_c){_6.empty(_b);if(_c){if(typeof _c=="string"){_c=_6.toDom(_c,_b.ownerDocument);}if(!_c.nodeType&&_2.isArrayLike(_c)){for(var _d=_c.length,i=0;i<_c.length;i=_d==_c.length?i+1:0){_6.place(_c[i],_b,"last");}}else{_6.place(_c,_b,"last");}}return _b;};_8._ContentSetter=_4("dojo.html._ContentSetter",null,{node:"",content:"",id:"",cleanContent:false,extractContent:false,parseContent:false,parserScope:_1._scopeName,startup:true,constructor:function(_e,_f){_2.mixin(this,_e||{});_f=this.node=_5.byId(this.node||_f);if(!this.id){this.id=["Setter",(_f)?_f.id||_f.tagName:"",_9++].join("_");}},set:function(_10,_11){if(undefined!==_10){this.content=_10;}if(_11){this._mixin(_11);}this.onBegin();this.setContent();var ret=this.onEnd();if(ret&&ret.then){return ret;}else{return this.node;}},setContent:function(){var _12=this.node;if(!_12){throw new Error(this.declaredClass+": setContent given no node");}try{_12=_8._setNodeContent(_12,this.content);}catch(e){var _13=this.onContentError(e);try{_12.innerHTML=_13;}catch(e){console.error("Fatal "+this.declaredClass+".setContent could not change content due to "+e.message,e);}}this.node=_12;},empty:function(){if(this.parseDeferred){if(!this.parseDeferred.isResolved()){this.parseDeferred.cancel();}delete this.parseDeferred;}if(this.parseResults&&this.parseResults.length){_3.forEach(this.parseResults,function(w){if(w.destroy){w.destroy();}});delete this.parseResults;}_6.empty(this.node);},onBegin:function(){var _14=this.content;if(_2.isString(_14)){if(this.cleanContent){_14=_8._secureForInnerHtml(_14);}if(this.extractContent){var _15=_14.match(/<body[^>]*>\s*([\s\S]+)\s*<\/body>/im);if(_15){_14=_15[1];}}}this.empty();this.content=_14;return this.node;},onEnd:function(){if(this.parseContent){this._parse();}return this.node;},tearDown:function(){delete this.parseResults;delete this.parseDeferred;delete this.node;delete this.content;},onContentError:function(err){return "Error occurred setting content: "+err;},onExecError:function(err){return "Error occurred executing scripts: "+err;},_mixin:function(_16){var _17={},key;for(key in _16){if(key in _17){continue;}this[key]=_16[key];}},_parse:function(){var _18=this.node;try{var _19={};_3.forEach(["dir","lang","textDir"],function(_1a){if(this[_1a]){_19[_1a]=this[_1a];}},this);var _1b=this;this.parseDeferred=_7.parse({rootNode:_18,noStart:!this.startup,inherited:_19,scope:this.parserScope}).then(function(_1c){return _1b.parseResults=_1c;});}catch(e){this._onError("Content",e,"Error parsing in _ContentSetter#"+this.id);}},_onError:function(_1d,err,_1e){var _1f=this["on"+_1d+"Error"].call(this,err);if(_1e){console.error(_1e,err);}else{if(_1f){_8._setNodeContent(this.node,_1f,true);}}}});_8.set=function(_20,_21,_22){if(undefined==_21){console.warn("dojo.html.set: no cont argument provided, using empty string");_21="";}if(!_22){return _8._setNodeContent(_20,_21,true);}else{var op=new _8._ContentSetter(_2.mixin(_22,{content:_21,node:_20}));return op.set();}};return _8;});