/* Salesforce.com AJAX Connector 51.0 Copyright, 1999, salesforce.com, inc. All Rights Reserved */ /** check if sforce is already created by some other lib*/ window.sforce = window.sforce || {}; sforce.internal = {}; /** StringBuffer */ sforce.StringBuffer = function() { this.buffer = []; this.append = function (s) { this.buffer.push(s); return this; }; this.toString = function() { return this.buffer.join(""); }; }; /** Base64Binary */ sforce.Base64Binary = function(text) { this.input = text; }; sforce.Base64Binary.prototype.keyStr = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; sforce.Base64Binary.prototype.toString = function() { var output = []; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; do { chr1 = this.input.charCodeAt(i++); chr2 = this.input.charCodeAt(i++); chr3 = this.input.charCodeAt(i++); enc1 = chr1 >> 2; enc2 = ((chr1 & 3) << 4) | (chr2 >> 4); enc3 = ((chr2 & 15) << 2) | (chr3 >> 6); enc4 = chr3 & 63; if (isNaN(chr2)) { enc3 = enc4 = 64; } else if (isNaN(chr3)) { enc4 = 64; } output.push(this.keyStr.charAt(enc1) + this.keyStr.charAt(enc2) + this.keyStr.charAt(enc3) + this.keyStr.charAt(enc4)); chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < this.input.length); return output.join(""); }; sforce.Base64Binary.prototype.decode = function(input) { var output = []; var chr1, chr2, chr3 = ""; var enc1, enc2, enc3, enc4 = ""; var i = 0; var base64test = /[^A-Za-z0-9\+\/\=]/g; if (base64test.exec(input)) { alert("There were invalid base64 characters in the input text.\n" + "Valid base64 characters are A-Z, a-z, 0-9, '+', '/', and '='\n" + "Expect errors in decoding."); } input = input.replace(/[^A-Za-z0-9\+\/\=]/g, ""); do { enc1 = this.keyStr.indexOf(input.charAt(i++)); enc2 = this.keyStr.indexOf(input.charAt(i++)); enc3 = this.keyStr.indexOf(input.charAt(i++)); enc4 = this.keyStr.indexOf(input.charAt(i++)); chr1 = (enc1 << 2) | (enc2 >> 4); chr2 = ((enc2 & 15) << 4) | (enc3 >> 2); chr3 = ((enc3 & 3) << 6) | enc4; output.push(String.fromCharCode(chr1)); if (enc3 != 64) { output.push(String.fromCharCode(chr2)); } if (enc4 != 64) { output.push(String.fromCharCode(chr3)); } chr1 = chr2 = chr3 = ""; enc1 = enc2 = enc3 = enc4 = ""; } while (i < input.length); return output.join(""); }; /**DateCodec.js*/ sforce.internal.dateToString = function(theDate) { var today = theDate; var year = today.getFullYear(); var month = today.getMonth() + 1; var day = today.getDate(); return year + "-" + month + "-" + day; }; sforce.internal.dateTimeToString = function(theDate) { var today = theDate; var year = today.getFullYear(); var month = today.getMonth() + 1; var day = today.getDate(); var hour = today.getHours(); var minute = today.getMinutes(); var second = today.getSeconds(); var offset = today.getTimezoneOffset(); var pm = (offset < 0) ? "+" : "-"; offset = Math.abs(offset); var hourdifference = offset / 60; var minutedifference = offset % 60; if (second <= 9) { second = "0" + second; } var milli = today.getMilliseconds(); if (milli !== 0) { milli = "." + milli; if (milli.length > 4) { milli = milli.substring(0, 4); } second = second + milli; } var timezone; if (offset === 0) { timezone = "Z"; } else { if (minutedifference < 10) { minutedifference = "0" + minutedifference; } if (hourdifference < 10) { hourdifference = "0" + hourdifference; } timezone = pm + hourdifference + ":" + minutedifference; } if (month <= 9) { month = "0" + month; } if (day <= 9) { day = "0" + day; } if (hour <= 9) { hour = "0" + hour; } if (minute <= 9) { minute = "0" + minute; } return year + "-" + month + "-" + day + "T" + hour + ":" + minute + ":" + second + timezone; }; sforce.internal.stringToDate = function(source) { var bc = false; if (source === null || source.length === 0) { throw "Unable to parse dateTime"; } if (source.charAt(0) == '+') { source = source.substring(1); } if (source.charAt(0) == '-') { source = source.substring(1); bc = true; } if (source.length != 10) { throw ("Unable to parse date, " + source + " length != 10"); } if (source.charAt(4) != '-' || source.charAt(7) != '-') { throw ("Unable to parse date"); } var year = source.substring(0, 4); var month = source.substring(5, 7); var day = source.substring(8, 10); var date = new Date(year, month-1, day, 0, 0, 0); date.setMilliseconds(0); return date; }; sforce.internal.stringToDateTime = function(source) { var bc = false; if (source === null || source.length === 0) { throw "Unable to parse dateTime"; } if (source.charAt(0) == '+') { source = source.substring(1); } if (source.charAt(0) == '-') { source = source.substring(1); bc = true; } if (source.length < 19) { throw ("Unable to parse dateTime"); } if (source.charAt(4) != '-' || source.charAt(7) != '-' || source.charAt(10) != 'T') { throw ("Unable to parse dateTime"); } if (source.charAt(13) != ':' || source.charAt(16) != ':') { throw ("Unable to parse dateTime"); } var year = source.substring(0, 4); var month = source.substring(5, 7); var day = source.substring(8, 10); var hour = source.substring(11, 13); var min = source.substring(14, 16); var sec = source.substring(17, 19); var date = new Date(year, month-1, day, hour, min, sec); var pos = 19; // parse optional milliseconds if (pos < source.length && source.charAt(pos) == '.') { var milliseconds = 0; var start = ++pos; while (pos < source.length && sforce.internal.isDigit(source.charAt(pos))) { pos++; } var decimal = source.substring(start, pos); if (decimal.length == 3) { milliseconds = decimal; } else if (decimal.length < 3) { milliseconds = (decimal + "000").substring(0, 3); } else { milliseconds = decimal.substring(0, 3); if (decimal.charAt(3) >= '5') { ++milliseconds; } } date.setMilliseconds(milliseconds); } var offset = date.getTimezoneOffset() * 60000; //offset in milli; // parse optional timezone if (pos + 5 < source.length && (source.charAt(pos) == '+' || (source.charAt(pos) == '-'))) { if (!sforce.internal.isDigit(source.charAt(pos + 1)) || !sforce.internal.isDigit(source.charAt(pos + 2)) || source.charAt(pos + 3) != ':' || !sforce.internal.isDigit(source.charAt(pos + 4)) || !sforce.internal.isDigit(source.charAt(pos + 5))) { throw "Unable to parse dateTime"; } var hours = (source.charAt(pos + 1) - '0') * 10 + source.charAt(pos + 2) - '0'; var mins = (source.charAt(pos + 4) - '0') * 10 + source.charAt(pos + 5) - '0'; var mseconds = (hours * 60 + mins) * 60 * 1000; // subtract milliseconds from current date to obtain GMT if (source.charAt(pos) == '+') { mseconds = -mseconds; } date = new Date(date.getTime() - offset + mseconds); pos += 6; } if (pos < source.length && source.charAt(pos) == 'Z') { pos++; date = new Date(date.getTime() - offset); } if (pos < source.length) { throw ("Unable to parse dateTime"); } return date; }; sforce.internal.isDigit = function (ch) { if (ch == '0' || ch == '1' || ch == '2' || ch == '3' || ch == '4' || ch == '5' || ch == '6' || ch == '7' || ch == '8' || ch == '9') { return true; } else { return false; } }; /** Xml */ sforce.Xml = function(name) { }; sforce.Xml.prototype.toXml = function (sobjectNs, name, writer) { writer.writeStartElement(name, sobjectNs); if (this._xsiType) { writer.writeXsiType(this._xsiType); } for (var f in this) { if ("_name" == f || "_xsiType" == f) { //skip } else { var val = this[f]; if (typeof val != "function") { // if (typeof val == "array") { if (Array.isArray(val)) { for (var i=0; i 0) { this.traceCallback(); } this.win.println(s, type); } else { sforce.debug.traceQueue.push({message: s, type: type}); setTimeout(sforce.debug.traceCallback, 1000); } }; this.traceCallback = function() { sforce.debug.findOutput(); if (sforce.debug.output === null) { setTimeout(sforce.debug.traceCallback, 1000); return; } for (var i=0; i/g, ">"); str = ""; this.println(str, "printxml"); }; this.log = function(str) { this.println(str, "print"); }; this.logApex = function(response) { var start = response.indexOf(""); var end = response.indexOf(""); if (start === -1) start = 0; else start = start + ''.length; if (end === -1) end = response.length; var msg = response.substring(start, end); this.println(msg, "printxml"); }; }; sforce.debug = new sforce.internal.Debug(); /** Transport */ sforce.internal._connections = []; sforce.internal.ConnectionHolder = function(connection, callback) { this.connection = connection; this.callback = callback; this.timedout = false; }; sforce.Transport = function(url) { this.url = url; this.connection = null; this.newConnection = function() { try { this.connection = new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { try { this.connection = new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) { this.connection = new XMLHttpRequest(); } } return this.connection; }; this.send = function (envelope, callback, async, timeout) { this.newConnection(); if (async) { this.connection.onreadystatechange = this.httpConnectionCallback; } var holder = new sforce.internal.ConnectionHolder(this.connection, callback); sforce.internal._connections.push(holder); this.connection.open("POST", this.url, async); this.connection.setRequestHeader("Content-Type", "text/xml; charset=UTF-8"); this.connection.setRequestHeader("SOAPAction", "\"\""); this.connection.setRequestHeader("Accept", "text/xml"); this.connection.setRequestHeader("X-SFDC-User-Agent", "SFAJAX 1.0"); this.connection.send(envelope); if (async && typeof(timeout) !== "undefined") { this.setTimeoutOn(holder, timeout); } if (!async) { this.httpConnectionCallback(); } }; this.setTimeoutOn = function (holder, timeout) { function abortConnection() { if (holder.connection.readyState !== 4) { holder.timedout = true; holder.connection.abort(); } } setTimeout(abortConnection, timeout); }; this.httpConnectionCallback = function () { for (var i = 0; i < sforce.internal._connections.length; i++) { var holder = sforce.internal._connections[i]; if (holder !== null) { if (holder.timedout) { sforce.internal._connections[i] = null; sforce.internal._connections.slice(i,1); holder.callback.httpCallback("Remote invocation timed out", false); } else if (holder.connection.readyState == 4) { sforce.internal._connections[i] = null; sforce.internal._connections.slice(i,1); var success = holder.connection.status == 200; if (sforce.debug.trace) { sforce.debug.log("Response : status - " + holder.connection.status); sforce.debug.logXml(holder.connection.responseText); } if (sforce.debug.apexTrace) { sforce.debug.logApex(holder.connection.responseText); } if (holder.connection.responseXML && holder.connection.responseXML.documentElement) { holder.callback.httpCallback(holder.connection.responseXML.documentElement, success); } else { holder.callback.httpCallback("Remote invocation failed, due to: " + holder.connection.responseText + " status code: ", holder.connection.status); } } } } }; }; /** XmlWriter */ sforce.XmlWriter = function() { this.buffer = new sforce.StringBuffer(); this.namespaces = {}; this.prefixCount = 0; this.writingStartElement = false; }; sforce.XmlWriter.prototype.writeStartElement = function(name, namesp, prefix) { if (this.writingStartElement) { this.buffer.append(">"); } this.buffer.append("<"); var newns = false; if (namesp) { if (!this.namespaces[namesp] && this.namespaces[namesp] !== "") { newns = true; } if (!prefix) { prefix = this.getPrefix(namesp); } if (prefix !== null && prefix !== "") { this.buffer.append(prefix); this.buffer.append(":"); } } this.buffer.append(name); if (newns === true) { this.writeNamespace(namesp, prefix); } this.writingStartElement = true; }; sforce.XmlWriter.prototype.writeEndElement = function(name, namesp) { if (this.writingStartElement) { this.buffer.append("/>"); } else { this.buffer.append(""); } this.writingStartElement = false; }; sforce.XmlWriter.prototype.writeNamespace = function(namesp, prefix) { if (prefix && "" !== prefix) { this.namespaces[namesp] = prefix; this.buffer.append(" "); this.buffer.append("xmlns:"); this.buffer.append(prefix); } else { this.namespaces[namesp] = ""; this.buffer.append(" "); this.buffer.append("xmlns"); } this.buffer.append("=\""); this.buffer.append(namesp); this.buffer.append("\""); }; sforce.XmlWriter.prototype.writeText = function(text) { if (this.writingStartElement) { this.buffer.append(">"); this.writingStartElement = false; } else { throw "Can only write text after a start element"; } if (typeof text == 'string') { text = text.replace(/&/g, '\&'); text = text.replace(//g, '>'); } this.buffer.append(text); }; sforce.XmlWriter.prototype.writeXsiType = function(xsiType) { this.writeNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi"); this.writeAttribute("xsi:type", xsiType); }; sforce.XmlWriter.prototype.writeAttribute = function(name, value) { this.buffer.append(" " + name + "=\"" + value + "\""); }; sforce.XmlWriter.prototype.getPrefix = function(namesp) { var prefix = this.namespaces[namesp]; //sforce.debug.log("--------"); //sforce.debug.log(namesp + ":" + (prefix === null ? "null":prefix) + ":"); if (!prefix && prefix !== "") { prefix = "ns" + this.prefixCount; this.prefixCount++; this.namespaces[namesp] = prefix; return prefix; } return prefix; }; sforce.XmlWriter.prototype.toString = function() { return this.buffer.toString(); }; /** soap writer*/ sforce.XmlWriter.prototype.soapNS = "http://schemas.xmlsoap.org/soap/envelope/"; sforce.XmlWriter.prototype.startEnvelope = function() { this.writeStartElement("Envelope", this.soapNS, "se"); }; sforce.XmlWriter.prototype.endEnvelope = function() { this.writeEndElement("Envelope", this.soapNS); }; sforce.XmlWriter.prototype.startHeader = function() { this.writeStartElement("Header", this.soapNS, "se"); }; sforce.XmlWriter.prototype.endHeader = function() { this.writeEndElement("Header", this.soapNS); }; sforce.XmlWriter.prototype.startBody = function() { this.writeStartElement("Body", this.soapNS, "se"); }; sforce.XmlWriter.prototype.endBody = function() { this.writeEndElement("Body", this.soapNS); }; sforce.XmlWriter.prototype.writeNameValueNode = function(name, value) { if (value === null) { this.writeStartElement(name); this.writeNamespace("http://www.w3.org/2001/XMLSchema-instance", "xsi"); this.writeAttribute("xsi:nill", "true"); this.writeEndElement(name); return; } if (value.toUTCString) { value = sforce.internal.dateTimeToString(value); } if (typeof value == "boolean") { // boolean 'false' values get joined in string buffer, // so convert to strings: value = value ? "true" : "false"; } if (value && value.join) { for (var i=0; i 0) { var st = stack.shift(); for (var child = st.node.firstChild; child !== null; child = child.nextSibling) { if (child.nodeType != 1) { continue; } var name = child.nodeName; var index = name.indexOf(":"); name = (index == -1) ? name : name.substring(index + 1); var value; var isNameValue = true; var sb = ""; for (var tc = child.firstChild; tc !== null; tc = tc.nextSibling) { if (tc.nodeType != 3) { isNameValue = false; break; } else { sb += tc.nodeValue; } } if (isNameValue) { if (child.getAttribute("xsi:nil") == "true") { value = null; } else { value = sb; } } else { value = new sforce.Xml(); stack.push({node: child, obj: value}); } if (!st.obj[name]) { st.obj[name] = value; } else { if (st.obj[name].push) { st.obj[name].push(value); } else { var old = st.obj[name]; if (name === "Id" && old === value) { //skip, special case for dup Id in sobject } else { st.obj[name] = []; st.obj[name].push(old); st.obj[name].push(value); } } } } } return top; }; /** SoapTransport */ sforce.SoapTransport = function() { this.connectionCallback = null; this.result = null; this.fault = null; this.isAsync = true; this.isArray = false; }; sforce.SoapTransport.prototype.onFailure = function(res, writer) { var error = "ERROR: ........... "; alert(error + res); this.result = null; }; sforce.SoapTransport.prototype.send = function(url, writer, isArray, connectionCallback) { this.isArray = isArray; var transport = new sforce.Transport(url); this.isAsync = connectionCallback ? true : false; if (this.isAsync) { this.connectionCallback = connectionCallback; transport.send(writer.toString(), this, this.isAsync, connectionCallback.timeout); } else { transport.send(writer.toString(), this, this.isAsync); if (this.fault !== null) { throw this.fault; } return this.result; } }; sforce.SoapTransport.prototype.httpCallback = function(response, success) { try { if (success === true) { var reader = new sforce.XmlReader(response); var envelope = reader.getEnvelope(); var body = reader.getBody(); var operation = reader.getFirstElement(body); if (operation === null) { throw "Unable to find operation response element"; } var resultArray = []; var children = operation.childNodes; for (var i = 0; i < children.length; i++) { if (children[i].nodeType != 1) { continue; } if (reader.isNameValueNode(children[i])) { resultArray.push(reader.getTextValue(children[i])); } else { resultArray.push(reader.toXmlObject(children[i])); } } if (this.isArray) { this.result = resultArray; } else { if (resultArray.length > 1) { throw "Found more than one response: " + resultArray; } this.result = resultArray[0]; } if (this.isAsync) { try { this.beforeCallback(); if (typeof this.connectionCallback == "function") { this.connectionCallback(this.result); } else { if (this.connectionCallback.onSuccess) { this.connectionCallback.onSuccess(this.result, this.connectionCallback.source); } else { throw "Unable to find onSuccess method in the callback object"; } } } finally { this.afterCallback(); } } } else { if (typeof(response.nodeName) !== "undefined") { var reader2 = new sforce.XmlReader(response); var envelope2 = reader2.getEnvelope(); var body2 = reader2.getBody(); var soapfaultEl = reader2.getFirstElement(body2); var soapfault = reader2.toXmlObject(soapfaultEl); this.sendFault(soapfault); } else { this.sendFault(response); } } } catch(fault) { this.sendFault(fault); } }; sforce.SoapTransport.prototype.sendFault = function(fault) { if (this.isAsync) { if (this.connectionCallback.onFailure) { try { this.beforeCallback(); this.connectionCallback.onFailure(fault, this.connectionCallback.source); } finally { this.afterCallback(); } } else { this.onFailure(fault); } } else { this.fault = fault; } }; sforce.SoapTransport.prototype.beforeCallback = function () {}; sforce.SoapTransport.prototype.afterCallback = function () {}; /** SObject */ sforce.SObject = function(type) { this.type = type; }; sforce.SObject.prototype = new sforce.Xml("sObjects"); /** LeadConvert */ sforce.LeadConvert = function() { }; sforce.LeadConvert.prototype = new sforce.Xml("leadConverts"); /** MergeRequest */ sforce.MergeRequest = function() { }; sforce.MergeRequest.prototype = new sforce.Xml("request"); /** DescribeSoqlListViewsRequest - see describeSoqlListViews() */ sforce.DescribeSoqlListViewsRequest = function() { }; sforce.DescribeSoqlListViewsRequest.prototype = new sforce.Xml("request"); /** DescribeSoqlListViewParams - see describeSoqlListViews() */ sforce.DescribeSoqlListViewParams = function() { }; sforce.DescribeSoqlListViewParams.prototype = new sforce.Xml("listViewParams"); /** DescribePicklistsParam - see describePicklists() */ sforce.DescribePicklistsParam = function() { }; sforce.DescribePicklistsParam.prototype = new sforce.Xml("picklistParams"); /** QuickAction */ sforce.QuickAction = function() { }; sforce.QuickAction.prototype = new sforce.Xml("quickActions"); /** Connection */ sforce.Connection = function() { this.sessionId = null; this.updateMru = null; this.allowFieldTruncation = null; this.disableFeedTracking = null; this.streamingEnabled = null; this.allOrNone = null; this.client = null; this.defaultNamespace = null; this.batchSize = null; this.loginScopeHeader = null; this.emailHeader = null; this.assignmentRuleHeader = null; this.duplicateRuleHeader = null; this.transferToUserId = null; this.debuggingHeader = null; this.serverUrl = (typeof window.UserContext != "undefined") ? UserContext.getUrl("/services/Soap/u/51.0") : "/services/Soap/u/51.0"; }; /** internal methods */ sforce.internal.Parameter = function (n, v, a) { this.name = n; this.value = v; this.isArray = a; }; sforce.Connection.prototype.sforceNs = "urn:partner.soap.sforce.com"; sforce.Connection.prototype.sobjectNs = "sobject.partner.soap.sforce.com"; sforce.Connection.prototype.writeOne = function (writer, name, value, sobjectNs) { if (value === null) { writer.writeNameValueNode(name, null); } else if (value.toXml) { value.toXml(sobjectNs, name, writer); } else { writer.writeNameValueNode(name, value); } }; sforce.Connection.prototype.init = function(sessionId, serverUrl) { this.sessionId = sessionId; this.serverUrl = serverUrl; }; sforce.Connection.prototype.login = function (username, password) { var arg1 = new sforce.internal.Parameter("username", username, false); var arg2 = new sforce.internal.Parameter("password", password, false); var result = this.invoke("login", [arg1, arg2], false, null); this.sessionId = result.sessionId; return result; }; sforce.Connection.prototype.describeSObject = function(type, callback) { var arg = new sforce.internal.Parameter("sObjectType", type, false); return this.invoke("describeSObject", [arg], false, callback); }; sforce.Connection.prototype.describeSObjects = function(types, callback) { var arg = new sforce.internal.Parameter("sObjectType", types, true); return this.invoke("describeSObjects", [arg], true, callback); }; sforce.Connection.prototype.describeSearchLayouts = function(type, callback) { var arg = new sforce.internal.Parameter("sObjectType", type, true); return this.invoke("describeSearchLayouts", [arg], true, callback); }; sforce.Connection.prototype.describeListViews = function(type, callback) { var arg = new sforce.internal.Parameter("sObjectType", type, true); return this.invoke("describeListViews", [arg], true, callback); }; sforce.Connection.prototype.describeSoqlListViews = function(name, type, callback) { // this interface is only for a single list // build up a request for the user - easier than making caller do it var rp = new sforce.DescribeSoqlListViewParams(); rp.developerNameOrId = name; rp.sobjectType = type; var describeRequest = new sforce.DescribeSoqlListViewsRequest(); describeRequest.listViewParams = [ rp ]; var arg1 = new sforce.internal.Parameter("request", describeRequest, false); return this.invoke("describeSoqlListViews", [arg1], false, callback); }; sforce.Connection.prototype.describeGlobal = function(callback) { return this.invoke("describeGlobal", [], false, callback); }; sforce.Connection.prototype.describeLayout = function(type, layoutName, recordTypes, callback) { var arg1 = new sforce.internal.Parameter("sObjectType", type, false); if (!layoutName) { layoutName = null; } var arg2 = new sforce.internal.Parameter("layoutName", layoutName, false); if (!recordTypes) { recordTypes = []; } var arg3 = new sforce.internal.Parameter("recordTypeIds", recordTypes, true); return this.invoke("describeLayout", [arg1, arg2, arg3], false, callback); }; sforce.Connection.prototype.describeAvailableQuickActions = function(parentType, callback) { var arg = new sforce.internal.Parameter("parentType", parentType, false); return this.invoke("describeAvailableQuickActions", [arg], true, callback); }; sforce.Connection.prototype.describeQuickActions = function(quickActionNames, callback) { var arg = new sforce.internal.Parameter("quickActionNames", quickActionNames, true); return this.invoke("describeQuickActions", [arg], true, callback); }; sforce.Connection.prototype.describeQuickActionsForRecordType = function(quickActionNames, recordTypeId, callback) { var arg = new sforce.internal.Parameter("quickActionNames", quickActionNames, true); var arg2 = new sforce.internal.Parameter("recordTypeId", recordTypeId, false); return this.invoke("describeQuickActionsForRecordType", [arg,arg2], true, callback); }; sforce.Connection.prototype.performQuickActions = function(quickActions, callback) { var arg = new sforce.internal.Parameter("quickActions", quickActions, true); return this.invoke("performQuickActions", [arg], true, callback); }; sforce.Connection.prototype.describeCompactLayouts = function(type, recordTypes, callback) { var arg = new sforce.internal.Parameter("sObjectType", type, false); if (!recordTypes) { recordTypes = []; } var arg2 = new sforce.internal.Parameter("recordTypeIds", recordTypes, true); return this.invoke("describeCompactLayouts", [arg, arg2], false, callback); }; sforce.Connection.prototype.describePathAssistants = function(type, picklistValue, recordTypes, callback) { var arg = new sforce.internal.Parameter("sObjectType", type, false); if (!picklistValue) { picklistValue = null; } var arg2 = new sforce.internal.Parameter("picklistValue", picklistValue, false); if (!recordTypes) { recordTypes = []; } var arg3 = new sforce.internal.Parameter("recordTypeIds", recordTypes, true); return this.invoke("describePathAssistants", [arg, arg2, arg3], false, callback); }; sforce.Connection.prototype.describePicklists = function(entityName, fieldNames, recordTypeId, callback) { var picklistParams = new sforce.DescribePicklistsParam(); picklistParams.entityName = entityName; picklistParams.fieldNames = fieldNames; picklistParams.recordTypeId = recordTypeId; var arg1 = new sforce.internal.Parameter("param", picklistParams, false); return this.invoke("describePicklists", [arg1], false, callback); }; sforce.Connection.prototype.describePrimaryCompactLayouts = function(sObjectTypes, callback) { var arg = new sforce.internal.Parameter("sObjectTypes", sObjectTypes, true); return this.invoke("describePrimaryCompactLayouts", [arg], true, callback); }; sforce.Connection.prototype.describeApprovalLayout = function(type, approvalProcessNames, callback) { var arg1 = new sforce.internal.Parameter("sObjectType", type, false); if (!approvalProcessNames) { approvalProcessNames = []; } var arg2 = new sforce.internal.Parameter("approvalProcessNames", approvalProcessNames, true); return this.invoke("describeApprovalLayout", [arg1, arg2], false, callback); }; sforce.Connection.prototype.describeSObjectListViews = function(type, recentlyViewed, callback) { var arg1 = new sforce.internal.Parameter("sObjectType", type, false); var arg2 = new sforce.internal.Parameter("recentlyViewed", recentlyViewed, false); var arg3 = new sforce.internal.Parameter("isSoqlCompatible", isSoqlCompatible, false); var arg4 = new sforce.internal.Parameter("limit", limit, false); var arg5 = new sforce.internal.Parameter("offset", offset, false); return this.invoke("describeSObjectListViews", [arg1, arg2, arg3, arg4, arg5], true, callback); }; sforce.Connection.prototype.describeTabs = function(callback) { return this.invoke("describeTabs", [], true, callback); }; sforce.Connection.prototype.describeAllTabs = function(callback) { return this.invoke("describeAllTabs", [], true, callback); }; sforce.Connection.prototype.describeAppMenu = function(appMenuType, networkId, callback) { var arg1 = new sforce.internal.Parameter("appMenuType", appMenuType, false); var arg2 = new sforce.internal.Parameter("networkId", networkId, false); return this.invoke("describeAppMenu", [arg1, arg2], true, callback); }; sforce.Connection.prototype.describeFlexiPages = function(flexipageDevName, callback) { var arg1 = new sforce.internal.Parameter("FlexiPage", flexipageDevName, false); return this.invoke("describeFlexiPages", [arg1], true, callback); }; sforce.Connection.prototype.describeTheme = function(callback) { return this.invoke("describeTheme", [], true, callback); }; sforce.Connection.prototype.describeGlobalTheme = function(callback) { return this.invoke("describeGlobalTheme", [], true, callback); }; sforce.Connection.prototype.describeSoftphoneLayout = function(callback) { return this.invoke("describeSoftphoneLayout", [], false, callback); }; sforce.Connection.prototype.describeMiniLayout = function (type, recordTypeIds, callback) { var arg1 = new sforce.internal.Parameter("sObjectType", type, false); var arg2 = new sforce.internal.Parameter("recordTypeIds", recordTypeIds, true); return this.invoke("describeMiniLayout", [arg1, arg2], false, callback); }; sforce.Connection.prototype.describeSearchScopeOrder = function(callback) { return this.invoke("describeSearchScopeOrder", [], true, callback); }; sforce.Connection.prototype.create = function (sobjects, callback) { var arg = new sforce.internal.Parameter("sObjects", sobjects, true); return this.invoke("create", [arg], true, callback); }; sforce.Connection.prototype.update = function (sobjects, callback) { var arg = new sforce.internal.Parameter("sObjects", sobjects, true); return this.invoke("update", [arg], true, callback); }; sforce.Connection.prototype.upsert = function (externalIDFieldName, sobjects, callback) { var arg1 = new sforce.internal.Parameter("externalIDFieldName", externalIDFieldName, false); var arg2 = new sforce.internal.Parameter("sObjects", sobjects, true); return this.invoke("upsert", [arg1, arg2], true, callback); }; sforce.Connection.prototype.deleteIds = function (ids, callback) { var arg = new sforce.internal.Parameter("ids", ids, true); return this.invoke("delete", [arg], true, callback); }; sforce.Connection.prototype.deleteByExample = function (sobjects, callback) { var arg = new sforce.internal.Parameter("sObjects", sobjects, true); return this.invoke("deleteByExample", [arg], true, callback); }; sforce.Connection.prototype.impersonateUser = function (ids, callback) { var arg = new sforce.internal.Parameter("ids", ids, true); return this.invoke("impersonateUser", [arg], true, callback); }; sforce.Connection.prototype.query = function(queryString, callback) { var arg = new sforce.internal.Parameter("queryString", queryString, false); return this.invoke("query", [arg], false, callback); }; sforce.Connection.prototype.queryAll = function(queryString, callback) { var arg = new sforce.internal.Parameter("queryString", queryString, false); return this.invoke("queryAll", [arg], false, callback); }; sforce.Connection.prototype.queryMore = function(queryLocator, callback) { var arg = new sforce.internal.Parameter("queryLocator", queryLocator, false); return this.invoke("queryMore", [arg], false, callback); }; sforce.Connection.prototype.retrieve = function(fieldList, sObjectType, ids, callback) { var arg1 = new sforce.internal.Parameter("fieldList", fieldList, false); var arg2 = new sforce.internal.Parameter("sObjectType", sObjectType, false); var arg3 = new sforce.internal.Parameter("ids", ids, true); return this.invoke("retrieve", [arg1, arg2, arg3], true, callback); }; sforce.Connection.prototype.getAccessInfo = function(callback) { return this.invoke("getAccessInfo", [], false, callback); }; sforce.Connection.prototype.getUserInfo = function(callback) { return this.invoke("getUserInfo", [], false, callback); }; sforce.Connection.prototype.resetPassword = function(userId, callback) { var arg1 = new sforce.internal.Parameter("userId", userId, false); return this.invoke("resetPassword", [arg1], false, callback); }; sforce.Connection.prototype.setPassword = function(userId, password, callback) { var arg1 = new sforce.internal.Parameter("userId", userId, false); var arg2 = new sforce.internal.Parameter("password", password, false); return this.invoke("setPassword", [arg1, arg2], false, callback); }; sforce.Connection.prototype.search = function(searchString, callback) { var arg1 = new sforce.internal.Parameter("searchString", searchString, false); return this.invoke("search", [arg1], false, callback); }; sforce.Connection.prototype.getDeleted = function(sObjectType, startDate, endDate, callback) { var arg1 = new sforce.internal.Parameter("sObjectType", sObjectType, false); var arg2 = new sforce.internal.Parameter("startDate", startDate, false); var arg3 = new sforce.internal.Parameter("endDate", endDate, false); return this.invoke("getDeleted", [arg1, arg2, arg3], false, callback); }; sforce.Connection.prototype.getUpdated = function(sObjectType, startDate, endDate, callback) { var arg1 = new sforce.internal.Parameter("sObjectType", sObjectType, false); var arg2 = new sforce.internal.Parameter("startDate", startDate, false); var arg3 = new sforce.internal.Parameter("endDate", endDate, false); return this.invoke("getUpdated", [arg1, arg2, arg3], false, callback); }; sforce.Connection.prototype.getServerTimestamp = function(callback) { return this.invoke("getServerTimestamp", [], false, callback); }; sforce.Connection.prototype.convertLead = function(leadConverts, callback) { var arg1 = new sforce.internal.Parameter("leadConverts", leadConverts, true); return this.invoke("convertLead", [arg1], true, callback); }; sforce.Connection.prototype.merge = function(mergeRequest, callback) { var arg1 = new sforce.internal.Parameter("request", mergeRequest, true); return this.invoke("merge", [arg1], true, callback); }; sforce.Connection.prototype.findDuplicates = function(sObjects, callback) { var arg1 = new sforce.internal.Parameter("sObjects", sObjects, true); return this.invoke("findDuplicates", [arg1], true, callback); }; sforce.Connection.prototype.findDuplicatesByIds = function(ids, callback) { var arg1 = new sforce.internal.Parameter("ids", ids, true); return this.invoke("findDuplicatesByIds", [arg1], true, callback); }; sforce.Connection.prototype.undelete = function(ids, callback) { var arg1 = new sforce.internal.Parameter("ids", ids, true); return this.invoke("undelete", [arg1], true, callback); }; sforce.Connection.prototype.process = function(actions, callback) { var arg1 = new sforce.internal.Parameter("actions", actions, true); return this.invoke("process", [arg1], true, callback); }; sforce.Connection.prototype.sendEmail = function(messages, callback) { var arg1 = new sforce.internal.Parameter("messages", messages, true); return this.invoke("sendEmail", [arg1], true, callback); }; sforce.Connection.prototype.emptyRecycleBin = function(ids, callback) { var arg1 = new sforce.internal.Parameter("ids", ids, true); return this.invoke("emptyRecycleBin", [arg1], true, callback); }; sforce.Connection.prototype.invalidateSessions = function(sessionIds, callback) { var arg = new sforce.internal.Parameter("sessionIds", sessionIds, true); return this.invoke("invalidateSessions", [arg], true, callback); }; sforce.Connection.prototype.logout = function(callback) { return this.invoke("logout", [], true, callback); }; sforce.Connection.prototype.remoteFunction = function(args) { if (!args.url) { throw "url not defined"; } if (!args.onSuccess) { throw "onSuccess method not defined"; } if (!args.method) { args.method = "GET"; } if (!args.mimeType) { args.mimeType = "text/plain"; } if (typeof(args.async) == 'undefined') { args.async = true; } if (typeof(args.cache) == 'undefined') { args.cache = false; } if (!(args.mimeType == "text/plain" || args.mimeType == "text/xml")) { throw "Unknown mime type " + args.mimeType; } if (sforce.debug.trace) { sforce.debug.log("Open connection to ... " + args.url); } var request = new sforce.Transport().newConnection(); var proxyUrl = (typeof window.UserContext != "undefined") ? UserContext.getUrl("/services/proxy") : "/services/proxy"; if (args.cache) { proxyUrl = proxyUrl + "?end-point-url=" + args.url; } else { proxyUrl = proxyUrl + "?no-cache=" + new Date().getTime(); } request.open(args.method, proxyUrl, args.async); if (args.requestHeaders) { for (var k in args.requestHeaders) { if (typeof args.requestHeaders[k] != "function") { request.setRequestHeader(k, args.requestHeaders[k]); } } } request.setRequestHeader("SalesforceProxy-Endpoint", args.url); request.setRequestHeader("SalesforceProxy-SID", this.sessionId); if (args.async) { request.onreadystatechange = _remoteFunctionCallback; } if (sforce.debug.trace) { sforce.debug.log("Sending ..."); } if (args.requestData) { request.send(args.requestData); } else { request.send(null); } if (sforce.debug.trace) { sforce.debug.log("Done Sending ..."); } if (!args.async) { _remoteFunctionCallback(); } function _remoteFunctionCallback() { if (sforce.debug.trace) { sforce.debug.log("callback called ..."); } if (request.readyState == 4) { if (request.status == 200) { if (args.mimeType == "text/plain") { args.onSuccess(request.responseText, request); } else if (args.mimeType == "text/xml") { if (!request.responseXML || !request.responseXML.documentElement) { throw "Response not text/xml mime type: " + request.responseText; } args.onSuccess(request.responseXML.documentElement, request); } else { throw "unsupported mime type: " + args.mimeType; } } else { if (args.onFailure) { args.onFailure(request.responseText, request); } else { sforce.debug.log(request.responseText); } } } } }; sforce.Connection.prototype.writeHeader = function(writer, headerNs) { writer.startHeader(); writer.writeNamespace(headerNs, "sfns"); if (this.sessionId !== null) { writer.writeStartElement("SessionHeader", headerNs); writer.writeNameValueNode("sessionId", this.sessionId); writer.writeEndElement("SessionHeader", headerNs); } if (typeof(this.organizationId) !== "undefined") { throw "Use sforce.connection.loginScopeHeader.organizationId instead of sforce.connection.organizationId"; } if (this.loginScopeHeader !== null) { writer.writeStartElement("LoginScopeHeader", headerNs); if (this.loginScopeHeader.organizationId !== null) { writer.writeNameValueNode("organizationId", this.loginScopeHeader.organizationId); } if (this.loginScopeHeader.portalId !== null) { writer.writeNameValueNode("portalId", this.loginScopeHeader.portalId); } writer.writeEndElement("LoginScopeHeader", headerNs); } if (this.client !== null || this.defaultNamespace !== null) { writer.writeStartElement("CallOptions", headerNs); if (this.client !== null) { writer.writeNameValueNode("client", this.client); } if (this.defaultNamespace !== null) { writer.writeNameValueNode("defaultNamespace", this.defaultNamespace); } writer.writeEndElement("CallOptions", headerNs); } if (this.batchSize !== null) { writer.writeStartElement("QueryOptions", headerNs); writer.writeNameValueNode("batchSize", this.batchSize); writer.writeEndElement("QueryOptions", headerNs); } if (this.allowFieldTruncation !== null) { writer.writeStartElement("AllowFieldTruncationHeader", headerNs); writer.writeNameValueNode("allowFieldTruncation", this.allowFieldTruncation); writer.writeEndElement("AllowFieldTruncationHeader", headerNs); } if (this.disableFeedTracking !== null) { writer.writeStartElement("DisableFeedTrackingHeader", headerNs); writer.writeNameValueNode("disableFeedTracking", this.disableFeedTracking); writer.writeEndElement("DisableFeedTrackingHeader", headerNs); } if (this.streamingEnabled !== null) { writer.writeStartElement("StreamingEnabledHeader", headerNs); writer.writeNameValueNode("StreamingEnabled", this.streamingEnabled); writer.writeEndElement("StreamingEnabledHeader", headerNs); } if (this.allOrNone !== null) { writer.writeStartElement("AllOrNoneHeader", headerNs); writer.writeNameValueNode("allOrNone", this.allOrNone); writer.writeEndElement("AllOrNoneHeader", headerNs); } if (this.updateMru !== null) { writer.writeStartElement("MruHeader", headerNs); writer.writeNameValueNode("updateMru", this.updateMru); writer.writeEndElement("MruHeader", headerNs); } if (this.emailHeader !== null) { writer.writeStartElement("EmailHeader", headerNs); if (this.emailHeader.triggerAutoResponseEmail) { writer.writeNameValueNode("triggerAutoResponseEmail", this.emailHeader.triggerAutoResponseEmail); } if (this.emailHeader.triggerOtherEmail) { writer.writeNameValueNode("triggerOtherEmail", this.emailHeader.triggerOtherEmail); } if (this.emailHeader.triggerUserEmail) { writer.writeNameValueNode("triggerUserEmail", this.emailHeader.triggerUserEmail); } writer.writeEndElement("EmailHeader", headerNs); } if (this.assignmentRuleHeader !== null) { writer.writeStartElement("AssignmentRuleHeader", headerNs); if (this.assignmentRuleHeader.assignmentRuleId) { writer.writeNameValueNode("assignmentRuleId", this.assignmentRuleHeader.assignmentRuleId); } if (this.assignmentRuleHeader.useDefaultRule) { writer.writeNameValueNode("useDefaultRule", this.assignmentRuleHeader.useDefaultRule); } writer.writeEndElement("AssignmentRuleHeader", headerNs); } if (this.transferToUserId !== null) { writer.writeStartElement("UserTerritoryDeleteHeader", headerNs); writer.writeNameValueNode("transferToUserId", this.transferToUserId); writer.writeEndElement("UserTerritoryDeleteHeader", headerNs); } if (this.duplicateRuleHeader !== null) { writer.writeStartElement("DuplicateRuleHeader", headerNs); if (this.duplicateRuleHeader.allowSave) { writer.writeNameValueNode("allowSave", this.duplicateRuleHeader.allowSave); } if (this.duplicateRuleHeader.includeRecordDetails) { writer.writeNameValueNode("includeRecordDetails", this.duplicateRuleHeader.includeRecordDetails); } if (this.duplicateRuleHeader.runAsCurrentUser) { writer.writeNameValueNode("runAsCurrentUser", this.duplicateRuleHeader.runAsCurrentUser); } writer.writeEndElement("DuplicateRuleHeader", headerNs); } if (this.debuggingHeader !== null) { writer.writeStartElement("DebuggingHeader", headerNs); // Write out old style if specified if (this.debuggingHeader.debugLevel) { writer.writeNameValueNode("debugLevel", this.debuggingHeader.debugLevel); } // Write out the new style debugging categories and levels if (this.debuggingHeader.debugCategories) { var categories = this.debuggingHeader.debugCategories; for (var i = 0; i < categories.length; i++) { var catAndLevel = categories[i].split(","); if (catAndLevel.length == 2) { writer.writeStartElement("categories"); writer.writeNameValueNode("category", catAndLevel[0]); writer.writeNameValueNode("level", catAndLevel[1]); writer.writeEndElement("categories"); } } } writer.writeEndElement("DebuggingHeader", headerNs); } writer.endHeader(); }; sforce.Connection.prototype.namespaceMap = [ {ns:sforce.Connection.prototype.sforceNs, prefix:null}, {ns:sforce.Connection.prototype.sobjectNs, prefix:"ns1"} ]; sforce.Connection.prototype.invoke = function(method, args, isArray, callback) { return this._invoke(method, args, isArray, callback, this.namespaceMap, this.serverUrl, this.sforceNs, this.sobjectNs); }; sforce.Connection.prototype._invoke = function(method, args, isArray, callback, namespaces, url, headerNs, sobjectNs) { if (callback) { if (typeof(callback) == "function") { } else { if (!callback.onSuccess) { throw "onSuccess not defined in the callback"; } if (!callback.onFailure) { throw "onFailure not defined in the callback"; } } } var writer = new sforce.XmlWriter(); writer.startEnvelope(); this.writeHeader(writer, headerNs); writer.startBody(); writer.writeStartElement(method); for (var i = 0; i this.index) { return true; } if (this.queryResult.queryLocator !== null) { this.queryResult = sforce.connection.queryMore(this.queryResult.queryLocator); this.records = this.queryResult.getArray("records"); this.index = 0; } if (this.records.length > this.index) { return true; } else { return false; } }; sforce.QueryResultIterator.prototype.next = function() { if (this.records.length > this.index) { var result = this.records[this.index]; this.index++; return result; } else { throw "Index out of bound : " + this.index; } }; /* Email */ sforce.Email = function() { }; sforce.Email.prototype = new sforce.Xml("messages"); sforce.MassEmailMessage = function() { }; sforce.MassEmailMessage.prototype = new sforce.Xml("messages"); sforce.MassEmailMessage.prototype._xsiType = "MassEmailMessage"; sforce.SingleEmailMessage = function() { }; sforce.SingleEmailMessage.prototype = new sforce.Xml("messages"); sforce.SingleEmailMessage.prototype._xsiType = "SingleEmailMessage"; /* ProcessRequest */ sforce.ProcessRequest = function() { }; sforce.ProcessRequest.prototype = new sforce.Xml("actions"); sforce.ProcessSubmitRequest = function() { }; sforce.ProcessSubmitRequest.prototype = new sforce.Xml("actions"); sforce.ProcessSubmitRequest.prototype._xsiType = "ProcessSubmitRequest"; sforce.ProcessWorkitemRequest = function() { }; sforce.ProcessWorkitemRequest.prototype = new sforce.Xml("actions"); sforce.ProcessWorkitemRequest.prototype._xsiType = "ProcessWorkitemRequest"; /* set up connection */ sforce.connection = new sforce.Connection(); var UserContext = (typeof window.UserContext != "undefined") ? window.UserContext : { siteUrlPrefix : "", getUrl : function (url) { // fix URL for sites with prefixes if (typeof url == "undefined" || typeof UserContext.siteUrlPrefix == "undefined" || !UserContext.siteUrlPrefix) return url; if (url.indexOf('/') != 0) return url; if(url.indexOf(UserContext.siteUrlPrefix) == 0) return url; return UserContext.siteUrlPrefix + url; } }; if (typeof(__sfdcSiteUrlPrefix) != "undefined") { UserContext.siteUrlPrefix = __sfdcSiteUrlPrefix; } sforce.connection.serverUrl = (typeof window.UserContext != "undefined") ? UserContext.getUrl("/services/Soap/u/51.0") : "/services/Soap/u/51.0"; if (typeof(__sfdcSessionId) != "undefined") { sforce.connection.sessionId = __sfdcSessionId; }