/*
	Copyright (c) 2004-2016, The JS 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/request/util",["exports","../errors/RequestError","../errors/CancelError","../Deferred","../io-query","../_base/array","../_base/lang","../promise/Promise","../has"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9){
function _a(_b){
return _9("native-arraybuffer")&&_b instanceof ArrayBuffer;
};
function _c(_d){
return _9("native-blob")&&_d instanceof Blob;
};
function _e(_f){
if(typeof Element!=="undefined"){
return _f instanceof Element;
}
return _f.nodeType===1;
};
function _10(_11){
return _9("native-formdata")&&_11 instanceof FormData;
};
function _12(_13){
return _13&&typeof _13==="object"&&!_10(_13)&&!_e(_13)&&!_c(_13)&&!_a(_13);
};
_1.deepCopy=function(_14,_15){
for(var _16 in _15){
var _17=_14[_16],_18=_15[_16];
if(_17!==_18){
if(_12(_18)){
if(Object.prototype.toString.call(_18)==="[object Date]"){
_14[_16]=new Date(_18);
}else{
if(_7.isArray(_18)){
_14[_16]=_1.deepCopyArray(_18);
}else{
if(_17&&typeof _17==="object"){
_1.deepCopy(_17,_18);
}else{
_14[_16]=_1.deepCopy({},_18);
}
}
}
}else{
_14[_16]=_18;
}
}
}
return _14;
};
_1.deepCopyArray=function(_19){
var _1a=[];
for(var i=0,l=_19.length;i<l;i++){
var _1b=_19[i];
if(typeof _1b==="object"){
_1a.push(_1.deepCopy({},_1b));
}else{
_1a.push(_1b);
}
}
return _1a;
};
_1.deepCreate=function deepCreate(_1c,_1d){
_1d=_1d||{};
var _1e=_7.delegate(_1c),_1f,_20;
for(_1f in _1c){
_20=_1c[_1f];
if(_20&&typeof _20==="object"){
_1e[_1f]=_1.deepCreate(_20,_1d[_1f]);
}
}
return _1.deepCopy(_1e,_1d);
};
var _21=Object.freeze||function(obj){
return obj;
};
function _22(_23){
return _21(_23);
};
function _24(_25){
return _25.data!==undefined?_25.data:_25.text;
};
_1.deferred=function deferred(_26,_27,_28,_29,_2a,_2b){
var def=new _4(function(_2c){
_27&&_27(def,_26);
if(!_2c||!(_2c instanceof _2)&&!(_2c instanceof _3)){
return new _3("Request canceled",_26);
}
return _2c;
});
def.response=_26;
def.isValid=_28;
def.isReady=_29;
def.handleResponse=_2a;
function _2d(_2e){
_2e.response=_26;
throw _2e;
};
var _2f=def.then(_22).otherwise(_2d);
if(_1.notify){
_2f.then(_7.hitch(_1.notify,"emit","load"),_7.hitch(_1.notify,"emit","error"));
}
var _30=_2f.then(_24);
var _31=new _8();
for(var _32 in _30){
if(_30.hasOwnProperty(_32)){
_31[_32]=_30[_32];
}
}
_31.response=_2f;
_21(_31);
if(_2b){
def.then(function(_33){
_2b.call(def,_33);
},function(_34){
_2b.call(def,_26,_34);
});
}
def.promise=_31;
def.then=_31.then;
return def;
};
_1.addCommonMethods=function addCommonMethods(_35,_36){
_6.forEach(_36||["GET","POST","PUT","DELETE"],function(_37){
_35[(_37==="DELETE"?"DEL":_37).toLowerCase()]=function(url,_38){
_38=_7.delegate(_38||{});
_38.method=_37;
return _35(url,_38);
};
});
};
_1.parseArgs=function parseArgs(url,_39,_3a){
var _3b=_39.data,_3c=_39.query;
if(_3b&&!_3a){
if(typeof _3b==="object"&&(!(_9("native-xhr2"))||!(_a(_3b)||_c(_3b)))){
_39.data=_5.objectToQuery(_3b);
}
}
if(_3c){
if(typeof _3c==="object"){
_3c=_5.objectToQuery(_3c);
}
if(_39.preventCache){
_3c+=(_3c?"&":"")+"request.preventCache="+(+(new Date));
}
}else{
if(_39.preventCache){
_3c="request.preventCache="+(+(new Date));
}
}
if(url&&_3c){
url+=(~url.indexOf("?")?"&":"?")+_3c;
}
return {url:url,options:_39,getHeader:function(_3d){
return null;
}};
};
_1.checkStatus=function(_3e){
_3e=_3e||0;
return (_3e>=200&&_3e<300)||_3e===304||_3e===1223||!_3e;
};
});
