// Header function renderHeader(container){ if (typeof(container) == 'undefined' || container==null) return; if (container instanceof String) { var el = document.getElementById(container); } else var el = container; if(el == null) return; // Global Nav var oP = document.createElement('p'); oP.className = "globalnav"; var oA = document.createElement('a'); oA.href = "/"; var oT = document.createTextNode('Home'); oA.appendChild(oT); oP.appendChild(oA); var oSep = document.createTextNode(' | '); oP.appendChild(oSep); var oA = document.createElement('a'); var oT = document.createTextNode('Knowledgebase'); oA.appendChild(oT); oA.href = "http://www.myvrzone.com/info"; oA.target = "_blank"; oP.appendChild(oA); var oSep = document.createTextNode(' | '); oP.appendChild(oSep); var oA = document.createElement('a'); var oT = document.createTextNode('Logout'); oA.appendChild(oT); oA.href = "#"; oA.setAttribute('onclick', 'fnLogout()'); oP.appendChild(oA); el.appendChild(oP); // Logo var oImg = document.createElement('img'); //oImg.src = "/images/MVRZLogo.png"; oImg.src = HTTP_ROOT + "/images/MVRZLogoBase.png"; oImg.className = "logo"; el.appendChild(oImg); // Tagline var oP = document.createElement('p'); oP.className = "tagline"; var oT = document.createTextNode('Freedom for Vacation Rental Owners.'); oP.appendChild(oT); el.appendChild(oP); msg("Rendered Header"); } function doServerAction(action, argArray, fnSuccess, fnFailed){ msg("doServerAction(" + action + ", " + argArray + ", " + typeof(fnSuccess) + ", " + typeof(fnFailed) + ")"); if (typeof(MY[DATASET_NONE]) != 'object') MY[DATASET_NONE] = new datasetObject(DATASET_NONE); MY[DATASET_NONE].connect(action, argArray, '', '', fnSuccess, fnFailed); } function notifyAdmin(txt){ var fnSuccess = function(oConnectionCallback){ var status; var fnCallback = oConnectionCallback.argument; var ret = true; msg("notifyAdmin.fnSuccess()"); msg("notifyAdmin.callback.success, status=" + status); popupInfo("Message has been sent to Admin."); if (typeof(fnCallback) == 'function') { fnCallback(); } } var fnFailed = function(oConnectionCallback){ popupWarn("Failed to send message to Admin - please contact support for further assistance."); } var argArray = new Object(); argArray[GET_SUBJECT] = "MVRZ Admin Notification"; argArray[GET_BODY] = txt; doServerAction(YUI_ACTION_NOTIFYADMIN, argArray, fnSuccess, fnFailed); //if(typeof(MY[DATASET_NONE])!='object') MY[DATASET_NONE] = new datasetObject(DATASET_NONE); //MY[DATASET_NONE].connect(YUI_ACTION_NOTIFYADMIN, argArray,'','',fnSuccess, fnFailed); } // Login var oLogin = null; var oCookieSessionCfg; function fnLogout(){ var fnSuccess = function(oConnectionCallback){ var status; var fnCallback = oConnectionCallback.argument; var ret = true; msg("fnLogout.fnSuccess()"); msg("oLogin.callback.success, status=" + status); for (datasetName in MVRZ.data.object) { msg('logout() resetting ' + datasetName); MY[datasetName].isLoaded; } popupInfo("You are now logged out...."); if (typeof(fnCallback) == 'function') { fnCallback(); } var url = window.location.href.split("#"); window.location.href = url[0]; } var fnFailed = function(oConnectionCallback){ popupWarn("Logout Failed - please try again."); } if (typeof(MY[DATASET_NONE]) != 'object') MY[DATASET_NONE] = new datasetObject(DATASET_NONE); MY[DATASET_NONE].connect(YUI_ACTION_LOGOUT, '', '', '', fnSuccess, fnFailed); } function renderLogin(sMsg, emailId, fnCallback){ msg("renderLogin(" + sMsg + ", " + emailId + ")"); gLoggingIn = false; if (typeof(emailId) == 'undefined' || !emailId.length) emailId = YAHOO.util.Cookie.get("UserEmailID"); if (emailId == null) emailId = ''; var aUrl = getUrl(); var loginHtml = '
'; //loginHtml += '<

Enter your login information:

'; loginHtml += '

'; loginHtml += ''; loginHtml += '
'; loginHtml += '

'; loginHtml += ''; loginHtml += ''; loginHtml += '
'; var oCfg = { text: "Hello", postmethod: "none" }; var handleLogin = function(){ if(gLoggingIn) return; // Catch multiple requests gLoggingIn = true; var username = document.getElementById('username'); var password = document.getElementById('password'); var rememberMe = document.getElementById('rememberMe'); if(username.value.length==0 || password.value.length==0) { return; } //oLogin.setFooter(''); var argArray = new Object(); argArray[ARG_GETS] = new Object(); argArray[ARG_GETS][GET_NVPS] = rawurlencode("username="+username.value+"&password="+password.value+"&rememberMe="+rememberMe.value); MY[DATASET_USER].connect(YUI_ACTION_LOGIN, argArray, '', '', oLogin.callback.success); //this.submit(); //this.hide(); }; var handleCancel = function(){ this.hide(); }; var sMsgHtml = ''; if (typeof(sMsg) != 'undefined' && sMsg.length) { sMsgHtml = '' + sMsg + ''; } var oCfg = { y: 10, x:10, fixedcenter: false, visible: false, draggable: true, close: true, hideaftersubmit: false, modal: false, postmethod: "async", text: sMsgHtml + loginHtml, constraintoviewport: true, buttons: [{ text: "Login", handler: handleLogin, isDefault: true }, { text: "Cancel", handler: handleCancel }] }; if(typeof(gLogin)=='undefined') { var loginId = 'mvrz_login'; if(!document.getElementById(loginId)) { var oDiv = document.createElement('div'); oDiv.id = loginId; document.body.appendChild(oDiv); } var oLogin = new YAHOO.widget.SimpleDialog(loginId, oCfg); gLogin = oLogin; } else { oLogin = gLogin; } oLogin.setHeader('MyVRZone Login'); oLogin.render(); oLogin.form.action = gDataUrlBase + '/?' + GET_ACTION + '=' + YUI_ACTION_LOGIN; oLogin.validate = function(){ var username = oLogin.getData().username; var password = oLogin.getData().password; msg("oLogin.validate username=" + username + ', password=' + password); if (username.length == 0 || password.length == 0) return false; return true; } oLogin.callback.argument = fnCallback; oLogin.callback.failure = function(oConnectionCallback){ gLoggingIn = false; } oLogin.callback.success = function(oConnectionCallback){ var status; var ret = true; msg("oLogin.callback.success()"); if (MY[DATASET_USER].isLoaded()) { oLogin.hide(); if (!gUserId) { // New page login - not timed out if (typeof(init) == 'function') init(); else self.location = self.location; } else { // Time sout on a page MVRZ.util.remote.saveDirtyInputs(); } } else { // Failed to log in renderLogin("Login Failed - please try again", oLogin.getData().username); } gLoggingIn = false; } var handleKey = function(e, oLogin){ oTarget = YAHOO.util.Event.getTarget(e, 1); msg("Keyup: " + dataObjectIndex + " on " + oTarget.id); } var kl = new YAHOO.util.KeyListener(document, { keys: 13 }, { fn: handleLogin, scope: oLogin, correctScope: true }); kl.enable(); oLogin.show(); // Focus if (emailId.length) YAHOO.util.Event.onAvailable('password', function(){ YAHOO.util.Event.onAvailable('password', function(){ document.getElementById('password').focus(); }); }); else YAHOO.util.Event.onAvailable('username', function(){ YAHOO.util.Event.onAvailable('username', function(){ document.getElementById('username').focus(); }); }); } function renderAdminPage(oElAppendTo){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Admin page")); //oElAppendTo.appendChild(oContent); return ret; } // Set up the menu var gLastHelpWidth = 300; // Initialization help width var gMinHelpWidth = 1; // Min help width var setPageHelp = function(sHelpHtml, doReplace, id){ msg("setPageHelp(" + sHelpHtml + ", "+ id + ", "+ doReplace +") "); var affix = ""; var oHelpTd = document.getElementById("help-td"); var oHelpDiv = document.getElementById("layout-help"); var helpId = ID_PAGE_HELP; var oHelp = document.getElementById(helpId); if (typeof(el) == 'undefined' || el == null) { return; } if(typeof(doReplace)=='undefined') doReplace = false; if(typeof(id)!='undefined') affix = "-" + id; var elId = helpId + affix; ////var el = gLayout.getUnitByPosition('right'); var el = document.getElementById(elId); if (typeof(el) == 'undefined' || el == null) { if(typeof(id)!='undefined') { el = document.createElement("div"); el.id = elId; oHelp.appendChild(el); } } if (typeof(sHelpHtml) == 'undefined') { if(doReplace) el.innerHTML = ''; } else { if(doReplace) el.innerHTML = sHelpHtml; else el.innerHTML += sHelpHtml; } helpWidth = el.style.width; if (helpWidth > gMinHelpWidth) gLastHelpWidth = helpWidth; if (oHelp.innerHTML.length) { el.style.width = gLastHelpWidth; oHelpDiv.style.display = "block"; oHelpTd.style.borderLeftWidth = "1px"; oHelpTd.style.width = gStyle['help'].width; } else { //oHelp.innerHTML = 'No Help Available'; //el.style.width = gMinHelpWidth; oHelpDiv.style.display = "none"; oHelpTd.style.borderLeftWidth = "0px"; oHelpTd.style.width = "0px"; } //el.set('body', sHelpHtml); } var handlePageChangeWait = function(oDataset, isFailed){ msg("handlePageChangeWait() "); if (MVRZ.system.isConnectionActive()) return; MVRZ.util.event.unsubscribe(EVENT_CONNECTION_PROCESSED); handlePageChange(); } var handlePageChange = function handlePageChange(pageIndex){ msg("handlePageChange() " + pageIndex); if (typeof(pageIndex) == 'undefined') { // Called directly (on initial drawing) var pageIndex = gStatus.activePageIndex; } msg("PageIndex: " + pageIndex); var elId = ID_CONTENT_DIV; if (typeof(oEl = document.getElementById(elId)) != 'undefined') { //El.innerHTML = ''; oEl.innerHTML = ''; } else { msg("No page element for page index " + pageIndex); return; } // If there are any active connections then wait until they are done // - If an input has changed and then the menu clicked then any blur on that input needs to finish // - in case there is a dependent value on the next page. if (MVRZ.system.isConnectionActive()) { msg("handlePageChange() waiting for active connection to complete "); gStatus.activePageIndex = pageIndex; // For the next time through MVRZ.util.event.subscribe(EVENT_CONNECTION_PROCESSED, '', handlePageChangeWait); handlePageChangeWait(); } if (typeof(gPages[pageIndex]) != 'undefined') { if(typeof(gPages[pageIndex].renderPage)!='undefined') { MVRZ.Render.Page.render(gPages[pageIndex].renderPage, oEl); } else if(typeof(gPages[pageIndex].fnRender) == 'function') { msg('Calling fnRender()'); setPageHelp(gPages[pageIndex].help, true); gPages[pageIndex].fnRender(oEl); } else { msg("No page function for page index " + pageIndex); } } else { msg("No page array for page index " + pageIndex); } msg("Page: DONE"); gStatus.activePageIndex = pageIndex; /* TODO - check that the element is loaded/drawn first or set in initial config // Reset all menu items for(pageIndex in gPages) { //gPages[pageIndex].oMenuItem.cfg.setProperty("selected", false); gPages[pageIndex].oMenuItem.cfg.setProperty("strongemphasis", false); //gPages[pageIndex].oMenuItem.cfg.setProperty("classname", null); gPages[pageIndex].oMenuItem.cfg.setProperty("checked", false); } // Set the active one //gPages[gStatus.activePageIndex].oMenuItem.cfg.setProperty("selected", true); gPages[gStatus.activePageIndex].oMenuItem.cfg.setProperty("strongemphasis", true); //gPages[pageIndex].oMenuItem.cfg.setProperty("classname", "active"); gPages[pageIndex].oMenuItem.cfg.setProperty("checked", true); */ } // - Define a handler for the menu "click" event function menuOnClick(p_sType, p_aArgs, pageIndex){ var oEvent = p_aArgs[0], // DOM Event oMenuItem = p_aArgs[1]; // YAHOO.widget.MenuItem instance // Alert the type of the DOM event //alert(oEvent.type); //alert(this.cfg.getProperty("text")+', '+pageIndex); handlePageChange(pageIndex); } function menuOnMouseout(p_sType, p_aArgs){ var oEvent = p_aArgs[0], // DOM Event oMenuItem = p_aArgs[1]; // YAHOO.widget.MenuItem instance // Alert the type of the DOM event //msg(oEvent.type); //alert(this.cfg.getProperty("text")+', '+pageIndex); /* Tried to get this to leave the active menu item selected - but causes issues with other selections pageIndex = gStatus.activePageIndex ; gPages[pageIndex].oMenuItem.cfg.setProperty("selected", true); */ } function renderMenu(menuPageStructure, subMenuId){ msg('renderMenu()'); var itemIndex = 0; var itemArray = new Array(); var isSubMenu = false; if (typeof(subMenuId) != 'undefined' && subMenuId.length) isSubMenu = true; for (menuPageStructureIndex in menuPageStructure) { if (typeof(menuPageStructure[menuPageStructureIndex]) == 'undefined') continue; var pageIndex = menuPageStructure[menuPageStructureIndex].pageIndex; var submenuStructure = menuPageStructure[menuPageStructureIndex].submenu; msg('************subMenuStructure: ' + pageIndex + '::' + menuPageStructureIndex + '::' + submenuStructure); //var oSubMenu = new Object(); if (typeof(submenuStructure) != 'undefined') { var oSubMenu = renderMenu(submenuStructure, pageIndex); msg('************Done submenu' + oSubMenu); } else var oSubMenu = null; var fnRender = gPages[pageIndex].fnRender; if (typeof(fnRender) != 'undefined') { var oOnClick = { fn: menuOnClick, obj: pageIndex }; } else { var oOnClick = {}; } var obj = { text: gPages[pageIndex].label, onclick: oOnClick, submenu: oSubMenu == null ? '' : oSubMenu }; itemArray[itemIndex++] = obj; } if (isSubMenu) { return { id: "submenu" + subMenuId, itemdata: itemArray } var oThisSubMenu = YAHOO.widget.Menu(); gPages[pageIndex].oMenuItem = oThisSubMenu.addItems(itemArray); return oThisSubMenu; } else { gPages[pageIndex].oMenuItem = gMainMenu.addItems(itemArray); gMainMenu.subscribe("mouseout", menuOnMouseout); } } var oSmtpButtonSend = null; var oSmtpButtonReset = null; function renderUsersPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Users page")); if (typeof(argArray) == 'undefined') argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; MY[DATASET_USERS].render(oElAppendTo, argArray); return ret; } function renderQuotesPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; msg('renderQuotesPage(' + oElAppendTo + ', ' + updatedPaneId + ')'); //if(typeof(oElAppendTo)=='undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Quotes page")); if (typeof(argArray) == 'undefined') argArray = new Object(); // Layout var paneIdArray = new Object(); paneIdArray[PANE_QUOTES_LIST] = PAGE_QUOTES + 'list'; paneIdArray[PANE_QUOTES_REQUEST] = PAGE_QUOTES + 'request'; var noPane = false; msg(noPane + ',' + updatedPaneId); if (typeof(updatedPaneId) == 'undefined') { noPane = true; var content = '' + '' + '' + '
'; oElAppendTo.innerHTML = content; } else { /* if(typeof(el=document.getElementById(paneIdArray[updatedPaneId]))=='undefined') { msg('Invalid paneID: '+updatedPaneId); } el.innerHTML = ''; */ } msg('noPane,updatedPaneId: ' + noPane + ',' + updatedPaneId); if (noPane || (updatedPaneId != PANE_QUOTES_REQUEST)) { // Request form - editable if (typeof(el = document.getElementById(paneIdArray[PANE_QUOTES_REQUEST])) != 'undefined') { el.innerHTML = ''; } argArray['displayType'] = DISPLAY_TYPE_EDIT; MY[DATASET_REQUESTSNOTDONE].render(paneIdArray[PANE_QUOTES_REQUEST], argArray); } if (noPane || (updatedPaneId != PANE_QUOTES_LIST)) { // Request list - line items click to open/fill if (typeof(el = document.getElementById(paneIdArray[PANE_QUOTES_LIST])) != 'undefined') { el.innerHTML = ''; } argArray['displayType'] = DISPLAY_TYPE_VIEW; MY[DATASET_REQUESTSNOTDONE].render(paneIdArray[PANE_QUOTES_LIST], argArray); } // History information ////oElAppendTo.appendChild(oContent); return ret; } function renderResortPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Resorts page")); if (typeof(argArray) == 'undefined') argArray = new Object(); argArray['sIntroHtml'] = "Resorts"; MY[DATASET_RESORT].render(oElAppendTo, argArray); return ret; } function renderResortListPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Resorts page")); if (typeof(argArray) == 'undefined') argArray = new Object(); argArray['sIntroHtml'] = "Resorts List"; argArray['displayType'] = DISPLAY_TYPE_VIEW; MY[DATASET_RESORT].render(oElAppendTo, argArray); return ret; } function renderAmenitiesPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Amenities page")); if (typeof(argArray) == 'undefined') argArray = new Object(); argArray['sIntroHtml'] = "Amenities"; MY[DATASET_AMENITIES].render(oElAppendTo, argArray); return ret; } function renderAmenitiesListPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Amenities page")); if (typeof(argArray) == 'undefined') argArray = new Object(); argArray['sIntroHtml'] = "Amenities List"; argArray['displayType'] = DISPLAY_TYPE_VIEW; MY[DATASET_AMENITIES].render(oElAppendTo, argArray); return ret; } function renderSetupPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Setup page")); //oElAppendTo.appendChild(oContent); return ret; } handleActiveTabChange = function handleActiveTabChange(e){ msg('handleActiveTabChange()'); //msg("TabIndex: "+tabView.getTabIndex(e.oldValue)+", "+tabView.getTabIndex(e.newValue)); if (typeof(e) != 'undefined') { msg('handleActiveTabChange() with event:' + e.newValue); if (typeof(e.newValue) != 'undefined') { var tabIndex = gTabView.getTabIndex(e.newValue); } else { var tabIndex = gTabView.getTabIndex(gTabView.get('activeTab')); } } else { // Called directly (on initial drawing) msg('handleActiveTabChange() no event'); //var tabIndex = gActiveTabIndex[PAGE_SETUP]; var tabIndex = 0; } msg("handleActiveTabChange(): TabIndex: " + tabIndex); var oContent = gContent[gTabArray[tabIndex].contentId]; msg("handleActiveTabChange(): fnRender=" + typeof(oContent.fnRender)); // Clear content in tabs - stops duplicate IDs (esp for select) for(var tI in gTabArray){ var elId = 'tab:' + gTabArray[tI].id; if (typeof(oEl = document.getElementById(elId)) != 'undefined' && oEl != null) { oEl.innerHTML = ''; } } if (typeof(oContent.fnRender) == 'function') { var elId = 'tab:' + gTabArray[tabIndex].id; msg('handleActiveTabChange(), calling function with content into ' + elId); if (typeof(oEl = document.getElementById(elId)) != 'undefined' && oEl != null) { oEl.innerHTML = ''; msg('Calling fn()'); oContent.fnRender(oEl, null, gTabArray[tabIndex]); } else { msg("No tab element for tab index " + tabIndex); } } else { msg("No tab function for tab index " + tabIndex); } msg("Tab: DONE"); } function renderSetupPlan1Page(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Setup Plan1 page")); gSteps = new MVRZ.util.steps(oElAppendTo); gSteps.addStep({ obj: MY[DATASET_ACCOUNTCONTACT], idValue: MY[DATASET_USER].get(0, 'contactID', ''), displayType: DISPLAY_TYPE_EDIT, sIntroHtml: "

MyVRZone Account Contact Information

Please enter the contact information for commnications about this myvrzone account. " + "
You can enter a different contact in the next step for use in your advertising and communications with guests.

" }); gSteps.addStep({ obj: MY[DATASET_RESERVATIONSCONTACT], idValue: MY[DATASET_USER].get(0, 'reservationsContactID', ''), displayType: DISPLAY_TYPE_EDIT, sIntroHtml: "

Reservation Contact Information

Please enter the contact information for commnications with potential guests. " + "
You not not need to enter anything here - missing information will be taken from the Account contact information.

" }); msg('gSteps.addStep()'); gSteps.addStep({ obj: MY[DATASET_PROPERTY], idValue: '', displayType: DISPLAY_TYPE_EDIT, sIntroHtml: "

Property Information

Please enter the property information. " + "
Multiple properties can be entered - just use the add button.

