var Dom = YAHOO.util.Dom; var Event = YAHOO.util.Event; var DDM = YAHOO.util.DragDropMgr; var MY = new Object(); // Stores classes MY.fnInit = new Object(); // defaults MY.defaults = new Object(); // defaults MY.defaults.selectStyle = {width:'auto', margin:'5px auto'}; MY.defaults.textareaStyle = {width:'auto', margin:'5px auto'}; MY.fnInit[DATASET_USER_SMTP_LOOKUP] = function(argArray) { this.noFirstIfZero = true; this.fnInitBase = MY.fnInit[DATASET_USER_SMTP]; return this.fnInitBase(argArray); } MY.fnInit[DATASET_HISTORY] = function initHistory(argArray) { this.getSummary = function getSummary(elLiner, oRecord, oColumn, oData){ var oDataset = MY[DATASET_HISTORY]; var val = "?"; msg("getSummary(,"+oRecord+","+oColumn+","+oData+"):"+oDataset.datasetName); if(typeof(oRecord)!='undefined' && oRecord != null) { var recordIndex = oRecord.getData('ID'); if(recordIndex>=0) { val = oDataset.get(recordIndex, '_summary_'); } var emailID = oDataset.get(recordIndex, 'emailID'); var requestID = oDataset.get(recordIndex, 'requestID'); var statusID = oDataset.get(recordIndex, 'statusID'); var src = IMAGE_UNKNOWN; if(typeof(requestID)!='undefined' && requestID>0 && statusID==REQUEST_STATUS_QUOTED) { src = IMAGE_REQUEST; val = 'Request - ' + val; // Add any quotes var quotes = oDataset.get(recordIndex, 'quotes'); var qContent = ''; if(typeof(quotes)!='undefined' && quotes.length) { var qContentArray = new Array(); for(var q in quotes) { var quoteSummary = MY[DATASET_QUOTES].getSummary(quotes[q]); //var quoteSummary = quotes[q]['_summary_']; qContentArray.push(quoteSummary); } var sep = ""; val += "
" + sep + qContentArray.join(sep) + "
"; } } else { //if(typeof(emailID)!='undefined' && emailID>0) { //} var isFrom = oDataset.get(recordIndex, 'isFrom'); if(isFrom==0) src = IMAGE_EMAIL_TO; else src = IMAGE_EMAIL_FROM; } } if(typeof(elLiner)=='object' && elLiner!=null) { //elLiner.innerHTML = getContentWithMore(val); elLiner.innerHTML = "" + val; } else return val; } this.inputs.uniqueField = "email"; this.inputs.fields['ID'] = new s('ID', INPUT_TYPE_HIDDEN, "Email"); this.inputs.fields['ID'].isHidden = true; this.inputs.fields['submitTimestamp'] = new s('submitTimestamp', INPUT_TYPE_TIMESTAMP, "When"); this.inputs.fields['submitTimestamp'].formatter = MVRZ.util.formatter.DataTable.timestampRecent; this.inputs.fields['submitTimestamp'].readonly = true; this.inputs.fields['_summary_'] = new s('summary', INPUT_TYPE_TEXT, "Summary"); this.inputs.fields['_summary_'].readonly = true; this.inputs.fields['_summary_'].notOnServer = true; this.inputs.fields['summary'] = new s('summary', this.getSummary, "Summary", "", false, v.isAlpha); this.inputs.fields['summary'].noEditRender = true; this.inputs.fields['summary'].readonly = true; this.inputs.fields['summary'].formatter = this.getSummary; this.inputs.fields['summary'].sortable = false; this.inputs.fields['summary'].notOnServer = true; this.viewList = ['ID',"submitTimestamp", "summary"]; } var gReservationCounter = 0; MY.fnInit[DATASET_ORDER] = function initOrder(){ msg('fnInit:'+this.datasetName); this.renderSelectOption = function renderSelectOption(datasetData, datasetRowIndex) { var name = ''; var travelerId = datasetData[datasetRowIndex]['travelerID']; var propertyId = datasetData[datasetRowIndex]['propertyID']; //popupInfo("datasetRowIndex="+datasetRowIndex+", travelerId="+travelerId+", propertyId="+propertyId); var propertyName = MY[DATASET_PROPERTY].get(propertyId, 'name', "ID"); if(typeof(MY[DATASET_TRAVELERCONTACT])!='undefined') { var name = MY[DATASET_TRAVELERCONTACT].getFullName(travelerId); } if(name.length) name = " - " + name; var ret = propertyName + name + ' :: ' + datasetData[datasetRowIndex]['arrivalDate'] + ' - ' + datasetData[datasetRowIndex]['departureDate'] + ' [' + datasetData[datasetRowIndex]['ID'] + ']'; //var ret = datasetData[datasetRowIndex]['arrivalDate'] + ' - ' + datasetData[datasetRowIndex]['departureDate'] + ' [' + datasetData[datasetRowIndex]['ID'] + ']'; return ret; } // Set up the inputs this.inputs.forDisplay = this.forDisplay; this.inputs.uniqueField = "ID"; this.inputs.whenIdNotSet = INPUT_WHENIDNOTSET_PICKFIRST; this.inputs.selectField = new s(this.datasetName+'ID', INPUT_TYPE_SELECT, "", "ID", true, null, null, this); this.inputs.selectField.styleWrapper = MY.defaults.selectStyle; this.inputs.selectOptionLabelField = this.renderSelectOption; var nowDate = new Date(); this.inputs.selectField.selectConfig = new Object(); ////this.inputs.selectField.selectConfig['matchArray'] = [{eval: "(MVRZ.util.formatter._getDatabaseDate(oData[dataIndex]['departureDate']))!=null && MVRZ.util.formatter._getDatabaseDate(oData[dataIndex]['departureDate']).getTime()>="+nowDate.getTime()}]; this.inputs.selectField.selectConfig.fnSkip = function(oDatasetEntry){ var skip = true; if(typeof(oDatasetEntry)=='undefined') return skip; var d = MVRZ.util.parser.date(oDatasetEntry['departureDate']); if(d != null && d.getTime() >= gNowDate.getTime()) skip = false; return skip; } this.inputs.fields['ID'] = new s('ID', INPUT_TYPE_TEXT, "ID"); this.inputs.fields['ID'].readonly = true; this.inputs.fields['isCancelled'] = new s('isCancelled', INPUT_TYPE_CHECKBOX, "Cancelled?", "Check this to cancel the reservation.", false); this.inputs.fields['propertyID'] = new s('propertyID', INPUT_TYPE_SELECT, "Property", "Choose the property that this reservation is for.", true, null, null, MY[DATASET_PROPERTY]); this.inputs.fields['statusID'] = new s('statusID', INPUT_TYPE_SELECT, "Status", "Select the status for this Reservation.", true, null, null, MY[DATASET_STATUS]); this.inputs.fields['orderDateTime'] = new s('orderDateTime', INPUT_TYPE_DATETIME, "Reserved On", "The day/time that this reservation was made (or loaded from the HomeAwayConnect calendar if using that as your up-to-date calendar).", false,'','','','','',MVRZ.util.formatter.datetime.unformat()); this.inputs.fields['orderDateTime'].sortable = true; this.inputs.fields['arrivalDate'] = new s('arrivalDate', INPUT_TYPE_DATE, "Arrival Date", "The day that the guest arrives", true); this.inputs.fields['arrivalDate'].sortable = true; this.inputs.fields['checkinTime'] = new s('checkinTime', INPUT_TYPE_TIME, "Check-in Time", "The time that the property is available from on the Arrival Day", true); this.inputs.fields['departureDate'] = new s('departureDate', INPUT_TYPE_DATE, "Departure Date", "The day that the guest departs", true); this.inputs.fields['departureDate'].sortable = true; this.inputs.fields['checkoutTime'] = new s('checkoutTime', INPUT_TYPE_TIME, "Check-out Time", "The time that the property is available to on the Departure Day", true); this.inputs.fields['sourceID'] = new s('sourceID', INPUT_TYPE_SELECT, "Direct Referral", "Choose the direct source of this referral - the one that sent you the inquiry directly.", false, null, null, MY[DATASET_SOURCE]); this.inputs.fields['source2ID'] = new s('source2ID', INPUT_TYPE_SELECT, "Indirect Referral", "Choose the in-direct source of this referral - the place that the inquirer started at but ultimately submitted the request through the Direct source. This would typically happen if you have a link from an advertiser's site to your own website and the inquiry came through the request form on your own website. In that case, the Advertiser is the indirect source and your site is the direct one.", false, null, null, MY[DATASET_SOURCE]); this.inputs.fields['heatTo'] = new s('heatTo', INPUT_TYPE_TEMPERATURE, "Ideal Heating Temperature (F)", "This is the temperature that you'd like the home to be heated to when the heating system is on. Leave blank for default property value.", false); this.inputs.fields['coolTo'] = new s('coolTo', INPUT_TYPE_TEMPERATURE, "Ideal Cooling Temperature (F)", "This is the temperature that you'd like the home to be cooled to when the cooling system is on. Leave blank for default property value.", false); //this.renderView = renderView; ////this.renderForEdit = renderForEdit; //this.preload = preload; msg('Reservation('+this.datasetName+') - DONE'); } MY.fnInit[DATASET_QUOTES] = function initQuotes(){ msg('fnInit:'+this.datasetName); this.getOptionsSummary = function getOptionsSummary(idValue) { if(typeof(this.optionsSummary)=='undefined') this.optionsSummary = new Array(); if(typeof(idValue)=='undefined') idValue = this.getDatasetId(); if(typeof(idValue)!='undefined') { if(typeof(idValue)=='object') { var optionsSummary = idValue['_options_']; } else { var datasetRowIndex = this.getDatasetRowIndex(idValue); var optionsSummary = MY[DATASET_QUOTEOPTIONS].getOptionsSummary(datasetRowIndex); this.optionsSummary[datasetRowIndex] = optionsSummary; } } return optionsSummary; } this.getSummary = function getSummary(elLiner, oRecord, oColumn, oData) { var oDataset = MY[DATASET_QUOTES]; msg("getSummary(,"+oRecord+","+oColumn+","+oData+"):"+oDataset.datasetName); var idValue, val = ''; var idField = oDataset.getUniqueField(); var isValid; if(isElement(elLiner)) { // Usually a table cell if(typeof(oRecord)!='undefined' && oRecord != null) { idValue = oRecord.getData(idField); } isValid = typeof(idValue)!='undefined' && idValue != null && idValue>=0 && MVRZ.util.validation.datasetIsValid(oDataset.datasetName, idValue); } else { // Assume recordID is in eLiner & possibly the array of value in oRecord idValue = elLiner; isValid = typeof(idValue) == 'object'; } if(isValid) { var arrivalDate = oDataset.get(idValue, "arrivalDate", idField); var departureDate = oDataset.get(idValue, "departureDate", idField); var nights = oDataset.get(idValue, "nights", idField); var rentTaxableAmount = oDataset.get(idValue, "rentTaxableAmount", idField) || 0; var rentNontaxableAmount = oDataset.get(idValue, "rentNontaxableAmount", idField) || 0; var rentTax = oDataset.get(idValue, "rentTax", idField) || 0; var discountAmount = oDataset.get(idValue, "discountAmount", idField) || 0; var discountReason = oDataset.get(idValue, "discountReason", idField); var surchargeAmount = oDataset.get(idValue, "surchargeAmount", idField) || 0; var surchargeReason = oDataset.get(idValue, "surchargeReason", idField); var gapBefore = oDataset.get(idValue, "gapBefore", idField); var gapAfter = oDataset.get(idValue, "gapAfter", idField); var quoteTypeID = oDataset.get(idValue, "quoteTypeID", idField); if(typeof(quoteTypeID)=='undefined' || quoteTypeID.length==0) quoteTypeID = 'CUST'; var isAvailable = oDataset.get(idValue, "isAvailable", idField); if(typeof(isAvailable)=='undefined') isAvailable = 1; var prePendl1 = ''; var propertyName = ''; if(MY[DATASET_PROPERTY].rows()>1) { var propertyId = oDataset.get(idValue, "propertyID", idField); propertyName = MY[DATASET_PROPERTY].get(propertyId, 'name', idField) + ' '; //prePendl1 = propertyName + "
"; } // Options var optionsSummary = oDataset.getOptionsSummary(idValue); //var optionsSummary = MY[DATASET_QUOTEOPTIONS].getOptionsSummary(recordIndex); var optionsAmount = optionsSummary.amount || 0; var optionsTax = optionsSummary.tax || 0; var optionsTotal = optionsSummary.total || 0; var optionsList = ''; if(typeof(optionsSummary.list)!='undefined' && optionsSummary.list instanceof Array) optionsList = optionsSummary.list.join(','); //if(typeof(MY[DATASET_QUOTES].optionsSummary)=='undefined') MY[DATASET_QUOTES].optionsSummary = new Array(); //MY[DATASET_QUOTES].optionsSummary[recordIndex] = optionsSummary; var rentTaxableAmountFormatted = MVRZ.util.formatter.currency.format(rentTaxableAmount); var rentNontaxableAmountFormatted = MVRZ.util.formatter.currency.format(rentNontaxableAmount); var rentTaxFormatted = MVRZ.util.formatter.currency.format(rentTax); var discountAmountFormatted = MVRZ.util.formatter.currency.format(discountAmount); var surchargeAmountFormatted = MVRZ.util.formatter.currency.format(surchargeAmount); var optionsAmountFormatted = MVRZ.util.formatter.currency.format(optionsAmount); var optionsTotalFormatted = MVRZ.util.formatter.currency.format(optionsTotal); var rentTotal = parseFloat(rentTaxableAmount) + parseFloat(rentNontaxableAmount); var rentTotalFormatted = MVRZ.util.formatter.currency.format(rentTotal); var total = parseFloat(rentTaxableAmount) + parseFloat(rentNontaxableAmount) - parseFloat(discountAmount) + parseFloat(surchargeAmount) + parseFloat(rentTax) + parseFloat(optionsTotal); var totalFormatted = MVRZ.util.formatter.currency.format(total); var totalTax = parseFloat(rentTax) + parseFloat(optionsTax); var totalTaxFormatted = MVRZ.util.formatter.currency.format(totalTax); var rateStr = totalFormatted + " (" + rentTotalFormatted + "-" + discountAmountFormatted + "+" + surchargeAmountFormatted + "+" + optionsAmountFormatted + "+" + totalTaxFormatted + ")"; if(typeof(gapAfter)!='undefined' && gapAfter>99) gapAfter = "99+"; if(typeof(gapBefore!='undefined') && gapBefore>99) gapBefore = "+99"; var gaps = ""; if(typeof(gapBefore)!='undefined' && typeof(gapBefore)!='undefined') gaps = " <" + gapBefore + "|" + gapAfter + ">"; // Construct the summary var dateStr = MVRZ.util.formatter.date.format(arrivalDate) + " > " + MVRZ.util.formatter.date.format(departureDate) +" (" + nights + ")"; /* var imgSrc; switch(quoteTypeID) { case('RQST'): imgSrc = '/images/buttons/play.png'; break; case('ALBF'): imgSrc = '/images/buttons/rewind.png'; break; case('ALAF'): imgSrc = '/images/buttons/fast_forward.png'; break; case('GPBF'): imgSrc = '/images/buttons/skip_backward.png'; break; case('GPAF'): imgSrc = '/images/buttons/skip_forward.png'; break; default: imgSrc = ''; } */ //var availableText = ''; //if(!isAvailable) availableText = " UNAVAILABLE"; val = "
 
