var iframe=new function(){};iframe.prototype=new Object();iframe.isPromptedReport=false;var hasLoaded=false;iframe.isTreeProcessing=false;iframe.isAborting=false;iframe.windowTimer=null;iframe.waitCurtain=null;iframe.isProcessing=false;iframe.consolidatedStyles={};iframe.notifyParent=function(isXHR){if(self.supressWaitPage){return ;}iframe.showWaitCurtain();var delay=0,showWait=true;if(window.microstrategy){delay=parseInt(window.microstrategy.waitPageDelay);if(isNaN(delay)||delay<0){delay=0;}showWait=window.microstrategy.showWaitPopup;}if(showWait){if(delay==0){iframe.showWaitPage();}else{if(delay!=-1){iframe.windowTimer=window.setTimeout("iframe.showWaitPage()",delay);}}}if(window.microstrategy){window.microstrategy.showWaitPopup=true;}if(!isXHR){if(!window.isUnloading){window.setTimeout("iframe.checkChildStatus()",3000);}}};iframe.stopWindow=function(){iframe.isAborting=true;if(window.event){window.event.cancelBubble=true;}if(window.frameManager&&window.frameManager.document){window.frameManager.document.execCommand("Stop");}document.execCommand("Stop");if(microstrategy.updateManager){microstrategy.updateManager.acknowledgeRequest();}iframe.hideWaitPage();};function reloadPreviousPage(){if(hasLoaded){var oNewDoc=window.document.open("text/html");oNewDoc.close();window.history.go(-1);}}iframe.checkChildStatus=function(){if(!iframe.isAborting){try{if(window.frameManager&&window.frameManager.document&&window.frameManager.document.readyState=="complete"&&window.document.readyState=="complete"){if(!window.frameManager.isIframe){var sMarkup=window.frameManager.document.documentElement.innerHTML;var oNewDoc=window.document.open("text/html");if(sMarkup.indexOf("<!DOCTYPE")==-1){oNewDoc.write('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd " >');}oNewDoc.write(sMarkup);oNewDoc.close();}if(!iframe.isProcessing){window.setTimeout("if (typeof(iframe)!= 'undefined' && typeof(iframe.hideWaitPage) != 'undefined') iframe.hideWaitPage();",1000);}}else{window.setTimeout("if (typeof(iframe)!= 'undefined') iframe.checkChildStatus()",3000);}}catch(err){iframe.hideWaitPage();}}else{if(window.frameManager&&window.frameManager.document&&window.frameManager.document.readyState=="complete"){if(!window.frameManager.isIframe&&!window.frameManager.document.body.onbeforeunload){window.frameManager.document.body.onbeforeunload=new Function("window.parent.iframe.notifyParent();");}}}};iframe.showWaitCurtain=function(){if(self.supressWaitPage){return ;}var clientHeight=getClientHeight();var clientWidth=getClientWidth();if(iframe.waitCurtain==null){var div=document.createElement("div");div.className="divWaitCurtain";div.appendChild(document.createTextNode(" "));div.onmousedown=new Function('if (typeof(window.event) != "undefined") {window.event.cancelBubble = true; } return false;');div.ondblclick=new Function('if (typeof(window.event) != "undefined") { window.event.cancelBubble = true; } return false;');iframe.waitCurtain=document.body.appendChild(div);}if(!bIsW3C){enablePulldowns(document.body,false);}var wcs=iframe.waitCurtain.style;if(clientHeight>0){wcs.height=clientHeight+"px";}if(clientWidth>0){wcs.width=clientWidth+"px";}wcs.display="block";};iframe.showWaitPage=function(){if(self.supressWaitPage){return ;}iframe.isProcessing=false;if(currentPin==-1){hasLoaded=true;var bone=microstrategy.bone("divWaitBox");if(bone&&bone.elem){bone.elem.style.left=((getClientWidth()-getObjWidth(bone.elem))/2)+"px";bone.elem.style.top=((getClientHeight()-100)/2+getDocumentScrollTop())+"px";bone.elem.style.zIndex=9999;if(!bIsW3C){togglePulldowns(bone.elem,false);}bone.elem.style.visibility="visible";}iframe.isAborting=false;}};iframe.hideWaitPage=function(hideWaitCurtain){window.clearTimeout(iframe.windowTimer);var el=document.getElementById("divWaitBox");if(el&&el.style.visibility=="visible"){var bone=microstrategy.bone("divWaitBox");bone.closeDialog();}if(typeof (hideWaitCurtain)=="undefined"){hideWaitCurtain=true;}if(hideWaitCurtain){iframe.hideWaitCurtain();}};iframe.hideWaitCurtain=function(){if(iframe.waitCurtain){iframe.waitCurtain.style.display="none";if(!bIsW3C){enablePulldowns(document.body,true);}}};iframe.clearIFrameParents=function(iframeComponent){var current=iframeComponent,parent=null;while((parent=current.parentNode)!=null){if(parent.tagName=="DIV"&&parent.getAttribute("IFRAME")=="true"){parent.setAttribute("IFRAME","false",0);}current=parent;}};iframe.replaceComponents=function(parentWindow,iframeWindow){if(iframeWindow!=parentWindow&&!iframe.isAborting){this.consolidatedStyles={};iframe.isProcessing=true;if(!bIsW3C){iframe.togglePulldownChildren(parentWindow.document.body,false);}var aIFrameDivs=iframeWindow.document.getElementsByTagName("div"),aIFrameForms=iframeWindow.document.getElementsByTagName("form"),aIFrameComments=iframeWindow.document.getElementsByTagName("comment"),aScripts=null,i,sHTML,parent,current,id;for(i=0,len=aIFrameComments.length;i<len;i++){if(aIFrameComments[i].getAttribute("IFRAME")=="true"){if(window.document.getElementById(aIFrameComments[i].id)){iframe.clearIFrameParents(aIFrameComments[i]);}else{if(aIFrameComments[i].getAttribute("dialog")!="true"&&!aIFrameComments[i].getAttribute("css")){aIFrameComments[i].setAttribute("IFRAME","false",0);}}}}for(i=0,len=aIFrameDivs.length;i<len;i++){if(aIFrameDivs[i].getAttribute("IFRAME")=="true"){if(window.document.getElementById(aIFrameDivs[i].id)){iframe.clearIFrameParents(aIFrameDivs[i]);}else{aIFrameDivs[i].setAttribute("IFRAME","false",0);}}}for(i=0,len=aIFrameComments.length;i<len;i++){if((aIFrameComments[i].getAttribute("IFRAME")=="true")&&(aIFrameComments[i].getAttribute("ISEMPTY")!="true")){if(typeof aIFrameComments[i].text!="undefined"){sHTML=aIFrameComments[i].text;}else{sHTML=aIFrameComments[i].innerHTML;}var indexBegin=sHTML.indexOf("<");var indexEnd=sHTML.lastIndexOf(">");sHTML=sHTML.substr(indexBegin,indexEnd+1-indexBegin);sHTML=sHTML.substring(4,sHTML.length-3);sHTML=sHTML.replace(/'/g,"'");parentWindow.iframe.updateComponent(aIFrameComments[i].getAttribute("ID"),sHTML,aIFrameComments[i],true);}}for(i=0,len=aIFrameDivs.length;i<len;i++){if(aIFrameDivs[i].getAttribute("IFRAME")=="true"&&aIFrameDivs[i].getAttribute("ISEMPTY")!="true"){if(aIFrameDivs[i].getAttribute("errBox")!="true"||currentModalEditor.length==0){sHTML=iframe.getOuterHTML(aIFrameDivs[i]);sHTML=sHTML.replace(/'/g,"'");id=aIFrameDivs[i].getAttribute("ID");parentWindow.iframe.updateComponent(id,sHTML);}else{sHTML=aIFrameDivs[i].innerHTML;if(sHTML.length>0){showMessage({contents:sHTML,elements:microstrategy.OK_BUTTON,type:mstrMsgBoxImpl.MSG_ERROR});}}}}document.title=window.frameManager.pageTitle;for(var styleId in this.consolidatedStyles){updateStyleContainer(this.consolidatedStyles[styleId],styleId);}if(!bIsW3C){iframe.togglePulldownChildren(parentWindow.document.body,true);}if(iframe.isTreeProcessing){removeTreeWaitMessage();}microstrategy.loadDynamicJS();microstrategy.registerNewBones();}};iframe.togglePulldownChildren=function(oElem,bShow){try{var pulldowns=oElem.getElementsByTagName("select");if(pulldowns.length){if(bShow){for(var i=0,len=pulldowns.length;i<len;i++){var owner=pulldowns[i].getAttribute("hd");if(owner==null||owner.length==0){pulldowns[i].style.visibility="visible";}}}else{for(var i=0,len=pulldowns.length;i<len;i++){pulldowns[i].style.visibility="hidden";}}}}catch(localerr){}};iframe.createPlaceHolder=function(sComponentID){var oDivNode=document.createElement("div");oDivNode.id=sComponentID;document.body.appendChild(oDivNode);};iframe.extractScript=function(oDivNode,scriptArray){var aScripts=oDivNode.getElementsByTagName("SCRIPT");if((aScripts)&&(aScripts.length>0)){for(var j=0;j<aScripts.length;j++){if(aScripts[j].getAttribute("language")!="VBSCRIPT"&&(aScripts[j].getAttribute("id")==""||aScripts[j].getAttribute("id")==null)){var script=trim(aScripts[j].innerHTML);if(script.indexOf("<!--")==0){script=script.substring(4,script.length-3);}scriptArray.push(script);}}}};iframe.extractImage=function(oDivNode,chartArray){if(!bIsW3C){var imgArray=oDivNode.getElementsByTagName("IMG");if(imgArray&&(imgArray.length>0)){for(var j=0;j<imgArray.length;j++){if(imgArray[j].getAttribute("dsrc")!=null){chartArray.push(imgArray[j]);}}}imgArray=oDivNode.getElementsByTagName("INPUT");if(imgArray&&(imgArray.length>0)){for(var j=0;j<imgArray.length;j++){if(imgArray[j].getAttribute("dsrc")!=null){chartArray.push(imgArray[j]);}}}}};iframe.updateComponent=function(sComponentID,sNewHTML,iframeNode,shouldCreatePlaceHolder){var aScripts=null,oParentDivs,oParentDiv;if(iframeNode&&iframeNode.getAttribute("slid")){var slices=document.getElementsByName(sComponentID);if(slices&&slices.length>0){for(var i=0,len=slices.length;i<len;i++){if(slices[i].getAttribute("slid")==iframeNode.getAttribute("slid")){oParentDiv=slices[i];break;}}}}if(!oParentDiv){oParentDivs=document.getElementById(sComponentID);if(!oParentDivs&&shouldCreatePlaceHolder){this.createPlaceHolder(sComponentID);oParentDivs=document.getElementById(sComponentID);}if(oParentDivs){if(oParentDivs.length>1){for(i=0,len=oParentDivs.length;i<len;i++){if(oParentDivs[i].tagName=="DIV"){oParentDiv=oParentDivs[i];break;}}}else{oParentDiv=oParentDivs;}}}if(oParentDiv){var sReplaceHTML=sNewHTML.replace(/\r\n/g,"");var oDivNode=iframe.createElementFromHTML(sReplaceHTML);var scriptArray=[];iframe.extractScript(oDivNode,scriptArray);var chartArray=[];iframe.extractImage(oDivNode,chartArray);if(oDivNode.getAttribute("message")=="true"){showMessage({contents:sNewHTML,elements:microstrategy.OK_BUTTON,type:mstrMsgBoxImpl.MSG_WARNING});}if(oDivNode.getAttribute("css")=="1"){var styleId=oDivNode.getAttribute("styleid");if(!this.consolidatedStyles[styleId]){this.consolidatedStyles[styleId]="";}this.consolidatedStyles[styleId]=consolidateStyleSheets(oDivNode,this.consolidatedStyles[styleId],oDivNode.getAttribute("styleid"));}else{var commentsIdx=sReplaceHTML.indexOf("<comment");if(commentsIdx>-1){return ;}if(oParentDiv.getAttribute(mstrHTMLAttributes.ATTR_MODAL)=="true"||(oParentDiv.popupMask)){togglePulldowns(oParentDiv,true);}if(oDivNode.getAttribute("partialUpdate")&&oParentDiv.childNodes.length>1){oParentDiv.innerHTML=oDivNode.innerHTML;}else{if(bIsW3C&&!bIsIE8){iframe.setOuterHTML(oParentDiv,oDivNode);}else{if(oParentDiv&&oDivNode){var p=oParentDiv.parentNode;p.insertBefore(oDivNode,oParentDiv);p.removeChild(oParentDiv);}if(chartArray.length>0){for(var j=0,cnt=chartArray.length;j<cnt;j++){chartArray[j].src=chartArray[j].getAttribute("dsrc");}}}}for(var j=0,len=scriptArray.length;j<len;j++){eval(scriptArray[j].toString());}}}};iframe.createElementFromHTML=function(tagStr){var tempDiv=document.createElement("div");tempDiv.innerHTML=tagStr;iframe.adjustNode(tempDiv);return tempDiv.firstChild;};iframe.adjustNode=function(tempDiv){if(bIsW3C&&tempDiv.childNodes.length>1){iframe.adjustNodes(tempDiv);if(microstrategy.pageName=="document"){iframe.adjustNodesForHTMLDocument(tempDiv);}}};iframe.getOuterHTML=function(oTag){return(typeof oTag.outerHTML!="undefined")?oTag.outerHTML:iframe.getManualOuterHTML(oTag);};iframe.getManualOuterHTML=function(oTag){var result="<"+oTag.tagName;var attrs=oTag.attributes;for(var i=0,len=attrs.length;i<len;i++){var att=attrs[i];if(att.specified&&att.nodeName!="_moz-userdefined"){result+=" "+att.nodeName+'="'+att.nodeValue+'"';}}result+=">"+oTag.innerHTML+"</"+oTag.tagName+">";return result;};iframe.adjustNodes=function(oTag){var children=oTag.childNodes;var div=oTag.lastChild;var childrenLength=children.length;for(var i=0;i<childrenLength;i++){var child=children[0];if(child.tagName.toLowerCase()=="script"){div.appendChild(child);}else{if(child.tagName.toLowerCase()=="style"){div.insertBefore(child,div.firstChild);}else{if(child.tagName.toLowerCase()=="link"){div.insertBefore(child,div.firstChild);}}}}};iframe.adjustNodesForHTMLDocument=function(oTag){var children=oTag.childNodes;var div=oTag.firstChild;var childrenLength=children.length;for(var i=1;i<childrenLength;i++){var child=children[1];div.appendChild(child);}};iframe.setOuterHTML=function(oTag,oNewTag){var attrs=oTag.attributes;for(var i=attrs.length-1;i>-1;i--){var att=attrs[i];if(att.specified){oTag.removeAttribute(att.nodeName);}}attrs=oNewTag.attributes;for(var i=0,len=attrs.length;i<len;i++){var att=attrs[i];if(att.specified&&att.nodeName!="_moz-userdefined"){oTag.setAttribute(att.nodeName,att.value);}}oTag.style.cssText=oNewTag.style.cssText;if(oTag.innerHTML.length==0&&oNewTag.innerHTML.length==0){return ;}oTag.innerHTML=oNewTag.innerHTML;};