" }); var startStep = 1; gSteps.renderSteps(startStep); //oElAppendTo.appendChild(oContent); msg('gSteps.setToStep()' + startStep); gSteps.setToStep(startStep); return ret; } function renderSetupPlan2Page(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Setup Plan2 page")); //oElAppendTo.appendChild(oContent); return ret; } function renderSetupPlan3Page(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Setup Plan3 page")); //oElAppendTo.appendChild(oContent); return ret; } function renderSetupWizardPLSPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Setup Wizard PLS page")); var pageList = [{ sIntroText: 'Wizard Page 1', list: [{ fn: renderSetupAccountContactPage }] }, { sIntroText: 'Wizard Page 2', list: [{ fn: renderSetupReservationsContactPage }] }, { sIntroText: 'Wizard Page 3', list: [{ fn: MVRZ.Render.Content[CONTENT_SETUP_PROPERTY] }] }, { sIntroText: 'Wizard Page 4', list: [{ fn: MVRZ.Render.Content[CONTENT_SETUP_SOURCE] }] }]; var gWizard = new MVRZ.util.wizard(oElAppendTo, pageList); ret = gWizard.render(); return ret; } function renderSetupWizardQOBPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.appendChild(document.createTextNode("Setup Wizard QOB page")); //oElAppendTo.appendChild(oContent); return ret; } function renderTemplatePage(oElAppendTo, updatedPaneId, argArray){ var ret = false; msg('renderTemplatePage(' + oElAppendTo + ', ' + updatedPaneId + ')'); //if(typeof(oElAppendTo)=='undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Quotes page")); if (typeof(argArray) == 'undefined') argArray = new Object(); // Request form - editable argArray['displayType'] = DISPLAY_TYPE_EDIT; MY[DATASET_TEMPLATE].render(oElAppendTo.id, argArray); return ret; } function renderGuestlistPage(oElAppendTo, updatedPaneId, argArray){ var ret = false; msg('renderTravelersPage(' + oElAppendTo + ', ' + updatedPaneId + ')'); //if(typeof(oElAppendTo)=='undefined') return false; //oElAppendTo.appendChild(document.createTextNode("Quotes page")); if (typeof(argArray) == 'undefined') argArray = new Object(); // Template select and button var oTable = document.createElement("table"); oTable.className = "controls"; oElAppendTo.appendChild(oTable); var oRow = document.createElement("tr"); oTable.appendChild(oRow); var oCol = document.createElement("td"); oCol.appendChild(document.createTextNode("Choose Template")); oRow.appendChild(oCol); oCol = document.createElement("td"); oRow.appendChild(oCol); MY[DATASET_TEMPLATE].renderSelect(oCol); oCol = document.createElement("td"); oRow.appendChild(oCol); var id = ACTION_DO + ':' + ACTION_DO_EMAIL_GUESTS; oButton = new YAHOO.widget.Button({ id: id, type: "push", label: "Email", title: "Email guests with this Template", container: oCol }); msg('adding listener to ' + id); this.handleButtonClick = function(e, obj){ alert('click'); var oButtonTarget = YAHOO.util.Event.getTarget(e, 1); var oTarget = YAHOO.util.Dom.getAncestorByClassName(oButtonTarget, 'yui-button'); msg('handleButtonClick: ' + oTarget.id + ', type ' + oTarget.type + ', node ' + oTarget.nodeName + ', newValue ' + oTarget.newValue); var id = oTarget.id; if (typeof(id) != 'undefined') { var idArray = id.split(':'); msg(idArray[0] + ',' + idArray[1]); } else { msg('no button ID'); return; } // Send the request to server oAction = new actionObject(idArray[0], idArray[1]); } YAHOO.util.Event.addListener(id, 'click', this.handleButtonClick, this); /* var oButtonGroup = new YAHOO.widget.ButtonGroup(oElAppendTo.id, { name: 'buttons', }); oButtonGroup.addButtons(oButtons); */ // Guest list table argArray['displayType'] = DISPLAY_TYPE_VIEW; MY[DATASET_TRAVELERCONTACT].render(oElAppendTo.id, argArray); return ret; } function renderReservationsPage(oElAppendTo, updatedPaneId, argArray){ msg('renderReservationsPage(' + oElAppendTo + ')'); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Reservation

Manage your reservations here

" oElAppendTo.innerHTML = 'replace this'; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; msg('renderReservationsPage() Calling Content rendering with ' + CONTENT_RESERVATION); MVRZ.Render.Content[CONTENT_RESERVATION](oElAppendTo, updatedPaneId, argArray); return ret; } function renderReservationsAvailabilityPage(oElAppendTo, updatedPaneId, argArray){ msg('renderReservationsAvailabilityPage(' + oElAppendTo + ')'); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Availability

