function Address(){}function Config(n){var t=this,i;t.Options=Ext.merge(t.Options,n);t.initializeSiteUrls();t.initializeAjaxErrorHandling();i=Ext.create("Ext.state.CookieProvider",{expires:new Date((new Date).getTime()+7776e6)});Ext.state.Manager.setProvider(i);Ext.onReady(function(){Ext.on("beforeunload",function(){t.Options.DisableAjaxErrorHandling=!0});Ext.on("unload",function(){t.Options.DisableAjaxErrorHandling=!0})})}function HashManager(n){var t=this,u,i,r,f;if(t.options=Ext.merge(t.options,n),t.state.urlVars=UrlHelper.getUrlVars(),t.state.useHistory=typeof history.pushState!="undefined",(location.hash==""||location.hash.length<3)&&t.options.enableCookies&&t.options.enabled&&(u=Ext.util.Cookies.get(t.options.cookie),t.state.viewState=Ext.decode(t.decompressString(u)),t.saveState()),t.options.enabled)if(t.state.useHistory&&Ext.isDefined(t.state.urlVars.viewstate)&&(Ext.isDefined(t.state.urlVars.AllowDirectLoad)||window.LAYOUT.Options.developmentMode))t.state.viewState=Ext.decode(t.decompressString(t.state.urlVars.viewstate)),t.state.stateIsValid=!0;else{i=function(){t.state.viewState={};t.state.stateIsValid=!1};try{r=location.hash.substring(1);r!=""?(f=t.decompressString(r),t.state.viewState=Ext.decode(f),t.state.stateIsValid=!0):i()}catch(e){i()}}t.saveState()}function log(){var n,t;if(navigator.appName!="Microsoft Internet Explorer"&&typeof console=="object"&&typeof console.log=="function")for(n in arguments)t=arguments[n]}function Layout(n){var t=this,i,r,u;if(Ext.merge(t.Options,n),window.LAYOUT=t,t.Options.staticAdmin&&(t.Options.noLayout=!0,t.State.layoutLess=!0),t.State.queryString=UrlHelper.getUrlVars(),i=t.State.queryString.embed,i&&(i=i.toLowerCase(),i=i=="true"||i=="1"||i=="yes"?!0:!1,t.Options.isSiteEmbedded=i,t.setEmbeddedState(i)),window.top!=window.self&&t.State.queryString.embed&&Ext.isSafari&&(r=sessionStorage.getItem("iframetest"),!r)){u=config.getUrl("landing/iframefix?redirect="+encodeURIComponent(document.referrer),!0);top.location=u;sessionStorage.setItem("iframetest",1);return}if(t.InitializeStateManager(),Ext.isIE&&Ext.ieVersion<8&&Ext.ieVersion>0&&t.Options.currentAction!="browser"&&t.Options.currentController!="support"){document.location=config.getUrl("public/support/browser");return}t.Options.noLayout==!1&&(t.State.showWelcomeMessage=!0,t.State.layoutLess=typeof t.State.queryString.layoutless!="undefined"&&t.State.queryString.layoutless.toLowerCase()=="true",t.State.layoutLess&&(t.Options.isSiteEmbedded=!0),t.Options.enableComposer==!0&&(t.State.layoutComposer=new CourseSearchLayoutComposer({displayMode:t.Options.displayMode,selectedLayout:t.Options.selectedLayout})));Ext.onDocumentReady(function(){var n,i;if(t.enableSessionTimer(),Ext.QuickTips.init(),n=Ext.dom.Query.selectNode("#layout-container-top"),t.State.body=n?Ext.get(n):Ext.getBody(),t.showMessages(),window.top!=window.self&&(i=Ext.TaskManager.start({interval:1e3,run:function(){var n=Ext.dom.Element.getDocumentHeight();Ext.isIE&&Ext.ieVersion<9?top.postMessage(n,"*"):top.postMessage({height:n},"*")}})),t.Options.noLayout){t.fireLayoutComplete();return}t.Options.currentController=="course"&&t.Options.currentAction=="browse"||(t.State.showWelcomeMessage=!1);t.State.layoutLess&&(t.Options.Settings.PublicHeaderVisible=!1,t.Options.Settings.PublicFooterVisible=!1,$(".grad_stud_top_info").hide(),$("#layout-welcomeuser").hide(),$("#layout-top-info-middle").hide(),$("#grad_stud_title").css({float:"none",textAlign:"left"}));t.InitLayoutEditor();t.RenderAdminMenu();t.fireLayoutComplete()})}function PopupHelper(n){var t=this;t.documentClickAction=n.documentClickAction;t.popupElement=n.popupElement;Ext.onDocumentReady(function(){t.popupElement.on("click",function(){var n=arguments[0];n.stopPropagation();t.popupClicked=!0});Ext.get(document).on("click",function(){var n=Ext.util.Cookies.get("FirstToRunOnLogInInit"),i=Ext.util.Cookies.get("FirstToRunOnLogInClick");(typeof n=="null"||n=="false")&&(Ext.util.Cookies.set("FirstToRunOnLogInClick","popuphelper"),Ext.util.Cookies.set("FirstToRunOnLogInInit",!0));t.popupClicked||t.keepPopup||t.documentClickAction();t.popupClicked=!1});var n=new Ext.util.KeyMap({target:document,binding:[{key:[27],fn:function(){t.popupClicked||t.keepPopup||t.documentClickAction();t.popupClicked=!1}}]})})}function checkEmailAvailability(n,t){var i=!1,u,r;return/\s/g.test(n)&&(n=n.replace(/\s+/g,""),Ext.getCmp(t.id).setValue(n)),u=t.originalValue,r="",n!=""&&Ext.Ajax.request({async:!1,method:"POST",url:config.getUrl("public/user/CheckStudentUsernameAvailable"),params:{Username:n},success:function(f){f.responseText=="available"?(t.clearInvalid(),i=!0):(r="Username already exist. Please try another.",i=!1,u==n?i=!0:f.responseText=="invalidhaiku"&&(i=!1,r="Username contains invalid charater(s)."));var e=r;UIHandling(e,t,i)},failure:function(){alert("Error in connection. Pls advice administrator.")}}),i}function checkEmailFormat(n){return/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/.test(n)?!0:!1}function checkPasswordFormat(n){return/^(?=.*\d)(?=.*[a-z])(?=.*[A-Z])[0-9a-zA-Z]{8,}$/.test(n)?!0:!1}function checkEmailRestriction(n,t,i){var r,u,f,e;if(n==""){UIHandling("",t,!0);return}r=checkEmailFormat(n);r||(u='Invalid e-mail address format "user@example.com"');r?(f=n.split("@"),e="@"+f[1],Ext.Ajax.request({async:!1,method:"POST",url:config.getUrl("public/user/CheckEmailRestriction"),params:{domain:e},success:function(r){var u=Ext.decode(r.responseText),f;u.OnOff==1?u.valid?(validEmailWhitlist=!0,UIHandling("",t,!0),i=="emailcon2"&&checkEmailAvailability(n,t)):(validEmailWhitlist=!1,f=u.EmailNotification,UIHandling(f,t,!1)):(validEmailWhitlist=!0,UIHandling("",t,!0))},failure:function(){alert("Error in connection. Pls advice administrator.")}})):UIHandling(u,t,!1)}function checkPhoneFormat(n,t){if(n!="")UIHandling("Not a valid phone number. Must be in the format (123) 456-7890.",t,/^\(?([0-9]{3})\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$|^Ext. [0-9]+$/.test(n))}function checkPasswordFormat(n,t){var r=Ext.getCmp("errdisp"+t.id),f,e,o,i;if(n!=""){var u=!0,i="";return errmsg0=" At least one letter <\/br>",/(?=.*[a-zA-Z])/.test(n)?i+="<img src='/Images/Icons/FamFamFam/accept.png'/> "+errmsg0:(i+="<img src='/Images/Icons/FamFamFam/crossinv.png'/> "+errmsg0,u=!1),f=/(?=.*[A-Z])/,errmsg1="At least one capital letter <\/br>",f.test(n)?i+="<img src='/Images/Icons/FamFamFam/accept.png'/> "+errmsg1:(i+="<img src='/Images/Icons/FamFamFam/crossinv.png'/> "+errmsg1,u=!1),e=/(?=.*[0-9])/,errmsg2="At least one number <\/br>",e.test(n)?i+="<img src='/Images/Icons/FamFamFam/accept.png'/> "+errmsg2:(i+="<img src='/Images/Icons/FamFamFam/crossinv.png'/> "+errmsg2,u=!1),o=/[0-9a-zA-Z]{8,}/,errmsg3="Be at least 8 characters <\/br>",n.toString().length>=8?i+="<img src='/Images/Icons/FamFamFam/accept.png'/> "+errmsg3:(i+="<img src='/Images/Icons/FamFamFam/crossinv.png'/> "+errmsg3,u=!1),u?(r.setValue(""),r.hide(),ErrorBoxField(t,!0),!0):(r.setValue("<font style='color: #c0272b;font: normal 11px/16px tahoma, arial, verdana, sans-serif;'>"+i+"<\/font>"),r.show(),ErrorBoxField(t,!1),!1)}return i="This field is required",r.setValue('<div role="alert" aria-live="polite" id="UserWdgt1Formstudnum-cfrm-errorEl" data-ref="errorEl" class="x-form-error-msg x-form-invalid-under x-form-invalid-under-default" data-anchortarget="UserWdgt1Formstudnum-cfrm-inputEl"><ul class="x-list-plain"><li>This field is required<\/li><\/ul><\/div>'),r.show(),ErrorBoxField(t,!1),!1}function UIHandling(n,t,i){if(i==!1){t.triggerWrap.addCls("x-form-trigger-wrap-invalid");t.inputWrap.addCls("x-form-text-wrap-invalid");t.inputEl.addCls("x-form-invalid-field").addCls("x-form-invalid-field-default");var r=n;t.errorWrapEl.setVisible(!0);$("#"+t.errorEl.id).append('<ul class="x-list-plain" style="color:#c0272b;font: 11px/16px tahoma,arial,verdana,sans-serif"><li>'+r+"<\/li><\/ul>")}else t.triggerWrap.removeCls("x-form-trigger-wrap-invalid"),t.inputWrap.removeCls("x-form-text-wrap-invalid"),t.inputEl.removeCls("x-form-invalid-field").removeCls("x-form-invalid-field-default"),t.errorWrapEl.setVisible(!1),$("#"+t.errorWrapEl.id+" > .x-list-plain").text("")}function ErrorBoxField(n,t){t==!1?(n.triggerWrap.addCls("x-form-trigger-wrap-invalid"),n.inputWrap.addCls("x-form-text-wrap-invalid"),n.inputEl.addCls("x-form-invalid-field").addCls("x-form-invalid-field-default")):(n.triggerWrap.removeCls("x-form-trigger-wrap-invalid"),n.inputWrap.removeCls("x-form-text-wrap-invalid"),n.inputEl.removeCls("x-form-invalid-field").removeCls("x-form-invalid-field-default"))}var lastCenter,BgfldCounter,BgfldpropTotal,ModelHelper,UrlHelper,Validators;Ext.define("Ext.ux.GMapPanel",{extend:"Ext.panel.Panel",alias:"widget.gmappanel",requires:["Ext.window.MessageBox"],initComponent:function(){Ext.applyIf(this,{plain:!0,gmapType:"map",border:!1});this.callParent()},onBoxReady:function(){var n=this.center;this.callParent(arguments);n?n.geoCodeAddr?this.lookupCode(n.geoCodeAddr,n.marker):this.createMap(n):Ext.Error.raise("center is required")},createMap:function(n,t){var i=Ext.apply({},this.mapOptions);i=Ext.applyIf(i,{zoom:14,center:n,mapTypeId:google.maps.MapTypeId.HYBRID});this.gmap=new google.maps.Map(this.body.dom,i);t&&this.addMarker(Ext.applyIf(t,{position:n}));lastCenter=this.gmap.getCenter();Ext.each(this.markers,this.addMarker,this);this.fireEvent("mapready",this,this.gmap)},addMarker:function(n){n=Ext.apply({map:this.gmap},n);n.position||(n.position=new google.maps.LatLng(n.lat,n.lng));var t=new google.maps.Marker(n);return Ext.Object.each(n.listeners,function(n,i){google.maps.event.addListener(t,n,i)}),t},lookupCode:function(n,t){this.geocoder=new google.maps.Geocoder;this.geocoder.geocode({address:n},Ext.Function.bind(this.onLookupComplete,this,[t],!0))},onLookupComplete:function(n,t,i){if(t!="OK"){Ext.MessageBox.alert("Error",'An error occured: "'+t+'"');return}this.createMap(n[0].geometry.location,i)},afterComponentLayout:function(){this.callParent(arguments);this.redraw()},redraw:function(){var n=this.gmap;n&&(google.maps.event.trigger(n,"resize"),lastCenter!==undefined&&n.setCenter(lastCenter))}});Ext.define("Ext.ux.form.MultiSelect",{extend:"Ext.form.FieldContainer",mixins:["Ext.util.StoreHolder","Ext.form.field.Field"],alternateClassName:"Ext.ux.Multiselect",alias:["widget.multiselectfield","widget.multiselect"],requires:["Ext.panel.Panel","Ext.view.BoundList","Ext.layout.container.Fit"],uses:["Ext.view.DragZone","Ext.view.DropZone"],layout:"anchor",ddReorder:!1,appendOnly:!1,displayField:"text",allowBlank:!0,minSelections:0,maxSelections:Number.MAX_VALUE,blankText:"This field is required",minSelectionsText:"Minimum {0} item(s) required",maxSelectionsText:"Maximum {0} item(s) required",delimiter:",",dragText:"{0} Item{1}",ignoreSelectChange:0,initComponent:function(){var n=this;n.items=n.setupItems();n.bindStore(n.store,!0);n.store.autoCreated&&(n.valueField=n.displayField="field1",n.store.expanded||(n.displayField="field2"));Ext.isDefined(n.valueField)||(n.valueField=n.displayField);n.callParent();n.initField()},setupItems:function(){var n=this;n.boundList=Ext.create("Ext.view.BoundList",Ext.apply({anchor:"none 100%",border:1,multiSelect:!0,store:n.store,displayField:n.displayField,disabled:n.disabled},n.listConfig));n.boundList.getSelectionModel().on("selectionchange",n.onSelectChange,n);return(n.boundList.pickerField=n,!n.title)?n.boundList:(n.boundList.border=!1,{border:!0,anchor:"none 100%",layout:"anchor",title:n.title,tbar:n.tbar,items:n.boundList})},onSelectChange:function(n,t){this.ignoreSelectChange||this.setValue(t)},getSelected:function(){return this.boundList.getSelectionModel().getSelection()},isEqual:function(n,t){var u=Ext.Array.from,i=0,r;if(n=u(n),t=u(t),r=n.length,r!==t.length)return!1;for(;i<r;i++)if(t[i]!==n[i])return!1;return!0},afterRender:function(){var n=this,t;n.callParent();n.selectOnRender&&(t=n.getRecordsForValue(n.value),t.length&&(++n.ignoreSelectChange,n.boundList.getSelectionModel().select(t),--n.ignoreSelectChange),delete n.toSelect);!n.ddReorder||n.dragGroup||n.dropGroup||(n.dragGroup=n.dropGroup="MultiselectDD-"+Ext.id());(n.draggable||n.dragGroup)&&(n.dragZone=Ext.create("Ext.view.DragZone",{view:n.boundList,ddGroup:n.dragGroup,dragText:n.dragText}));(n.droppable||n.dropGroup)&&(n.dropZone=Ext.create("Ext.view.DropZone",{view:n.boundList,ddGroup:n.dropGroup,handleNodeDrop:function(t,i,r){var e=this.view,o=e.getStore(),u=t.records,f;t.view.store.remove(u);f=o.indexOf(i);r==="after"&&f++;o.insert(f,u);e.getSelectionModel().select(u);n.fireEvent("drop",n,u)}}))},isValid:function(){var n=this,t=n.disabled,i=n.forceValidation||!t;return i?n.validateValue(n.value):t},validateValue:function(n){var t=this,i=t.getErrors(n),r=Ext.isEmpty(i);return t.preventMark||(r?t.clearInvalid():t.markInvalid(i)),r},markInvalid:function(n){var t=this,i=t.getActiveError();t.setActiveErrors(Ext.Array.from(n));i!==t.getActiveError()&&t.updateLayout()},clearInvalid:function(){var n=this,t=n.hasActiveError();n.unsetActiveError();t&&n.updateLayout()},getSubmitData:function(){var n=this,t=null,i;return n.disabled||!n.submitValue||n.isFileUpload()||(i=n.getSubmitValue(),i!==null&&(t={},t[n.getName()]=i)),t},getSubmitValue:function(){var n=this,t=n.delimiter,i=n.getValue();return Ext.isString(t)?i.join(t):i},getValue:function(){return this.value||[]},getRecordsForValue:function(n){for(var u=this,f=[],e=u.store.getRange(),s=u.valueField,i=0,h=e.length,r,t,o=n.length;i<o;++i)for(t=0;t<h;++t)r=e[t],r.get(s)==n[i]&&f.push(r);return f},setupValue:function(n){var u=this.delimiter,e=this.valueField,t=0,r,f,i;if(Ext.isDefined(n)){for(u&&Ext.isString(n)?n=n.split(u):Ext.isArray(n)||(n=[n]),f=n.length;t<f;++t)i=n[t],i&&i.isModel&&(n[t]=i.get(e));r=Ext.Array.unique(n)}else r=[];return r},setValue:function(n){var t=this,i=t.boundList.getSelectionModel(),r=t.store;if(!r.getCount()){r.on({load:Ext.Function.bind(t.setValue,t,[n]),single:!0});return}n=t.setupValue(n);t.mixins.field.setValue.call(t,n);t.rendered?(++t.ignoreSelectChange,i.deselectAll(),n.length&&i.select(t.getRecordsForValue(n)),--t.ignoreSelectChange):t.selectOnRender=!0},clearValue:function(){this.setValue([])},onEnable:function(){var n=this.boundList;this.callParent();n&&n.enable()},onDisable:function(){var n=this.boundList;this.callParent();n&&n.disable()},getErrors:function(n){var t=this,u=Ext.String.format,i=[],r;return n=Ext.Array.from(n||t.getValue()),r=n.length,!t.allowBlank&&r<1&&i.push(t.blankText),r<t.minSelections&&i.push(u(t.minSelectionsText,t.minSelections)),r>t.maxSelections&&i.push(u(t.maxSelectionsText,t.maxSelections)),i},onDestroy:function(){var n=this;n.bindStore(null);Ext.destroy(n.dragZone,n.dropZone);n.callParent()},onBindStore:function(n){var t=this.boundList;t&&t.bindStore(n)}});Ext.define("Skirtle.CTemplate",{extend:"Ext.XTemplate",statics:{AUTO_ID:0},copyDepth:10,cTpl:'<p id="ctemplate-{0}-{1}"><\/p>',isCTemplate:!0,constructor:function(){var n=this;n.callParent(arguments);n.id=++n.statics().AUTO_ID;n.reset()},copyValues:function(n,t){var i=this,r,f={},u=t||i.copyDepth;return u===1?n:Ext.isArray(n)?Ext.Array.map(n,function(n){return i.copyValues(n,u-1)}):Ext.isObject(n)?n.isComponent?(r=n.getId(),i.ids.push(r),Ext.String.format(i.cTpl,r,i.id)):(Ext.Object.each(n,function(n,t){f[n]=n==="$comp"?t:i.copyValues(t,u-1)}),f):n},doInsert:function(){var n=this.callParent(arguments);return this.injectComponents(),n},doPolling:function(n){var t=this;t.pollInterval=n;t.pollId&&clearTimeout(t.pollId);t.pollId=Ext.defer(t.injectComponents,n,t)},getPlaceholderEl:function(n){return Ext.get("ctemplate-"+n+"-"+this.id)},injectComponents:function(){for(var n=this,t=n.ids,i=t.length-1,u,f,r;i>=0;--i)u=t[i],f=Ext.getCmp(u),r=n.getPlaceholderEl(u),(n.renderComponent(f,r)||!f)&&(Ext.Array.splice(t,i,1),r&&r.remove());t.length&&n.doPolling(n.pollInterval*1.5)},overwrite:function(n){var t,i,r;if(Ext.isIE)for(t=Ext.getDom(n);i=t.firstChild;)t.removeChild(i);return r=this.callParent(arguments),this.injectComponents(),r},renderComponent:function(n,t){if(n&&t){var i=t.parent();return n.rendered?n.getEl().replace(t):n.render(i,t),Ext.isIE6&&i.repaint(),!0}return!1},reset:function(){var n=this;n.ids=[];n.pollId&&(clearTimeout(n.pollId),n.pollId=null)}},function(n){var t=function(){var n=this,t=Ext.Array.slice(arguments);return t[0]=n.copyValues(t[0]),n.doPolling(10),n.callParent(t)};n.prototype.applyOut?n.override({applyOut:t}):(n.override({applyTemplate:t}),n.createAlias("apply","applyTemplate"))});Ext.define("Skirtle.grid.column.Component",{alias:"widget.componentcolumn",extend:"Ext.grid.column.Column",requires:["Skirtle.CTemplate"],autoWidthComponents:!0,componentGC:!0,hasCustomRenderer:!0,lastFrameWidth:12,widthUpdateDelay:[10,400],constructor:function(){var n=this;n.callParent(arguments);n.compIds=[];n.dataIndex=n.dataIndex||Ext.id(null,"cc-dataIndex-");n.tpl=n.createTemplate(n.tpl);n.renderer=n.createRenderer(n.renderer);n.registerColumnListeners()},addRefOwner:function(n){var t=this,i=t.refOwnerFn||(t.refOwnerFn=function(){return t});t.extVersion<40200?n.getBubbleTarget=i:n.getRefOwner=i},applyTemplate:function(n,t){return Ext.isDefined(t)&&(n[this.dataIndex]=t),this.tpl.apply(n)},beforeViewRefresh:function(){if(Ext.isIE)for(var i=this.compIds,t=0,f=i.length,r,n,u;t<f;t++)(r=Ext.getCmp(i[t]))&&(n=r.getEl())&&(n=n.dom)&&(u=n.parentNode)&&u.removeChild(n)},calculateFrameWidth:function(n){var r=n.getEl(),t=r&&r.parent(),i=t&&t.parent();if(i)return this.lastFrameWidth=t.getBorderWidth("lr")+t.getPadding("lr")+i.getBorderWidth("lr")+i.getPadding("lr")},createRenderer:function(n){var t=this;return function(i,r,u){var f=Ext.apply({},u.data,u.getAssociatedData());return n&&(i=n.apply(this,arguments)),i=t.processValue(i),t.applyTemplate(f,i)}},createTemplate:function(n){return n&&n.isTemplate?n:Ext.create("Skirtle.CTemplate",n||["{",this.dataIndex,"}"])},destroyChild:function(n){n.destroy()},getRefItems:function(n){for(var t=this.callParent([n]),u=this.compIds,r=0,f=u.length,i;r<f;r++)(i=Ext.getCmp(u[r]))&&(t.push(i),n&&i.getRefItems&&t.push.apply(t,i.getRefItems(!0)));return t},onChildAfterRender:function(n){this.resizeChild(n)},onChildBoxReady:function(n){this.resizeChild(n,!1)},onChildDestroy:function(n){Ext.Array.remove(this.compIds,n.getId())},onChildResize:function(){this.redoScrollbars()},onColumnResize:function(n){n.resizeAll()},onColumnShow:function(n){n.resizeAll()},onColumnVisibilityChange:function(n){var i=n.getRefItems(),t=0,r=i.length,u=!n.isHidden();for(Ext.suspendLayouts&&Ext.suspendLayouts();t<r;++t)i[t].setVisible(u);Ext.resumeLayouts&&Ext.resumeLayouts(!0)},onDestroy:function(){Ext.destroy(this.getRefItems());this.callParent()},onRender:function(){this.registerViewListeners();this.callParent(arguments)},onViewChange:function(){var n=this,t=n.tpl;n.suspendResizing();t.isCTemplate&&(t.injectComponents(),t.reset());n.redoScrollbars();n.resumeResizing();n.performGC()},performGC:function(){for(var r=this.compIds,i=r.length-1,n,t;i>=0;--i)n=Ext.getCmp(r[i]),t=n&&n.getEl(),t&&(!this.componentGC||t.dom&&Ext.getDom(Ext.id(t))===t.dom)||n&&!n.isDestroyed&&n.destroy()},processValue:function(n){var t=this,e=t.compIds,u,i,r,f;return Ext.isObject(n)&&!n.isComponent&&n.xtype&&(n=Ext.widget(n.xtype,n)),n&&n.isComponent&&(u=n.getId(),Ext.Array.contains(e,u)||e.push(u),t.addRefOwner(n),t.registerListeners(n),n.rendered?Ext.isIE&&(r=n.el.dom,f=r.parentNode,f&&(t.extVersion===40101&&Ext.core.DomHelper.insertBefore(r,{tag:"p"}),f.removeChild(r))):t.autoWidthComponents&&(i=t.getWidth()-t.lastFrameWidth,i=i>4?i:4,n.setWidth(i)),(Ext.isIE6||Ext.isIE7)&&t.isHidden()&&n.hide()),n},redoScrollbars:function(){var n=this,t=n.up("tablepanel");if(t){if(n.resizeQueue){n.redoScrollbarsRequired=!0;return}n.extVersion<40100?(t.invalidateScroller(),t.determineScrollbars()):t.doLayout()}},registerColumnListeners:function(){var n=this;if(n.autoWidthComponents){n.on("resize",n.onColumnResize);n.on("show",n.onColumnShow)}if(Ext.isIE6||Ext.isIE7)n.on({hide:n.onColumnVisibilityChange,show:n.onColumnVisibilityChange})},registerListeners:function(n){var t=this;n.on("destroy",t.onChildDestroy,t);if(t.autoWidthComponents){n.on("afterrender",t.onChildAfterRender,t,{single:!0});if(!t.extVersion<40100)n.on("boxready",t.onChildBoxReady,t,{single:!0})}n.on("resize",t.onChildResize,t)},registerViewListeners:function(){var n=this,t=n.up("tablepanel").getView();n.mon(t,"beforerefresh",n.beforeViewRefresh,n);n.mon(t,"refresh",n.onViewChange,n);n.mon(t,"itemupdate",n.onViewChange,n);n.mon(t,"itemadd",n.onViewChange,n);n.mon(t,"itemremove",n.onViewChange,n)},resizeAll:function(){var n=this;n.suspendResizing();n.resizeQueue=n.getRefItems();n.resumeResizing()},resizeChild:function(n,t){var i=this,r,f,e,u;if(i.resizingSuspended){u=i.resizeQueue;Ext.Array.contains(u,n)||u.push(n);return}r=i.calculateFrameWidth(n);Ext.isNumber(r)&&(f=i.getWidth()-r,e=n.getWidth(),i.setChildWidth(n,f,e)&&t!==!1&&Ext.each(i.widthUpdateDelay,function(t){Ext.defer(i.resizeChild,t,i,[n,!1])}))},resumeResizing:function(){var n=this,t=0,i=n.resizeQueue,r=i.length;if(!--n.resizingSuspended){for(;t<r;++t)n.resizeChild(i[t]);n.resizeQueue=null;n.redoScrollbarsRequired&&n.redoScrollbars()}},setChildWidth:function(n,t,i){return i===t?!1:(n.setWidth(t),!0)},suspendResizing:function(){var n=this;n.resizingSuspended=(n.resizingSuspended||0)+1;n.resizeQueue||(n.resizeQueue=[])}},function(n){var i=n.prototype,t=Ext.getVersion();i.extVersion=(t.getMajor()*100+t.getMinor())*100+t.getPatch();Ext.Element.prototype.syncContent&&t.toString()==="4.1.0"&&(i.extVersion=40101)});Address.constructor=Address;Address.addressValidationCache={};Address.addressValidationCacheResult={};Address.prototype.getAddressString=function(n){var u=this,i="",t="",r=", ";return Ext.isEmpty(n.street)||n.street==null||n.street=="null"||(i+=t+n.street,t=r),Ext.isEmpty(n.city)||n.city==null||n.city=="null"||(i+=t+n.city,t=r),Ext.isEmpty(n.state)||n.state==null||n.state=="null"||(i+=t+n.state,t=r),Ext.isEmpty(n.zip)||n.zip==null||n.zip=="null"||(i+=t+n.zip,t=r),Ext.isEmpty(n.country)||n.country==null||n.country=="null"||(i+=t+n.country,t=r),i};Address.prototype.generateUrl=function(n,t){var s=this,u=function(i){var r,u;switch(i){case"mapquest":r="http://www.mapquest.com/?q=";break;case"google":r="http://maps.google.com/?q="}u=s.getAddressString(n);r+=u;win.close();Ext.isFunction(t)&&t(r)},i=[],f={xtype:"button",text:"Generate MapQuest link",flex:1,handler:function(){u("mapquest")}},e={xtype:"button",text:"Generate Google Map link",flex:1,handler:function(){u("google")}},o=function(n){if(n.length==0)return alert("Sorry, this function is disabled at the moment."),null;var t=Ext.create("Ext.window.Window",{modal:!0,title:"Generate MAP Url for location",width:Math.max(n.length*150,200),resizable:!1,layout:{type:"hbox",pack:"stretch"},items:n});return t.show(),t},r;if(Ext.isDefined(LiteApi)){r=LiteApi.getInstance();r.onReady(function(){r.isFeatureEnabled(r.options.featureNames.googlemap)&&i.push(e);r.isFeatureEnabled(r.options.featureNames.mapquestmap)&&i.push(f);win=o(i)})}else i.push(e),i.push(f),win=o(i)};Address.prototype.verifyAddress=function(n,t){var u=this,i=u.getAddressString(n),r;if(Ext.isDefined(Address.addressValidationCache[i])){t(Address.addressValidationCache[i],Address.addressValidationCacheResult[i]);return}r=new google.maps.Geocoder;r.geocode({address:i},function(n,r){if(Ext.isFunction(t)){var u=r=="OK"&&r!="ZERO_RESULTS";Address.addressValidationCache[i]=u;Address.addressValidationCacheResult[i]=n;t(u,n)}})};Address.prototype.showGoogleMapWindow=function(n,t){var i=this,r=i.getGoogleMapPanel(n,t),u=Ext.create("Ext.window.Window",{modal:!0,layout:"fit",title:t,width:400,height:400,resizable:!0,items:[r]});u.show()};Address.prototype.getGoogleMapPanel=function(n,t,i,r){var f=this,u;return Ext.isFunction(r)||(r=function(){}),u=f.getAddressString(n),i=Ext.merge({center:{geoCodeAddr:u,marker:{title:t,listeners:{click:r}}}},i),Ext.create("Ext.ux.GMapPanel",i)};Config.prototype.constructor=Config;Config.prototype.Options={DisableAjaxErrorHandling:!1,root:null,dotNetSiteUrl:null,aspSiteUrl:null,sessionCookie:null};Config.prototype.hasSessionCookie=function(){var n=this,t=Ext.util.Cookies.get(n.Options.sessionCookie);return t!=null};Config.prototype.initializeJqueryAjaxErrorHandling=function(){var n=this;Ext.ieVersion<9&&$(document).ajaxComplete(function(){n.runPlaceholderPlugin()})};Config.prototype.requestComplete=null;Config.prototype.runPlaceholderPlugin=function(){var n=this;clearTimeout(n.requestComplete);n.requestComplete=setTimeout(function(){$("input, textarea").placeholder()},500)};Config.prototype.initializeAjaxErrorHandling=function(){var n=this,t=function(n,t){var i,r,n;typeof t=="undefined"&&(t=!0);window.LAYOUT&&window.LAYOUT.Options.developmentMode&&t&&window.LAYOUT.notify("Ajax Application error occured, please check the developer console for details.");i=document.createElement("div");i.innerHTML=n;r=i.getElementsByTagName("style")[0];n=i.textContent||i.innerText||"";n=n.replace(/\s{2,}$/g," ");log(n)},i=function(n,i){if(log("---------------------------------------"),log("--------------ERROR START--------------"),log("---------------------------------------"),i)t(n);else if(window.LAYOUT&&window.LAYOUT.Options.developmentMode){var r=new Ext.Window({title:"AJAX Application Error Occured, see details in Window",width:Math.max(document.documentElement.clientWidth-300,100),height:Math.max(document.documentElement.clientHeight-300,100),layout:"fit",modal:!0,items:[{xtype:"component",autoEl:{tag:"iframe",src:"data:text/html;charset=utf-8,"+escape(n),style:{border:"0"}}}]}).show();t(n,!1)}else t(n);log("---------------------------------------");log("--------------ERROR END----------------");log("---------------------------------------")};jQuery.ajaxSetup({error:function(t){n.Options.DisableAjaxErrorHandling||i(t.responseText,t.suspendException)}});Ext.Ajax.on("requestexception",function(t,r,u){if(!n.Options.DisableAjaxErrorHandling){var f;f=typeof r.responseText=="undefined"?r.statusText:r.responseText;i(f,u.suspendException)}});if(Ext.ieVersion<9)Ext.Ajax.on("requestcomplete",function(){n.runPlaceholderPlugin()})};Config.prototype.initializeSiteUrls=function(){var n=this,t=location.protocol+"//"+location.hostname+n.Options.root;t!=n.Options.dotNetSiteUrl&&(n.Options.dotNetSiteUrl=t,Ext.Ajax.request({method:"POST",url:n.getUrl("Application/SaveApplicationUrl"),params:{url:t}}))};Config.prototype.getUrl=function(n,t){var i=this;return(typeof n!="undefined"&&n!=null&&n!=""&&n.charAt(0)=="/"&&(n=n.substr(1)),typeof t!="undefined"&&t==!0)?i.Options.dotNetSiteUrl+n:i.Options.root+n};Config.prototype.showError=function(n){var t=this;Ext.MessageBox.show({title:"Error",msg:n,buttons:Ext.Msg.OK,buttonAlign:"right",icon:Ext.MessageBox.ERROR})};Config.prototype.underConstruction=function(){var n=this;n.showDevelopmentInfo("This feature is under construction so please be patient until we complete it for you.","Under construction")};Config.prototype.showDevelopmentInfo=function(n,t){typeof t=="undefined"&&(t="Under construction");var i=this;i.showInfo(n,t)};Config.prototype.showInfo=function(n,t){var i=this;i.showMessageBox(n,t,Ext.MessageBox.INFO)};Config.prototype.showWarning=function(n,t){var i=this;i.showMessageBox(n,t,Ext.MessageBox.WARNING)};Config.prototype.showMessageBox=function(n,t,i){var r=this;Ext.MessageBox.show({title:t,msg:n,buttons:Ext.Msg.OK,buttonAlign:"right",icon:i})};Config.prototype.postData=function(n,t){var f=this,i=document.createElement("form"),u,r;i.setAttribute("method","post");i.setAttribute("action",n);for(u in t)t.hasOwnProperty(u)&&(r=document.createElement("input"),r.setAttribute("type","hidden"),r.setAttribute("name",u),r.setAttribute("value",t[u]),i.appendChild(r));document.body.appendChild(i);i.submit()};HashManager.prototype.constructor=HashManager;HashManager.prototype.options={cookie:"HashManager",enableCookies:!0,enabled:!0};HashManager.prototype.state={hashIsValid:!1,urlVars:{},viewState:{}};HashManager.prototype.setHashVar=function(n,t){var i=this;if(i.options.enabled==!1)return t;i.state.viewState[n]=t;i.state.stateIsValid=!0};HashManager.prototype.saveState=function(){var n=this;n.saveState()};HashManager.prototype.saveState=function(){var n=this,t,r,u,f,i;Ext.Object.getKeys(n.state.viewState).length<1||(t=Ext.encode(n.state.viewState),t=n.compressString(t),r=$(window).scrollTop(),u=$(window).scrollLeft(),n.state.useHistory?(n.state.urlVars.viewstate=t,delete n.state.urlVars.message,delete n.state.urlVars.adminmode,f=UrlHelper.buildUrl(n.state.urlVars),history.pushState(t,"hash-manager",f),location.hash=""):location.hash=t,$(window).scrollTop(r),$(window).scrollLeft(u),$("html, body").animate({scrollTop:r,scrollLeft:u},"slow"),n.options.enableCookies&&(i=new Date,i.setFullYear(i.getFullYear()+1),Ext.util.Cookies.set(n.options.cookie,t,i,"/",window.location.hostname)))};HashManager.prototype.getHashVar=function(n,t){var r=this,i;return r.options.enabled==!1?t:(i=r.state.viewState,(typeof i=="undefined"||typeof i[n]=="undefined")&&typeof t!="undefined")?t:i[n]};HashManager.prototype.compressString=function(n){var i=this,t;try{t=window.btoa(n)}catch(r){return n}return t};HashManager.prototype.decompressString=function(n){var i=this,t;try{t=window.atob(n)}catch(r){return n}return t};typeof String.prototype.endsWith!="function"&&(String.prototype.endsWith=function(n){return this.indexOf(n,this.length-n.length)!==-1});typeof String.prototype.startsWith!="function"&&(String.prototype.startsWith=function(n){return this.slice(0,n.length)==n});typeof String.prototype.trim!="function"&&(String.prototype.trim=function(){return this.replace(/^\s+|\s+$/g,"")});String.prototype.formatXml=function(){var t,i,n;return xml=this,t="",i=/(>)(<)(\/*)/g,xml=xml.replace(i,"$1\r\n$2$3"),n=0,jQuery.each(xml.split("\r\n"),function(i,r){var u=0,f,e;for(r.match(/.+<\/\w[^>]*>$/)?u=0:r.match(/^<\/\w/)?n!=0&&(n-=1):u=r.match(/^<\w[^>]*[^\/]>.*$/)?1:0,f="",e=0;e<n;e++)f+="&emsp; ";t+=f+r+"<br/>\r\n";n+=u}),t};String.prototype.toHHMMSS=function(){var r=parseInt(this,10),n=Math.floor(r/3600),t=Math.floor((r-n*3600)/60),i=r-n*3600-t*60;return n<10&&(n="0"+n),t<10&&(t="0"+t),i<10&&(i="0"+i),n+":"+t+":"+i};Layout.prototype.MaskLayout=function(n){var t=this;t.State.body.mask(n)};Layout.prototype.UnmaskLayout=function(){var n=this;n.State.body.unmask()};Layout.prototype.constructor=Layout;Layout.prototype.showMessages=function(){var n=this,r,t,i,u;if(Ext.isDefined(n.State.queryString.message)&&(n.notify(n.State.queryString.message),typeof history.pushState!="undefined"&&history.pushState(null,null,UrlHelper.getUrlWithoutVariable("message"))),Ext.isArray(n.Options.messages)&&!(n.Options.messages.length<1)){for(r=n.Options.messages,t="",i=0;i<r.length;i++)u=r[i],t!=""&&(t+="<br/>"),t+=u;n.notify(t)}};Layout.prototype.setEmbeddedState=function(n,t){var i=this;Ext.Ajax.request({url:config.getUrl("public/layout/SetEmbeddedState"),params:{enabled:n},success:function(){i.Options.isSiteEmbedded=n;Ext.isFunction(t)&&t()}});Ext.onDocumentReady(function(){n?Ext.getBody().addCls("embedded"):Ext.getBody().removeCls("embedded")})};Layout.prototype.InitLayoutEditor=function(){var n=this;n.State.header.container=Ext.get(n.Options.headerContainerId);n.State.header.content=Ext.get(n.Options.headerContentId);n.State.header.editor=Ext.get(n.Options.headerEditorId);n.State.header.content.enableDisplayMode();n.State.header.visible=n.Options.Settings.PublicHeaderVisible&&!n.Options.isSiteEmbedded;n.State.header.content.setVisible(n.Options.Settings.PublicHeaderVisible&&!n.Options.isSiteEmbedded);n.State.footer.container=Ext.get(n.Options.footerContainerId);n.State.footer.content=Ext.get(n.Options.footerContentId);n.State.footer.editor=Ext.get(n.Options.footerEditorId);n.State.footer.content.enableDisplayMode();n.State.footer.visible=n.Options.Settings.PublicFooterVisible;n.State.footer.content.setVisible(n.Options.Settings.PublicFooterVisible);n.State.showWelcomeMessage&&(n.State.welcome.container=Ext.get(n.Options.welcomeContainerId),n.State.welcome.content=Ext.get(n.Options.welcomeContentId),n.State.welcome.editor=Ext.get(n.Options.welcomeEditorId),n.State.welcome.content.enableDisplayMode(),n.State.welcome.visible=n.Options.Settings.PublicWelcomeMessageVisible,n.State.welcome.content.setVisible(n.Options.Settings.PublicWelcomeMessageVisible),n.State.welcome.container.enableDisplayMode(),n.State.welcome.container.show());n.State.queryString.editlayout&&n.setlayoutEditMode(!0);n.State.queryString.colorScheme&&n.loadColorScheme()};Layout.prototype.Options={noLayout:!1,staticAdmin:!1,plainMenuItemStyle:{padding:"2px",marginBottom:"2px",marginRight:"2px"},showPastOnlineCourses:!1,allowViewPastCourses:!1,messages:[],developmentMode:!1,isGsmuDevelopmentMachine:!1,isSiteEmbedded:!1,courseSearchSingleView:!0,currentController:null,currentAction:null,selectedLayout:null,displayMode:"normal",enableComposer:!1,editIcon:"Images/Icons/FamFamfam/pencil.png",saveIcon:"Images/Icons/FamFamfam/disk.png",cancelIcon:"Images/Icons/FamFamfam/cancel.png",uploadIcon:"Images/Icons/FamFamfam/attach.png",exitIcon:"Images/Icons/famfamfam/cross.png",layoutEditIcon:"Images/Icons/FamFamfam/layout_edit.png",compositeLayoutButtonIcon:"Images/Icons/FamFamfam/layout_content.png",componentsIcon:"Images/Icons/FamFamFam/box.png",browserLinkId:null,adminMenuId:null,adminMenuContainerId:null,headerContainerId:null,headerContentId:null,headerEditorId:null,welcomeContainerId:null,welcomeContentId:null,welcomeEditorId:null,footerContainerId:null,footerContentId:null,footerEditorId:null,Settings:{PublicHeaderVisible:!1,PublicFooterVisible:!1,PublicWelcomeMessageVisible:!1},layoutEditMode:!1,adminMode:!1,buttonLabels:{ClassFull:"Class full",WaitSpaceAvailable:"Wait space available",EmptyCart:"Empty cart",GoToCart:"Go to Cart",Login:"Login",CreateAccount:"Create account",Search:"Search",ClosedEnrollment:"Closed Enrollment",Cas_Login:"CAS Login",Canvas_Login:"Canvas Login"},layoutConfiguration:null,timeoutSeconds:600,sessionStart:null,fieldNames:{Field1Name:null,Field2Name:null,Field3Name:null,Field4Name:null,Field5Name:null}};Layout.prototype.State={layoutLess:!1,adminMode:!1,isButtonPage:!1,saveLayoutConfigurationTimer:null,body:null,showWelcomeMessage:!1,layoutComposer:null,queryString:{},editModeCancelActions:[],uploadForm:null,uploadFormHiddenField:null,uploadFormSourceHiddenField:null,uploadWindow:null,isEditMode:!1,layoutEditorComponentsInitialized:!1,buttonEditorInitialiezd:!1,buttonEditing:{button:null,editing:!1,textField:null},toolbar:null,enableEditingMenu:null,header:{content:null,container:null,editor:null,layoutEditIcon:null,visibleIcon:null,hiddenIcon:null,toolbox:null,visible:!1},welcome:{content:null,container:null,editor:null,editIcon:null,visibleIcon:null,hiddenIcon:null,toolbox:null,visible:!1},footer:{content:null,container:null,editor:null,layoutEditIcon:null,visibleIcon:null,hiddenIcon:null,toolbox:null,visible:!1},layoutComplete:[],layoutCompleteFired:!1};Layout.prototype.InitializeStateManager=function(){var n=this;Ext.onDocumentReady(function(){var n=Ext.create("Ext.state.CookieProvider",{expires:new Date((new Date).getTime()+2592e6)});Ext.state.Manager.setProvider(n)})};Layout.prototype.startCheckout=function(){var n=this;n.State.welcome.container&&n.State.welcome.container.hide();Ext.select("#course-search-keyword-container, #grad_stud_title").hide()};Layout.prototype.endCheckout=function(){var n=this;n.State.welcome.container&&n.State.welcome.container.show();Ext.select("#course-search-keyword-container, #grad_stud_title").show()};Layout.prototype.saveLayoutConfiguration=function(){var n=this;clearTimeout(n.State.saveLayoutConfigurationTimer);n.State.saveLayoutConfigurationTimer=setTimeout(function(){Ext.Ajax.request({url:config.getUrl("public/layout/layoutconfiguration"),method:"POST",params:{layoutConfiguration:Ext.encode(n.Options.layoutConfiguration)},success:function(){window.COURSESEARCH&&window.COURSESEARCH.Invoke()}})},1e3)};Layout.prototype.DecideAdminMode=function(){var n=this,u,t,i,r;return n.Options.staticAdmin?(n.State.adminMode=!0,!0):(u=Ext.isDefined(n.State.queryString.adminmode)&&n.State.queryString.adminmode.toLowerCase()=="false",u?n.State.adminMode=!1:(t=Ext.isDefined(n.State.queryString.adminmode)&&n.State.queryString.adminmode.toLowerCase()=="true",t&&Ext.util.Cookies.set("adminmode","true"),i=!1,n.Options.developmentMode?(r=Ext.util.Cookies.get("adminmode"),r!=null&&r=="true"&&(i=!0),n.State.adminMode=t||i):n.State.adminMode=t&&n.Options.adminMode),n.State.adminMode)};Layout.prototype.RenderAdminMenuSearchLayoutItems=function(){var n=this,o={Grid:[],TileJuly:[]},s={Grid:{Icon:"images/icons/famfamfam/application_view_list.png",Title:"Grid",Id:"layout-view-button-grid"},TileJuly:{Icon:"images/icons/famfamfam/application_view_tile.png",Title:"Tiles",Id:"layout-view-button-tilejuly"}},v={CourseDescription:"Course description",Sessions:"Session(s)",Duration:"Duration",Location:"Location",Status:"Status",ClassSize:"Class size",AccessCode:"Access code",CourseId:"Course ID",CourseNumber:"Course #",CourseStart:"Start date/time",CourseEnd:"End date/time",Credit:"Credit(s)",Material:"Material(s)",Price:"Prices(s)",PreRequisite:"Pre-requisite",Icons:"Icon(s)",AdjustLayoutComponents:"<strong>Align components horizontally<\/strong>",Image:"Image"},f=[],r,e,c,u,l,t,a;for(r in n.Options.layoutConfiguration.SearchColumns)if(r!="DefaultView")for(t in n.Options.layoutConfiguration.SearchColumns[r])e=null,t=="TileWidth"||t=="TileImageWidth"||t=="TileImageHeight"?(c={TileWidth:"Tile width",TileImageWidth:"Tile image width",TileImageHeight:"Tile image height"},f.push({text:c[t],disabled:!0}),f.push({layoutArea:r,layoutKey:t,xtype:"numberfield",minValue:10,maxValue:1e3,value:n.Options.layoutConfiguration.SearchColumns[r][t],listeners:{change:function(t,i){clearTimeout(n.State.saveLayoutConfigurationTimer);n.Options.layoutConfiguration.SearchColumns[t.layoutArea][t.layoutKey]=i;n.saveLayoutConfiguration(t.layoutArea)}}})):(e={layoutArea:r,layoutKey:t,xtype:"menucheckitem",text:v[t],checked:n.Options.layoutConfiguration.SearchColumns[r][t],checkHandler:function(t,i){clearTimeout(n.State.saveLayoutConfigurationTimer);n.Options.layoutConfiguration.SearchColumns[t.layoutArea][t.layoutKey]=i;n.saveLayoutConfiguration(t.layoutArea)}},t=="AdjustLayoutComponents"?f.push(e):r=="Grid"&&t=="CourseEnd"||o[r].push(e));u=[];l=function(){var i=!1;for(var t in n.Options.layoutConfiguration.SearchColumns)if(typeof t!="undefined"&&t.endsWith("ViewEnabled")&&n.Options.layoutConfiguration.SearchColumns[t]==!0){i=!0;break}return i};for(t in o){var i=s[t],y=o[t],h={id:i.Id+"on",xtype:"splitbutton",ui:"default-toolbar",gsmuMenuConfig:i,gsmuArea:t,text:i.Title+'<input type="checkbox" checked="true" style=" vertical-align: -10%;">',icon:config.getUrl(i.Icon),menu:y,tooltip:i.Title+" is currently enabled.",tooltipType:"title",hidden:!n.Options.layoutConfiguration.SearchColumns[t+"ViewEnabled"],handler:function(t){l()?(clearTimeout(n.State.saveLayoutConfigurationTimer),n.Options.layoutConfiguration.SearchColumns[t.gsmuArea+"ViewEnabled"]=!1,t.setVisible(!1),Ext.getCmp(t.gsmuMenuConfig.Id+"off").setVisible(!0),window.COURSELISTINGTYPE.Render(),n.saveLayoutConfiguration(t.gsmuArea),Ext.getCmp("layout-default-view-menu").setVisible(!1)):n.notify("Sorry, but at least one view needs to be enabled!")}},p={id:i.Id+"off",xtype:"button",ui:"default-toolbar",gsmuMenuConfig:i,gsmuArea:t,text:i.Title+'<input type="checkbox" style=" vertical-align: -10%;">',icon:config.getUrl(i.Icon),tooltip:i.Title+" is currently disabled.",tooltipType:"title",hidden:n.Options.layoutConfiguration.SearchColumns[t+"ViewEnabled"],handler:function(t){clearTimeout(n.State.saveLayoutConfigurationTimer);Ext.getCmp("layout-default-view-menu").setVisible(!0);t.setVisible(!1);Ext.getCmp(t.gsmuMenuConfig.Id+"on").setVisible(!0);n.Options.layoutConfiguration.SearchColumns[t.gsmuArea+"ViewEnabled"]=!0;window.COURSELISTINGTYPE.Render();n.saveLayoutConfiguration(t.gsmuArea)}};t=="TileJuly"&&(a=h.menu,h.menu=f.concat(a));u.push(h);u.push(p)}return u.push({xtype:"cycle",id:"layout-default-view-menu",hidden:!n.Options.layoutConfiguration.SearchColumns.GridViewEnabled||!n.Options.layoutConfiguration.SearchColumns.TileJulyViewEnabled,showText:!0,prependText:"Default view: ",icon:config.getUrl(s[n.Options.layoutConfiguration.SearchColumns.DefaultView].Icon),menu:{items:[{text:"Grid",viewCode:"Grid",checked:n.Options.layoutConfiguration.SearchColumns.DefaultView=="Grid",icon:config.getUrl("images/icons/famfamfam/application_view_list.png")},{text:"Tile",viewCode:"TileJuly",checked:n.Options.layoutConfiguration.SearchColumns.DefaultView=="TileJuly",icon:config.getUrl("images/icons/famfamfam/application_view_tile.png")}]},changeHandler:function(t,i){clearTimeout(n.State.saveLayoutConfigurationTimer);n.Options.layoutConfiguration.SearchColumns.DefaultView=i.viewCode;t.setIcon(config.getUrl(s[i.viewCode].Icon));n.saveLayoutConfiguration()}}),u};Layout.prototype.RenderAdminMenuLayoutItems=function(){var n=this,i=[],r="When this mode is on, you are able to edit the header, the welcome message and the footer. So to get the most out of this function, you may visit multiple pages. Such as course search, the home page and etc..",u="Edit mode is on. \n\n"+r,f="Edit mode is off. \n\n"+r,e,o,s,h,t;return e=n.Options.isSiteEmbedded?Ext.create("Ext.menu.Item",{text:"Header component",tooltip:"The home page, has a header component, which in embedded mode is turned off, to be able to edit it, please get out of embedded mode",tooltipType:"title",icon:config.getUrl(n.Options.hiddenIcon),handler:function(n){alert(n.tooltip)}}):n.createContentButton("header"),o=n.createContentButton("footer"),s=n.State.showWelcomeMessage?n.createContentButton("welcome"):Ext.create("Ext.menu.Item",{text:"Welcome component",tooltip:"The home page, has a welcome component, you can configure it after clicking this button, and coming to this same menu item after",tooltipType:"title",icon:config.getUrl(n.Options.welcomeComponentIcon),handler:function(){document.location=config.getUrl("public/home/index")}}),h=function(i,r){n.setlayoutEditMode(r);var e=Ext.getCmp("layout-toolbar-layout-items");n.State.isEditMode?(e.show(),t.setTooltip(u),t.setText("Turn off layout edit mode")):(e.hide(),t.setTooltip(f),t.setText("Turn on layout edit mode"))},t=Ext.create("Ext.button.Button",{id:"layoutModeButton",enableToggle:!0,text:n.State.isEditMode?"Turn off layout edit mode":"Turn on layout edit mode",pressed:n.State.isEditMode,icon:config.getUrl("images/icons/famfamfam/layout_edit.png"),tooltip:n.State.isEditMode?u:f,tooltipType:"title",toggleHandler:h}),i.push(e),i.push(o),i.push(s),{button:t,menu:{xtype:"button",ui:"default-toolbar",text:"Component",icon:config.getUrl("images/icons/famfamfam/layout_content.png"),menu:i}}};Layout.prototype.RenderAdminMenuEmbedMenu=function(n){var t=this,i=[],r=config.getUrl("Images/Icons/FamFamFam/script_code.png");i.push({xtype:"menuitem",text:"Get embed script",icon:r,tooltip:"Gives you the script to place the web site into an IFrame",tooltipType:"title",listeners:{click:function(){var n="";n+='<iframe id="gsmu-embedded" scrolling="no" frameborder="none" height="500" width="920" style="border: none; margin: 0;"><\/iframe>\n';n+='<script type="text/javascript">';n+="(function(){var e=document.getElementById('gsmu-embedded');var t=(location.protocol.toLowerCase()=='file:'?'http:':location.protocol)+'//"+location.host+"/landing/embedded';e.src=t;if(!window.publicnetComponentReceiver){window.publicnetComponentReceiver=function(e){var t;if(typeof e.data!='undefined'&&typeof e.data.height!='undefined'){t=e.data.height}else{t=e.data}document.getElementById('gsmu-embedded').style.height=t+'px'}}if(window.removeEventListener){window.removeEventListener('message',window.publicnetComponentReceiver)}else if(window.detachEvent){window.detachEvent('onmessage',window.publicnetComponentReceiver)}if(window.addEventListener){window.addEventListener('message',window.publicnetComponentReceiver)}else if(window.attachEvent){window.attachEvent('onmessage',window.publicnetComponentReceiver)}})()";n+="<\/script>";Ext.create("Ext.window.Window",{title:"Embed window code",icon:r,height:200,width:400,layout:"fit",modal:!0,items:[{id:"embedscript",xtype:"textareafield",selectOnFocus:!0,grow:!0,name:"message",anchor:"100%",value:n}]}).show()}}});i.push({xtype:"menucheckitem",text:"Embedded mode",checked:t.Options.isSiteEmbedded,icon:config.getUrl("Images/Icons/FamFamFam/arrow_in.png"),tooltip:"Enable/disable the embedded mode",tooltipType:"title",checkHandler:function(n,i){t.setEmbeddedState(i,function(){t.InitLayoutEditor();t.RenderAdminMenu();t.setlayoutEditMode(t.State.isEditMode)})}});n.push({xtype:"button",ui:"default-toolbar",text:"Embed",icon:config.getUrl("Images/icons/famfamfam/arrow_inout.png"),menu:i});n.push({xtype:"button",ui:"default-toolbar",icon:config.getUrl("Images/icons/famfamfam/help.png"),style:{marginRight:"10px"},listeners:{render:function(n){var t=Ext.create("Ext.tip.ToolTip",{target:n.id,anchor:"bottom",anchorToTarget:!0,showDelay:0,hideDelay:1e4,anchorOffset:-8,html:'When the "Embed Mode" is turned on you can test and setup your site in embed mode. To actually use embed mode on a company web page managed by content management systems like Drupal or WordPress, use the "Get embed script" option. If your company builds their own  website it could also be inserted into the existing code.<br/><br/>In embed mode, the maximum Tile width is 219 pixels.<br/><br/>In normal mode, the maximum Tile width is 232 pixels.<br/><br/>Please, make sure you change the Tile width according to your mode, otherwise your layout will be off.<br/><br/>FYI: In embed mode the header is automatically disabled.'})}}})};Layout.prototype.RenderAdminMenuCompositeLayoutItems=function(){var n=this,t=[];return t=n.State.layoutComposer!=null?n.State.layoutComposer.renderAdminModeMenu(!0):[{text:CourseSearchComponentRegistry.variables.compositeSearchButtonTextEntrance,icon:config.getUrl(n.Options.compositeLayoutButtonIcon),tooltip:CourseSearchComponentRegistry.variables.compositeSearchNonEditModeInfo,tooltipType:"title",listeners:{click:function(){document.location=config.getUrl("public/course/browse/composite/edit")}}}],{icon:config.getUrl("images/icons/famfamfam/layout.png"),text:"Course search layout",menu:t}};Layout.prototype.RenderAdminMenuSsoItems=function(){var t=this,n=[];return n.push({text:"Blackboard settings",icon:config.getUrl("Images/IntegrationPartners/lti_blackboard.png"),handler:function(){document.location=config.getUrl("Adm/blackboard/settings")}}),n.push({text:"Canvas settings",icon:config.getUrl("Images/IntegrationPartners/lti_canvas.png"),handler:function(){document.location=config.getUrl("Adm/canvas/settings")}}),n.push({text:"Haiku settings",icon:config.getUrl("Images/IntegrationPartners/lti_haiku.png"),handler:function(){document.location=config.getUrl("Adm/haiku/settings")}}),n.push({text:"LTI settings",icon:config.getUrl("Images/IntegrationPartners/lti_lti.png"),handler:function(){document.location=config.getUrl("Adm/lti/settings")}}),n.push("-"),n.push({text:"SSO/redirect URLs",disabled:!0}),n.push({text:"SSO Urls page",icon:config.getUrl("Images/Icons/FamFamFam/lock_edit.png"),handler:function(){document.location=config.getUrl("Adm/home/sso")}}),n.push({text:"Blackboard SSO Url",icon:config.getUrl("Images/IntegrationPartners/lti_blackboard.png"),handler:function(){var n=location.protocol+"//"+location.host+config.getUrl("SSO/Blackboard");config.showInfo(n,"The GSMU SSO URL for the Blackboard Plugin")}}),n.push({text:"Google SSO Redirect Url",icon:config.getUrl("Images/Icons/socialmediaicons/google-16x16.png"),handler:function(){var n=location.protocol+"//"+location.host+config.getUrl("SSO/Google");config.showInfo(n,"The GSMU SSO redirect URL for the Google integration")}}),n.push({text:"LTI SSO Url",icon:config.getUrl("Images/IntegrationPartners/lti_lti.png"),handler:function(){var n=location.protocol+"//"+location.host+config.getUrl("SSO/Lti");config.showInfo(n,"The GSMU SSO URL for the LTI Tool Consumer")}}),n.push({text:"Canvas SSO Url",icon:config.getUrl("Images/IntegrationPartners/lti_canvas.png"),handler:function(){var n=location.protocol+"//"+location.host+config.getUrl("SSO/Canvas");config.showInfo(n,"The Canvas SSO redirect URL")}}),{ui:"default-toolbar",text:"SSO/Integration",icon:config.getUrl("Images/Icons/FamFamFam/lock_open.png"),menu:n}};Layout.prototype.RenderAdminMenuDevelopment=function(){var n=this,r=!1,u,i,t;return Ext.Loader.loadScript({url:config.getUrl("Areas/Public/Scripts/Development.js"),onLoad:function(){r=!0;u=new Development},onError:function(n){alert("Script loading error! Please contact admin or refresh browser.\r\n"+n)}}),i=function(n){r?n():setTimeout(function(){i(n)},500)},t=[],t.push({ui:"default-toolbar",text:"Public site settings",icon:config.getUrl("Images/Icons/FamFamFam/settings.png"),menu:[{xtype:"menucheckitem",text:"Show past online courses",icon:config.getUrl("Images/Icons/FamFamFam/timeline_marker.png"),checked:n.Options.showPastOnlineCourses,tooltip:"Show online courses that have a Start Date in the past but an End Date in the future",tooltipType:"title",checkHandler:function(t,i){n.setMasterinfoValue(1,"ShowPastOnlineCourses",i?1:0,function(){n.Options.showPastOnlineCourses=i;window.COURSESEARCH&&window.COURSESEARCH.Invoke()})}},{xtype:"menucheckitem",text:"Allow to view past courses",icon:config.getUrl("Images/Icons/FamFamFam/calendar_view_day.png"),checked:n.Options.allowViewPastCourses,tooltip:"Allows to view past courses that have the setting enabled",tooltipType:"title",checkHandler:function(t,i){n.setMasterinfoValue(3,"allowviewpastcoursesdays",i?1:0,function(){n.Options.allowViewPastCourses=i;window.COURSESEARCH&&window.COURSESEARCH.Invoke()})}},{xtype:"menucheckitem",text:"Fast loading for public course listing",icon:config.getUrl("Images/Icons/FamFamFam/lightning.png"),checked:n.Options.publicCourseListingFastLoad,tooltip:"By default, the course listing page loads the categories and course list via Ajax after the page is loaded. If this option is enabled the initial load is done all from the server at high speed. The cost is that at initial development we implemented hash variables in the url which the server can not see. In order to load the last view state, it will need some development work.",tooltipType:"title",checkHandler:function(t,i){n.setMasterinfoValue(4,"public_course_listing_fast_load",i?1:0,function(){n.Options.publicCourseListingFastLoad=i})}},{xtype:"menuseparator"},{text:"Buttons labels",icon:config.getUrl("Images/Icons/famfamfam/bullet_green.png"),handler:function(){document.location=config.getUrl("public/layout/button-labels-and-coloring?adminmode=true")}}]}),t.push({ui:"default-toolbar",text:"Developer settings",icon:config.getUrl("Images/Icons/FamFamFam/wrench.png"),menu:[{disabled:n.Options.isGsmuDevelopmentMachine,text:"Development mode",xtype:"menucheckitem",icon:config.getUrl("Images/Icons/FamFamFam/wrench_orange.png"),checked:n.Options.developmentMode,tooltip:n.Options.isGsmuDevelopmentMachine?"This server is configured to be in permament development mode in the App_Data file DevelopmentMachineList configuration key. If you wish to be able to change this setting, remove localhost or your domain from that config value.":"Warning! This wil reload the whole page!",checkHandler:function(t,i){n.MaskLayout("Setting development mode: "+(i?"on":"off"));Ext.Ajax.request({method:"POST",url:config.getUrl("Adm/development/setdevelopmentmode"),params:{state:i},success:function(){location.reload()}})}},{text:"Send test e-mail",icon:config.getUrl("Images/Icons/FamFamFam/email.png"),handler:function(){i(u.SendEmail)}}]}),t.push(n.RenderAdminMenuSsoItems()),t.push({ui:"default-toolbar",text:"Courses",icon:config.getUrl("Images/Icons/FamFamFam/bell.png"),menu:[{text:"Course E-mail Confirmation",icon:config.getUrl("Images/Icons/glyph2/Icons16x16/button-sale.png"),handler:function(){document.location=config.getUrl("Adm/confirmationscreen/confirmation")}},{text:"User fields",icon:config.getUrl("Images/Icons/famfamfam/building.png"),handler:function(){document.location=config.getUrl("Adm/userfields")}},{text:"Attendance taking",icon:config.getUrl("Images/Icons/famfamfam/clock_edit.png"),handler:function(){document.location=config.getUrl("Adm/attendance")}}]}),n.Options.courseSearchSingleView||t.push(n.RenderAdminMenuCompositeLayoutItems()),{xtype:"button",ui:"default-toolbar",text:"Admin",icon:config.getUrl("Images/Icons/FamFamFam/ruby.png"),menu:t}};Layout.prototype.RenderAdminMenu=function(){var n=this,c,i,u,t,f,e,o,r,s,l,h;if(n.DecideAdminMode()){if(c=Ext.get(n.Options.adminMenuContainerId),c.show(),i=Ext.get(n.Options.adminMenuId),i.setHtml?i.setHtml(""):i.update(""),Ext.dom.Query.selectNode(".grad_stud_top_all")&&Ext.get(Ext.dom.Query.selectNode(".grad_stud_top_all")).addCls("layout-editing-spacer"),u=Ext.get("layout-admin-toggle"),u&&u.hide(),t=[],f=[],n.Options.staticAdmin&&t.push({text:"GSMU Public Home",icon:config.getUrl("Images/Icons/glyph2/icons16x16/home.png"),handler:function(){document.location=config.getUrl("public/course/browse?adminmode=true")}}),f.push(n.RenderAdminMenuDevelopment()),t.push({xtype:"container",id:"layout-toolbar-regular-items",items:f}),e=function(n){return function(t,i){var r=config.getUrl("application/AdminFunction?call=go-admin&redirect="+n);i.ctrlKey||i.shiftKey?window.open(r,"_blank"):top.location=r}},window.location==top.location&&(t.push({xtype:"button",text:"Portal",tooltip:"Visit the GSMU V3 Admin Portal",icon:config.getUrl("images/icons/famfamfam/application_side_list.png"),handler:e("portal.asp")}),t.push({xtype:"button",text:"Dash",tooltip:"Visit the GSMU V3 Course Dashboard",icon:config.getUrl("images/icons/famfamfam/coursedash.png"),handler:e("course-center.asp")})),t.push({xtype:"tbfill"}),n.State.layoutLess||(o=n.RenderAdminMenuLayoutItems(),r=n.RenderAdminMenuSearchLayoutItems(),r.unshift(o.menu),s=[],n.RenderAdminMenuEmbedMenu(s),r=s.concat(r),t.push({xtype:"container",id:"layout-toolbar-layout-items",items:r,hidden:!n.State.isEditMode}),t.push(o.button)),n.Options.staticAdmin||(t.push({xtype:"tbseparator"}),t.push({xtype:"button",icon:config.getUrl(n.Options.exitIcon),tooltip:"Exit admin mode",tooltipType:"title",listeners:{click:function(){n.exitAdminMode()}}})),l=Ext.create("Ext.toolbar.Toolbar",{renderTo:i,width:i.getWidth(),height:36,items:t,id:"layout-toolbar-main"}),n.Options.staticAdmin){h=function(){var n=Ext.getBody().getViewSize();l.setWidth(n.width-10)};Ext.on("resize",h);setTimeout(h,200)}n.Options.LayoutEditMode&&n.State.enableEditingMenu.setChecked(!0);n.State.layoutComposer!=null&&n.State.layoutComposer.postMenuRender()}};Layout.prototype.exitAdminMode=function(){var i=this,n,t;i.InitLayoutEditor();i.setlayoutEditMode(!1);Ext.util.Cookies.set("adminmode",null);n=Ext.getCmp("layout-toolbar-main");n&&n.destroy();typeof history.pushState!="undefined"&&history.pushState(null,null,UrlHelper.getUrlWithoutVariable("adminmode"));t=Ext.get("layout-admin-toggle");t&&t.show()};Layout.prototype.enterAdminMode=function(){var t=this,r=Ext.getCmp("layout-toolbar-main"),i,n;r&&r.destroy();i=Ext.get("layout-admin-toggle");i&&i.hide();typeof history.pushState!="undefined"&&(n=UrlHelper.getUrlWithoutVariable("admin"),n+=n.indexOf("?")>-1?"&":"?",n+="adminmode=true",history.pushState(null,null,n));Ext.util.Cookies.set("adminmode","true");t.InitLayoutEditor();t.RenderAdminMenu();t.setlayoutEditMode(!1)};Layout.prototype.createContentButton=function(n){var t=this,u="Show "+n+" component",f="Hide "+n+" component",i,r;switch(n){case"header":i=config.getUrl("images/icons/famfamfam/arrow_up.png");break;case"welcome":i=config.getUrl("images/icons/famfamfam/arrow_right.png");break;case"footer":i=config.getUrl("images/icons/famfamfam/arrow_down.png")}return r=Ext.create("Ext.menu.CheckItem",{text:t.State[n].visible?f:u,icon:i,handler:function(i){var r=!t.State[n].visible;t.State[n].visible=r;r?i.setText(f):i.setText(u);t.saveContentVisibilitySetting(n);t.showContentBySetting(n)}}),r.setChecked(t.State[n].visible),r};Layout.prototype.showContentBySetting=function(n){var t=this;t.State[n].content.setVisible(t.State[n].visible)};Layout.prototype.loadColorScheme=function(){var n=this;n.setlayoutEditMode(!1);typeof Ext.getCmp("layoutModeButton")!="undefined"&&Ext.getCmp("layoutModeButton").toggle(!1);Ext.Ajax.request({method:"POST",url:config.getUrl("public/layout/GetHistoryBGColor?adminmode=true"),success:function(n){var r=n.responseText,t,u,f,e;if($("#BackGroundColorThemeHistory").empty().append('<option value="-">(Previously Applied)<\/option>'),r.length>10)for(t=r.split("|"),u=t.length-1,i=0;i<=u;i++)f=t[i],e=Ext.decode(JSON.parse(t[i])),$("#BackGroundColorThemeHistory").append($("<option/>",{value:f,text:e.ThemeDate}));$("#BackGroundColorTheme").dialog({title:"Color Scheme",modal:!1,draggable:!0,height:600,width:200,resizable:!0,beforeClose:function(){},position:[28,28]})}})};Layout.prototype.setlayoutEditMode=function(n){var t=this,i,r;if(t.State.isEditMode=n,n)t.EnsureLayoutEditorComponents(),t.Options.isSiteEmbedded||t.State.header.container.addCls("layout-item-edit-mode"),t.State.footer.container.addCls("layout-item-edit-mode"),t.State.showWelcomeMessage&&t.State.welcome.container.addCls("layout-item-edit-mode");else for(t.Options.isSiteEmbedded||t.State.header.container.removeCls("layout-item-edit-mode"),t.State.footer.container.removeCls("layout-item-edit-mode"),t.State.showWelcomeMessage&&t.State.welcome.container.removeCls("layout-item-edit-mode"),i=0;i<t.State.editModeCancelActions.length;i++)r=t.State.editModeCancelActions[i],r()};Layout.prototype.EnsureUploadForm=function(){var n=this;n.State.uploadFormHiddenField==null&&(n.State.uploadFormHiddenField=Ext.create("Ext.form.field.Hidden",{name:"area"}),n.State.uploadFormSourceHiddenField=Ext.create("Ext.form.field.Hidden",{name:"source"}),n.State.uploadForm=Ext.create("Ext.form.Panel",{frame:!0,items:[{xtype:"fileuploadfield",name:"file",fieldLabel:"File",labelWidth:50,msgTarget:"side",allowBlank:!1,anchor:"100%",text:"Select File...",buttonText:"Select File...",listeners:{change:function(n,t){var i,r;t=new String(t);i=t.lastIndexOf("/");i==-1&&(i=t.lastIndexOf("\\"));r=t.substring(i+1);n.inputEl.dom.value=r}}},n.State.uploadFormHiddenField],buttons:[{text:"Upload",icon:config.getUrl(n.Options.uploadIcon),handler:function(){var form=this.up("form").getForm(),source,data;area=n.State.uploadFormHiddenField.getValue();form.isValid()&&(source=n.State.uploadFormSourceHiddenField.getValue(),data=null,data=source!=""?eval(source):{url:"public/layout/uploadcontentfile",editor:Ext.getCmp("layout-area-editor-"+area)},form.submit({url:config.getUrl(data.url),waitMsg:"Uploading your file...",success:function(t,i){var f=i.result.mime,u=i.result.file,e=n.State.uploadFormHiddenField.getValue(),r;data.editor.focus();f.startsWith("image")?data.editor.insertAtCursor('<img src="'+config.getUrl(u)+'"/>'):(r=config.getUrl(u),data.editor.insertAtCursor('<a href="'+r+'">'+r+"<\/a>"));n.State.uploadWindow.hide()}}))}},{text:"Cancel",icon:config.getUrl(n.Options.cancelIcon),handler:function(){n.State.uploadWindow.hide()}}]}),n.State.uploadWindow=Ext.create("Ext.window.Window",{title:"Upload a file",modal:!0,resizable:!1,closeAction:"hide",items:[n.State.uploadForm]}))};Layout.prototype.EnsureLayoutEditorComponents=function(){var n=this;n.State.layoutEditorComponentsInitialized||(n.createLayoutComponent(n.State.header.container,n.State.header.content,n.State.header.editor,"Edit the header content","header",n.Options.Settings.PublicHeaderVisible),n.State.showWelcomeMessage&&n.createLayoutComponent(n.State.welcome.container,n.State.welcome.content,n.State.welcome.editor,"Edit the welcome content","welcome",n.Options.Settings.PublicWelcomeMessageVisible),n.createLayoutComponent(n.State.footer.container,n.State.footer.content,n.State.footer.editor,"Edit the footer content","footer",n.Options.Settings.PublicFooterVisible),n.EnsureUploadForm(),n.State.layoutEditorComponentsInitialized=!0)};Layout.prototype.createLayoutComponent=function(n,t,i,r,u){var f=this,l=config.getUrl(f.Options.layoutEditIcon),h=Ext.DomHelper,a=config.getUrl(f.Options.saveIcon),v=config.getUrl(f.Options.cancelIcon),e=h.append(document.body,{tag:"div",cls:"layout-toolbox"},!0),c=h.append(e,{tag:"img",src:l,cls:"layout-edit-icon",title:r},!0),s,o;f.State[u].toolbox=e;f.State[u].editIcon=c;s=Ext.create("Gsmu.HtmlEditor",{id:"layout-area-editor-"+u,renderTo:i,width:i.getWidth()-8,height:200});o=s.getToolbar();o.add({xtype:"tbseparator"});o.add({tooltip:{title:"Insert file",text:"If the file you upload does not appear, make sure to place the cursor in the editor window to a valid location before you upload."},tooltipType:"title",icon:config.getUrl(f.Options.uploadIcon),handler:function(){f.State.uploadForm.getForm().reset();f.State.uploadFormHiddenField.setValue(u);f.State.uploadFormSourceHiddenField.setValue("");f.State.uploadWindow.show()}});o.add({xtype:"tbfill"});o.add({tooltip:{text:"Save"},icon:a,handler:function(){var n=s.getValue();t.setHtml(n);f.showContentBySetting(u);i.hide();Ext.Ajax.request({url:config.getUrl("public/layout/savecontent"),params:{area:u,html:s.getValue()}})}});o.add({tooltip:{text:"Cancel"},icon:v,handler:function(){f.showContentBySetting(u);i.hide()}});i.enableDisplayMode();i.hide();e.hide();c.on("click",function(){t.hide();i.show();s.setValue(t.getHtml());e.hide()});n.on("mouseover",function(){if(f.State.isEditMode&&!i.isVisible()){e.show();var t=n.getBox();e.setX(t.x+t.width-e.getWidth());e.setY(t.y);n.addCls("layout-content-hover")}}).on("mouseout",function(){f.State.isEditMode&&(e.hide(),n.removeCls("layout-content-hover"))});e.on("mouseover",function(){f.State.isEditMode&&(e.show(),n.addCls("layout-content-hover"))}).on("mouseout",function(){f.State.isEditMode&&(e.hide(),n.removeCls("layout-content-hover"))})};Layout.prototype.saveContentVisibilitySetting=function(n){var t=this;Ext.Ajax.request({url:config.getUrl("public/layout/SaveContentVisibilitySetting"),params:{area:n,visible:t.State[n].visible}})};Layout.prototype.EnsurePixelLabel=function(){var r=this,u=null,i=Ext.get("component-pixel-size-renderer"),n=Ext.create({xtype:"numberfield",name:"increaseWordTopRow",width:200,labelWidth:140,labelAlign:"right",fieldLabel:"Increase word pixels",value:r.Options.layoutConfiguration.IncreaseWordTopRow,maxValue:25,minValue:5,renderTo:i,listeners:{change:function(n,t){r.Options.layoutConfiguration.IncreaseWordTopRow=t;var f=Ext.get(Ext.query(".component-pixel-top-row")[0]);f.setStyle("fontSize",t+"px");clearTimeout(u);u=setTimeout(function(){i.mask();Ext.Ajax.request({url:config.getUrl("public/layout/SetIncreaseWordTopRow"),params:{increaseWordTopRow:t},success:function(){i.unmask();Ext.get("word-top-increase").setStyle("fontSize",t+"px")}})},1e3)}}}),f,t;n.hide();f=Ext.get("word-top-increase-component");t=null;f.on("mouseover",function(){clearTimeout(t);n.show()}).on("mouseout",function(){t=setTimeout(function(){n.hide()},3e3)});Ext.get(document).on("click",function(){clearTimeout(t);n.hide()})};Layout.prototype.EnsureButtonEditing=function(){var n=this,l,i,h,c,r;if(!n.State.buttonEditorInitialiezd){var e=Ext.DomHelper,t=e.append(document.body,{tag:"div",cls:"layout-toolbox"},!0),u=e.append(t,{tag:"img",src:config.getUrl(n.Options.editIcon),cls:"layout-edit-icon",title:"Click to edit button text"},!0),o=e.append(t,{tag:"img",src:config.getUrl(n.Options.saveIcon),cls:"layout-edit-icon",title:"Click to save edited button text"},!0),s=e.append(t,{tag:"img",src:config.getUrl(n.Options.cancelIcon),cls:"layout-edit-icon",title:"Click to cancel editing button text"},!0),f=null;u.enableDisplayMode();o.enableDisplayMode();s.enableDisplayMode();l=function(){o.hide();u.show();s.hide();t.hide();n.State.buttonEditing.editing=!1;clearTimeout(f)};l();i=function(){return!(n.State.isEditMode||n.State.isButtonPage)||n.State.buttonEditing.editing==!0?!0:!1};h=function(){if(window.CourseSearchInstance!=null&&window.CourseSearchInstance.IsLoading){setTimeout(h,100);return}var e=Ext.query(".button-component");Ext.Array.each(e,function(e){var o=Ext.get(e);if(o.getAttribute("data-editable")!="true"){o.set({"data-editable":"true"});o.on("mouseover",function(t,r){if(clearTimeout(f),!i()){var u=Ext.get(r);c(u);n.State.buttonEditing.button=u}}).on("mouseout",function(){i()||(f=setTimeout(function(){t.hide()},500))}).on("dblclick",function(t,f){if(n.State.isButtonPage){i()&&r();var e=Ext.get(f);c(e);n.State.buttonEditing.button=e;u.dom.click()}})}})};t.on("mouseover",function(){i()||clearTimeout(f)}).on("mouseout",function(){i()||(f=setTimeout(function(){t.hide()},500))});c=function(n){t.show();var i=n.getBox();t.setX(i.x+i.width+3);t.setY(i.y)};r=function(){var t=n.State.buttonEditing.button,i;t!=null&&(i=t.getAttribute("data-label"),i!=null&&(t.set({onclick:t.getAttribute("data-onclick"),"data-onclick":null,"data-label":null}),t.setHtml(i)),n.State.buttonEditing.button=null);l()};n.State.editModeCancelActions.push(r);u.on("click",function(){var t,r,i;n.State.buttonEditing.editing=!0;t=n.State.buttonEditing.button;r=t.getAttribute("onclick");u.hide();s.show();o.show();c(t);i=t.getHtml();t.set({onclick:null,"data-onclick":r,"data-label":i});t.setHtml("");i=Ext.create("Ext.form.field.Text",{value:i.trim(),renderTo:t,grow:!0,growMin:10,growMax:200});i.setFieldStyle({border:"none","background-color":"transparent",background:"none",color:"inherit","font-family":"inherit","font-weight":"inherit","font-size":"inherit"});i.focus(!0);n.State.buttonEditing.textField=i});s.on("click",r);o.on("click",function(){var f=n.State.buttonEditing.button,t,i,u;r();n.State.buttonEditing.button=null;t=f.getAttribute("data-button-type");i=n.State.buttonEditing.textField.getValue();n.saveButtonLabel(t,i);u=Ext.query("[data-button-type="+t+"]");Ext.Array.each(u,function(n){var t=Ext.get(n);t.setHtml(i)})});h();Ext.Ajax.on("beforerequest",function(){n.State.isEditMode&&r()});Ext.Ajax.on("requestcomplete",function(){n.State.isEditMode&&(n.MaskLayout("Setting buttons ..."),setTimeout(function(){n.UnmaskLayout();h()},500))});n.State.buttonEditorInitialiezd=!0}};Layout.prototype.saveButtonLabel=function(n,t){var i=this;Ext.Ajax.request({url:config.getUrl("public/layout/SaveButtonLabel"),params:{button:n,label:t}})};BgfldCounter=0;BgfldpropTotal=0;Layout.prototype.SaveApplyAllBGColors=function(){var t=this,n=confirm("Are you sure to apply this scheme colors to default?");n==!0&&Ext.Ajax.request({url:config.getUrl("public/layout/AllBGColors?adminmode=true"),success:function(n){var f=Ext.decode(n.responseText),t=f.Data,i,r,u;for(BgfldpropTotal=t.length,i=0;i<t.length;i++)r=t[i].field,u=$("#BGColor"+r).val(),t[i].color=u;Layout.prototype.saveBGColorSeq(t)}})};Layout.prototype.saveBGColorSeq=function(n){var r=this,t=n[BgfldCounter].field,i=n[BgfldCounter].color;Ext.Ajax.request({url:config.getUrl("public/layout/SaveBGColor?adminmode=true"),params:{field:t,color:i},success:function(){BgfldCounter<BgfldpropTotal-1?(BgfldCounter+=1,Layout.prototype.saveBGColorSeq(n)):Layout.prototype.FinalizeBgfldprop(n)}})};Layout.prototype.FinalizeBgfldprop=function(n){var o=this,i=new Date,f="AM",t=i.getHours(),r=i.getMinutes(),u,e;t>11&&(f="PM");t>12&&(t=t-12);t==0&&(t=12);r<10&&(r="0"+r);u=i.getMonth()+1+"/"+i.getDate()+"/"+i.getFullYear()+" "+t+":"+r+" "+f;e=JSON.stringify({ThemeTitle:u,ThemeDate:u,Data:Ext.encode(n)});Ext.Ajax.request({url:config.getUrl("public/layout/AppendHistoryBGColor?adminmode=true"),params:{jsondata:e},success:function(){$("#BackGroundColorTheme").dialog("close");alert("successfully saved.")}})};Layout.prototype.saveBGColor=function(n){var i=this,t=$("#BGColor"+n).val();Ext.Ajax.request({url:config.getUrl("public/layout/SaveBGColor?adminmode=true"),params:{field:n,color:t},success:function(){alert("successfully saved.")}})};Layout.prototype.resetAllBGColors=function(){var t=this,n=confirm("Are you sure to reset all background colors to default?");n==!0&&Ext.Ajax.request({url:config.getUrl("public/layout/resetAllBGColors"),success:function(){window.location.reload()}})};Layout.prototype.notify=function(n,t){var r=this,i;if(typeof t=="undefined"&&(t=!1),t){if(i="layout-notify{"+n+"}",window.sessionStorage.getItem(i)!=null)return;window.sessionStorage.setItem(i,!0)}$.jGrowl(n,{themeState:"",position:"top-right",life:1e4,afterOpen:function(n){var t=n.find(".jGrowl-message");t.css("cursor","pointer");t.click(function(){n.find(".jGrowl-close").trigger("click")})}})};Layout.prototype.setSameHeight=function(n,t,i){var v=this,f=Ext.query(n),e,a,h,c,l,s;if(!(f.length<2)){t!=undefined&&(h=f,i!=undefined&&(h=Ext.query(i)),c=t.getWidth(),l=Ext.get(h[0]).getWidth(),e=Math.floor(c/l),a=Math.floor(f.length/e));var o=[],r=-1,u=0;Ext.Array.forEach(f,function(n){r=Math.max(r,Ext.get(n).getHeight());u++;u==e&&(u=0,o.push(r),r=-1)});u<e&&o.push(r);(r>-1||o.length>0)&&(u=0,s=0,Ext.Array.forEach(f,function(n){o.length>0&&(r=o[u]);Ext.get(n).setHeight(r);s++;s==e&&(u++,s=0)}))}};Layout.prototype.setMasterinfoValue=function(n,t,i,r){var u=this;u.MaskLayout("Saving configuration...");Ext.Ajax.request({url:config.getUrl("Adm/datastore/SetMasterinfoValue"),params:{id:n,key:t,value:i},success:function(){Ext.isFunction(r)&&r();u.UnmaskLayout()}})};Layout.prototype.FooterBrowserCompatibility=function(){var i=this,n=Ext.create("Ext.container.Container",{floating:!0,componentCls:"login-popup",shadow:!0,html:i.Options.FooterBrowserCompatibility,listeners:{show:function(){Ext.getDoc().addListener("click",function(){n.hide()})}}});n.show();var t=$("#link-BrowserCompatibility").position(),r=t.left,u=t.top-n.getHeight()-2;n.setPosition(r,u,!1)};Layout.prototype.enableSessionTimer=function(){var r=this,u=Ext.get("session-timeout"),n=new Date,f=r.Options.timeoutSeconds-10,t,i;$(document).ajaxComplete(function(){n=new Date});Ext.Ajax.on("requestcomplete",function(){n=new Date});t=!1;i=function(){var o=new Date,s=Ext.Date.add(n,Ext.Date.SECOND,f),e=Math.round((s-o)/1e3),h=new String(e);e>=0?(e<60&&!t&&(LAYOUT.notify("Your session is about to expire. When it expires, you will receive a new session and if you were logged in, you will be automatically logged out."),t=!0),u!=null&&u.setHtml(h.toHHMMSS()),setTimeout(i,1e3)):r.logout(!0)};i()};Layout.prototype.logout=function(n){var t=this;typeof n=="undefined"&&(n=!1);config.Options.DisableAjaxErrorHandling=!0;n?window.LAYOUT.MaskLayout("Your session has expired, you are getting a new session for security reasons"):window.LAYOUT.MaskLayout("Logging out");Ext.Ajax.request({url:config.getUrl("public/membership/Logout"),autoAbort:!0,success:function(n){var u=Ext.decode(n.responseText),i="You have been successfully logged out!",r=t.getResultMessage(i,u.messages);if(i==r&&typeof MEMBERSHIP!="undefined"){document.location=config.getUrl("public/course/browse");return}window.LAYOUT.UnmaskLayout();Ext.MessageBox.show({title:"Logout",msg:r,buttons:Ext.MessageBox.OK,buttonAlign:"right",icon:Ext.MessageBox.INFO,fn:function(){location.reload()}})}})};Layout.prototype.getResultMessage=function(n,t){var i,r;if(!Ext.isArray(t)||t.length<1)return n;for(n+="<br/><br/><strong>During the process the system has also provided the following information:<strong><br/>",i=0;i<t.length;i++)r=t[i],n+="<br/>",n+=r;return n};Layout.prototype.setPageTitle=function(n){var t=this;document.title=n;Ext.get("page-title").setHtml(n)};Layout.prototype.fireLayoutComplete=function(){var t=this,n,i;for(t.State.layoutCompleteFired=!0,n=0;n<t.State.layoutComplete.length;n++)i=t.State.layoutComplete[n],i()};Layout.prototype.onLayoutComplete=function(n){var t=this;t.State.layoutCompleteFired?n():t.State.layoutComplete.push(n)};Layout.prototype.PrevwColor=function(n,t){var r=this,i=n.value;t.indexOf("text")>-1?$(".BG"+t).css("color","#"+i):$(".BG"+t).css("background-color","#"+i)};Layout.prototype.ApplyHistoryBGColors=function(n){for(var t,i,e=this,f=Ext.decode(JSON.parse(n.value)),u=Ext.decode(f.Data),r=0;r<u.length;r++)t=u[r].field,i=u[r].color,$("#BGColor"+t).val(i),$("#BGColor"+t).css("background-color","#"+i),t.indexOf("text")>-1?$(".BG"+t).css("color","#"+i):$(".BG"+t).css("background-color","#"+i)};ModelHelper={ConvertVbScriptBooelan:function(n){return Ext.isDefined(n)?n==-1||n==1||n=="1"||n=="-1":!1},ConvertAspNetMvcDate:function(n){if(n==null)return null;n=n.replace("/Date(","");n=parseInt(n.replace(")/",""));return new Date(n)},ConvertDotNetDate:function(n){if(n==null)return null;return new Date(n)}};PopupHelper.prototype.constructor=PopupHelper;PopupHelper.prototype.documentClickAction=null;PopupHelper.prototype.popupElement=null;PopupHelper.prototype.keepPopup=!1;PopupHelper.prototype.popupClicked=!1;Ext.util.Cookies.set("FirstToRunOnLogInInit","false");PopupHelper.prototype.configureForMessageBox=function(n,t){var i=this;i.keepPopup=!0;n.on("hide",function(){i.keepPopup=!1});n.on("close",function(){i.keepPopup=!1});if(typeof t!="undefined"){var r=Ext.get(t),u=r.getBox(),f=r.getWidth(),e=u.left+f-n.getWidth();n.setPosition(e,u.top)}};UrlHelper={getUrlVars:function(){var i={},r,n,t;if(window.location.search=="")return i;for(n=window.location.search.substr(1),n=n.split("&"),t=0;t<n.length;t++)r=n[t].split("="),i[r[0]]=unescape(r[1]);return i},getUrlWithoutVariable:function(n){var i=this.getUrlVars(),t;if(n instanceof Array)for(t=0;t<n.length;t++)delete i[n[t]];else delete i[n];return this.buildUrl(i)},buildUrl:function(n){var i=location.protocol+"//"+location.hostname,t,r,u;location.port!=80&&location.port!=443&&(i+=":"+location.port);i+=location.pathname;t="";for(r in n)u=n[r],t+=t==""?"?":"&",t+=r+"="+escape(u);return i+(t+location.hash)},getUrl:function(){var n=location.protocol+"//"+location.hostname+location.pathname;return n+(location.search+location.hash)}};Validators={IsNumber:function(n){return!isNaN(parseFloat(n))&&isFinite(n)}}