var data = {"h":"getAccount()","f":"aspnetForm","fA":"id","d":"","mL":[{"T":"zf","fcTag":null,"fcAd":null,"fcSAtN":null,"fcSAtV":null,"fcUw":null,"fcUa":null,"paID":"80","paN":"LeadSource","isM":false,"dV":"Mobility / Wireless","CV":null},{"T":"zf","fcTag":null,"fcAd":null,"fcSAtN":null,"fcSAtV":null,"fcUw":null,"fcUa":null,"paID":"24842","paN":"pers","isM":false,"dV":"True","CV":null},{"T":"zf","fcTag":null,"fcAd":null,"fcSAtN":null,"fcSAtV":null,"fcUw":null,"fcUa":null,"paID":"21893","paN":"Networking","isM":false,"dV":"True","CV":null},{"T":"zf","fcTag":null,"fcAd":null,"fcSAtN":null,"fcSAtV":null,"fcUw":null,"fcUa":null,"paID":"25901","paN":"UNIFIEDCOM","isM":false,"dV":"True","CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtCompany","fcUw":"UseAttributeName","fcUa":"value","paID":"77","paN":"Company","isM":false,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtName","fcUw":"UseAttributeName","fcUa":"value","paID":"73","paN":"FirstName","isM":false,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtTussenvoegsel","fcUw":"UseAttributeName","fcUa":"value","paID":"1881","paN":"Middlename","isM":false,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtLastname","fcUw":"UseAttributeName","fcUa":"value","paID":"74","paN":"LastName","isM":false,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtEmail","fcUw":"UseAttributeName","fcUa":"value","paID":"94","paN":"EmailAddress1","isM":true,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtPhoneNumber","fcUw":"UseAttributeName","fcUa":"value","paID":"87","paN":"phone","isM":false,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"text","fcSAtN":"id","fcSAtV":"ctl00_ctl00_cphMain_wucSolutionForm_txtRemarks","fcUw":"UseAttributeName","fcUa":"value","paID":"96","paN":"Notes","isM":false,"dV":null,"CV":null},{"T":"f","fcTag":"input","fcAd":"radio","fcSAtN":"name","fcSAtV":"ctl00$ctl00$cphMain$wucSolutionForm$rblGender","fcUw":"UseAttributeName","fcUa":"value","paID":"75","paN":"Gender","isM":false,"dV":null,"CV":null},{"T":"zf","fcTag":null,"fcAd":null,"fcSAtN":null,"fcSAtV":null,"fcUw":null,"fcUa":null,"paID":"-1","paN":"EmailPermission","isM":false,"dV":true,"CV":null}],"lA":["109377"],"lR":[],"lWF":["269731"],"fEP":false,"pF":false};
var webFormCheckerURL = 'http://zcwi.custapps.net/zcwi/cda/webformchecker.aspx';
var cda = new PartCDA();
var addremovecompleted = false;
var lookupcompleted = false;
var elsBlur = new Array();
var timerAddRemove = null;
var customerForm;
function JolSubmitManager(targetForm)
{
var allSubmitEvents = [];
var nativeAttach;
customerForm = document.getElementById(data.f);
if (!customerForm) return;
// OnSubmit Handler
customerForm.onSubmitHandler = customerForm.onsubmit;
customerForm.onsubmit = fakeOnSubmit;
// Submit Handler
customerForm.SubmitHandler = customerForm.submit;
customerForm.submit = fakeSubmit;
//alert(customerForm.addEventListener);
//alert('window.attachEvent: ' + window.attachEvent);
//alert('window.addEventListener: ' + window.addEventListener);
//alert('onSubmitResult: ' + customerForm.onSubmitResult);
if (browser.msie) {
customerForm.nativeAttach = customerForm.attachEvent;
customerForm.attachEvent = function(eventName, eventFunction) {
if (eventName == 'onsubmit')
{
//alert('pushed ie');
allSubmitEvents.push(eventFunction);
}
else customerForm.nativeAttach(eventName, eventFunction);
}
}
else {
customerForm.nativeAttach = customerForm.addEventListener;
customerForm.addEventListener = function(eventName, eventFunction, useCapture) {
if (eventName == 'submit')
{
//alert('pushed firefox');
allSubmitEvents.push(eventFunction);
}
else customerForm.nativeAttach(eventName, eventFunction, useCapture);
}
}
function fakeOnSubmit(customerForm) {
//alert('fake onsubmit');
return false;
}
function fakeSubmit() {
//alert('fake submit');
checkProspect();
}
var realSubmitEvent = function(event) {
//alert('in real submit');
//var onSubmitResult = customerForm.onSubmitHandler();
var onSubmitResult = (customerForm.onSubmitHandler != null ? customerForm.onSubmitHandler() : null);
if (onSubmitResult == null)
onSubmitResult = true;
// event handlers
var realResult = innerSubmit(event);
if (realResult == null) realResult = true;
//alert('realResult ' + realResult);
//alert('window.attachEvent: ' + window.attachEvent);
//alert('onSubmitResult: ' + customerForm.onSubmitResult);
if (!onSubmitResult) return;
// for firefox
if (browser.mozilla && onSubmitResult) {
fakeSubmit();
//customerForm.submit();
}
// ie
else if (browser.msie && realResult && onSubmitResult) {
//alert('fake submit ie');
fakeSubmit();
//customerForm.submit();
}
// opera
else if (onSubmitResult) {
fakeSubmit();
}
}
var innerSubmit = function(event) {
var lastResult = true;
for (var i = 0; i < allSubmitEvents.length; i++) {
lastResult = allSubmitEvents[i](event);
}
return lastResult;
}
// Depending on the browser, make nativeAttach
if (browser.msie)
customerForm.nativeAttach("onsubmit", realSubmitEvent);
else if (browser.mozilla || browser.opera || browser.safari)
{
//alert('here1');
//alert('realSubmitEvent: ' + realSubmitEvent);
//alert('nativeAttach: ' + nativeAttach);
customerForm.nativeAttach("submit", realSubmitEvent, false);
//alert('here2');
}
}
// web browser definition
var userAgent = navigator.userAgent.toLowerCase();
var browser = {
version: (userAgent.match(/.+(?:rv|it|ra|ie)[\/: ]([\d.]+)/) || [])[1],
safari: /webkit/.test(userAgent),
opera: /opera/.test(userAgent),
msie: /msie/.test(userAgent) && !/opera/.test(userAgent),
mozilla: /mozilla/.test(userAgent) && !/(compatible|webkit)/.test(userAgent)
};
var currentFormSubmitManager = new JolSubmitManager(customerForm);
onReady = (function(ie)
{
if ( document.addEventListener && !browser.opera)
document.addEventListener( "DOMContentLoaded", ie, false );
if ( browser.msie && window == top ) (function(){
try {
document.documentElement.doScroll("left");
} catch( error ) {
setTimeout( arguments.callee, 0 );
return;
}
ie();
})();
if ( browser.opera )
document.addEventListener( "DOMContentLoaded", function () {
for (var i = 0; i < document.styleSheets.length; i++)
if (document.styleSheets[i].disabled) {
setTimeout( arguments.callee, 0 );
return;
}
ie();
}, false);
if ( browser.safari ) {
var numStyles;
(function(){
if ( document.readyState != "loaded" && document.readyState != "complete" ) {
setTimeout( arguments.callee, 0 );
return;
}
if ( document.styleSheets.length != numStyles ) {
setTimeout( arguments.callee, 0 );
return;
}
ie();
})();
}
});
onReady(function()
{
setTimeout(start, 50);
});
function start() {
prefill();
}
function waitForAddRemoveSent()
{
//alert('we are here');
if (addremovecompleted) {
//clearInterval(timerAddRemove);
//alert('Script done');
//customerForm.onsubmit = true;
//customerForm.formSubmitHandler();
customerForm.SubmitHandler();
}
}
function prefill() {
var pref = data.pF;
if (!pref) return;
// Make prefill form
var p = param();
// Collect searchable fields
var seachableFields = new Array();
var index = 0;
for (var i = 0; i < data.mL.length; i++)
if (data.mL[i].isM && data.mL[i].T == 'f')
seachableFields[index++] = data.mL[i].paN;
// Fields are collected, no now
// determine is querystring has everything to
// lookup. (Case 1)
var case1 = true;
for (var i = 0; i < seachableFields.length; i++) {
var local = p[seachableFields[i].toLowerCase()] != null;
case1 = case1 && local;
}
if (case1) {
var sendData = new SendData();
sendData.a = 'lookup';
data.h = getAccount();
data.d = window.location.hostname.toString();
var dataToSend = new Match();
dataToSend.h = data.h;
dataToSend.d = data.d;
dataToSend.lA = 'null';
dataToSend.lR = 'null';
dataToSend.lWF = 'null';
// Do prefill
for (var i = 0; i < data.mL.length; i++)
{
if (data.mL[i].T == 'f')
{
if (data.mL[i].isM && data.mL[i].T == 'f') {
data.mL[i].CV = p[data.mL[i].paN.toLowerCase()][0];
}
else data.mL[i].CV = '';
var matchData = new MD();
matchData.fcV = data.mL[i].CV;
matchData.paN = data.mL[i].paN;
matchData.s = data.mL[i].isM;
dataToSend.M[i] = matchData;
}
}
sendData.M = dataToSend;
/* Data to send */
cda.getresponse = true;
//alert(sendData);
cda.input = objectToXml(sendData);
cda.splitInput();
// Prepare
var el = document.createElement("script");
el.src = prepareScriptURL();
document.body.appendChild(el);
//var el;
//(el = document.getElementsByTagName('script')[0].cloneNode(true)).src = prepareScriptURL();
//el.type = 'text/javascript';
//document.body.appendChild(el);
//alert(prepareScriptURL().length);
return;
}
// Case 2
if (lookupcompleted) return;
// Collect controls
collectSearchableFields();
// Attach events
for (var i = 0; i < data.mL.length; i++)
if (data.mL[i].isM && data.mL[i].T == 'f')
listen('blur', document.getElementById(data.mL[i].fcSAtV), blurCaught);
}
function prepareScriptURL() {
//alert("length: " + cda.data.length);
if (cda.data.length == 1) {
var dataToSend = "" + cda.data[0] + "";
return webFormCheckerURL + "?data=" + Encoder.encodeURI(dataToSend) + "&last=true&gr=" + cda.getresponse;
}
else if (cda.data.length > 1) {
var dataToSend = "" + cda.data[0] + "" + cda.data.length + "true";
//alert("dataToSend: " + dataToSend.length);
//alert("Encoded: " + Encoder.encodeURI(dataToSend).length);
return webFormCheckerURL + "?data=" + Encoder.encodeURI(dataToSend) + "&last=false&gr=" + cda.getresponse;
}
}
function complete(cdaobj) {
//alert('history changed: ' + cdaobj.historyChangedCount);
processLookupResponse(cdaobj.response);
}
/* Checks Prospect */
function checkProspect()
{
//alert('check prospect started');
data.h = getAccount();
data.d = window.location.hostname.toString();
var dataToSend = new Match();
dataToSend.h = data.h;
dataToSend.d = data.d;
dataToSend.lA = data.lA;
dataToSend.lR = data.lR;
dataToSend.lWF = data.lWF;
for (var i = 0; i < data.mL.length; i++) {
// Check if current match is of emailpermission attribute
if (data.mL[i].T == 'zf')
data.mL[i].CV = data.mL[i].dV;
else
data.mL[i].CV = getControlValue(
data.mL[i].fcTag, data.mL[i].fcAd, data.mL[i].fcSAtN, data.mL[i].fcSAtV,
data.mL[i].fcUw == "UseAttributeName" ? data.mL[i].fcUa : '');
if (data.mL[i].paID == -1 && data.mL[i].paN.toLowerCase() == "emailpermission" && data.fEP)
if (typeof (data.mL[i].CV) == 'boolean')
data.mL[i].CV = !data.mL[i].CV;
var matchData = new MD();
matchData.fcV = data.mL[i].CV;
matchData.paN = data.mL[i].paN;
matchData.s = data.mL[i].isM;
dataToSend.M[i] = matchData;
}
var sendData = new SendData();
sendData.a = 'addremove';
sendData.M = dataToSend;
/* Data to send */
addremovecompleted = false;
/* Data to send */
cda.getresponse = true;
cda.input = objectToXml(sendData);
cda.splitInput();
// Prepare
var el = document.createElement("script");
el.src = prepareScriptURL();
//alert('befire sending');
// Set script event
if (browser.msie) {
el.onreadystatechange = function()
{
if ('loaded' == this.readyState)
waitForAddRemoveSent();
}
timerAddRemove = setInterval(waitForAddRemoveSent, 2000);
}
else if (browser.mozilla)
{
listen('load', el, waitForAddRemoveSent);
timerAddRemove = setInterval(waitForAddRemoveSent, 2000);
}
else {
//alert('timer set');
timerAddRemove = setInterval(waitForAddRemoveSent, 2000);
}
addremovecompleted = true;
document.body.appendChild(el);
return false;
}
function collectSearchableFields() {
var index = 0;
for (var i = 0; i < data.mL.length; i++)
if (data.mL[i].isM &&
data.mL[i].fcSAtN &&
data.mL[i].fcTag != '') {
elsBlur[index] = { control: document.getElementById(data.mL[i].fcSAtV), blur: false };
index++;
}
}
function areAllSearchableBlur() {
var allBlur = true;
for (var i = 0; i < elsBlur.length; i++)
allBlur = allBlur && elsBlur[i].blur;
return allBlur;
}
function listen(evnt, elem, func) {
if (elem == null)
return;
if (elem.addEventListener) // W3C DOM
elem.addEventListener(evnt, func, false);
else if (elem.attachEvent) { // IE DOM
var r = elem.attachEvent("on" + evnt, func);
return r;
}
}
function blurCaught(el)
{
for (var i = 0; i < elsBlur.length; i++)
{
var ct = (browser.msie) ? event.srcElement : el.currentTarget;
if (elsBlur[i].control == this || elsBlur[i].control == ct)
{
elsBlur[i].blur = true;
if (areAllSearchableBlur() && (!lookupcompleted)) {
// Do Request
data.h = getAccount();
data.d = window.location.hostname.toString();
var dataToSend = new Match();
dataToSend.h = data.h;
dataToSend.d = data.d;
dataToSend.lA = null;
dataToSend.lR = null;
dataToSend.lWF = null;
for (var i = 0; i < data.mL.length; i++)
{
if (data.mL[i].T == 'f')
{
if (data.mL[i].isM && data.mL[i].T == 'f') {
data.mL[i].CV = getControlValue(
data.mL[i].fcTag, data.mL[i].fcAd, data.mL[i].fcSAtN, data.mL[i].fcSAtV,
data.mL[i].fcUw == "UseAttributeName" ? data.mL[i].fcUa : '');
}
else data.mL[i].CV = '';
var matchData = new MD();
matchData.fcV = data.mL[i].CV;
matchData.paN = data.mL[i].paN;
matchData.s = data.mL[i].isM;
dataToSend.M[i] = matchData;
}
}
var sendData = new SendData();
sendData.a = 'lookup';
sendData.M = dataToSend;
lookupcompleted = true;
/* Data to send */
cda.getresponse = true;
cda.input = objectToXml(sendData);
//alert(cda.input);
cda.splitInput();
// Prepare
var el = document.createElement("script");
el.src = prepareScriptURL();
document.body.appendChild(el);
}
}
}
}
function forcedLookup() {
// Do Request
data.h = getAccount();
data.d = window.location.hostname.toString();
var dataToSend = new Match();
dataToSend.h = data.h;
dataToSend.d = data.d;
dataToSend.lA = null;
dataToSend.lR = null;
dataToSend.lWF = null;
for (var i = 0; i < data.mL.length; i++)
{
if (data.mL[i].T == 'f')
{
if (data.mL[i].isM && data.mL[i].T == 'f') {
data.mL[i].CV = getControlValue(
data.mL[i].fcTag, data.mL[i].fcAd, data.mL[i].fcSAtN, data.mL[i].fcSAtV,
data.mL[i].fcUw == "UseAttributeName" ? data.mL[i].fcUa : '');
}
else data.mL[i].CV = '';
var matchData = new MD();
matchData.fcV = data.mL[i].CV;
matchData.paN = data.mL[i].paN;
matchData.s = data.mL[i].isM;
dataToSend.M[i] = matchData;
}
}
var sendData = new SendData();
sendData.a = 'lookup';
sendData.M = dataToSend;
/* Data to send */
cda.getresponse = true;
cda.input = objectToXml(sendData);
//alert(cda.input);
cda.splitInput();
// Prepare
var el = document.createElement("script");
el.src = prepareScriptURL();
document.body.appendChild(el);
}
function processLookupResponse(response) {
var r;
eval("r = " + response);
if (response == "null") return;
for (var i = 0; i < data.mL.length; i++) {
if (data.mL[i].fcSAtN == 'id' || data.mL[i].fcSAtN == 'name') {
if (data.mL[i].fcUw == 'UseAttributeName') {
var rValue;
try {
rValue = r.Attributes[data.mL[i].paN.toLowerCase()];
if (rValue != null)
setControlValue(data.mL[i].fcTag, data.mL[i].fcAd, data.mL[i].fcSAtN, data.mL[i].fcSAtV, data.mL[i].fcUa, rValue);
}
catch (e) {
}
}
}
}
lookupcompleted = true;
}
function setControlValue(tagName, type, searchIdentifier, searchIdentifierValue, attrToSet, value) {
var control;
if (searchIdentifier.toLowerCase() == 'id') {
control = document.getElementById(searchIdentifierValue);
if (control.tagName.toLowerCase() == 'input') {
switch (type.toLowerCase()) {
case 'text':
case 'password':
attr(control, attrToSet, value);
break;
case 'checkbox':
control.checked = (value.toLowerCase() == 'false' || value == '') ? '' : 'checked';
break;
}
}
else if (control.tagName.toLowerCase() == 'select') {
var valueSet = false;
// Get through the value fields
for (var i = 0; i < control.options.length; i++) {
//alert("Option value: " + control.options[i].value + " , value: " + value);
if (control.options[i].value == value) {
control.value = value;
valueSet = true;
break;
}
}
if (valueSet) return;
// If failed through the value field, do the same with innerHTML
for (var i = 0; i < control.options.length; i++) {
//alert("InnerHTML: " + control.options[i].innerHTML + " , value: " + value);
if (control.options[i].innerHTML == value) {
control.options[i].selected = true;
break;
}
}
}
}
else if (searchIdentifier.toLowerCase() == 'name') {
var rbGroup;
eval("rbGroup = document.getElementById(data.f)." + searchIdentifierValue);
for (var i = 0; i < rbGroup.length; i++) {
if (rbGroup[i].value.toLowerCase() == value.toLowerCase()) {
rbGroup[i].checked = true;
break;
}
}
}
}
function getControlValue(tagName, type, searchIdentifier, searchIdentifierValue, attributeToGet) {
var control;
if (searchIdentifier == "id") {
control = document.getElementById(searchIdentifierValue);
}
else {
// Special case "multiple radio"
if (tagName == 'input' && type == 'radio') {
control = getRadioListValue(searchIdentifierValue);
}
else
// Not implemented yet
return null;
}
if (tagName == '') return attr(control, attributeToGet)
else return text(control, attributeToGet);
}
function getRadioListValue(nameValue) {
var radioButtons = document.getElementsByTagName('input');
for (var i = 0; i < radioButtons.length; i++) {
if (attr(radioButtons[i], 'type') == 'radio' && attr(radioButtons[i], 'name') == nameValue) {
if (radioButtons[i].checked) {
return radioButtons[i];
}
}
}
return null;
}
/* A Generic Function for Retreiving the Text Contents of an Element */
function text(e, attributeToGet) {
if (!e) return '';
switch (e.tagName.toLowerCase()) {
case "input":
return getInputValue(e, attributeToGet);
break;
case "select":
return e.value;
break;
case "span":
case "div":
case "label":
case "p":
case "td":
case "textarea":
default:
return attr(e, attributeToGet);
}
}
/* Gets Input Value */
function getInputValue(e, attributeToGet) {
switch (e.type.toLowerCase()) {
case "text":
case "button":
case "checkbox":
case "radio":
case "password":
if (attributeToGet == 'checked')
return e.checked;
return attr(e, attributeToGet);
default:
return null;
}
}
/* Getting and Setting the Values of Element Attributes */
function attr(elem, name, value) {
// Make sure that a valid name was provided
if (!name || name.constructor != String)
return '';
// Figure out if the name is one of the weird naming cases
name = { 'for': 'htmlFor', 'class': 'className'}[name] || name;
// If the user is setting a value, also
if (typeof value != 'undefined') {
// Set the quick way first
elem[name] = value;
// If we can, use setAttribute
if (elem.setAttribute)
elem.setAttribute(name, value);
}
// Return the value of the attribute
return elem[name] || elem.getAttribute(name) || '';
}
function getCheckedValue(radioObj) {
if (!radioObj)
return "";
var radioLength = radioObj.length;
if (radioLength == undefined)
if (radioObj.checked)
return radioObj.value;
else
return "";
for (var i = 0; i < radioLength; i++) {
if (radioObj[i].checked) {
return radioObj[i].value;
}
}
return "";
}
function objectToXml(obj, param) {
var sa = new Array(''), se = new Array('');
if (!param) param = obj._tagName || 'object';
for (var i in obj) {
if (obj.hasOwnProperty(i) && i.charAt(0) != '_') {
var v = obj[i];
switch (typeof v) {
case 'undefined':
case 'function':
case 'unknown': break;
case 'object':
if (v != null) {
if (v instanceof Array)
se.push(arrayToXml(v, i));
else
se.push(objectToXml(v, i));
}
break;
case 'string': v = stringToXml(v);
default: sa.push(' ' + i + '="' + v + '"');
}
}
}
var s = se.join('');
return '<' + param + sa.join('') + '>' + s + '' + '' + param + '>';
}
function arrayToXml(obj, param) {
var s = new Array(), i, l = obj.length, v;
var t2 = (param.charAt(param.length - 1) == 's') ? param.substring(0, param.length - 1) : param;
for (i = 0; i < l; i++) {
v = obj[i];
switch (typeof v) {
case 'undefined':
case 'function':
case 'unknown': break;
case 'object':
if (v != null) {
if (v instanceof Array)
s.push(arrayToXml(v, t2));
else
s.push(objectToXml(v, t2));
}
break;
case 'string': v = stringToXml(v);
default: s.push('<' + t2 + '>' + v + '' + t2 + '>' + '');
}
}
return '<' + param + '>' + s.join('') + '' + param + '>' + '';
}
function stringToXml(obj) {
return obj.replace('&', '&').
replace('<', '<').replace('>', '>').
replace('\'', ''').replace('"', '"');
}
/////////////////////////////////////////////////////////////////////////////////
function SendData() {
this.a = '';
this.M = '';
}
function Match() {
this.h = '';
this.d = '';
this.M = new Array();
this.lA = new Array();
this.lR = new Array();
this.lWF = new Array();
}
function MD() {
this.fcV = '';
this.paN = '';
this.s = false;
}
////////////////////////////////////////////////////////////////////////////////
function ptq(q) {
/* parse the query */
/* semicolons are nonstandard but we accept them */
var x = q.replace(/;/g, '&').split('&'), i, name, t;
/* q changes from string version of query to object */
for (q = {}, i = 0; i < x.length; i++) {
t = x[i].split('=', 2);
name = unescape(t[0]).toLowerCase();
if (!q[name])
q[name] = [];
if (t.length > 1) {
q[name][q[name].length] = unescape(t[1]);
}
/* next two lines are nonstandard */
else
q[name][q[name].length] = true;
}
return q;
}
function param() {
return ptq(location.search.substring(1).replace(/\+/g, ' '));
}
function paramHash() {
return ptq(location.hash.substring(1).replace(/\+/g, ' '));
}
function qsPart() {
this.name = '';
this.value = '';
}
////////////////////////////////////////////////////////////////////////////////
function PartCDA() {
var index = 0;
var key = null;
var timer = null;
this.partLength = 1000;
this.response = null;
this.responseArray = new Array();
this.data = new Array();
this.oncomplete = null;
this.input = "";
this.getresponse = true;
}
PartCDA.prototype.splitInput = function() {
var endUp = Math.floor(this.input.length / this.partLength) == 0 ? 1 : Math.floor(this.input.length / this.partLength);
for (var i = 0; i <= endUp; i++) {
this.data[i] = Base64.encode(this.input.substr(this.partLength * i, this.partLength));
}
}
/////////////////////////////////////////////////////////////////////
var Base64 =
{
// private property
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
// public method for encoding
encode: function(input) {
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = Base64._utf8_encode(input);
while (i < input.length) {
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = 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 = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
}
return output;
},
// public method for decoding
decode: function(input) {
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length) {
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 = output + String.fromCharCode(chr1);
if (enc3 != 64) {
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64) {
output = output + String.fromCharCode(chr3);
}
}
output = Base64._utf8_decode(output);
return output;
},
// private method for UTF-8 encoding
_utf8_encode: function(input) {
input = input.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < input.length; n++) {
var c = input.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
}
else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
},
// private method for UTF-8 decoding
_utf8_decode: function(utftext) {
var string = "";
var i = 0;
var c = c1 = c2 = 0;
while (i < utftext.length) {
c = utftext.charCodeAt(i);
if (c < 128) {
string += String.fromCharCode(c);
i++;
}
else if ((c > 191) && (c < 224)) {
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else {
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return string;
}
}
var Encoder =
{
encodeURI: function(input) {
return encodeURIComponent(Base64.encode(input));
//return Base64.encode(input);
},
decodeURI: function(input) {
return Base64.decode(input);
}
}