',
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