a:22:{s:9:"#provides";s:14:"dojo.io.iframe";s:9:"#resource";s:12:"io/iframe.js";s:23:"dojo.io.iframe.__ioArgs";a:5:{s:4:"type";s:8:"Function";s:6:"chains";a:2:{s:9:"prototype";a:1:{i:0;s:13:"dojo.__IoArgs";}s:4:"call";a:1:{i:0;s:13:"dojo.__IoArgs";}}s:6:"source";s:77:"		this.method = method;
		this.handleAs = handleAs;
		this.content = content;";s:7:"summary";s:150:"All the properties described in the dojo.__ioArgs type, apply
to this type. The following additional properties are allowed
for dojo.io.iframe.send():";s:7:"private";b:1;}s:30:"dojo.io.iframe.__ioArgs.method";a:4:{s:8:"instance";s:23:"dojo.io.iframe.__ioArgs";s:4:"type";s:7:"String?";s:7:"summary";s:223:"The HTTP method to use. "GET" or "POST" are the only supported
values.  It will try to read the value from the form node's
method, then try this argument. If neither one exists, then it
defaults to POST.";s:14:"private_parent";b:1;}s:32:"dojo.io.iframe.__ioArgs.handleAs";a:4:{s:8:"instance";s:23:"dojo.io.iframe.__ioArgs";s:4:"type";s:7:"String?";s:7:"summary";s:662:"Specifies what format the result data should be given to the
load/handle callback. Valid values are: text, html, xml, json,
javascript. IMPORTANT: For all values EXCEPT html and xml, The
server response should be an HTML file with a textarea element.
The response data should be inside the textarea element. Using an
HTML document the only reliable, cross-browser way this
transport can know when the response has loaded. For the html
handleAs value, just return a normal HTML document.  NOTE: xml
is now supported with this transport (as of 1.1+); a known issue
is if the XML document in question is malformed, Internet Explorer
will throw an uncatchable error.";s:14:"private_parent";b:1;}s:31:"dojo.io.iframe.__ioArgs.content";a:4:{s:8:"instance";s:23:"dojo.io.iframe.__ioArgs";s:4:"type";s:7:"Object?";s:7:"summary";s:448:"If "form" is one of the other args properties, then the content
object properties become hidden form form elements. For
instance, a content object of {name1 : "value1"} is converted
to a hidden form element with a name of "name1" and a value of
"value1". If there is not a "form" property, then the content
object is converted into a name=value&name=value string, by
using dojo.objectToQuery().";s:14:"private_parent";b:1;}s:14:"dojo.io.iframe";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:21:"dojo.io.iframe.create";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:5:"fname";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:66:"The name of the iframe. Used for the name attribute on the
iframe.";}s:9:"onloadstr";a:2:{s:4:"type";s:6:"String";s:7:"summary";s:82:"A string of JavaScript that will be executed when the content
in the iframe loads.";}s:3:"uri";a:3:{s:8:"optional";b:1;s:4:"type";s:6:"String";s:7:"summary";s:123:"The value of the src attribute on the iframe element. If a
value is not given, then dojo/resources/blank.html will be
used.";}}s:6:"source";s:1215:"		if(window[fname]){ return window[fname]; }
		if(window.frames[fname]){ return window.frames[fname]; }
		var cframe = null;
		var turi = uri;
		if(!turi){
			if(dojo.config["useXDomain"] && !dojo.config["dojoBlankHtmlUrl"]){
				console.warn("dojo.io.iframe.create: When using cross-domain Dojo builds,"
					+ " please save dojo/resources/blank.html to your domain and set djConfig.dojoBlankHtmlUrl"
					+ " to the path on your domain to blank.html");
			}
			turi = (dojo.config["dojoBlankHtmlUrl"]||dojo.moduleUrl("dojo", "resources/blank.html"));
		}
		var ifrstr = dojo.isIE ? '<iframe name="'+fname+'" src="'+turi+'" onload="'+onloadstr+'">' : 'iframe';
		cframe = dojo.doc.createElement(ifrstr);
		with(cframe){
			name = fname;
			setAttribute("name", fname);
			id = fname;
		}
		dojo.body().appendChild(cframe);
		window[fname] = cframe;

	
		with(cframe.style){
			if(!(dojo.isSafari < 3)){
				//We can't change the src in Safari 2.0.3 if absolute position. Bizarro.
				position = "absolute";
			}
			left = top = "1px";
			height = width = "1px";
			visibility = "hidden";
		}


		if(!dojo.isIE){
			this.setSrc(cframe, turi, true);
			cframe.onload = new Function(onloadstr);
		}


		return cframe;";s:7:"summary";s:150:"Creates a hidden iframe in the page. Used mostly for IO
transports.  You do not need to call this to start a
dojo.io.iframe request. Just call send().";}s:21:"dojo.io.iframe.setSrc";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:3:{s:6:"iframe";a:1:{s:4:"type";s:7:"DOMNode";}s:3:"src";a:1:{s:4:"type";s:6:"String";}s:7:"replace";a:1:{s:4:"type";s:7:"Boolean";}}s:6:"source";s:888:"		try{
			if(!replace){
				if(dojo.isWebKit){
					iframe.location = src;
				}else{
					frames[iframe.name].location = src;
				}
			}else{
				// Fun with DOM 0 incompatibilities!
				var idoc;
				//WebKit > 521 corresponds with Safari 3, which started with 522 WebKit version.
				if(dojo.isIE || dojo.isWebKit > 521){
					idoc = iframe.contentWindow.document;
				}else if(dojo.isSafari){
					idoc = iframe.document;
				}else{ //  if(d.isMozilla){
					idoc = iframe.contentWindow;
				}

	
				//For Safari (at least 2.0.3) and Opera, if the iframe
				//has just been created but it doesn't have content
				//yet, then iframe.document may be null. In that case,
				//use iframe.location and return.
				if(!idoc){
					iframe.location = src;
					return;
				}else{
					idoc.location.replace(src);
				}
			}
		}catch(e){ 
			console.log("dojo.io.iframe.setSrc: ", e); 
		}";s:7:"summary";s:157:"Sets the URL that is loaded in an IFrame. The replace parameter
indicates whether location.replace() should be used when
changing the location of the iframe.";}s:18:"dojo.io.iframe.doc";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:10:"iframeNode";a:1:{s:4:"type";s:7:"DOMNode";}}s:6:"source";s:440:"		var doc = iframeNode.contentDocument || // W3
			(
				(
					(iframeNode.name) && (iframeNode.document) && 
					(document.getElementsByTagName("iframe")[iframeNode.name].contentWindow) &&
					(document.getElementsByTagName("iframe")[iframeNode.name].contentWindow.document)
				)
			) ||  // IE
			(
				(iframeNode.name)&&(document.frames[iframeNode.name])&&
				(document.frames[iframeNode.name].document)
			) || null;
		return doc;";s:7:"summary";s:73:"Returns the document object associated with the iframe DOM Node argument.";}s:19:"dojo.io.iframe.send";a:4:{s:4:"type";s:8:"Function";s:10:"parameters";a:1:{s:4:"args";a:1:{s:4:"type";s:23:"dojo.io.iframe.__ioArgs";}}s:6:"source";s:2818:"		if(!this["_frame"]){
			this._frame = this.create(this._iframeName, dojo._scopeName + ".io.iframe._iframeOnload();");
		}


		//Set up the deferred.
		var dfd = dojo._ioSetArgs(
			args,
			function(/*Deferred*/dfd){
				//summary: canceller function for dojo._ioSetArgs call.
				dfd.canceled = true;
				dfd.ioArgs._callNext();
			},
			function(/*Deferred*/dfd){
				//summary: okHandler function for dojo._ioSetArgs call.
				var value = null;
				try{
					var ioArgs = dfd.ioArgs;
					var dii = dojo.io.iframe;
					var ifd = dii.doc(dii._frame);
					var handleAs = ioArgs.handleAs;


					//Assign correct value based on handleAs value.
					value = ifd; //html
					if(handleAs != "html"){
						if(handleAs == "xml"){
							//	FF, Saf 3+ and Opera all seem to be fine with ifd being xml.  We have to
							//	do it manually for IE.  Refs #6334.
							if(dojo.isIE){
								dojo.query("a", dii._frame.contentWindow.document.documentElement).orphan();
								var xmlText=(dii._frame.contentWindow.document).documentElement.innerText;
								xmlText=xmlText.replace(/>\s+</g, "><");
								xmlText=dojo.trim(xmlText);
								//Reusing some code in base dojo for handling XML content.  Simpler and keeps
								//Core from duplicating the effort needed to locate the XML Parser on IE.
								var fauxXhr = { responseText: xmlText };
								value = dojo._contentHandlers["xml"](fauxXhr); // DOMDocument
							}
						}else{
							value = ifd.getElementsByTagName("textarea")[0].value; //text
							if(handleAs == "json"){
								value = dojo.fromJson(value); //json
							}else if(handleAs == "javascript"){
								value = dojo.eval(value); //javascript
							}
						}
					}
				}catch(e){
					value = e;
				}finally{
					ioArgs._callNext();				
				}
				return value;
			},
			function(/*Error*/error, /*Deferred*/dfd){
				//summary: errHandler function for dojo._ioSetArgs call.
				dfd.ioArgs._hasError = true;
				dfd.ioArgs._callNext();
				return error;
			}
		);


		//Set up a function that will fire the next iframe request. Make sure it only
		//happens once per deferred.
		dfd.ioArgs._callNext = function(){
			if(!this["_calledNext"]){
				this._calledNext = true;
				dojo.io.iframe._currentDfd = null;
				dojo.io.iframe._fireNextRequest();
			}
		}


		this._dfdQueue.push(dfd);
		this._fireNextRequest();

		
		//Add it the IO watch queue, to get things like timeout support.
		dojo._ioWatch(
			dfd,
			function(/*Deferred*/dfd){
				//validCheck
				return !dfd.ioArgs["_hasError"];
			},
			function(dfd){
				//ioCheck
				return (!!dfd.ioArgs["_finished"]);
			},
			function(dfd){
				//resHandle
				if(dfd.ioArgs._finished){
					dfd.callback(dfd);
				}else{
					dfd.errback(new Error("Invalid dojo.io.iframe request state"));
				}
			}
		);


		return dfd;";s:7:"summary";s:206:"function that sends the request to the server.
This transport can only process one send() request at a time, so if send() is called
multiple times, it will queue up the calls and only process one at a time.";}s:26:"dojo.io.iframe.send._frame";a:3:{s:8:"instance";s:19:"dojo.io.iframe.send";s:7:"private";b:1;s:7:"summary";s:0:"";}s:31:"dojo.io.iframe.send._calledNext";a:3:{s:8:"instance";s:19:"dojo.io.iframe.send";s:7:"private";b:1;s:7:"summary";s:0:"";}s:26:"dojo.io.iframe._currentDfd";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:24:"dojo.io.iframe._dfdQueue";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:26:"dojo.io.iframe._iframeName";a:2:{s:7:"private";b:1;s:7:"summary";s:0:"";}s:31:"dojo.io.iframe._fireNextRequest";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:2331:"		try{
			if((this._currentDfd)||(this._dfdQueue.length == 0)){ return; }
			var dfd = this._currentDfd = this._dfdQueue.shift();
			var ioArgs = dfd.ioArgs;
			var args = ioArgs.args;


			ioArgs._contentToClean = [];
			var fn = dojo.byId(args["form"]);
			var content = args["content"] || {};
			if(fn){
				if(content){
					// if we have things in content, we need to add them to the form
					// before submission
					var pHandler = function(name, value) {
						var tn;
						if(dojo.isIE){
							tn = dojo.doc.createElement("<input type='hidden' name='"+name+"'>");
						}else{
							tn = dojo.doc.createElement("input");
							tn.type = "hidden";
							tn.name = name;
						}
						tn.value = value;
						fn.appendChild(tn);
						ioArgs._contentToClean.push(name);
					};
					for(var x in content){
						var val = content[x];
						if(dojo.isArray(val) && val.length > 1){
							var i;
							for (i = 0; i < val.length; i++) {
								pHandler(x,val[i]);
							}
						}else{
							if(!fn[x]){
								pHandler(x,val);
							}else{
								fn[x].value = val;
							}
						}
					}
				}
				//IE requires going through getAttributeNode instead of just getAttribute in some form cases, 
				//so use it for all.  See #2844
				var actnNode = fn.getAttributeNode("action");
				var mthdNode = fn.getAttributeNode("method");
				var trgtNode = fn.getAttributeNode("target");
				if(args["url"]){
					ioArgs._originalAction = actnNode ? actnNode.value : null;
					if(actnNode){
						actnNode.value = args.url;
					}else{
						fn.setAttribute("action",args.url);
					}
				}
				if(!mthdNode || !mthdNode.value){
					if(mthdNode){
						mthdNode.value= (args["method"]) ? args["method"] : "post";
					}else{
						fn.setAttribute("method", (args["method"]) ? args["method"] : "post");
					}
				}
				ioArgs._originalTarget = trgtNode ? trgtNode.value: null;
				if(trgtNode){
					trgtNode.value = this._iframeName;
				}else{
					fn.setAttribute("target", this._iframeName);
				}
				fn.target = this._iframeName;
				fn.submit();
			}else{
				// otherwise we post a GET string by changing URL location for the
				// iframe
				var tmpUrl = args.url + (args.url.indexOf("?") > -1 ? "&" : "?") + ioArgs.query;
				this.setSrc(this._frame, tmpUrl, true);
			}
		}catch(e){
			dfd.errback(e);
		}";s:7:"summary";s:64:"Internal method used to fire the next request in the bind queue.";s:7:"private";b:1;}s:48:"dojo.io.iframe._fireNextRequest._dfdQueue.length";a:3:{s:8:"instance";s:31:"dojo.io.iframe._fireNextRequest";s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:43:"dojo.io.iframe._fireNextRequest._currentDfd";a:4:{s:8:"instance";s:31:"dojo.io.iframe._fireNextRequest";s:7:"private";b:1;s:14:"private_parent";b:1;s:7:"summary";s:0:"";}s:28:"dojo.io.iframe._iframeOnload";a:4:{s:4:"type";s:8:"Function";s:6:"source";s:993:"		var dfd = this._currentDfd;
		if(!dfd){
			this._fireNextRequest();
			return;
		}


		var ioArgs = dfd.ioArgs;
		var args = ioArgs.args;
		var fNode = dojo.byId(args.form);

	
		if(fNode){
			// remove all the hidden content inputs
			var toClean = ioArgs._contentToClean;
			for(var i = 0; i < toClean.length; i++) {
				var key = toClean[i];
				//Need to cycle over all nodes since we may have added
				//an array value which means that more than one node could
				//have the same .name value.
				for(var j = 0; j < fNode.childNodes.length; j++){
					var chNode = fNode.childNodes[j];
					if(chNode.name == key){
						dojo.destroy(chNode);
						break;
					}
				}
			}


			// restore original action + target
			if(ioArgs["_originalAction"]){
				fNode.setAttribute("action", ioArgs._originalAction);
			}
			if(ioArgs["_originalTarget"]){
				fNode.setAttribute("target", ioArgs._originalTarget);
				fNode.target = ioArgs._originalTarget;
			}
		}


		ioArgs._finished = true;";s:7:"private";b:1;s:7:"summary";s:0:"";}s:7:"dojo.io";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}s:4:"dojo";a:2:{s:4:"type";s:6:"Object";s:7:"summary";s:0:"";}}