" oElAppendTo.innerHTML = 'replace this'; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; msg('renderReservationsAvailabilityPage() Calling Content rendering with ' + CONTENT_RESERVATION_AVAILABILITY); MVRZ.Render.Content[CONTENT_RESERVATION_AVAILABILITY](oElAppendTo, updatedPaneId, argArray); return ret; } var gTimerActivity; function setActivity(isActive, sMsg){ var isVisible = false; if(typeof(isActive)=='undefined') isActive = false; msg("setActivity(" + isActive + ", " + sMsg + ")"); var el; var connectionActivity = MVRZ.system.isConnectionActive(); if(typeof(gTimerActivity)!='undefined') clearTimeout(gTimerActivity); var visibility = "hidden"; if (isActive || connectionActivity) { visibility = "visible"; isVisible = true; // Set timer to check back on progress - gives timeout to notices too gTimerActivity = setTimeout(function(){setActivity();}, 1000); } if(document.body==null) return; var container = document.getElementById(ID_STATUS_ACTIVITY); if (typeof(container) == 'undefined' || container == null) { container = document.createElement('div'); container.id = ID_STATUS_ACTIVITY; document.body.appendChild(container); } var text = document.getElementById(ID_STATUS_ACTIVITY_TEXT); if (typeof(text) == 'undefined' || text == null) { text = document.createElement('span'); text.id = ID_STATUS_ACTIVITY_TEXT; container.appendChild(text); } var img = document.getElementById(ID_STATUS_ACTIVITY_IMG); if (typeof(img) == 'undefined' || img == null) { img = document.createElement('img'); img.id = ID_STATUS_ACTIVITY_IMG; img.src = LOADING_IMG; container.appendChild(img); } var imgDisplay = 'inline-block'; var textDisplay = 'none'; if(!isVisible) text.innerHTML = ''; if(typeof(sMsg)!='undefined') { text.innerHTML = sMsg; imgDisplay = 'none'; textDisplay = 'inline-block'; } else { if(text.innerHTML.length) { imgDisplay = 'none'; textDisplay = 'inline-block'; } } img.style.display = imgDisplay; text.style.display = textDisplay; container.style.visibility = visibility; } function setActive(sMsg){ msg("setActive(" + sMsg + ")"); setActivity(true, sMsg); } function setInactive(sMsg){ msg("setInactive(" + sMsg + ")"); setActivity(false, sMsg); } function sysErr(err){ msg = "There was an error on this page.\n\n"; msg += "An internal programming error may keep this page from displaying properly.\n"; msg += "You can continue to use this page at the risk of incorrect behavior or reload the whole page to see if this error goes away.\n"; if(typeof(err)!='undefined') { msg += "\n\nMessage:\n"; if(err instanceof String) { msg += err + "\n"; } else { for (key in err) { if (key.length) msg += key + ":" + err[key] + "\n"; } } } else { } MVRZ.util.errorHandler(msg); //popup(POPUP_TYPE_ERROR, nl2br(msg)); } function sysLoadErr(err){ /* var msg = "There was an error loading this page.\n\n" msg += "You can continue to use this page at the risk of incorrect behavior or reload the whole page to see if this error goes away.\n" if(typeof(popup)=='function') popup(POPUP_TYPE_ERROR, msg.replace(/\\n/, "
")); else alert(msg); */ MVRZ.util.errorHandler(err); } /* var oPopup = { 0: null, 1: null, 3: null } function popupDebug(txt){ if(gIsDebug) popup(NOTIFY_TYPE_DEBUG, txt); } var dbgp = popupDebug; function popupInfo(txt){ popup(NOTIFY_TYPE_INFO, txt); } function popupErr(txt){ popup(NOTIFY_TYPE_ERROR, txt); } function popupWarn(txt){ popup(NOTIFY_TYPE_WARNING, txt); } function popup(type, txt){ msg("popup(" + type + ", txt)"); switch (type) { case (NOTIFY_TYPE_DEBUG): icon = YAHOO.widget.SimpleDialog.ICON_WARN; break; case (NOTIFY_TYPE_WARNING): icon = YAHOO.widget.SimpleDialog.ICON_WARN; break; case (NOTIFY_TYPE_ERROR): icon = YAHOO.widget.SimpleDialog.ICON_BLOCK; break; case (NOTIFY_TYPE_INFO): default: type = NOTIFY_TYPE_INFO; // Make sure it's set icon = YAHOO.widget.SimpleDialog.ICON_INFO; break; } var handleClick = function(){ this.hide(); }; if (txt instanceof Array) sMsg = txt.join('
'); else sMsg = txt; var sId = 'mvrz_popup' + type; var oCfg = { //width: "400px", fixedcenter: true, visible: false, draggable: true, close: true, hideaftersubmit: true, modal: false, postmethod: "none", //icon: icon, //text: sMsg, constraintoviewport: true, buttons: [{ text: "OK", handler: handleClick, isDefault: true }] }; if (typeof(oPopup[type]) != 'object' || oPopup[type] == null) { oPopup[type] = new YAHOO.widget.SimpleDialog(sId, oCfg); oPopup[type].cfg.setProperty("icon", icon); oPopup[type].setHeader(notifyType[type]); oPopup[type].render(); } if (oPopup[type].cfg.getProperty("visible")) { var sPre = ''; var sBody = oPopup[type].body.innerHTML; if (sBody.length > 0) sPre = sBody + "
"; oPopup[type].setBody(sPre + sMsg); //oPopup[type].show(); } else { oPopup[type].setBody(sMsg); oPopup[type].show(); } } function popupPage(fn, title) { msg("popupPage(" + typeof(fn) + ")"); type = NOTIFY_TYPE_INFO; // Make sure it's set icon = YAHOO.widget.SimpleDialog.ICON_INFO; var handleClick = function(){ this.hide(); }; if (typeof(fn) !== 'function') { msg("No function"); } var sId = 'mvrz_popupPage'; var el = document.getElementById(sId); if(!el) { el = document.createElement('div'); el.id = sId; document.body.appendChild(el); } var width = YAHOO.util.Dom.getViewportWidth() * 0.9; var oCfg = { width: width+"px", fixedcenter: true, visible: false, draggable: false, close: true, hideaftersubmit: true, modal: true, postmethod: "none", //icon: icon, //text: sMsg, constraintoviewport: false, buttons: [{ text: "OK", handler: handleClick, isDefault: true }] }; var oPopup = new YAHOO.widget.SimpleDialog(sId, oCfg); //oPopup.cfg.setProperty("icon", icon); oPopup.setHeader(title); oPopup.render(); oPopup.body.id = sId + '-bd'; oPopup.body.style.overflow = 'auto'; fn(oPopup.body); //oPopup.forceDocumentRedraw(); oPopup.show(); } */ if(typeof(gPageType)!='undefined' && gPageType == PAGE_TYPE_MOBILE) { var CAL_PAGES = 6; } else { var CAL_PAGES = 12; } var calRenderCount=0; var aStatusStyle = [{foreground: "#06c", background:"#fff"}, {foreground: "#000", background:"#fdd"}, {foreground: "#000", background:"#ff6"}, {foreground: "#fff", background:"#06c"}]; var gWizardContentId = "wizard-content"; var gButtonGroup = {}; // --------------------------------------------- //var Render = new Object(); //Render.Content = new Object(); //Render.Page = new Object(); //Render.Wizard = new Object(); //Render.Feedback = new Object(); MVRZ.namespace('MVRZ.Render'); MVRZ.Render = new function Render() { this.Buttons = new function Buttons() { this.Button = function Button(p_oElement , p_oAttributes, p_extraArgs, p_onlyOnce) { /* YUI does it like this * * * * * * */ if(isElement(p_oElement)) { var oEl = p_oElement; var oCfg = p_oAttributes; var oExtra = p_extraArgs; var onlyOnce = p_onlyOnce; } else { // Need to return this object, not append to element var oCfg = p_oElement; var oExtra = p_oAttributes; var onlyOnce = p_extraArgs; var oEl = null; } if(typeof(onlyOnce)=='undefined' || onlyOnce == null) { onlyOnce = false; } if(typeof(oEl)!='undefined' && oEl != null) { if(typeof(oEl)!='object') { // Assume string oEl = document.getElementById(oEl); } } if(typeof(oExtra)=='undefined' || oExtra == null) oExtra = {}; // Check the cfg for defaults if(typeof(oCfg)!='object' || oCfg==null) oCfg = new Object(); var id; if(typeof(oCfg.id)=='undefined') id = YAHOO.util.Dom.generateId(null, "mvrz-button-id-"); else id = oCfg.id; if(onlyOnce) { var groupId = oEl.id; if(!(typeof(gMvrzButtons[groupId])=='undefined' || typeof(gMvrzButtons[groupId][id])=='undefined')) { return false; } if(typeof(gMvrzButtons[groupId])=='undefined') gMvrzButtons[groupId] = gMvrzButtons[groupId] = new Object(); gMvrzButtons[groupId][id]=1; } if(document.getElementById(id)) id = YAHOO.util.Dom.generateId(null, id + "-"); if(typeof(oCfg.checked)=='undefined') oCfg.checked = false; if(typeof(oCfg.type)=='undefined' || oCfg.type.length==0) oCfg.type = 'push'; var checked = ''; if(oCfg.checked) { checked = " yui-button-checked yui-"+oCfg.type+"-button-checked"; } var disabled = ''; // Construct Button HTML in Dom var oSpanOuter = document.createElement('span'); oSpanOuter.id = id; //oSpanOuter.mvrz = {onclick: oCfg.onclick}; oSpanOuter.mvrz = oCfg; if(typeof(oExtra)=='object') { for(o in oExtra) { oSpanOuter.mvrz[o] = oExtra[o]; } } isDisabled = parseInt(oCfg.disabled); if(typeof(oExtra.disabled)!='undefined') isDisabled = parseInt(oExtra.disabled); oSpanOuter.mvrz.disabled = isDisabled; if(!isDisabled) { oSpanOuter.onclick = function(e) { // Show that the button has been pressed var buttonId = this.id; YAHOO.util.Dom.addClass(buttonId, 'mvrz-img-button-pressed'); setTimeout(function() { YAHOO.util.Dom.removeClass(buttonId, 'mvrz-img-button-pressed'); }, 1000); // Call the function if(typeof(this.mvrz.onclick)!='undefined' && typeof(this.mvrz.onclick.fn)=='function') { this.mvrz.onclick.fn(this.mvrz); } return false; // Don't submit } } oSpanOuter.onmouseover = function(e) { var buttonId = this.id; if(!this.mvrz.disabled) { var type = this.mvrz.type; YAHOO.util.Dom.addClass(buttonId, 'mvrz-'+type+'-button-hover'); } // Tooltip? if(/*yh_tt && typeof(oSpanOuter.tt_div)=='undefined' &&*/ typeof(this.mvrz.help)!='undefined' && this.mvrz.help.length>0) { newTooltip(oSpanOuter, this.mvrz.help, gOldSystem, true, true); } showTip('', oSpanOuter); } oSpanOuter.onmouseout = function(e) { if(!this.mvrz.disabled) { var buttonId = this.id; var type = this.mvrz.type; YAHOO.util.Dom.removeClass(buttonId, 'mvrz-'+type+'-button-hover'); } hideTip('', oSpanOuter); } var label = oCfg.label; if(typeof(oExtra.label)!='undefined') { label = oExtra.label; } var img = oCfg.img; if(typeof(oExtra.img)!='undefined') { img = oExtra.img; } if(isDisabled) { //disabled = " yui-button-disabled mvrz-button-disabled yui-"+oCfg.type+"-button-disabled mvrz-"+oCfg.type+"-button-disabled"; disabled = " mvrz-button-disabled mvrz-"+oCfg.type+"-button-disabled"; } var outerClassName = "yui-button mvrz-button yui-"+oCfg.type+"-button mvrz-"+oCfg.type+"-button" + disabled + checked; //var oSpanInner = document.createElement('span'); var innerClassName = "first-child"; if(typeof(img)=='undefined' || img.length==0) { label = hardspace(label); /* var oButton = document.createElement('button'); //var oButton = document.createElement('div'); oButton.className = 'button'; oButton.id = id + '-button'; //oButton.type = "button"; oButton.innerHTML = hardspace(label); oSpanInner.appendChild(oButton); oSpanOuter.appendChild(oSpanInner); */ } else { // Use an image var sLeft='', sRight=''; switch(oExtra.labelpos) { case('left'): sLeft = ""+label+""; break; case('right'): sRight = ""+label+""; break; case('center'): sLeft = ""+label+""; break; } var imgSrc = img; //if(imgSrc.substr(0,4)!='http') imgSrc = '/images/' + imgSrc; label = sLeft + '' + sRight; } oSpanOuter.className = outerClassName; var oSpanInner = document.createElement('span'); oSpanInner.className = innerClassName; var oButton = document.createElement('button'); //var oButton = document.createElement('div'); oButton.className = 'button'; oButton.id = id + '-button'; //oButton.type = "button"; oButton.innerHTML = label; oSpanInner.appendChild(oButton); oSpanOuter.appendChild(oSpanInner); if(oEl==null) { return oSpanOuter; } else { oEl.appendChild(oSpanOuter); return oSpanOuter; } } } this.Input = new function Input() { this.uploader = function uploader(appendTo, oCfg) { msg("Render.uploader()..."); if(typeof(appendTo)=='object') { var oUpload = appendTo; } else if(typeof(appendTo)!='undefined') { var oUpload = document.getElementById(appendTo); } else { var oUpload = document.createElement('div'); } var idBase = oCfg.idBase; if(typeof(idBase=='undefined')) idBase = YAHOO.util.Dom.generateId(); var datasetName = oCfg.datasetName; if(typeof(datasetName)=='undefined') datasetName = DATASET_NONE; // Add hidden iframe for posting the form to - MUST BE BEFORE THE FORM var oIframe = document.getElementById(INPUT_IFRAME); /*if(!oIframe) { oIframe = document.createElement("iframe"); oIframe.name = '__upload'; oIframe.id = iframeId; oIframe.src = "#"; oIframe.style.display = "none"; document.body.appendChild(oIframe); } */ // Render an uploader try { var oUploadForm = document.createElement('
'); // IE style } catch (e) { var oUploadForm = document.createElement("form"); } oUploadForm.id = idBase + '-uploaderForm'; oUploadForm.name = oUploadForm.id; oUploadForm.className = 'upload'; //popupInfo(location.search.substr(1)); var aGets = deserializeArray(location.search.substr(1)); aGets[GET_WHAT] = datasetName; aGets[GET_ACTION] = YUI_ACTION_UPLOAD; if(typeof(MY[datasetName].postUpload)=='function') aGets[GET_CALLBACK] = 'MY["'+datasetName+'"].postUpload'; oUploadForm.action = '/Data/YUI/index.php?' + serializeArray(aGets); //oUploadForm.action = '/Data/YUI/index.php?'+GET_WHAT+'='+datasetName+'&'+GET_ACTION+'='+YUI_ACTION_UPLOAD+'&'+GET_CALLBACK+'=MY["'+datasetName+'"].postUpload'; oUploadForm.target = oIframe.name; oUploadForm.enctype = 'multipart/form-data'; oUploadForm.method = 'post'; oUpload.appendChild(oUploadForm); var oInfo = document.createElement("p"); oInfo.id = "upload-button-info" oUploadForm.appendChild(oInfo); var uploadBase = "uploadFile-"; var inputBaseId = idBase + "-" + uploadBase; // Uploader inputs -------------- var numInputs = oCfg.numInputs; if(typeof(numInputs)=='undefined') numInputs = 1; for (var i=0; i ', active: activeTabId == tabIndex ? true : false })); } return gTabView; } } // End Tab this.Pane = new function Pane() { this.getPane = function getPane(paneId, containerId, oCfg) { msg("getPane("+paneId+", "+containerId+", "+oCfg+")"); // Single request var oPane = gPanes[paneId]; if(typeof(oPane)=='undefined') { oPane = new pane(containerId, oCfg); gPanes[paneId] = oPane; } return oPane; } } // End Pane this.Controls = new function Controls() { this.datePicker = new function datePicker() { this.init = function init() { var oDatePickerContainer = document.getElementById(ID_DATEPICKER_CONTAINER); if(!oDatePickerContainer) { MVRZ.datePicker = new Object(); MVRZ.datePicker.container = document.createElement('div'); MVRZ.datePicker.container.id = ID_DATEPICKER_CONTAINER; MVRZ.datePicker.container.style.position = "absolute"; document.body.appendChild(MVRZ.datePicker.container); MVRZ.datePicker.cal = new YAHOO.widget.Calendar(ID_DATEPICKER, ID_DATEPICKER_CONTAINER, {start_weekday:0,close: true, navigator: true, modal: true}); MVRZ.datePicker.cal.render(); // Hide Calendar if we click anywhere in the document other than the calendar YAHOO.util.Event.on(document, "click", function(e) { var el = YAHOO.util.Event.getTarget(e); var oCal = MVRZ.datePicker.container; var oInput = MVRZ.datePicker.oActiveInput; if (el != oCal && el != oInput && !YAHOO.util.Dom.isAncestor(oCal, el) ){ MVRZ.datePicker.cal.hide(); } }); } } this.handleSelect = function handleSelect(e, aSelected) { //popupInfo(MVRZ.datePicker.oActiveInput.id + '=' + aSelected[0]); var aSelectedDate = MVRZ.datePicker.cal.getSelectedDates(); // Put the new date into the input MVRZ.datePicker.oActiveInput.value = MVRZ.util.formatter.date.format(aSelectedDate[0]); MVRZ.util.event.handleInputBlur(MVRZ.datePicker.oActiveInput, {datasetName: MVRZ.datePicker.oInputInfo.datasetName}); var mvrz = MVRZ.datePicker.oActiveInput.mvrz; if(typeof(mvrz)!='undefined' && typeof(mvrz.after) == 'function') { mvrz.after(MVRZ.datePicker.oActiveInput.id); } //MVRZ.datePicker.oActiveInput.focus(); MVRZ.Render.Controls.datePicker.hide(); } this.show = function show(input, reference) { if(typeof(MVRZ.datePicker)=='undefined') this.init(); // Move the picker to the input first if(typeof(input)!='undefined') { var el = input; if(!isElement(input)) el = document.getElementById(input); var xy = YAHOO.util.Dom.getXY(el); //YAHOO.util.Dom.setXY(MVRZ.datePicker.container, xy); // Doesn't work - seems to only set it once MVRZ.datePicker.container.style.left = xy[0] + 'px'; var top = xy[1] + el.clientHeight + 2; MVRZ.datePicker.container.style.top = (top) + 'px'; MVRZ.datePicker.container.style.zIndex = '1000'; // Reference info var init, earliestDate, oEarliestDate; if(typeof(reference)!='undefined') { init = reference.init; earliestDate = reference.earliest; if(earliestDate instanceof Date) { // Specific date oEarliestDate = earliestDate; } else if(typeof(earliestDate)=='function') { oEarliestDate = MVRZ.util.parser.date(earliestDate()); } else { oEarliestDate = MVRZ.util.parser.date(earliestDate); } if(typeof(el.mvrz)=='undefined') el.mvrz = new Object(); for(var o in reference) { el.mvrz[o] = reference[o]; } } // Initialise the date var oDate; var sDate = el.value; if((typeof(sDate)=='undefined' || sDate==null || sDate.length==0) && typeof(init)!='undefined' ) { if(typeof(init.set)!='undefined') { if(init.set instanceof Date) { // Specific date oDate = init.set; } else { sDate = init.set; } } else if(typeof(init.input)!='undefined') { // reference to something that gives a date var oInputInfo = MVRZ.util.decodeInputId(el.id); var inputId = MVRZ.util.encodeInputId(oInputInfo.datasetName, oInputInfo.datasetRowIndex, oInputInfo.idValue, init.input); var oInput; if(oInput=document.getElementById(inputId)) { sDate = MVRZ.util.getInputVal(oInput); } } } if(typeof(oDate)=='undefined') oDate = MVRZ.util.parser.date(sDate); if(!oDate) oDate = new Date(); // Today if(typeof(oEarliestDate)=='object') { if(oEarliestDate > oDate) oDate = oEarliestDate; } MVRZ.datePicker.cal.setYear(oDate.getFullYear()); MVRZ.datePicker.cal.setMonth(oDate.getMonth()); MVRZ.datePicker.oInputInfo = MVRZ.util.decodeInputId(el.id); var sTitle = 'Choose Date'; if(typeof(MY[MVRZ.datePicker.oInputInfo.datasetName])!='undefined' && typeof(MY[MVRZ.datePicker.oInputInfo.datasetName].inputs.fields[MVRZ.datePicker.oInputInfo.input])!='undefined') { sTitle = MY[MVRZ.datePicker.oInputInfo.datasetName].inputs.fields[MVRZ.datePicker.oInputInfo.input].label; } MVRZ.datePicker.oActiveInput = el; MVRZ.datePicker.cal.selectEvent.unsubscribeAll(); MVRZ.datePicker.cal.cfg.setProperty('title', sTitle); MVRZ.datePicker.cal.cfg.setProperty('mindate', oEarliestDate); MVRZ.datePicker.cal.select(oDate); MVRZ.datePicker.cal.render(); MVRZ.datePicker.cal.show(); MVRZ.datePicker.cal.selectEvent.subscribe(MVRZ.Render.Controls.datePicker.handleSelect); if(typeof(MVRZ.datePicker.oActiveInput.onkeydown)!='function') { MVRZ.datePicker.oActiveInput.onkeydown = function() {MVRZ.Render.Controls.datePicker.hide();}; } } } this.hide = function hide(input) { if(typeof(MVRZ.datePicker)=='undefined') this.init(); MVRZ.datePicker.cal.hide(); //MVRZ.datePicker.oActiveInput = null; MVRZ.datePicker.cal.selectEvent.unsubscribeAll(); } } this.node = new function node() { var _oCfg; this.disable = function disable(nodeId, reason) { var oControl = document.getElementById(_getControlId(nodeId)); if(oControl) oControl.onclick = ''; YAHOO.util.Dom.addClass(oControl, 'mvrz-control-node-disabled'); } this.enable = function enable(nodeId, reason) { var oControl = document.getElementById(_getControlId(nodeId)); if(oControl) oControl.onclick = _onclick; YAHOO.util.Dom.removeClass(oControl, 'mvrz-control-node-disabled'); } function _getContentId(nodeId) { return NODE_PREFIX + "-content-" + nodeId; } function _getControlId(nodeId) { return NODE_PREFIX + "-control-" + nodeId; } function _getControlImgId(nodeId) { return NODE_PREFIX + "-control-img-" + nodeId; } function _getNodeClass(nodeState) { return 'mvrz-node-control-state-' + nodeState; } function _getNode(nodeId){ return document.getElementById(nodeId); } function _getControlImgSrc(nodeState) { if(nodeState==NODE_STATE_OPEN) { var src = "/images/buttons/down.png"; } else { var src = "/images/buttons/next.png"; } return src; } function _setNodeControl(nodeId, nodeState) { //var oNode = document.getElementById(nodeId); //if(!oNode) return; var imgId = _getControlImgId(nodeId); var oImg = document.getElementById(imgId); if(!oImg) return; var src = _getControlImgSrc(nodeState); oImg.src = src; if(typeof(_oCfg.historyId)!='undefined') { if(typeof(gNodes[_oCfg.historyId])=='undefined') gNodes[_oCfg.historyId] = new Object(); if(typeof(gNodes[_oCfg.historyId][nodeId])=='undefined') gNodes[_oCfg.historyId][nodeId] = new Object(); gNodes[_oCfg.historyId][nodeId].nodeState = nodeState; } } function _setNodeContent(p_oContent, nodeState) { if(typeof(p_oContent)!='object') { var oContent = document.getElementById(p_oContent); } else { var oContent = p_oContent; } if(!oContent) return; var styleDisplay = "none"; if(nodeState==NODE_STATE_OPEN) { styleDisplay = "block"; } oContent.style.display = styleDisplay; } this.open = function open(nodeId) { var oNode = _getNode(nodeId); YAHOO.util.Dom.removeClass(oNode, _getNodeClass(NODE_STATE_CLOSED)); YAHOO.util.Dom.addClass(oNode, _getNodeClass(NODE_STATE_OPEN)); _setNodeContent(_getContentId(nodeId), NODE_STATE_OPEN); _setNodeControl(nodeId, NODE_STATE_OPEN); oNode.mvrz.nodeState = NODE_STATE_OPEN; } this.close = function close(nodeId) { var oNode = _getNode(nodeId); YAHOO.util.Dom.removeClass(oNode, _getNodeClass(NODE_STATE_OPEN)); YAHOO.util.Dom.addClass(oNode, _getNodeClass(NODE_STATE_CLOSED)); _setNodeContent(_getContentId(nodeId), NODE_STATE_CLOSED); _setNodeControl(nodeId, NODE_STATE_CLOSED); oNode.mvrz.nodeState = NODE_STATE_CLOSED; } this.toggle = function toggle(nodeId) { var oNode = _getNode(nodeId); if(oNode.mvrz.nodeState===NODE_STATE_OPEN) { MVRZ.Render.Controls.node.close(nodeId); } else { MVRZ.Render.Controls.node.open(nodeId); } } function _onclick(e) { var ret = true; //if(typeof(e)=='undefined') return; var oClicked = YAHOO.util.Event.getTarget(e); // Find the ancestor control node for this if(!YAHOO.util.Dom.hasClass(oClicked, NODE_PREFIX+'-control')) { var oControl = YAHOO.util.Dom.getAncestorByClassName(oClicked, NODE_PREFIX+'-control'); } else { var oControl = oClicked; } var nodeId = oControl.mvrz.nodeId; // Toggle visible on content if(typeof(_oCfg.preClick)=='function') { ret = _oCfg.preClick(nodeId); } if(ret) { MVRZ.Render.Controls.node.toggle(nodeId); } if(typeof(_oCfg.postClick)=='function') { var ret = _oCfg.postClick(nodeId); } } this.init = function init(nodeId, containerId, oCfg) { msg("getPane("+nodeId+", "+containerId+", "+oCfg+")"); var _nodeId = nodeId; _oCfg = oCfg; var nodeState = oCfg.nodeState; if(typeof(nodeState)=='undefined') { nodeState = NODE_STATE_CLOSED; if(typeof(_oCfg.historyId)!='undefined') { if(typeof(gNodes[oCfg.historyId])!='undefined' && typeof(gNodes[oCfg.historyId][nodeId])!='undefined' && typeof(gNodes[oCfg.historyId][nodeId].nodeState)!='undefined') { nodeState = gNodes[oCfg.historyId][nodeId].nodeState; } } } var oNode = _getNode(nodeId); if(oNode) return oNode; // Create control and content for node // - control var oControl = document.createElement('div'); oControl.id = _getControlId(nodeId); oControl.className = NODE_PREFIX + '-control'; var oLabel = document.createElement('div'); oLabel.className = NODE_PREFIX + "-control-label"; oLabel.innerHTML = oCfg.label; var oNodeImg; if(typeof(oCfg.img)!='undefined' && oCfg.img.length>0) { oNodeImg = document.createElement('img'); oNodeImg.className = NODE_PREFIX + "-control-img"; oNodeImg.src = oCfg.img; } var oImg = document.createElement('img'); oImg.className = NODE_PREFIX + "-control-state-img"; oImg.id = _getControlImgId(nodeId); oImg.src = _getControlImgSrc(nodeState); //oControl.innerHTML = "" + oCfg.label; if(typeof(oNodeImg)!='undefined') oControl.appendChild(oNodeImg); oControl.appendChild(oImg); oControl.appendChild(oLabel); oControl.onclick = _onclick; // - content var oContent = document.createElement('div'); oContent.id = _getContentId(nodeId); oContent.className = NODE_PREFIX + "-content"; var c = oCfg.content; if(typeof(c)!='undefined') { var cArray = c; if(!(c instanceof Array)) cArray = [c]; for(var cI in cArray) { var cEl = cArray[cI]; if(typeof(cEl)=='object') oContent.appendChild(cEl); else oContent.innerHTML += cEl; } } oNode = document.createElement('div'); oNode.id = nodeId; oNode.className = NODE_PREFIX + "-container " + NODE_PREFIX + "-container-" +nodeId + " " + _getNodeClass(nodeState); oNode.appendChild(oControl); oNode.appendChild(oContent); _setNodeControl(nodeId, nodeState); _setNodeContent(oContent, nodeState); oOuter = document.createElement('div'); oOuter.className = NODE_PREFIX + "-outercontainer"; if(typeof(oCfg.id)!='undeifned') oOuter.className += " " + NODE_PREFIX + "-" + oCfg.id; oOuter.appendChild(oNode); oControl.mvrz = {nodeId: nodeId}; oNode.mvrz = {nodeId: nodeId, nodeState: nodeState}; // Append to outer container if present var oContainer = document.getElementById(containerId); if(oContainer) oContainer.appendChild(oOuter); return oNode; } // End init } // End node } // End Controls this.Content = new function Content() { this._Dataset = function _Dataset(datasetName, oElAppendTo, updatedPaneId, argArray){ msg("Render.Content._Dataset()"); var ret = true; if (typeof(oElAppendTo) == 'undefined') return false; msg("Calling render()"); return MY[datasetName].render(oElAppendTo, argArray); } this.SetupContactAccount = function SetupContactAccount(oElAppendTo, updatedPaneId, argArray){ oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['idValue'] = MY[DATASET_USER].get(0, 'contactID', ''); argArray['addSelect'] = false; return MVRZ.Render.Content._Dataset(DATASET_ACCOUNTCONTACT, oElAppendTo, updatedPaneId, argArray); } this.SetupContactReservations = function SetupContactReservations(oElAppendTo, updatedPaneId, argArray){ oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['idValue'] = MY[DATASET_USER].get(0, 'reservationsContactID', ''); argArray['addSelect'] = false; return MVRZ.Render.Content._Dataset(DATASET_RESERVATIONSCONTACT, oElAppendTo, updatedPaneId, argArray); } this.Quotes = function Quotes(poElAppendTo, updatedPaneId, argArray) { var pControlsID = CONTENT_QUOTES + "-controls"; var pControlsLeftID = CONTENT_QUOTES + "-controls-left"; var pControlsRightID = CONTENT_QUOTES + "-controls-right"; var pContentID = CONTENT_QUOTES + "-content"; var pListID = CONTENT_QUOTES + "-list"; var pRequestQuotesID = CONTENT_QUOTES + "-requestQuotes"; var pRequestID = CONTENT_QUOTES + "-request"; var pQuotesID = CONTENT_QUOTES + "-quotes"; var pQuoteID = CONTENT_QUOTES + "-quote"; var pOptionsID = CONTENT_QUOTES + "-options"; var pQuoteOptionsID = CONTENT_QUOTES + "-quoteOptions"; //popupInfo("pListID/pRequestID :: "+pListID + "/" + pRequestID); function numQuotes() { if(typeof(MY[DATASET_QUOTES].datasetData)!='undefined') { return MY[DATASET_QUOTES].datasetData.length; } return 0; } function refresh(pID, oArg){ function _refresh(p_oArg) { var pID = p_oArg.pID; var oArg = p_oArg.oArg; var argArray = new Object(); if(typeof(pID)=='undefined' || typeof(pID)=='object') pID = gActivePaneId; switch(pID) { case(pListID): setActive('Getting new requests...'); MY[DATASET_REQUESTSNOTDONE].unload(); MY[DATASET_QUOTES].unload(); MY[DATASET_QUOTEOPTIONS].unload(); MY[DATASET_REQUESTSNOTDONE].isValid = {}; MY[DATASET_QUOTES].isValid = {}; MY[DATASET_QUOTEOPTIONS].isValid = {}; setActivePane(pID); break; case(pRequestQuotesID): var isValid = MVRZ.util.validation.allInputsValidAndPresent(DATASET_REQUESTSNOTDONE); var requestId = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); var isValidDataset = false; if(requestId>0) { isValidDataset = MY[DATASET_REQUESTSNOTDONE].isDatasetValid(requestId); } var email = MY[DATASET_REQUESTSNOTDONE].get(requestId, 'email', MY[DATASET_REQUESTSNOTDONE].getUniqueField()); if(email !== MY[DATASET_HISTORY].email) { MY[DATASET_HISTORY].unload(); } if(isValid && isValidDataset) { // Input may not have been saved yet if button clicked first setActive('Getting new quotes...'); MY[DATASET_QUOTES].unload(); MY[DATASET_QUOTEOPTIONS].unload(); MY[DATASET_QUOTES].isValid = {}; MY[DATASET_QUOTEOPTIONS].isValid = {}; setActivePane(pID); } else { popupErr('Please fix any missing or invalid fields first'); } break; case(pQuoteOptionsID): var isValid = MVRZ.util.validation.allInputsValidAndPresent(DATASET_QUOTES); var quoteId = MY[DATASET_QUOTES].getDatasetId(); var isValidDataset = false; if(quoteId>=0) { isValidDataset = MY[DATASET_QUOTES].isDatasetValid(quoteId); } if(isValid && isValidDataset) { setActive('Getting quote...'); var datasetRowIndex = MY[DATASET_QUOTES].getDatasetRowIndex(quoteId); var aRows = MY[DATASET_QUOTEOPTIONS].getRows({quoteID: "=="+quoteId}); var nvpArray = { 'quote': MY[DATASET_QUOTES].getRow(datasetRowIndex), 'quoteoptions': aRows } argArray[ARG_POST] = new Object(); argArray[ARG_POST][GET_NVPS] = serializeArray(nvpArray, 0, 2); argArray[ARG_POST][GET_MISC] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); argArray[ARG_POST][GET_ID] = quoteId; // Remove existing options // - NO - this does an in-place update //for(var a in aRows) { // MY[DATASET_QUOTEOPTIONS].remove(a, MY[DATASET_QUOTEOPTIONS].getUniqueField()); //} MY[DATASET_QUOTES].connect(YUI_ACTION_UPDATE, argArray,null,quoteId, function(oArg){ // Success function var quoteId = oArg; //popupInfo('...got updated quote for ' + quoteId); setActivePane(pID); }); } else { popupErr('Please fix any missing or invalid fields first'); } break; default: setActive('Refreshing...'); } } // Wait for any relevant activity to complete - eg saves of data if(!MVRZ.util.haveConnectionsCompleted()) { MVRZ.util.event.subscribe(EVENT_CONNECTION_PROCESSED, '', MVRZ.util.haveConnectionsCompleted, _refresh, {pID: pID, oArg: oArg}); } else { _refresh({pID: pID, oArg: oArg}); } } // Buttons - drawn in this order var oCfgButtons = { list: {paneId: pListID, label:"<", type: "img", id: pListID+"-button", img: IMAGE_REQUESTS, onclick: {fn:function(){setActivePane(pListID);}} }, request: {paneId: pRequestQuotesID, label:"<", type: "img", id: pRequestQuotesID+"-button", img: IMAGE_REQUEST, onclick: {fn:function(){setActivePane(pRequestQuotesID);}} }, quote: {paneId: pQuoteOptionsID, label:"<", type: "img", id: pQuoteOptionsID+"-button", img: IMAGE_QUOTE, onclick: {fn:function(){setActivePane(pQuoteOptionsID);}} }, preview: {paneId: 'preview', label:"Preview Email", type: "img", id: "preview-button", img: IMAGE_EMAIL_PREVIEW, onclick: {fn:function(){ var valid = MVRZ.util.validation.allInputsValid(DATASET_REQUESTSNOTDONE); if(!valid) { popupWarn('Please complete the request first.'); return; } if(!MY[DATASET_QUOTES].isLoaded()) { popupWarn('Please reload the quotes with your new request info.'); return; } setActive('Getting preview...'); var argArray = new Object(); // Add the reservation ID to each quote for(var i in MY[DATASET_QUOTES].datasetData) { MY[DATASET_QUOTES].datasetData[i]['requestID'] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); } var includedQuotes = MY[DATASET_QUOTES].getRows({isIncluded:"!=0", isAvailable:"!=0"}); var quotesOptions = new Array(); for(var qIndex in includedQuotes){ var quoteID = includedQuotes[qIndex]['ID']; var quoteOptions = MY[DATASET_QUOTEOPTIONS].getRows({quoteID:"=='"+quoteID+"'"}); for(var oIndex in quoteOptions) { quotesOptions.push(quoteOptions[oIndex]); } } var nvpArray = { 'quotes': includedQuotes, 'options': quotesOptions } //argArray[ARG_POST] = MY[DATASET_QUOTES].datasetData; /*var nvpArray = { 'quotes': MY[DATASET_QUOTES].datasetData, 'options': MY[DATASET_QUOTEOPTIONS].datasetData }*/ ////MY[DATASET_QUOTES].request.postArgArray[GET_NVPS] = serializeArray(nvpArray, 0, 2); ////MY[DATASET_QUOTES].request.postArgArray[GET_MISC] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); argArray[ARG_POST] = new Object(); argArray[ARG_POST][GET_NVPS] = serializeArray(nvpArray, 0, 2); argArray[ARG_POST][GET_MISC] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); argArray.noSave = false; //MY[DATASET_QUOTES].noSave = false; MY[DATASET_QUOTES].connect(YUI_ACTION_PREVIEW, argArray, null, null, function(oArg) { //setActive('Sent email'); if(typeof(MY[DATASET_QUOTES].dataset.misc)!='undefined') { var alreadyDone = MY[DATASET_QUOTES].dataset.misc.alreadyDone | 0; if(alreadyDone!=1 && MY[DATASET_QUOTES].dataset.misc.body!=null && MY[DATASET_QUOTES].dataset.misc.body.length>0) { popupPreview(MY[DATASET_QUOTES].dataset.misc.body); } else if(alreadyDone==0) { popupInfo('No preview available.
Please check that you have a valid request'); } } else { popupInfo('No preview available.
Please check that you have a valid request'); } }); ////MY[DATASET_QUOTES].noSave = noSave; // Restore }} }, send: {paneId: 'send', label:"Send Email", type: "img", id: "send-button", img: IMAGE_EMAIL_SEND, onclick: {fn:function(){ // Add email required at this point MY[DATASET_REQUESTSNOTDONE].inputs.fields['email'].isRequired = true; var valid = MVRZ.util.validation.datasetIsValid(DATASET_REQUESTSNOTDONE, MY[DATASET_REQUESTSNOTDONE].getDatasetId()); MY[DATASET_REQUESTSNOTDONE].inputs.fields['email'].isRequired = false; // Restore - so quotes will generate if(!valid) { popupWarn('Please complete the required request fields and email address before sending.'); return; } if(!MY[DATASET_QUOTES].isLoaded()) { popupWarn('Please reload the quotes with your new request info.'); return; } var response = MVRZ.confirm('\nYou are about to send the email response. \nClick OK to send.'); if(!response) return; setActive('Sending...'); var argArray = new Object(); // Add the reservation ID to each quote for(var i in MY[DATASET_QUOTES].datasetData) { // to avoid serializeArray limi in connect MY[DATASET_QUOTES].datasetData[i]['requestID'] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); } //argArray[ARG_POST] = MY[DATASET_QUOTES].datasetData; var includedQuotes = MY[DATASET_QUOTES].getRows({isIncluded:"!=0", isAvailable:"!=0"}); var quotesOptions = new Array(); for(var qIndex in includedQuotes){ var quoteID = includedQuotes[qIndex]['ID']; var quoteOptions = MY[DATASET_QUOTEOPTIONS].getRows({quoteID:"=='"+quoteID+"'"}); for(var oIndex in quoteOptions) { quotesOptions.push(quoteOptions[oIndex]); } } var nvpArray = { 'quotes': includedQuotes, 'options': quotesOptions } var requestId = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); ////MY[DATASET_QUOTES].request.postArgArray[GET_NVPS] = serializeArray(nvpArray, 0, 2); ////MY[DATASET_QUOTES].request.postArgArray[GET_MISC] = requestId; argArray[ARG_POST] = new Object(); argArray[ARG_POST][GET_NVPS] = serializeArray(nvpArray, 0, 2); argArray[ARG_POST][GET_MISC] = requestId; argArray.noSave = false; //MY[DATASET_QUOTES].noSave = false; MY[DATASET_QUOTES].connect(YUI_ACTION_SEND, argArray, null, requestId, function(oArg) { setActive('Sent email'); var idValue = oArg; // Update the table by removing the dataset row and the table line // - The table var datasetRowIndex = MY[DATASET_REQUESTSNOTDONE].getDatasetRowIndex(idValue); if(datasetRowIndex > -1) { var dataId = gPanes[pListID].name; var oDataTable = MY[DATASET_REQUESTSNOTDONE].dataTables[dataId][0]; oDataTable.deleteRow(datasetRowIndex); // - The dataset MY[DATASET_REQUESTSNOTDONE].remove(idValue); } setActivePane(pListID); }, function(oArg) { // Failed to send //popupErr('Failed to send email'); }); ////MY[DATASET_QUOTES].noSave = noSave; // Restore }} }, add: {paneId: 'add', label:"New", type: "img", id: "view-button", img: IMAGE_ADD, onclick: {fn:function(oArg){ var paneId = gActivePaneId; if(typeof(oArg.add)!='undefined') paneId = oArg.add; switch(paneId) { case(pListID): case(pRequestQuotesID): setActive('Adding new request...'); var idValue = - MY[DATASET_REQUESTSNOTDONE].rows(); MY[DATASET_REQUESTSNOTDONE].doSaveFor[idValue] = true; //var idValue = 0; var newDatasetRowIndex = MY[DATASET_REQUESTSNOTDONE].append(idValue); MY[DATASET_REQUESTSNOTDONE].setDatasetId(idValue); MY[DATASET_QUOTES].unload(); handleListChange(); setActivePane(pRequestQuotesID); break; case(pQuoteOptionsID): setActive('Adding new quote...'); var newDatasetRowIndex = MY[DATASET_QUOTES].append(); MY[DATASET_QUOTES].set(newDatasetRowIndex, MY[DATASET_QUOTES].getUniqueField(), newDatasetRowIndex); MY[DATASET_QUOTES].setDatasetId(newDatasetRowIndex); var requestArrivalDate = MY[DATASET_REQUESTSNOTDONE].get(MY[DATASET_REQUESTSNOTDONE].getDatasetId(), 'arrivalDate', MY[DATASET_REQUESTSNOTDONE].getUniqueField()); MY[DATASET_QUOTES].set(newDatasetRowIndex, 'arrivalDate', requestArrivalDate); var requestNights = MY[DATASET_REQUESTSNOTDONE].get(MY[DATASET_REQUESTSNOTDONE].getDatasetId(), 'nights', MY[DATASET_REQUESTSNOTDONE].getUniqueField()); MY[DATASET_QUOTES].set(newDatasetRowIndex, 'nights', requestNights); //refresh(pQuoteOptionsID); //MY[DATASET_QUOTEOPTIONS].unload(); setActivePane(pQuoteOptionsID); break; } }} }, addQuote: {paneId: 'addQuote', label:"New Quote", type: "img", id: "view-button", img: IMAGE_QUOTE_ADD, onclick: {fn:function(oArg){ var paneId = gActivePaneId; if(typeof(oArg.add)!='undefined') paneId = oArg.add; setActive('Adding new quote...'); var newDatasetRowIndex = MY[DATASET_QUOTES].append(); MY[DATASET_QUOTES].set(newDatasetRowIndex, MY[DATASET_QUOTES].getUniqueField(), newDatasetRowIndex); MY[DATASET_QUOTES].setDatasetId(newDatasetRowIndex); var requestArrivalDate = MY[DATASET_REQUESTSNOTDONE].get(MY[DATASET_REQUESTSNOTDONE].getDatasetId(), 'arrivalDate', MY[DATASET_REQUESTSNOTDONE].getUniqueField()); MY[DATASET_QUOTES].set(newDatasetRowIndex, 'arrivalDate', requestArrivalDate); var requestNights = MY[DATASET_REQUESTSNOTDONE].get(MY[DATASET_REQUESTSNOTDONE].getDatasetId(), 'nights', MY[DATASET_REQUESTSNOTDONE].getUniqueField()); MY[DATASET_QUOTES].set(newDatasetRowIndex, 'nights', requestNights); //refresh(pQuoteOptionsID); //MY[DATASET_QUOTEOPTIONS].unload(); setActivePane(pQuoteOptionsID); }} }, addRequest: {paneId: 'addRequest', label:"New Request", type: "img", id: "view-button", img: IMAGE_REQUEST_ADD, onclick: {fn:function(oArg){ var paneId = gActivePaneId; if(typeof(oArg.add)!='undefined') paneId = oArg.add; setActive('Adding new request...'); var idValue = - MY[DATASET_REQUESTSNOTDONE].rows(); MY[DATASET_REQUESTSNOTDONE].doSaveFor[idValue] = true; //var idValue = 0; var newDatasetRowIndex = MY[DATASET_REQUESTSNOTDONE].append(idValue); MY[DATASET_REQUESTSNOTDONE].setDatasetId(idValue); MY[DATASET_QUOTES].unload(); handleListChange(); setActivePane(pRequestQuotesID); }} }, applyToAllQuotes: {paneId: 'applyToAllQuotes', label:"Apply to all Quotes", type: "img", id: "view-button", img: IMAGE_QUOTES_APPLYTOALL, onclick: {fn:function(oArg){ var paneId = gActivePaneId; if(typeof(oArg.add)!='undefined') paneId = oArg.add; setActive('Applying to all quotes...'); var idValue = MY[DATASET_QUOTES].getDatasetId(); var datsetRowIndex = MY[DATASET_QUOTES].getDatasetRowIndex(idValue); var rows = MY[DATASET_QUOTES].getRows(); var aFields = ['setPercent', 'setRentAmount','discountPercent', 'discountAmount', 'discountReason', 'discountFootnote','surchargePercent', 'surchargeAmount', 'surchargeReason', 'surchargeFootnote']; var aOptionFields = ['isIncluded']; var numQuotes = rows.length; var oReference = MY[DATASET_QUOTEOPTIONS].getRows({quoteID: "=='"+idValue+"'"}); var rowLookup = new Object(); for(var o in oReference) { rowLookup[oReference[o]['optionID']] = oReference[o]['isIncluded']; } for(var r in rows) { if(r != datsetRowIndex) { for(var fieldIndex in aFields) { var setAmount = MY[DATASET_QUOTES].get(datsetRowIndex, aFields[fieldIndex]); MY[DATASET_QUOTES].set(r, aFields[fieldIndex], setAmount); } // Now do the options // - only applies to the existing option ID's - does not add/remove to option list of quote var optionrows = MY[DATASET_QUOTEOPTIONS].getRows(); for(var o in optionrows) { if(optionrows[o]['quoteID']==idValue) continue; var optionId = optionrows[o]['optionID']; var isIncluded = rowLookup[optionId]; MY[DATASET_QUOTEOPTIONS].set(o, 'isIncluded', isIncluded); } } // Update the quote var argArray = new Object(); var quoteId = rows[r][MY[DATASET_QUOTES].getUniqueField()]; var aRows = MY[DATASET_QUOTEOPTIONS].getRows({quoteID: "=="+quoteId}); var nvpArray = { 'quote': MY[DATASET_QUOTES].getRow(r), 'quoteoptions': aRows } ////MY[DATASET_QUOTES].request.postArgArray[GET_NVPS] = serializeArray(nvpArray, 0, 2); ////MY[DATASET_QUOTES].request.postArgArray[GET_MISC] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); ////argArray[GET_ID] = quoteId; argArray[ARG_POST] = new Object(); argArray[ARG_POST][GET_NVPS] = serializeArray(nvpArray, 0, 2); argArray[ARG_POST][GET_MISC] = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); argArray[ARG_POST][GET_ID] = quoteId; gCounterArray[DATASET_QUOTES] = 0; MY[DATASET_QUOTES].connect(YUI_ACTION_UPDATE, argArray, null, {quoteIndex:r, numQuotes: numQuotes}, function(oArg){ // Success function gCounterArray[DATASET_QUOTES]++; var quoteIndex = oArg['quoteIndex']; var numQuotes = oArg['numQuotes']; if(gCounterArray[DATASET_QUOTES] == numQuotes) { setActive('All quotes updated'); setActivePane(); } }); } /* var idValue = - MY[DATASET_REQUESTSNOTDONE].rows(); MY[DATASET_REQUESTSNOTDONE].doSaveFor[idValue] = true; //var idValue = 0; var newDatasetRowIndex = MY[DATASET_REQUESTSNOTDONE].append(idValue); MY[DATASET_REQUESTSNOTDONE].setDatasetId(idValue); MY[DATASET_QUOTES].unload(); handleListChange(); setActivePane(pRequestQuotesID); */ }} }, view: {paneId: 'view', label:"View", type: "img", id: "view-button", img: IMAGE_VIEW, onclick: {fn:function(){ setActive('Viewing...'); var argArray = new Object(); var str = '
' + MY[DATASET_REQUESTSNOTDONE].get(MY[DATASET_REQUESTSNOTDONE].getDatasetId(), 'text', 'ID') + '
'; popupPreview(str); }} }, refresh: {paneId: 'refresh', label:"Refresh", type: "img", id: "refresh-button", img: IMAGE_REFRESH, onclick: {fn: refresh} }, refreshRequests: {paneId: 'refreshRequests', label:"Get Requests", type: "img", id: "refresh-button", img: IMAGE_REQUESTS_REFRESH, onclick: {fn: refresh} }, refreshRequest: {paneId: 'refreshRequest', label:"Update Request", type: "img", id: "refresh-button", img: IMAGE_REQUEST_REFRESH, onclick: {fn: refresh} }, refreshQuote: {paneId: 'refreshQuote', label:"Update Quote", type: "img", id: "refresh-button", img: IMAGE_QUOTE_REFRESH, onclick: {fn: refresh} }, refreshQuotes: {paneId: 'refreshQuotes', label:"Update Quotes", type: "img", id: "refresh-button", img: IMAGE_QUOTES_REFRESH, onclick: {fn: refresh} } }; var paneMutexArray = [pListID, pRequestQuotesID, pQuoteOptionsID]; function setActivePane(paneId, mode) { msg("setPane("+paneId+", "+mode+")"); if(typeof(paneId)=='undefined') paneId = gActivePaneId; var elContent = document.getElementById(ID_QUOTES_CONTENT); elContent.className = paneId; setControls(paneId); switch(mode) { default: // Is the pane we are activating in the array? var isIn = false; for(var pIndex in paneMutexArray) { if(paneId === paneMutexArray[pIndex]) { isIn = true; break; } } if(isIn) { for(var pIndex in paneMutexArray) { gPanes[paneMutexArray[pIndex]].hide(); } } gPanes[paneId].render(argArray); gPanes[paneId].show(); gActivePaneId = paneId; } } function handleChange(type, fireArgs, subscribeArg) { msg("change fired: "+type+", " + fireArgs[0].name + ", " + subscribeArg.paneId); var argArray = new Object(); setActivePane(subscribeArg.paneId); } function setControls(paneId) { msg("setControls("+paneId+"), pControlsID="+pControlsID); oControls = document.getElementById(pControlsID); if(!oControls) return; oControls.innerHTML = ''; var oCfgBackButton; var oBreadcrumb = []; var oButtons = []; var bIndex=0; var title = 'Unknown'; var label = ''; switch(paneId) { case(pListID): oBreadcrumb.push(oCfgButtons.list); title = 'List (Pending Requests)'; //if(MY[DATASET_REQUESTSNOTDONE].isLoaded()) label = parseInt(MY[DATASET_REQUESTSNOTDONE].rows()); break; case(pRequestQuotesID): oCfgBackButton = oCfgButtons.list; oBreadcrumb.push(oCfgButtons.list); oBreadcrumb.push(oCfgButtons.request); title = 'Request'; //label = '' + (parseInt(MY[DATASET_REQUESTSNOTDONE].getDatasetRowIndex(MY[DATASET_REQUESTSNOTDONE].getDatasetId())) + 1) + '
' + MY[DATASET_REQUESTSNOTDONE].rows(); label = ''; break; case(pQuoteOptionsID): oCfgBackButton = oCfgButtons.request; //oBreadcrumb.push(oCfgButtons.list); oBreadcrumb.push(oCfgButtons.request); oBreadcrumb.push(oCfgButtons.quote); title = 'Quote'; label = (parseInt(MY[DATASET_QUOTES].getDatasetRowIndex(MY[DATASET_QUOTES].getDatasetId()))+1) + '/' + MY[DATASET_QUOTES].rows(); break; } var oControlsTable = document.createElement('table'); var oControlsTableTr = document.createElement('tr'); var oControlsTableTdLeft = document.createElement('td'); oControlsTableTdLeft.className = "mvrz-controls-left"; var oControlsTableTdCenter = document.createElement('td'); oControlsTableTdCenter.className = "mvrz-controls-center"; var oControlsTableTdRight = document.createElement('td'); oControlsTableTdRight.className = "mvrz-controls-right"; oControls.appendChild(oControlsTable); oControlsTable.appendChild(oControlsTableTr); oControlsTableTr.appendChild(oControlsTableTdLeft); oControlsTableTr.appendChild(oControlsTableTdCenter); oControlsTableTr.appendChild(oControlsTableTdRight); var oControlsLeft = document.createElement('div'); oControlsLeft.className = "mvrz-controls-left"; oControlsTableTdLeft.appendChild(oControlsLeft); /* if(typeof(oCfgBackButton)!='undefined') { //oCfgBackButton.checked = true; oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsLeft, oCfgBackButton); } */ if(oBreadcrumb.length) { var oExtra; for(var b in oBreadcrumb) { oBreadcrumb[b].disabled = false; // Reset oBreadcrumb[b].labelpos = ''; // Reset oBreadcrumb[b].label = '<'; // Reset if(b==(oBreadcrumb.length-1)) oExtra = {disabled:true, labelpos:'center', label:label}; else oExtra = {labelpos:'right'}; oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsLeft, oBreadcrumb[b], oExtra); } } // Center Control var oControlsTitle = document.createElement('div'); oControlsTitle.className = "mvrz-controls-title"; oControlsTitle.innerHTML = title; oControlsTableTdCenter.appendChild(oControlsTitle); // Add the Preview/Send buttons var oControlsRight = document.createElement('div'); oControlsRight.className = "mvrz-controls-right"; oControlsTableTdRight.appendChild(oControlsRight); // Refresh button switch(paneId) { case(pListID): oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.refreshRequests); break; case(pRequestQuotesID): oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.refreshQuotes); break; case(pQuoteOptionsID): oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.refreshQuote); } //No need for this now//oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.view); // Add new button switch(paneId) { case(pListID): case(pRequestQuotesID): oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.addRequest); break; case(pQuoteOptionsID): oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.addQuote); } // Render Preview/Send if request data is valid var disabled = !MY[DATASET_REQUESTSNOTDONE].isDatasetValid(); switch(paneId) { case(pListID): break; default: oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.preview); oButtons[bIndex++] = new MVRZ.Render.Buttons.Button(oControlsRight, oCfgButtons.send); } } function getPane(paneId, containerID, oCfg) { // Single request var oPane = gPanes[paneId]; if(typeof(oPane)=='undefined') { oPane = new pane(containerID, oCfg); gPanes[paneId] = oPane; } return oPane; } function renderHistory(oPane) { msg("History render(), "+oPane.name); var argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['dataId'] = oPane.name; var currentId = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); var currentDatasetRowIndex = MY[DATASET_REQUESTSNOTDONE].getDatasetRowIndex(currentId); var email = MY[DATASET_REQUESTSNOTDONE].get(currentDatasetRowIndex, 'email'); var isValidEmail = true; if(typeof(email)!='undefined' && MVRZ.util.validation.isEmail(email)) { // The list - inside a hideable node var nodeId = oPane.name + '-history'; var labelId = 'node-label-' + nodeId; var contentId = 'node-content-' + nodeId; var label = "
"+ getLoadingNotice('Getting history...', 'loading-node') +"
"; var oContent = document.createElement('div'); oContent.id = contentId; argArray[ARG_GETS] = "email="+email; argArray['nodeId'] = nodeId; argArray['email'] = email; } else { isValidEmail = false; var label = "No History (no valid email)"; } var oCfg = {id: 'history', label: label, img: IMAGE_HISTORY, content: oContent, historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); if(isValidEmail) { // The history var ret = MY[DATASET_HISTORY].render(contentId, argArray, '', function(loadStatus) { var oLabel = document.getElementById(labelId); if(!oLabel) return; var nodeId = argArray['nodeId']; var email = argArray['email']; MY[DATASET_HISTORY].email = email; var currentId = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); var currentDatasetRowIndex = MY[DATASET_REQUESTSNOTDONE].getDatasetRowIndex(currentId); var numEntries = MY[DATASET_HISTORY].rows(); if(numEntries>0) { var response = "History: " + numEntries + " for "+ email +"..."; MVRZ.Render.Controls.node.enable(nodeId, response); } else { var response = "No History"; MVRZ.Render.Controls.node.close(nodeId); MVRZ.Render.Controls.node.disable(nodeId, response); } oLabel.innerHTML = response; }); MY[DATASET_HISTORY].event.change.unsubscribeAll(); // Previous render adds subscription MY[DATASET_HISTORY].event.change.subscribe(function(type, fireArgs, subscribeArg) { msg("Dataset change fired: "+type+", " + fireArgs[0].name + ", " + subscribeArg.datasetName); this.fnChange(null, this); }, MY[DATASET_HISTORY], oPane); } else { MVRZ.Render.Controls.node.disable(nodeId); } } function renderQuotes(oPane) { msg("Quotes render(), "+oPane.name); var argArray = new Object(); //argArray[ARG_GETS] = MY[DATASET_REQUESTSNOTDONE].getActiveDataRow(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['addSelect'] = false; argArray['dataId'] = oPane.name; //argArray['refreshDatasource'] = true; argArray[ARG_GETS] = "ID="+MY[DATASET_REQUESTSNOTDONE].getDatasetId(); //MY[DATASET_QUOTES].unload(); // Force reload // The quotes - inside a hideable nod var nodeId = oPane.name + '-quotes'; var labelId = 'node-label-' + oPane.name; var contentId = 'node-content-' + oPane.name; var oButton = new MVRZ.Render.Buttons.Button(oCfgButtons.addQuote, {add: pQuoteOptionsID, labelpos:'left'}); var oContentInner = document.createElement('div'); oContentInner.className = "mvrz-quotes-inner-controls"; oContentInner.appendChild(oButton); var label = "
"+ getLoadingNotice('Getting quotes...', 'loading-node') +"
"; var oContent = document.createElement('div'); oContent.id = contentId; //oContent.className = "mvrz-quotes-inner-controls"; oContent.appendChild(oContentInner); var oCfg = {label: label, img: IMAGE_QUOTES, content: oContent, historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); argArray['nodeId'] = nodeId; // The quotes var ret = MY[DATASET_QUOTES].render(contentId, argArray, '', function(loadStatus) { var oLabel = document.getElementById(labelId); if(!oLabel) return; var nodeId = argArray['nodeId']; var currentId = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); var valid = MVRZ.util.validation.datasetIsValid(DATASET_REQUESTSNOTDONE, currentId); if(loadStatus == LOAD_STATUS_STOP || !valid) { var response = "Quotes: Please complete reservation first"; MVRZ.Render.Controls.node.close(nodeId); MVRZ.Render.Controls.node.disable(nodeId, response); } else { var numQuotes = MY[DATASET_QUOTES].rows(); var response = "Quotes: " + numQuotes + " for this request..."; MVRZ.Render.Controls.node.enable(nodeId, response); } oLabel.innerHTML = response; }); MY[DATASET_QUOTES].event.change.unsubscribeAll(); // Previous render adds subscription MY[DATASET_QUOTES].event.change.subscribe(function(type, fireArgs, subscribeArg) { msg("Dataset change fired: "+type+", " + fireArgs[0].name + ", " + subscribeArg.datasetName); this.fnChange(null, this); }, MY[DATASET_QUOTES], oPane); } function renderOptions(oPane) { msg("renderOptions render(), "+oPane.name); var argArray = new Object(); //argArray[ARG_GETS] = MY[DATASET_REQUESTSNOTDONE].getActiveDataRow(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['dataId'] = oPane.name; // The options - inside a hideable nod var nodeId = oPane.name + '-options'; var labelId = 'node-label-' + oPane.name; var contentId = 'node-content-' + oPane.name; var label = "
"+ getLoadingNotice('Getting options...', 'loading-node') +"
"; var content = "
"; var oCfg = {label: label, content: content, historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); var oContentOuter = document.getElementById(oPane.name); if(oContentOuter) { var oButtonApply = new MVRZ.Render.Buttons.Button(oCfgButtons.applyToAllQuotes, {labelpos:'left'}); var oButton = new MVRZ.Render.Buttons.Button(oCfgButtons.refreshQuote, {labelpos:'left'}); var oContentInnerRight = document.createElement('div'); oContentInnerRight.className = "mvrz-quotes-inner-controls mvrz-quotes-inner-controls-right"; oContentInnerRight.appendChild(oButtonApply); oContentInnerRight.appendChild(oButton); oContentOuter.appendChild(oContentInnerRight); } var ret = MY[DATASET_QUOTEOPTIONS].render(contentId, argArray, '', function() { var oLabel = document.getElementById(labelId); if(!oLabel) return; var currentId = MY[DATASET_QUOTES].getDatasetId(); var valid = MVRZ.util.validation.datasetIsValid(DATASET_QUOTES, currentId); if(valid) { //var numOptions = MY[DATASET_QUOTEOPTIONS].rows({quoteID: "=='"+currentId+"'"}); //if(typeof(MY[DATASET_QUOTES].optionsSummary)=='undefined') { var optionsSummary = MY[DATASET_QUOTES].getOptionsSummary(currentId); //} if(typeof(optionsSummary)!='undefined') { var optList = optionsSummary.list; var optText = optList.join(", "); } else { var optText = ''; } var response = 'Options: ' + optText + "..."; MVRZ.Render.Controls.node.enable(nodeId, response); } else { var response = 'Options: Please complete the quote'; MVRZ.Render.Controls.node.disable(nodeId, response); } oLabel.innerHTML = response; }); MY[DATASET_QUOTEOPTIONS].event.change.unsubscribeAll(); // Previous render adds subscription MY[DATASET_QUOTEOPTIONS].event.change.subscribe(function(type, fireArgs, subscribeArg) { msg("Dataset change fired: "+type+", " + fireArgs[0].name + ", " + subscribeArg.datasetName); this.fnChange(null, this); }, MY[DATASET_QUOTEOPTIONS], oPane); /* MY[DATASET_QUOTEOPTIONS].fnAfterTableSave = function() { var updateRow = MY[DATASET_QUOTES].getDatasetId(); var updateRowData = MY[DATASET_QUOTES].getRow(updateRow); for(var dtId in MY[DATASET_QUOTES].dataTables) { var oRecord = MY[DATASET_QUOTES].dataTables[dtId].getRecord(updateRow); updateRowData['summary'] = MY[DATASET_QUOTES].getSummary(null, oRecord); MY[DATASET_QUOTES].dataTables[dtId].updateRow(updateRow, updateRowData); } }*/ } function renderRequest(oPane) { msg("Request render(), "+oPane.name); var argArray = new Object(); var currentId = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); if(currentId == 0) { currentId = MY[DATASET_REQUESTSNOTDONE].get('0',MY[DATASET_REQUESTSNOTDONE].getUniqueField()); MY[DATASET_REQUESTSNOTDONE].setDatasetId(currentId); } var valid = MVRZ.util.validation.datasetIsValid(DATASET_REQUESTSNOTDONE, currentId); var oContentStatus = document.createElement('div'); if(currentId<=0) oContentStatus.innerHTML = "NEW"; else if(!valid) oContentStatus.innerHTML = "!"; oContentStatus.className = "mvrz-quotes-inner-controls-status"; if(!valid) oContentStatus.className += " mvrz-quotes-inner-controls-status-invalid"; else oContentStatus.className += " mvrz-quotes-inner-controls-status-valid"; var oContent = document.getElementById(oPane.name); if(oContent) oContent.appendChild(oContentStatus); argArray['displayType'] = DISPLAY_TYPE_EDIT; ret = MY[DATASET_REQUESTSNOTDONE].render(oPane.name, argArray); //return "Other content: propertyID=" + MY[DATASET_PROPERTY].getSelectedId(); } function renderQuote(oPane) { msg("Quote render(), "+oPane.name); var uniqueField = MY[DATASET_QUOTES].getUniqueField(); var currentId = MY[DATASET_QUOTES].getDatasetId(); var valid = MVRZ.util.validation.datasetIsValid(DATASET_QUOTES, currentId); var quoteTypeId = MY[DATASET_QUOTES].get(currentId, 'quoteTypeID', uniqueField); var isAvailable = MY[DATASET_QUOTES].get(currentId, 'isAvailable', uniqueField); var oContentStatus = document.createElement('div'); oContentStatus.innerHTML = ""; if(typeof(quoteTypeId)=='undefined') oContentStatus.innerHTML = "NEW"; else if(!valid) oContentStatus.innerHTML = "!"; else { if(typeof(isAvailable)!='undefined' && !isAvailable) oContentStatus.innerHTML = "UNAVAILABLE"; } oContentStatus.className = "mvrz-quotes-inner-controls-status"; ////if(!valid) oContentStatus.className += " mvrz-quotes-inner-controls-status-invalid"; ////else oContentStatus.className += " mvrz-quotes-inner-controls-status-valid"; var oContent = document.getElementById(oPane.name); if(oContent) oContent.appendChild(oContentStatus); var argArray = new Object(); argArray[ARG_GETS] = MY[DATASET_QUOTES].getActiveDataRow(); argArray['displayType'] = DISPLAY_TYPE_EDIT; ret = MY[DATASET_QUOTES].render(oPane.name, argArray); } function handleListChange(type, fireArgs, subscribeArg) { // Get new quotes if request is valid var lastIdValue = MY[DATASET_REQUESTSNOTDONE].getLastDatasetId(); var idValue = MY[DATASET_REQUESTSNOTDONE].getDatasetId(); //var isValid = MVRZ.util.validation.allInputsValidAndPresent(DATASET_REQUESTSNOTDONE, idValue); var isValid = MY[DATASET_REQUESTSNOTDONE].isDatasetValid(idValue); MY[DATASET_REQUESTSNOTDONE].isValid[idValue] = isValid; //popupInfo("Checked for valid request = " + isValid); if(isValid) { var argArray = new Object(); //argArray[ARG_GETS] = MY[DATASET_REQUESTSNOTDONE].getActiveDataRow(); argArray[ARG_GETS] = "ID="+MY[DATASET_REQUESTSNOTDONE].getDatasetId(); /* Must force reload force so that only quotes for one request are sent */ if(lastIdValue!=idValue) { setActive("Getting new quotes..."); MY[DATASET_QUOTES].unload(); // Force reload MY[DATASET_HISTORY].unload(); // Force reload delete(gNodes[PAGE_QUOTES]); // Wipe node history } ////MY[DATASET_QUOTES].load(argArray) // Load } else { MY[DATASET_QUOTES].remove(); // Delete dataset MY[DATASET_QUOTES].stopload('Please complete the request to see quotes'); // Don't do a load } } // ------------------------ var ret = false; msg('Render.Content.Quotes(' + poElAppendTo + ', ' + updatedPaneId + ')'); if(typeof(poElAppendTo)=='undefined') return false; if (typeof(argArray) == 'undefined') argArray = new Object(); // Layout var pControls = gPanes[pControlsID]; var pList = gPanes[pListID]; var pRequestQuotes = gPanes[pRequestQuotesID]; var pRequest = gPanes[pRequestID]; var pQuotes = gPanes[pQuotesID]; var pQuote = gPanes[pQuoteID]; var pOptions = gPanes[pOptionsID]; var pQuoteOptions = gPanes[pQuoteOptionsID]; var oControls = document.createElement('div'); oControls.id = pControlsID; oControls.className = 'mvrz-controls'; poElAppendTo.appendChild(oControls); var oContent = document.createElement('div'); oContent.id = pContentID; poElAppendTo.appendChild(oContent); //var pList, pRequest; // Controls if(typeof(pControls)=='undefined') { var oCfg = {}; pControls = new pane(oControls.id, oCfg); pControls.cfg.setProperty('render', function(oPane) { msg("Controls render(), "+oPane.name); var oContainer = document.getElementById(oPane.name); oContainer.innerHTML = ""; }); gPanes[pControlsID] = pControls; } pControls.render(); pControls.show(); // List of Requests if(typeof(pList)=='undefined') { var oCfg = {}; pList = getPane(pListID, oContent.id, oCfg); pList.cfg.setProperty('render', function(oPane) { // Scope is the Pane msg("List render(), "+oPane.name); //return "Select content"; var argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['dataId'] = oPane.name; argArray['addSelect'] = false; MY[DATASET_REQUESTSNOTDONE].render(oPane.name, argArray); MY[DATASET_REQUESTSNOTDONE].event.change.unsubscribeAll(); // Previous render adds subscription MY[DATASET_REQUESTSNOTDONE].event.change.subscribe(function(type, fireArgs, subscribeArg) { msg("Dataset change fired: "+type+", " + fireArgs[0].name + ", " + subscribeArg.datasetName); this.fnChange(null, this); }, MY[DATASET_REQUESTSNOTDONE], oPane); //return oPane.getDatasetSelect(DATASET_PROPERTY); }); } pList.subscribe('change', handleListChange, {}, this); // Must be the first pList subscriber so that this function gets executed first // Single request if(typeof(pRequestQuotes)=='undefined') { var oCfg = {}; pRequestQuotes = getPane(pRequestQuotesID, oContent.id, oCfg); pRequestQuotes.cfg.setProperty('render', function(oPane){ var oDataset = MY[DATASET_REQUESTSNOTDONE]; var idValue = oDataset.getDatasetId(); var uniqueField = oDataset.getUniqueField(); // History Information renderHistory(oPane); // Original Email var nodeId = oPane.name + '-original'; var notes = MY[DATASET_REQUESTSNOTDONE].get(idValue, 'text', uniqueField); var content = MVRZ.util.formatter.html.format(notes); var label = "View original email..."; if(content.length==0) { label = "No email text"; } else { content = "
"+ content +"
"; } var oCfg = {label: label, img: IMAGE_EMAIL, content: content, historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); if(content.length==0) MVRZ.Render.Controls.node.disable(nodeId) // Notes in email var notes = MY[DATASET_REQUESTSNOTDONE].get(idValue, 'notes', uniqueField); notes = trim(notes); var label = "View request notes..."; if(notes.length==0) { var label = "No request notes"; } var nodeId = oPane.name + '-notes'; var content = MVRZ.util.formatter.html.format(notes); content = "
"+ content +"
"; var oCfg = {label: label, img: IMAGE_NOTES, content: content, historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); if(notes.length==0) MVRZ.Render.Controls.node.disable(nodeId) // Response text var fieldName = 'responseNotes'; var dataValue = trim(oDataset.get(idValue, fieldName, uniqueField)); // - Render the input var oInput = oDataset.inputs.fields[fieldName]; var id = MVRZ.util.encodeInputId(oDataset.datasetName, 0, (typeof(idValue)=='undefined'?'0':idValue), fieldName); content = MVRZ.util.render.input(oInput, id, dataValue, oDataset); var cLabel = document.createElement('label'); cLabel.innerHTML = "ResponseNotes:"; var fieldName = 'responseNotes2'; var dataValue2 = trim(oDataset.get(idValue, fieldName, uniqueField)); // - Render the input oInput2 = oDataset.inputs.fields[fieldName]; id = MVRZ.util.encodeInputId(oDataset.datasetName, 0, (typeof(idValue)=='undefined'?'0':idValue), fieldName); var content2 = MVRZ.util.render.input(oInput2, id, dataValue2, oDataset); var cLabel2 = document.createElement('label'); cLabel2.innerHTML = "ResponseNotes2:"; if(dataValue.length>0 || dataValue2.length>0) { if(dataValue.length>0) { var inner = dataValue.substr(0,25); } else { var inner = dataValue2.substr(0,25); } label = "Edit response: \"" + inner + "...\""; } else { label = "Add response text here..."; } nodeId = oPane.name + '-response'; var oCfg = {label: label, img: IMAGE_EDIT_RESPONSE, content: [cLabel, content, cLabel2, content2], historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); // Render the Quotes list first gPanes[pQuotesID].render({}, true); gPanes[pQuotesID].show(); // Now the Request gPanes[pRequestID].render({}, true); gPanes[pRequestID].show(); }); pList.subscribe('change', handleChange, {paneId: pRequestQuotesID}, this); } // Single request if(typeof(pRequest)=='undefined') { var oCfg = {}; pRequest = getPane(pRequestID, pRequestQuotes.id, oCfg); pRequest.cfg.setProperty('render', renderRequest); } // List of quotes for a request if(typeof(pQuotes)=='undefined') { pQuotes = getPane(pQuotesID, pRequestQuotes.id, oCfg); pQuotes.cfg.setProperty('render', renderQuotes); } // Options + Single quote if(typeof(pQuoteOptions)=='undefined') { var oCfg = {}; pQuoteOptions = getPane(pQuoteOptionsID, oContent.id, oCfg); pQuoteOptions.cfg.setProperty('render', function(oPane){ // Original Email var nodeId = oPane.name + '-info'; var label = "View quotation info..."; var notes = MY[DATASET_QUOTES].get(MY[DATASET_QUOTES].getDatasetId(), '_notes_', MY[DATASET_QUOTES].getUniqueField()); if(typeof(notes)!='undefined' && notes.length>0) { var content = "
"+ MVRZ.util.formatter.html.format(notes) +"
"; } else { var content = "
No info to display
"; } var oCfg = {label: label, img: IMAGE_NOTES, content: content, historyId: PAGE_QUOTES}; var oNode = MVRZ.Render.Controls.node.init(nodeId, oPane.name, oCfg); // Render the Options list gPanes[pOptionsID].render({}, true); gPanes[pOptionsID].show(); // Render the Quote gPanes[pQuoteID].render({}, true); gPanes[pQuoteID].show(); }); pQuotes.subscribe('change', handleChange, {paneId: pQuoteOptionsID}, this); } // List of options for a quote if(typeof(pOptions)=='undefined') { pOptions = getPane(pOptionsID, pQuoteOptions.id, oCfg); pOptions.cfg.setProperty('render', renderOptions); } // Single quote for a request if(typeof(pQuote)=='undefined') { pQuote = getPane(pQuoteID, pQuoteOptions.id, oCfg); pQuote.cfg.setProperty('render', renderQuote); } //pRequest.render(); setActivePane(pListID); return ret; } this.Reservation = function Reservation(oElAppendTo, updatedPaneId, argArray){ msg('Reservation(' + oElAppendTo + ', ' + updatedPaneId + ')'); /* switch(gPlanId) { case(PLAN_3): case(PLAN_2): MY[DATASET_HOMEAUTOMATION].load(); case(PLAN_1): default: MY[DATASET_PROPERTY].load(); MY[DATASET_PROPERTYTYPE].load(); MY[DATASET_IMAGES].load(); } */ if (typeof(MY[DATASET_HOMEAUTOMATION]) == 'object') MY[DATASET_HOMEAUTOMATION].load(); if (typeof(MY[DATASET_PROPERTY]) == 'object') MY[DATASET_PROPERTY].load(); if (typeof(MY[DATASET_STATUS]) == 'object') MY[DATASET_STATUS].load(); if (typeof(MY[DATASET_TRAVELERCONTACT]) == 'object') MY[DATASET_TRAVELERCONTACT].load(); if (typeof(MY[DATASET_ORDER]) == 'object') MY[DATASET_ORDER].load(); //if(typeof(MY[DATASET_PROPERTYTYPE])=='object') MY[DATASET_PROPERTYTYPE].load(); //if(typeof(MY[DATASET_IMAGES])=='object') MY[DATASET_IMAGES].load(); this.oElAppendTo = oElAppendTo; this.contentId = CONTENT_RESERVATION; gActiveTabIndex[CONTENT_RESERVATION] = 0; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Reservations

