var internalServerError = 'Internal Server Error. Please try again in a moment, or contact Customer Service.'; var closeBtnLabel = 'Close'; var updateBtnLabel = 'Update'; var carrierComparisonLabel = 'Shipping Carrier Comparison'; var carriersLabel = 'Carriers'; var sahLabel = 'Shipping & Handling'; var insuranceLabel = 'Insurance'; var totalLabel = 'Total'; var requiredLabel = '(Required)'; var optionalLabel = '(Optional)'; var insuranceNotIncludedLabel = '(Insurance not included)'; var estTimeLabel = 'Est. Delivery Time'; var shippingCalcNote = 'Shipping calculations are based on weight, package size, zip code, shipped to and carrier rates.'; /** *

Takes care of handling the response locally before invoking the success/failure handlers

* * @param response the response data * @param request the request * @return */ function handleLocalResponse(response, request) { var argument = response.argument; //check response status var json = response.responseText; var objResponse = json.length ? eval("("+json+")") : {status : "error", errmsg : "Empty response"}; request.params = Ext.util.JSON.decode(request.params.request); //if ok call success handler for specific action else call handleFailure if(objResponse.status == 'ok') { argument.handlerSuccess.createDelegate(this, [objResponse, request.params])(); } else { argument.handlerFailure.createDelegate(this, [objResponse, request.params])(); } loadMask.hide(); } /** *

Takes care of firing an ajax call

* * @param url the url to send the request to * @param handleSuccess the success handler * @param handleFailure the failure handler * @param params the params to construct the request * @return */ function ajaxReq(url, handleSuccess, handleFailure, params) { loadMask = new Ext.LoadMask(Ext.getBody(), {msg:'Loading...'}); loadMask.show(); params = params || {}; Ext.Ajax.request({ method: 'POST', url: url, success: handleLocalResponse, failure: handleFailure, params: params, argument: { handlerSuccess: handleSuccess, handlerFailure: handleFailure } }); } /** *

Fires an ajax call to get all countries

* * @param cId companyId * @param successHandler handler to invoke on success * @param failureHandler handler to invoke on failure * @return */ function loadCountries(successHandler, failureHandler, cid) { ajaxReq( "/gatewayService?req_type=JSON", successHandler, failureHandler, { 'role':'buyer', 'verb':'getCountries', 'resp_type':'JSON', 'serv_id':'buyerCheckoutService', 'data': { 'companyId':cid ? cid : '' } } ); } function loadCountriesSuccessHandler(response) { var str = ''; if(!response.response || !response.response.countries){ /* * Display error message in case of any errors */ str += ''; str += ''; str += ''; str += ''; str += '
' + internalServerError + '
'; }else { var countryMap = response.response.countries[0]; var countriesList = document.getElementById('countriesList'); if(countryMap != null) { for(var i in countryMap) { if(typeof(countryMap[i]) != 'function') { var option = document.createElement("option"); option.value = countryMap[i]; option.text = i; try { countriesList.add(option, null); //Standard }catch(error) { countriesList.add(option); // IE only } } } } } str += '
'; str += '
'; str += '
'; str += ' ' + closeBtnLabel + ' '; str += '
'; str += '
'; str += '
'; document.getElementById('comparisonChart').innerHTML= str; } function loadCountriesFailureHandler(response) { var str = ''; Lotus.ErrorPod.dispRespMessage(response); str += '
'; str += '
'; str += '
'; str += ' ' + closeBtnLabel + ' '; str += '
'; str += '
'; str += '
'; document.getElementById('comparisonChart').innerHTML= str; } function loadShippingRates(cid, lid, zip, country, city, state, slid, tid, from, successHandler, failureHandler) { ajaxReq( "/gatewayService?req_type=JSON", successHandler, failureHandler, { 'role':'buyer', 'verb':'getRates', 'resp_type':'JSON', 'serv_id':'shippingCalcService', 'data': { 'companyId':cid, 'listingId':lid, 'zip':zip, 'country':country, 'city':city, 'state':state, 'slid':slid, 'tid':tid, 'from':from } } ); } function loadShippingRatesSuccessHandler(response) { var str = ''; if(!response.response || !response.response.carrierDetails ) { /* * If no carrier details are available, shipping is not offered to the location chosen by buyer. */ var msg = response.messages[0]['message']; str += ''; str += ''; str += ''; str += ''; str += '
' + msg + '
'; str += '
'; str += '
'; str += '
'; if(embedded != '') { str += ' ' + closeBtnLabel + ' '; }else { str += ' ' + closeBtnLabel + ' '; } str += '
'; str += '
'; str += '
'; document.getElementById('comparisonChart').innerHTML=str; return; } var carrierDetails = response.response.carrierDetails; var insuranceOffered = response.response.insurance[0]; var insuranceRequired = response.response.insurance[1]; for(var carrierGroup in carrierDetails) { if(typeof(carrierDetails[carrierGroup]) != 'function') { str += '
'; str += '
 
'; str += '
'; str += '
'; str += ''; str += '
'; str += '
 
'; str += '
' + carrierComparisonLabel + '
'; str += '
'; str += '
'; str += '
'; str += ''; str += ''; str += ''; str += ''; /* * Display Insurance and Total headers only if Insurance is Offered. */ if(insuranceOffered == 'Y') { var insuranceHdr = ''; str += insuranceHdr; totalHdr += ''; str += totalHdr; } str += ''; str += ''; str += ''; str += ''; }else { str += ''; str += ''; if(insuranceOffered == "Y") { var total = parseFloat(shippingAndHandlingCost); if(insuranceRequired == "Y"){ total = parseFloat(shippingAndHandlingCost) + parseFloat(insuranceCost); } str += ''; str += ''; } str += ''; str += ''; } } str += '
'; str += ' ' + carriersLabel + '' + sahLabel + '' + insuranceLabel; var totalHdr = '' + totalLabel; if(insuranceRequired == 'Y') { insuranceHdr += requiredLabel; }else { insuranceHdr += optionalLabel; totalHdr += insuranceNotIncludedLabel; } insuranceHdr += '' + estTimeLabel + '
'; } str += '' + displayName + '' + Ext.util.Format.usMoney(shippingAndHandlingCost) + '' + Ext.util.Format.usMoney(insuranceCost) + '' + Ext.util.Format.usMoney(total) + '' + estimatedTime + '
'; str += '
'; str += '
'; str += '
'; str += '
 
'; str += '
'; str += '

Note: ' + shippingCalcNote + '

'; } } str += '
'; str += '
'; str += '
'; if(embedded != '') { str += ' ' + updateBtnLabel + ' '; }else { str += ' ' + closeBtnLabel +' '; } str += '
'; str += '
'; str += '
'; document.getElementById('comparisonChart').innerHTML=str; } function loadShippingRatesFailureHandler(response) { Lotus.ErrorPod.dispRespMessage(response); var str = ''; str += '
'; str += '
'; str += '
'; if(embedded != '') { str += ' ' + closeBtnLabel + ' '; }else { str += ' ' + closeBtnLabel + ' '; } str += '
'; str += '
'; str += '
'; document.getElementById('comparisonChart').innerHTML=str; }