var mstr={};mstr.Props={};mstr.Props.Widget={ID:"id",SCRIPTCLASS:"scriptClass",FEATURES:"features",CSSCLASS:"cssClass",LISTENS_TO:"listensTo",PROPOGATES_EVENTS:"propogatesEvents",UPDATES:"updates",PATH:"path",FOR:"for",PROPOGATES:"propogates",DOCUMENT:"document",ELEMENTID:"elementId",ELEMENT:"element",ISELEMENTVALID:"isElementValid",RENDERSTATUS:"renderStatus",PARENT:"parent",LAYOUTFILE:"layoutFile",LAYOUTCLASS:"layoutClass",LAYOUTHANDLERS:"layoutHandlers",ENABLED:"enabled",VISIBLE:"visible",MESSAGE:"message",HEIGHT:"height",WIDTH:"width",TYPE:"type",VALUE:"value",VALUEFORMS:"valueForms",VALUEFORMSMAP:"valueFormsMap",BROWSEFORMS:"browseForms",BROWSEFORMSMAP:"browseFormsMap",AVAILABLEVALUES:"availableValues",ISVALUEFROMLIST:"isValueFromList",ISVALUEFROMTREE:"isValueFromTree",ANSWER:"answer",DEFAULTANSWER:"defaultAnswer",RESTRICTION:"restriction",REQUIRED:"required",PAGENUMBER:"pageNumber",CAPTION:"caption",IMAGEENABLED:"imageEnabled",IMAGEDISABLED:"imageDisabled",STATUSCODE:"statusCode",SHOWREADYSTATE:"showReadyState",CHILDREN:"children",PREINITCHILDREN:"preInitChildren",CONTENTS:"contents",INPUT:"input",SIMPLEINPUT:"simpleInput",COMPLEXINPUT:"complexInput",INPUT1:"input1",INPUT2:"input2",ALLOWFILEIMPORT:"allowFileImport",ALLOWELEMENTBROWSE:"allowElementBrowse",BUTTONBAR:"buttonBar",LINK:"link",SHOWLINK:"showLink",BOOK:"book",TOC:"toc",SUMMARY:"summary",PREVIOUSBUTTON:"previousButton",NEXTBUTTON:"nextButton",CLOSESUMMARYBUTTON:"closeSummaryButton",CSSSHADOW:"cssShadow",MIN:"min",MAX:"max",AUTOSELECT:"autoSelect",ATTRIBUTE:"attribute",FORM:"form",ISLIST:"isList",ISTREE:"isTree",DATAFORMS:"dataForms",ROOT:"root",ROOTFLATTENEDTREE:"rootFlattenedTree",LISTITEMS:"listItems",SELECTEDINDICES:"selectedIndices",BLOCKCOUNT:"blockCount",BLOCKCOUNTMAP:"blockCountMap",BLOCKBEGIN:"blockBegin",FOLDER:"folder",FOLDERSIZE:"folderSize",FOLDERNODELOCATION:"folderNL",PATHTREE:"pathTree",PATHFLATTENEDTREE:"pathFlattenedTree",SEARCHXML:"searchXML",FILTERXML:"filterXML",ATTRIBUTEID:"attributeId",OBJECTTYPES:"objectType",ALLOWUNAVAILABLEVALUE:"allowUnavailableValue",INSERTUNAVAILABLEVALUEAT:"insertUnavailableValueAt",PRESERVEVALUEONREADYSTATECHANGE:"preserveValueOnReadyStateChange",LEAFELEMENTS:"leafElements",DISPLAYFORMTEXT:"displayFormText",DISPLAYFORMICON:"displayFormIcon",DISPLAYFORMS:"displayForms",NOSELECTIONTEXT:"noSelectionText",NOSELECTIONTEXT:"noSelectionIcon",MULTISELECTIONTEXT:"multiSelectionText",MULTISELECTIONTEXT:"multiSelectionIcon",EMPTYLISTTEXT:"emptyText",ICONFORM:"iconForm",MULTISELECT:"multiSelect",COMMANDID:"cmdId",DELEGATESCOMMANDS:"delegatesCommands",APPLIESTOPATH:"appliesToPath",POPUPID:"popupId",POPUPOBJECT:"popupObj",POPORIENTATION:"popOrientation",FRAMENAME:"frameName",TIMEOUT:"timeout",PROCESSORPOOLSIZE:"processorPoolSize",ENABLEWHILEFETCHING:"enableWhileFetching",FOLDER_OBJECT:"folderObj",FOLDER_STARTINDEX:"startIndex","FETCHBLOCKSIZE ":"fetchBlockSize",BACKGROUNDLOAD:"backgroundLoad",FETCHLABEL:"fetchLabel",PAGES:"pages",PAGESIN:"pagesIn",PAGERANGE:"pageRange",CURRENTPAGE:"currentPage",TITLE:"title",ROWS:"rows",COLUMNS:"columns",SHOWCOLUMNHEADERS:"showColumnHeaders",ROWSPERCOLUMN:"arrangementSize",COLUMNSPERROW:"arrangementSize",FROM:"from",TO:"to",FROMPATH:"fromPath",SHOWPATH:"showPath",SHOWSEARCH:"showSearch",SHOWUPDOWN:"showUpDown",SHOWFETCH:"showFetch",SHOWMATCHCASE:"showMatchCase",MATCHCASEDEFAULT:"matchCaseDefault",MATCHCASECAPTION:"matchCaseCaption",SHOWANDORPICKER:"showANDORPicker",SHOWNOTPICKER:"showNOTPicker",ANDORDEFAULT:"ANDORDefault",NOTDEFAULT:"NOTDefault",FLAT:"flat",KEEPAVAILABLEITEMS:"keepAvailableItems",INSERTIONMODE:"insertionMode",SORTPOSITIONFORM:"sortPositionForm",REQUESTSCRIPTCLASS:"requestScriptClass",BROWSEABLEITEMSEXPRESSION:"browseableItemsExp",DELIMITER:"delimiter",DATATYPE:"dataType",PREFIX:"prefix",HINTPREFIX:"hintPrefix",HINTSUFFIX:"hintSuffix",HINT:"hint",SHOWHINT:"showHint",OBJECTPATH:"objectPath",METRICQUAL_OBJECTPICKER:"objectPicker",METRICQUAL_FUNCTIONPICKER:"functionPicker",METRICQUAL_CONSTANT1:"constant1",METRICQUAL_CONSTANT2:"constant2",METRICQUAL_LEVELPICKER:"levelPicker",ATTRQUAL_OBJECTPICKER:"objectPicker",ATTRQUAL_FORMPICKER:"formPicker",ATTRQUAL_FUNCTIONPICKER:"functionPicker",ATTRQUAL_CONSTANT1:"constant1",ATTRQUAL_CONSTANT2:"constant2",ALLOWQUALIFYORSELECT:"allowQualifyOrSelect",ALLOWMETRICQUALIFY:"allowMetricQualify",SHOWMETRICDIMTY:"showMetricDimty",LABELDIMTY:"labelDimty",BETWEENWORD:"betweenWord",FUNCTIONCATEGORY:"functionCategory",DISPLAYEDFORMS:"displayedForms",DEFAULTOPERATOR:"defaultOperator",DEFAULTEXPRESSIONTYPE:"defaultExpressionType",DEFAULTATTREXPRESSIONTYPE:"defaultAttributeExprType",DEFAULTMETRICQUALFUNCTION:"defaultMetricQualFunction",DEFAULTMETRICLEVEL:"defaultMetricLevel",DEFAULTATTRQUALFUNCTION:"defaultAttrQualFunction",DEFAULTATTRLISTFUNCTION:"defaultAttrListFunction",RENDERMEMO:"renderMemo",ALLOWBROWSEFOLDER:"allowBrowseFolder",ALLOWBROWSEATTRIBUTE:"allowBrowseAttribute",ALLOWBROWSEHIERARCHY:"allowBrowseHierarchy",ROOTLESSNODETEXT:"rootlessNodeText",EMPTYTREETEXT:"emptyTreeText",COLLECTFORMS:"collectForms",YEAR:"year",MONTH:"month",DAY:"day",SEARCHREQUIRED:"searchRequired",SEARCHREQUIREDTEXT:"searchRequiredText"};mstr.$W=mstr.Props.Widget;mstr.Props.Cache={CACHETYPE:"cacheType"};mstr.Props.Log={LEVEL:"level"};mstr.Props.MSTRFolderItem={DSSID:"dssid",NAME:"n",DISPLAYNAME:"dispn",DESC:"desc",ICON:"tp",TYPE:"otp",SUBTYPE:"dsstp",DSSTYPE:"dsstp",DATATYPE:"dtp",DSSFORMS:"dssforms",LOCKED:"locked",ISBROWSE:"isBrowse"};mstr.Enum={};mstr.Enum.REGEXP_RESERVED_CHARS={"$":true,"(":true,")":true,"*":true,"+":true,".":true,"?":true,"[":true,"\\":true,"]":true,"^":true,"{":true,"|":true,"}":true};mstr.Enum.Widget={};mstr.Enum.Widget.PROPTYPE={SCALAR:0,LIST:1,HASH:2};mstr.Enum.Widget.UPDATES={DEFAULT:1,ENABLED:2,STATE:4,VALUE:8,VALUESSUPPORTED:16,CUSTOM:32};mstr.Enum.Widget.STATE={HOVER:1,SELECTED:2};mstr.Enum.Widget.READYSTATE={IDLE:1,WAITING:3,ERROR:4,SUCCESS:5,CANCELLED:6,TIMEOUT:7};mstr.Enum.Widget.RENDERSTATUS={NOT_STARTED:0,IN_PROGRESS:1,RENDEREDSELF:2,RENDEREDCHILDREN:3,RENDEREDALL:4,ERROR:5};mstr.Enum.Widget.POPORIENTATION={CONTEXTMENU:0,VERTICAL:1};mstr.Enum.Widget.NOTIFIES={NONE:0,SELF:1,LISTENERS:2,CHILDREN:4,PARENT:8};mstr.Enum.Widget.AUTOWRITEBACK={OFF:0,ONBLUR:1,ONKEYPRESS:2};mstr.Enum.Widget.AUTOFORMAT={OFF:0,ONBLUR:1,ONKEYPRESS:2,USEDEFAULT:3};mstr.Enum.Widget.AUTOVALIDATE={OFF:0,ONBLUR:1,ONKEYPRESS:2,USEDEFAULT:3};mstr.Enum.MSTRFolderItem={};mstr.Enum.MSTRFolderItem.TYPE={FILTER:1,TEMPLATE:2,REPORTDEFINITION:3,METRIC:4,AGGMETRIC:7,FOLDER:8,PROMPT:10,ATTRIBUTE:12,FACT:13,DIMENSION:14,HIERARCHY:14,ELEMENT:1048576,ATTRIBUTEFORM:21,CONSOLIDATION:47,CONSOLIDATIONELEMENT:48,PROJECT:32,DIMTYUNIT:1048578,DIMTYUNITATTRIBUTE:1048581,DIMTYUNITDIMENSION:1048582};mstr.Enum.MSTRFolderItem.ICON={FOLDER:"f",FOLDERSHORTCUT:"f_sc",ATTRIBUTE:"a",LOCKEDATTRIBUTE:"la",ATTRIBUTEFORM:"fo",TEMPLATE:"t",FILTER:"fi",METRIC:"m",ELEMENT:"ae",HIERARCHY:"hi",PROJECT:"p"};mstr.Enum.DataForm={};mstr.Enum.DataForm.DATATYPE={NUMERIC:1,STRING:2,DATE:3,INTEGER:4,IMAGE:5,HTML:6};mstr.Enum.Textbox={};mstr.Enum.Textbox.DATATYPE={UNKNOWN:0,STRING:1,NUMERIC:2,INTEGER:4,DATE:3};mstr.Enum.Column={};mstr.Enum.Column.SHOWAS={TEXT:0,ICON:1};mstr.Enum.Request={};mstr.Enum.Log={};mstr.Enum.Log.LEVEL={TRACE:8,WARNING:2,ERROR:1};mstr.Enum.Log.CATEGORY={CREATE:"Init",RENDER:"Render",NOTIFY:"Notify",CACHE:"Cache",LAYOUT:"Layout"};mstr.Enum.Response={};mstr.Enum.Response.STATUSCODE={SUCCESS:200};mstr.Enum.Validation={};mstr.Enum.Validation.STATUSCODE={VALID:0,INVALID_DATATYPE:1,EXCEEDS_MIN_VALUE:2,EXCEEDS_MAX_VALUE:3,EXCEEDS_MIN_LENGTH:4,EXCEEDS_MAX_LENGTH:5,EXCEEDS_MIN_COUNT:6,EXCEEDS_MAX_COUNT:7,INVALID_ANSWERS:8,NO_INPUT:9,NO_PERSONAL_ANSWER_NAME:10,INCOMPLETE_CONDITION:11,TRUNCATED:12,INCOMPLETE_CONDITION_ON_AUTO_NODE:13,INVALID_PERSONAL_ANSWER_NAME:14,DUPLICATED:15,INVALID:999};mstr.Enum.Event={};mstr.Enum.Event.NAME={ANY:"*",LOAD:"load",RESIZE:"resize",AFTERRESIZE:"afterresize",CHANGEELEMENT:"changeelement",CHANGEVISIBLE:"changevisible",CHANGEENABLED:"changeenabled",CHANGESTATE:"changestate",CHANGEMESSAGE:"changemessage",CHANGEHEIGHT:"changeheight",CHANGEWIDTH:"changewidth",CHANGEFOLDER:"changefolder",CHANGEFOLDERSIZE:"changefoldersize",CHANGEBLOCKBEGIN:"changeblockbegin",CHANGEBLOCKCOUNT:"changeblockcount",CHANGEPATHTREE:"changepathtree",CHANGELISTITEMS:"changelistitems",ADDLISTITEMS:"addlistitems",REMOVELISTITEMS:"removelistitems",CHANGESELECTEDINDICES:"changeselectedindices",ADDSELECTEDINDICES:"addselectedindices",REMOVESELECTEDINDICES:"removeselectedindices",CHANGELEADSELECTEDINDEX:"changeleadselectedindex",CHANGEROOTNODE:"changerootnode",ADDTREENODES:"addtreenodes",REMOVETREENODES:"removetreenodes",CHANGENODEVALUE:"changetreenodevalue",ADDCONDITION:"addcondition",EDITNODE:"editnode",CHANGESELECTEDPATHS:"changeselectedpaths",ADDSELECTEDPATHS:"addselectedpaths",REMOVESELECTEDPATHS:"removeselectedpaths",CHANGELEADSELECTEDPATH:"changeleadselectedpath",CHANGEEDITPATH:"changeeditpath",CHANGEDATAFORMS:"changedataforms",CHANGEVALUE:"changevalue",CHANGEAVAILABLEVALUES:"changeavailablevalues",CHANGERENDERSTATUS:"changerenderstatus",MOUSEDOWNLISTITEM:"mousedownlistitem",CLICKLISTITEM:"dblclicklistitem",DBLCLICKLISTITEM:"dblclicklistitem",BEFOREEXEC:"beforeexec",MOUSEDOWNTREENODE:"mousedowntreenode",CLICKTREENODE:"dblclicktreenode",DBLCLICKTREENODE:"dblclicktreenode",POPUPOPEN:"open",POPUPCLOSE:"close",EDITOROK:"ok",EDITORAPPLY:"apply",EDITORCANCEL:"cancel",EDITORSAVE:"save",ADDREQUEST:"addrequest",REMOVEREQUEST:"removerequest",CHANGEREADYSTATE:"changereadystate",CHANGEPAGERANGE:"changepagerange",CHANGEPAGE:"changepage",LOGIN:"login",TOGGLETOC:"toggletoc"};mstr.$Evt=mstr.Enum.Event.NAME;mstr.Enum.VIEWMEDIA={STATIC:1,INTERACTIVE:2,EDITABLE:4,FLASH:8,EXPORT_EXCEL:16,EXPORT_PDF:32,EXPORT_HTML:64,EXPORT_FLASH:128};mstr.Enum.Widget.COMMANDID={ADD:"Add",ADDALL:"AddAll",REMOVE:"Remove",REMOVEALL:"RemoveAll",CLEAR:"Clear",MOVEUP:"MoveUp",MOVEDOWN:"MoveDown",SELECTNEXT:"SelectNext",FETCHFIRST:"FetchFirst",FETCHPREVIOUS:"FetchPrevious",FETCHNEXT:"FetchNext",FETCHLAST:"FetchLast",FETCHBLOCK:"FetchBlock",BROWSEPATH:"BrowsePath",UPFOLDER:"BrowseParent",SEARCH:"Search",SEARCHFOLDERS:"SearchFolders",SEARCHELEMENTS:"SearchElements",BROWSE:"Browse",BROWSEFORMS:"BrowseForms",BROWSEFOLDER:"BrowseFolder",BROWSEATTRIBUTE:"BrowseAttribute",BROWSEHIERARCHYITEM:"BrowseHierarchyItem",CANCELREQUEST:"CancelRequest",OK:"OK",CANCEL:"Cancel",SAVE:"Save",OPEN:"Open",CLOSE:"Close",GROUP:"Group",UNGROUP:"Ungroup",DELETENODES:"DeleteNodes",SWAPWITHPREVIOUS:"SwapWithPrevious",SWAPWITHNEXT:"SwapWithNext",ADDCONDITION:"AddCondition"};mstr.$Cmd=mstr.Enum.Widget.COMMANDID;mstr.Settings={};mstr.Settings.Http={IMAGEPATH:"../style/mstr/images/",CACHE:true};mstr.Settings.Log={LEVEL:mstr.Enum.Log.LEVEL.TRACE};mstr.Settings.Locale={ID:1033,DECIMALSEP:".",THOUSANDSEP:",",LISTSEP:",",DATEINPUTFORMATS:[],TIMEINPUTFORMATS:[],NUMBERINPUTFORMATS:[],INTEGERINPUTFORMATS:[],DATEOUTPUTFORMAT:"M/d/yyyy",TIMEOUTPUTFORMAT:"h:mm:ss a",TWODIGITYEARSTART:2029,MONTHNAME_SHORT:[],MONTHNAME_FULL:[],AM_NAME:"AM",PM_NAME:"PM"};mstr.Settings.Hints={NUMBER:"##.##",INTEGER:"##",STRING:null,DATE:mstr.Settings.Locale.DATEOUTPUTFORMAT};mstr.Settings.Scheme={DEFAULT_BORDEROLOR:null,DEFAULT_BGCOLOR:null,FLAT_BORDERCOLOR:"#c0c0c0",FLAT_BGCOLOR:"#d4d0c8",HOVER_BORDERCOLOR:"#0A246A",HOVER_BGCOLOR:"#B6BDD2",SELECTED_BORDERCOLOR:"#0A246A",SELECTED_BGCOLOR:"#D4D5D8",SELECTED_HOVER_BGCOLOR:"#8592B5",LARGEPREVIEWS:{pkr1:"graphpkr1",pkr2:"graphpkr2",pkr4:"graphpkr4",pkr8:"graphpkr8",pkr16:"graphpkr16",pkr32:"graphpkr32",pkr64:"graphpkr64",pkr128:"graphpkr128",pkr256:"graphpkr256",pkr512:"graphpkr512",pkr1024:"graphpkr1024",pkr2048:"graphpkr2048",pkr4096:"graphpkr4096",pkr8192:"graphpkr8192",pkr16384:"graphpkr16384",pkr32768:"graphpkr32768",pkr65536:"graphpkr65536",pkr131072:"graphpkr131072",pkr262144:"graphpkr262144",pkr524288:"graphpkr524288",pkr1048576:"graphpkr1048576",pkr2097152:"graphpkr2097152",pkr4194304:"graphpkr4194304",pkr8388608:"graphpkr8388608",pkr16777216:"graphpkr16777216"}};mstr.Settings.Render={REPAINT_EVERY_CHILDCOUNT:10};mstr.Enum.Nodes={};mstr.Enum.Nodes.DATATYPE={UNKNOWN:-1,INTEGER:1,UNSIGNED:2,NUMERIC:3,DECIMAL:4,REAL:5,DOUBLE:6,FLOAT:7,CHAR:8,VARCHAR:9,LONGVARCHAR:10,BINARY:11,VARBIN:12,LONGVARBIN:13,DATE:14,TIME:15,TIMESTAMP:16,SHORT:21,LONG:22,MBCHAR:23,BOOLEAN:24,PATTERN:25,BIGDECIMAL:30};mstr.$debugging=true;mstr.$debug=function(str){if(mstr.$debugging){mstr.$debugging=window.confirm(str);}};mstr.$debugobj=function(obj){var out=[];if(obj){for(var mem in obj){out.push(mem+" = "+obj[mem]);}}return out.join("\n");};mstr.timers={};mstr.controllers={};mstr.controllers.Factory=(function(){var F={};F.PATHDELIM="/";F._objs={};F._IDCOUNTER=1;F.add=function F_add(obj){if(obj){var id=this.validateId(obj);this._objs[id]=obj;return id;}return null;};F.obj=function F_obj(id){if(id in this._objs){return this._objs[id];}if(typeof (microstrategy)!="undefined"){return microstrategy.bone(id);}return null;};F.getPath=function F_getPath(p,contextObj){var v;var match=(p!=null)&&p.match(/^\"(.*)\"$/);if(match){v=match[1];if(String(parseInt(v))==v){v=parseInt(v);}return v;}var obj=contextObj;if(obj&&p&&p.split){var ps=p.split(this.PATHDELIM);for(var i=0,len=ps.length;i<len;i++){var n=ps[i];var matchId=n.match(/^\#(.*)/);v=matchId&&this.obj(matchId[1])||null;if(v==null){v=obj[n];}if(v==undefined){v=obj.props&&obj.props[n];}if(v==undefined){v=obj.get&&obj.get(n);}if(v==undefined){var match=n.match(/(.+)\((.*?)\)/);if(match){var methodName,argString;methodName=match[1];if(obj[methodName]){var args;args=this.resolveArgsString(match[2],contextObj);v=obj[methodName].apply(obj,args||[]);}}}obj=v;if(obj==null){break;}}}return obj;};F.resolveArgsString=function F_rsvArgsStr(str,contextObj){var args=[];if(str==null||str==""){return args;}str=str.replace(/\./gm,"/");var json=str.match(/\{(.*)\}/);if(json){var hash=args[0]={};var jsonPairs=(json[1].split(","))||[];var nameValuePair;for(var i=0,len=jsonPairs.length;i<len;i++){nameValuePair=jsonPairs[i].split(":");if(nameValuePair[0]==""||nameValuePair.length<2){continue;}hash[nameValuePair[0]]=this.getPath(nameValuePair[1],contextObj);}}else{var paths=str.split(",");for(var i=0,len=paths.length;i<len;i++){args[i]=this.getPath(paths[i],contextObj);}}return args;};F.setPath=function F_setPath(p,contextObj,v,bSilent){var i=p.lastIndexOf(this.PATHDELIM);if(i>0){contextObj=this.getPath(p.substring(0,i),contextObj);}if(contextObj){p=p.substr(i+1);if(String(parseInt(p))==p){p=parseInt(p);}if(bSilent){if(contextObj.props){contextObj.props[p]=v;}else{if(contextObj.set){contextObj.set(p,v);}else{contextObj[p]=v;}}}else{if(contextObj.set){contextObj.set(p,v);}else{if(contextObj.props){contextObj.props[p]=v;}else{contextObj[p]=v;}}}}};F.create=function F_create(json){var sc=json&&json[mstr.$W.SCRIPTCLASS];if(sc){return eval("new "+sc+"(json)");}return null;};F.safeget=function F_safeget(obj,p){if(!obj||p==null){return undefined;}var v=obj[p];if(v==undefined){v=obj.props&&obj.props[p];}if(v==undefined){v=obj.get&&obj.get(p);}return v;};F.safeset=function F_safeset(obj,p,v){if(!obj||p==null){return ;}if(obj.set){return obj.set(p,v);}else{if(obj.props){obj.props[p]=v;}else{obj[p]=v;}}};F.registerElement=function F_registerElement(el,hWin,json){this.registerWindow(hWin);if(el){if(!json){var s=el.value;if(s){eval("json = "+s);}}var obj=this.registerJSON(json,el.ownerDocument);if(obj){obj.props&&(obj.props[mstr.$W.ELEMENT]=el);obj.init&&obj.init();}return obj;}};F.registerWindow=function F_registerWindow(hWin){var doc=hWin&&hWin.document;if(!doc||doc.mstrRegistered){return ;}var fg=function(e){try{var evt=new mstr.lang.Event(e,hWin,hWin.document);mstr.controllers.EventManager.notifyWindowListeners(evt);}catch(localerr){}};var gt=function(e){var t=mstr.$E.target(e,hWin);var tagName=null;if(t&&t.tagName){tagName=t.tagName.toLowerCase();}return tagName;};var fo=function(e){var tagName=gt(e);return(tagName=="object"||tagName=="embed"||tagName=="textarea"||tagName=="select"||tagName=="input");};var fImg=function(e,b){if(gt(e)=="img"||(mstr.$E.target(e,hWin)&&mstr.$E.target(e,hWin).getAttribute&&mstr.$E.target(e,hWin).getAttribute("dg"))){doc.dragging=b;}};var fu=function(e){fImg(e,false);fg(e);};var fd=function(e){fImg(e,true);fg(e);if(mstr.utils.ISFF){return fo(e);}};var fm=function(e){fImg(e,true);fg(e);if(mstr.utils.ISIE4){return fo(e)?true:!doc.dragging;}};doc.onmousedown=mstr.utils.Objects.compositeFunc(doc.onmousedown,fd);doc.onmouseup=mstr.utils.Objects.compositeFunc(doc.onmouseup,fu);doc.onmousemove=mstr.utils.Objects.compositeFunc(doc.onmousemove,fm);var el=mstr.utils.ISW3C?hWin:doc.body;el.onunload=mstr.utils.Objects.compositeFunc(el.onunload,fg);el.onresize=mstr.utils.Objects.compositeFunc(el.onresize,fg);if(mstr.utils.ISIE6){el=doc.documentElement;el.onscroll=mstr.utils.Objects.compositeFunc(el.onscroll,fg);}else{el.onscroll=mstr.utils.Objects.compositeFunc(el.onscroll,fg);}doc.mstrRegistered=true;};F.registerJSON=function F_registerJSON(json,doc){var obj=this.create(json);if(obj){var id=this.add(obj);if((id!=null)&&obj.props){if(doc&&obj.props){obj.props[mstr.$W.DOCUMENT]=doc;}if(obj.isHTTPProcessor){mstr.http.Governor.addProc(obj);}}}return obj;};F.nextFreeId=function F_nextFreeId(){return"id_mstr"+this._IDCOUNTER++;};F.validateId=function F_validateId(obj){if(!obj){return ;}var id=obj.props?obj.props[mstr.$W.ID]:obj[mstr.$W.ID];if(id==null){id=this.nextFreeId();if(obj.props){obj.props[mstr.$W.ID]=id;}else{obj[mstr.$W.ID]=id;this._objs[id]=obj;}}return id;};F.plugin=function F_plugin(obj,plugin){if(!obj||!plugin){return ;}for(var n in plugin){if(n!="init"){obj[n]=plugin[n];}}if(plugin.init){plugin.init.apply(obj,[]);}};return F;})();mstr.$obj=function(id){return mstr.controllers.Factory.obj(id);};mstr.$path=function(p,contextObj){return mstr.controllers.Factory.getPath(p,contextObj);};mstr.$register=function(id,hWin){if(!hWin){hWin=window;}var retVal=mstr.controllers.Factory.registerElement(hWin.document.getElementById(id),hWin);return retVal;};mstr.$deferRegister=function(textareaId,hWin){if(!mstr.deferredRegisters){mstr.deferredRegisters=[];}mstr.deferredRegisters.push({textareaId:textareaId,hWin:hWin});if(!window.mstrDefersRegisters){window.mstrDefersRegisters=true;if(typeof (window.onload)=="function"){var f=window.onload;window.onload=function(e){f&&f();mstr.$doDeferredRegisters();};}else{window.onload=function(){mstr.$doDeferredRegisters();};}}};mstr.$doDeferredRegisters=function(){var arr=mstr.deferredRegisters,info;if(!arr||!arr.shift){return ;}while(info=arr.shift()){mstr.$register(info.textareaId,info.hWin);}};mstr.controllers.EventManager=(function(){var E={};E._listeners={};E.attachEventListener=function E_attachEventListener(listener,provider,eventName,callbackMethodName){if(!listener||!provider||!eventName||!callbackMethodName){return ;}this.attachEventListenerByIds(mstr.controllers.Factory.validateId(listener),mstr.controllers.Factory.validateId(provider),eventName,callbackMethodName);};E.attachEventListenerByPath=function E_attachEventListenerByPath(listener,providerPath,eventName,callbackMethodName){var provider=mstr.controllers.Factory.getPath(providerPath,listener);this.attachEventListener(listener,provider,eventName,callbackMethodName);};E.attachEventListenerByIds=function E_attachEventListenerByIds(listenerId,providerId,eventName,callbackMethodName){if(!this._listeners[eventName]){this._listeners[eventName]={};}if(!this._listeners[eventName][providerId]){this._listeners[eventName][providerId]={};}this._listeners[eventName][providerId][listenerId]=callbackMethodName;};E.attachWindowEventListener=function E_attachWindowEventListener(listener,eventName,callbackMethodName){this.attachEventListenerByIds(mstr.controllers.Factory.validateId(listener),"win",eventName,callbackMethodName);};E.detachEventListener=function E_detachEventListener(listener,provider,eventName){if(!eventName){return ;}var idL=listener&&listener.props&&listener.props.id;if(idL==null){return ;}var idP=provider&&provider.props&&provider.props.id;if(idP==null){return ;}this.detachEventListenerById(idL,idP,eventName);};E.detachEventListenerById=function E_detachEventListenerById(listenerId,providerId,eventName){if(this._listeners[eventName]&&this._listeners[eventName][providerId]){delete this._listeners[eventName][providerId][listenerId];}};E.detachWindowEventListenerById=function E_detachWindowEventListenerById(listenerId,eventName){if(!eventName){return ;}this.detachEventListenerById(listenerId,"win",eventName);};E.detachWindowEventListener=function E_detachWindowEventListener(listener,eventName){if(!eventName){return ;}var idL=listener&&listener.props&&listener.props.id;if(idL==null){return ;}this.detachEventListenerById(idL,"win",eventName);};E.notifyListeners=function E_notifyListeners(provider,evt){this.notifyListenersOfId(provider&&provider.props&&provider.props.id,evt);};E.notifyWindowListeners=function E_notifyWindowListeners(evt){this.notifyListenersOfId("win",evt);};E.notifyListenersOfId=function E_notifyListenersOfId(providerId,evt){var l=this.getListeners(providerId,evt&&evt.name);if(l){for(var id in l){var obj=mstr.$obj(id);if(obj){var callbackMethodName=l[id];obj[callbackMethodName]&&obj[callbackMethodName](evt);}}}};E.getListeners=function E_getListeners(providerId,eventName){if((providerId!=null)&&(eventName!=null)){return this._listeners[eventName]&&this._listeners[eventName][providerId];}};return E;})();mstr.controllers.ModalEditors=(function(){var ME={};ME._currentModalEditor=new Array();ME.add=function(elem){this._currentModalEditor[this._currentModalEditor.length]=elem.props.id;return this._currentModalEditor;};ME.remove=function(elem){for(var i=0;i<this._currentModalEditor.length;i++){if(this._currentModalEditor[i]==elem.props.id){this._currentModalEditor.length=i;break;}}return this._currentModalEditor;};ME.size=function(){return this._currentModalEditor.length;};return ME;})();mstr.utils={};mstr.utils.ISOPERA=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Opera")>-1));mstr.utils.ISIE4=!!(self&&self.document&&self.document.all&&!mstr.utils.ISOPERA);mstr.utils.ISIE6=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("MSIE 6.0")>-1));mstr.utils.ISIE7=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("MSIE 7.0")>-1));mstr.utils.ISIE8=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("MSIE 8.0")>-1)&&document.documentMode&&document.documentMode==8);mstr.utils.ISANYIE8=!!document.documentMode;mstr.utils.ISFF2=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Firefox/2")>-1));mstr.utils.ISFF3=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Firefox/3")>-1));mstr.utils.ISFF3_0=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Firefox/3.0")>-1));mstr.utils.ISFF3_5=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Firefox/3.5")>-1));mstr.utils.ISFF=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Firefox/")>-1));mstr.utils.ISSAFARI=!!(navigator&&navigator.userAgent&&(navigator.userAgent.indexOf("Safari")>-1));mstr.utils.ISSAFARI3=mstr.utils.ISSAFARI&&!!(navigator.userAgent.indexOf("Version/3")>-1);mstr.utils.ISW3C=!!(self&&self.document&&self.document.getElementById&&(!mstr.utils.ISIE4||mstr.utils.ISIE8));mstr.utils.Objects=(function(){var O={};O.extendsClass=function O_extendsClass(subClass,baseClass){subClass.prototype=new baseClass();subClass.prototype.constructor=subClass;};O.compositeFunc=function Objects_compositeFunc(f1,f2){if(!f1&&!f2){return null;}if(!f1){return f2;}if(!f2){return f1;}return(function(){var retVal1=f1(arguments[0],arguments[1],arguments[2]);var retVal2=f2(arguments[0],arguments[1],arguments[2]);return retVal1&&retVal2;});};O.findParentPopup=function Objects_findParentPopup(obj,bInclusive){if(!obj){return null;}var p=bInclusive?obj:obj.get&&obj.get("parent");while(p&&p.get){if(p.get("opener")){return p;}p=p.get("parent");}return null;};return O;})();mstr.$O=mstr.utils.Objects;mstr.utils.LayoutRenderer=(function(){var L={};L.render=function L_render(json,layoutXml){if(!json||!layoutXml){return ;}var result={};result.html=this._generateHTMLStr(json,layoutXml);var result2=this._markRenderTokens(result.html);result.html=result2.html;result.childPaths=result2.childPaths;if(result.html){var doc=json[mstr.$W.DOCUMENT]||(json[mstr.$W.ELEMENT]&&json[mstr.$W.ELEMENT].ownerDocument);result.el=this._generateHTMLDom(doc,result.html);}result.renderStatus=result.el?mstr.Enum.Widget.RENDERSTATUS.RENDEREDSELF:mstr.Enum.Widget.RENDERSTATUS.ERROR;return result;};L._markRenderTokens=function L_markRenderTokens(sXML){var paths=[];var REGEXP=new RegExp('<mstrlayout:wRender name=\\"([^"]+)\\"[^>]*>(.*?)</mstrlayout:wRender>',"gm");var replaceFunc=function($0,$1,$2){var id=mstr.controllers.Factory.nextFreeId();paths.push({name:$1,id:id});return'<span class="mstrPlaceholder" name="'+$1+'" id="'+id+'">'+$2+"</span>";};var s=sXML.replace(REGEXP,replaceFunc);return{html:s,childPaths:paths};};L._generateHTMLStr=function L_generateHTMLStr(json,sXML){return this._replaceIterationTokens(json,this._replaceAttributeTokens(json,sXML));};L._replaceAttributeTokens=function L_rATokens(json,sXML){var htmlInfo=this._getLayoutHTMLInfo(json.layoutClass,sXML);if(!htmlInfo||!htmlInfo.arr){return ;}var arr=htmlInfo.arr;var tokens=htmlInfo.tokens;var pathCache={};for(var i=0,len=mstr.$A.len(tokens);i<len;i++){var path=tokens[i].path;var v=pathCache[path];if(v==null){if(path.indexOf(mstr.controllers.Factory.PATHDELIM)<0){v=json[path];}else{v=mstr.controllers.Factory.getPath(path,json);}if(v==null){v="";}pathCache[path]=v;}arr[tokens[i].index]=v;}return arr.join("");};L.replaceLayoutHandlerTokens=function L_replaceLayoutHandlerTokens(hInfo,view){var handlers=hInfo&&hInfo.info,seq=hInfo&&hInfo.sequence;if(!handlers||!seq||!view){return hInfo;}var REGEXP=/\-\-([^\-]*)\-\-/m;var KEYS_TO_UPDATE=["name","prop","eventName"];var matches,pathCache={},path,v,hInfoClone,infoToUpdate,n,nEncoded,nResolved;for(var j=0,lenSeq=mstr.$A.len(seq);j<lenSeq;j++){n=seq[j];if(n==null){continue;}nEncoded=n.replace(/\-\-/g,"_doubledash_");if(!handlers[nEncoded]||!handlers[nEncoded].prop){continue;}if(matches=handlers[nEncoded].prop.match(REGEXP)){if(!hInfoClone){hInfoClone={info:mstr.$H.clone(hInfo.info),sequence:[].concat(hInfo.sequence)};}path=matches[1];v=pathCache[path];if(v==null){if(path.indexOf(mstr.controllers.Factory.PATHDELIM)<0){v=view.get(path);}else{v=mstr.controllers.Factory.getPath(path,view);}if(v==null){v="";}pathCache[path]=v;}infoToUpdate=mstr.$H.clone(hInfoClone.info[nEncoded]);for(var i=0,len=KEYS_TO_UPDATE.length;i<len;i++){infoToUpdate[KEYS_TO_UPDATE[i]]=infoToUpdate[KEYS_TO_UPDATE[i]].replace("--"+path+"--",v);}nResolved=n.replace("--"+path+"--",v);hInfoClone.info[nResolved]=infoToUpdate;delete hInfoClone.info[nEncoded];hInfoClone.sequence[j]=nResolved;}}return hInfoClone||hInfo;};L._getLayoutHTMLInfo=function L_getLHTMLInfo(layoutClassName,sXML){var cacheKey=layoutClassName.replace(/\./g,"_");var htmlInfo=this.layoutHTMLCache&&this.layoutHTMLCache[cacheKey];if(!htmlInfo){htmlInfo=this._parseLayoutHTML(sXML);if(!this.layoutHTMLCache){this.layoutHTMLCache={};}this.layoutHTMLCache[cacheKey]=htmlInfo;}return htmlInfo;};L._parseLayoutHTML=function L_parseLayoutHTML(sXML){sXML=this._trimLayoutNodes(sXML);var REGEXP=/\{\@([^}]*)\}/m;var html=[];var tokens=[];var counter=0;var matches;while(matches=sXML.match(REGEXP)){html[counter]=sXML.substring(0,matches.index);tokens.push({path:matches[1],index:counter+1});counter+=2;sXML=sXML.substr(matches.index+matches[0].length);}html[counter]=sXML;return{arr:html,tokens:tokens};};L._replaceAttributeTokensOrig=function L_rATokensOrig(json,sXML){var pathCache={};var replaceFunc=function($0,$1){var v=pathCache[$1];if(v==null){if($1.indexOf(mstr.controllers.Factory.PATHDELIM)<0){v=json[$1];}else{var v=mstr.controllers.Factory.getPath($1,json);}if(v==null){v="";}pathCache[$1]=v;}return v;};return this._trimLayoutNodes(sXML).replace(/\{\@([^}]*)\}/gm,replaceFunc);};L._replaceIterationTokens=function L_rITokens(json,sXML){var REGEXP=new RegExp('<mstrlayout:wIterate name="([^"]+)" id="([^"]+)"[^>]*>(.*?)</mstrlayout:wIterate>',"m");var out=[];var matches;while(matches=sXML.match(REGEXP)){out.push(sXML.substring(0,matches.index));var iteratedXML=this._iterateContent(json,matches[0],matches[1],matches[2],matches[3]);if(iteratedXML){out.push(iteratedXML);}sXML=sXML.substr(matches.index+matches[0].length);}out.push(sXML);return out.join("");};L._iterateContent=function L_iterateContent(json,sXML,name,id,innerHTML){if(!name){return"";}if(!id){id=name+"__#";}if(!innerHTML){innerHTML='<mstrlayout:wRender name="'+id+'"></mstrlayout:wRender>';}var p=mstr.controllers.Factory.getPath(name,json);var len=mstr.$A.len(p);if(len){var REGEXP=new RegExp('<mstrlayout:wRender name="'+id+'"[^>]*>(.*?)</mstrlayout:wRender>',"gm");var iteratedXML=[];for(var i=0;i<len;i++){iteratedXML.push(innerHTML.replace(REGEXP,'<mstrlayout:wRender name="'+name+mstr.controllers.Factory.PATHDELIM+i+'">$1</mstrlayout:wRender>'));}return iteratedXML.join("");}return"";};L._trimLayoutNodes=function L_trimLayoutNodes(sXML){var i=sXML.indexOf(">");return sXML.substring(i+1,sXML.length-20);};L._generateHTMLDom=function L_generateHTMLDom(doc,innerHTML){var elContainer=doc.createElement("span");elContainer.innerHTML=innerHTML;return elContainer;};L.getLayoutHandlers=function L_getLayoutHandlers(layoutClassName,sXML){var cacheKey=layoutClassName.replace(/\./g,"_");var hInfo=this.layoutHandlerCache&&this.layoutHandlerCache[cacheKey];if(!hInfo){hInfo=this._parseLayoutHandlers(sXML);if(!this.layoutHandlerCache){this.layoutHandlerCache={};}this.layoutHandlerCache[cacheKey]=hInfo;}return hInfo;};L._parseLayoutHandlers=function L_parseLayoutHandlers(sXML){var i=sXML.indexOf(">");sXML=sXML.substring(0,i);var handlers={},handlerKey;var seq=[];var matches;while(matches=sXML.match(/([^\s=]+)=\"([^\"]+)\"/m)){var hInfo={};hInfo.name=matches[1];hInfo.str=matches[2];var nameParts=matches[1].split("_");nameParts.shift();hInfo.prop=nameParts.pop();hInfo.method=nameParts.pop();if(hInfo.method=="win"){hInfo.src=hInfo.method;hInfo.eventName=hInfo.prop;}else{hInfo.src=nameParts.pop();hInfo.eventName=[hInfo.method,hInfo.prop].join("_");}handlerKey=hInfo.name.replace(/\--/g,"_doubledash_");handlers[handlerKey]=hInfo;seq.push(hInfo.name);sXML=sXML.substr(matches.index+matches[0].length);}return{info:handlers,sequence:seq};};return L;})();mstr.utils.Animations=(function(){var A={};A._lookup={};A.add=function A_add(aniName,el,info,callback){if(!info||!el){return ;}var id=el.id;if(!id){id=el.id=mstr.controllers.Factory.nextFreeId();}if(!this._lookup[aniName]){this._lookup[aniName]={};}info.id=id;info.el=el;info.callback=callback;this._lookup[aniName][id]=info;return id;};A.remove=function A_remove(aniName,id){if(this._lookup[aniName]){delete this._lookup[aniName][id];}};A.doAnimationRequest=function A_doAnimationRequest(aniName,id){var bContinue=false;if(this["do_animation_"+aniName]){bContinue=this["do_animation_"+aniName](id);}if(!bContinue){this.afterAnimationRequest(aniName,id);}};A.afterAnimationRequest=function A_afterAnimationRequest(aniName,id){var info=this._lookup[aniName]&&this._lookup[aniName][id];if(info&&info.callback){info.callback();}this.remove(aniName,id);};A.isAnimating=function A_isAnimating(el,aniName){return !!(el&&this._lookup[aniName]&&this._lookup[aniName][el.id]);};A.scroll=function A_scroll(el,x,y,steps,callback){if(!el){return false;}steps=parseInt(steps);if(!steps||steps<0){steps=10;}var info={endX:x,endY:y,steps:steps,stepCounter:0};if(x!=null){info.startX=el.scrollLeft;info.stepX=(x-info.startX)/steps;}if(y!=null){info.startY=el.scrollTop;info.stepY=(y-info.startY)/steps;}var id=this.add("scroll",el,info,callback);return this.doAnimationRequest("scroll",id);};A.do_animation_scroll=function A_do_animation_scroll(id){var info=this._lookup.scroll&&this._lookup.scroll[id];if(!info||!info.el){return ;}info.stepCounter++;if(info.endX!=null){info.el.scrollLeft=info.endX-info.stepX*(info.steps-info.stepCounter);}if(info.endY!=null){info.el.scrollTop=info.endY-info.stepY*(info.steps-info.stepCounter);}if(info.stepCounter<info.steps){var timeInterval=100-parseInt(95*Math.sin(Math.PI*info.stepCounter/info.steps));self.setTimeout("mstr.utils.Animations.doAnimationRequest('scroll', '"+id+"')",timeInterval);return true;}return false;};A.resize=function A_resize(el,x,y,steps,callback){if(!el){return false;}steps=parseInt(steps);if(!steps||steps<0){steps=10;}var info={endX:x,endY:y,steps:steps,stepCounter:0};if(x!=null){info.startX=el.offsetWidth;info.stepX=(x-info.startX)/steps;}if(y!=null){info.startY=el.offsetHeight;info.stepY=(y-info.startY)/steps;}var id=this.add("resize",el,info,callback);return this.doAnimationRequest("resize",id);};A.do_animation_resize=function A_do_animation_resize(id){var info=this._lookup.resize&&this._lookup.resize[id];if(!info||!info.el){return ;}info.stepCounter++;if(info.endX!=null){info.el.style.width=(info.endX-info.stepX*(info.steps-info.stepCounter))+"px";}if(info.endY!=null){info.el.style.height=(info.endY-info.stepY*(info.steps-info.stepCounter))+"px";}if(info.stepCounter<info.steps){var timeInterval=100-parseInt(95*Math.sin(Math.PI*info.stepCounter/info.steps));self.setTimeout("mstr.utils.Animations.doAnimationRequest('resize', '"+id+"')",timeInterval);return true;}return false;};A.alpha=function A_alpha(el,opStart,opStop,steps,callback){if(!el){return false;}steps=parseInt(steps);if(!steps||steps<0){steps=15;}var info={opStart:opStart,opStop:opStop,steps:steps,opDelta:(opStop-opStart)/steps,stepCounter:0};var id=this.add("alpha",el,info,callback);return this.doAnimationRequest("alpha",id);};A.do_animation_alpha=function A_do_animation_alpha(id){var info=this._lookup.alpha&&this._lookup.alpha[id];if(!info||!info.el){return ;}info.stepCounter++;var op=info.opStop-info.opDelta*(info.steps-info.stepCounter);if(mstr.utils.ISIE4){info.el.style.filter="progid:DXImageTransform.Microsoft.Alpha(opacity="+op+")";}else{info.el.style.MozOpacity=op/100;}if(info.stepCounter<info.steps){var timeInterval=100-parseInt(95*Math.sin(Math.PI*info.stepCounter/info.steps));self.setTimeout("mstr.utils.Animations.doAnimationRequest('alpha', '"+id+"')",timeInterval);return true;}return false;};A.move=function A_move(el,x,y,steps,callback){if(!el){return false;}steps=parseInt(steps);if(!steps||steps<0){steps=10;}var info={endX:x,endY:y,steps:steps,stepCounter:0};if(x!=null&&!isNaN(x)){info.startX=mstr.utils.BoxModel.getElementLeft(el);info.stepX=(x-info.startX)/steps;}if(y!=null&&!isNaN(y)){info.startY=mstr.utils.BoxModel.getElementTop(el);info.stepY=(y-info.startY)/steps;}var id=this.add("move",el,info,callback);return this.doAnimationRequest("move",id);};A.do_animation_move=function A_do_animation_move(id){var info=this._lookup.move&&this._lookup.move[id];if(!info||!info.el){return ;}info.stepCounter++;if(info.endX!=null){info.el.style.left=(info.endX-info.stepX*(info.steps-info.stepCounter))+"px";}if(info.endY!=null){info.el.style.top=(info.endY-info.stepY*(info.steps-info.stepCounter))+"px";}if(info.stepCounter<info.steps){var timeInterval=100-parseInt(95*Math.sin(Math.PI*info.stepCounter/info.steps));self.setTimeout("mstr.utils.Animations.doAnimationRequest('move', '"+id+"')",timeInterval);return true;}return false;};return A;})();mstr.utils.BoxModel=(function(){var BM={};BM.getBox=function BM_getBox(el){var box={};box.height=mstr.utils.BoxModel.getElementOuterHeight(el);box.width=mstr.utils.BoxModel.getElementOuterWidth(el);box.left=mstr.utils.BoxModel.getElementSumOffsetLeft(el);box.right=box.left+box.width;box.top=mstr.utils.BoxModel.getElementSumOffsetTop(el);box.bottom=box.top+box.height;return box;};BM.getElementOuterWidth=function BM_getElementOuterWidth(el){return this.getElementDimension(el,"offsetWidth");};BM.getElementOuterHeight=function BM_getElementOuterHeight(el){var h=this.getElementDimension(el,"offsetHeight");if(mstr.utils.ISFF&&!h&&el&&el.nodeName&&(el.nodeName.toLowerCase()=="span")&&mstr.utils.CSS.getStyleValue(el,"display")!="block"){var childNodes=el.childNodes;var hChild=0;for(var i=0;i<childNodes.length;i++){hChild=this.getElementDimension(childNodes[i],"offsetHeight");h=Math.max(h,hChild);}}return h;};BM.getElementInnerWidth=function BM_getElementInnerWidth(el){return this.getElementDimension(el,"clientWidth");};BM.getElementInnerHeight=function BM_getElementInnerHeight(el){return this.getElementDimension(el,"clientHeight");};BM.getElementDimension=function BM_getElementDimension(el,dimension){var x=parseInt(el&&el[dimension]);return(isNaN(x))?0:x;};BM.getElementTop=function BM_getObjTop(el){if(el){if(mstr.utils.ISIE4){return el.style.pixelTop;}else{if(mstr.utils.ISW3C){return parseInt(document.defaultView.getComputedStyle(el,"").getPropertyValue("top"));}else{return el.top;}}}return 0;};BM.getElementContentWidth=function BM_getElementContentWidth(elem,tagName,attName,attValue){var fontSize=8;if(mstr.utils.ISIE6){fontSize=parseInt(elem.currentStyle.fontSize);}var childWidth=0;var elemWidth=null;var objs=microstrategy.findChildrenWithAtt(elem,tagName,attName,attValue);for(var i in objs){childWidth=(objs[i].innerHTML.length*fontSize);elemWidth=Math.max(elemWidth,childWidth);}return(elemWidth&&elemWidth>0)?elemWidth:null;};BM.getElementLeft=function BM_getElementLeft(el){if(el){if(mstr.utils.ISIE4){return el.style.pixelLeft;}else{if(mstr.utils.ISW3C){return parseInt(document.defaultView.getComputedStyle(el,"").getPropertyValue("left"));}else{return el.left;}}}return 0;};BM.getElementSumOffsetTop=function BM_getElementSumOffsetTop(el,elLimit){var y=0;for(var i=0;el&&(el!=elLimit);i++){y+=el.offsetTop;try{el=el.offsetParent;}catch(e){el=document.body;}}return y;};BM.getElementSumOffsetLeft=function BM_getElementSumOffsetLeft(el,elLimit){var y=0;for(var i=0;el&&(el!=elLimit);i++){y+=el.offsetLeft;try{el=el.offsetParent;}catch(e){el=document.body;}}return y;};BM.getElementSumOffsetLeftAccurately=function BM_getElementSumOffsetLeftAccurately(el,elLimit){return this.getElementSumOffsetLeft(el)-this.getElementSumOffsetLeft(elLimit);};BM.getElementSumOffsetTopAccurately=function BM_getElementSumOffsetTopAccurately(el,elLimit){return this.getElementSumOffsetTop(el)-this.getElementSumOffsetTop(elLimit);};BM.computeDistanceFromAncestor=function BM_computeDistanceFromAncestor(el,elAncestor){var doc=el&&el.ownerDocument,body=doc&&doc.body,html=doc&&doc.documentElement;if(!elAncestor){elAncestor=body;}var dist={};dist.offsetX=0;dist.offsetY=0;dist.scrollX=0;dist.scrollY=0;var elOffset=el;while(elOffset&&(elOffset!=elAncestor)){dist.offsetX+=elOffset.offsetLeft;dist.offsetY+=elOffset.offsetTop;var p=elOffset.offsetParent,bSubtractScroll=true;var s=elOffset.style;if(s.left||s.top||s.position.toLowerCase()=="absolute"){bSubtractScroll=false;}if(bSubtractScroll){var elScroll=elOffset.parentNode;while(elScroll){var x=elScroll.scrollLeft;if(x!=null){dist.scrollX+=x;dist.scrollY+=elScroll.scrollTop;}if(elScroll==p){break;}elScroll=elScroll.parentNode;}}elOffset=p;}dist.left=dist.offsetX-dist.scrollX;dist.top=dist.offsetY-dist.scrollY;dist.right=dist.left+mstr.utils.BoxModel.getElementOuterWidth(el)-1;dist.right=Math.max(dist.right,dist.left);dist.bottom=dist.top+mstr.utils.BoxModel.getElementOuterHeight(el)-1;dist.bottom=Math.max(dist.bottom,dist.top);return dist;};BM.getBrowserWindowHeight=function BM_getBrowserWindowHeight(htmlDoc){if(!htmlDoc){return 0;}if(mstr.utils.ISIE4){return(htmlDoc.documentElement&&htmlDoc.documentElement.clientHeight)||(htmlDoc.body&&htmlDoc.body.clientHeight)||0;}else{var isTrans=htmlDoc.doctype?(String(htmlDoc.doctype.publicId).toLowerCase().indexOf("transitional")>-1):false;return isTrans?htmlDoc.documentElement&&htmlDoc.documentElement.clientHeight:htmlDoc.body&&htmlDoc.body.clientHeight;}};BM.getBrowserWindowWidth=function BM_getBrowserWindowWidth(htmlDoc){if(!htmlDoc){return 0;}if(mstr.utils.ISIE4){return(htmlDoc.documentElement&&htmlDoc.documentElement.clientWidth)||(htmlDoc.body&&htmlDoc.body.clientWidth)||0;}else{var isTrans=htmlDoc.doctype?(String(htmlDoc.doctype.publicId).toLowerCase().indexOf("transitional")>-1):false;return isTrans?htmlDoc.documentElement&&htmlDoc.documentElement.clientWidth:htmlDoc.body&&htmlDoc.body.clientWidth;}};BM.getBrowserWindowRect=function EM_getBrowserWindowRect(htmlDoc){var r={};r.width=this.getBrowserWindowWidth(htmlDoc);r.height=this.getBrowserWindowHeight(htmlDoc);r.scrollX=(htmlDoc&&htmlDoc.documentElement&&htmlDoc.documentElement.scrollLeft)||(htmlDoc&&htmlDoc.body&&htmlDoc.body.scrollLeft)||0;r.scrollY=(htmlDoc&&htmlDoc.documentElement&&htmlDoc.documentElement.scrollTop)||(htmlDoc&&htmlDoc.body&&htmlDoc.body.scrollTop)||0;r.left=r.scrollX;r.right=r.left+r.width;r.top=r.scrollY;r.bottom=r.scrollY+r.height;return r;};BM.isElementWithinScrollWindow=function EM_isElWithinScrollWin(elScrolling,el,bufferSize){if(elScrolling&&el){var elTop=this.getElementSumOffsetTop(el,elScrolling);var elBottom=elTop+el.offsetHeight;var scrollTop=elScrolling.scrollTop;var scrollBottom=scrollTop+elScrolling.clientHeight;return mstr.utils.Math.rangesIntersect({min:elTop,max:elBottom},{min:scrollTop,max:scrollBottom},bufferSize);}return false;};BM.scrollToElement=function BM_scrollToElement(elScrolling,el){if(!elScrolling||!el){return ;}var scrollTop=elScrolling.scrollTop;if(scrollTop==null){return ;}var scrollHeight=this.getElementInnerHeight(elScrolling);if(!scrollHeight){return ;}var elY=el.offsetTop;if(mstr.utils.ISW3C){elY-=elScrolling.offsetTop;}if(scrollTop>elY){elScrolling.scrollTop=elY+1;}else{var h=Math.min(this.getElementOuterHeight(el),scrollHeight);if((elY+h)>(scrollTop+scrollHeight)){var newScrollTop=Math.max(elY+h-scrollHeight,0);elScrolling.scrollTop=newScrollTop;}}};BM.centerElementOnObject=function BM_centerElementOnObject(target,el){if(!el||!target){return ;}el.style.left=Math.max(((this.getElementOuterWidth(target)/2)-(this.getElementOuterWidth(el)/2)),0)+"px";el.style.top=Math.max(((this.getElementOuterHeight(target)/2)-(this.getElementOuterHeight(el)/2)),0)+"px";};BM.fitRectWithinRect=function BM_fitRinR(rect1,rect2){var WINDOW_BUFFER=3,x=rect1.left,y=rect1.top;x=Math.min(x,rect2.width-rect1.width-WINDOW_BUFFER);x=Math.max(WINDOW_BUFFER,x);y=Math.min(y,rect2.height-rect1.height-WINDOW_BUFFER);y=Math.max(WINDOW_BUFFER,y);return{left:x,top:y,width:rect1.width,height:rect1.height};};BM.getClientCoords=function BM_getcc(el){var doc=el.ownerDocument,body=doc&&doc.body,html=doc&&doc.documentElement;if(el==body||el==html){el=null;}return el?this.computeDistanceFromAncestor(el,html):{left:0,top:0};};BM.setClientCoords=function BM_setcc(el,left,top){var sty=el&&el.style;if(!sty){return ;}var coords=this.getClientCoords(el.offsetParent);sty.left=(left-coords.left)+"px";sty.top=(top-coords.top)+"px";};BM.hasScrollbar=function BM_hasScrollbar(el,which){var overflow={x:mstr.utils.CSS.getStyleValue(el,"overflowX"),y:mstr.utils.CSS.getStyleValue(el,"overflowY")};switch(which){case"x":if(overflow.x=="hidden"){return false;}return overflow.x=="scroll"||el.scrollWidth>el.clientWidth;break;case"y":if(overflow.y=="hidden"){return false;}return overflow.y=="scroll"||el.scrollHeight>el.clientHeight;break;case"xy":if(overflow.x=="hidden"||overflow.y=="hidden"){return false;}return overflow.x=="scroll"&&overflow.y=="scroll"||el.scrollHeight>el.clientHeight&&el.scrollWidth>el.clientWidth;break;default:if(overflow.x=="hidden"&&overflow.y=="hidden"){return false;}return overflow.x=="scroll"||overflow.y=="scroll"||el.scrollHeight>el.clientHeight||el.scrollWidth>el.clientWidth;break;}};BM.prototype=new Object();return BM;})();mstr.utils.Dom=(function(){var D={};D.replaceNode=function D_replaceNode(target,replacement){if(!target||!replacement){return ;}if(target.swapNode){target.swapNode(replacement);}else{var p=target.parentNode;if(p){p.insertBefore(replacement,target);p.removeChild(target);}}};D.insertNode=function D_insertNode(el,parent,before){if(el&&parent){if(before){return parent.insertBefore(el,before);}else{return parent.appendChild(el);}}return null;};D.findAncestor=function D_findAncestor(el,propertyName,propertyValue,elLimit,bInclusive){if(typeof (bInclusive)=="undefined"){bInclusive=true;}var el2=(!!bInclusive)?el:el&&el.parentNode;if(propertyValue!=null){propertyValue=String(propertyValue).toLowerCase();while(el2){if(String(el2[propertyName]).toLowerCase()==propertyValue){return el2;}if(el2==elLimit){break;}el2=el2.parentNode;}}else{while(el2){if(el2[propertyName]!=null){return el2;}if(el2==elLimit){break;}el2=el2.parentNode;}}return null;};D.findPositionedAncestor=function D_findPositionedAncestor(el,inclusive){var testFn=function(d){var s=d.style;if(!s){return false;}var pos=s.position.toLowerCase();return((pos=="relative"||pos=="absolute")||s.left||s.top);};if(inclusive&&testFn(el)){return el;}var prop=mstr.utils.ISIE4?"offsetParent":"parentNode";var p=el[prop];while(p){if(testFn(p)){return p;}p=p[prop];}return el.ownerDocument.body;};D.containsElement=function D_containsElement(elContainer,elDescendant,bInclusive){if(elContainer&&elDescendant){if((bInclusive!=false)&&(elContainer==elDescendant)){return true;}if(elDescendant.ownerDocument==elContainer.ownerDocument){var elAnc=elDescendant.parentNode;while(elAnc){if(elAnc==elContainer){return true;}elAnc=elAnc.parentNode;}}}return false;};D.clearChild=function D_clearChild(elParent,childIndex){if(childIndex>-1){return elParent&&elParent.childNodes&&elParent.childNodes[childIndex]&&elParent.removeChild(elParent.childNodes[childIndex]);}};D.clearChilds=function D_clearChilds(elParent){var c=elParent&&elParent.childNodes;for(var i=mstr.$A.len(c);i>0;i--){elParent.removeChild(c[i-1]);}};D.clearBrowserHighlights=function Dom_clearBrowserHighlights(hWin){hWin=hWin||window;if(mstr.utils.ISIE4){if(hWin&&hWin.document&&hWin.document.selection&&(hWin.document.selection.empty)){try{hWin.document.selection.empty();}catch(ex){}}}else{if(mstr.utils.ISW3C){if(hWin&&hWin.getSelection&&hWin.getSelection()){if(hWin.getSelection().removeAllRanges){hWin.getSelection().removeAllRanges();}}}}};D.addFormHiddenInput=function D_addFormHiddenInput(elForm,name,value){if(elForm&&elForm.ownerDocument&&name){var el=elForm.ownerDocument.createElement("input");if(el){el.type="hidden";el.name=String(name);el.value=String(value);elForm.appendChild(el);}}};D.removeFormInputNames=function D_rmvFormInputNames(elForm,strNames){var c=elForm&&elForm.childNodes,len=(c&&c.length)||0,el,n;if(len){var arrNames=strNames&&strNames.split&&strNames.split(","),hash=arrNames&&arrNames.length&&mstr.$A.toHash(arrNames);for(var i=len-1;i>-1;i--){el=c[i];n=el&&el.name;if(n&&hash[n]){elForm.removeChild(el);}}}};D.moveElementTo=function D_moveElementTo(el,iX,iY){if(el!=null){var x=parseInt(iX);var y=parseInt(iY);if(!isNaN(x)&&!isNaN(y)){if(mstr.utils.ISIE4||mstr.utils.ISW3C){el.style.left=x+"px";el.style.top=y+"px";}else{document.layers[el.id].left=x;document.layers[el.id].top=y;}}}};D.insertPopupMask=function D_insertPopupMask(target,container,x,y){if(mstr.utils.ISW3C){return null;}var mask=container.ownerDocument.createElement("iframe");mask.src="../html/Empty.html";mask.style.width=mstr.utils.BoxModel.getElementOuterWidth(target)+"px";mask.style.height=mstr.utils.BoxModel.getElementOuterHeight(target)+"px";if(x){mask.style.left=x;}if(y){mask.style.top=y;}mask.style.display="block";container.appendChild(mask);return mask;};D.setBGIconClass=function D_setBGIconClass(elem,suffix){var className=D.getBGIconClass(suffix);if(className!=null){elem.className=className+" "+elem.className.replace(/mstrBGIcon_[^\s]*/,"");}};D.getBGIconClass=function D_getBGIconClass(suffix){if(!suffix){return null;}return"mstrBGIcon_"+suffix;};return D;})();mstr.$D=mstr.utils.Dom;mstr.utils.Events=(function(){Events.mouseX=0;Events.mouseY=0;Events.target=function Events_target(e,hWin){hWin=hWin||window;if(mstr.utils.ISIE4){return hWin&&hWin.event&&hWin.event.srcElement;}else{if(mstr.utils.ISW3C){return e&&e.target;}}return null;};Events.shiftKey=function Events_shiftKey(e,hWin){hWin=hWin||window;e=e||hWin.event;return !!(e&&e.shiftKey);};Events.ctrlKey=function Events_ctrlKey(e,hWin){hWin=hWin||window;e=e||hWin.event;return !!(e&&e.ctrlKey);};Events.getMousePosition=function Events_getMousePosition(e,hWin){hWin=hWin||window;if(mstr.utils.ISIE4){mstr.utils.Events.mouseX=hWin.event.clientX;mstr.utils.Events.mouseY=hWin.event.clientY;}else{if(mstr.utils.ISW3C){mstr.utils.Events.mouseX=e.pageX;mstr.utils.Events.mouseY=e.pageY;}}return{x:mstr.utils.Events.mouseX,y:mstr.utils.Events.mouseY};};Events.button=function Events_button(e,hWin){hWin=hWin||window;if(mstr.utils.ISIE4){return(hWin&&hWin.event&&hWin.event.button)||1;}else{if(mstr.utils.ISW3C){return(!e||(e.button<2))?1:2;}else{return 1;}}};Events.keyCode=function Events_keyCode(e,hWin){e=e||(hWin&&hWin.event);return e&&e.keyCode;};Events.keyChar=function Events_keyChar(e,hWin){var code=hWin.event?hWin.event.keyCode:(e&&e.which);return code&&String.fromCharCode(code);};Events.cancel=function Events_cancel(e,hWin){if(e&&e.preventDefault){e.preventDefault();}else{e=e||(hWin&&hWin.event);if(e){e.returnValue=false;}}};function Events(){}return Events;})();mstr.$E=mstr.utils.Events;mstr.utils.Math=(function(){var M={};M.isDataTypeNumeric=function M_isDataTypeNumeric(dataType){var en=mstr.Enum.Nodes.DATATYPE;switch(parseInt(dataType)){case en.INTEGER:case en.NUMERIC:case en.DECIMAL:case en.REAL:case en.DOUBLE:case en.FLOAT:return true;default:return false;}};M.isDataTypeBigDecimal=function M_isDataTypeBigDec(dataType){return dataType==mstr.Enum.Nodes.DATATYPE.BIGDECIMAL;};M.isDataTypeInteger=function M_isDataTypeInteger(dataType){return dataType==mstr.Enum.Nodes.DATATYPE.INTEGER;};M.isDataTypeDateTime=function M_isDataTypeDateTime(dataType){var en=mstr.Enum.Nodes.DATATYPE;switch(parseInt(dataType)){case en.DATE:case en.TIME:case en.TIMESTAMP:return true;default:return false;}};M.isDataTypeString=function M_isDataTypeString(dataType){var en=mstr.Enum.Nodes.DATATYPE;switch(parseInt(dataType)){case en.CHAR:case en.VARCHAR:case en.LONGVARCHAR:return true;default:return false;}};M.canCastDataType=function M_canCastDataType(dtpFrom,dtpTo){if(dtpFrom==dtpTo){return true;}if(this.isDataTypeInteger(dtpTo)){return this.isDataTypeInteger(dtpFrom);}else{if(this.isDataTypeNumeric(dtpTo)){return this.isDataTypeNumeric(dtpFrom);}else{if(this.isDataTypeDateTime(dtpTo)){return this.isDataTypeDateTime(dtpFrom);}else{if(this.isDataTypeBigDecimal(dtpTo)){return this.isDataTypeBigDecimal(dtpFrom);}else{return true;}}}}};M.getCommonDataType=function M_getCommonDataType(dtp1,dtp2){var enDT=mstr.Enum.Nodes.DATATYPE;if(!dtp2){return dtp1||enDT.UNKNOWN;}if(!dtp1){return dtp2||enDT.UNKNOWN;}if(dtp1==dtp2){return dtp1;}if(this.canCastDataType(dtp2,dtp1)){return dtp1;}if(this.canCastDataType(dtp1,dtp2)){return dtp2;}return enDT.VARCHAR;};M.convertStringToDataType=function M_cvtStrToDataType(s,dataType){var result=s;switch(dataType){case mstr.Enum.Nodes.DATATYPE.INTEGER:if(s!=null){result=parseInt(s);if(isNaN(result)){result=s;}}break;case mstr.Enum.Nodes.DATATYPE.NUMERIC:case mstr.Enum.Nodes.DATATYPE.DECIMAL:case mstr.Enum.Nodes.DATATYPE.REAL:case mstr.Enum.Nodes.DATATYPE.DOUBLE:case mstr.Enum.Nodes.DATATYPE.FLOAT:case mstr.Enum.Nodes.DATATYPE.BIGDECIMAL:if(s!=null){result=Number(s);if(isNaN(result)){result=s;}}break;case mstr.Enum.Nodes.DATATYPE.CHAR:case mstr.Enum.Nodes.DATATYPE.VARCHAR:case mstr.Enum.Nodes.DATATYPE.LONGVARCHAR:if(s==null){result="";}}return result;};M.convertIndicesToRanges=function M_convertIndicesToRanges(indices,sorted){var arr=indices;if(!sorted){arr=mstr.$A.sortNumericArray(indices.concat());}var ranges=[];var range={min:arr[0]};for(var i=1,len=mstr.$A.len(arr);i<len;i++){var diff=arr[i]-arr[i-1];if(diff!=0&&diff!=1){range.max=arr[i-1];ranges.push(range);range={min:arr[i]};}}range.max=arr[len-1];ranges.push(range);return ranges;};M.rangesIntersect=function M_rangesIntersect(range1,range2,bufferSize){bufferSize=bufferSize||0;if(range1&&range2){range2.min-=bufferSize;range2.max+=bufferSize;if(range1.min<range2.min){return range1.max>=range2.min;}else{if(range1.min==range2.min){return true;}else{if(range1.min<range2.max){return true;}}}}return false;};M.inNumericRange=function M_inNumericRange(x,min,max){if(Number(min)==0&&(x+"").indexOf("-")>-1){return -1;}x=Number(x);if((min!=null)&&(x<Number(min))){return -1;}if((max!=null)&&(x>Number(max))){return 1;}return 0;};M.roundUpDiv=function M_roundUpDiv(n,d){return parseInt(n/d)+((n%d)?1:0);};return M;})();mstr.utils.String=(function(){var S={};S.trim=function S_trim(s){return this.trimDelimited(s,null);};S.trimDelimited=function S_trimDelimited(s,delim){if(s&&typeof (s)=="string"){s=s.replace(/^\s+/,"").replace(/\s+$/,"");if(delim){s=s.replace(new RegExp("\\"+delim+"\\s+","gm"),delim);}}return s;};S.padDelimited=function S_padDelimited(s,delim){if(delim&&s&&typeof (s)=="string"){return s.replace(new RegExp("\\"+delim+"(\\S+?)","gm"),delim+" $1");}return s;};S.isEmpty=function S_isEmpty(s){if(!s){return true;}return String(s).replace(/\s*/g,"")==""?true:false;};S.smartSplit=function S_smartSplit(s,delims,bTrimDelimited){if(delims&&!this.isEmpty(s)){if(typeof (delims)=="string"){delims=[delims];}s=String(s);for(var i=0,len=delims.length;i<len;i++){if(s.indexOf(delims[i])>-1){if(bTrimDelimited){s=mstr.utils.String.trimDelimited(s,delims[i]);}return s.split(delims[i]);}}}return[s];};S.preserveWhiteSpace4HTML=function S_preWS(s){return s.replace(/\u0020\u0020/g," &nbsp;");};S.escape4HTMLText=function S_escape4HTMLText(v){var QUOTE=/\"/gm;var QUOTE_ENCODED="&quot;";var AMP=/\&/gm;var AMP_ENCODED="&amp;";var LESSTHAN=/\</gm;var LESSTHAN_ENCODED="&lt;";var GREATERTHAN=/\>/gm;var GREATERTHAN_ENCODED="&gt;";return v.replace(AMP,AMP_ENCODED).replace(QUOTE,QUOTE_ENCODED).replace(LESSTHAN,LESSTHAN_ENCODED).replace(GREATERTHAN,GREATERTHAN_ENCODED);};return S;})();mstr.utils.LocaleParser=(function(){var LP={};LP.BROWSER_DECIMALSEP=String(1/10).match(/\D/)||".";LP.whichDataType=function LP_whichDtp(s,dtps,bFormat){var lookup=this._getMethodLookup();for(var i=0,len=dtps&&dtps.length||0;i<len;i++){var dtp=dtps[i],methodName=lookup[dtp];var match=methodName&&this[methodName](s,bFormat);if((match!==null)&&(match!==false)){return bFormat?{dataType:dtp,formatted:match}:dtp;}}return null;};LP._getMethodLookup=function LP_getMethodLookup(){if(!this.dtpChecker){var h=this.dtpChecker={},enDT=mstr.Enum.Nodes.DATATYPE;h[enDT.INTEGER]="isInteger";h[enDT.NUMERIC]=h[enDT.DECIMAL]=h[enDT.REAL]=h[enDT.DOUBLE]=h[enDT.FLOAT]="isNumeric";h[enDT.CHAR]=h[enDT.VARCHAR]=h[enDT.LONGVARCHAR]="isString";h[enDT.DATE]=h[enDT.TIME]=h[enDT.TIMESTAMP]="isDateAndOrTime";h[enDT.BIGDECIMAL]="isBigDecimal";}return this.dtpChecker;};LP.REGEXPS={DATES:{},TIMES:{}};LP.CACHE={PARSEDATE:{CONTAINS:{},EQUALS:{}},PARSETIME:{CONTAINS:{},EQUALS:{}}};LP.isInteger=function LP_isInteger(s,bFormat){if(s==null){return false;}if(typeof (s)!="string"){s=String(s);}var formattedStr=mstr.utils.String.trim(s).replace(new RegExp("\\"+mstr.Settings.Locale.THOUSANDSEP,"g"),"").replace(/^\-(\s)*/,"-"),strWithoutMinus=formattedStr.replace(/^\-/,""),isValid=strWithoutMinus.match(/\d/)&&!strWithoutMinus.match(/\D/);if(bFormat){return isValid?formattedStr:null;}else{return !!isValid;}};LP.isNumeric=function LP_isNumeric(s,bFormat){if(s==null){return false;}if(typeof (s)!="string"){s=String(s);}s=mstr.utils.String.trim(s);var formattedStr=mstr.utils.String.trim(s).replace(new RegExp("\\"+mstr.Settings.Locale.THOUSANDSEP,"g"),"").replace(/^\-(\s)*/,"-").replace(/\s+\%$/,"%"),strWithoutMinusPercent=formattedStr.replace(/^\-/,"").replace(/\%$/,"").replace(new RegExp("\\"+mstr.Settings.Locale.DECIMALSEP),""),isValid=strWithoutMinusPercent.match(/\d/)&&!strWithoutMinusPercent.match(/\D/);if(bFormat){return isValid?formattedStr:null;}else{return !!isValid;}};LP.isBigDecimal=function LP_isBigDecimal(s,bFormat){if(s==null){return false;}var matchPounds=s.match(/^\s*\#(.*)\#\s*$/);if(matchPounds){s=matchPounds[1];if(mstr.utils.String.isEmpty(s)||s.replace(/E/i,"").match(/[a-zA-Z]/)){return bFormat?null:false;}else{return bFormat?"#"+mstr.utils.String.trim(s)+"#":true;}}else{var numMatch=this.isNumeric(s,bFormat);if(bFormat){if(numMatch){return matchPounds?"#"+numMatch+"#":numMatch;}else{return null;}}else{return numMatch;}}};LP.isDate=function LP_isDate(s,bFormat,bContains){var dateInfo=this.parseDate(s,bContains);var isValid=!!(dateInfo&&this.doesDateExist(dateInfo.month,dateInfo.day,dateInfo.year));if(bFormat){if(isValid){var formatted=this.formatDateInfo(dateInfo,mstr.Settings.Locale.DATEOUTPUTFORMAT);if(bContains){return{match:dateInfo.match,formatted:formatted};}else{return formatted;}}else{return null;}}else{return !!isValid;}};LP.formatDateInfo=function LP_formatDateInfo(dateInfo,format){if(!format){return"";}var SL=mstr.Settings.Locale,s=format.replace(/dd/g,this.formatInteger(dateInfo.day,2)).replace(/d/g,Number(dateInfo.day)).replace(/yyyy/g,Number(dateInfo.year)).replace(/yy/g,this.formatInteger(Number(dateInfo.year)%100,2)).replace(/MMM/g,"~~~~").replace(/MM/g,"@@").replace(/M/g,"^").replace(/MMMM/g,SL.MONTHNAME_FULL[Number(dateInfo.month)-1]).replace(/\~\~\~\~/g,SL.MONTHNAME_SHORT[Number(dateInfo.month)-1]).replace(/\@\@/g,this.formatInteger(dateInfo.month,2)).replace(/\^/g,Number(dateInfo.month));return s;};LP.formatInteger=function LP_fmtInt(num,minLen){var s=String(num),missing=Math.max(minLen-s.length,0);if(missing>0){var arr=[s];for(var i=1;i<=missing;i++){arr.push("0");}s=arr.reverse().join("");}return s;};LP.parseDate=function LP_parseDate(s,bContains){if(s==null){return false;}if(typeof (s)!="string"){s=String(s);}s=mstr.utils.String.trim(s);var cache=LP.CACHE.PARSEDATE[bContains?"CONTAINS":"EQUALS"],cachedResult=cache[s];if(cachedResult||(cachedResult===null)){return cachedResult;}var parseResult=null;var SL=mstr.Settings.Locale,formats=[].concat(SL.DATEINPUTFORMATS);formats.unshift(SL.DATEOUTPUTFORMAT);for(var i=0,len=formats.length;i<len;i++){var reInfo=this._buildRegExp4DateFormat(formats[i]),result=reInfo&&s.match(bContains?reInfo.reContains:reInfo.reEquals);if(result){parseResult={match:result[0],year:reInfo.yearIndex&&this.fourDigitYear(result[reInfo.yearIndex]),day:reInfo.dayIndex&&parseInt(Number(result[reInfo.dayIndex])),month:reInfo.monthIndex&&this.numericMonth(result[reInfo.monthIndex])};break;}}cache[s]=parseResult;return parseResult;};LP.isTime=function LP_parseTime(s,bFormat,bContains){var timeInfo=this.parseTime(s,bContains);var isValid=!!(timeInfo&&this.doesTimeExist(timeInfo.hour,timeInfo.min,timeInfo.sec));if(bFormat){if(isValid){var formatted=this.formatTimeInfo(timeInfo,mstr.Settings.Locale.TIMEOUTPUTFORMAT);if(bContains){return{match:timeInfo.match,formatted:formatted};}else{return formatted;}}else{return null;}}else{return !!isValid;}};LP.parseTime=function LP_parseTime(s,bContains){if(s==null){return false;}if(typeof (s)!="string"){s=String(s);}s=mstr.utils.String.trim(s);var cache=LP.CACHE.PARSETIME[bContains?"CONTAINS":"EQUALS"],cachedResult=cache[s];if(cachedResult||(cachedResult===null)){return cachedResult;}var parseResult=null;var SL=mstr.Settings.Locale,formats=[].concat(SL.TIMEINPUTFORMATS);formats.unshift(SL.TIMEOUTPUTFORMAT);for(var i=0,len=formats.length;i<len;i++){var reInfo=this._buildRegExp4TimeFormat(formats[i]),result=reInfo&&s.match(bContains?reInfo.reContains:reInfo.reEquals);if(result){var ampm=reInfo.ampmIndex&&result[reInfo.ampmIndex];parseResult={match:result[0],hour:reInfo.hourIndex&&this.capitalHour(result[reInfo.hourIndex],ampm),min:reInfo.minIndex&&parseInt(Number(result[reInfo.minIndex])),sec:reInfo.secIndex&&parseInt(Number(result[reInfo.secIndex]))};break;}}cache[s]=parseResult;return parseResult;};LP.formatTimeInfo=function LP_formatTimeInfo(timeInfo,format){if(!format){return"";}var SL=mstr.Settings.Locale,twelveHour=!(Number(timeInfo.hour)%12)?12:(Number(timeInfo.hour)%12),s=format.replace(/HH/g,this.formatInteger(timeInfo.hour)).replace(/H/g,Number(timeInfo.hour)).replace(/hh/g,this.formatInteger(twelveHour,2)).replace(/h/g,twelveHour).replace(/mm/g,this.formatInteger(Number(timeInfo.min)||0,2)).replace(/m/g,Number(timeInfo.min)||0).replace(/ss/g,this.formatInteger(Number(timeInfo.sec)||0,2)).replace(/s/g,Number(timeInfo.sec)||0).replace(/a/g,(Number(timeInfo.hour)<12)?SL.AM_NAME:SL.PM_NAME);return s;};LP.doesTimeExist=function LP_doesTimeExst(capitalHour,min,sec){var h=parseInt(capitalHour);if(h>=0&&h<=23){var m=parseInt(min);if(m>=0&&m<=59){if(!sec){return true;}var s=parseInt(sec);if(s>=0&&s<=59){return true;}}}return false;};LP.capitalHour=function LP_24Hr(hour,ampm){hour=parseInt(Number(hour));var SL=mstr.Settings.Locale;if(ampm&&(ampm.match(SL.AM_NAME)||ampm.match(/AM/i))){return hour%12;}else{if(ampm&&(ampm.match(SL.PM_NAME)||ampm.match(/PM/i))){return 12+(hour%12);}else{return hour;}}};LP.isDateAndOrTime=function LP_isDateAndOrTime(s,bFormat){return this.isDateTime(s,bFormat)||this.isDate(s,bFormat)||this.isTime(s,bFormat);};LP.isDateTime=function LP_isDateTime(s,bFormat){var dateTimeInfo=this.parseDateAndOrTime(s),dateInfo=dateTimeInfo&&dateTimeInfo.date,timeInfo=dateTimeInfo&&dateTimeInfo.time,isValid=!!dateInfo&&!!timeInfo&&this.doesDateExist(dateInfo.month,dateInfo.day,dateInfo.year)&&this.doesTimeExist(timeInfo.hour,timeInfo.min,timeInfo.sec);if(bFormat){if(isValid){var formattedDate=this.formatDateInfo(dateInfo,mstr.Settings.Locale.DATEOUTPUTFORMAT),formattedTime=this.formatTimeInfo(timeInfo,mstr.Settings.Locale.TIMEOUTPUTFORMAT),dateIndex=s.indexOf(dateInfo.match),timeIndex=s.indexOf(timeInfo.match);return(timeIndex<dateIndex)?formattedTime+" "+formattedDate:formattedDate+" "+formattedTime;}else{return null;}}else{return !!isValid;}};LP.parseDateAndOrTime=function LP_parseDateAndOrTime(s){var dateInfo=this.parseDate(s,true);var sWithoutDate=mstr.utils.String.trim((dateInfo&&dateInfo.match)?s.replace(dateInfo.match,""):s),timeInfo=this.parseTime(sWithoutDate,false);if(!dateInfo&&!timeInfo){return null;}else{return{date:dateInfo,time:timeInfo};}};LP.isString=function LP_isInteger(s,bFormat){var type=(s!=null)?typeof (s):null,isValid=(type=="string");if(bFormat){return isValid?String(s):null;}else{return !!isValid;}};LP.inBigDecimalRange=function LP_inBigDecimalRange(val,min,max){if((max!=null)&&(this.compareBigDecimal(val,max)>0)){return 1;}if((min!=null)&&(this.compareBigDecimal(val,min)<0)){return -1;}return 0;};LP.compareBigDecimal=function LP_compareBigDec(val1,val2){var num1=isNaN(val1)?this.convertToBrowserBigDecimal(String(val1)):val1,num2=isNaN(val2)?this.convertToBrowserBigDecimal(String(val2)):val2;return num1-num2;};LP.convertToBrowserBigDecimal=function LP_2BrswrBigDec(val){if(val&&val.replace){val=val.replace(/^\s*\#/,"").replace(/\#\s*$/,"");}return this.convertToBrowserNumber(val);};LP.inNumericRange=function LP_inNumericRange(val,min,max){if((max!=null)&&(this.compareNumber(val,max)>0)){return 1;}if((min!=null)&&(this.compareNumber(val,min)<0)){return -1;}return 0;};LP.compareNumber=function LP_compareNumber(val1,val2){var num1=isNaN(val1)?this.convertToBrowserNumber(String(val1)):val1,num2=isNaN(val2)?this.convertToBrowserNumber(String(val2)):val2;return num1-num2;};LP.convertToBrowserNumber=function(val){return Number(val.replace(new RegExp("\\"+mstr.Settings.Locale.THOUSANDSEP,"g"),"").replace(new RegExp("\\"+mstr.Settings.Locale.DECIMALSEP),this.BROWSER_DECIMALSEP));};LP.inDateTimeRange=function LP_inDateTimeRange(val,min,max){var valInfo=this.parseDateAndOrTime(val),valDateInfo=valInfo&&valInfo.date,valTimeInfo=valInfo&&valInfo.time;if(!valDateInfo&&!valTimeInfo){return 0;}if(min!=null){var minInfo=this.parseDateAndOrTime(min);if(valDateInfo&&minInfo.date){var minDiff=this.compareDate(valDateInfo,minInfo.date);if(minDiff<0){return -1;}else{if(minDiff==0){if(valTimeInfo&&minInfo.time&&(this.compareTime(valTimeInfo,minInfo.time)<0)){return -1;}}}}}if(max!=null){var maxInfo=this.parseDateAndOrTime(max);if(valDateInfo&&maxInfo.date){var maxDiff=this.compareDate(valDateInfo,maxInfo.date);if(maxDiff>0){return 1;}else{if(maxDiff==0){if(valTimeInfo&&maxInfo.time&&(this.compareTime(valTimeInfo,maxInfo.time)>0)){return 1;}}}}}return 0;};LP.compareDate=function LP_compareDate(val1,val2){if(val1==val2){return 0;}var date1=typeof (val1)=="string"?this.parseDate(val1):val1,date2=typeof (val2)=="string"?this.parseDate(val2):val2;if(!date1){return -1;}if(!date2){return 1;}return(date1.year-date2.year)||(date1.month-date2.month)||(date1.day-date2.day)||0;};LP.compareTime=function LP_compareTime(val1,val2){if(val1==val2){return 0;}var time1=typeof (val1)=="string"?this.parseTime(val1):val1,time2=typeof (val2)=="string"?this.parseTime(val2):val2;if(!time1){return -1;}if(!time2){return 1;}return(time1.hour-time2.hour)||(time1.minute-time2.minute)||(time1.sec-time2.sec)||0;};LP.compareDateTime=function LP_compareDateTime(val1,val2){return this.compareDate(val1,val2)||this.compareTime(val1,val2);};LP._buildRegExp4DateFormat=function LP_re4DateFmt(formatStr){if(!formatStr){return null;}var reInfo=LP.REGEXPS.DATES[formatStr];if(!reInfo){if(!LP.REGEXPS.MONTHNAME_FULL){LP.REGEXPS.MONTHNAME_FULL=mstr.Settings.Locale.MONTHNAME_FULL.join("|");LP.REGEXPS.MONTHNAME_SHORT=mstr.Settings.Locale.MONTHNAME_SHORT.join("|");}reInfo=LP.REGEXPS.DATES[formatStr]={};reInfo.formatStr=formatStr;var reStr=reInfo.reStr=formatStr.replace(/([^M|d|y|\s])/g,"\\$1").replace(/dd/g,"~~~~").replace(/d/g,"(\\d{1,2})").replace(/\~\~\~\~/g,"(\\d\\d)").replace(/yyyy/g,"(\\d\\d\\d\\d)").replace(/yy/g,"(\\d\\d)").replace(/MMMM/g,"@@@@").replace(/MMM/g,"@@@").replace(/MM/g,"(\\d\\d)").replace(/M/g,"(\\d{1,2})").replace("@@@@","("+LP.REGEXPS.MONTHNAME_FULL+")").replace("@@@","("+LP.REGEXPS.MONTHNAME_SHORT+")");reInfo.reEquals=new RegExp("^"+reStr+"$");reInfo.reContains=new RegExp(reStr);var indices=[{key:"monthIndex",index:formatStr.indexOf("M")},{key:"dayIndex",index:formatStr.indexOf("d")},{key:"yearIndex",index:formatStr.indexOf("y")}];indices.sort(function(a,b){return a.index-b.index;});var counter=1;for(var i=0;i<3;i++){reInfo[indices[i].key]=indices[i].index>-1?counter++:null;}}return reInfo;};LP._buildRegExp4TimeFormat=function LP_re4TimeFmt(formatStr){if(!formatStr){return null;}var reInfo=LP.REGEXPS.TIMES[formatStr],SL=mstr.Settings.Locale;if(!reInfo){if(!LP.REGEXPSTR_AMPM){LP.REGEXPSTR_AMPM=[SL.AM_NAME,SL.PM_NAME,String(SL.AM_NAME).toLowerCase(),String(SL.PM_NAME).toLowerCase()].join("|");}reInfo=LP.REGEXPS.TIMES[formatStr]={};reInfo.formatStr=formatStr;var reStr=formatStr.replace(/\'\'/g,'"');var literals=reStr.match(/\'(.+?)\'/g);reStr.replace(/\'(.+?)\'/g,"*");reStr=reStr.replace(/([^H|h|m|s|z|Z|a|\s])/g,"\\$1").replace(/HH|hh/g,"(\\d\\d)").replace(/H|h/g,"(\\d{1,2})").replace(/mm/g,"(\\d\\d)").replace(/m/g,"(\\d{1,2})").replace(/ss/g,"(\\d\\d)").replace(/s/g,"(\\d{1,2})").replace(/a/gi,"("+LP.REGEXPSTR_AMPM+")").replace(/z|Z/g,"(.+?)");for(var i=1,len=literals&&literals.length||0;i<len;i++){reStr=reStr.replace(/\*/,literals[i]);}reStr=reStr.replace(/\"/g,"'");reInfo.reEquals=new RegExp("^"+reStr+"$");reInfo.reContains=new RegExp(reStr);var indices=[{key:"hourIndex",index:formatStr.search(/h|H/)},{key:"minIndex",index:formatStr.indexOf("m")},{key:"secIndex",index:formatStr.indexOf("s")},{key:"ampmIndex",index:formatStr.indexOf("a")},{key:"zoneIndex",index:formatStr.search(/z|Z/)}];indices.sort(function(a,b){return a.index-b.index;});var counter=1;for(var i=0;i<5;i++){reInfo[indices[i].key]=indices[i].index>-1?counter++:null;}}return reInfo;};LP.doesDateExist=function LP_doesDateExist(month,day,year){var m=parseInt(month);if(m<0||m>12){return false;}var d=parseInt(day);if(day<0){return false;}var date=new Date(year,month-1,1);if(day<0||day>this.getDaysOfMonth(date)){return false;}return true;};LP.isLeapYear=function LP_isLeapYear(year){if(((year%4)==0)&&((year%100)!=0)||((year%400)==0)){return(true);}else{return(false);}};LP.getDaysOfMonth=function LP_getDaysOfMonth(date){month=date.getMonth()+1;year=date.getFullYear();switch(month){case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;break;case 4:case 6:case 9:case 11:return 30;break;case 2:if(this.isLeapYear(year)){return 29;}else{return 28;}}};LP.fourDigitYear=function LP_4dYear(year){year=parseInt(Number(year));if(!isNaN(year)){var twoDigitStart=(mstr.Settings.Locale.TWODIGITYEARSTART%100)||0;if(year>=0&&year<=twoDigitStart){year=2000+year;}else{if(year>twoDigitStart&&year<100){year=1900+year;}}}return year;};LP.numericMonth=function LP_numMonth(month){var monthInt=parseInt(Number(month));if(!isNaN(monthInt)){return monthInt;}var len=month&&month.length||0,index=-1;if(len){if(len<=3){index=mstr.utils.Arrays.find(mstr.Settings.Locale.MONTHNAME_SHORT,month);}if(index==-1){index=mstr.utils.Arrays.find(mstr.Settings.Locale.MONTHNAME_FULL,month);}}return index+1;};return LP;})();mstr.utils.Arrays=(function(){var A={};A.isArray=function A_isArray(obj){return !!(obj&&(typeof (obj)=="object")&&(typeof (obj.length)=="number"));};A.toArray=function A_toArray(obj){if((obj!=null)&&!this.isArray(obj)){return[obj];}else{return obj;}};A.fromHashKeys=function A_fromHashKeys(hash,bParseInt){var arr=[];if(bParseInt){for(var key in hash){arr.push(parseInt(key));}}else{for(var key in hash){arr.push(key);}}return arr;};A.fromHashValues=function A_fromHashValues(hash){var arr=[];for(var key in hash){arr.push(hash[key]);}return arr;};A.toHash=function A_toHash(arr){var h={};for(var i=0,len=this.len(arr);i<len;i++){h[arr[i]]=true;}return h;};A.toHashProperties=function A_toHashProperties(arr,props){var propsMax=(props)?props.length:0;var h={};for(var i=0,len=this.len(arr);i<len;i++){var n=(i<propsMax)?props[i]:i;h[n]=arr[i];}return h;};A.len=function A_len(arr){return(arr&&arr.length)||0;};A.insert=function A_insert(arr,items,index){if(!arr){arr=[];}if((typeof (index)=="undefined")||(index>=arr.length)||(index<0)){return[].concat(arr).concat(items);}else{if(index==0){return[].concat(items).concat(arr);}else{if(index>0){return arr.slice(0,index).concat(items.concat(arr.slice(index,arr.length)));}}}};A.remove=function A_remove(arr,indices,sorted){if(arr&&arr.length&&indices&&indices.length){var sortedIndices=sorted?indices:mstr.$A.sortNumericArray(indices);var ranges=mstr.utils.Math.convertIndicesToRanges(sortedIndices,true);return this.removeRanges(arr,ranges);}return arr;};A.removeRange=function A_removeRange(arr,start,count){var len=(arr&&arr.length)||0;if(len&&count){if(mstr.utils.ISFF){start=Math.max(0,parseInt(start)||0);var a=start?arr.slice(0,start):[],start2=start+count;if(start2<len){a=a.concat(arr.slice(start2));}return a;}else{arr.splice(Math.max(0,start),count);}}return arr;};A.removeRanges=function A_removeRanges(arr,ranges){if(arr&&arr.length&&ranges&&ranges.length){for(var i=ranges.length-1;i>-1;i--){var range=ranges[i];if(range&&range.max>=0){var min=Math.max(range.min,0);arr=A.safeRemove(arr,min,range.max-min+1);}}}return arr;};A.safeRemove=function A_safeRemove(arr,start,deleteCount){try{arr.splice(start,deleteCount);return arr;}catch(ex){var a=[].concat(arr);a.splice(start,deleteCount);return a;}};A.safeSplice=function A_safeSplice(arr,start,deleteCount,values){try{arr.splice(start,deleteCount,values);return arr;}catch(ex){var a=[].concat(arr);a.splice(start,deleteCount,values);return a;}};A.removeItems=function A_removeItems(arr,items){if(arr&&arr.length){for(var i=0,len=this.len(items);i<len;i++){var j=this.find(arr,items[i]);if(j>-1){arr.splice(j,1);}}}return arr;};A.removeItemsByForm=function A_removeItemsByForm(arr,items,formName){var searchResult=this.findByFormMultiple(arr,items,formName,false);if(searchResult&&searchResult.foundCount&&searchResult.indices){return this.remove(arr,searchResult.indices);}return arr;};A.find=function A_find(arr,item){if(arr.indexOf){return arr.indexOf(item);}for(var i=0,len=this.len(arr);i<len;i++){if(arr[i]==item){return i;}}return -1;};A.findMultiple=function A_findMultiple(arr,items,includePlaceholders){var result={foundCount:0,foundAll:false,indices:[]};if(arr&&arr.length){var len=this.len(items);if(len){result.foundAll=true;for(var i=0;i<len;i++){var j=this.find(arr,items[i]);if(j>-1){result.indices[includePlaceholders?i:result.foundCount]=j;result.foundCount++;}else{if(includePlaceholders){result.indices[i]=j;}result.foundAll=false;}}}}return result;};A.findByGetter=function A_findByForm(arr,getterName,formValue,formName){for(var i=0,len=this.len(arr);i<len;i++){if(arr[i]&&arr[i][getterName](formName)==formValue){return i;}}return -1;};A.findByForm=function A_findByForm(arr,formValue,formName,ignoreCase){for(var i=0,len=this.len(arr);i<len;i++){var fv=arr[i][formName];if(ignoreCase&&typeof (fv)=="string"&&typeof (formValue)=="string"){if(fv.toLowerCase()==formValue.toLowerCase()){return i;}}else{if(fv==formValue){return i;}}}return -1;};A.matchByForm=function A_matchByForm(arr,regExp,formName,start){var len=this.len(arr),start=(start&&(start>-1))?start:0,v;for(var i=start;i<len;i++){if(regExp.test(String(arr[i][formName]))){return i;}}if(start>0){for(var j=0;j<start;j++){if(regExp.test(String(arr[j][formName]))){return j;}}}return -1;};A.findByFormMultiple=function A_findByFormMultiple(arr,items,formName,includePlaceholders){var result={foundCount:0,foundAll:false,indices:[]};var indices=result.indices;var lenArr=this.len(arr);if(lenArr){var lookup=mstr.utils.Hash.generateItemArrayLookup(arr,formName);result.foundAll=true;var lenItems=this.len(items);for(var i=0;i<lenItems;i++){var formValue=items[i][formName];var index=lookup[formValue];if(index!=null){indices[includePlaceholders?i:result.foundCount]=index;result.foundCount++;if(result.foundCount>=lenArr){break;}}else{if(includePlaceholders){indices[i]=-1;}result.foundAll=false;}}}return result;};A.sortNumericArray=function A_sortNumericArray(arr){if(!arr){return null;}var arrCopy=arr.concat();var len=this.len(arrCopy);var last=(len%2)?arrCopy.pop():null;this.heapSort(arrCopy);if(last!=null){var searchResult=this.binarySearch(arrCopy,last,0,len-2);arrCopy=this.insert(arrCopy,[last],searchResult.index);}return arrCopy;};A.binarySearch=function A_binarySearch(arr,value,left,right){while(left<=right){var mid=parseInt((left+right)/2);var midValue=arr[mid];if(value>midValue){left=mid+1;}else{if(value<midValue){right=mid-1;}else{return{found:true,index:mid};}}}return{found:false,index:left};};A.heapSort=function A_heapSort(arr){var len=this.len(arr);for(var i=parseInt(len/2-1);i>=0;i--){this._siftDown(arr,i,len);}var temp;for(var i=len-1;i>=1;i--){temp=arr[0];arr[0]=arr[i];arr[i]=temp;this._siftDown(arr,0,i-1);}return arr;};A._siftDown=function A_shiftDown(arr,root,bottom){var done=false,maxChild,temp;while(!done&&(root*2<=bottom)){if(root*2==bottom){maxChild=root*2;}else{if(arr[root*2]>arr[root*2+1]){maxChild=root*2;}else{maxChild=root*2+1;}}if(arr[root]<arr[maxChild]){temp=arr[root];arr[root]=arr[maxChild];arr[maxChild]=temp;root=maxChild;}else{done=true;}}};A.intSorter=function A_intSorter(x,y){return x-y;};A.rangeSorter=function A_rangeSorter(range1,range2){return range1.min-range2.min;};A.smartJoin=function(arr,delim){var len=arr&&arr.length||0;if(!len){return"";}if(delim==null){delim="";}return(arr.join&&arr.join(delim))||"";};A.filter=function(arr,obj,methodName){var result=[],len=arr&&arr.length||0;if(len&&obj&&methodName){for(var i=0;i<len;i++){if(obj[methodName](arr[i])){result.push(arr[i]);}}}return result;};A.removeInstances=function(arr,val){var len=(arr&&arr.length)||0;for(var i=len-1;i>-1;i--){if(arr[i]===val){arr.splice(i,1);}}return arr;};return A;})();mstr.$A=mstr.utils.Arrays;mstr.utils.Hash=(function(){var H={};H.len=function H_len(hash){var count=0;if(hash){for(var key in hash){if(key!=null){count++;}}}return count;};H.lenGreaterThan=function H_lenGreaterThan(obj,x){if(obj){var len=0;for(var key in obj){len++;if(len>x){return true;}}}return false;};H.isEmpty=function H_isEmpty(obj){if(obj){for(var key in obj){return false;}}return true;};H.applydefault=function H_applydefault(hash,d){hash=hash||{};for(var k in d){if(hash[k]==null){hash[k]=mstr.utils.Hash.deepClone(d[k]);}}return hash;};H.overwrite=function H_overwrite(hash,keys){var changed;if(hash){for(var k in keys){if(hash[k]!=keys[k]){if(!changed){changed={};}changed[k]=keys[k];hash[k]=keys[k];}}}return changed;};H.remove=function H_remove(hash,keys){var changed;if(hash){for(var k in keys){if(hash[k]!=null){if(!changed){changed={};}changed[k]=hash[k];delete hash[k];}}}return changed;};H.clear=function H_clear(hash){var changed;if(hash){for(var k in hash){if(hash[k]!=null){if(!changed){changed={};}changed[k]=hash[k];delete hash[k];}}}return changed;};H.clone=function H_clone(obj){if(!obj){return undefined;}var c={};for(var n in obj){c[n]=obj[n];}return c;};H.deepClone=function H_deepClone(item){if(!item){return item;}if(mstr.$A.isArray(item)){var cnt=item.length;var a=new Array(cnt);for(var i=0;i<cnt;i++){a[i]=mstr.utils.Hash.deepClone(item[i]);}return a;}if(typeof (item)=="object"){var o={};for(var n in item){o[n]=mstr.utils.Hash.deepClone(item[n]);}return o;}return item;};H.firstKey=function H_firstKey(obj){if(obj){for(var key in obj){if(key!=null){return key;}}}};H.firstItem=function H_firstItem(obj){if(obj){for(var key in obj){if(key!=null&&obj[key]!=null){return obj[key];}}}};H.equals=function H_equals(obj1,obj2){if(obj1==obj2){return true;}if(!obj1||!obj2){return false;}for(var key in obj1){if(obj1[key]!=obj2[key]){return false;}}return this.len(obj1)==this.len(obj2);};H.fromRanges=function H_fromRanges(ranges){var hash={};var len=mstr.utils.Arrays.len(ranges);for(var i=0;i<len;i++){var min=ranges[i].min;var max=ranges[i].max;for(var j=min;j<=max;j++){hash[j]=true;}}return hash;};H.maxNumber=function H_maxNumber(hash){if(!hash){return null;}var max=null;for(var key in hash){if(Number(key)>max){max=Number(key);}}return max;};H.minNumber=function H_minNumber(hash){if(!hash){return null;}var min=null;for(var key in hash){if(min==null){min=key;}if(Number(key)<=min){min=Number(key);}}return min;};H.generateItemArrayLookup=function H_genItemArrayLookup(arr,key){var lookup={};for(var i=0,len=mstr.$A.len(arr);i<len;i++){lookup[arr[i][key]]=i;}return lookup;};return H;})();mstr.$H=mstr.utils.Hash;mstr.utils.CSS=(function(){var CSS={};CSS.getStyleValue=function CSS_getStyleValue(elem,prop){if(elem.currentStyle){prop=prop=="float"?"styleFloat":prop;value=elem.currentStyle[prop];}else{if(document.defaultView&&document.defaultView.getComputedStyle){prop=prop=="float"?"cssFloat":prop;var styles=document.defaultView.getComputedStyle(elem,null);value=styles?styles[prop]:null;}}return value;};CSS.setStyleValue=function CSS_setStyleValue(elem,prop,value){if(mstr.utils.$A.isArray(prop)&&mstr.utils.$A.isArray(value)){for(var i in prop){elem.style[prop[i]]=value[i];}}else{elem.style[prop]=value;}};return CSS;})();mstr.utils.Color=(function(){var C={};C.hexChars="0123456789ABCDEF";C.toHex=function C_toHex(n){n=n||0;n=Math.max(Math.min(isNaN(n)?0:parseInt(n,10),255),0);return mstr.utils.Color.hexChars.charAt((n-n%16)/16)+mstr.utils.Color.hexChars.charAt(n%16);};C.toDec=function C_toDec(h){return mstr.utils.Color.hexChars.indexOf(h.toUpperCase());};C.rgbStr2rgb=function C_rgbStr2rgb(color){var rgb=[0,0,0];color=color.replace(/ /g,"");var i=color.indexOf("rgb");if(i>=0){color=color.substring(i+4,color.length-1);rgb=color.split(",");}return rgb;};C.rgbStr2hex=function C_rgbStr2hex(color){if(color.indexOf("rgb")>=0){var rgb=mstr.utils.Color.rgbStr2rgb(color);return"#"+mstr.utils.Color.rgb2hex(rgb[0],rgb[1],rgb[2]);}return color;};C.rgb2hex=function C_rgb2hex(r,g,b){return mstr.utils.Color.toHex(r)+mstr.utils.Color.toHex(g)+mstr.utils.Color.toHex(b);};C.rgb2hsv=function C_rgb2hsv(r,g,b){var rgb=[r,g,b];rgb.sort(function(a,b){return a-b;});var h,s,v=0;var min=rgb[0];var max=rgb[2];v=max/255;s=(max!=0)?(parseFloat(max)-parseFloat(min))/parseFloat(max):0;if(s==0){h=0;}else{var d=max-min;var red=(max-r)/d;var green=(max-g)/d;var blue=(max-b)/d;if(r==max){h=blue-green;}else{if(g==max){h=2+red-blue;}else{h=4+green-red;}}h=h/6;if(h<0){h=h+1;}}return[Math.round(h*360),Math.round(s*100),Math.round(v*100)];};C.hex2rgb=function C_hex2rgb(s){var color=(s.charAt(0)=="#")?s.substr(1):s;var rgb=[0,0,0];rgb[0]=(mstr.utils.Color.toDec(color.substr(0,1))*16)+(mstr.utils.Color.toDec(color.substr(1,1)));rgb[1]=(mstr.utils.Color.toDec(color.substr(2,1))*16)+(mstr.utils.Color.toDec(color.substr(3,1)));rgb[2]=(mstr.utils.Color.toDec(color.substr(4,1))*16)+(mstr.utils.Color.toDec(color.substr(5,1)));return rgb;};C.hex2hsv=function C_hex2hsv(s){var rgb=mstr.utils.Color.hex2rgb(s);return mstr.utils.Color.rgb2hsv(rgb);};C.hsv2rgb=function C_hsv2rgb(h,s,v){h=h/360;s=s/100;v=v/100;var r,g,b;if(s==0){r=v*255;g=v*255;b=v*255;}else{var th=h*6;if(th==6){th=0;}var i=Math.floor(th);var p=v*(1-s);var q=v*(1-s*(th-i));var t=v*(1-s*(1-(th-i)));var tr,tg,tb;switch(i){case 0:tr=v;tg=t;tb=p;break;case 1:tr=q;tg=v;tb=p;break;case 2:tr=p;tg=v;tb=t;break;case 3:tr=p;tg=q;tb=v;break;case 4:tr=t;tg=p;tb=v;break;default:tr=v;tg=p;tb=q;break;}r=tr*255;g=tg*255;b=tb*255;}return[Math.round(r),Math.round(g),Math.round(b)];};C.hsv2hex=function C_hsv2hex(h,s,v){var rgb=mstr.utils.Color.hsv2rgb(h,s,v);return mstr.utils.Color.rgb2hex(rgb[0],rgb[1],rgb[2]);};C.getContrastingColor=function C_getContrastingColor(hex,colors){var rgb=mstr.utils.Color.hex2rgb(hex);return(((rgb[0]*299)+(rgb[1]*587)+(rgb[2]*114))/1000<125)?colors[0]:colors[1];};C.get3DBorderColor=function C_get3DBorderColor(bgRGB,stroke){var lum=parseInt(bgRGB[0])*0.3+parseInt(bgRGB[1])*0.59+parseInt(bgRGB[2])*0.11;var r=parseInt(bgRGB[0]);var g=parseInt(bgRGB[1]);var b=parseInt(bgRGB[2]);switch(stroke){case"light":if(lum>150){r=r*0.9;g=g*0.9;b=b*0.9;}else{r=r*0.6+102;g=g*0.6+102;b=b*0.6+102;}break;case"dark":if(lum>10){r=r*0.4;g=g*0.4;b=b*0.4;}else{r=r*0.8+30;g=g*0.8+30;b=b*0.8+30;}}return"#"+mstr.utils.Color.rgb2hex(Math.round(r),Math.round(g),Math.round(b));};return C;})();mstr.utils.Controls=(function(){var C={};C.getSelectionRange=function C_getSelectionRange(field){var result={start:-1,end:-1};if("selectionStart" in field){result={start:field.selectionStart,end:field.selectionEnd};}else{if(document.selection){var range=document.selection.createRange();if(range.parentElement()==field){var s=range.duplicate();s.moveEnd("textedit",1);var e=range.duplicate();e.moveStart("textedit",-1);result={start:field.value.length-s.text.length,end:e.text.length};}}}return result;};C.setSelectionRange=function C_setSelectionRange(field,start,end){if(end===undefined){end=start;}if("selectionStart" in field){try{field.setSelectionRange(start,end);}catch(e){}field.focus();}else{if(document.selection){var range=field.createTextRange();range.collapse(true);range.moveStart("character",start);range.moveEnd("character",end-start);range.select();}}};return C;})();mstr.utils.ListModelHelper=(function(){var LMH={};LMH.canAdd=function LMH_canAdd(model,item){if(!item){return false;}var n=model.props.allowedItemFormName;if(n!=null){if(model.props.allowedItemFormValues){if(!model.props.allowedItemFormValuesHash){model.props.allowedItemFormValuesHash=mstr.$A.toHash(model.props.allowedItemFormValues&&model.props.allowedItemFormValues.split(","));}return !!model.props.allowedItemFormValuesHash[item[n]];}else{if(model.props.prohibitedItemFormValues){if(!model.props.prohibitedItemFormValuesHash){model.props.prohibitedItemFormValuesHash=mstr.$A.toHash(model.props.prohibitedItemFormValues&&model.props.prohibitedItemFormValues.split(","));}return !model.props.prohibitedItemFormValuesHash[item[n]];}}}return true;};LMH.verifySelectionKeys=function LMH_verifySelectionKeys(model,keys){var items=model.getItems();for(var i in keys){if(!mstr.utils.ListModelHelper.canAdd(model,items[i])){delete keys[i];}}return(mstr.utils.Hash.isEmpty(keys))?null:keys;};return LMH;})();mstr.utils.ListViewHelper=(function(){var LVH={};LVH.getItemRenderer=function LVH_getIR(view){var rc=view.props.itemRendererClass;if(rc){if(typeof (rc)=="object"){return rc;}else{if(typeof (rc)=="string"){try{eval("rc = "+rc);}catch(localerr){}view.props.itemRendererClass=rc;if(rc){return rc;}}}}var hInfo=view._layoutHandlers&&view._layoutHandlers.info&&view._layoutHandlers.info.itemRendererClass;if(!hInfo){return ;}if(!hInfo.obj){var fqcn=hInfo&&hInfo.str;if(fqcn){try{eval("hInfo.obj = "+fqcn);}catch(localerr){}hInfo.str=null;}}return hInfo.obj;};LVH.getItemBrowseCommand=function LVH_getItemBrowseCommand(view,item){if(!item){return null;}var m=view.props.model;if(!m){return null;}if(view.props.allowBrowseFolder&&m.canBrowseFolder(item)){return mstr.$Cmd.BROWSEFOLDER;}if(!view.props.allowBrowseHierarchy&&!view.props.allowBrowseAttribute){return null;}var bAttr=(parseInt(item.tp)==mstr.Enum.MSTRFolderItem.TYPE.ATTRIBUTE);var bAttrInHierarchy=false;if(bAttr){var con=m.getContainer();if(con){if(con.isWithinHierarchy==null){con.isWithinHierarchy=this.isWithinHierarchy(con);}bAttrInHierarchy=!!con.isWithinHierarchy;}}if(bAttr&&!bAttrInHierarchy){if(view.props.allowBrowseAttribute&&m.canBrowseAttribute(item)){return mstr.$Cmd.BROWSEATTRIBUTE;}}else{if(view.props.allowBrowseHierarchy&&m.canBrowseHierarchy(item)){return mstr.$Cmd.BROWSEHIERARCHYITEM;}}return null;};LVH.getFetchBlockForTask=function LVH_getFetchBlockForTask(taskId){var map=mstr.Settings.TaskBlockCountMap;if(map){var bc=parseInt(map[taskId]);if(isNaN(bc)){bc=parseInt(map["*"]);}if(!isNaN(bc)){return bc;}}return -1;};LVH.isWithinHierarchy=function LVH_isWithinHierarchy(node){while(node){if(node.isWithinHierarchy){return true;}switch(node.value&&parseInt(node.value.tp)){case mstr.Enum.MSTRFolderItem.TYPE.HIERARCHY:return true;}node=node.parent;}return false;};LVH.getHierarchyId=function LVH_getHierarchyId(node){while(node){switch(node.value&&parseInt(node.value.tp)){case mstr.Enum.MSTRFolderItem.TYPE.HIERARCHY:return node.value.dssid;}node=node.parent;}return null;};return LVH;})();mstr.lang={};mstr.lang.Event=(function(){Event.prototype.target=function Event_target(){return mstr.$E.target(this.e,this.win);};Event.prototype.shift=function Event_shift(){return mstr.$E.shiftKey(this.e,this.win);};Event.prototype.ctrl=function Event_ctrl(){return mstr.$E.ctrlKey(this.e,this.win);};Event.prototype.rightClick=function Event_rightClick(){return 2==mstr.$E.button(this.e,this.win);};Event.prototype.clone=function Event_clone(){return new mstr.lang.Event(this.e,this.win,this.src,this.name,this.memo,this.originalSrc);};function Event(e,hWin,src,name,memo,originalSrc){this.win=hWin||window;this.e=e||(this.win&&this.win.event);this.src=src;this.name=(name!=null)?name:(this.e&&this.e.type);this.memo=memo;this.originalSrc=originalSrc||src;if(mstr.utils.ISIE4){this.x=this.e?this.e.clientX+((this.win&&this.win.document.documentElement&&this.win.document.documentElement.scrollLeft)||0):null;this.y=this.e?this.e.clientY+((this.win&&this.win.document.documentElement&&this.win.document.documentElement.scrollTop)||0):null;}else{if(mstr.utils.ISW3C){this.x=this.e?this.e.pageX:null;this.y=this.e?this.e.pageY:null;}}}return Event;})();mstr.lang.CustomEvent=(function(){mstr.$O.extendsClass(CustomEvent,mstr.lang.Event);function CustomEvent(src,name,memo,e,hWin,originalSrc){mstr.lang.Event.apply(this,[e,hWin,src,name,memo,originalSrc]);}return CustomEvent;})();mstr.models={};mstr.models.IModel={get:null,set:null,listadd:null,listremove:null,hashadd:null,hashremove:null,attachEventListener:null,removeEventListener:null,execCommand:null,queryCommandEnabled:null};mstr.models.BaseModel=(function(){BM.prototype.DEFAULTS={readyState:mstr.Enum.Widget.READYSTATE.IDLE};BM.prototype.BROADCASTS={_DEFAULT_:true};BM.prototype.get=function BM_get(n){return this.props[n];};BM.prototype.set=function BM_set(n,v){var vOld=this.props[n];if(vOld!=v){if(v==null){delete this.props[n];}else{this.props[n]=v;}this.raiseEvent("set_"+n,{name:n,value:v,valueWas:vOld});return true;}return false;};BM.prototype.setPropertyByPath=function BM_setPropertyByPath(p,v,bSilent){mstr.controllers.Factory.setPath(p,this,v,bSilent);};BM.prototype.getId=function BM_getId(){return this.props[mstr.$W.ID];};BM.prototype.setId=function BM_setId(id){this.props[mstr.$W.ID]=id;};BM.prototype.listadd=function BM_listadd(n,items,start){var len=mstr.$A.len(items);if(len){this.props[n]=mstr.$A.insert(this.props[n],items,start);if(start==null||start<0){start=mstr.$A.len(this.props[n])-len;}this.raiseEvent("listadd_"+n,{name:n,start:start,count:len});return start;}return null;};BM.prototype.listremove=function BM_listremove(n,ranges,sorted){var len=mstr.$A.len(ranges);if(len){var rangesSorted=sorted?ranges:ranges.concat().sort(mstr.$A.rangeSorter);this.props[n]=mstr.$A.removeRanges(this.props[n],rangesSorted);this.raiseEvent("listremove_"+n,{name:n,ranges:rangesSorted});return rangesSorted;}return null;};BM.prototype.listclear=function BM_listclear(n){var arr=this.props[n],len=arr&&arr.length;if(len){arr.splice(0,len);var rangeRemoved={min:0,max:len-1};this.raiseEvent(new mstr.lang.CustomEvent(this,"listremove_"+n,{name:n,ranges:[rangeRemoved]}));return rangeRemoved;}return null;};BM.prototype.hashadd=function BM_hashadd(n,items){var changed=mstr.$H.overwrite(this.props[n],items);if(changed){this.raiseEvent("hashadd_"+n,{name:n,at:changed});return true;}return false;};BM.prototype.hashremove=function BM_hashremove(n,keys){var changed=mstr.$H.remove(this.props[n],keys);if(changed){this.raiseEvent("hashremove_"+n,{name:n,at:changed});return true;}return false;};BM.prototype.hashclear=function BM_hashclear(n){var v=this.props[n],changedKeys=v&&mstr.utils.Hash.clear(v);if(changedKeys){this.raiseEvent(new mstr.lang.CustomEvent(this,"hashremove_"+n,{name:n,at:changedKeys}));return true;}return false;};BM.prototype.attachEventListener=function BM_aEL(listener,eventName,callbackMethodName){mstr.controllers.EventManager.attachEventListener(listener,this,eventName,callbackMethodName);};BM.prototype.detachEventListener=function BM_dEL(listener,eventName){mstr.controllers.EventManager.detachEventListener(listener,this,eventName);};BM.prototype.raiseEvent=function BM_raiseEvent(name,memo){if(this._shouldBroadcastEvent(name)){var evt=new mstr.lang.CustomEvent(this,name,memo);if(this["on_"+name]){this["on_"+name](evt);}this.notifyListeners(evt);}};BM.prototype._shouldBroadcastEvent=function BM_shouldBroadcastEvent(n){var b=this.BROADCASTS[n];if(b==undefined){b=this.BROADCASTS._DEFAULT_;}return b;};BM.prototype.getRMCModel=function BM_getRMCModel(){return this.props.rmc;};BM.prototype.setRMCModel=function BM_setRMCModel(model,modelClass,props){this.props.rmc=model;if(model){model.props.parent=this;}};BM.prototype.notifyListeners=function BM_notifyListeners(evt){mstr.controllers.EventManager.notifyListeners(this,evt);};BM.prototype.execCommand=function BM_execCommand(n){if(this["exec"+n]){var params=[],len=arguments.length;for(var i=1;i<len;i++){params[i-1]=arguments[i];}return this["exec"+n].apply(this,params);}if(n.substring(0,4)=="Set_"){n=n.substring(4);if(n!=""){return this.set(n,arguments[1]);}}};BM.prototype.queryCommandEnabled=function BM_queryCommandEnabled(n,v){if(n.substring(0,4)=="Set_"){return true;}if(this["queryEnabled"+n]){return this["queryEnabled"+n](v);}else{return !!this.props["CommandEnabled"+n];}};BM.prototype.submitRequest=function BM_submitRequest(reqInputs,memo){var g=mstr.http&&mstr.http.Governor;if(!g){return ;}if(!this.onRequestCallback){return ;}var ctxt=this.props.requestContext;if(ctxt&&ctxt.id){var bMatch=false;switch(this.props.readyState){case mstr.Enum.Widget.READYSTATE.WAITING:case mstr.Enum.Widget.READYSTATE.SUCCESS:if((ctxt.inputs.url==reqInputs.url)&&mstr.$H.equals(ctxt.inputs.params,reqInputs.params)){ctxt.memo=memo;return ctxt.id;}break;}this.cancelRequest(ctxt.id);}var id=g.submitRequest(reqInputs,this.getId(),"onRequestCallback");if(!ctxt){ctxt=this.props.requestContext={};}ctxt.id=id;ctxt.inputs=reqInputs;ctxt.memo=memo;ctxt.response=null;this.onRequestCallback(g.requests.lookup[id]);return id;};BM.prototype.cancelRequest=function BM_cancelRequest(reqId){if(this.successTimer){self.clearTimeout(this.successTimer);delete this.successTimer;}return mstr.http.Governor.cancelRequest(reqId,this.getId());};BM.prototype.execCancelRequest=function BM_execCancelReq(){var ctxt=this.props.requestContext;if(ctxt&&ctxt.id){return this.cancelRequest(ctxt.id);}return false;};BM.prototype.onRequestCallback=function BM_onRequestCallback(req){if(!req||!this.props.requestContext||(this.props.requestContext.id!=req.id)){return ;}this.props.requestContext.response=req.response;this.set("readyState",req.readyState);if(req.readyState==mstr.Enum.Widget.READYSTATE.SUCCESS){if(this.loadRequestResponse){var id=this.getId(),me=this;this.successTimer=self.setTimeout(function(){mstr.$obj(id).loadRequestResponse();delete me.successTimer;},1);}else{this.props.requestContext={};this.set("readyState",mstr.Enum.Widget.READYSTATE.IDLE);}}};BM.prototype.init=function BM_init(excludedProps){var props=this.props;var doc=props[mstr.$W.DOCUMENT];var ex=(excludedProps)?("|"+excludedProps.join("|")+"|"):"";for(var n in props){if(ex.indexOf("|"+n+"|")!=-1){continue;}var v=props[n];if(v==null||n=="parent"){continue;}var obj=null;if(mstr.$A.isArray(v)){var nonInstantiable=0;for(var i=0,len=mstr.$A.len(v);i<len;i++){var v2=v[i];if(v2==null){continue;}if(v2.getId){v2.props&&(v2.props[mstr.$W.PARENT]=this);nonInstantiable=0;}else{if(typeof (v2)=="object"){obj=v2[mstr.$W.SCRIPTCLASS]&&mstr.controllers.Factory.registerJSON(v2,doc);if(obj){v[i]=obj;obj.props&&(obj.props[mstr.$W.PARENT]=this);obj.init&&obj.init();nonInstantiable=0;}else{nonInstantiable++;if(nonInstantiable>2){break;}}}}}}else{if(v.getId){v.props&&(v.props[mstr.$W.PARENT]=this);}else{if(typeof (v)=="object"){obj=v[mstr.$W.SCRIPTCLASS]&&mstr.controllers.Factory.registerJSON(v,doc);if(obj){props[n]=obj;obj.props&&(obj.props[mstr.$W.PARENT]=this);obj.init&&obj.init();}}}}}};BM.prototype._createNewModel=function BM_createNewModel(properties){var scriptClass=properties.scriptClass;if(!scriptClass){return null;}var m=new mstr.models[scriptClass](properties);if(!m){return null;}mstr.controllers.Factory.add(m);var zz=m.init&&m.init();return m;};BM.prototype.getAncestorByProperty=function BM_getAncestorByProperty(n,inclusive){var p=(inclusive)?this:this.get("parent");while(p){if(mstr.controllers.Factory.getPath(n,p)){return p;}p=p.get("parent");}return null;};BM.prototype.getAncestorByPropertyValue=function BM_getAncestorByPropertyValue(n,v,inclusive){if(!(v instanceof RegExp)){v=new RegExp(v);}var p=this.getAncestorByProperty(n,inclusive);while(p){var t=mstr.controllers.Factory.getPath(n,p);if(t&&v.test(t)){return p;}p=p.getAncestorByProperty(n,inclusive);}return null;};function BM(props){this.props=mstr.utils.Hash.applydefault(props,this.DEFAULTS);}return BM;})();mstr.models.BooleanTaskModel=(function(){mstr.$O.extendsClass(BTM,mstr.models.BaseModel);BTM.prototype.execSubmit=function BTM_execFetchBlock(reqInputs){this.submitRequest(reqInputs,{});};BTM.prototype.loadRequestResponse=function BTM_loadRequestResponse(){var ctxt=this.props.requestContext;var res=ctxt&&ctxt.response;if(!res||!res.data){this.set("readyState",mstr.Enum.Widget.READYSTATE.ERROR);return ;}this.set("readyState",mstr.Enum.Widget.READYSTATE.SUCCESS);};function BTM(props){mstr.models.BaseModel.apply(this,[props]);}return BTM;})();mstr.http={};mstr.http.Governor=(function(){var G={};G.procs={};G.requests={pending:[],lookup:{}};G.go=function G_go(){var r=this._nextRequest();if(!r){return ;}var p=this._freeProc(r);if(!p){var c=r&&r.inputs&&r.inputs.params&&r.inputs.params.processorClass;if(c){p=new c();mstr.controllers.Factory.add(p);this.addProc(p,true);}}if(!p){this.requests.pending.unshift(r.id);return ;}this._assignRequestToProc(r,p);};G._nextRequest=function G_nextRequest(){var id=this.requests.pending.shift();return id&&this.requests.lookup[id];};G._freeProc=function G_freeProc(r){for(var id in this.procs){var p=this.procs[id];if(!p){continue;}switch(p.props.readyState){case mstr.Enum.Widget.READYSTATE.IDLE:case mstr.Enum.Widget.READYSTATE.SUCCESS:case mstr.Enum.Widget.READYSTATE.ERROR:case mstr.Enum.Widget.READYSTATE.CANCELLED:case mstr.Enum.Widget.READYSTATE.TIMEOUT:var c=r&&r.inputs&&r.inputs.params&&r.inputs.params.processorClass;if(c){if(p.constructor==c){return p;}}else{if(p.constructor!=mstr.http.PUProcessor){return p;}}}}};G.addProc=function G_addProc(p,addOnly){if(!p){return ;}var id=mstr.controllers.Factory.validateId(p);this.procs[id]=p;mstr.controllers.EventManager.attachEventListener(this,p,"set_readyState","on_proc_set_readyState");if(!addOnly){this.go();}};G.submitRequest=function G_submitRequest(reqInputs,callbackObjectId,callbackMethodName){var id;var lookupItem=this.searchForRequestInputs(reqInputs);if(lookupItem){id=lookupItem.id;lookupItem.callbacks[callbackObjectId]=callbackMethodName;}else{var id=mstr.controllers.Factory.nextFreeId();var lookupItem={id:id,inputs:reqInputs,callbacks:{},readyState:mstr.Enum.Widget.READYSTATE.WAITING,response:null,proc:null};this.requests.lookup[id]=lookupItem;lookupItem.callbacks[callbackObjectId]=callbackMethodName;this.requests.pending.push(id);window.setTimeout("mstr.http.Governor.go()",10);}return id;};G.searchForRequestInputs=function G_searchReqInputs(reqInputs){if(!reqInputs||reqInputs.htmlForm){return null;}var queueItems=this.requests.lookup;for(var id in queueItems){switch(queueItems[id]["readyState"]){case mstr.Enum.Widget.READYSTATE.TIMEOUT:case mstr.Enum.Widget.READYSTATE.ERROR:case mstr.Enum.Widget.READYSTATE.CANCELLED:continue;}var qInputs=queueItems[id]["inputs"];if((qInputs.url==reqInputs.url)&&mstr.utils.Hash.equals(qInputs.params,reqInputs.params)){return queueItems[id];}}return null;};G.cancelRequest=function G_cancelRequest(reqId,callbackObjectId){if(!reqId){return ;}var callbacks=this.requests.lookup[reqId]&&this.requests.lookup[reqId].callbacks;if(callbacks){delete callbacks[callbackObjectId];}var bFound=false;if(callbacks){for(var cid in callbacks){bFound=true;break;}}if(!bFound){this.removeRequest(reqId);}};G.removeRequest=function G_removeRequest(reqId){this.requests.pending=mstr.$A.removeItems(this.requests.pending,[reqId]);delete this.requests.lookup[reqId];};G._assignRequestToProc=function G_assignRequestToProc(req,proc){req.proc=proc;proc.props.req=req;proc.setInputs(req.inputs);proc.submit();};G.on_proc_set_readyState=function G_on_proc_set_readyState(evt){var proc=evt&&evt.src;var readyState=proc.get("readyState");var req=proc.props.req;if(req){if(req.readyState!=readyState){req.readyState=readyState;switch(readyState){case mstr.Enum.Widget.READYSTATE.SUCCESS:req.totalTime=proc.props.lastSuccess-proc.props.lastSubmit;mstr.timers.lastRequest=req.totalTime;case mstr.Enum.Widget.READYSTATE.ERROR:var res=req.response=proc.getResponse();if(res&&res.data){var jsc=mstr.controllers.Factory.create(res.data);if(jsc){jsc.init&&jsc.init();res.data=jsc;}}}this._notifyRequestCallbacks(req);switch(readyState){case mstr.Enum.Widget.READYSTATE.SUCCESS:if(!mstr.Settings.Http.CACHE){req.response=null;this.removeRequest(req.id);}break;}}}switch(readyState){case mstr.Enum.Widget.READYSTATE.SUCCESS:case mstr.Enum.Widget.READYSTATE.ERROR:case mstr.Enum.Widget.READYSTATE.TIMEOUT:case mstr.Enum.Widget.READYSTATE.CANCELLED:proc.props.req=null;proc.props.readyState=mstr.Enum.Widget.READYSTATE.IDLE;if(req){req.proc=null;}this.go();break;}};G._notifyRequestCallbacks=function G_notifyRequestCallbacks(req){if(!req||!req.callbacks){return ;}for(var id in req.callbacks){var obj=mstr.controllers.Factory.obj(id);if(!obj){continue;}var f=req.callbacks[id];if(obj[f]){obj[f](req);}}};G.onFrameProcLoad=function(hWin){if(hWin&&hWin.name){var frameProc=this._findFrameProcByFrameName(hWin.name);frameProc&&frameProc.update&&frameProc.update(hWin);}};G._findFrameProcByFrameName=function G_findFrameProcBFN(n){for(var id in this.procs){var p=this.procs[id];if(p&&p.props&&(p.props.frameName==n)){return p;}}return null;};G.props={};G.getId=function(){return this.props.id;};G.setId=function(id){this.props.id=id;};mstr.controllers.Factory.add(G);return G;})();mstr.http.XHRProcessor=(function(){mstr.$O.extendsClass(XHR,mstr.models.BaseModel);XHR.prototype.isHTTPProcessor=true;XHR.prototype.setInputs=function XHR_setInputs(inputs){this.props.inputs=inputs;this.props.readyState=mstr.Enum.Widget.READYSTATE.IDLE;this.props.response=null;};XHR.prototype.submit=function XHR_submit(){var ps=this.props;ps.response=null;ps.cancelled=true;ps.readyState=mstr.Enum.Widget.READYSTATE.WAITING;ps.lastSubmit=new Date();var xhr=this._xhr;if(!xhr){xhr=this._xhr=self.XMLHttpRequest?new XMLHttpRequest():(self.ActiveXObject?new ActiveXObject("Microsoft.XMLHTTP"):null);}if(xhr){var inputs=ps.inputs,params=inputs&&inputs.params,arr=[];this._addEnv(params);var url=this._getURL(params);if(microstrategy.mstrwid){params.mstrwid=microstrategy.mstrwid;}this._makeArray(params,arr);arr.push("_xts_="+new Date().getTime());var paramString=arr.join("&");if(microstrategy.sessionId&&!url.match(/jsessionid=/)){url+=";jsessionid="+microstrategy.sessionId;}if(mstr.utils.ISIE4){xhr.abort();}var xhrCallback=new Function("","mstr.$obj('"+this.getId()+"')._onreadystatechange()");if(mstr.utils.ISFF3_5){xhr.onload=xhr.onerror=xhrCallback;}else{xhr.onreadystatechange=xhrCallback;}xhr.open("POST",url,true);xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");xhr.setRequestHeader("Content-Length",paramString.length);xhr.send(paramString);}else{this.set("readyState",mstr.Enum.Widget.READYSTATE.ERROR);}};XHR.READYSTATE={UNINITIALIZED:0,LOADING:1,LOADED:2,INTERACTIVE:3,COMPLETE:4};XHR.prototype._addEnv=function XHR_addEnv(params){if(params){params.taskEnv="juil_xhr";}};XHR.prototype._makeArray=function XHR_makeArray(params,arr){for(var n in params){arr.push(n+"="+encodeURIComponent(params[n]));}};XHR.prototype._getURL=function XHR_getURL(params){return this.props.taskURL;};XHR.prototype._processResponse=function XHR_processResponse(txt){var r;if(txt){try{eval("r = "+txt);}catch(localerr){}}this.props.response={data:r};};XHR.prototype._onreadystatechange=function XHR_onreadystatechange(){var xhr=this._xhr,xhr_rs=xhr&&xhr.readyState,enXHR=XHR.READYSTATE,enRS=mstr.Enum.Widget.READYSTATE;switch(xhr_rs){case enXHR.UNINITIALIZED:rs=enRS.IDLE;break;case enXHR.LOADING:case enXHR.LOADED:case enXHR.INTERACTIVE:rs=enRS.WAITING;break;case enXHR.COMPLETE:rs=enRS.ERROR;if(xhr.status==200){var txt=xhr.responseText;this._processResponse(txt);rs=enRS.SUCCESS;this.props.lastSuccess=new Date();}else{if(xhr.status>=400){var res={status:xhr.status,statusText:xhr.statusText};var headers=xhr.getAllResponseHeaders().split("\n");if(headers){var headerJSON={};for(var i=0;i<headers.length-1;i++){var header=headers[i];header=header.split(": ",2);headerJSON[header[0]]=header[1];}if(headerJSON["X-MSTR-TaskFailureMsg"]){res.data=headerJSON["X-MSTR-TaskFailureMsg"];}if(headerJSON["X-MSTR-TaskErrorCode"]){res.taskErrorCode=parseInt(headerJSON["X-MSTR-TaskErrorCode"])+4294967296;}}this.props.response=res;}}if(!mstr.utils.ISIE4&&xhr.abort){var temp=xhr.onreadystatechange;xhr.abort();if(temp){xhr.onreadystatechange=temp;}}break;default:rs=enRS.ERROR;break;}this.set("readyState",rs);};XHR.prototype.cancel=function XHR_cancel(){if(this.props.readyState==mstr.Enum.Widget.READYSTATE.WAITING){this.props.cancelled=true;if(this._xhr&&this._xhr.abort){this._xhr.abort();}this.set("readyState",mstr.Enum.Widget.READYSTATE.CANCELLED);}};XHR.prototype.getResponse=function XHR_getResponse(){return this.props.response;};function XHR(props){mstr.models.BaseModel.apply(this,[props]);}return XHR;})();mstr.http.PUProcessor=(function(){mstr.$O.extendsClass(PUP,mstr.http.XHRProcessor);PUP.prototype._addEnv=function PUP_addEnv(params){};PUP.prototype._makeArray=function PUP_makeArray(params,arr){for(var n in params){if(typeof params[n]=="object"){for(var j=0;j<params[n].length;j++){arr.push(n+"="+encodeURIComponent(params[n][j]));}}else{arr.push(n+"="+encodeURIComponent(params[n]));}}};PUP.prototype._getURL=function PUP_getURL(params){var url=params.action;params.xhr="true";delete params.action;delete params.processorClass;delete params.target;return url;};PUP.prototype._processResponse=function PUP_processResponse(txt){var r;if(txt){var errorEnd=txt.indexOf("{status");if(errorEnd!=-1){try{eval("r = "+txt.substring(errorEnd));if(r){r.components.push({id:"mstrWeb_error",content:txt.substring(0,errorEnd).replace(/\r\n/g,"")});}}catch(localerr){}}}if(r){this.props.response={data:r};}else{this.props.response={text:txt};}};function PUP(props){mstr.http.XHRProcessor.apply(this,[props]);}return PUP;})();mstr.behaviors={};mstr.behaviors.featureResolver=(function(){var FR={};FR.absorbFeatures=function FR_absorbFeatures(features){this.features=features;};FR.resolveFeatSet=function FR_resolveFeatSet(featSet,def){if(featSet){var res=true;var featArr=featSet.split(";");for(var f in featArr){res=res&&this.featAvailable(featArr[f]);}return res;}else{return def;}};FR.featAvailable=function FR_featAvailable(feature){var resolvers=[];var reportBone;if(microstrategy.EXECUTION_SCOPE==microstrategy.RWD_EXECUTION){resolvers.push(microstrategy.getViewerBone());}else{if(microstrategy.EXECUTION_SCOPE==microstrategy.REPORT_EXECUTION){reportBone=mstr.$obj("UniqueReportID");resolvers.push("ReportFrame",reportBone);}}resolvers.push(FR);var resIndex;var resolverObjs=new Array();for(resIndex in resolvers){var resolver=typeof (resolvers[resIndex])=="string"?mstr.$obj(resolvers[resIndex]):resolvers[resIndex];if(resolver){resolverObjs.push(resolver);}}if(feature.charAt(0)=="e"&&feature.charAt(1)==":"){var m=microstrategy;var _bone_=reportBone;if(!_bone_&&feature.indexOf("_bone_")>0){return false;}return eval(feature.substring(2,feature.length));}var feat=feature,show,undef,currBone,neg;if(feature.charAt(0)=="!"){feat=feature.substring(1,feature.length);neg=true;}show=false;undef=true;for(resIndex in resolverObjs){currBone=resolverObjs[resIndex];if(currBone&&currBone.features){undef=undef&&currBone.features[feat]==undefined;show=show||(currBone.features[feat]!=undefined&&currBone.isFeatureAvailable(feat));}}show=neg?!(undef||show):undef||show;return show;};FR.isFeatureAvailable=function FR_isFeatureAvailable(name){var __result=true;if((this.features!=null)&&typeof (this.features[name])!=undefined){__result=this.features[name];}return __result;};return FR;})();