Choose a reservation to edit or add a new one.

" oElAppendTo.innerHTML = sIntroHtml; this.handleSelectChange = function(e){ msg('handleSelectChange()'); var input = DATASET_ORDER + 'ID'; var id = MY[DATASET_ORDER].getSelectId(); if (typeof(el = document.getElementById(id)) != 'undefined') { MY[DATASET_ORDER].currentDatasetIdValue = el.value; } handleActiveTabChange(e); } this.renderit = function renderit(oThis){ msg('renderit(' + oThis + ')'); var ret = false; var oElAppendTo = oThis.oElAppendTo; var selectField = MY[DATASET_ORDER].inputs.selectField; selectField.noHandlers = false; selectField.onlyChangeHandler = true; selectField.fnOnChange = oThis.handleSelectChange; msg('Reservation() calling renderSelect(), fnOnChange is ' + typeof(selectField.fnOnChange)); //var oSelect = MY[DATASET_ORDER].renderSelect(oElAppendTo, MY[DATASET_ORDER].currentDatasetIdValue, selectField, true); // Postpone options var oSelect = MY[DATASET_ORDER].renderSelect(oElAppendTo, MY[DATASET_ORDER].currentDatasetIdValue, selectField, false); // Don't postpone options var oTab = document.createElement("div"); oTab.id = "tabDiv:" + oThis.contentId; oElAppendTo.appendChild(oTab); // Set up tabs gTabArray = [{ id: TAB_RESERVATION_MAIN, dataset: DATASET_ORDER, contentId: CONTENT_RESERVATION_MAIN, label: "Reservation", fn: this.ReservationMain /*}, { id: TAB_RESERVATION_AVAILABILITY, dataset: DATASET_ORDER, contentId: CONTENT_RESERVATION_AVAILABILITY, label: "Availability", fn: this.ReservationAvailability */ } ]; gTabView = MVRZ.Render.Tab.getView(oTab.id, gTabArray, gActiveTabIndex[oThis.contentId]); /* gTabView = new YAHOO.widget.TabView(oTab.id); gTabView.addListener('activeTabChange', handleActiveTabChange); for (var tabIndex in gTabArray) { var sTabID = gTabArray[tabIndex].id; var datasetDependency = gTabArray[tabIndex].dataset; if (typeof(datasetDependency) != 'undefined' && typeof(MY[datasetDependency]) != 'object') continue; gTabView.addTab(new YAHOO.widget.Tab({ label: gTabArray[tabIndex].label, content: '
', active: gActiveTabIndex[oThis.contentId] == tabIndex ? true : false })); } */ handleActiveTabChange(); // Fill the select options MY[DATASET_ORDER].select(oSelect, MY[DATASET_ORDER].currentDatasetIdValue); return ret; } //if(!MVRZ.util.haveConnectionsCompleted(this.renderit, this)) { // MVRZ.util.event.subscribe(EVENT_CONNECTION_PROCESSED, DATASET_ORDER, MVRZ.util.haveConnectionsCompleted, this.renderit, this); //} if(!MVRZ.util.haveConnectionsCompleted(this.renderit, this)) { MVRZ.util.event.subscribe(EVENT_CONNECTION_PROCESSED, '', MVRZ.util.haveConnectionsCompleted, this.renderit, this); } //MVRZ.util.callFnWhenLoaded(DATASET_ORDER, this, this.renderit); } this.ReservationMain = function ReservationMain(oElAppendTo, updatedPaneId, argArray){ msg('ReservationMain(' + oElAppendTo + ', ' + updatedPaneId + ')'); this.contentId = CONTENT_RESERVATION_MAIN; gActiveNodeIndex[CONTENT_RESERVATION_MAIN] = 0; if (typeof(MY[DATASET_HOMEAUTOMATION]) == 'object') MY[DATASET_HOMEAUTOMATION].load(); if (typeof(MY[DATASET_PROPERTY]) == 'object') MY[DATASET_PROPERTY].load(); if (typeof(MY[DATASET_STATUS]) == 'object') MY[DATASET_STATUS].load(); if (typeof(MY[DATASET_ORDER]) == 'object') MY[DATASET_ORDER].load(); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Reservation

