blob: 52bb90dd9c5a130f532bf39e995b87edfa448956 [file] [log] [blame]
/*
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.io.windowName"]){
dojo._hasResource["dojox.io.windowName"]=true;
dojo.provide("dojox.io.windowName");
dojox.io.windowName={send:function(_1,_2){
_2.url+=(_2.url.match(/\?/)?"&":"?")+"windowname="+(_2.authElement?"auth":true);
var _3=_2.authElement;
var _4=function(_5){
try{
var _6=_7.ioArgs.frame.contentWindow.document;
_6.write(" ");
_6.close();
}
catch(e){
}
(_3||dojo.body()).removeChild(_7.ioArgs.outerFrame);
return _5;
};
var _7=dojo._ioSetArgs(_2,_4,_4,_4);
if(_2.timeout){
setTimeout(function(){
if(_7.fired==-1){
_7.callback(new Error("Timeout"));
}
},_2.timeout);
}
var _8=dojox.io.windowName;
if(dojo.body()){
_8._send(_7,_1,_3,_2.onAuthLoad);
}else{
dojo.addOnLoad(function(){
_8._send(_7,_1,_3,_2.onAuthLoad);
});
}
return _7;
},_send:function(_9,_a,_b,_c){
var _d=_9.ioArgs;
var _e=dojox.io.windowName._frameNum++;
var _f=(dojo.config.dojoBlankHtmlUrl||dojo.config.dojoCallbackUrl||dojo.moduleUrl("dojo","resources/blank.html"))+"#"+_e;
var _10=new dojo._Url(window.location,_f);
var doc=dojo.doc;
var _11=_b||dojo.body();
function _12(_13){
_13.style.width="100%";
_13.style.height="100%";
_13.style.border="0px";
};
if(dojo.isMoz&&![].reduce){
var _14=doc.createElement("iframe");
_12(_14);
if(!_b){
_14.style.display="none";
}
_11.appendChild(_14);
var _15=_14.contentWindow;
doc=_15.document;
doc.write("<html><body margin='0px'><iframe style='width:100%;height:100%;border:0px' name='protectedFrame'></iframe></body></html>");
doc.close();
var _16=_15[0];
_15.__defineGetter__(0,function(){
});
_15.__defineGetter__("protectedFrame",function(){
});
doc=_16.document;
doc.write("<html><body margin='0px'></body></html>");
doc.close();
_11=doc.body;
}
var _17=_d.frame=_17=doc.createElement(dojo.isIE?"<iframe name=\""+_10+"\" onload=\"dojox.io.windowName["+_e+"]()\">":"iframe");
_12(_17);
_d.outerFrame=_14=_14||_17;
if(!_b){
_14.style.display="none";
}
var _18=0;
function _19(){
var _1a=_17.contentWindow.name;
if(typeof _1a=="string"){
if(_1a!=_10){
_18=2;
_9.ioArgs.hash=_17.contentWindow.location.hash;
_9.callback(_1a);
}
}
};
dojox.io.windowName[_e]=_17.onload=function(){
try{
if(!dojo.isMoz&&_17.contentWindow.location=="about:blank"){
return;
}
}
catch(e){
}
if(!_18){
_18=1;
if(_b){
if(_c){
_c();
}
}else{
_17.contentWindow.location=_f;
}
}
try{
if(_18<2){
_19();
}
}
catch(e){
}
};
_17.name=_10;
if(_a.match(/GET/i)){
dojo._ioAddQueryToUrl(_d);
_17.src=_d.url;
_11.appendChild(_17);
if(_17.contentWindow){
_17.contentWindow.location.replace(_d.url);
}
}else{
if(_a.match(/POST/i)){
_11.appendChild(_17);
var _1b=dojo.doc.createElement("form");
dojo.body().appendChild(_1b);
var _1c=dojo.queryToObject(_d.query);
for(var i in _1c){
var _1d=_1c[i];
_1d=_1d instanceof Array?_1d:[_1d];
for(var j=0;j<_1d.length;j++){
var _1e=doc.createElement("input");
_1e.type="hidden";
_1e.name=i;
_1e.value=_1d[j];
_1b.appendChild(_1e);
}
}
_1b.method="POST";
_1b.action=_d.url;
_1b.target=_10;
_1b.submit();
_1b.parentNode.removeChild(_1b);
}else{
throw new Error("Method "+_a+" not supported with the windowName transport");
}
}
if(_17.contentWindow){
_17.contentWindow.name=_10;
}
},_frameNum:0};
}