1var ADMEUS = {}; 2var PORTAL = {}; 3jQuery.noConflict(); 4var baseJsUrl = baseUrl + '/scripts/library/'; 5var jsUrl = baseUrl + '/scripts/'; 6var timeoutMsg = ''; 7var portalName = ''; 8 9 10/** 11 * ajax - wrapper based on prototype to do custom ajax calls 12 * @param request {boolean} 'post' or true=POST, 'get' or false=GET 13 * @param action {string} url to call 14 * @param option {string} optional info to send with call 15 * @param e {string} html tag id where to send response 16 * @param form {string} if we are POSTing name of form 17 * @param confirm {string} optional message to request confirmation from user 18 * @param execute {string} optional extra js function to execute after this request is complete 19 * @return false 20 */ 21function ajax (request, action, option, e, form, confirm, execute, exec_params, load_text) 22{ 23 // check GET params 24 params = window.location.href.toQueryParams(); 25 // by default with don't need confirmation 26 var go = true; 27 if (confirm) 28 { 29 go = window.confirm(confirm); 30 } 31 // inject our base params 32 parameters = new Hash(); 33 parameters.set('option', option); 34 if (params['lang']) 35 { 36 parameters.set('lang', params['lang']); 37 } 38 else 39 { 40 parameters.lang = ''; 41 } 42 // our followup function needs to execute with params 43 if (exec_params) 44 { 45 execute = String(execute+'("'+exec_params+'")'); 46 } 47 // set load image location 48 if (go) 49 { 50 if (!load_text) load_text = ''; 51 ajaxShowLoadingImage(e, request, load_text); 52 } 53 // process regular get requests 54 if ((!request || request == 'get' || request == 'geth') && go) 55 { 56 var myAjax = new Ajax.Request(action, { 57 method: 'get', 58 parameters: parameters, 59 timeoutDelay: 30, 60 onFailure: ajaxTimeout, 61 onTimeout: ajaxTimeout, 62 onComplete: function (transport) { 63 ajaxHideLoadingImage(e); 64 var response = transport.responseText; 65 var regexp = /trackPageview/; 66 if (response.match(regexp)) 67 { 68 if (!baseUrl) baseUrl = '/'; 69 window.location = baseUrl; 70 return false; 71 } 72 $(e).innerHTML = transport.responseText; 73 if (execute) 74 { 75 eval(execute); 76 } 77 return true; 78 } 79 }); 80 } 81 // process form post requests 82 else if ((request || request == 'post') && go) 83 { 84 if ($(form)) 85 { 86 // add hidden element for option 87 var o = document.createElement('INPUT'); 88 o.setAttribute('type', 'hidden'); 89 o.setAttribute('name', 'option'); 90 o.setAttribute('value', option); 91 $(form).appendChild(o); 92 //capture file uploads 93 /*var formData = new FormData($(form)); 94 var upload_fields = $(form).getInputs('file'); 95 if (upload_fields.length) 96 { 97 for (var i = 0; i < upload_fields.length; i++) 98 { 99 if (upload_fields[i].id && upload_fields[i].files[0]) 100 { 101 formData.append(upload_fields[i].id, upload_fields[i].files[0], upload_fields[i].value); 102 } 103 } 104 } 105 var queryString = new URLSearchParams(formData);*/ 106 // submit form 107 $(form).request({ 108 onFailure: ajaxTimeout, 109 onTimeout: ajaxTimeout, 110 onComplete: function (transport) { 111 ajaxHideLoadingImage(e); 112 var response = transport.responseText; 113 var regexp = /trackPageview/; 114 if (response.match(regexp)) 115 { 116 if (!baseUrl) baseUrl = '/'; 117 window.location = baseUrl; 118 return false; 119 } 120 $(e).innerHTML = transport.responseText; 121 if (execute) 122 { 123 eval(execute); 124 } 125 return true; 126 } 127 }); 128 } 129 else 130 { 131 ajaxHideLoadingImage(e); 132 if (execute) 133 { 134 eval(execute); 135 } 136 } 137 } 138 return false; 139} 140 141/** 142 * hide possible secondary image location 143 */ 144function ajaxHideLoadingImage(target) 145{ 146 if ($(target+'_load')) 147 { 148 showElement(target); 149 target = target + '_load'; 150 hideElement(target); 151 } 152} 153 154/** 155 * show ajax load image 156 */ 157function ajaxShowLoadingImage(target, request, load_text) 158{ 159 if ($(target+'_load')) 160 { 161 if (request == 'post' || request == 'get') 162 { 163 hideElement(target); 164 } 165 target = target + '_load'; 166 $(target).innerHTML = '<img src="'+baseUrl+'/images/manager/ajax_loader.gif" class="vmiddle"> ' + load_text; 167 showElement(target); 168 } 169} 170 171/** 172 * ajax timeout 173 */ 174var ajaxTimeout = function(arg) 175{ 176 displayMessenger('messenger', timeoutMsg, 'error'); 177 /* 178 if (arg.request.timeout) 179 failureNode.update("failure has occured, server timeout at fault"); 180 else 181 console.log("failure has occured, unknown causes."); 182 */ 183} 184 185var cX = 0; var cY = 0; var rX = 0; var rY = 0; 186function UpdateCursorPosition(e){ cX = e.pageX; cY = e.pageY;} 187function UpdateCursorPositionDocAll(e){ cX = event.clientX; cY = event.clientY;}
188if(document.all) { document.onmousemove = UpdateCursorPositionDocAll; } 189else { document.onmousemove = UpdateCursorPosition; } 190 191function AssignPosition(e) 192{ 193 if (self.pageYOffset) 194 { 195 rX = self.pageXOffset; 196 rY = self.pageYOffset; 197 } 198 else if (document.documentElement && document.documentElement.scrollTop) 199 { 200 rX = document.documentElement.scrollLeft; 201 rY = document.documentElement.scrollTop; 202 } 203 else if (document.body) 204 { 205 rX = document.body.scrollLeft; 206 rY = document.body.scrollTop; 207 } 208 if (document.all) 209 { 210 cX += rX; 211 cY += rY; 212 } 213 e.style.position = 'absolute'; 214 e.style.left = (cX+20) + "px"; 215 e.style.top = (cY-20) + "px"; 216} 217 218/**** UPLOAD ****/ 219 220/** 221 * avatar uploader 222 * 223 * @param int register_id 224 */ 225function avatarUploader(register_id) 226{ 227 //get upload position 228 var avatar_width = jQuery('#avatarHolder').width(); 229 var avatar_height = jQuery('#avatarHolder').height(); 230 var avatar_top = jQuery('#avatarHolder').offset().top; 231 var avatar_left = jQuery('#avatarHolder').offset().left; 232 //set upload position 233 jQuery('#avatarUploader').appendTo('body'); 234 jQuery('#avatarUploader').css('width', avatar_width); 235 jQuery('#avatarUploader').css('height', avatar_height); 236 jQuery('#avatarUploader').css('top', avatar_top); 237 jQuery('#avatarUploader').css('left', avatar_left); 238 jQuery('#avatarUploader').css('padding-top', '60px'); 239 //uploader 240 var uploader = new qq.FileUploader({ 241 // pass the dom node 242 element: document.getElementById('file-uploader'), 243 // path to server-side upload script 244 action: baseUrl+'/index/upload', 245 params: { 246 path: 'avatars', 247 register: register_id, 248 text: 'xxx' 249 }, 250 onComplete: function(id, fileName, responseJSON) { 251 if (avatarChanger(register_id)) 252 { 253 if (typeof(responseJSON) == 'object') { 254 if (typeof(responseJSON.success) != 'undefined') { 255 new PNotify({ 256 title: 'Upload de foto concluido', 257 type: 'success', 258 styling: 'bootstrap3' 259 }); 260 } 261 else if (typeof(responseJSON.error) != 'undefined') { 262 new PNotify({ 263 title: responseJSON.error, 264 type: 'error', 265 styling: 'bootstrap3' 266 }); 267 } 268 } 269 jQuery('#avatarHolder').click(); 270 } 271 } 272 }); 273} 274 275/** 276 * avatar changer 277 * 278 * @param int register_id 279 */ 280function avatarChanger(register_id) 281{ 282 var randomnumber=Math.floor(Math.random()*1001) 283 jQuery('#avatarHolderTemp').attr('src', baseUrl+'/account/personal/avatar?id='+register_id+'&'+randomnumber); 284 if (jQuery('#avatarHolder').attr('src', baseUrl+'/account/personal/avatar?id='+register_id+'&'+randomnumber)) 285 { 286 return true; 287 } 288} 289 290// classSelect - changes the css class of an element 291function classSelect (id, offClass, onClass) 292{ 293 if ($(id).hasClassName(onClass)) 294 { 295 $(id).removeClassName(onClass); 296 $(id).addClassName(offClass); 297 } 298 else 299 { 300 $(id).removeClassName(offClass); 301 $(id).removeClassName(offClass); 302 $(id).addClassName(onClass); 303 } 304} 305 306/** 307 * clean search datatables 308 */ 309function cleanSearch(idTable,search,deleteElem){ 310 var table = jQuery('#'+idTable).DataTable(); 311 //hideElement('search-clear'); 312 jQuery('#search-clear'+deleteElem).hide(); 313 jQuery('#'+search).val(''); 314 jQuery('#'+search).removeClass('active'); 315 table.search('').draw(); 316 317} 318/** 319 * check areas 320 * 321 */ 322function checkAreas() 323{ 324 //check areas 325 if (jQuery('#areas-element').length && jQuery('#areas_control').length) 326 { 327 jQuery('#areas_control').val(''); 328 jQuery('#areas-element input').each(function(v, index) { 329 if (jQuery(index).prop('checked')) 330 { 331 jQuery('#areas_control').val(1); 332 return false; 333 } 334 }); 335 } 336} 337/** 338 * checks forms for empty fields and hightlights 339 * 340 * @param string form 341 */ 342function checkForm(form) 343{ 344 var status = true; 345 jQuery('#'+form+' input').each(function(){ 346 347 if (!jQuery('#'+this.id).val()) { 348 jQuery('#'+this.id).removeClass('border').addClass('errorField'); 349 if (status) jQuery('#'+this.id).focus(); 350 status = false; 351 } 352 else jQuery('#'+this.id).removeClass('errorField').addClass('border'); 353 }); 354 return status; 355} 356 357 358/** 359 * checks a form for errors messages and hightlights 360 * 361 * @param string form 362 */ 363function checkTypesInfo(type_id, type_name) { 364 jQuery('.registrationType').each(function(index, value) { 365 var id = jQuery(this).attr('id'); 366 id = id.split('_')[1]; 367 jQuery('#registrationType_' + id).html(jQuery('#textButton_' + id).html()); 368 });
369 if (jQuery('#visibleInfo').html() == type_name) 370 { 371 window.location = baseUrl + '/registration?type=' + type_id; 372 } 373 else 374 { 375 jQuery('.portalRegistrationInfo').addClass('hidden'); 376 jQuery('#portalRegistrationInfo_' + type_name).removeClass('hidden'); 377 jQuery('.infoClick').removeClass('infoClickChecked'); 378 jQuery('#infoClick_' + type_name).addClass('infoClickChecked'); 379 jQuery('#visibleInfo').html(type_name); 380 jQuery('#registrationType_' + type_id).html('<div class="font small">' + jQuery('#continueText').html() +'</div>' + jQuery('#textButton_' + type_id).html()); 381 jQuery('#panelLeft').scrollTop(0); 382 jQuery('#panelLeft').animate({ 383 scrollTop: jQuery('#infoClick_' + type_name).position().top - 30 384 }, 500); 385 } 386} 387 388/** 389 * checks a form for errors messages and hightlights 390 * 391 * @param string form 392 */ 393function checkFormErrors() { 394 var count = 0; 395 396 var elems = []; 397 jQuery('.errors').each(function(index) { 398 var text = ''; 399 // get texts 400 jQuery(this).children('li').each(function() { 401 text += jQuery(this).text()+'<br>'; 402 }); 403 var id = jQuery(this).parent().attr('id'); 404 id = id.replace("-element", ""); 405 if (id != 'formRegister') 406 { 407 jQuery('#'+id).removeClass('border').addClass('errorField'); 408 } 409 if( jQuery('#portal').length > 0){ 410 if(id == 'contactName'){ 411 elems.push('contactName'); 412 jQuery('#'+id).parent().addClass('col-md-5'); 413 }else{ 414 if(id == 'contactEmail'){ 415 jQuery('#'+id).parent().addClass('col-md-4'); 416 elems.push('contactEmail'); 417 }else{ 418 if(id == 'contactPhone'){ 419 jQuery('#'+id).parent().addClass('col-md-3'); 420 jQuery('#'+id).removeClass('errorField').addClass('border'); 421 elems.push('contactPhone'); 422 }else{ 423 if(id == 'message'){ 424 jQuery('#'+id).parent().addClass('col-md-12'); 425 elems.push('message'); 426 } 427 } 428 } 429 } 430 } 431 432 // change helper 433 jQuery('#'+id).attr('help', text); 434 jQuery('#helper').removeClass('assistant').addClass('error'); 435 // holder if any 436 if (jQuery('#'+id).attr('holder')) 437 { 438 jQuery('#'+id).val(jQuery('#'+id).attr('holder')); 439 } 440 count ++; 441 }); 442 if( jQuery('#portal').length > 0){ 443 if(count != 0){ 444 showElement('text'); 445 } 446 if(jQuery.inArray( "contactName", elems ) == -1){ 447 jQuery('#contactName').parent().addClass('col-md-5'); 448 } 449 if(jQuery.inArray( "contactPhone", elems ) == -1){ 450 jQuery('#contactPhone').parent().addClass('col-md-3'); 451 } 452 if(jQuery.inArray( "contactEmail", elems ) == -1){ 453 jQuery('#contactEmail').parent().addClass('col-md-4'); 454 } 455 if(jQuery.inArray( "message", elems ) == -1){ 456 jQuery('#message').parent().addClass('col-md-12'); 457 } 458 } 459} 460 461/** 462 * checks if country exists 463 * 464 * @param country 465 * @param countriesList 466 */ 467function check_country (country, countriesList, fieldName) 468{ 469 var field_name = 'country'; 470 if (fieldName) 471 { 472 field_name = fieldName; 473 } 474 var search = ''; 475 //cycle throw countries 476 for (var i = 0; i < countriesList.length; i++) 477 { 478 //if contry is found 479 if (country.toLowerCase() == countriesList[i].toLowerCase()) 480 { 481 search = countriesList[i]; 482 continue; 483 } 484 } 485 if (!search) 486 { 487 //clean country 488 jQuery('#' + field_name).val(''); 489 } 490 else 491 { 492 //add formated location 493 jQuery('#' + field_name).val(search); 494 } 495} 496 497/** 498 * shows the messenger 499 * 500 * @param element - where to display the message on 501 * @param msg - message to display (optional) 502 * @param type - type of message (sucess, error), optional 503 */ 504function displayMessenger(element, msg, type) 505{ 506 if (!element) 507 { 508 element = 'messenger'; 509 } 510 // try to auto detect a type 511 if (!type || type == 'undefined' || type == '') 512 { 513 if (!msg && jQuery('#' + element).length) 514 { 515 msg = $(element).innerHTML; 516 } 517 if (msg && msg.search(/%E%/) > -1) 518 { 519 type = 'error'; 520 msg = msg.replace(/%E%/, " "); 521 } 522 else if (msg && msg.search(/%S%/) > -1) 523 { 524 type = 'sucess'; 525 msg = msg.replace(/%S%/, " "); 526 } 527 else 528 { 529 type = 'info'; 530 if (msg) { 531 msg = msg.replace(/%I%/, " "); 532 } 533 } 534 } 535 // add message 536 if (msg) 537 { 538 if (!jQuery('#' + element).length && !jQuery('#messenger').length) 539 { 540 jQuery('body').append('<div id="messenger" class="hidden"></div>'); 541 element = 'messenger'; 542 } 543 $(element).innerHTML = msg; 544 } 545 // change aspect according to type 546 if (type) 547 { 548 var m = ''; 549 if ($(element) && $(element).innerHTML) 550 { 551 m = $(element).innerHTML; 552 } 553 if (m && type == 'sucess') 554 { 555 new PNotify({ 556 title: m, 557 type: 'success', 558 styling: 'bootstrap3', 559 delay:3000 560 }); 561 } 562 else if (m && type == 'error') 563 { 564 new PNotify({ 565 title: m, 566 type: 'error', 567 styling: 'bootstrap3', 568 delay:3000 569 }); 570 } 571 else if (m && type == 'info') 572 { 573 new PNotify({ 574 title: m, 575 type: 'info', 576 styling: 'bootstrap3', 577 delay:3000 578 }); 579 } 580 } 581 // display 582 //showElement(element); 583} 584 585/** 586 * Displays the given element in the given position of other element 587 * 588 * @param target{string} - element to show 589 * @param ref {string} - element 590 * @param position {string} - position of the element to show 591 */ 592function displayOn(target, ref, position) 593{ 594 // if already on, hide it and quit 595 if($(target).hasClassName('visible')) 596 { 597 hideElement(target); 598 return false;
599 } 600 if ($(ref) && !$(ref).id) 601 { 602 document.body.appendChild($(ref)); 603 } 604 if ($(ref)) 605 { 606 var ref_ele = getAbsolutePos($(ref)); 607 showElement(target); 608 if (typeof(jQuery('.nav_title').text()) != 'undefined') 609 document.body.appendChild($(target)); 610 //left bottom left-point 611 if(position == 'lb1') 612 { 613 $(target).style.left = parseFloat(ref_ele.x) - parseFloat($(target).offsetWidth) + "px"; 614 $(target).style.top = parseFloat(ref_ele.y) + parseFloat($(ref).offsetHeight) + "px"; 615 } 616 //left top right-point 617 else if(position == 'lt4' || position == 'lt_rb') 618 { 619 $(target).style.left = parseFloat(ref_ele.x) + "px"; 620 $(target).style.top = parseFloat(ref_ele.y) + "px"; 621 } 622 //left bottom right-point 623 else if(position == 'lb2') 624 { 625 $(target).style.left = parseFloat(ref_ele.x) + "px"; 626 $(target).style.top = parseFloat(ref_ele.y) + parseFloat($(ref).offsetHeight) + "px"; 627 } 628 //right bottom left-point 629 else if(position == 'rb1') 630 { 631 $(target).style.left = parseFloat(ref_ele.x) + parseFloat($(ref).offsetWidth) - parseFloat($(target).offsetWidth) + "px"; 632 $(target).style.top = parseFloat(ref_ele.y) + parseFloat($(ref).offsetHeight) + "px"; 633 } 634 //right bottom right-point 635 else if(position == 'rb2') 636 { 637 $(target).style.left = parseFloat(ref_ele.x) + parseFloat($(ref).offsetWidth) + "px"; 638 $(target).style.top = parseFloat(ref_ele.y) + parseFloat($(ref).offsetHeight) + "px"; 639 } 640 //left top left-point 641 else if(position == 'lt1') 642 { 643 $(target).style.left = parseFloat(ref_ele.x) - parseFloat($(target).offsetWidth) + "px"; 644 $(target).style.top = parseFloat(ref_ele.y) - parseFloat($(target).offsetHeight) + "px"; 645 } 646 //left top right-point 647 else if(position == 'lt2') 648 { 649 $(target).style.left = parseFloat(ref_ele.x) + "px"; 650 $(target).style.top = parseFloat(ref_ele.y) - parseFloat($(target).offsetHeight) + "px"; 651 } 652 //right top left-point 653 else if(position == 'rt1') 654 { 655 $(target).style.left = parseFloat(ref_ele.x) + parseFloat($(ref).offsetWidth) - parseFloat($(target).offsetWidth) + "px"; 656 $(target).style.top = parseFloat(ref_ele.y) - parseFloat($(target).offsetHeight) + "px"; 657 } 658 //right top right-point 659 else if(position == 'rt2') 660 { 661 $(target).style.left = parseFloat(ref_ele.x) + parseFloat($(ref).offsetWidth) + "px"; 662 $(target).style.top = parseFloat(ref_ele.y) - parseFloat($(target).offsetHeight) + "px"; 663 } 664 //right top left-point inside 665 else if(position == 'rti1') 666 { 667 $(target).style.left = parseFloat(ref_ele.x) + parseFloat($(ref).offsetWidth) - parseFloat($(target).offsetWidth) + "px"; 668 $(target).style.top = parseFloat(ref_ele.y) - parseFloat($(target).offsetHeight) + parseFloat($(target).offsetHeight) + "px"; 669 } 670 //right top left-point outside 671 else if(position == 'rti2') 672 { 673 $(target).style.left = parseFloat(ref_ele.x) + parseFloat($(ref).offsetWidth) + "px"; 674 $(target).style.top = parseFloat(ref_ele.y) - parseFloat($(target).offsetHeight) + parseFloat($(target).offsetHeight) + "px"; 675 } 676 $(target).style.position = 'absolute'; 677 $(target).style.display = 'block'; 678 $(target).style.zIndex = "50"; 679 //if target is inside of a modal window 680 if ($('modal')) 681 { 682 $(target).style.zIndex = parseFloat($('modal').style.zIndex) + parseFloat(1); 683 } 684 } 685} 686 687function getAbsolutePos(el) 688{ 689 var SL = 0, ST = 0; 690 var is_div = /^div$/i.test(el.tagName); 691 if (is_div && el.scrollLeft) 692 SL = el.scrollLeft; 693 if (is_div && el.scrollTop) 694 ST = el.scrollTop; 695 var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST }; 696 if (el.offsetParent) { 697 var tmp = this.getAbsolutePos(el.offsetParent); 698 r.x += tmp.x; 699 r.y += tmp.y; 700 } 701 return r; 702} 703 704/** 705 * find participant 706 * 707 */ 708function findParticipant() 709{ 710 if (jQuery.trim(jQuery('#findParticipant').val())) 711 { 712 jQuery('#noResults').removeClass('hidden'); 713 jQuery.each(jQuery('.tdName'), function( index, value ) { 714 if (jQuery(value).attr('title').toLowerCase().indexOf(jQuery.trim(jQuery('#findParticipant').val()).toLowerCase()) >= 0) 715 { 716 jQuery(value).parent().removeClass('hidden'); 717 jQuery('#noResults').addClass('hidden'); 718 } 719 else 720 {
721 jQuery(value).parent().addClass('hidden'); 722 } 723 }); 724 } 725 else 726 { 727 jQuery('.tdName').parent().removeClass('hidden'); 728 jQuery('#noResults').addClass('hidden'); 729 } 730} 731 732/** 733 * add help comments to form tags 734 * 735 * @param form {string} 736 */ 737function formHelper(form, new_line) 738{ 739 elements = $(form).getElements(); 740 if (elements) 741 { 742 for(i=0; i<elements.length; i++) 743 { 744 elements[i].onfocus=function(){ 745 var on_focus = ''; 746 if ($(this.id).readAttribute('onfocus')) 747 { 748 on_focus = $(this.id).readAttribute('onfocus'); 749 } 750 if ($(this).readAttribute('help')) 751 { 752 help = 'helper'; 753 if (!$(help).hasClassName('help')) 754 { 755 $(help).addClassName('help hidden font small textleft'); 756 } 757 $(help).innerHTML = $(this).readAttribute('help'); 758 if (new_line) 759 { 760 jQuery('#'+(this).readAttribute('id')).parent().append(jQuery('#helper')); 761 jQuery('#helper').removeClass('hidden'); 762 } 763 // we might have a support element to index our help 764 else if ($($(this).readAttribute('id')+'_help')) 765 { 766 displayOn(help, $(this).readAttribute('id')+'_help', 'rti2'); 767 } 768 // just display next to element 769 else 770 { 771 displayOn(help, $(this).readAttribute('id'), 'rti2'); 772 } 773 } 774 if (on_focus) eval(on_focus); 775 } 776 elements[i].onblur=function(){ 777 if ($(this).readAttribute('help')) 778 { 779 help = 'helper'; 780 hideElement(help); 781 } 782 } 783 } 784 } 785} 786 787/** 788 * get viewport from browser 789 */ 790function getBrowserDimensions() 791{ 792 var viewport = { x: 0, y: 0 }; 793 if (Prototype.Browser.IE) { 794 viewport.height = document.documentElement.clientHeight; 795 viewport.width = document.documentElement.clientWidth; 796 } else { 797 viewport.height = window.innerHeight; 798 viewport.width = document.width || document.body.offsetWidth; 799 } 800 return viewport; 801} 802 803/** 804 * hides an element using css class 805 * 806 * @param e {string} 807 */ 808function hideElement(e) 809{ 810 if (jQuery('#'+e)) 811 { 812 jQuery('#'+e).removeClass('visible'); 813 jQuery('#'+e).addClass('hidden'); 814 } 815} 816 817/** 818 * hides a floating element 819 * 820 * @param e {string} 821 */ 822function hideFloat(e) 823{ 824 if (e.length < 1) { return; } 825 $(e).removeClassName('show'); 826 $(e).removeClassName(e); 827 $(e).addClassName('hidden'); 828} 829 830/** 831 * opens an ajax in a modal window 832 * 833 * @param width {string} width of modal window 834 * @param height {string} height of modal window 835 * @param element {string} element name for modal window 836 * @param closeText {string} text to close window 837 * @param closeImage {string} image to close window 838 * @param closeFunction {string} function to execute after closure 839 */ 840function modalWindowOpen(width, height, element, closeText, closeImage, closeFunction) 841{ 842 // get viewport and center point 843 viewport = getBrowserDimensions(); 844 var center = { x: 0, y: 0 }; 845 center.height = viewport.height/2; 846 center.width = viewport.width/2; 847 // build overlay 848 var overlay = Element.extend(document.createElement('div')); 849 overlay.writeAttribute('id', 'overlay'); 850 overlay.observe('click', function(){ 851 modalWindowClose(closeFunction); 852 }); 853 overlay.setStyle({ 854 top:0, 855 left:0, 856 zIndex:999, 857 backgroundColor:'black', 858 opacity:'0.7', 859 position:'absolute', 860 width:'100%', 861 height:viewport.height+'px', 862 display:'none' 863 }); 864 // build modal window 865 var modal = Element.extend(document.createElement('div')); 866 modal.writeAttribute('id', 'modal'); 867 modal.setStyle({ 868 top:(center.height-height/2)+'px', 869 left:(center.width-width/2)+'px', 870 zIndex:1001, 871 background:'none repeat scroll 0 0 #F8F7F7', 872 position:'absolute', 873 width:width+'px', 874 height:height+'px', 875 overflow:'auto', 876 display:'none' 877 }); 878 // build close button 879 var modalClose = Element.extend(document.createElement('div')); 880 modalClose.setAttribute('id', 'modalClose'); 881 modalClose.observe('click', function(){ 882 modalWindowClose(closeFunction); 883 }); 884 modalClose.setStyle({ 885 top:(center.height-(20+height/2))+'px', 886 left:(center.width-width/2)+'px', 887 zIndex:1001, 888 color:'white', 889 position:'absolute', 890 width:width+'px', 891 height:'20px', 892 textAlign:'right', 893 display:'none' 894 }); 895 modalClose.addClassName('link font normal bold'); 896 modalClose.innerHTML = closeText; 897 if(closeImage) 898 { 899 modalClose.innerHTML = modalClose.innerHTML + ' <img src="'+ closeImage + '" class="vmiddle"/>'; 900 } 901 // build out content element 902 var content = Element.extend(document.createElement('div')); 903 content.setAttribute('id', element); 904 content.setStyle({ 905 position:'relative', 906 display:'none' 907 }); 908 // build out content loading element 909 var contentLoad = Element.extend(document.createElement('div')); 910 contentLoad.setAttribute('id', element+'_load'); 911 contentLoad.setStyle({ 912 position:'relative' 913 }); 914 // add our modal elements to the document body for display 915 var body = document.getElementsByTagName('body')[0]; 916 body.appendChild(overlay); 917 body.appendChild(modal); 918 modal.appendChild(content); 919 modal.appendChild(contentLoad); 920 body.appendChild(modalClose); 921 // display our modal element 922 overlay.show(); 923 modal.show(); 924 modalClose.show(); 925 content.show(); 926} 927 928/**
929 * destroys modal elements thus closing modal window and execute a function 930 * 931 * @param closeFunction {string} 932 */ 933function modalWindowClose(closeFunction) 934{ 935 var body = document.getElementsByTagName('body')[0]; 936 body.removeChild($('modal')); 937 body.removeChild($('modalClose')); 938 body.removeChild($('overlay')); 939 if(closeFunction) 940 { 941 eval(closeFunction); 942 } 943} 944 945function openNewCalendar(options) 946{ 947 // ensure that options is an object 948 if (typeof options != 'object') 949 { 950 options = {field: options} 951 } 952 // set default vales if not passed 953 if (!options.format) options.format = "yy-mm-dd"; 954 //call calendar 955 var current_date = new Date(); 956 if (options.type == 'event') { 957 var start_year = current_date.getFullYear() - 3; 958 var end_year = current_date.getFullYear() + 10; 959 jQuery('#' + options.field).datepicker({ 960 changeMonth: true, 961 changeYear: true, 962 dateFormat: options.format, 963 yearRange: start_year + ':' + end_year, 964 onSelect: function(date) { 965 var start_date = jQuery("#start").datepicker("getDate"); 966 var end_date = jQuery("#end").datepicker("getDate"); 967 if (options.field == 'start' && (!jQuery("#end").val() || start_date >= end_date)) 968 { 969 var new_end_date = jQuery("#start").datepicker("getDate"); 970 new_end_date.setHours(new_end_date.getHours() + 1); 971 jQuery("#end").datepicker("setDate", new_end_date); 972 } 973 } 974 }); 975 /*jQuery('#' + options.field).datetimepicker({ 976 changeMonth: true, 977 changeYear: true, 978 dateFormat: options.format, 979 yearRange: current_date.getFullYear()+ ':' + end_year, 980 timeFormat: "HH:mm:ss", 981 hour: 8, 982 onSelect: function(date) { 983 var start_date = jQuery("#start").datepicker("getDate"); 984 var end_date = jQuery("#end").datepicker("getDate"); 985 if (options.field == 'start' && (!jQuery("#end").val() || start_date >= end_date)) 986 { 987 var new_end_date = jQuery("#start").datepicker("getDate"); 988 new_end_date.setHours(new_end_date.getHours() + 1); 989 jQuery("#end").datepicker("setDate", new_end_date); 990 } 991 } 992 });*/ 993 } 994 else if (options.type == 'quota') 995 { 996 var start_year = current_date.getFullYear() - 3; 997 var end_year = current_date.getFullYear() + 25; 998 jQuery('#' + options.field).datepicker({ 999 changeMonth: true, 1000 changeYear: true, 1001 dateFormat: options.format, 1002 yearRange: start_year + ':' + end_year, 1003 onSelect: function(date) { 1004 var start_date = jQuery("#start").datepicker("getDate"); 1005 var end_date = jQuery("#end").datepicker("getDate"); 1006 if (options.field == 'start' && (!jQuery("#end").val() || start_date >= end_date)) 1007 { 1008 var new_end_date = jQuery("#start").datepicker("getDate"); 1009 new_end_date.setDate(new_end_date.getDate() + 1); 1010 jQuery("#end").datepicker("setDate", new_end_date); 1011 } 1012 else if (options.field == 'end' && start_date > end_date) 1013 { 1014 var new_end_date = jQuery("#start").datepicker("getDate"); 1015 jQuery("#end").datepicker("setDate", new_end_date); 1016 } 1017 } 1018 }); 1019 } 1020 else 1021 { 1022 var end_year = current_date.getFullYear() - 1; 1023 jQuery('#' + options.field).datepicker({ 1024 changeMonth: true, 1025 changeYear: true, 1026 dateFormat: options.format, 1027 yearRange: '1930:' + end_year, 1028 defaultDate: '-30y' 1029 }); 1030 } 1031} 1032 1033function prepareJsForm() 1034{ 1035 if (typeof(jQuery('#formPersonal').attr('id')) != 'undefined') 1036 { 1037 //formHelper('formPersonal', true); 1038 } 1039 // automplete countries 1040 if (typeof(jQuery('#listCountries').attr('id')) != 'undefined') { 1041 var countriesList = jQuery('#listCountries').text().split(','); 1042 if (countriesList) { 1043 if (typeof(jQuery("#country").attr('id')) != 'undefined') { 1044 jQuery("#country").autocomplete({ source:countriesList }); 1045 jQuery('#country').blur(function() { check_country (this.value, countriesList, 'country'); }); 1046 } 1047 if (typeof(jQuery("#nacionality").attr('id')) != 'undefined') { 1048 jQuery("#nacionality").autocomplete({ source:countriesList }); 1049 jQuery('#nacionality').blur(function() { check_country (this.value, countriesList, 'nacionality'); }); 1050 } 1051 } 1052 } 1053 window.scrollTo(0, 0); 1054 if (jQuery('.errors').length) 1055 { 1056 jQuery('.question').css('background', 'rgb(253, 237, 237)'); 1057 } 1058 jQuery.each(jQuery('.errors'), function( index, value ) { 1059 jQuery(value).siblings('input').css('background', 'rgb(253, 237, 237)'); 1060 jQuery(value).siblings('select').css('background', 'rgb(253, 237, 237)'); 1061 jQuery(value).siblings('input[type=checkbox]').parent().parent().css('color', '#FF0000'); 1062 jQuery(value).siblings('input[type=checkbox]').parent().parent().siblings('.checkboxDivText').css('color', '#FF0000'); 1063 });
1064 if (jQuery('#no_email').length) 1065 { 1066 PORTAL.account.noEmail(); 1067 } 1068} 1069 1070function reverseFloat(d) 1071{ 1072 if (d.length < 1) { return; } 1073 var e = $(d); 1074 AssignPosition(e); 1075 if ($(e).hasClassName('hidden')) 1076 { 1077 $(e).removeClassName('hidden'); 1078 $(e).addClassName('show'); 1079 $(e).addClassName(d); 1080 } 1081 else 1082 { 1083 $(e).removeClassName('show'); 1084 $(e).removeClassName(d); 1085 $(e).addClassName('hidden'); 1086 } 1087} 1088 1089/** 1090 * reverses the current visibility of an element 1091 * 1092 * @param string e 1093 */ 1094function reverseVisibility (e) 1095{ 1096 if ($(e).hasClassName('hidden')) 1097 { 1098 $(e).removeClassName('hidden'); 1099 $(e).addClassName('show'); 1100 } 1101 else 1102 { 1103 $(e).removeClassName('show'); 1104 $(e).addClassName('hidden'); 1105 } 1106} 1107 1108function selector(field, value) 1109{ 1110 for (i=0; i<$(field).length; i++) 1111 { 1112 if ($(field).options[i].value == value) 1113 { 1114 $(field).selectedIndex=i; 1115 break; 1116 } 1117 } 1118} 1119 1120/** 1121 * changes the innerHTML of an element 1122 * 1123 * @param content 1124 * @param element 1125 */ 1126function setContent(content, element) 1127{ 1128 $(element).innerHTML = content; 1129} 1130 1131/** 1132 * supplies an handy calendar selector 1133 * 1134 * @param field {string} where to tie the calendar to 1135 * @param relative {string} opens the calendar with 1136 */ 1137function setRelated(calendar) 1138{ 1139 if ($('end') && $('start')) 1140 { 1141 date1 = $('start').value.split('-'); 1142 date2 = $('end').value.split('-'); 1143 var startDate = new Date(date1[0], date1[1], date1[2]); 1144 var endDate = new Date(date2[0], date2[1], date2[2]); 1145 } 1146 if ($('end') && $('start') && $('start') == calendar.params.inputField) 1147 { 1148 $('end').value = $('start').value; 1149 } 1150 else if ($('end') && $('start') && startDate>endDate) 1151 { 1152 $('end').value = $('start').value; 1153 } 1154} 1155 1156/** 1157 * sets the translated timeout msg 1158 * 1159 * @param msg {string} 1160 */ 1161function setTimeoutMsg(msg) 1162{ 1163 timeoutMsg = msg; 1164} 1165 1166/** 1167 * sets tiny mce 1168 * 1169 * @param lang {string} 1170 */ 1171function setTinyMce (lang, t_width, t_height, tiny_height = 500) 1172{ 1173 if (!t_width) 1174 { 1175 t_width = '100%'; 1176 } 1177 if (!t_height) 1178 { 1179 t_height = '100%'; 1180 } 1181 if (!lang) 1182 { 1183 lang = 'en'; 1184 } 1185 lang = (lang == 'br' ? 'pt' : lang); 1186 1187 buttons1 = "bold italic underline strikethrough undo redo | alignleft aligncenter alignright al
1187ignjustify"; 1188 buttons2 = "fontselect | fontsizeselect | bullist numlist link unlink | image table forecolor backcolor styleprops | nonbreaking hr removeformat preview code "; 1189 1190 //tiny mce 1191 tinymce.init({ 1192 selector: 'textarea', 1193 /*external_plugins: { 1194 "xhtmlxtras": baseUrl+"/scripts/library/tiny_mce/plugins/xhtmlxtras/editor_plugin.js" 1195 },*/ 1196 theme: "modern", 1197 height: tiny_height, 1198 menubar: false, 1199 language: lang, 1200 relative_urls: false, 1201 convert_urls : false, 1202 verify_html: false, 1203 toolbar: 'fontsizeselect', 1204 fontsize_formats: '8pt 9pt 10pt 11pt 12pt 13pt 14pt 15pt 16pt 17pt 18pt 19pt 20pt', 1205 extended_valid_elements: "a[class|name|href|target|title|onclick|rel],script[type|src],iframe[src|style|width|height|scrolling|marginwidth|marginheight|frameborder],img[align<bottom?left?middle?right?top|alt|border|class|dir<ltr?rtl|height|hspace|id|ismap<ismap|lang|longdesc|name|onclick|ondblclick|onkeydown|onkeypress|onkeyup|onmousedown|onmousemove|onmouseout|onmouseover|onmouseup|src|style|title|usemap|vspace|width],$elements", 1206 plugins: [ 1207 'advlist autolink lists link image charmap print preview hr anchor pagebreak', 1208 'searchreplace wordcount visualblocks visualchars code fullscreen', 1209 'insertdatetime media nonbreaking save table contextmenu directionality', 1210 'emoticons template paste textcolor colorpicker textpattern imagetools codesample toc spellchecker' 1211 ], 1212 autosave_ask_before_unload: true, 1213 toolbar1:buttons1 , 1214 toolbar2:buttons2 , 1215 content_css: baseUrl + "/scripts/library/tiny_mce/themes/advanced/skins/default/custom_content.css", 1216 valid_children: "+body[style]", 1217 setup : function(ed) { 1218 ed.on("click", function(ed, e) { 1219 actualCaretPositionBookmark = tinymce.EditorManager.activeEditor.selection.getBookmark(1); 1220 }); 1221 ed.on("keyup", function(ed,e) { 1222 actualCaretPositionBookmark = tinymce.activeEditor.selection.getBookmark(1); 1223 }); 1224 ed.on("Event", function() { 1225 actualCaretPositionBookmark = tinymce.EditorManager.activeEditor.selection.getBookmark(1); 1226 }); 1227 } 1228 1229 1230}); 1231 /*tinyMCE.init({ 1232 theme: "advanced", 1233 mode: "textareas", 1234 language: lang, 1235 relative_urls: false, 1236 convert_urls : false, 1237 verify_html: false, 1238 extended_valid_elements: "a[class|name|href|target|title|onclick|rel],script[type|src],iframe[src|style|width|height|scrolling|marginwidth|marginheight|frameborder],img[class|src|border=0|alt|title|hspace|vspace|width|height|align|onmouseover|onmouseout|name],$elements", 1239 plugins: "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template", 1240 theme_advanced_buttons1: buttons1, 1241 theme_advanced_buttons2: buttons2, 1242 theme_advanced_buttons3: buttons3, 1243 theme_advanced_buttons4: buttons4, 1244 content_css : baseUrl + "/scripts/library/tiny_mce/themes/advanced/skins/default/custom_content.css", 1245 theme_advanced_font_sizes: "8pt,9pt,10pt,11pt,12pt,13pt,14pt,15pt,16pt,17pt,18pt,19pt,20pt", 1246 font_size_style_values : "8pt,9pt,10pt,11pt,12pt,13pt,14pt,15pt,16pt,17pt,18pt,19pt,20pt", 1247 height: t_height, 1248 width: t_width, 1249 theme_advanced_toolbar_location: "top", 1250 theme_advanced_toolbar_align: "left", 1251 valid_children: "+body[style]", 1252 setup: function (ed) { 1253 ed.onKeyUp.add(function (ed, e) { 1254 actualCaretPositionBookmark = tinyMCE.activeEditor.selection.getBookmark(1); 1255 }); 1256 ed.onClick.add(function (ed, e) { 1257 actualCaretPositionBookmark = tinyMCE.activeEditor.selection.getBookmark(1); 1258 }); 1259 ed.onEvent.add(function (ed, e) { 1260 actualCaretPositionBookmark = tinyMCE.activeEditor.selection.getBookmark(1); 1261 }); 1262 } 1263 });*/ 1264} 1265 1266function showElement(e) 1267{ 1268 if (jQuery('#'+e)) 1269 { 1270 jQuery('#'+e).removeClass('hidden'); 1271 jQuery('#'+e).addClass('visible'); 1272 } 1273} 1274 1275/** 1276 * shows an element next to the mouse 1277 * 1278 * @param d {string} element to display 1279 */ 1280function showFloat(d) 1281{ 1282 if (d.length < 1) { return; } 1283 var e = $(d); 1284 AssignPosition(e); 1285 $(e).removeClassName('hidden'); 1286 $(e).addClassName('show');
1287 $(e).addClassName(d); 1288} 1289 1290/** 1291 * show waiting image 1292 * 1293 * @param target {string} what to replace to show waiting image 1294 * @param text {string} text to show next to image 1295 */ 1296function showWaiting(target, text) 1297{ 1298 if ($(target)) 1299 { 1300 $(target).innerHTML = '<img src="'+baseUrl+'/images/manager/ajax_loader.gif" class="vmiddle">' + ' ' + text; 1301 } 1302} 1303 1304function check(){ 1305 var error_field = jQuery('#error_field').html(); 1306 if (error_field != null && error_field) { 1307 checkFormErrors(); 1308 $(error_field).focus(); 1309 }else{ 1310 var msg = jQuery('#successMsg').text(); 1311 if (msg.search(/%S%/) > -1) 1312 { 1313 displayMessenger('successMsg', msg); 1314 var msg_only_text = msg.replace('%S%', ''); 1315 new PNotify({ 1316 title: msg_only_text, 1317 type: 'success', 1318 display:3000, 1319 styling: 'bootstrap3' 1320 }); 1321 } 1322 if (typeof(jQuery('#redirectUrlForm').attr('id')) != 'undefined') { 1323 var temp_url = jQuery('#redirectUrlForm').text(); 1324 if (temp_url) { 1325 setTimeout(function(){ window.location = baseUrl+'/'+temp_url; }, 2000); 1326 } 1327 } 1328 } 1329}
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.