" oElAppendTo.innerHTML = sIntroHtml; this.renderit = function renderit(obj){ msg('renderit(' + obj + ')'); // Set the up-to-date calendar first var sContainerClass = "reservation-main-container"; var sContainerId = sContainerClass + ":" + this.contentId; if (!(oContainer = document.getElementById(sContainerId))) { var oContainer = document.createElement("div"); oContainer.className = sContainerClass; oContainer.id = sContainerId; oElAppendTo.appendChild(oContainer); } else { oContainer.innerHTML = ''; } oContainer.innerHTML = 'Render reservation main tab'; // Render the fields for this tab var idValue; var oFields = new Array(); var oSelect = document.getElementById(MY[DATASET_ORDER].selectId); if (oSelect) idValue = oSelect.value; else idValue = MY[DATASET_ORDER].currentDatasetIdValue; oFields.push({ input: 'isCancelled', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'propertyID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'statusID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'arrivalDate', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'checkinTime', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'departureDate', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'checkoutTime', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'orderDateTime', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'sourceID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'source2ID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'heatTo', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'coolTo', datasetName: DATASET_ORDER, dataRowIndex: idValue }); // Check Temperature anf check in/out defaults var currentHeatTo = MY[DATASET_ORDER].get(idValue, 'heatTo', 'ID'); var currentCoolTo = MY[DATASET_ORDER].get(idValue, 'coolTo', 'ID'); var checkinTime = MY[DATASET_ORDER].get(idValue, 'checkinTime', 'ID'); var checkoutTime = MY[DATASET_ORDER].get(idValue, 'checkoutTime', 'ID'); if (typeof(currentHeatTo) == 'undefined' || currentHeatTo == null || currentHeatTo.length == 0 || currentHeatTo == 0) currentHeatTo = null; if (typeof(currentCoolTo) == 'undefined' || currentCoolTo == null || currentCoolTo.length == 0 || currentCoolTo == 0) currentCoolTo = null; if (typeof(checkinTime) == 'undefined' || checkinTime == null || checkinTime.length == 0 || checkinTime == TIME_DB_NULL) checkinTime = null; if (typeof(checkoutTime) == 'undefined' || checkoutTime == null || checkoutTime.length == 0 || checkoutTime == TIME_DB_NULL) checkoutTime = null; //popupInfo("Checking currentHeatTo="+currentHeatTo+', currentCoolTo='+currentCoolTo+', checkinTime='+checkinTime+', checkoutTime='+checkoutTime); if (currentHeatTo == null || currentCoolTo == null || checkinTime == null || checkoutTime == null) { var propertyId = MY[DATASET_ORDER].get(idValue, 'propertyID', 'ID'); // Get the property Defaults var propertyHaId = MY[DATASET_HOMEAUTOMATION].get(propertyId, 'ID', 'propertyID'); if (currentHeatTo == null) MY[DATASET_ORDER].setByIdField(idValue, 'heatTo', MY[DATASET_HOMEAUTOMATION].get(propertyHaId, 'occupiedTargetHeat', 'ID'), 'ID'); if (currentCoolTo == null) MY[DATASET_ORDER].setByIdField(idValue, 'coolTo', MY[DATASET_HOMEAUTOMATION].get(propertyHaId, 'occupiedTargetCool', 'ID'), 'ID'); if (checkinTime == null) { var val = MY[DATASET_PROPERTY].get(propertyId, 'checkinTime', 'ID'); MY[DATASET_ORDER].setByIdField(idValue, 'checkinTime', val, 'ID'); //popupInfo("Setting checkin of propertyId="+propertyId+" to "+val); } if (checkoutTime == null) { var val = MY[DATASET_PROPERTY].get(propertyId, 'checkoutTime', 'ID'); MY[DATASET_ORDER].setByIdField(idValue, 'checkoutTime', val, 'ID'); //popupInfo("Setting checkout of propertyId="+propertyId+" to "+val); } } var oContent = MVRZ.util.render.inputs(oFields); oElAppendTo.appendChild(oContent); } //if(!MVRZ.util.haveConnectionsCompleted(this.renderit, this)) { // MVRZ.util.event.subscribe(EVENT_CONNECTION_PROCESSED, DATASET_ORDER, MVRZ.util.haveConnectionsCompleted, this.renderit, this); //} // Render everything MVRZ.util.callFnWhenLoaded(DATASET_ORDER, this, this.renderit); return ret; } this.ReservationAvailability = function ReservationAvailability(oElAppendTo, updatedPaneId, argArray){ msg('ReservationAvailability(' + oElAppendTo + ', ' + updatedPaneId + ')'); this.contentId = CONTENT_RESERVATION_AVAILABILITY; gActiveNodeIndex[CONTENT_RESERVATION_AVAILABILITY] = 0; if (typeof(MY[DATASET_PROPERTY]) == 'object') MY[DATASET_PROPERTY].load(); if (typeof(MY[DATASET_STATUS]) == 'object') MY[DATASET_STATUS].load(); if (typeof(MY[DATASET_ORDER]) == 'object') MY[DATASET_ORDER].load(); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Availability