"; val += "

Quote - " + propertyName + " " + quoteTypeID + "" + gaps + "

"; val += "

" + dateStr + "

"; val += "

" + rateStr + "

"; if(optionsList.length) val += "

" + optionsList + "

"; val += "
"; } else { if(isValid) val = "?" else val = "Quote fields are not completed"; } if(val.length==0) val = "?"; msg("getFullName() returning " + val); if(isElement(elLiner)) { elLiner.innerHTML = getContentWithMore(val); } else return val; } this.getIsIncludedInput = function getIsIncludedInput(elLiner, oRecord, oColumn, oData) { var oDataset = MY[DATASET_QUOTES]; msg("getIsIncludedInput(,"+oRecord+","+oColumn+","+oData+"):"+oDataset.datasetName); var idValue, oVal; var idField = oDataset.getUniqueField(); var isValid; if(isElement(elLiner)) { // Usually a table cell if(typeof(oRecord)!='undefined' && oRecord != null) { idValue = oRecord.getData(idField); } isValid = typeof(idValue)!='undefined' && idValue != null && idValue>=0 && MVRZ.util.validation.datasetIsValid(oDataset.datasetName, idValue); } else { // Assume recordID is in eLiner & possibly the array of value in oRecord idValue = elLiner; isValid = typeof(idValue) == 'object'; } if(isValid) { var input = "isIncluded"; var dataValue = oDataset.get(idValue, "isIncluded", idField); var isAvailable = oDataset.get(idValue, "isAvailable", idField); if(typeof(isAvailable)=='undefined') isAvailable = 1; var oInput = oDataset.inputs.fields['isIncluded']; var datasetRowIndex = oDataset.getDatasetRowIndex(idValue); var id = MVRZ.util.encodeInputId(oDataset.datasetName, datasetRowIndex, idValue, input); oVal = MVRZ.util.render.input(oInput, id, dataValue, oDataset, false, false, idValue); } else { oVal = document.createElement('em'); oVal.InnerHTML = "NO"; } if(isElement(elLiner)) { elLiner.appendChild(oVal); } else return oVal; } this.preRender = function preRender(idValue, elContent) { return true; // Create dummy ID numbers for the quotes var oDataset = MY[DATASET_QUOTES]; if(typeof(oDataset.datasetData)!='undefined' && oDataset.datasetData.length>0) { for(var i in oDataset.datasetData) { //oDataset.datasetData[i][oDataset.inputs.uniqueField] = -( parseInt(i) + 1 ); oDataset.datasetData[i][oDataset.inputs.uniqueField] = parseInt(i) + 1; } } } // General stuff this.noSave = true; // Don't save to the server by default this.emptyNotice = "No quotes for this request"; this.loadingNotice = "Getting quotes..."; // Set up the inputs this.inputs.forDisplay = this.forDisplay; this.inputs.uniqueField = "ID"; this.inputs.whenIdNotSet = INPUT_WHENIDNOTSET_PICKFIRST; /* this.inputs.fields['_notes_'] = new s('notes', INPUT_TYPE_TEXTAREA, "Quotation Notes", "Notes about what this quote comprises."); this.inputs.fields['_notes_'].readonly = true; this.inputs.fields['_notes_'].formatter = MVRZ.util.formatter.html.format; */ this.inputs.isDisabled = function isDisabled(idValue) { var isAvailable = MY[DATASET_QUOTES].get(idValue, 'isAvailable', MY[DATASET_QUOTES].getUniqueField()); if(typeof(isAvailable)=='undefined' || isAvailable!=0) return false; return true; } this.inputs.fields['ID'] = new s('ID', INPUT_TYPE_TEXT, "ID"); this.inputs.fields['ID'].readonly = true; this.inputs.fields['ID'].isHidden = true; this.inputs.fields['requestID'] = new s('requestID', INPUT_TYPE_NUMBER, "RequestID"); this.inputs.fields['requestID'].readonly = true; this.inputs.fields['requestID'].isHidden = true; this.inputs.fields['isIncluded'] = new s('isIncluded', INPUT_TYPE_CHECKBOX, "Include?"); //this.inputs.fields['isIncluded'].formatter = this.getIsIncludedInput; this.inputs.fields['quoteTypeID'] = new s('quoteTypeID', INPUT_TYPE_TEXT, "Type", "The type of quote: