1 2var WC_ViewModelBase = kendo.Class.extend({ 3 CanSave: false, 4 CanNew: false, 5 CanDelete: false, 6 7 //JSON Functions 8 JSONStringToDate: function (value) { 9 10 11 12 //var _ParentObject = this; 13 //return _ParentObject.ParseJSONDate(value); 14 15 //var objParsedDate = kendo.parseDate(value, "yyyy-MM-ddTHH:mm:ss.fffZ"); 16 //return objParsedDate; 17 18 19 //var s = value.split(/[-T:Z]/ig); 20 //var objParsedDate = new Date(Date.UTC(s[0], --s[1], s[2], s[3], s[4], s[5])); 21 //return objParsedDate; 22 23 //var s = value.split(/[-T:Z]/ig); 24 //var objParsedDate = new Date(s[0], s[1], s[2], s[3], s[4], s[5], 0); 25 //return objParsedDate; 26 27 var objParsedDate = new Date(); 28 // year month day hour min sec 29 var recognized_date_pattern = /(\d{4})\D(\d\d)\D(\d\d)\D(\d\d)\D(\d\d)\D(\d\d)/; 30 31 // a date we recognize. build by hand to go around timezone issue 32 if (value && (typeof value == 'string') && (value.search(recognized_date_pattern) > -1)) { 33 // get the parts of the date and time out of the string 34 var regex_datetime_matches = value.match(recognized_date_pattern); 35 var value_year = regex_datetime_matches[1]; 36 var value_month = regex_datetime_matches[2]; 37 var value_date = regex_datetime_matches[3]; 38 var value_hour = regex_datetime_matches[4]; 39 var value_minute = regex_datetime_matches[5]; 40 var value_second = regex_datetime_matches[6]; 41 42 // shove the date values into the date object, completely bypassing timezone 43 objParsedDate.setFullYear(value_year); 44 objParsedDate.setDate(1); //set date to 1 before setting the month to avoid an issue where the month is wrong on the 31st of a month 45 objParsedDate.setMonth(value_month - 1); 46 objParsedDate.setDate(value_date); 47 objParsedDate.setHours(value_hour); 48 objParsedDate.setMinutes(value_minute); 49 objParsedDate.setSeconds(value_second); 50 } 51 else 52 // don't know what kind of date-time this is; hope JS Date can parse it on it's own 53 objParsedDate = new Date(value); 54 55 return objParsedDate; 56 57 58 59 60 }, 61 ParseJSONDate: function (jsonDate) { 62 var _ParentObject = this; 63 // Get the date time part 64 var dateTimePart = jsonDate.replace(/\/+Date\(([\d+-]+)\)\/+/, '$1'); 65 66 // Check for + or - sign 67 var minusSignIndex = dateTimePart.indexOf('-'); 68 var plusSignIndex = dateTimePart.indexOf('+'); 69 70 // Get the sign index 71 var signIndex = minusSignIndex > 0 ? minusSignIndex : plusSignIndex; 72 73 // If sign index is not 0 then we are extracting offset part and 74 if (signIndex > 0) { 75 var datePart = dateTimePart.substring(0, signIndex); 76 var offsetPart = dateTimePart.substring(signIndex); 77 78 var offset = offsetPart.substring(0, 3) + '.' + ((parseFloat(offsetPart.substring(3)) / 60) * 100).toString(); 79 return _ParentObject.GetJSONDate(parseFloat(datePart), parseFloat(offset)); 80 } 81 else { 82 return _ParentObject.GetJSONDate(dateTimePart, 0); 83 }; 84 }, 85 GetJSONDate: function (ms, offset) { 86 // create Date object for current location 87 var date = new Date(ms); 88 89 // convert to msec 90 // add local time zone offset 91 // get UTC time in msec 92 var timeZoneOffset = date.getTimezoneOffset(); 93 var utcTime = date.getTime() + (timeZoneOffset * 60000); 94 95 // create new Date object for different city 96 // using supplied offset 97 var jsDate = new Date(utcTime + (3600000 * offset)); 98 return jsDate; 99 },
100 ConvertAllObjectJSONDatePropertiesToDate: function (Object) { 101 var _ParentObject = this; 102 103 for (var prop in Object) { 104 if (_ParentObject.Contains(prop, "EndDate") == true) { 105 var foo = ""; 106 }; 107 if (_ParentObject.IsJSONDateString(Object[prop]) == true) { 108 109 var objOrigVal = Object[prop]; 110 try { 111 Object[prop] = _ParentObject.JSONStringToDate(Object[prop]); 112 } 113 catch (ex) { 114 //conversion didn't work revert to orignal prop value 115 Object[prop] = objOrigVal; 116 }; 117 118 }; 119 120 121 }; 122 123 }, 124 ConvertAllObjectJSONDatePropertiesToCurrentDate: function (Object) { 125 var _ParentObject = this; 126 127 for (var prop in Object) { 128 129 if (_ParentObject.IsJSONDateString(Object[prop]) == true) { 130 Object[prop] = _ParentObject.GetCurrentDateWithNoTime(); 131 }; 132 133 }; 134 135 }, 136 ConvertAllArrayJSONDatePropertiesToDate: function (Array) { 137 var _ParentObject = this; 138 wc$.each(Array, function (index, value) { 139 var SourceObject = Array[index];
140 _ParentObject.ConvertAllObjectJSONDatePropertiesToDate(SourceObject); 141 }); 142 }, 143 144 145 GetLocalGMTOffSet: function () { 146 147 var dateTimePart = new Date().toString(); 148 var minusSignIndex = dateTimePart.indexOf('-'); 149 var plusSignIndex = dateTimePart.indexOf('+'); 150 151 // Get the sign index 152 var signIndex = minusSignIndex > 0 ? minusSignIndex : plusSignIndex; 153 154 var offsetPart = dateTimePart.substring(signIndex); 155 156 var offset = offsetPart.substring(0, 3) + '.' + ((parseFloat(offsetPart.substring(3)) / 60) * 100).toString(); 157 offset = parseFloat(offset); 158 return offset; 159 }, 160 TimeZones: [ 161 { GMTOffset: 5.0, Descr: ' (GMT +5:00) Ekaterinburg, Islamabad, Karachi, Tashkent', ShortDescr: '' }, 162 { GMTOffset: 4.5, Descr: ' (GMT +4:30) Kabul', ShortDescr: '' }, 163 { GMTOffset: 4.0, Descr: ' (GMT +4:00) Abu Dhabi, Muscat, Baku, Tbilisi', ShortDescr: '' }, 164 { GMTOffset: 3.5, Descr: ' (GMT +3:30) Tehran', ShortDescr: '' }, 165 { GMTOffset: 3.0, Descr: ' (GMT +3:00) Baghdad, Riyadh, Moscow, St. Petersburg', ShortDescr: '' }, 166 { GMTOffset: 2.0, Descr: ' (GMT +2:00) Kaliningrad, South Africa', ShortDescr: '' }, 167 { GMTOffset: 1.0, Descr: ' (GMT +1:00 hour) Brussels, Copenhagen, Madrid, Paris', ShortDescr: '' }, 168 { GMTOffset: -12.0, Descr: ' (GMT -12:00) Eniwetok, Kwajalein', ShortDescr: '' }, 169 { GMTOffset: -11.0, Descr: ' (GMT -11:00) Midway Island, Samoa', ShortDescr: '' }, 170 { GMTOffset: -10.0, Descr: ' (GMT -10:00) Hawaii', ShortDescr: 'HST' }, 171 { GMTOffset: -9.0, Descr: ' (GMT -9:00) Alaska', ShortDescr: 'AKST' }, 172 { GMTOffset: -8.0, Descr: ' (GMT -8:00) Pacific Time (US & Canada)', ShortDescr: 'PST' }, 173 { GMTOffset: -7.0, Descr: ' (GMT -7:00) Mountain Time (US & Canada)', ShortDescr: 'MST' }, 174 { GMTOffset: -6.0, Descr: ' (GMT -6:00) Central Time (US & Canada), Mexico City', ShortDescr: 'CST' }, 175 { GMTOffset: -5.0, Descr: ' (GMT -5:00) Eastern Time (US & Canada), Bogota, Lima', ShortDescr: 'EST' }, 176 { GMTOffset: -4.5, Descr: ' (GMT -4:30) Caracas', ShortDescr: '' }, 177 { GMTOffset: -4.0, Descr: ' (GMT -4:00) Atlantic Time (Canada), La Paz', ShortDescr: 'EDT' }, 178 { GMTOffset: -3.5, Descr: ' (GMT -3:30) Newfoundland', ShortDescr: '' }, 179 { GMTOffset: -3.0, Descr: ' (GMT -3:00) Brazil, Buenos Aires, Georgetown', ShortDescr: '' }, 180 { GMTOffset: -2.0, Descr: ' (GMT -2:00) Mid-Atlantic', ShortDescr: '' }, 181 { GMTOffset: -1.0, Descr: ' (GMT -1:00 hour) Azores, Cape Verde Islands', ShortDescr: '' }, 182 { GMTOffset: 0.0, Descr: ' (GMT) Western Europe Time, London, Lisbon, Casablanca', ShortDescr: 'GMT' }, 183 { GMTOffset: 5.5, Descr: ' (GMT +5:30) Bombay, Calcutta, Madras, New Delhi', ShortDescr: '' }, 184 { GMTOffset: 5.75, Descr: ' (GMT +5:45) Kathmandu', ShortDescr: '' }, 185 { GMTOffset: 6.0, Descr: ' (GMT +6:00) Almaty, Dhaka, Colombo', ShortDescr: '' }, 186 { GMTOffset: 7.0, Descr: ' (GMT +7:00) Bangkok, Hanoi, Jakarta', ShortDescr: '' }, 187 { GMTOffset: 8.0, Descr: ' (GMT +8:00) Beijing, Perth, Singapore, Hong Kong', ShortDescr: '' }, 188 { GMTOffset: 9.0, Descr: ' (GMT +9:00) Tokyo, Seoul, Osaka, Sapporo, Yakutsk', ShortDescr: '' }, 189 { GMTOffset: 9.5, Descr: ' (GMT +9:30) Adelaide, Darwin', ShortDescr: '' }, 190 { GMTOffset: 10.0, Descr: ' (GMT +10:00) Eastern Australia, Guam, Vladivostok', ShortDescr: '' }, 191 { GMTOffset: 11.0, Descr: ' (GMT +11:00) Magadan, Solomon Islands, New Caledonia', ShortDescr: '' }, 192 { GMTOffset: 12.0, Descr: ' (GMT +12:00) Auckland, Wellington, Fiji, Kamchatka', ShortDescr: '' }, 193 ], 194 GetLocalTimeZoneDisplay: function () { 195 var _ParentObject = this; 196 var strDisplay = ""; 197 var intLocalOffset = _ParentObject.GetLocalGMTOffSet(); 198 wc$.each(_ParentObject.TimeZones, function (iTZIndex, iTZValue) { 199 200 if (iTZValue.GMTOffset == intLocalOffset) { 201 202 if (iTZValue.ShortDescr != "") { 203 strDisplay = iTZValue.ShortDescr; 204 } 205 else { 206 strDisplay = iTZValue.Descr; 207 }; 208 209 return false; //break 210 }; 211 }); 212 213 return strDisplay; 214 }, 215 IsJSONDateString: function (value) { 216 var _ParentObject = this; 217 var bolResult = false; 218 219 220 if (_ParentObject.IsJSONUTCDateString(value) == true || _ParentObject.IsJSONMicrosoftDateString(value) == true) { 221 bolResult = true; 222 }; 223 224 return bolResult; 225 }, 226 IsJSONUTCDateString: function (value) { 227 var _ParentObject = this; 228 var bolResult = false; 229 try { 230 if (value.match(/\d{4}-\d{1,2}-\d{1,2}T\d{1,2}:\d{1,2}(:\d{1,2})?Z?/i)) 231 bolResult = true; 232 } 233 catch (ex) { 234 //ignore not a date 235 }; 236 237 return bolResult; 238 }, 239 IsJSONMicrosoftDateString: function (value) { 240 var _ParentObject = this; 241 var bolResult = false; 242 try { 243 if (_ParentObject.Startswith(value, "/Date")) { 244 245 bolResult = true; 246 }; 247 } 248 catch (ex) { 249 //ignore not a date 250 }; 251 252 return bolResult; 253 }, 254 255 256 AFT: "", 257 SecureWebRoot: "", 258 //Gateway Functions 259 GetGatewayURL: function () { 260 var _ParentObject = this; 261 var strGatewayURL = ""; 262 if (_ParentObject.AFT != undefined && _ParentObject.AFT != "") { 263 strGatewayURL = '/external/wcpages/v12/gateway/gateway.aspx?FriendlyResponse=true&AFT=' + _ParentObject.AFT; 264 } 265 else { 266 strGatewayURL = '/external/wcpages/v12/gateway/gateway.aspx?FriendlyResponse=true'; 267 }; 268 if (_ParentObject.HasQueryStringParameter("token") == true) { 269 var strCurrentURL = window.location.href; 270 var strToken = _ParentObject.GetQueryStringParameter("token", "string"); 271 if (strToken != "") { 272 strGatewayURL = strGatewayURL + "&token=" + strToken; 273 }; 274 275 }; 276 277 return strGatewayURL; 278 }, 279 GetGatewayResponse: function (gatewaydata, defaultvalue) { 280 var _ParentObject = this; 281 var _Result = defaultvalue; 282 var strData = JSON.stringify(gatewaydata); 283 var strURL = _ParentObject.GetGatewayURL(); 284 wc$.ajax( 285 { 286 type: "POST", 287 async: false, //this will force the UI to not execute other js calls before the data is loaded 288 cache: false, 289 url: strURL, 290 data: strData, 291 contentType: "application/json; charset=utf-8", 292 dataType: "json", 293 success: function (response) { 294 295 if (response.HasError == true) { 296 alert(response.Message); 297 } 298 else { 299 if (response.Response != undefined) { 300 if (response.Response != null) { 301 if (response.Response != "") { 302 _Result = JSON.parse(response.Response); 303 }; 304 }; 305 }; 306 307 308 }; 309 310 311 }, 312 error: function (xhr, textStatus, errorThrown) { 313 alert(errorThrown); 314 } 315 }); 316 317 return _Result; 318 }, 319 GetGatewayResponseASYNC: function (gatewaydata, Object, PropertyName, ResponseCompleteBooleanPropertyName, ResponseInProgressBooleanPropertyName, PopulatedPropertyHasValuesTruePropertyName, PopulatedPropertyHasValuesFalsePropertyName, ResponseReturnedObject, PopulatedPropertyHasValuesObject) { 320 var _ParentObject = this; 321 var strData = JSON.stringify(gatewaydata); 322 var strGatewayURL = _ParentObject.GetGatewayURL(); 323 wc$.ajax( 324 { 325 type: "POST", 326 async: true, 327 cache: false, 328 url: strGatewayURL, 329 data: strData, 330 contentType: "application/json; charset=utf-8", 331 dataType: "json", 332 success: function (response) { 333 334 if (response.HasError == true) { 335 alert(response.Message); 336 337 } 338 else { 339 340 var objData 341 342 if (response.Response != undefined && response.Response != "") { 343 objData = JSON.parse(response.Response); 344 }; 345 346 if (Object != undefined) { 347 _ParentObject.SetObjectPropertyValue(Object, PropertyName, objData); 348 }; 349 350 351 352 //if necessary set any indicators that the response has returned 353 if (ResponseCompleteBooleanPropertyName != undefined) { 354 if (ResponseReturnedObject != undefined) { 355 _ParentObject.SetObjectPropertyValue(ResponseReturnedObject, ResponseCompleteBooleanPropertyName, true); 356 } 357 else { 358 _ParentObject.SetObjectPropertyValue(Object, ResponseCompleteBooleanPropertyName, true); 359 }; 360 361 }; 362 if (ResponseInProgressBooleanPropertyName != undefined) { 363 if (ResponseReturnedObject != undefined) { 364 _ParentObject.SetObjectPropertyValue(ResponseReturnedObject, ResponseInProgressBooleanPropertyName, false); 365 } 366 else { 367 _ParentObject.SetObjectPropertyValue(Object, ResponseInProgressBooleanPropertyName, false); 368 }; 369 370 }; 371 372 //if necessary set any indicators that the populated property has values or not - for arrays 373 //Has Values Property Setting 374 if (PopulatedPropertyHasValuesTruePropertyName != undefined) { 375 if (PopulatedPropertyHasValuesObject != undefined) { 376 if (_ParentObject.GetObjectPropertyValue(Object, PropertyName).length > 0) { 377 _ParentObject.SetObjectPropertyValue(PopulatedPropertyHasValuesObject, PopulatedPropertyHasValuesTruePropertyName, true); 378 } 379 else { 380 _ParentObject.SetObjectPropertyValue(PopulatedPropertyHasValuesObject, PopulatedPropertyHasValuesTruePropertyName, false); 381 }; 382 383 } 384 else { 385 386 if (_ParentObject.GetObjectPropertyValue(Object, PropertyName).length > 0) { 387 _ParentObject.SetObjectPropertyValue(Object, PopulatedPropertyHasValuesTruePropertyName, true); 388 } 389 else { 390 _ParentObject.SetObjectPropertyValue(Object, PopulatedPropertyHasValuesTruePropertyName, false); 391 }; 392 393 }; 394 395 }; 396 397 398 //No Value Property Setting 399 if (PopulatedPropertyHasValuesFalsePropertyName != undefined) { 400 401 402 if (PopulatedPropertyHasValuesObject != undefined) { 403 if (_ParentObject.GetObjectPropertyValue(Object, PropertyName).length > 0) { 404 _ParentObject.SetObjectPropertyValue(PopulatedPropertyHasValuesObject, PopulatedPropertyHasValuesFalsePropertyName, false); 405 } 406 else { 407 _ParentObject.SetObjectPropertyValue(PopulatedPropertyHasValuesObject, PopulatedPropertyHasValuesFalsePropertyName, true); 408 }; 409 410 } 411 else { 412 413 if (_ParentObject.GetObjectPropertyValue(Object, PropertyName).length > 0) { 414 _ParentObject.SetObjectPropertyValue(Object, PopulatedPropertyHasValuesFalsePropertyName, false); 415 } 416 else { 417 _ParentObject.SetObjectPropertyValue(Object, PopulatedPropertyHasValuesFalsePropertyName, true); 418 }; 419 420 }; 421 422 }; 423 424 425 } 426 427 428 }, 429 error: function (xhr, textStatus, errorThrown) { alert(errorThrown); } 430 }); 431 }, 432 GetGatewayResponseASYNCWithSuccessFunction: function (gatewaydata, successfunctionwithresponseparam) { 433 var _ParentObject = this; 434 435 wc$.ajax( 436 { 437 type: "POST", 438 async: true, 439 cache: false, 440 url: _ParentObject.GetGatewayURL(), 441 data: JSON.stringify(gatewaydata), 442 contentType: "application/json; charset=utf-8", 443 dataType: "json", 444 context: _ParentObject, //sets the this var to the parent object in the success callback 445 success: successfunctionwithresponseparam, 446 error: function (xhr, textStatus, errorThrown) { alert(errorThrown); } 447 }); 448 }, 449 450 //URL Functions 451 GetQueryStringParameter: function (ParamName, expectedtype) { 452 var query = window.location.search.substring(1); 453 454 var parms = query.split('&'); 455 var result = ''; 456 457 for (var i = 0; i < parms.length; i++) { 458 var pos = parms[i].indexOf('='); 459 460 if (pos > 0) { 461 var key = parms[i].substring(0, pos); 462 if (ParamName.toLowerCase() == key.toLowerCase()) { 463 var val = parms[i].substring(pos + 1); 464 result = decodeURIComponent(val); 465 } 466 } 467 468 } 469 470 if (expectedtype.toLowerCase() == 'boolean') { 471 if (result.toLowerCase() == 'true') { 472 result = true; 473 } 474 else { 475 result = false; 476 } 477 } 478 479 if (expectedtype.toLowerCase() == 'number') { 480 if (result == '') { 481 result = 0; 482 } 483 else { 484 result = parseFloat(result); 485 } 486 } 487 488 if (expectedtype.toLowerCase() == 'date') { 489 if (result == '') { 490 result = new Date(); 491 } 492 else { 493 result = Date.parse(result); 494 } 495 } 496 497 return result; 498 }, 499 HasQueryStringParameter: function (ParamName) { 500 var query = window.location.search.substring(1); 501 502 var parms = query.split('&'); 503 var result = false; 504 505 for (var i = 0; i < parms.length; i++) { 506 var pos = parms[i].indexOf('='); 507 508 if (pos > 0) { 509 var key = parms[i].substring(0, pos); 510 if (ParamName.toString().toLowerCase() == key.toString().toLowerCase()) { 511 result = true; 512 } 513 } 514 515 } 516 return result; 517 }, 518 GetFeatureUpcomingAction: function () { 519 alert('Feature Upcoming'); return false; 520 }, 521 GetFeatureUpcomingActionNewWindow: function () { 522 523 var objWindow = window.open("", "newwin", "height=400, width=400,toolbar=no,scrollbars=" + scroll + ",menubar=no"); 524 objWindow.document.write("<html>"); 525 objWindow.document.write("<title>Upcoming Feature</title>"); 526 objWindow.document.write("<body>"); 527 objWindow.document.write("<br />"); 528 objWindow.document.write("<br />"); 529 objWindow.document.write("<br />"); 530 objWindow.document.write("<br />"); 531 objWindow.document.write("<br />"); 532 objWindow.document.write("<br />"); 533 objWindow.document.write("<h1 style='align:middle'>Feature Upcoming</h1>"); 534 objWindow.document.write("<br />"); 535 objWindow.document.write("<br />"); 536 objWindow.document.wr
536ite("<br />"); 537 objWindow.document.write("<br />"); 538 objWindow.document.write("<br />"); 539 objWindow.document.write("<br />"); 540 objWindow.document.write("</body>"); 541 objWindow.document.write("</html>"); 542 543 objWindow.document.close(); 544 //self.name = "main" 545 546 }, 547 GetFeatureNotAvailableOnWebURL: function (FeatureName) { 548 var strURL = mobj_ViewModel.GetWCURL("/external/wcpages/v12/webclient/WebClientFeatureNotAvailable.aspx?Feature=" + FeatureName); 549 return strURL; 550 }, 551 GetUrlParts: function (url) { 552 var a = document.createElement('a'); 553 a.href = url; 554 555 return { 556 href: a.href, 557 host: a.host, 558 hostname: a.hostname, 559 port: a.port, 560 pathname: a.pathname, 561 protocol: a.protocol, 562 hash: a.hash, 563 search: a.search 564 }; 565 }, 566 GetWCURL: function (url) { 567 var strURL = url; 568 //TODO check for /cwt if needed 569 return strURL; 570 }, 571 572 573 //Window Functions 574 OpenNewWindow: function (url, title) { 575 var _ParentObject = this; 576 577 if (title == undefined) { 578 title = "_blank"; 579 }; 580 var objNewWin = window.open(url, title); 581 if (objNewWin && objNewWin.top) { 582 // popup has opened do nothing else 583 } else { 584 // popup has been blocked notify the user 585 if (_ParentObject.IsBrowserEmbeddedInSmartClient == false) { 586 alert("You browser has blocked " + url + " from opening. Please add this url to your trusted sites."); 587 }; 588 589 } 590 591 592 }, 593 594 //Cookie Functions 595 GetCookieValue: function (name, expectedtype) { 596 var _ParentObject = this; 597 598 var result = ''; 599 var nameEQ = name + "="; 600 var ca = document.cookie.split(';'); 601 for (var i = 0; i < ca.length; i++) { 602 var c = ca[i]; 603 while (c.charAt(0) == ' ') c = c.substring(1, c.length); 604 if (c.indexOf(nameEQ) == 0) { 605 result = c.substring(nameEQ.length, c.length); 606 break; 607 }; 608 }; 609 610 if (expectedtype.toLowerCase() == 'boolean') { 611 if (result.toLowerCase() == 'true') { 612 result = true; 613 } 614 else { 615 result = false; 616 } 617 }; 618 619 if (expectedtype.toLowerCase() == 'number') { 620 if (result == '') { 621 result = 0; 622 } 623 else { 624 result = parseFloat(result); 625 } 626 }; 627 628 if (expectedtype.toLowerCase() == 'date') { 629 if (result == '') { 630 result = new Date(); 631 } 632 else { 633 result = Date.parse(result); 634 } 635 }; 636 637 return result; 638 }, 639 640 SetCookie: function setCookie(cookiename, value, expiredays) { 641 var exdate = new Date(); 642 exdate.setDate(exdate.getDate() + expiredays); 643 var c_value = escape(value) + ((expiredays == null) ? "" : "; expires=" + exdate.toUTCString()) + "; path=/"; 644 document.cookie = cookiename + "=" + c_value; 645 }, 646 //Object Functions 647 CloneObject: function (sourceobject) { 648 var obj; 649 obj = JSON.parse(JSON.stringify(sourceobject)); 650 651 return obj; 652 }, 653 CopyObjectPropertyValues: function (SourceObject, DestinationObject) { 654 var _ParentObject = this; 655 656 for (var prop in SourceObject) { 657 if (SourceObject.hasOwnProperty(prop) == true) { 658 659 if (prop != "_events" && prop != "uid" && prop != "parent") { 660 if (DestinationObject[prop] != null && DestinationObject[prop] != undefined) { 661 _ParentObject.SetObjectPropertyValue(DestinationObject, prop, SourceObject[prop]); 662 }; 663 }; 664 665 }; 666 667 668 }; 669 }, 670 GetObjectDefaultValue: function (expectedtype) { 671 var _defaultvalue = ''; 672 673 if (expectedtype.toLowerCase() == 'boolean') { 674 _defaultvalue = false; 675 }; 676 677 if (expectedtype.toLowerCase() == 'number') { 678 _defaultvalue = 0; 679 }; 680 681 if (expectedtype.toLowerCase() == 'date') { 682 _defaultvalue = new Date(); 683 }; 684 685 return _defaultvalue; 686 }, 687 SetObjectPropertyValue: function (Object, Property, Value) { 688 689 if (Object.set == undefined) { 690 Object[Property] = Value; 691 } 692 else { 693 Object.set(Property, Value); 694 }; 695 }, 696 SetObjectPropertyValueIfDifferent: function (Object, Property, Value) { 697 var _ParentObject = this; 698 if (_ParentObject.GetObjectPropertyValue(Object, Property) != Value) { 699 _ParentObject.SetObjectPropertyValue(Object, Property, Value); 700 }; 701 }, 702 GetObjectPropertyValue: function (Object, Property) { 703 704 if (Object.get == undefined) { 705 return Object[Property]; 706 } 707 else { 708 return Object.get(Property); 709 }; 710 }, 711 GetObjectPropertyValueOrDefault: function (Object, Property, ExpectedType) { 712 var _ParentObject = this; 713 var _ObjectValue = undefined; 714 if (Object != undefined) { 715 if (Object.get == undefined) { 716 _ObjectValue = Object[Property]; 717 } 718 else { 719 _ObjectValue = Object.get(Property); 720 }; 721 }; 722 723 if (_ObjectValue == null) { 724 _ObjectValue = _ParentObject.GetObjectDefaultValue(ExpectedType); 725 }; 726 if (_ObjectValue == undefined) { 727 _ObjectValue = _ParentObject.GetObjectDefaultValue(ExpectedType); 728 }; 729 730 return _ObjectValue; 731 }, 732 GetObjectOwnedPropertyNames: function (obj) { 733 734 var keys = []; 735 if (typeof Object.getOwnPropertyNames !== "function") { 736 //for ie 8 support 737 738 739 // Only iterate the keys if we were given an object, and 740 // a special check for null, as typeof null == "object" 741 if (typeof obj === "object" && obj !== null) { 742 // Use a standard for in loop 743 for (var x in obj) { 744 // A for in will iterate over members on the prototype 745 // chain as well, but Object.getOwnPropertyNames returns 746 // only those directly on the object, so use hasOwnProperty. 747 if (obj.hasOwnProperty(x)) { 748 keys.push(x); 749 } 750 } 751 } 752 753 return keys; 754 755 } 756 else { 757 758 var aryKeys = Object.getOwnPropertyNames(obj); 759 wc$.each(aryKeys, function (intKeyIndex) { 760 761 if (aryKeys[intKeyIndex] != "_events") { 762 763 keys.push(aryKeys[intKeyIndex]); 764 } 765 }); 766 return keys; 767 } 768 }, 769 IsNotNullOrUndefined: function (Object) { 770 var bol = false; 771 if (Object != undefined) { 772 if (Object != null) { 773 bol = true; 774 }; 775 }; 776 777 return bol; 778 }, 779 IsNullOrUndefined: function (Object) { 780 var bol = false; 781 if (Object == undefined) { 782 bol = true; 783 } 784 else { 785 if (Object == null) { 786 bol = true; 787 }; 788 789 }; 790 791 return bol; 792 }, 793 794 //Object Collection State Change Tracking 795 TrackObjectCollectionStateChanges: function (ObservableObject) { 796 797 var _ParentObject = this; 798 if (ObservableObject == undefined) { 799 //set it to the entire ViewModel 800 ObservableObject = _ParentObject 801 }; 802 803 ObservableObject.bind("change", function (e) { 804 //Added = 0 805 //Modified = 1 806 //Removed = 2 807 //Hidden = 3 808 //Unchanged = 4 809 if (e.items != undefined) { 810 if (e.items.length > 0) { 811 wc$.each(e.items, function (indexChangeTracking) { 812 var objChangeTrackingObject = e.items[indexChangeTracking]; 813 var intChangeTrackingValue = 1; 814 815 if (e.action.toLowerCase() == "add") { 816 intChangeTrackingValue = 0; 817 }; 818 if (e.action.toLowerCase() == "itemchange") { 819 intChangeTrackingValue = 1; 820 }; 821 if (e.action.toLowerCase() == "remove") { 822 intChangeTrackingValue = 2; 823 }; 824 825 //do not use set here as it will degrade performance 826 objChangeTrackingObject.ObjectCollectionState = intChangeTrackingValue; 827 828 829 }); 830 831 }; 832 }; 833 834 }); 835 }, 836 837 //Object Collection State Change Tracking Reset 838 ResetObjectCollectionStateChangeTracking: function (array) { 839 wc$.each(array, function (i) { 840 var objChangeTrackingObject = array[i]; 841 842 objChangeTrackingObject.ObjectCollectionState = 4; 843 }); 844 }, 845 GetObjectCollectionTrackingChanges: function (array) { 846 var aryChangedItems = []; 847 var _ParentObject = this; 848 //Added = 0 849 //Modified = 1 850 //Removed = 2 851 //Hidden = 3 852 //Unchanged = 4 853 aryChangedItems = _ParentObject.GetAllObjectsInArrayWithPropertyValues(array, "ObjectCollectionState", [0, 1, 2]); 854 return aryChangedItems; 855 }, 856
857 //Array Functions 858 DynamicSort: function (propertyname) { 859 return function (a, b) { 860 return (a[propertyname] < b[propertyname]) ? -1 : (a[propertyname] > b[propertyname]) ? 1 : 0; 861 }; 862 }, 863 SetArrayItemPositionPropertyValuesIfNecessary: function (array, propertyname) { 864 var _ParentObject = this; 865 866 //Ensure there is a display order other than 0 867 var intNextUnassignedPosition = _ParentObject.GetMaxArrayItemNumberValueOrOneWhicheverIsGreater(array, propertyname); 868 869 for (var i = 0; i < array.length; i++) { 870 var objItem = array[i]; 871 var intItemValue = objItem[propertyname]; 872 if (intItemValue == 0) { 873 objItem[propertyname] = _ParentObject.GetMaxArrayItemNumberValueOrOneWhicheverIsGreater(array, propertyname) + 1; 874 875 } 876 else { 877 var aryItemsUpToTheCurrentPoint = array.slice(0, i); 878 879 if (_ParentObject.GetAllObjectsInArrayWithPropertyValue(aryItemsUpToTheCurrentPoint, propertyname, intItemValue).length > 0) { 880 881 objItem[propertyname] = _ParentObject.GetMaxArrayItemNumberValueOrOneWhicheverIsGreater(array, propertyname) + 1; 882 }; 883 }; 884 885 886 }; 887 }, 888 DecrementArrayItemPostionProperty: function (array, propertyname, currentvalue) { 889 var _ParentObject = this; 890 891 var intNewValue = currentvalue - 1; 892 var intLastArrayIndex = array.length - 1; 893 894 var intMinValue = 1; 895 var intMaxValue = 0; //array[intLastArrayIndex].get(propertyname); 896 for (var i = 0; i < array.length; i++) { 897 if (array[i].get(propertyname) > intMaxValue) { 898 intMaxValue = array[i].get(propertyname); 899 } 900 } 901 902 if (intMaxValue < intLastArrayIndex + 1) { 903 intMaxValue = intLastArrayIndex + 1; 904 } 905 906 for (var i = 0; i < array.length; i++) { 907 908 var objItem = array[i]; 909 var currentItemvalue = _ParentObject.GetObjectPropertyValue(objItem, propertyname); 910 911 if (_ParentObject.IsNumeric(currentItemvalue) == false) { 912 currentItemvalue = 0; 913 } 914 else { 915 currentItemvalue = parseFloat(currentItemvalue); 916 917 }; 918 919 if (currentItemvalue == currentvalue) { 920 //decrement it 1 921 currentItemvalue = currentItemvalue - 1; 922 } 923 else { 924 if (currentItemvalue == intNewValue) { 925 //increment it 1 more 926 currentItemvalue = currentItemvalue + 1; 927 } 928 } 929 930 //don't allow the value to be higher or lower than the min and max values 931 if (currentItemvalue <= intMinValue) { 932 currentItemvalue = intMinValue; 933 } 934 935 if (currentItemvalue >= intMaxValue) { 936 currentItemvalue = intMaxValue; 937 } 938 939 objItem.set(propertyname, currentItemvalue); 940 941 } 942 //now set the value of the one you want 943 //this is the item we want to move 944 //array[currentposition].set(propertyname, intNewDisplayOrder); 945 }, 946 IncrementArrayItemPostionProperty: function (array, propertyname, currentvalue) { 947 var _ParentObject = this; 948 949 var intNewValue = currentvalue + 1; 950 var intLastArrayIndex = array.length - 1; 951 952 var intMinValue = 1; 953 var intMaxValue = 0; //array[intLastArrayIndex].get(propertyname); 954 for (var i = 0; i < array.length; i++) { 955 if (array[i].get(propertyname) > intMaxValue) { 956 intMaxValue = _ParentObject.GetObjectPropertyValue(array[i], propertyname); 957 }; 958 }; 959 960 if (intMaxValue < intLastArrayIndex + 1) { 961 intMaxValue = intLastArrayIndex + 1; 962 }; 963 964 for (var i = 0; i < array.length; i++) { 965 var objItem = array[i]; 966 var currentItemvalue = _ParentObject.GetObjectPropertyValue(objItem, propertyname); 967 if (_ParentObject.IsNumeric(currentItemvalue) == false) { 968 currentItemvalue = 0; 969 } 970 else { 971 currentItemvalue = parseFloat(currentItemvalue); 972 973 }; 974 975 if (currentItemvalue == currentvalue) { 976 //increment it 1 977 currentItemvalue = currentItemvalue + 1; 978 } 979 else { 980 if (currentItemvalue == intNewValue) { 981 //decrement it 1 982 currentItemvalue = currentItemvalue - 1; 983 }; 984 }; 985 986 //don't allow the value to be higher or lower than the min and max values 987 if (currentItemvalue <= intMinValue) { 988 currentItemvalue = intMinValue; 989 }; 990 991 if (currentItemvalue >= intMaxValue) { 992 currentItemvalue = intMaxValue; 993 }; 994 995 objItem.set(propertyname, currentItemvalue); 996 }; 997 //now set the value of the one you want 998 //this is the item we want to move 999 //array[currentposition].set(propertyname, intNewDisplayOrder); 1000 }, 1001 GetArrayIndexForPropertyValue: function (array, propertyname, value) { 1002 var intReturn = -1; 1003 for (var i = 0; i < array.length; i++) { 1004 1005 var objItem = array[i]; 1006 if (objItem[propertyname] == value) { 1007 intReturn = i; 1008 } 1009 } 1010 1011 return intReturn; 1012 },
1013 GetArrayIndexForValue: function (array, value) { 1014 var intReturn = -1; 1015 for (var i = 0; i < array.length; i++) { 1016 1017 var objItem = array[i]; 1018 if (objItem == value) { 1019 intReturn = i; 1020 } 1021 } 1022 1023 return intReturn; 1024 }, 1025 GetObjectInArrayFromPropertyValue: function (array, propertyname, value) { 1026 var objReturn = undefined; 1027 for (var intArrayIndex = 0; intArrayIndex < array.length; intArrayIndex++) { 1028 1029 var objItem = array[intArrayIndex]; 1030 if (objItem[propertyname] == value) { 1031 objReturn = objItem; 1032 break; 1033 }; 1034 }; 1035 1036 return objReturn; 1037 }, 1038 GetAllObjectsInArrayWithPropertyValue: function (array, propertyname, value) { 1039 var objReturn = []; 1040 for (var intArrayIndex = 0; intArrayIndex < array.length; intArrayIndex++) { 1041 1042 var objItem = array[intArrayIndex]; 1043 if (objItem[propertyname] != undefined) { 1044 1045 if (objItem[propertyname] == value) { 1046 objReturn.push(objItem); 1047 }; 1048 1049 }; 1050 1051 1052 }; 1053 1054 return objReturn; 1055 }, 1056 GetAllObjectsInArrayWithPropertyValues: function (array, propertyname, values) { 1057 var objReturn = []; 1058 for (var intArrayIndex = 0; intArrayIndex < array.length; intArrayIndex++) { 1059 1060 var objItem = array[intArrayIndex]; 1061 for (var intArrayIndexValues = 0; intArrayIndexValues < values.length; intArrayIndexValues++) { 1062 1063 if (objItem[propertyname] != undefined) { 1064 1065 if (objItem[propertyname] == values[intArrayIndexValues]) { 1066 objReturn.push(objItem); 1067 }; 1068 1069 }; 1070 1071 1072 }; 1073 1074 }; 1075 1076 return objReturn; 1077 }, 1078 HasObjectInArrayForPropertyValue: function (array, propertyname, value) { 1079 var _ParentObject = this; 1080 var bolObjectExists = false; 1081 var objReturnObject = _ParentObject.GetObjectInArrayFromPropertyValue(array, propertyname, value); 1082 if (objReturnObject != undefined) { 1083 bolObjectExists = true; 1084 }; 1085 1086 return bolObjectExists; 1087 }, 1088 GetMaxArrayItemNumberValueOrOneWhicheverIsGreater: function (array, propertyname) { 1089 var _ParentObject = this; 1090 var intReturn = 1; 1091 for (var i = 0; i < array.length; i++) { 1092 1093 var objItem = array[i]; 1094 if (objItem[propertyname] != undefined) { 1095 if (_ParentObject.IsNumeric(objItem[propertyname].toString()) == true) { 1096 if (parseFloat(objItem[propertyname]) > intReturn) { 1097 intReturn = parseFloat(objItem[propertyname]); 1098 }; 1099 }; 1100 }; 1101 1102 1103 }; 1104 1105 return intReturn; 1106 }, 1107 GetMaxArrayItemNumberValue: function (array, propertyname) { 1108 var _ParentObject = this; 1109 var intReturn = 0; 1110 for (var i = 0; i < array.length; i++) { 1111 1112 var objItem = array[i]; 1113 if (objItem[propertyname] != undefined) { 1114 if (_ParentObject.IsNumeric(objItem[propertyname].toString()) == true) { 1115 if (parseFloat(objItem[propertyname]) > intReturn) { 1116 intReturn = parseFloat(objItem[propertyname]); 1117 }; 1118 }; 1119 }; 1120 1121 1122 }; 1123 1124 return intReturn; 1125 }, 1126 GetMinArrayItemNumberValue: function (array, propertyname) { 1127 var _ParentObject = this; 1128 var intReturn = 1000000000000000000; 1129 for (var i = 0; i < array.length; i++) { 1130 1131 var objItem = array[i]; 1132 if (objItem[propertyname] != undefined) { 1133 if (_ParentObject.IsNumeric(objItem[propertyname].toString()) == true) { 1134 if (parseFloat(objItem[propertyname]) < intReturn) { 1135 intReturn = parseFloat(objItem[propertyname]); 1136 }; 1137 }; 1138 }; 1139 1140 1141 }; 1142 1143 if (array.length == 0) { 1144 intReturn = 0; 1145 }; 1146 return intReturn; 1147 }, 1148 ConvertArrayToCommSeperatedString: function (array) { 1149 1150 var _ParentObject = this; 1151 var strFinal = "";
1152 wc$.each(array, function (indexForArray) { 1153 1154 strFinal += array[indexForArray].toString() + ","; 1155 1156 }); 1157 1158 if (strFinal.length > 1) { 1159 strFinal = strFinal.substring(0, strFinal.length - 1) 1160 }; 1161 return strFinal; 1162 1163 1164 }, 1165 ConvertCommSeperatedStringToArray: function (commaseperatedstring) { 1166 1167 var _ParentObject = this; 1168 return _ParentObjectGetArrayFromCSV(commaseperatedstring, ",", "string"); 1169 1170 1171 }, 1172 GetPropertyNamesOfObjectsInArray: function (array) { 1173 1174 var _ParentObject = this; 1175 var aryPropertyNames = []; 1176 if (array.length > 0) { 1177 var SourceObject = array[0]; 1178 for (var prop in SourceObject) { 1179 if (SourceObject.hasOwnProperty(prop) == true) { 1180 1181 if (prop != "_events" && prop != "uid" && prop != "parent") { 1182 aryPropertyNames.push(prop.toString()); 1183 } 1184 1185 }; 1186 1187 1188 }; 1189 }; 1190 1191 1192 return aryPropertyNames; 1193 }, 1194 GetSelectedObjectsInArray: function (array, selectedbooleanpropertyname) { 1195 var _ParentObject = this; 1196 var ary = []; 1197 wc$.each(array, function (index) { 1198 var obj = array[index]; 1199 if (selectedbooleanpropertyname != undefined) { 1200 //selectedbooleanpropertyname 1201 if (_ParentObject.GetObjectPropertyValue(obj, selectedbooleanpropertyname) == true) { 1202 1203 ary.push(obj); 1204 1205 1206 }; 1207 } 1208 else { 1209 if (_ParentObject.GetObjectPropertyValue(obj, "ObjectIsSelected") == true) { 1210 1211 ary.push(obj); 1212 1213 1214 }; 1215 }; 1216 1217 1218 }); 1219 return ary; 1220 }, 1221 GetUnSelectedObjectsInArray: function (array, selectedbooleanpropertyname) { 1222 var _ParentObject = this; 1223 var ary = []; 1224 wc$.each(array, function (index) { 1225 var obj = array[index]; 1226 if (selectedbooleanpropertyname != undefined) { 1227 //selectedbooleanpropertyname 1228 if (_ParentObject.GetObjectPropertyValue(obj, selectedbooleanpropertyname) == false) { 1229 1230 ary.push(obj); 1231 1232 1233 }; 1234 } 1235 else { 1236 if (_ParentObject.GetObjectPropertyValue(obj, "ObjectIsSelected") == false) { 1237 1238 ary.push(obj); 1239 1240 1241 }; 1242 }; 1243 1244 1245 }); 1246 return ary; 1247 }, 1248 GetSelectedObjectsInArrayIDValues: function (array, idpropertyname) { 1249 var _ParentObject = this; 1250 var arySelectedIDs = []; 1251 wc$.each(_ParentObject.GetSelectedObjectsInArray(array), function (index, value) { 1252 1253 arySelectedIDs.push(_ParentObject.GetObjectPropertyValue(value, idpropertyname)); 1254 }); 1255 1256 return arySelectedIDs; 1257 }, 1258 GetUnSelectedObjectsInArrayIDValues: function (array, idpropertyname) { 1259 var _ParentObject = this; 1260 var arySelectedIDs = []; 1261 wc$.each(_ParentObject.GetUnSelectedObjectsInArray(array), function (index, value) { 1262 1263 arySelectedIDs.push(_ParentObject.GetObjectPropertyValue(value, idpropertyname)); 1264 }); 1265 1266 return arySelectedIDs; 1267 }, 1268 IsObjectAnArray: function (object) { 1269 if (object instanceof Array) { 1270 return true; 1271 } else { 1272 return false; 1273 } 1274 }, 1275 RemoveObjectsWithPropertyValueFromArray: function (array, propertyname, value) { 1276 1277 var _ParentObject = this; 1278 //var aryNewArray = []; 1279 for (var intItemToRemoveIndex = 0; intItemToRemoveIndex < array.length;) { 1280 1281 var obj = array[intItemToRemoveIndex]; 1282 if (_ParentObject.GetObjectPropertyValue(obj, propertyname) == value) { 1283 //do nothing 1284 array.splice(intItemToRemoveIndex, 1); 1285 intItemToRemoveIndex = intItemToRemoveIndex - 1; 1286 }; 1287 1288 intItemToRemoveIndex = intItemToRemoveIndex + 1; 1289 }; 1290 1291 1292 }, 1293 RemoveObjectsWithPropertyValueGreaterThanFromArray: function (array, propertyname, value) { 1294 1295 var _ParentObject = this; 1296 //var aryNewArray = []; 1297 for (var intItemToRemoveIndex = 0; intItemToRemoveIndex < array.length;) { 1298 1299 var obj = array[intItemToRemoveIndex]; 1300 if (_ParentObject.GetObjectPropertyValue(obj, propertyname) > value) { 1301 1302 array.splice(intItemToRemoveIndex, 1); 1303 intItemToRemoveIndex = intItemToRemoveIndex - 1; 1304 }; 1305 1306 intItemToRemoveIndex = intItemToRemoveIndex + 1; 1307 }; 1308 1309 1310 }, 1311 RemoveObjectsWithPropertyValueLessThanFromArray: function (array, propertyname, value) { 1312 var _ParentObject = this; 1313 for (var intItemToRemoveIndex = 0; intItemToRemoveIndex < array.length;) { 1314 1315 var obj = array[intItemToRemoveIndex]; 1316 if (_ParentObject.GetObjectPropertyValue(obj, propertyname) < value) { 1317 1318 array.splice(intItemToRemoveIndex, 1); 1319 intItemToRemoveIndex = intItemToRemoveIndex - 1; 1320 }; 1321 1322 intItemToRemoveIndex = intItemToRemoveIndex + 1; 1323 }; 1324 }, 1325 RemoveExpiredObjectsFromArrayOfDateAndTime: function (array, datepropertyname, timepropertyname, value) { 1326 var _ParentObject = this; 1327 1328 if (value instanceof Date) { 1329 //console.log("Control value: " + value + " is a date"); 1330 1331 for (var intItemToRemoveIndex = 0; intItemToRemoveIndex < array.length;) { 1332 var obj = array[intItemToRemoveIndex]; 1333 var datevalue = _ParentObject.GetObjectPropertyValue(obj, datepropertyname); 1334 1335 //console.log("Property value: " + datevalue + " is a date"); 1336 1337 if (datevalue instanceof Date) { 1338 datevalue = _ParentObject.GetDateFromDateAndTimeString(datevalue, _ParentObject.GetObjectPropertyValue(obj, timepropertyname)); 1339 1340 if (_ParentObject.GetObjectPropertyValue(obj, timepropertyname) == "") { 1341 datevalue.setDate(datevalue.getDate() + 1); 1342 } 1343 1344 //console.log("New Date: " + datevalue); 1345 if (datevalue < value) { 1346 array.splice(intItemToRemoveIndex, 1); 1347 intItemToRemoveIndex = intItemToRemoveIndex - 1; 1348 } 1349 } 1350 1351 intItemToRemoveIndex = intItemToRemoveIndex + 1; 1352 } 1353 } 1354 }, 1355 RemoveObjectsFromArrayBeforeOfDateAndTime: function (array, datepropertyname, timepropertyname, value) { 1356 var _ParentObject = this; 1357 1358 if (value instanceof Date) { 1359 for (var intItemToRemoveIndex = 0; intItemToRemoveIndex < array.length;) { 1360 var obj = array[intItemToRemoveIndex]; 1361 var datevalue = _ParentObject.GetObjectPropertyValue(obj, datepropertyname); 1362 1363 if (datevalue instanceof Date) { 1364 datevalue = _ParentObject.GetDateFromDateAndTimeString(datevalue, _ParentObject.GetObjectPropertyValue(obj, timepropertyname)); 1365 1366 if (datevalue > value) { 1367 array.splice(intItemToRemoveIndex, 1); 1368 intItemToRemoveIndex = intItemToRemoveIndex - 1; 1369 } 1370 } 1371 1372 intItemToRemoveIndex = intItemToRemoveIndex + 1; 1373 } 1374 } 1375 }, 1376 GetObjectsWithoutPropertyValueFromArray: function (array, propertyname, value) { 1377 1378 var _ParentObject = this; 1379 var aryNewArray = []; 1380 1381 wc$.each(array, function (indexGetObjectsWithoutPropertyValueFromArray) { 1382 var objGetObjectsWithoutPropertyValueFromArray = array[indexGetObjectsWithoutPropertyValueFromArray]; 1383 if (_ParentObject.GetObjectPropertyValue(objGetObjectsWithoutPropertyValueFromArray, propertyname) == value) { 1384 //do nothing 1385 } 1386 else { 1387 aryNewArray.push(objGetObjectsWithoutPropertyValueFromArray); 1388 }; 1389 1390 1391 1392 }); 1393 1394 return aryNewArray; 1395 1396 }, 1397 SortArrayByStringPropertyASC: function (array, propertyname) { 1398 1399 array.sort(function (a, b) { 1400 if (a[propertyname] != undefined) { 1401 var valueA = a[propertyname].toString().toLowerCase(); 1402 var valueB = b[propertyname].toString().toLowerCase(); 1403 if (valueA < valueB) //sort string ascending 1404 return -1; 1405 if (valueA > valueB) 1406 return 1; 1407 return 0;//default return value (no sorting) 1408 } 1409 else { 1410 return 0;//default return value (no sorting) 1411 }; 1412 1413 1414 }); 1415 }, 1416 SortArrayByStringPropertyDESC: function (array, propertyname) { 1417 array.sort(function (a, b) { 1418 if (a[propertyname] != undefined) { 1419 var valueA = a[propertyname].toString().toLowerCase(); 1420 var valueB = b[propertyname].toString().toLowerCase(); 1421 if (valueA > valueB) //sort string ascending 1422 return -1; 1423 if (valueA < valueB) 1424 return 1; 1425 return 0;//default return value (no sorting) 1426 } 1427 else { 1428 return 0;//default return value (no sorting) 1429 }; 1430 1431 }); 1432 }, 1433 SortArrayByNumberPropertyASC: function (array, propertyname) { 1434 1435 array.sort(function (a, b) { 1436 if (a[propertyname] != undefined) { 1437 return a[propertyname] - b[propertyname]; 1438 } 1439 else { 1440 return 0;//default return value (no sorting) 1441 }; 1442 1443 }); 1444 }, 1445 SortArrayByNumberPropertyDESC: function (array, propertyname) { 1446 1447 array.sort(function (a, b) { 1448 if (a[propertyname] != undefined) { 1449 return b[propertyname] - a[propertyname]; 1450 } 1451 else { 1452 return 0;//default return value (no sorting) 1453 }; 1454 1455 }); 1456 }, 1457 SortArrayByDatePropertyASC: function (array, propertyname) { 1458 1459 array.sort(function (a, b) { 1460 if (a[propertyname] != undefined) { 1461 var dateA = new Date(a[propertyname]); 1462 var dateB = new Date(b[propertyname]); 1463 return dateA - dateB; 1464 } 1465 else { 1466 return 0;//default return value (no sorting) 1467 }; 1468 1469 1470 }); 1471 }, 1472 SortArrayByDatePropertyDESC: function (array, propertyname) { 1473 1474 array.sort(function (a, b) { 1475 if (a[propertyname] != undefined) { 1476 var dateA = new Date(a[propertyname]); 1477 var dateB = new Date(b[propertyname]); 1478 return dateB - dateA; 1479 } 1480 else { 1481 return 0;//default return value (no sorting) 1482 }; 1483 1484 1485 }); 1486 }, 1487 AppendArrayToExistingArray: function (ExistingArray, ArrayToAppend) { 1488 var _ParentObject = this; 1489 if (ArrayToAppend.length > 0) { 1490 1491 for (var indexAppendArrayToExistingArray = 0; indexAppendArrayToExistingArray < ArrayToAppend.length; indexAppendArrayToExistingArray++) { 1492 ExistingArray.push(_ParentObject.CloneObject(ArrayToAppend[indexAppendArrayToExistingArray])); 1493 }; 1494 1495 1496 }; 1497 1498 }, 1499 AddObjectToBeginningOfArray: function (Array, Object) { 1500 Array.splice(0, 0, Object); 1501 }, 1502 1503 //String Functions 1504 StringToDate: function (value) { 1505 var date = Date.parse("01/01/1900"); 1506 1507 //Most date strings 1508 if (isNaN(Date.parse(value))) { 1509 1510 //Try JSON formatted date string 1511 if (!isNaN(Date.parse(this.JSONStringToDate(value)))) { 1512 date = Date.parse(this.JSONStringToDate(value)); 1513 } 1514 1515 } else { 1516 date = Date.parse(value); 1517 } 1518 1519 return new Date(date); 1520 }, 1521 StringToDateWithoutTimeZoneAdjustment: function (value) { 1522 /// <summary>tries to get the date from a string as the literal date (no timezone changes). falls back to standard date parse if it fails.</summary> 1523 1524 var date = new Date(); 1525 1526 //Most date strings 1527 //Try JSON formatted date string 1528 date = this.JSONStringToDate(value); 1529 1530 if (isNaN(date)) 1531 date = Date.parse(value); 1532 1533 return date; 1534 }, 1535 StringToInteger: function (value) { 1536 return parseInt(value); 1537 }, 1538 StringToFloat: function (value) { 1539 return parseFloat(value); 1540 }, 1541 StringToBoolean: function (val) { 1542 var objReturnValue = undefined; 1543 if (val.toLowerCase() === 'true' || val.toLowerCase() === 'yes' || val === 1) { 1544 objReturnValue = true; 1545 1546 }; 1547 if (val.toLowerCase() === 'false' || val.toLowerCase() === 'no' || val === 0) { 1548 objReturnValue = false; 1549 }; 1550 1551 return objReturnValue; 1552 }, 1553 GetTimeStringFromDate: function (date) { 1554 var intHours = date.getHours(); 1555 var intMinutes = date.getMinutes(); 1556 1557 var strHours = ""; 1558 var strMinutes = ""; 1559 var strAMPM = " "; 1560 var strReturn = ""; 1561 1562 //minutes 1563 strMinutes = intMinutes.toString(); 1564 if (strMinutes.length == 1) { 1565 strMinutes = "0" + strMinutes; 1566 } 1567 1568 //Hours 1569 if (intHours > 12) { 1570 strAMPM = "PM"; 1571 strHours = (intHours - 12).toString(); 1572 } 1573 if (intHours == 12) { 1574 strAMPM = "PM"; 1575 strHours = "12"; 1576 } 1577 if (intHours < 12) { 1578 strAMPM = "AM"; 1579 strHours = intHours.toString(); 1580 } 1581 1582 strReturn = strHours + ":" + strMinutes + " " + strAMPM; 1583 return strReturn; 1584 }, 1585 GetDateFromDateAndTimeString: function (date, time) { 1586 if (date instanceof Date && time != "" && time != null) { 1587 var yyyy = date.getFullYear().toString(); 1588 var mm = (date.getMonth() + 1).toString(); // getMonth() is zero-based 1589 var dd = date.getDate().toString(); 1590 var strDate = yyyy + "/" + mm + "/" + dd + " " + time 1591 date = new Date(strDate) 1592 1593 } 1594 1595 return date; 1596 }, 1597 IsNumeric: function (text) { 1598 return !isNaN(parseFloat(text)) && isFinite(text); 1599 }, 1600 ReplaceAll: function replaceAll(str, find, replace) { 1601 return str.replace(new RegExp(find, 'g'), replace); 1602 }, 1603 TimeOfDayArrayWithBlankItem: ["", "12:00 Midnight", "12:15 AM", "12:30 AM", "12:45 AM", "1:00 AM", "1:15 AM", "1:30 AM", "1:45 AM", "2:00 AM", "2:15 AM", "2:30 AM", "2:45 AM", "3:00 AM", "3:15 AM", "3:30 AM", "3:45 AM", "4:00 AM", "4:15 AM", "4:30 AM", "4:45 AM", "5:00 AM", "5:15 AM", "5:30 AM", "5:45 AM", "6:00 AM", "6:15 AM", "6:30 AM", "6:45 AM", "7:00 AM", "7:15 AM", "7:30 AM", "7:45 AM", "8:00 AM", "8:15 AM", "8:30 AM", "8:45 AM", "9:00 AM", "9:15 AM", "9:30 AM", "9:45 AM", "10:00 AM", "10:15 AM", "10:30 AM", "10:45 AM", "11:00 AM", "11:15 AM", "11:30 AM", "11:45 AM", "12:00 Noon", "12:15 PM", "12:30 PM", "12:45 PM", "1:00 PM", "1:15 PM", "1:30 PM", "1:45 PM", "2:00 PM", "2:15 PM", "2:30 PM", "2:45 PM", "3:00 PM", "3:15 PM", "3:30 PM", "3:45 PM", "4:00 PM", "4:15 PM", "4:30 PM", "4:45 PM", "5:00 PM", "5:15 PM", "5:30 PM", "5:45 PM", "6:00 PM", "6:15 PM", "6:30 PM", "6:45 PM", "7:00 PM", "7:15 PM", "7:30 PM", "7:45 PM", "8:00 PM", "8:15 PM", "8:30 PM", "8:45 PM", "9:00 PM", "9:15 PM", "9:30 PM", "9:45 PM", "10:00 PM", "10:15 PM", "10:30 PM", "10:45 PM", "11:00 PM", "11:15 PM", "11:30 PM", "11:45 PM"], 1604 TimeArrayWithBlankValue: [{ value: "" }, { value: "12:00 AM" }, { value: "12:15 AM" }, { value: "12:30 AM" }, { value: "12:45 AM" }, { value: "1:00 AM" }, { value: "1:15 AM" }, { value: "1:30 AM" }, { value: "1:45 AM" }, { value: "2:00 AM" }, { value: "2:15 A
1604M" }, { value: "2:30 AM" }, { value: "2:45 AM" }, { value: "3:00 AM" }, { value: "3:15 AM" }, { value: "3:30 AM" }, { value: "3:45 AM" }, { value: "4:00 AM" }, { value: "4:15 AM" }, { value: "4:30 AM" }, { value: "4:45 AM" }, { value: "5:00 AM" }, { value: "5:15 AM" }, { value: "5:30 AM" }, { value: "5:45 AM" }, { value: "6:00 AM" }, { value: "6:15 AM" }, { value: "6:30 AM" }, { value: "6:45 AM" }, { value: "7:00 AM" }, { value: "7:15 AM" }, { value: "7:30 AM" }, { value: "7:45 AM" }, { value: "8:00 AM" }, { value: "8:15 AM" }, { value: "8:30 AM" }, { value: "8:45 AM" }, { value: "9:00 AM" }, { value: "9:15 AM" }, { value: "9:30 AM" }, { value: "9:45 AM" }, { value: "10:00 AM" }, { value: "10:15 AM" }, { value: "10:30 AM" }, { value: "10:45 AM" }, { value: "11:00 AM" }, { value: "11:15 AM" }, { value: "11:30 AM" }, { value: "11:45 AM" }, { value: "12:00 PM" }, { value: "12:15 PM" }, { value: "12:30 PM" }, { value: "12:45 PM" }, { value: "1:00 PM" }, { value: "1:15 PM" }, { value: "1:30 PM" }, { value: "1:45 PM" }, { value: "2:00 PM" }, { value: "2:15 PM" }, { value: "2:30 PM" }, { value: "2:45 PM" }, { value: "3:00 PM" }, { value: "3:15 PM" }, { value: "3:30 PM" }, { value: "3:45 PM" }, { value: "4:00 PM" }, { value: "4:15 PM" }, { value: "4:30 PM" }, { value: "4:45 PM" }, { value: "5:00 PM" }, { value: "5:15 PM" }, { value: "5:30 PM" }, { value: "5:45 PM" }, { value: "6:00 PM" }, { value: "6:15 PM" }, { value: "6:30 PM" }, { value: "6:45 PM" }, { value: "7:00 PM" }, { value: "7:15 PM" }, { value: "7:30 PM" }, { value: "7:45 PM" }, { value: "8:00 PM" }, { value: "8:15 PM" }, { value: "8:30 PM" }, { value: "8:45 PM" }, { value: "9:00 PM" }, { value: "9:15 PM" }, { value: "9:30 PM" }, { value: "9:45 PM" }, { value: "10:00 PM" }, { value: "10:15 PM" }, { value: "10:30 PM" }, { value: "10:45 PM" }, { value: "11:00 PM" }, { value: "11:15 PM" }, { value: "11:30 PM" }, { value: "11:45 PM" }], 1605 StateArray: [{ State: "AK" }, { State: "AL" }, { State: "AR" }, { State: "AZ" }, { State: "CA" }, { State: "CO" }, { State: "CT" }, { State: "DE" }, { State: "DC" }, { State: "FL" }, { State: "GA" }, { State: "HI" }, { State: "IA" }, { State: "ID" }, { State: "IL" }, { State: "IN" }, { State: "KS" }, { State: "KY" }, { State: "LA" }, { State: "ME" }, { State: "MD" }, { State: "MA" }, { State: "MI" }, { State: "MN" }, { State: "MS" }, { State: "MO" }, { State: "MT" }, { State: "NC" }, { State: "ND" }, { State: "NE" }, { State: "NH" }, { State: "NJ" }, { State: "NM" }, { State: "NV" }, { State: "NY" }, { State: "OH" }, { State: "OK" }, { State: "OR" }, { State: "PA" }, { State: "RI" }, { State: "SC" }, { State: "SD" }, { State: "TN" }, { State: "TX" }, { State: "UT" }, { State: "VA" }, { State: "VT" }, { State: "WA" }, { State: "WV" }, { State: "WI" }, { State: "WY" }, { State: "AB" }, { State: "BC" }, { State: "MB" }, { State: "NB" }, { State: "NL" }, { State: "NS" }, { State: "NT" }, { State: "NU" }, { State: "ON" }, { State: "PE" }, { State: "QC" }, { State: "SK" }, { State: "YT" }, { State: "AG" }, { State: "BN" }, { State: "BS" }, { State: "CH" }, { State: "CL" }, { State: "CM" }, { State: "CP" }, { State: "DF" }, { State: "DU" }, { State: "GR" }, { State: "GT" }, { State: "JA" }, { State: "MC" }, { State: "MR" }, { State: "MX" }, { State: "NA" }, { State: "OA" }, { State: "PU" }, { State: "QE" }, { State: "QR" }, { State: "SI" }, { State: "SL" }, { State: "SO" }, { State: "TB" }, { State: "TL" }, { State: "TM" }, { State: "VE" }, { State: "YU" }, { State: "ZA" }], 1606 StateList: ["AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DE", "DC", "FL", "GA", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "ME", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WV", "WI", "WY", "AB", "BC", "MB", "NB", "NL", "NS", "NT", "NU", "ON", "PE", "QC", "SK", "YT", "AG", "BN", "BS", "CH", "CL", "CM", "CP", "DF", "DU", "GR", "GT", "JA", "MC", "MR", "MX", "NA", "OA", "PU", "QE", "QR", "SI", "SL", "SO", "TB", "TL", "TM", "VE", "YU", "ZA"], 1607 FormatAsCurrency: function (num) { 1608 num = num.toString().replace(/\$|\,/g, ''); 1609 if (isNaN(num)) num = "0"; 1610 sign = (num == (num = Math.abs(num))); 1611 num = Math.floor(num * 100 + 0.50000000001); 1612 cents = num % 100; 1613 num = Math.floor(num / 100).toString(); 1614 if (cents < 10) cents = "0" + cents; 1615 for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3) ; i++) 1616 num = num.substring(0, num.length - (4 * i + 3)) + ',' + num.substring(num.length - (4 * i + 3)); 1617 return (((sign) ? '' : '-') + '$' + num + '.' + cents); 1618 }, 1619 GetNewID: function (array, propertyname) { 1620 //Create new IDs starting with -1 and decreasing 1621 if (this.GetMinArrayItemNumberValue(array, propertyname) < 1) { 1622 return this.GetMinArrayItemNumberValue(array, propertyname) - 1; 1623 } else { 1624 return 0; 1625 } 1626 }, 1627 GetRandomString: function (length) { 1628 1629 var text = ""; 1630 var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; 1631 1632 for (var i = 0; i < length; i++) { 1633 text += possible.charAt(Math.floor(Math.random() * possible.length)); 1634 } 1635 1636 return text; 1637 1638 }, 1639 ReplaceLineBreaksWithBRTag: function (text) { 1640 return text.replace(/\n/g, '<br />'); 1641 }, 1642 Trim: function (str) { 1643 str = str.replace(/^\s+|\s+$/g, ''); 1644 return str; 1645 }, 1646 Startswith: function (string, startswith) { 1647 1648 if (typeof string == 'string' || string instanceof String) { 1649 return string.indexOf(startswith) == 0;
1650 } 1651 else { 1652 return false; 1653 }; 1654 1655 1656 }, 1657 Contains: function (string, stringcontains) { 1658 1659 return string.indexOf(stringcontains) != -1; 1660 1661 }, 1662 ToLowerAndTrim: function (string) { 1663 var _ParentObject = this; 1664 1665 return _ParentObject.Trim(string).toLowerCase(); 1666 }, 1667 1668 //Number Functions 1669 GetRandomNumber: function () { 1670 var randomnumber = Math.floor(Math.random() * 11); 1671 return randomnumber; 1672 }, 1673 GetRandomNumberLessThanZero: function () { 1674 var randomnumber = Math.floor(Math.random() * 11); 1675 if (randomnumber > 0) { 1676 randomnumber = randomnumber * -1; 1677 }; 1678 return randomnumber; 1679 }, 1680 ConvertNumericStringToInteger: function (StringNumber) { 1681 return parseInt(StringNumber, 10); 1682 }, 1683 //Date Functions 1684 secondsInMilliseconds: function (numseconds) { 1685 1686 return numseconds * 1000; 1687 }, 1688 minutesInMilliseconds: function (numminutes) { 1689 var _ParentObject = this; 1690 return _ParentObject.secondsInMilliseconds(numminutes * 60); 1691 }, 1692 hoursInMilliseconds: function (numhours) { 1693 var _ParentObject = this; 1694 return _ParentObject.minutesInMilliseconds(numhours * 60); 1695 }, 1696 daysInMilliseconds: function (numdays) { 1697 var _ParentObject = this; 1698 return _ParentObject.hoursInMilliseconds(numdays * 24); 1699 }, 1700 yearsInMilliseconds: function (numyears) { 1701 var _ParentObject = this; 1702 return _ParentObject.daysInMilliseconds(numyears * 365); 1703 }, 1704 GetDateWithNoTime: function (d) { 1705 1706 var intYear = d.getFullYear(); 1707 var intMonth = d.getMonth(); 1708 var intDay = d.getDate(); 1709 1710 var objReturnDate = new Date(intYear, intMonth, intDay, 0, 0, 0, 0); 1711 return objReturnDate; 1712 }, 1713 GetCurrentDateWithNoTime: function () { 1714 1715 1716 var d = new Date(); 1717 var intYear = d.getFullYear(); 1718 var intMonth = d.getMonth(); 1719 var intDay = d.getDate(); 1720 1721 var objReturnDate = new Date(intYear, intMonth, intDay, 0, 0, 0, 0); 1722 return objReturnDate; 1723 }, 1724 1725 //Dialog Functions 1726 DisplayDialogAlert: function (message, title) { 1727 1728 if (title = undefined) { 1729 title = "Alert"; 1730 }; 1731 jAlert(message, title); 1732 1733 }, 1734 DisplayDialogOK: function (message, title) { 1735 1736 jAlert(message, title); 1737 1738 }, 1739 DisplayDialogTemplate: function (title, template) { 1740 var kendoWindow = $("<div />").kendoWindow({ 1741 title: title, 1742 resizable: false, 1743 modal: true, 1744 content: { 1745 template: template 1746 }, 1747 close: function () { kendoWindow.data("kendoWindow").destroy() } 1748 }); 1749 kendoWindow.data("kendoWindow").center().open(); 1750 }, 1751 DisplayDialogOKCancel: function (message, title, okfunction, cancelfunction) { 1752 jConfirm(message, title, function (r) { 1753 if (r == true) { 1754 if (okfunction != null && okfunction != undefined) { 1755 okfunction(); 1756 } 1757 return true; 1758 } 1759 else { 1760 if (cancelfunction != null && cancelfunction != undefined) { 1761 cancelfunction(); 1762 } 1763 return false; 1764 } 1765 }); 1766 }, 1767 DisplayDialogYesNo: function (message, title, okfunction, cancelfunction) { 1768 if (title == undefined) { 1769 title = "Confirmation"; 1770 }; 1771 1772 jYesNo(message, title, function (r) { 1773 if (r == true) { 1774 if (okfunction != null && okfunction != undefined) { 1775 okfunction(); 1776 } 1777 return true; 1778 } 1779 else { 1780 if (cancelfunction != null && cancelfunction != undefined) { 1781 cancelfunction(); 1782 } 1783 return false; 1784 } 1785 }); 1786 }, 1787 1788 DisplayDialogYesNoOkID: function (message, title, okfunction, cancelfunction, okid) { 1789 var answer = confirm(message); 1790 1791 if (answer) { 1792 if (okfunction != null && okfunction != undefined) { 1793 okfunction(okid); 1794 } 1795 return true; 1796 } 1797 else { 1798 if (cancelfunction != null && cancelfunction != undefined) { 1799 cancelfunction(); 1800 } 1801 return false; 1802 } 1803 1804 //jYesNo(message, title, function (r) { 1805 // if (r == true) { 1806 // if (okfunction != null && okfunction != undefined) { 1807 // okfunction(okid); 1808 // } 1809 // } 1810 // else { 1811 // if (cancelfunction != null && cancelfunction != undefined) { 1812 // cancelfunction(); 1813 // } 1814 1815 // } 1816 1817 1818 //}); 1819 }, 1820 DisplayWaitDialog: function (dialogid, title) { 1821 //var _ParentObject = this; 1822 1823 var strWindowID = 'windowWait'; 1824 if (dialogid != undefined) { 1825 strWindowID = strWindowID + dialogid; 1826 }; 1827 //var strProgressBarID = 'progressbarWait' + dialogid; 1828 var strTitle = "Loading..."; 1829 if (title != undefined) { 1830 strTitle = title; 1831 }; 1832 //var objWindow = wc$('<div style="height:150px;width:150px" id="' + strWindowID + '"> <div id="' + strProgressBarID + '" ></div> </div>'); 1833 1834 //if (!objWindow.data("kendoWindow")) { 1835 // objWindow.kendoWindow({ 1836 // animation: false, 1837 // title: strTitle, 1838 // draggable: false, 1839 // modal: true, 1840 // resizable: false, 1841 // open: function () { 1842 // kendo.ui.progress(wc$("#" + strProgressBarID), true); 1843 // } 1844 1845 // });
1846 //}; 1847 1848 ////the following hides the close x on the window 1849 //wc$("#" + strWindowID).parent().find(".k-window-action").css("visibility", "hidden"); 1850 1851 //objWindow.data("kendoWindow").center().open(); 1852 1853 //wc$.blockUI({ message: wc$('<div id="' + strWindowID + '">' + strTitle + '</div>') }); 1854 wc$.blockUI({ 1855 message: '<div style="padding: 15px" id="' + strWindowID + '"><h2><img style="margin:5px" src="/External/WCControls/v12/Images/ajax-loader.gif" />' + strTitle + '</h2></div>', 1856 cursorReset: 'default', 1857 overlayCSS: { 1858 backgroundColor: '#000', 1859 opacity: 0.9, 1860 cursor: 'wait' 1861 } 1862 1863 }); 1864 1865 1866 }, 1867 CloseWaitDialog: function (dialogid) { 1868 //var strWindowID = 'windowWait' + dialogid; 1869 //var strProgressBarID = 'progressbarWait' + dialogid; 1870 //kendo.ui.progress(wc$("#" + strProgressBarID), false); 1871 1872 //var objWindow = wc$("#" + strWindowID).closest(".k-window-content").data("kendoWindow") 1873 //if (objWindow != undefined) { 1874 // objWindow.destroy(); 1875 //}; 1876 1877 wc$.unblockUI(); 1878 1879 1880 }, 1881 1882 //Export functions 1883 GetCSVSafeValue: function (value) { 1884 1885 var strValue; 1886 if (value == undefined) { 1887 strValue = '""'; 1888 } 1889 1890 else { 1891 strValue = value.toString(); 1892 strVlaue = strValue.replace(/"/g, '""'); 1893 strValue = '"' + strValue + '"'; 1894 1895 } 1896 1897 1898 return strValue; 1899 1900 }, 1901 GetCSVFromArray: function (objArray, objPropertyNames) { 1902 1903 var _ParentObject = this; 1904 1905 var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray; 1906 1907 var str = ''; 1908 var line = ''; 1909 1910 1911 1912 1913 for (var index = 0; index < objPropertyNames.length; index++) { 1914 //create header with property names 1915 var value = objPropertyNames[index]; 1916 1917 1918 if (index == 0) { 1919 line += _ParentObject.GetCSVSafeValue(value); 1920 } 1921 else { 1922 line += ', ' + _ParentObject.GetCSVSafeValue(value); 1923 } 1924 1925 1926 } 1927 1928 str += line + '\r\n'; 1929 1930 1931 for (var i = 0; i < array.length; i++) { 1932 //reset and reuse 1933 line = ''; 1934 1935 1936 for (var index = 0; index < objPropertyNames.length; index++) { 1937 1938 var strFieldName = objPropertyNames[index]; 1939 var value = array[i].get(strFieldName) 1940 1941 if (index == 0) { 1942 line += _ParentObject.GetCSVSafeValue(value); 1943 } 1944 else { 1945 line += ', ' + _ParentObject.GetCSVSafeValue(value); 1946 } 1947 1948 1949 } 1950 1951 str += line + '\r\n'; 1952 } 1953 1954 // window.open('data:application/csv;charset=utf-8,' + escape(str)); 1955 1956 1957 return str; 1958 1959 }, 1960 GetArrayFromCSV: function (CSV, Seperator, expectedtype) { 1961 var _ParentObject = this; 1962 1963 if (Seperator == undefined) { 1964 Seperator = "," 1965 }; 1966 1967 if (_ParentObject.Trim(CSV) == "") { 1968 aryValues = new Array; //empty 1969 } 1970 else { 1971 var aryValues = CSV.split(Seperator); 1972 1973 for (var intCurrent = 0; intCurrent < aryValues.length; intCurrent++) { 1974 1975 var result = aryValues[intCurrent]; 1976 1977 if (expectedtype.toLowerCase() == 'number') { 1978 1979 1980 if (result == '') { 1981 result = 0; 1982 } 1983 else { 1984 result = parseFloat(result); 1985 }; 1986 }; 1987 1988 if (expectedtype.toLowerCase() == 'date') { 1989 if (result == '') { 1990 result = new Date(); 1991 } 1992 else { 1993 result = Date.parse(result); 1994 }; 1995 }; 1996 1997 if (expectedtype.toLowerCase() == 'boolean') { 1998 if (result.toLowerCase() == 'true') { 1999 result = true; 2000 } 2001 else { 2002 result = false; 2003 }; 2004 }; 2005 }; 2006 2007 2008 if (aryValues.length == 0) { 2009 aryValues = new Array; //empty 2010 }; 2011 }; 2012 2013 return aryValues; 2014 }, 2015 GetCSVSafeValue: function (value) { 2016 2017 var strValue; 2018 if (value == undefined) { 2019 strValue = '""'; 2020 } 2021 2022 else { 2023 strValue = value.toString(); 2024 strVlaue = strValue.replace(/"/g, '""'); 2025 strValue = '"' + strValue + '"'; 2026 2027 } 2028 2029 2030 return strValue; 2031 2032 }, 2033 DownloadCSVFile: function (array, propertynames) { 2034 2035 var _ParentObject = this; 2036 var objMasterArray = []; 2037 2038 if (propertynames == undefined) { 2039 propertynames = _ParentObject.GetPropertyNamesOfObjectsInArray(array); 2040 var str = propertynames.join(","); 2041 }; 2042 2043 for (var i = 0; i < array.length; i++) { 2044 2045 var objLineArray = []; 2046 for (var index = 0; index < propertynames.length; index++) { 2047 2048 var strFieldName = propertynames[index]; 2049 var obj = array[i]; 2050 var value = _ParentObject.GetObjectPropertyValue(obj, strFieldName); 2051 2052 objLineArray.push(value); 2053 } 2054 2055 objMasterArray.push(objLineArray) 2056 } 2057 2058 var objPostData = { 2059 Namespace: 'Weblink_Core', 2060 TypeName: 'WC_ExcelUtilities', 2061 MethodName: 'CreateCSVFileOnServer', 2062 ColumnHeaders: propertynames, 2063 Values: objMasterArray 2064 2065 }; 2066 var strURL = _ParentObject.GetGatewayResponse(objPostData, null); 2067 2068 window.open(strURL); 2069 2070 2071 }, 2072 DownloadExcelFile: function (array, propertynames) { 2073 2074 var _ParentObject = this; 2075 var objMasterArray = []; 2076 2077 if (propertynames == undefined) { 2078 propertynames = _ParentObject.GetPropertyNamesOfObjectsInArray(array); 2079 }; 2080 2081 for (var i = 0; i < array.length; i++) { 2082 2083 var objLineArray = []; 2084 for (var index = 0; index < propertynames.length; index++) { 2085 2086 var strFieldName = propertynames[index]; 2087 var obj = array[i]; 2088 var value = obj.get(strFieldName); 2089 2090 objLineArray.push(value); 2091 } 2092 2093 objMasterArray.push(objLineArray) 2094 } 2095 2096 var objPostData = { 2097 Namespace: 'Weblink_Core', 2098 TypeName: 'WC_ExcelUtilities', 2099 MethodName: 'CreateExcelCSVFileOnServer', 2100 ColumnHeaders: propertynames, 2101 Values: objMasterArray 2102 2103 }; 2104 var strURL = _ParentObject.GetGatewayResponse(objPostData, null); 2105 2106 window.open(strURL); 2107 2108 2109 }, 2110 2111 //Control Functions 2112 AddCheckboxBinding: function (gridControl, checkboxClass, vmField) { 2113 //gridControl = actual control object for the Kendo Grid. Suggested to find with jQuery like this: wc$('#grdOne') 2114 //checkboxClass = string value for class assigned to the checkbox. 2115 //vmField = name of variable on model inside of VM collection. e.g.: WC_Event.EventID would be 'EventID' 2116 2117 gridControl.on('click', '.' + checkboxClass, function () { 2118 var checked = wc$(this).is(':checked'); 2119 var grid = gridControl.data().kendoGrid; 2120 var dataItem = grid.dataItem(wc$(this).closest('tr')); 2121 dataItem.set(vmField, checked); 2122 }); 2123 }, 2124 EvaluateToggleShow: function (e) { 2125 2126 /* EvaluateToggleShow: 2127 Toggles display of control (or comma separated IDs) identified in data-checktogglesdisplay attribute 2128 Example: 2129 <input id="chkShowHaveQuestion" type="checkbox" onchange="mobj_ViewModel.EvaluateToggleShow(this);" data-checktogglesdisplay="txtHaveQuestion" /> 2130 <input id="txtHaveQuestion" style="display: none" /> 2131 */ 2132 if (e.type == 'checkbox') { 2133 var targets = e.getAttribute('data-checktogglesdisplay').split(','); 2134 var targetsInverted = e.getAttribute('data-checktogglesdisplayinverted').split(','); 2135 var isChecked = e.checked; 2136 2137 for (var i = 0; i < targets.length; i++) { 2138 var targetId = wc$.trim(targets[i]); 2139 if (targetId != "") { 2140 var target = document.getElementById(targetId); 2141 2142 if (!isChecked) { 2143 //Hide 2144 target.style.display = 'none'; 2145 } 2146 else { 2147 //Show 2148 switch (target.tagName) { 2149 case 'TR': 2150 //Table row display handling 2151 target.style.display = 'table-row'; 2152 break; 2153 case 'TD': 2154 //Table cell display handling 2155 target.style.display = 'table-cell'; 2156 break; 2157 case 'TABLE': 2158 //Table display handling 2159 target.style.display = 'table'; 2160 break; 2161 default: 2162 //Default display handling 2163 target.style.display = 'block'; 2164 break; 2165 } 2166 } 2167 } 2168 } 2169 for (var i = 0; i < targetsInverted.length; i++) { 2170 var targetId = wc$.trim(targetsInverted[i]) 2171 if (targetId != "") { 2172 var target = document.getElementById(targetId) 2173 2174 if (isChecked) { 2175 //Show 2176 target.style.display = 'none'; 2177 } 2178 else { 2179 //Hide 2180 switch (target.tagName) { 2181 case 'TR': 2182 //Table row display handling 2183 target.style.display = 'table-row'; 2184 break; 2185 case 'TD': 2186 //Table cell display handling 2187 target.style.display = 'table-cell'; 2188 break; 2189 case 'TABLE': 2190 //Table display handling 2191 target.style.display = 'table'; 2192 break; 2193 default: 2194 //Default display handling 2195 target.style.display = 'block'; 2196 break; 2197 } 2198 } 2199 } 2200 } 2201 } 2202 }, 2203 EvaluateToggleCheckbox: function (e) { 2204 if (e.type == 'checkbox') { 2205 var targets = e.getAttribute('data-checktogglescheckbox').split(','); 2206 var targetsInverted = e.getAttribute('data-checktogglescheckboxinverted').split(','); 2207 var isChecked = e.checked; 2208 2209 for (var i = 0; i < targets.length; i++) { 2210 var targetId = wc$.trim(targets[i]) 2211 if (targetId != "") { 2212 var target = document.getElementById(targetId) 2213 2214 if (!isChecked) { 2215 //Check 2216 target.checked = true; 2217 } 2218 else { 2219 //Uncheck 2220 target.checked = false; 2221 } 2222 } 2223 } 2224 for (var i = 0; i < targetsInverted.length; i++) { 2225 var targetId = wc$.trim(targetsInverted[i]) 2226 if (targetId != "") { 2227 var target = document.getElementById(targetId) 2228 2229 if (isChecked) { 2230 //Uncheck 2231 target.checked = true; 2232 } 2233 else { 2234 //Check 2235 target.checked = false; 2236 } 2237 } 2238 } 2239 } 2240 }, 2241 UIControlDataTypes: [{ Name: "Text", Value: "TextboxSingleLine" }, { Name: "Text (Multi-Line)", Value: "TextboxMultiLine" }, { Name: "Number (Decimal)", Value: "NumberInputDecimal" }, { Name: "Number (No Decimal)", Value: "NumberInputNoDecimal" }, { Name: "Yes-No", Value: "Checkbox" }, { Name: "Drop Down List", Value: "DropdownList" }], 2242 2243 2244 //Authenticated User Methods 2245 IsBrowserEmbeddedInSmartClient: function () { 2246 var strURL = window.location.toString(); 2247 strURL = strURL.toLowerCase(); 2248 var intIndex = strURL.indexOf("mp=smartclient"); 2249 if (intIndex >= 0) { 2250 return true; 2251 } 2252 else { 2253 return false; 2254 } 2255 }, 2256 IsBrowserNotEmbeddedInSmartClient: function () { 2257 var _ParentObject = this; 2258 if (_ParentObject.IsBrowserEmbeddedInSmartClient() == true) { 2259 return false; 2260 } 2261 else { 2262 return true; 2263 } 2264 }, 2265 IsAuthenticatedWebClientUser: function () { 2266 var _ParentObject = this; 2267 var bol = false; 2268 var strValue = _ParentObject.GetCookieValue("WC_WebClientCookie", "String"); 2269 //var strValue = _ParentObject.GetCookieValue("Weblink_AuthenticatedAs", "String"); 2270 //WC_WebClientCookie 2271 if (strValue != undefined) { 2272 if (strValue != null) { 2273 if (strValue != '') { 2274 var objPostData = { 2275 Namespace: 'Weblink_Core', 2276 TypeName: 'WC_LogonManager', 2277 MethodName: 'IsTokenValid', 2278 TokenToValidate: strValue 2279 }; 2280 2281 var objData = _ParentObject.GetGatewayResponse(objPostData, null); 2282 2283 bol = objData; 2284 }; 2285 }; 2286 }; 2287 2288 2289 2290 return bol; 2291 }, 2292 IsActionAllowedForUsersRole: function (action, allowreadonly) { 2293 var _ParentObject = this; 2294 var bol = false; 2295 var strValue = _ParentObject.GetCookieValue("WC_WebClientCookie", "String"); 2296 if (action == '') { action = '' }; 2297 if (strValue != undefined) { 2298 if (strValue != null) { 2299 if (strValue != '') { 2300 var objPostData = { 2301 Namespace: 'Weblink_Core', 2302 TypeName: 'WC_LogonManager', 2303 MethodName: 'IsActionAllowedForUsersRoleByToken', 2304 UserToken: strValue, 2305 SecurityElement: action, 2306 AllowReadOnly: allowreadonly 2307 }; 2308 2309 var objData = _ParentObject.GetGatewayResponse(objPostData, null); 2310 2311 bol = objData; 2312 }; 2313 }; 2314 }; 2315 2316 return bol; 2317 }, 2318 IsNotAuthenticatedWebClientUser: function () { 2319 var _ParentObject = this; 2320 if (_ParentObject.IsAuthenticatedWebClientUser() == true) { 2321 return false; 2322 } 2323 else { 2324 return true; 2325 } 2326 }, 2327 LoginIfNotAuthenticatedWebClientUser: function () { 2328 var _ParentObject = this; 2329 if (_ParentObject.IsAuthenticatedWebClientUser() == false) { 2330 var objURL = _ParentObject.GetUrlParts(window.location); 2331 2332 var strURL = 'https://' + objURL.hostname + '/external/wcpages/v12/login.aspx?page=' + encodeURIComponent('https://' + objURL.hostname + '/' + objURL.pathname + objURL.search); 2333 window.locat
2333ion.href = strURL; 2334 }; 2335 }, 2336 GetAuthenticatedWebClientUser: function () { 2337 2338 var _ParentObject = this; 2339 var objUser = { 2340 "UserNum": 0, 2341 "ProfileId": 0, 2342 "UserName": "", 2343 "FullName": "", 2344 "Pass": "", 2345 "LevelCode": "", 2346 "DateCreated": "1900-01-01T00:00:00", 2347 "DateChanged": "1900-01-01T00:00:00", 2348 "Email": "", 2349 "Role": "", 2350 "UserRoleID": 0, 2351 "Inactive": false, 2352 "Rate": 0.0, 2353 "WLIContact": false, 2354 "DateStarted": "1900-01-01T00:00:00", 2355 "DateInactive": "1900-01-01T00:00:00", 2356 "ContactType": "", 2357 "DepartmentID": 0, 2358 "SubDepartmentID": 0, 2359 "DMSDepartmentIDs": "7", 2360 "DMSSubDepartmentIDs": "2,3,7", 2361 "Token": "", 2362 "iPadUser": false, 2363 "ShowPasswords": false, 2364 "ObjectCollectionState": 4, 2365 "ObjectIsSelected": false, 2366 "ObjectData": null 2367 }; 2368 2369 if (_ParentObject.IsAuthenticatedWebClientUser() == true) { 2370 2371 2372 var strValue = _ParentObject.GetCookieValue("WC_WebClientCookie", "String"); 2373 2374 var objPostData = { 2375 Namespace: 'Weblink_Core', 2376 TypeName: 'WC_LogonManager', 2377 MethodName: 'GetUserFromToken', 2378 portaltoken: strValue 2379 }; 2380 var objData = _ParentObject.GetGatewayResponse(objPostData, null); 2381 objUser = objData; 2382 }; 2383 2384 return objUser; 2385 }, 2386 //Web Portal Methods 2387 WebPortalProfile: {}, 2388 IsAuthenticatedWebPortalProfile: function () { 2389 var _ParentObject = this; 2390 var intProfileID = 0; 2391 intProfileID = _ParentObject.GetCookieValue("WC_ProfileID", "number"); 2392 if (intProfileID > 0) { 2393 return true; 2394 } 2395 else { 2396 return false; 2397 }; 2398 }, 2399 IsNotAuthenticatedWebClientUser: function () { 2400 var _ParentObject = this; 2401 if (_ParentObject.IsAuthenticatedWebPortalProfile() == true) { 2402 return false; 2403 } 2404 else { 2405 return true; 2406 } 2407 }, 2408 GetWebPortalProfile: function () { 2409 var _ParentObject = this; 2410 2411 var intProfileID = _ParentObject.GetCookieValue("Weblink_ProfileID", "number"); 2412 2413 var objPostData = { 2414 Namespace: 'Weblink_Core', 2415 TypeName: 'WC_WebPortalProfileManager', 2416 MethodName: 'GetWebPortalProfileFromProfileID', 2417 ProfileID: intProfileID 2418 }; 2419 2420 var objData = _ParentObject.GetGatewayResponse(objPostData, null); 2421 _ParentObject.WebPortalProfile = objData; 2422 return objData; 2423 }, 2424 SetWebPortalProfile: function (webportalprofile) { 2425 var _ParentObject = this; 2426 _ParentObject.WebPortalProfile = webportalprofile; 2427 }, 2428 LoginIfNotAuthenticatedWebPortalProfile: function () { 2429 2430 var _ParentObject = this; 2431 if (_ParentObject.IsAuthenticatedWebPortalProfile() == false) { 2432 var objURL = _ParentObject.GetUrlParts(window.location); 2433 2434 var strURL = 'https://' + objURL.hostname + '/webportal/login?returnurl=' + encodeURIComponent('https://' + objURL.hostname + '/' + objURL.pathname + objURL.search); 2435 window.location.href = strURL; 2436 }; 2437 2438 2439 }, 2440 2441 2442 //Reporting 2443 GetReportViewerURL: function (reportname) { 2444 2445 var strReportName = ""; 2446 if (reportname != undefined) { 2447 strReportName = "?reportname=" + reportname; 2448 }; 2449 return "/external/wcpages/v12/webclient/report/report.aspx" + strReportName; 2450 }, 2451 ViewReport: function (reportname) { 2452 var _ParentObject = this; 2453 var strURL = _ParentObject.GetReportViewerURL(reportname); 2454 window.open(strURL); 2455 }, 2456 ViewReportWithRecordSelection: function (reportname, recordselection) { 2457 var _ParentObject = this; 2458 var strRecordSelection = ""; 2459 if (recordselection != undefined) { 2460 //%7b is { %5d is } 2461 strRecordSelection = '&recordselection=%7b' + recordselection + '%5d'; 2462 }; 2463 var strURL = _ParentObject.GetReportViewerURL(reportname) + strRecordSelection; 2464 window.open(strURL); 2465 }, 2466 ViewReportWithParemetersToSet: function (reportname, paramsasnamevaluearray) { 2467 var _ParentObject = this; 2468 var strParams = ""; 2469 if (paramsasnamevaluearray != undefined) { 2470 2471 for (var indIndexParam = 0; indIndexParam < paramsasnamevaluearray.length; indIndexParam++) { 2472 2473 var objParamObject = paramsasnamevaluearray[indIndexParam]; 2474 if (objParamObject.Name == undefined || objParamObject.Value == undefined) { 2475 alert("paramsasnamevaluearray must be passed a valid array of Name Value objects.") 2476 }; 2477 2478 var strName = objParamObject.Name; 2479 var strValue = "" 2480 2481 2482 if (_ParentObject.IsObjectAnArray(objParamObject.Value) == true) { 2483 strValue = objParamObject.Value.join(","); 2484 } 2485 else { 2486 strValue = objParamObject.Value.toString(); 2487 }; 2488 strParams = strParams + "&" + encodeURIComponent(strName) + "=" + encodeURIComponent(strValue); 2489 2490 }; 2491 2492 2493 var strURL = _ParentObject.GetReportViewerURL(reportname) + strParams; 2494 window.open(strURL); 2495 2496 }; 2497 2498 }, 2499 ViewReportWithParemetersToSetAndRecordSelection: function (reportname, paramsasnamevaluearray, recordselection) { 2500 var _ParentObject = this; 2501 var strParams = ""; 2502 if (paramsasnamevaluearray != undefined) { 2503 2504 for (var indIndexParam = 0; indIndexParam < paramsasnamevaluearray.length; indIndexParam++) { 2505 2506 var objParamObject = paramsasnamevaluearray[indIndexParam]; 2507 if (objParamObject.Name == undefined || objParamObject.Value == undefined) { 2508 alert("paramsasnamevaluearray must be passed a valid array of Name Value objects.") 2509 }; 2510 2511 var strName = objParamObject.Name; 2512 var strValue = "" 2513 2514 2515 if (_ParentObject.IsObjectAnArray(objParamObject.Value) == true) { 2516 strValue = objParamObject.Value.join(","); 2517 } 2518 else { 2519 strValue = objParamObject.Value.toString(); 2520 }; 2521 strParams = strParams + "&" + encodeURIComponent(strName) + "=" + encodeURIComponent(strValue); 2522 2523 }; 2524 2525 var strRecordSelection = ""; 2526 if (recordselection != undefined) { 2527 //%7b is { %5d is } 2528 strRecordSelection = '&recordselection=%7b' + recordselection + '%5d'; 2529 }; 2530 2531 var strURL = _ParentObject.GetReportViewerURL(reportname) + strParams + strRecordSelection; 2532 window.open(strURL); 2533 2534 }; 2535 2536 }, 2537 GetReportParameterNameValueObject: function (name, value) { 2538 2539 var objParamObject = { Name: name, Value: value }; 2540 return objParamObject; 2541 2542 }, 2543 2544 2545 //Refferals 2546 RecordReferralASYNC: function (referraltype, profileid) { 2547 var _ParentObject = this; 2548 var dteNow = new Date(); 2549 var strPageName = _ParentObject.GetCurrentPageNameForReferral(); 2550 var strURL = _ParentObject.GetCurrentURLForReferral(); 2551 2552 var objReferral = { 2553 2554 "ReferralType": referraltype, 2555 "ProfileID": profileid, 2556 "ReferralDate": dteNow, 2557 "PageName": strPageName 2558 }; 2559 2560 var objPostData = { 2561 Namespace: 'Weblink_Core', 2562 TypeName: 'WC_ReferralManager', 2563 MethodName: 'AddReferralSummaryEntry', 2564 PageName: location.pathname.substring(1), 2565 obj: objReferral 2566 }; 2567 2568 _ParentObject.GetGatewayResponseASYNC(objPostData); 2569 }, 2570 RecordReferralFromReferralObjectASYNC: function (referralobject) { 2571 var _ParentObject = this; 2572 2573 if (referralobject.ReferralDate == undefined || referralobject.ReferralDate == "") { 2574 var dteNow = new Date(); 2575 referralobject.ReferralDate = dteNow; 2576 }; 2577 2578 if (referralobject.PageName == undefined || referralobject.PageName == "") { 2579 referralobject.PageName = _ParentObject.GetCurrentPageNameForReferral(); 2580 }; 2581 if (referralobject.URL == undefined || referralobject.URL == "") { 2582 referralobject.URL = _ParentObject.GetCurrentURLForReferral(); 2583 }; 2584 2585 var objPostData = { 2586 Namespace: 'Weblink_Core', 2587 TypeName: 'WC_ReferralManager', 2588 MethodName: 'AddReferralSummaryEntry', 2589 obj: referralobject 2590 }; 2591 2592 _ParentObject.GetGatewayResponseASYNC(objPostData); 2593 }, 2594 GetCurrentPageNameForReferral: function () { 2595 return location.pathname.substring(1); 2596 }, 2597 GetCurrentURLForReferral: function () { 2598 return location.toString; 2599 }, 2600
2601 //Settings 2602 ConfigSettings: [], 2603 AssocInfo: {}, 2604 GetConfigSettings: function (SettingGroup) { 2605 var _ParentObject = this; 2606 var objPostData = { 2607 Namespace: 'Weblink_Core', 2608 TypeName: 'WC_ConfigSettingManager', 2609 MethodName: 'GetConfigSettingsByGroupName', 2610 GroupName: SettingGroup, 2611 Batch: "", 2612 SubBatch: "" 2613 }; 2614 2615 var objData = _ParentObject.GetGatewayResponse(objPostData); 2616 _ParentObject.ConfigSettings = objData; 2617 return objData; 2618 2619 }, 2620 GetConfigSettingValueFromCollection: function (SettingName, SettingsCollection) { 2621 2622 var objValue; 2623 2624 wc$.each(SettingsCollection, function (indexConfigSetting, objConfigSetting) { 2625 2626 if (objConfigSetting.SettingName.toLowerCase() == SettingName.toLowerCase()) { 2627 2628 objValue = objConfigSetting.SettingValue; 2629 2630 }; 2631 }); 2632 2633 return objValue; 2634 }, 2635 GetConfigSettingValue: function (SettingName) { 2636 var _ParentObject = this; 2637 var objValue; 2638 2639 wc$.each(_ParentObject.ConfigSettings, function (indexConfigSetting, objConfigSetting) { 2640 2641 if (objConfigSetting.SettingName.toLowerCase() == SettingName.toLowerCase()) { 2642 2643 objValue = objConfigSetting.SettingValue; 2644 2645 }; 2646 }); 2647 2648 return objValue; 2649 }, 2650 GetAssocInfo: function () { 2651 var _ParentObject = this; 2652 var objPostData = { 2653 Namespace: 'Weblink_Core', 2654 TypeName: 'WC_AssociationInfoManager', 2655 MethodName: 'GetAssociationInfo' 2656 }; 2657 2658 var objData = _ParentObject.GetGatewayResponse(objPostData); 2659 _ParentObject.AssocInfo = objData; 2660 2661 2662 return _ParentObject.AssocInfo; 2663 }, 2664 SetAssocInfo: function (object) { 2665 var _ParentObject = this; 2666 _ParentObject.AssocInfo = object; 2667 }, 2668 ConsoleLogObject: function (object) { 2669 console.log(wc$.parseJSON(JSON.stringify(object))); 2670 }, 2671 2672 //Common Controls 2673 AddProfileSelectorControlToContainer: function (Container, Options, SelectFunction, PlaceholderText, RestrictToOrganization, RestrictToIndividual, RestrictToActive, RestrictToMember, AndWhereClause, ShowAddress, RestrictToRelatedProfiles, RestrictToPrimaryRelations, IncludeIndividualRelatedProfileOrgName) { 2674 2675 var objProfileSelectorViewModel = kendo.observable(new WC_ProfileSelectorViewModel()); 2676 var strProfileLookupLastStringSearched = ""; 2677 2678 objProfileSelectorViewModel.RestrictToOrganization = RestrictToOrganization; 2679 objProfileSelectorViewModel.RestrictToIndividual = RestrictToIndividual; 2680 objProfileSelectorViewModel.RestrictToActive = RestrictToActive; 2681 objProfileSelectorViewModel.RestrictToMember = RestrictToMember; 2682 objProfileSelectorViewModel.AndWhereClause = AndWhereClause; 2683 objProfileSelectorViewModel.ShowAddress = ShowAddress; 2684 objProfileSelectorViewModel.RestrictToRelatedProfiles = RestrictToRelatedProfiles; 2685 objProfileSelectorViewModel.RestrictToPrimaryRelations = RestrictToPrimaryRelations; 2686 objProfileSelectorViewModel.IncludeIndividualRelatedProfileOrgName = IncludeIndividualRelatedProfileOrgName; 2687 //objProfileSelectorViewModel.ProfileSelectorKeywordSearchType = 1; 2688 2689 if (PlaceholderText == undefined) { 2690 PlaceholderText = ""; 2691 }; 2692 if (RestrictToOrganization == undefined) { 2693 RestrictToOrganization = false; 2694 }; 2695 if (RestrictToIndividual == undefined) { 2696 RestrictToIndividual = false; 2697 }; 2698 if (RestrictToActive == undefined) { 2699 RestrictToActive = false; 2700 }; 2701 if (RestrictToMember == undefined) { 2702 RestrictToMember = false; 2703 }; 2704 if (RestrictToPrimaryRelations == undefined) { 2705 RestrictToPrimaryRelations = false; 2706 }; 2707 if (IncludeIndividualRelatedProfileOrgName == undefined) { 2708 IncludeIndividualRelatedProfileOrgName = false; 2709 }; 2710 if (AndWhereClause == undefined) { 2711 AndWhereClause = ""; 2712 }; 2713 if (ShowAddress == undefined) { 2714 ShowAddress = false; 2715 }; 2716 if (RestrictToRelatedProfiles == undefined) { 2717 RestrictToRelatedProfiles = false; 2718 }; 2719 2720 2721 var strLookupControlID = "txtProfileLookup" + objProfileSelectorViewModel.GetRandomString(); 2722
2723 var objProfileSelector = wc$('<input id="' + strLookupControlID + '" style="width: 100%" />').appendTo(Container).kendoAutoComplete({ 2724 dataTextField: "ReportNameWithASF", 2725 dataValueField: "ProfileId", 2726 placeholder: PlaceholderText, 2727 filter: "contains", //"contains" was performing really slow 2728 //delay: (<%= Me.DelayInMilliseconds%> + 200), //length of time to wait before filtering starts 2729 minLength: 1, //number of characters that need to be typed before filtering starts 2730 suggest: false, //auto-selects the best match, slows performance 2731 autobind: false, 2732 height: 400, 2733 enable: true, 2734 type: "json", 2735 //serverFiltering: true, 2736 dataSource: { 2737 data: objProfileSelectorViewModel.ProfilesList, 2738 cache: false, 2739 error: function (e) { 2740 alert(e); 2741 } 2742 }, 2743 template: '<div style="overflow:hidden; border-bottom: 1px dashed \\#aaa;">' 2744 + '<div style="float: left;margin-right: 10px;">' 2745 + '# if (OrgMember) { #<img src="/external/wcpages/images/iconOrganizationalMember.png" style="width: 19px; height : 19px; margin-top: 7px; margin-left: 11px;"/># } #' 2746 + '# if (OrgNonMember) { #<img src="/external/wcpages/images/iconOrganizationalProfile.png" style="width: 19px; height : 19px; margin-top: 7px; margin-left: 11px;"/># } #' 2747 + '# if (IndMember) { #<img src="/external/wcpages/images/iconIndividualMember.png" style="width: 19px; height : 19px; margin-top: 7px; margin-left: 11px;"/># } #' 2748 + '# if (IndNonMember) { #<img src="/external/wcpages/images/iconIndividualProfile.png" style="width: 19px; height : 19px; margin-top: 7px; margin-left: 11px;"/># } #' 2749 + '</div>' 2750 + '<div style="overflow: hidden">${ReportName} (${ProfileId})<br />${AddressDisplay}</div>' 2751 + '</div>', 2752 animation: { 2753 open: { 2754 effects: "fadeIn", 2755 duration: 350, 2756 show: true 2757 } 2758 }, 2759 select: function (e) { 2760 2761 if (SelectFunction != undefined) { 2762 SelectFunction(e); 2763 }; 2764 }, 2765 2766 2767 }); 2768 2769 var ProfileLookupKeyUp = function (keyword) { 2770 2771 //d = new Date(); 2772 //var d_milliseconds = (d.getDate() * 43200000) + (d.getHours() * 3600000) + (d.getMinutes() * 60000) + (d.getSeconds() * 1000) + d.getMilliseconds(); 2773 2774 var objLookupControl = wc$("#" + strLookupControlID).data("kendoAutoComplete"); 2775 2776 //if the text being requested for the search is the same as the current value of the input box 2777 //this will pause the search for some time after the last keystroke 2778 var strInputText = objLookupControl.value(); 2779 if (objProfileSelectorViewModel.Trim(keyword) == objProfileSelectorViewModel.Trim(strInputText)) { 2780 2781 if (strProfileLookupLastStringSearched == "") { 2782 2783 //This is the first time a search is being performed 2784 ProfileLookupDoSearch(keyword, objLookupControl); 2785 2786 } 2787 else { 2788 2789 if (keyword.length >= strProfileLookupLastStringSearched.length) { 2790 var strSubString = keyword.substring(0, strProfileLookupLastStringSearched.length); 2791 if (strSubString != strProfileLookupLastStringSearched) { 2792 //String does not start with the saved string 2793 //Search string has changed 2794 ProfileLookupDoSearch(keyword, objLookupControl); 2795 } 2796 2797 else { 2798 //If the string.length is shorter than than the saved string.length 2799 //Search string has been shortened 2800 ProfileLookupDoSearch(keyword, objLookupControl); 2801 }; 2802 2803 }; 2804 2805 }; 2806 2807 }; 2808 } 2809 2810 var ProfileLookupDoSearch = function (keyword, objLookupControl) { 2811 2812 //do search 2813 objProfileSelectorViewModel.GetProfiles(objProfileSelectorViewModel.Trim(keyword)); 2814 objLookupControl.setDataSource(objProfileSelectorViewModel.ProfilesList); 2815 //objLookupControl.dataSource.data(objProfileSelectorViewModel.ProfilesList); 2816 2817 //Save search string so it is not used again 2818 strProfileLookupLastStringSearched = keyword; 2819 objLookupControl.refresh();
2820 2821 2822 2823 //Update dropdown results 2824 objLookupControl.search(keyword); 2825 var array = objProfileSelectorViewModel.ProfilesList; 2826 if (array.length == 1) { 2827 2828 //select the only result dropdown results 2829 wc$("#" + strLookupControlID).val(objProfileSelectorViewModel.ProfilesList[0].Name); 2830 2831 2832 }; 2833 2834 2835 }; 2836 2837 objProfileSelector.keyup(function (objProfileSelector) { 2838 2839 var obj = wc$("#" + strLookupControlID).data("kendoAutoComplete"); //var obj = wc$("#" + strLookupControlID).data("kendoAutoComplete"); 2840 var strKeyword = obj.value(); //Important: create a new instance of the string so the autoCompleteKeyUp function doesn't get confused by referencing a property on the object. 2841 var bolIsNumeric = objProfileSelectorViewModel.IsNumeric(strKeyword); 2842 //Only perform the search if at least X characters have been entered or its numeric (profileid search) 2843 2844 if (bolIsNumeric == true) { 2845 //if this is numeric make it the a live serach each time 2846 strProfileLookupLastStringSearched = ""; 2847 }; 2848 2849 if (bolIsNumeric == true || strKeyword.length >= 3) { 2850 //Schedule a gateway search to be forformed in x milliseconds 2851 //If multiple searches are requested in a short period of time, we do not want multiple searches to be performed. 2852 //The autoCompleteKeyUp function will check to see that the string scheduled to be searched is still the string in the input box. 2853 //If that string has changed, the function will not execute anything 2854 setTimeout(function () { ProfileLookupKeyUp(strKeyword) }, 1000); 2855 } 2856 2857 else { 2858 //Reset saved search string 2859 2860 strProfileLookupLastStringSearched = ""; 2861 2862 }; 2863 2864 2865 2866 }); 2867 2868 return objProfileSelector; 2869 } 2870 2871 2872}); 2873
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.