" if(typeof(oElAppendTo)=='undefined') oElAppendTo = this.oElAppendTo; this.oElAppendTo = oElAppendTo; oElAppendTo.innerHTML = sIntroHtml; this.handleSelectChange = function(e){ msg('handleSelectChange()' + typeof(this)); var input = DATASET_PROPERTY + 'ID'; var id = MY[DATASET_PROPERTY].getSelectId(); if (typeof(el = document.getElementById(id)) != 'undefined') { MY[DATASET_PROPERTY].currentDatasetIdValue = el.value; } renderReservationsAvailabilityPage("center"); } this.renderit = function renderit(obj){ msg('renderit(' + obj + ')'); // Set the up-to-date calendar first var sContainerClass = "reservation-availability-container"; var sContainerId = sContainerClass + ":" + obj.contentId; var oContainer; var oElAppendTo = obj.oElAppendTo; if (!(oContainer = document.getElementById(sContainerId))) { oContainer = document.createElement("div"); oContainer.className = sContainerClass; oContainer.id = sContainerId; oElAppendTo.appendChild(oContainer); } else { oContainer.innerHTML = ''; } oContainer.innerHTML = ''; var currentDatasetIdValue = MY[DATASET_PROPERTY].getSelectedId(); if(typeof(currentDatasetIdValue)=='undefined' || currentDatasetIdValue == null || currentDatasetIdValue ==0) { MY[DATASET_PROPERTY].currentDatasetIdValue = MY[DATASET_PROPERTY].datasetData[0]['ID']; } var selectField = MY[DATASET_PROPERTY].inputs.selectField; selectField.noHandlers = false; selectField.onlyChangeHandler = true; selectField.fnOnChange = obj.handleSelectChange; msg('Reservation() calling renderSelect(), fnOnChange is ' + typeof(selectField.fnOnChange)); //var oSelect = MY[DATASET_ORDER].renderSelect(oElAppendTo, MY[DATASET_ORDER].currentDatasetIdValue, selectField, true); // Postpone options var oSelect = MY[DATASET_PROPERTY].renderSelect(oElAppendTo, MY[DATASET_PROPERTY].currentDatasetIdValue, selectField, false); // Don't postpone options // Render the fields for this tab var idValue; var oFields = new Array(); var oSelect = document.getElementById(MY[DATASET_PROPERTY].selectId); if (oSelect) idValue = oSelect.value; else idValue = MY[DATASET_ORDER].currentDatasetIdValue; /* oFields.push({ input: 'isCancelled', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'propertyID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'statusID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'arrivalDate', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'checkinTime', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'departureDate', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'checkoutTime', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'orderDateTime', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'sourceID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'source2ID', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'heatTo', datasetName: DATASET_ORDER, dataRowIndex: idValue }); oFields.push({ input: 'coolTo', datasetName: DATASET_ORDER, dataRowIndex: idValue }); var oContent = MVRZ.util.render.inputs(oFields); */ var sCalContainerId = sContainerClass + "-cal" + ":" + obj.contentId if (!(oCalContainer = document.getElementById(sCalContainerId))) { oCalContainer = document.createElement("div"); oCalContainer.className = sContainerClass + "-cal"; oCalContainer.id = sCalContainerId; oElAppendTo.appendChild(oCalContainer); } else { oCalContainer.innerHTML = ''; } oCalContainer2 = document.createElement("div"); oCalContainer.appendChild(oCalContainer2); //var sSelected = "2/24/2010-2/28/2010,3/04/2010-3/14/2010"; var sSelected = ""; var oCfg = {pages: CAL_PAGES, navigator: true, selected: sSelected}; var cal = new MVRZ.util.calendar.IntervalCalendar(oCalContainer2, oCfg); function calUpdate(prevDate, newDate) { //popupDebug("calUpdate"); if(calRenderCount < CAL_PAGES-1) { calRenderCount++; return; // Wait for the last one } calRenderCount = 0; // Reset // Set the cells that are booked // - Get the range of the displayed cal var oFirstPage = cal.pages[0]; var oFirstPageDates = oFirstPage.cellDates; var sFirstDate = oFirstPageDates[0]; var oLastPage = cal.pages[cal.pages.length-1]; //popupDebug(cal.pages.length); var oLastPageDates = oLastPage.cellDates; var sLastDate = oLastPageDates[oLastPageDates.length-1]; //popupDebug(sFirstDate + " - " + sLastDate + "//" + typeof(sFirstDate)); var dEarliest = new Date(sFirstDate[1] + " " + sFirstDate[2] + ", " + sFirstDate[0]); var dLatest = new Date(sLastDate[1] + " " + sLastDate[2] + ", " + sLastDate[0]); var dEarliestTime = dEarliest.getTime(); var dLatestTime = dLatest.getTime(); var chosenPropertyID = MY[DATASET_PROPERTY].getSelectedId(); //popupDebug(dEarliest + "::" + dLatest); //popupDebug("data length:" + MY[DATASET_ORDER].datasetData.length); for(var i=MY[DATASET_ORDER].datasetData.length-1; i>=0; i--) { var oDS = MY[DATASET_ORDER].datasetData[i]; var propertyID = parseInt(oDS['propertyID']); if(propertyID != chosenPropertyID || oDS['isCancelled']!=0) continue; var statusID = oDS['statusID']; var sArrival = oDS['arrivalDate']; var dArrival = MVRZ.util.parser.date(sArrival); var sDeparture = oDS['departureDate']; var dDeparture = MVRZ.util.parser.date(sDeparture); //popupDebug(dArrival + "::" + dDeparture); if(dDeparture == null || dArrival == null) continue; // Bad record if(dDeparture.getTime() < dEarliestTime) break; // Done, going backwards in time if(dArrival.getTime() > dLatestTime) continue; // Not within range if(statusID == null || statusID <= 1) continue; // Can't do tentative - they can overlap var nights = Math.round((dDeparture.getTime() - dArrival.getTime()) / MILLISECONDS_IN_DAY); popupDebug("Doing order: " + nights + " nights " + dArrival + "//" + dDeparture); // Set the cell to the appropriate color var setCount=0; for(var n=0; n <= nights; n++) { //var d = new Date(dArrival.getTime() + (MILLISECONDS_IN_DAY * n) - (MILLISECONDS_IN_DAY/2)); var d = new Date(dArrival.getTime() + (MILLISECONDS_IN_DAY * n) + 1); var oPage = cal.getCalendarPage(d); if(i<5) popupDebug("Doing: " + d); if(oPage == null) { popupDebug("No page for: " + d); if(setCount==0) continue; // Not started yet else break; // Date is on next (undrawn) page } var index = oPage.getCellIndex(d); if(index > -1) { //oPage.cells[index].style.backgroundColor = "#0f0"; YAHOO.util.Dom.addClass(oPage.cells[index], "mvrz-b"); if(n == 0) YAHOO.util.Dom.addClass(oPage.cells[index], "mvrz-a"); if(n == nights) { YAHOO.util.Dom.addClass(oPage.cells[index], "mvrz-d"); } else { //oPage.cells[index].children[0].style.color = aStatusStyle[statusID].foreground; //oPage.cells[index].children[0].style.backgroundColor = aStatusStyle[statusID].background; //popupDebug("set cell for:" + d); setCount++; } YAHOO.util.Dom.addClass(oPage.cells[index], "mvrz-s-" + statusID); } else { popupDebug("Not found: " + d); } } } } //cal.pages[cal.pages.length-1].renderEvent.subscribe(calUpdate); // When the last page is rendered cal.renderEvent.subscribe(calUpdate); // When a cal page is rendered - one for each page //cal.changePageEvent.subscribe(calUpdate); cal.render(); /* // Set the booked cells to a booked state var dNow = new Date(); var iCount = 0; var sStyle = ''; var chosenPropertyID = MY[DATASET_PROPERTY].getSelectedId(); msg("records=" + MY[DATASET_ORDER].datasetData.length); for(var oRes in MY[DATASET_ORDER].datasetData) { var oDS = MY[DATASET_ORDER].datasetData[oRes]; var propertyID = oDS['propertyID']; if(propertyID != chosenPropertyID) continue; var sArrival = oDS['arrivalDate']; var sDeparture = oDS['departureDate']; var dDeparture = MVRZ.util.formatter._getDatabaseDate(sDeparture); if(dDeparture == null) continue; // Bad record //msg(iCount++ + "::" + sArrival + " - " + sDeparture + " // " + dDeparture.getTime() + ", now="+dNow.getTime()); if(dDeparture.getTime() < dNow.getTime()) continue; // Only do future dates var dArrival = MVRZ.util.formatter._getDatabaseDate(oDS['arrivalDate']); if(dArrival == null) continue; // Bad record for(var d = dArrival; d < dDeparture; d = new Date(d.getTime() + 86400000)) { if(sStyle.length > 0) sStyle += ",\n"; sStyle += ".y" + d.getFullYear() + " .m" + (parseInt(d.getMonth()) + 1) + " .d" + d.getDate() + " a"; } } if(sStyle.length > 0) { sStyle += " {background-color: #f00;}\n"; var sStyleID = "style-cal"; var oStyle = document.getElementById(sStyleID); //popupDebug("oStyle="+typeof(oStyle)); if(typeof(oStyle)=='undefined' || oStyle == null) { oStyle = document.createElement('style'); oStyle.id = sStyleID; var oHead = document.getElementsByTagName('head'); oHead[0].appendChild(oStyle); } oStyle.innerHTML = sStyle; } //popupDebug(sStyle); //oElAppendTo.appendChild(oContent); */ } //if(!MVRZ.util.haveConnectionsCompleted(this.renderit, this)) { // MVRZ.util.event.subscribe(EVENT_CONNECTION_PROCESSED, DATASET_ORDER, MVRZ.util.haveConnectionsCompleted, this.renderit, this); //} // Render everything MVRZ.util.callFnWhenLoaded(DATASET_ORDER, this, this.renderit); return ret; } this.SetupPropertyLocation = function SetupPropertyLocation(oElAppendTo, updatedPaneId, argArray){ msg('renderSetupPropertyLocationContent(' + oElAppendTo + ', ' + updatedPaneId + ')'); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); var input = DATASET_PROPERTY + 'ID'; var selectInputId = MY[DATASET_PROPERTY].getSelectId(); // Set the field that should be displayed argArray[INPUT_RENDER_FIELDLIST] = [ 'streetNumber', 'zip', 'phone' ]; //var el = document.getElementById(selectInputId); var dbg = "Location, oElAppendTo.id="+oElAppendTo+", contentId=" + argArray['contentId'] + ", propertyID=[" + selectInputId + "] " + '
'; msg(dbg); var oIntro = document.createElement("p"); oIntro.innerHTML = dbg + 'Please provide information about the location of your property.'; oElAppendTo.appendChild(oIntro); var elLocationId = oElAppendTo.id + "-location"; var elAddressId = oElAppendTo.id + "-address"; /* var oLocation = document.createElement("div"); oLocation.id = elLocationId; oLocation.className = "pane fullwidth"; oLocation.innerHTML = HTML_LOADING; var oAddress = document.createElement("div"); oAddress.id = elAddressId; oAddress.className = "pane fullwidth"; oAddress.innerHTML = HTML_LOADING; oElAppendTo.appendChild(oAddress); oElAppendTo.appendChild(oLocation); */ sLayoutContent = '
' +'
'+getLoadingNotice()+'
' //delete argArray['sIntroHtml']; argArray['sIntroHtml'] = ''; //popupInfo('renderSetupPropertyLocationContent, calling render with id='+elLocationId); MY[DATASET_PROPERTY].render(oElAppendTo, argArray, sLayoutContent); argArray['sIntroHtml'] = ''; MY[DATASET_PROPERTY].inputs.appendFields = true; // Appends to previous fields for validation etc. MY[DATASET_PROPERTY].renderAddress(elAddressId, argArray); //MY[DATASET_PROPERTY].inputs.appendFields = false; return ret; } this.SetupPropertyInfo = function SetupPropertyInfo(oElAppendTo, updatedPaneId, argArray){ msg('renderSetupPropertyInfoContent(' + oElAppendTo + ', ' + updatedPaneId + ')'); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); // Set the field that should be displayed argArray[INPUT_RENDER_FIELDLIST] = [ 'name', 'isDisabled', 'propertyTypeID', 'checkinTime', 'checkoutTime', 'lineDescription', 'shortDescription', 'bulletDescription', 'fullDescription', 'communityDescription', 'termsAndConditions' ]; var input = DATASET_PROPERTY + 'ID'; var selectInputId = MY[DATASET_PROPERTY].getSelectId(); var dbg = ''; if ((el = document.getElementById(selectInputId)) != null) dbg = el.value; argArray['sIntroHtml'] = "Main Property Info"; argArray['addSelect'] = true; //oElAppendTo.appendChild(document.createTextNode(argArray['sIntroHtml'])); MY[DATASET_PROPERTY].render(oElAppendTo, argArray); return ret; } this.SetupPropertyHomeAutomation = function SetupPropertyHomeAutomation(oElAppendTo, updatedPaneId, argArray){ msg('renderSetupPropertyHomeAutomationContent(' + oElAppendTo.id + ', ' + updatedPaneId + ')'); MY[DATASET_HOMEAUTOMATION].postRender = function postRender(elContentId, orderId) { msg(DATASET_HOMEAUTOMATION+":: postRender()"); oElAppendTo = document.getElementById(elContentId); var oDivViewId = MVRZ.util.setChildId(oElAppendTo.id, ID_CHILD_APPEND_VIEW); var oDivView; if(!(oDivView=document.getElementById(oDivViewId))) { oDivView = document.createElement('div'); oDivView.id = oDivViewId; oElAppendTo.appendChild(oDivView); } else { oDivView.innerHTML = ''; } /* if(typeof(orderId)=='undefined' || orderId==null) { //if(typeof(gOrderId)=='undefined') var orderId = 0; //else var orderId = gOrderId; orderId = 0; } */ ////orderId = orderId; // From the parent function if(typeof(orderId)!='undefined' && orderId!=0) { var sIntroHtml = '

Reservation Temperature History

'; } else { var sIntroHtml = '

Recent Temperature History

'; } var argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['viewType'] = VIEW_TYPE_CHART; argArray['sIntroHtml'] = sIntroHtml; argArray['addSelect'] = false; argArray[ARG_GETS] = new Object(); argArray[ARG_GETS]['orderID'] = orderId; msg('renderSetupPropertyHomeAutomationContent.postRender() - calling render for view'); MY[DATASET_HOMEAUTOMATIONDATA].render(oDivView, argArray); } var ret = false; if (typeof(oElAppendTo) == 'undefined') { return false; } msg('renderSetupPropertyHomeAutomationContent() - clearing innerHTML of '+oElAppendTo.id); oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') { argArray = new Object(); argArray['sIntroHtml'] = "Home Automation, contentId=" + argArray['contentId'] + ", propertyID=" + sDbg; argArray['displayType'] = DISPLAY_TYPE_EDIT; } // Set the field that should be displayed /* argArray[INPUT_RENDER_FIELDLIST] = { name: true, isDisabled: true, propertyTypeID: true, lineDescription: true, shortDescription: true, bulletDescription: true, fullDescription: true, communityDescription: true, termsAndConditions: true }; */ var input = DATASET_PROPERTY + 'ID'; var selectInputId = MY[DATASET_PROPERTY].getSelectId(); msg('renderSetupPropertyHomeAutomationContent() - selectInputId = '+selectInputId); var propertyId = MY[DATASET_PROPERTY].getDatasetId(); if(!propertyId) MY[DATASET_PROPERTY].setDatasetId(); var sDbg = propertyId; /* var oDivEdit = document.createElement('div'); oDivEdit.id = oElAppendTo.id + "-edit"; oElAppendTo.appendChild(oDivEdit); msg('renderSetupPropertyHomeAutomationContent() - calling render'); MY[DATASET_HOMEAUTOMATION].render(oDivEdit, argArray); */ // Set up filter for chart data MY[DATASET_HOMEAUTOMATION].oFilter = new Object(); var value = propertyId; if (typeof(value) == 'undefined' || value == 0) value = 0; // Ensure it's not blank MY[DATASET_HOMEAUTOMATION].oFilter['propertyID'] = '==' + value; if(typeof(argArray)!='undefined') { var orderId = argArray['orderId']; } else var orderId = null; if(orderId==null) { orderId = 0; this.orderId = orderId; var oDivEdit = document.createElement('div'); oDivEdit.id = oElAppendTo.id + "-edit"; oElAppendTo.appendChild(oDivEdit); var argArray = new Object(); argArray['addSelect'] = true; msg('renderSetupPropertyHomeAutomationContent() - calling render'); MY[DATASET_HOMEAUTOMATION].render(oDivEdit, argArray); } else { this.orderId = orderId; MY[DATASET_HOMEAUTOMATION].postRender(oElAppendTo.id, orderId); } this.orderId = orderId; return ret; } this.SetupPropertyUtilities = function SetupPropertyUtilities(oElAppendTo, updatedPaneId, argArray){ msg('renderSetupPropertyUtilitiesContent(' + oElAppendTo + ', ' + updatedPaneId + ')'); MY[DATASET_UTILITIESDATA].postRender = function postRender(elContentId) { msg(DATASET_UTILITIESDATA+":: postRender()"); oElAppendTo = document.getElementById(elContentId); // Chart var oDivChrtId = MVRZ.util.setChildId(oElAppendTo.id, ID_CHILD_APPEND_CHRTVIEW); var oDivChrtView; if(!(oDivChrtView=document.getElementById(oDivChrtId))) { oDivChrtView = document.createElement('div'); oDivChrtView.id = oDivChrtId; oElAppendTo.appendChild(oDivChrtView); } else { oDivChrtView.innerHTML = ''; } var argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['viewType'] = VIEW_TYPE_CHART; argArray['sIntroHtml'] = '

Utilities Graph

'; MY[DATASET_UTILITIESDATA].render(oDivChrtView, argArray); //popupInfo("DATASET_UTILITIESDATA returning early"); //return; // - Table var oDivTableId = MVRZ.util.setChildId(oElAppendTo.id, ID_CHILD_APPEND_TBLVIEW); var oDivTblView; if(!(oDivTblView=document.getElementById(oDivTableId))) { oDivTblView = document.createElement('div'); oDivTblView.id = oDivTableId; oElAppendTo.appendChild(oDivTblView); } else { oDivTblView.innerHTML = ''; } var argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['viewType'] = VIEW_TYPE_TABLE; argArray['sIntroHtml'] = '

Utilities Table

'; msg('renderSetupPropertyHomeAutomationContent.postRender() - calling render for view'); MY[DATASET_UTILITIESDATA].render(oDivTblView, argArray); } var ret = false; if (typeof(oElAppendTo) == 'undefined') { msg("SetupPropertyUtilities() No appendTo el"); return false; } msg("SetupPropertyUtilities() Clearing appendTo"); oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); // Set the field that should be displayed /* argArray[INPUT_RENDER_FIELDLIST] = { name: true, isDisabled: true, propertyTypeID: true, lineDescription: true, shortDescription: true, bulletDescription: true, fullDescription: true, communityDescription: true, termsAndConditions: true }; */ var input = DATASET_PROPERTY + 'ID'; var selectInputId = MY[DATASET_PROPERTY].getSelectId(); var propertyId = MY[DATASET_PROPERTY].currentDatasetIdValue; var sDbg = propertyId; msg("SetupPropertyUtilities() propertyId="+propertyId); // Set up filter for chart data var value = propertyId; MY[DATASET_UTILITIESDATA].oFilter = new Object(); if (typeof(value) == 'undefined' || value == 0) value = 0; // Ensure it's not blank MY[DATASET_UTILITIESDATA].oFilter['propertyID'] = '==' + value; msg("SetupPropertyUtilities() done filter setup"); // Render setup argArray['sIntroHtml'] = "Utilities, contentId=" + argArray['contentId'] + ", propertyID=" + sDbg; argArray['displayType'] = DISPLAY_TYPE_EDIT; var oDivEdit = document.createElement('div'); oDivEdit.id = oElAppendTo.id + "-edit"; oElAppendTo.appendChild(oDivEdit); msg('renderSetupPropertyHomeAutomationContent() - calling render for edit'); MY[DATASET_UTILITIESDATA].render(oDivEdit, argArray); //popupErr("render() After DATASET_UTILITIESDATA render()"); //alert("SetupPropertyUtilities() before render"); return ret; } this.SetupPropertyImages = function SetupPropertyImages(oElAppendTo, updatedPaneId, argArray){ msg('renderSetupPropertyImagesContent(' + oElAppendTo + ', ' + updatedPaneId + ')'); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; if (typeof(MY[DATASET_PROPERTY]) == 'object') MY[DATASET_PROPERTY].load(); if (typeof(MY[DATASET_IMAGES]) == 'object') MY[DATASET_IMAGES].load(); oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); var input = DATASET_PROPERTY + 'ID'; var selectInputId = MY[DATASET_PROPERTY].getSelectId(); var value = null; if ((el = document.getElementById(selectInputId)) != null) value = el.value; if (value == null) value = MY[DATASET_PROPERTY].currentDatasetIdValue; var dbg = ''; if ((el = document.getElementById(selectInputId)) != null) dbg = el.value; //argArray['sIntroHtml'] = "Images, propertyID=" + dbg + ', dataset value='+value; argArray['sIntroHtml'] = "Images, contentId=" + argArray['contentId'] + ", propertyID=" + dbg; //argArray['sIntroHtml'] = "Images"; oElAppendTo.appendChild(document.createTextNode(argArray['sIntroHtml'])); argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['displayType'] = DISPLAY_TYPE_EDIT; MY[DATASET_IMAGES].oFilter = new Object(); if (typeof(value) == 'undefined' || value == 0) value = 0; // Ensure it's not blank MY[DATASET_IMAGES].render(oElAppendTo, argArray); return ret; } this.SetupAttach = function SetupAttach(oElAppendTo, updatedPaneId, argArray){ msg('Content.SetupAttach(' + oElAppendTo + ', ' + updatedPaneId + ')'); function handleChange(type, fireArgs, subscribeArg) { msg("change fired: "+type+", " + fireArgs[0].name + ", " + subscribeArg.paneId); var argArray = new Object(); gPanes[subscribeArg.paneId].render(argArray, true); } var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; //oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); // Upload controls var oCfg = {}; var pControlID = DATASET_ATTACH + '-control'; pControl = MVRZ.Render.Pane.getPane(pControlID, oElAppendTo.id, oCfg); pControl.cfg.setProperty('render', function(oPane) { msg("Attach render(), "+oPane.name); // Add the upload control var oCfg = { datasetName: DATASET_ATTACH, button: {label: "Choose a file above then click this button to upload it", type: BUTTON_TYPE_PUSHMAIN, checked:true} }; MY[DATASET_ATTACH].postUpload = function(json, uploadCount) { var plural = uploadCount==1? ' has' : 's have'; //popupInfo(uploadCount + ' file' + plural + ' been uploaded.'); // Process the json this.oRequestCallback.responseText = json; this.connectionParseResponse(); if(!uploadCount) popupErr('No files were uploaded.'); if(uploadCount) { this.unload(); //this.load(); gPanes[pControlID].fnChange(null, gPanes[pControlID]); } } var oControl = MVRZ.Render.Input.uploader(oPane.name, oCfg); }); // Quotes for a request var pListID = DATASET_ATTACH + '-list'; pList = MVRZ.Render.Pane.getPane(pListID, oElAppendTo.id, oCfg); pList.cfg.setProperty('render', function(oPane) { msg("Quotes render(), "+oPane.name); var argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; MY[DATASET_ATTACH].render(oPane.name, argArray); }); pControl.subscribe('change', handleChange, {paneId: pListID}, this); pControl.render(null, true); pList.render(null, true); /* var input = DATASET_ATTACH + 'ID'; var selectInputId = MY[DATASET_ATTACH].getSelectId(); var value = null; if ((el = document.getElementById(selectInputId)) != null) value = el.value; if (value == null) value = MY[DATASET_ATTACH].currentDatasetIdValue; var dbg = ''; if ((el = document.getElementById(selectInputId)) != null) dbg = el.value; //argArray['sIntroHtml'] = "Images, propertyID=" + dbg + ', dataset value='+value; argArray['sIntroHtml'] += "Attachments, contentId=" + argArray['contentId'] + ", propertyID=" + dbg; //argArray['sIntroHtml'] = "Images"; //oElAppendTo.innerHTML = argArray['sIntroHtml']; // Add the upload control var oCfg = { datasetName: DATASET_ATTACH, button: {label: "Upload file..."} }; var oControl = MVRZ.Render.Input.uploader(oElAppendTo, oCfg); argArray['displayType'] = DISPLAY_TYPE_VIEW; //argArray['displayType'] = DISPLAY_TYPE_EDIT; MY[DATASET_ATTACH].oFilter = new Object(); if (typeof(value) == 'undefined' || value == 0) value = 0; // Ensure it's not blank MY[DATASET_ATTACH].render(oElAppendTo, argArray); */ return ret; } this.SetupRateAdjust = function SetupRateAdjust(oElAppendTo, updatedPaneId, argArray){ msg('Content.SetupRateAdjust(' + oElAppendTo + ', ' + updatedPaneId + ')'); return MY[DATASET_RATEADJUST].render(oElAppendTo, argArray); } this.SetupProperty = function SetupProperty(oElAppendTo, updatedPaneId, argArray){ msg('SetupProperty(' + oElAppendTo + ', ' + updatedPaneId + ')'); /* switch(gPlanId) { case(PLAN_3): case(PLAN_2): MY[DATASET_HOMEAUTOMATION].load(); case(PLAN_1): default: MY[DATASET_PROPERTY].load(); MY[DATASET_PROPERTYTYPE].load(); MY[DATASET_IMAGES].load(); } */ if (typeof(MY[DATASET_HOMEAUTOMATION]) == 'object') MY[DATASET_HOMEAUTOMATION].load(); if (typeof(MY[DATASET_PROPERTY]) == 'object') MY[DATASET_PROPERTY].load(); if (typeof(MY[DATASET_PROPERTYTYPE]) == 'object') MY[DATASET_PROPERTYTYPE].load(); if (typeof(MY[DATASET_IMAGES]) == 'object') MY[DATASET_IMAGES].load(); this.oElAppendTo = oElAppendTo; this.contentId = CONTENT_SETUP_PROPERTY; gActiveTabIndex[CONTENT_SETUP_PROPERTY] = 0; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Property Information

Please enter the property information. " + "
Multiple properties can be entered - just use the add button.

" oElAppendTo.innerHTML = sIntroHtml; this.handleSelectChange = function(e){ msg('handleSelectChange()'); var input = DATASET_PROPERTY + 'ID'; var id = MY[DATASET_PROPERTY].getSelectId(); if (typeof(el = document.getElementById(id)) != 'undefined') { MY[DATASET_PROPERTY].currentDatasetIdValue = el.value; } handleActiveTabChange(e); } function renderit(oThis){ var ret = false; var oElAppendTo = oThis.oElAppendTo; /* var selectField = MY[DATASET_PROPERTY].inputs.selectField; selectField.noHandlers = false; selectField.onlyChangeHandler = true; selectField.fnOnChange = oThis.handleSelectChange; msg('SetupProperty() calling renderSelect(), fnOnChange is ' + typeof(selectField.fnOnChange)); var oSelect = MY[DATASET_PROPERTY].renderSelect(oElAppendTo, MY[DATASET_PROPERTY].currentDatasetIdValue, selectField, true); // Postpone options */ var oTab = document.createElement("div"); oTab.id = "tabDiv:" + oThis.contentId; oElAppendTo.appendChild(oTab); // Set up tabs gTabArray = [{ id: TAB_PROPERTY_INFO, dataset: DATASET_PROPERTY, contentId: CONTENT_SETUP_PROPERTY_INFO, label: "Info", fn: MVRZ.Render.Content.SetupPropertyInfo }, { /* id: TAB_PROPERTY_LOCATION, dataset: DATASET_PROPERTY, contentId: CONTENT_SETUP_PROPERTY_LOCATION, label: "Location", fn: MVRZ.Render.Content.SetupPropertyLocation }, { */ id: TAB_PROPERTY_IMAGES, dataset: DATASET_IMAGES, contentId: CONTENT_SETUP_PROPERTY_IMAGES, label: "Images", fn: MVRZ.Render.Content.SetupPropertyImages /*}, { id: TAB_PROPERTY_HOMEAUTOMATION, dataset: DATASET_HOMEAUTOMATION, contentId: CONTENT_SETUP_PROPERTY_HOMEAUTOMATION, label: "Home Automation", fn: MVRZ.Render.Content.SetupPropertyHomeAutomation }, { id: TAB_PROPERTY_UTILITIES, dataset: DATASET_UTILITIESDATA, contentId: CONTENT_SETUP_PROPERTY_UTILITIES, label: "Utilities", fn: MVRZ.Render.Content.SetupPropertyUtilities */ }]; gTabView = MVRZ.Render.Tab.getView(oTab.id, gTabArray, gActiveTabIndex[oThis.contentId]); /* gTabView = new YAHOO.widget.TabView(oTab.id); gTabView.addListener('activeTabChange', handleActiveTabChange); for (var tabIndex in gTabArray) { var sTabID = gTabArray[tabIndex].id; var datasetDependency = gTabArray[tabIndex].dataset; if (typeof(datasetDependency) != 'undefined' && typeof(MY[datasetDependency]) != 'object') continue; gTabView.addTab(new YAHOO.widget.Tab({ label: gTabArray[tabIndex].label, content: '
', active: gActiveTabIndex[oThis.contentId] == tabIndex ? true : false })); } */ handleActiveTabChange(); /* // Fill the select options MY[DATASET_PROPERTY].select(oSelect, MY[DATASET_PROPERTY].currentDatasetIdValue); */ return ret; } MVRZ.util.callFnWhenLoaded(DATASET_PROPERTY, this, renderit); } this.SetupSource = function SetupSource(oElAppendTo, updatedPaneId, argArray){ msg('SetupSource(' + oElAppendTo + ', ' + updatedPaneId + ')'); this.contentId = CONTENT_SETUP_PROPERTY; gActiveNodeIndex[CONTENT_SETUP_PROPERTY] = 0; MY[DATASET_SOURCE].load(); MY[DATASET_SOURCEDATA].load(); MY[DATASET_SOURCELOGIN].load(); MY[DATASET_SOURCEIDENTIFIER].load(); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Calendar Synchronization

Please choose your Up-To-Date Calendar and how it synchronizes with other calendars. " + "
You can use reservations entered here as the definitive availability or your HomeAwayConnect calendar.

" oElAppendTo.innerHTML = sIntroHtml; var oCalContainer = document.createElement("div"); oCalContainer.id = "calContainerDiv"; oElAppendTo.appendChild(oCalContainer); function fnGetContent(sourceId, displayRowIndex){ //popupInfo(' -- fnGetContent('+sourceId+'), displayRowIndex='+displayRowIndex); var slDatasetRowIndex = MY[DATASET_SOURCELOGIN].getDatasetRowIndex(sourceId, 'sourceID'); var sdDatasetRowIndex = MY[DATASET_SOURCEDATA].getDatasetRowIndex(sourceId, 'sourceID'); //popupInfo(' -- fnGetContent('+sourceId+'), slDatasetRowIndex='+slDatasetRowIndex+", sdDatasetRowIndex="+sdDatasetRowIndex); if (slDatasetRowIndex < 0 || sdDatasetRowIndex < 0) { return; } var aSLData = MY[DATASET_SOURCELOGIN].getRow(slDatasetRowIndex); var aSDData = MY[DATASET_SOURCEDATA].getRow(sdDatasetRowIndex); //popupInfo(' -- fnGetContent('+sourceId+'), aSLData='+serializeArray(aSLData)); //popupInfo(' -- fnGetContent('+sourceId+'), aSDData='+serializeArray(aSDData)); if (typeof(aSLData) == 'undefined') { return; } var slDatasetRowID = MY[DATASET_SOURCELOGIN].get(slDatasetRowIndex, 'ID'); //popupInfo(' -- fnGetContent('+sourceId+'), slDatasetRowID='+slDatasetRowID); var oContent = document.createElement('div'); oContent.id = 'setup-' + DATASET_SOURCE + '-' + sourceId; if (typeof(aSLData) != 'undefined') { var isEnabled = aSLData['isEnabled']; var username = aSLData['username']; var sLabel = "sourceID: " + sourceId; //MY[DATASET_SOURCELOGIN].currentDataRowIndex = slDatasetRowIndex; //MY[DATASET_SOURCELOGIN].dataValue = slDatasetRowIndex; //popupInfo(' -- fnGetContent('+sourceId+'), calling render()'); MY[DATASET_SOURCELOGIN].render(oContent, { idValue: slDatasetRowID, displayRowIndex: displayRowIndex }); } else { //popupInfo(' -- fnGetContent('+sourceId+'), NOT calling render()'); oContent.appendChild(document.createTextNode('No content')); } return oContent; } function renderit(obj){ msg('renderit(' + obj + ')'); // Set the up-to-date calendar first var sContainerClass = "source-setup-container"; var sContainerId = sContainerClass + ":" + this.contentId; if (!(oContainer = document.getElementById(sContainerId))) { var oButtonGroup = new YAHOO.widget.ButtonGroup({ id: "buttongroup", name: "radiofield", container: "calContainerDiv" }); var aOptions = [{ label: 'Use MyVRZone Reservations', value: SOURCE_ID_MVRZ }, { label: 'Use HomeAwayConnect', value: SOURCE_ID_RENTORS }]; aOptions[gSourceId].checked = true; oButtonGroup.addButtons(aOptions); oButtonGroup.subscribe("checkedButtonChange", fnChangeSource); var oContainer = document.createElement("div"); oContainer.className = sContainerClass; oContainer.id = sContainerId; oElAppendTo.appendChild(oContainer); } else { oContainer.innerHTML = ''; } //var myTree = new YAHOO.widget.TreeView(sTreeContainerId); //var myTreeRoot = myTree.getRoot(); var aData = MY[DATASET_SOURCE].getRows(); var displayRowIndex = 0; for (dataRowIndex in aData) { var isCalSyncTarget = aData[dataRowIndex]['isCalSyncTarget']; var isActive = aData[dataRowIndex]['isActive']; if (isCalSyncTarget == 0 || isActive == 0) continue; msg('renderit: ' + dataRowIndex + ':: ' + isCalSyncTarget + ', ' + isActive + ')'); var sourceId = aData[dataRowIndex]['ID']; var sourceName = aData[dataRowIndex]['name']; var url = aData[dataRowIndex]['url']; /* var sTreeHtml = "
" var sLabel = sourceName + (sourceId==gSourceId ? ' (Up-To-Date Calendar)' : ' : ' + gSourceId); var sourceNode = new YAHOO.widget.TextNode(sLabel, myTreeRoot); var subNode = new YAHOO.widget.HTMLNode(sTreeHtml, sourceNode); */ var contentId = DATASET_SOURCE + ":" + sourceId; var oContent = document.createElement('div'); oContent.className = "source-setup-content"; oContent.id = oContent.className + ":" + sourceId; var sLabel = sourceName + ' [' + sourceId + '] ' + (sourceId == gSourceId ? ' (Up-To-Date Calendar)' : ' : ' + gSourceId); var oTitle = document.createElement("h2"); oTitle.appendChild(document.createTextNode(sLabel)); oContainer.appendChild(oTitle); var oSubContent = fnGetContent(sourceId, displayRowIndex); if (typeof(oSubContent) != 'undefined') { msg("Appending content for sourceId=" + sourceId); oContent.appendChild(oSubContent); } else { msg("No content for sourceId=" + sourceId); } oContainer.appendChild(oContent); displayRowIndex++; } //myTree.draw(); } // Buttons function fnChangeSource(obj){ var sourceId = obj.newValue.get('value'); msg('SetupSource fnChangeSource:' + sourceId); gSourceId = sourceId; // TODO - Update user info MVRZ.util.callFnWhenLoaded(DATASET_SOURCELOGIN, this, renderit); } // Now get any login/identifier data for each possible sync target MVRZ.util.callFnWhenLoaded(DATASET_SOURCELOGIN, this, renderit); return ret; } // Set up the content indexing this[CONTENT_QUOTES] = this.Quotes; this[CONTENT_SETUP_CONTACT_ACCOUNT] = this.SetupContactAccount; this[CONTENT_SETUP_CONTACT_RESERVATIONS] = this.SetupContactReservations; this[CONTENT_RESERVATION] = this.Reservation; this[CONTENT_RESERVATION_MAIN] = this.ReservationMain; this[CONTENT_RESERVATION_AVAILABILITY] = this.ReservationAvailability; this[CONTENT_SETUP_PROPERTY] = this.SetupProperty; this[CONTENT_SETUP_PROPERTY_INIT] = this.SetupPropertyInit; this[CONTENT_SETUP_PROPERTY_INFO] = this.SetupPropertyInfo; this[CONTENT_SETUP_PROPERTY_LOCATION] = this.SetupPropertyLocation; this[CONTENT_SETUP_PROPERTY_IMAGES] = this.SetupPropertyImages; this[CONTENT_SETUP_PROPERTY_HOMEAUTOMATION] = this.SetupPropertyHomeAutomation; this[CONTENT_SETUP_PROPERTY_UTILITIES] = this.SetupPropertyUtilities; this[CONTENT_SETUP_SOURCE] = this.SetupSource; this[CONTENT_SETUP_ATTACH] = this.SetupAttach; this[CONTENT_SETUP_RATEADJUST] = this.SetupRateAdjust; } // End Content this.Page = new function Page() { this.render = function render(pageId, oEl) { switch(pageId) { case(PAGE_QUOTES): return MVRZ.Render.Page.Quotes(oEl); } } this.SetupContactAccount = function SetupContactAccount(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Account Contact Information

Please enter the contact information for this MyVRZone account. " + "
You can enter different marketing contact information in the Reservations Contact setup.

" oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0, 'contactID', ''); MVRZ.Render.Content.SetupContactAccount(oElAppendTo, updatedPaneId, argArray); return ret; } this.SetupContactReservations = function SetupContactReservations(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Reservations Contact Information

Please enter the Marketing contact information when advertising your properties. " + "
If you don't enter information here then your Account Contact information will be used.

" oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0, 'reservationsContactID', ''); MVRZ.Render.Content.SetupContactReservations(oElAppendTo, updatedPaneId, argArray); return ret; } this.SetupProperty = function SetupProperty(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Property Details

Please enter your property infomation here. " + "
Without any properties your account will not do anything.

" oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0,'reservationsContactID',''); return MVRZ.Render.Content[CONTENT_SETUP_PROPERTY](oElAppendTo, updatedPaneId, argArray); } this.SetupPropertyImages = function SetupPropertyImages(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Photos

Upload and manage your property photos here.

" oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0,'reservationsContactID',''); return MVRZ.Render.Content[CONTENT_SETUP_PROPERTY_IMAGES](oElAppendTo, updatedPaneId, argArray); } this.SetupSource = function SetupSource(oElAppendTo, updatedPaneId, argArray){ var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Advertisers and Synchronization

Please enter your advertiser and synchronization infomation here. " + "

" oElAppendTo.innerHTML = ''; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0,'reservationsContactID',''); return MVRZ.Render.Content[CONTENT_SETUP_SOURCE](oElAppendTo, updatedPaneId, argArray); } this.SetupRateAdjust = function SetupRateAdjust(oElAppendTo, updatedPaneId, argArray){ var ret = false; msg('Page.SetupRateAdjust()'); MY[DATASET_PROPERTY].preload(); if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Manage your Discount and Surcharge rate adjustments

Click here for help"; oElAppendTo.innerHTML = sIntroHtml; if (typeof(argArray) != 'object') argArray = new Object(); //argArray['displayType'] = DISPLAY_TYPE_VIEW; argArray['displayType'] = DISPLAY_TYPE_EDIT; argArray['addSelect'] = true; //argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0,'reservationsContactID',''); return MVRZ.Render.Content[CONTENT_SETUP_RATEADJUST](oElAppendTo, updatedPaneId, argArray); } this.SetupAttach = function SetupAttach(oElAppendTo, updatedPaneId, argArray){ var ret = false; msg('Page.SetupAttach()'); MY[DATASET_PROPERTY].preload(); if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Upload & Manage Files

Please upload any files that you want your guests to see here.
Set conditions for display on the Mini-Site and Guest Zone. Click on the table to edit the values.

Mouse over the symbols for help.

"; oElAppendTo.innerHTML = sIntroHtml; if (typeof(argArray) != 'object') argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_VIEW; //argArray['sIntroHtml'] = sIntroHtml; //argArray['idValue'] = MY[DATASET_USER].get(0,'reservationsContactID',''); return MVRZ.Render.Content[CONTENT_SETUP_ATTACH](oElAppendTo, updatedPaneId, argArray); } this.DisplayReservationHomeAutomation = function DisplayReservationHomeAutomation(oElAppendTo, updatedPaneId, argArray){ msg('Page.DisplayReservationHomeAutomation(' + oElAppendTo.id + ', ' + updatedPaneId + ')'); if(typeof(gOrderId)=='undefined') var orderId = 0; else var orderId = gOrderId; if(typeof(argArray)=='undefined') argArray = new Object(); argArray['orderId'] = orderId; return MVRZ.Render.Page.SetupPropertyHomeAutomation(oElAppendTo, updatedPaneId, argArray); } this.SetupPropertyHomeAutomation = function SetupPropertyHomeAutomation(oElAppendTo, updatedPaneId, argArray){ var ret = false; msg('Page.SetupPropertyHomeAutomation()'); MY[DATASET_PROPERTY].preload(); if(typeof(gPropertyId)=='undefined') { MY[DATASET_PROPERTY].setDatasetId(); } else { MY[DATASET_PROPERTY].setDatasetId(gPropertyId); } gPropertyId = MY[DATASET_PROPERTY].getDatasetId(); if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Manage your Thermostats

View temperature history too.

"; oElAppendTo.innerHTML = sIntroHtml; if (typeof(argArray) != 'object') argArray = new Object(); argArray['displayType'] = DISPLAY_TYPE_EDIT; return MVRZ.Render.Content[CONTENT_SETUP_PROPERTY_HOMEAUTOMATION](oElAppendTo, updatedPaneId, argArray); } this.Quotes = function Quotes(poElAppendTo, updatedPaneId, argArray) { var ret = false; msg('Quotes()'); if (typeof(poElAppendTo) == 'undefined') return false; //var sIntroHtml = "

Inquiries and Quotes

"; var sIntroHtml = ""; poElAppendTo.innerHTML = sIntroHtml; var oElAppendTo = document.createElement('div'); oElAppendTo.id = ID_QUOTES_CONTENT; poElAppendTo.appendChild(oElAppendTo); if (typeof(argArray) != 'object') argArray = new Object(); return MVRZ.Render.Content[CONTENT_QUOTES](oElAppendTo, updatedPaneId, argArray); } this.Wizard = function Wizard(oElAppendTo, updatedPaneId, argArray){ var ret = true; if (typeof(oElAppendTo) == 'undefined') return false; var sHtml = ""; sHtml += "

Wizard Page

"; // Render each wizard that is available for(wizardId in gWizards) { sHtml += "

Wizard " + wizardId + ": " + gWizards[wizardId].title + "

"; } oElAppendTo.innerHTML += sHtml; return ret; } this.ReservationsAvailability = function ReservationsAvailability(oElAppendTo, updatedPaneId, argArray){ msg('ReservationsAvailability(' + oElAppendTo + ')'); var ret = false; if (typeof(oElAppendTo) == 'undefined') return false; var sIntroHtml = "

Availability

" oElAppendTo.innerHTML = 'replace this'; if (typeof(argArray) != 'object') argArray = new Object(); argArray['sIntroHtml'] = sIntroHtml; msg('renderReservationsAvailabilityPage() Calling Content rendering with ' + CONTENT_RESERVATION_AVAILABILITY); MVRZ.Render.Content[CONTENT_RESERVATION_AVAILABILITY](oElAppendTo, updatedPaneId, argArray); return ret; } this.Smtp = function Smtp(poElAppendTo, updatedPaneId, argArray){ msg('renderSmtpPage(' + oElAppendTo + ')'); var ret = false; if(arguments.length==0) { poElAppendTo = MVRZ.Render.Page.Smtp.arguments[0]; updatedPaneId = MVRZ.Render.Page.Smtp.arguments[1]; argArray = MVRZ.Render.Page.Smtp.arguments[2]; } else { MVRZ.Render.Page.Smtp.arguments = arguments; } var oElAppendTo = poElAppendTo; if (typeof(oElAppendTo) != 'object') oElAppendTo = document.getElementById(poElAppendTo); if(typeof(oElAppendTo)!='object' || oElAppendTo==null) { msg("renderSmtpPage(): No append object, id="+poElAppendTo); return; } if(MY[DATASET_USER].loadStatus != LOAD_STATUS_LOADED) { MY[DATASET_USER].load('', '', '', function(){MVRZ.Render.Page.Smtp();}); return; } var oDivInputs = document.createElement('div'); oDivInputs.id = oElAppendTo.id + '-inputs'; oElAppendTo.appendChild(oDivInputs); var oDivControls = document.createElement('div'); oDivControls.id = oElAppendTo.id + '-controls'; oElAppendTo.appendChild(oDivControls); //oElAppendTo.appendChild(document.createTextNode("Resorts page")); if (typeof(argArray) == 'undefined') argArray = new Object(); argArray['sIntroHtml'] = "

SMTP account for sending emails.

MyVRZone requires you specify the outgoing SMTP settings for your own, existing email account to send emails to your inquirers and guests.
This helps ensure that your emails are more likely to be delivered to the recipient rather than get caught in spam.

"; var fromEmail = MY[DATASET_USER_SMTP].getFromEmail(); argArray['sIntroHtml'] += "

Currently, your emails will look like they come from: " + fromEmail + "

"; MY[DATASET_USER_SMTP].render(oDivInputs, argArray); msg('renderSmtpPage done render'); // Now add the send test email section this.renderit = function renderit(poElAppendTo){ msg('renderSmtpPage renderit(' + poElAppendTo + ')'); // Set the up-to-date calendar first var sContainerClass = "smtp-setup-container"; var sContainerId = sContainerClass + ":id"; var oElAppendTo = poElAppendTo; if(typeof(oElAppendTo)!='object') oElAppendTo = document.getElementById(oElAppendTo); if(typeof(oElAppendTo)!='object' || oElAppendTo==null) { msg("renderSmtpPage.renderit(): No append object, id="+poElAppendTo); return; } // Buttons function fnSendEmail(obj){ msg('renderSmtpPage fnSendEmail()'); //oAction = new actionObject(YUI_ACTION_TESTEMAIL, DATASET_NONE,'','','',function(){alert('DONE')}); oSmtpButtonSend.set('disabled', true); function fnRestore(){ oSmtpButtonSend.set('disabled', false); } MY[DATASET_NONE] = new datasetObject(DATASET_NONE); MY[DATASET_NONE].connect(YUI_ACTION_TESTEMAIL, '', '', '', fnRestore, fnRestore); } function fnResetSmtp(obj){ msg('renderSmtpPage fnResetSmtp()'); //oAction = new actionObject(YUI_ACTION_TESTEMAIL, DATASET_NONE,'','','',function(){alert('DONE')}); oSmtpButtonReset.set('disabled', true); function fnRestore(){ oSmtpButtonReset.set('disabled', false); } function fnFailure(){ fnRestore(); fnSuccess(); } function fnSuccess(){ msg('fnSuccess()'); fnRestore(); //MY[DATASET_USER_SMTP].unload(); // Force new load //MY[DATASET_USER_SMTP].connectStatus=CONNECT_STATUS_UNLOADED; // Force new load MY[DATASET_USER_SMTP].reload(); // Force new load handlePageChange(gStatus.activePageIndex); // Re-draw } if (typeof(MY[DATASET_NONE]) != 'object') MY[DATASET_NONE] = new datasetObject(DATASET_NONE); MY[DATASET_NONE].connect(YUI_ACTION_RESETSMTP, '', '', '', fnSuccess, fnFailure); } msg('renderSmtpPage oElAppendTo.id=' + oElAppendTo.id); var oContainer = document.getElementById(sContainerId); //if(!(typeof(oContainer)=='undefined')) { if (typeof(oContainer) == 'undefined' || oContainer == null) { msg('renderSmtpPage no Container()'); oContainer = document.createElement("div"); oContainer.className = sContainerClass; oContainer.id = sContainerId; oElAppendTo.appendChild(oContainer); } if (typeof(oContainer) != 'undefined') { oSmtpButtonSend = new YAHOO.widget.Button({ label: 'Send Test Email', value: BUTTON_SEND_TESTEMAIL, container: sContainerId, checked: true, //onclick: {fn: function(){alert('hello');}} onclick: { fn: fnSendEmail } }); oSmtpButtonReset = new YAHOO.widget.Button({ label: 'Reset', value: BUTTON_RESET_SMTP, container: sContainerId, //onclick: {fn: function(){alert('hello');}} onclick: { fn: fnResetSmtp } }); } else { msg('renderSmtpPage Container exists, id=' + oContainer.id); //oContainer.innerHTML = ''; } return true; } ret = this.renderit(oDivControls /*ID_GLOBAL_CONTROLS_DIV*/); return ret; } } // End Page // --- Wizard things --- this.Wizard = new function Wizard() { this._render = function _render(wizardId, oCfg, argArray){ var ret = false; var oButtonsId = new Array(); var oButtons = new Array(); var oWizard = gWizards[wizardId]; var currentStepIndex = gWizardStepIndex; var oSteps = oWizard.steps; var displayStepsId = "wizard-steps"; if(typeof(currentStepIndex)=='undefined') currentStepIndex = 1; var oCurrentStep = oSteps[currentStepIndex]; msg("Render.Wizard.Contact("+wizardId+"), currentStepIndex="+currentStepIndex); function renderSteps(newStep) { //var oButtons = []; var s=0; var stepId = "eStepButton"+s; if(typeof(newStep)=='undefined') newStep = 1; msg('renderSteps: '+s+', '+stepId+' :: '+newStep); oButtonsId[stepId] = s; // A Back button oButtons[s] = new YAHOO.widget.Button({ id: stepId, type: "radio", label: "<", disabled: true, title: "Go back a Step" }); // Each step for(s++; s<=oSteps.length; s++) { stepId = "eStepButton"+s; msg('renderSteps: '+s+', '+stepId); oButtonsId[stepId] = s; oButtons[s] = new YAHOO.widget.Button({ id: stepId, type: "radio", label: "Step " + s, title: "This is Step " + s }); //YAHOO.util.Event.addListener(stepId, 'click', setStep); } // A Forward button stepId = "eStepButton"+s; msg('renderSteps: '+s+', '+stepId); oButtonsId[stepId] = s; oButtons[s] = new YAHOO.widget.Button({ id: stepId, type: "radio", label: ">", title: "Go forward a Step" }); for(s=0; s<=oSteps.length+1; s++) { stepId = "eStepButton"+s; msg('adding listener to'+stepId); //this.oButtons[s].addListener('click', this.setStep, this); YAHOO.util.Event.addListener(stepId, 'click', handleStepClick); }; var oButtonGroup = new YAHOO.widget.ButtonGroup(displayStepsId, { name: 'currentStep', value: currentStepIndex, checkedButton: oButtons[newStep] }); oButtonGroup.addButtons(oButtons); //oButtonGroup.addListener('click', this.setStep, this); //elCenterTop = document.getElementById('centerTop'); //elCenterTop.appendChild(oButtonGroup); //this.iCurrentStep = newStep; msg("Done step rendering"); } function handleStepClick(e, obj){ var oButtonTarget = YAHOO.util.Event.getTarget(e, 1); var oTarget = YAHOO.util.Dom.getAncestorByClassName(oButtonTarget, 'yui-button'); msg('handleStepClick: '+oTarget.id+', type '+oTarget.type+', node '+oTarget.nodeName+', newValue '+oTarget.newValue); var newStep; var clickedStep = oButtonsId[oTarget.id]; if (typeof(clickedStep) == 'undefined') { newStep = currentStepIndex; } else { if (clickedStep == 0) newStep = Math.max(currentStepIndex - 1, 1); else if (clickedStep == oSteps.length + 1) newStep = Math.min(currentStepIndex + 1, oSteps.length); else newStep = clickedStep; } msg(oTarget.id + ',' + oSteps.length + ', ' + oButtonsId[oTarget.id] + ':' + currentStepIndex + ',' + newStep); setToStep(newStep); } function setActiveButtons(){ //msg('setToStep: ('+obj.iCurrentStep+')'+newStep); msg('setActiveButtons()'); // Get the max step permitted from the data supplied so far for(s=1; s 1) disabled = false; else disabled = true; oButtons[0].set('disabled', disabled); for (var s = 1; s <= oSteps.length; s++) { var id = "eStepButton" + s; id = oButtons[s].get('id'); //alert(s + ',' + id); var checked = (s == currentStepIndex ? true : false); var disabled = (s > dataStep ? true : false); msg('setActiveButtons: setting buttons - step'+s+' checked='+checked); oButtons[s].set('checked', checked); oButtons[s].set('disabled', disabled); //oButtons[s].set('title', "sss " + s, true); } if (currentStepIndex < dataStep && currentStepIndex < oSteps.length) disabled = false; else disabled = true; oButtons[s].set('disabled', disabled); msg('Updated button status'); } function changeCallback(){ // A callback function msg('MVRZ.util.steps:: changeCallback()'); setActiveButtons(); } function setToStep(newStep){ if(typeof(newStep)=='undefined') newStep = currentStepIndex; if(typeof(newStep)=='undefined') newStep = 1; //msg('setToStep: ('+obj.iCurrentStep+')'+newStep); msg('setToStep: '+newStep); // Render the right content msg('setToStep: setting content ('+displayStepsId+') '); if(typeof(gWizardStepIndex)=='undefined' || currentStepIndex != newStep) { //this.oSteps[newStep].obj.render(this.elContent, this.oSteps[newStep].idValue, this.oSteps[newStep].displayType, this.oSteps[newStep].sIntroHtml, this ); var stepIndex = Math.min(oSteps.length-1, Math.max(0, newStep-1)); msg("Rendering for step index="+stepIndex); if(typeof(oSteps[stepIndex].contentId)!='undefined') { msg('setToStep: '+newStep+' calling contentList function '+gWizardContentId+', contentId='+oSteps[stepIndex].contentId); var oContent = document.getElementById(gWizardContentId); oContent.innerHTML = ""; //Render.Content[oSteps[stepIndex].contentId](oContent, null, oSteps[stepIndex].argArray); gContent[oSteps[stepIndex].contentId].fnRender(oContent, null, oSteps[stepIndex].argArray); } else { msg('setToStep: '+newStep+' no contentID set '); } } else { msg('setToStep: '+newStep+' same step as before '); } // Clear any feedback MVRZ.Render.Feedback.Clear(); currentStepIndex = newStep; setActiveButtons(); msg(newStep + ' - ' + oSteps.length); } msg("Render.Wizard.Contact("+wizardId+"), about to start rendering"); // --- Start rendering var oWizardCfg = { visible:false, zIndex:4, width: (gViewportWidth*0.9) + "px", height: (gViewportHeight*0.9) + "px", effect:{effect:YAHOO.widget.ContainerEffect.FADE,duration:0.25}, draggable: false, modal: true, autoscroll: true, fixedcenter: true, constraintoviewport: true } var contentId = oCurrentStep.contentId; msg("Render.Wizard.Contact("+wizardId+"), contentId="+contentId); var oContent = gContent[contentId]; var sIntroHtml = ""; if(typeof(oCfg.introHtml)!='undefined') sIntroHtml = oCfg.introHtml; var sWizardLayout = '
' + '
' + '
' +'
' +'
'+sIntroHtml+'
' +'
' +'
' +'
'; gFeedbackDiv = ID_WIZARD_FEEDBACK_DIV; var sTitle = "Wizard"; if(typeof(oCfg.title)!='undefined') sTitle = oCfg.title + " - " + sTitle; msg("Render.Wizard.Contact("+wizardId+"), about to create panel"); // Create a Wizard panel document.getElementById("panel-wizard").innerHTML = ''; var oPanel = new YAHOO.widget.Panel("panel-wizard", oWizardCfg); oPanel.setHeader(sTitle); oPanel.setBody(sWizardLayout); oPanel.setFooter("What should I put in this footer?"); oPanel.render(); oPanel.hideEvent.subscribe(function() { var oContent = document.getElementById(gWizardContentId); oContent.innerHTML = ""; // Wipe clean so that id's don't clash }); msg("Render.Wizard.Contact("+wizardId+"), calling renderSteps()"); // Render the content into the panel //var oContent = document.getElementById(gWizardContentId); //oContent.innerHTML = ""; // Render the steps renderSteps(); // Render the content setToStep(); oPanel.show(); //alert("About to call render"); //Render.Content[contentId](oContent, '', argArray); ret = true; return ret; } this._initStep = function _initStep(oElAppendTo, updatedPaneId, argArray) { msg("Render.Wizard._initStep()"); var oText = document.createTextNode("Please answer the questions below to direct the wizard steps."); var oP = document.createElement("p"); oP.appendChild(oText); oElAppendTo.appendChild(oP); //MY[DATASET_WIZARD].render(oElAppendTo); if (typeof(argArray) != 'object') argArray = new Object(); msg("Calling Render.Content._Dataset()"); return MVRZ.Render.Content._Dataset(DATASET_WIZARD, oElAppendTo, updatedPaneId, argArray); } this.Contact = function Contact(oElAppendTo, updatedPaneId, argArray) { msg("Render.Wizard.Contact()"); var oCfg = { title: "Contact", introHtml: "Contact Intro" } return MVRZ.Render.Wizard._render(WIZARD_CONTACT, oCfg, argArray); } this.Property = function Property(oElAppendTo, updatedPaneId, argArray) { var oCfg = { title: "Property", introHtml: "Property Intro" } // Set up the inputs required for this wizard with (MY[DATASET_WIZARD].inputs) { fields['numProperties'] = new s('numProperties', INPUT_TYPE_NUMBER, "Number of Properties", "Enter the number of properties that you'd like to set up", true); fields['hasHomeawayConnect'] = new s('hasHomeawayConnect', INPUT_TYPE_CHECKBOX, "Do you have an existing HomeAwayConnect account?", "Check this box if you have an existing homeawayconnect.com account. If you do, then we can set up synchronization to/from this.", true); } this.initStep = function initStep(oElAppendTo, updatedPaneId, argArray) { msg("Render.Wizard.PropertyinitStep()"); var oText = document.createTextNode("Please answer the questions below to direct the wizard."); var oP = document.createElement("p"); oP.appendChild(oText); oElAppendTo.appendChild(oP); } return MVRZ.Render.Wizard._render(WIZARD_PROPERTY, oCfg, argArray); } } this.Feedback = new function Feedback() { this._render = function _render(sText, type, append) { //popupInfo("_render "+sText); var el; if (typeof(gFeedbackDiv) != 'undefined' && gFeedbackDiv.length > 0) { el = document.getElementById(gFeedbackDiv); if (!el) { msg("No feedback div at: "+gFeedbackDiv); el = document.getElementById(ID_GLOBAL_FEEDBACK_DIV); } } else { el = document.getElementById(ID_GLOBAL_FEEDBACK_DIV); } if (!el) { //popupInfo("No feedback div at: "+ID_GLOBAL_FEEDBACK_DIV); return; } var oText = document.createElement("span"); //popupInfo("_render to "+el.id); switch(type) { case(NOTIFY_TYPE_ERROR): oText.className = "error"; break; case(NOTIFY_TYPE_WARNING): oText.className = "warning"; break; case(NOTIFY_TYPE_INFO): default: oText.className = "info"; break; } if(typeof(append)=='undefined' || append == false) { el.innerHTML = ''; } if (sText.length > 0) { //popupInfo("_render, adding to "+el.id); oText.innerHTML = sText; el.appendChild(oText); } } this.Info = function Info(sText, append) { MVRZ.Render.Feedback._render(sText, NOTIFY_TYPE_INFO, append); } this.Err = function Err(sText, append) { MVRZ.Render.Feedback._render(sText, NOTIFY_TYPE_ERROR, append); } this.Warn = function Warn(sText, append) { MVRZ.Render.Feedback._render(sText, NOTIFY_TYPE_WARNING, append); } this.Clear = function Clear(type) { MVRZ.Render.Feedback._render('', type); } } } // End Render