1function sstree_toggle(elm,iopen,iclose) { 2 var newDisplay = "none"; 3 if(iopen=='') iopen='/tzr/templates/images/folder-open.gif'; 4 if(iclose=='') iclose='/tzr/templates/images/folder-closed.gif'; 5 if(iopen=='none') iopen=''; 6 if(iclose=='none') iclose=''; 7 if(iclose!='none') elm.style.backgroundImage = 'url( '+iclose+' )'; 8 var e = elm.nextSibling; 9 while (e != null) { 10 if (e.tagName == "OL" || e.tagName == "ol" || e.tagName == "ul" || e.tagName == "UL") { 11 if (e.style.display == "none") { 12 newDisplay = "block"; 13 if(iopen!='none') {elm.style.backgroundImage = 'url( '+iopen+' )';}; 14 } 15 break; 16 } 17 e = e.nextSibling; 18 } 19 while (e != null) { 20 if (e.tagName == "OL" || e.tagName == "ol" || e.tagName == "ul" || e.tagName == "UL") e.style.display = newDisplay; 21 e = e.nextSibling; 22 } 23} 24 25function sstree_toggleBullet(elm) { 26 var newDisplay = "none"; 27 var e = elm.nextSibling; 28 while (e != null) { 29 if (e.tagName == "OL" || e.tagName == "ol" || e.tagName == "UL" || e.tagName == "ul") { 30 if (e.style.display == "none") newDisplay = "block"; 31 break; 32 } 33 e = e.nextSibling; 34 } 35 while (e != null) { 36 if (e.tagName == "OL" || e.tagName == "ol" || e.tagName == "UL" || e.tagName == "ul") e.style.display = newDisplay; 37 e = e.nextSibling; 38 } 39} 40 41 42 43function sstree_collapseAll() { 44 var lists = document.getElementsByTagName('OL'); 45 for (var j = 0; j < lists.length; j++) 46 lists[j].style.display = "none"; 47 lists = document.getElementsByTagName('UL'); 48 for (var j = 0; j < lists.length; j++) 49 lists[j].style.display = "none"; 50 var e = document.getElementById("root"); 51 e.style.display = "block"; 52} 53function sstree_open(tag) { 54 var lists = document.getElementsByTagName('A'); 55 for (var j = 0; j < lists.length; j++) 56 if(lists[j].id==tag) sstree_toggle(lists[j],'',''); 57} 58 59if(typeof(TZR)=="undefined") TZR=new Object(); 60if(typeof(TZR._sharescripts)=="undefined") TZR._sharescripts="/tzr/scripts/"; 61if(typeof(TZR._sharetemplates)=="undefined") TZR._sharetemplates="/tzr/templates/"; 62TZR.isFormOk=true; 63TZR.formValidation=true; 64TZR.validator=new Array(); 65TZR.dependency=new Object(); 66TZR.onsubmit=new Array(); 67// validation des formulaires 68TZR.isShortTextValid = function (id,fmt,fieldlabel,color) { 69 var o = document.getElementById(id); 70 var phrase = o.value; 71 var resultat = fmt.test(phrase); 72 if(!resultat) { 73 TZR.setElementErrorState(o,false,color); 74 TZR.isFormOk=false; 75 return false; 76 } else { 77 TZR.setElementErrorState(o,true,color); 78 return true; 79 } 80} 81// validation des formulaires des champs evalutaiton/rating 82TZR.isEvalValid = function (id,fmt,fieldlabel,color,linktext,listid) { 83 if (fmt != '/(.+)/'){ 84 return; 85 } 86 var o = jQuery("#container"+id); 87 if (o.data('clicked') != 1){ 88 TZR.setElementErrorState(o.parent(),false,color); 89 TZR.isFormOk=false; 90 return false; 91 } else { 92 TZR.setElementErrorState(o.parent(),true,color); 93 return true; 94 } 95} 96// validation des formulaires 97TZR.isLinkValid = function (id,fmt,fieldlabel,color,linktext,listid) { 98 var o = document.getElementById(id); 99 var typ=o.type; 100 // Cas "radio" ou "checkbox" 101 if(typ=="radio" || typ=="checkbox"){ 102 return TZR.isRadioValid(id,fmt,fieldlabel,color,linktext,listid); 103 }else{ 104 var resultat = true; 105 // Cas "un select" 106 if(fmt=='compselect'){ 107 resultat = false; 108 for(var i=0;i<o.options.length;i++){ 109 if(o.options[i]!=null && o.options[i].selected && o.options[i].value!=''){ 110 resultat=true; 111 break; 112 } 113 } 114 }else if(fmt=='') { // Cas "2 select non obligatoire" 115 for(var i=0;i<o.options.length;i++) if(o.options[i]!=null) o.options[i].selected=true; 116 } else if(fmt=='/(.+)/') { // Cas "2 select obligatoire" 117 if(o.options.length==0) resultat=false; 118 else for(var i=0;i<o.options.length;i++) if(o.options[i]!=null) o.options[i].selected=true; 119 } else if(document.getElementById("table"+id)!=undefined){ // Cas autocomplete multiple 120 if(document.getElementById("table"+id).tBodies[0].rows.length<2) resultat=false; 121 o=document.getElementById(linktext); 122 } else { // Autre cas : autocomplete, lien base doc... 123 var phrase = o.value; 124 var resultat = fmt.test(phrase); 125 if(linktext){ 126 o=document.getElementById(linktext); 127 } 128 } 129 if(!resultat) {
130 TZR.setElementErrorState(o,false,color); 131 TZR.isFormOk=false; 132 return false; 133 } else { 134 TZR.setElementErrorState(o,true,color); 135 return true; 136 } 137 } 138} 139TZR.isRadioValid = function (id,fmt,fieldlabel,color,linktext,listid) { 140 var resultat=false; 141 var o=document.getElementById(id); 142 var l=listid.length; 143 for(var i=0;i<l;i++){ 144 if(document.getElementById(listid[i]).checked){ 145 resultat=true; 146 break; 147 } 148 } 149 var tab=TZR.getParent(o,'TABLE'); 150 if(!resultat){ 151 TZR.setElementErrorState(o,false,color,tab); 152 TZR.isFormOk=false; 153 return false; 154 } else { 155 TZR.setElementErrorState(o,true,color,tab); 156 return true; 157 } 158} 159TZR.isThesaurusValid=function(id,fmt,fieldlabel,color){ 160 var o=document.getElementById("div"+id); 161 var ok=false; 162 jQuery('#table'+id+" input").each(function(i){ 163 if(this.value!=''){ 164 ok=true; 165 return false; 166 } 167 }); 168 if(!ok){ 169 TZR.setElementErrorState(o,false,color); 170 TZR.isFormOk=false; 171 return false; 172 } else { 173 TZR.setElementErrorState(o,true,color); 174 return true; 175 } 176} 177TZR.isCaptchaValid = function(id,fmt,fieldlabel,color){ 178 var response=0; 179 o=document.getElementById(id); 180 jQuery.ajax({async:false, 181 url:TZR._sharescripts+"ajax8.php?class=XModTable&function=xmodtable_captcha", 182 cache:false, 183 data:{value:o.value,id:id}, 184 success:function(resp){response=resp;} 185 }); 186 if(response=='0') response=false; 187 else response=true; 188 if(!response) { 189 document.getElementById("ca"+id).onclick(); 190 document.getElementById(id).value=""; 191 TZR.setElementErrorState(o,false,color); 192 TZR.isFormOk=false; 193 return false; 194 } else { 195 TZR.setElementErrorState(o,true,color); 196 TZR.isFormOk=true; 197 return true; 198 } 199} 200TZR.isUploaderValid = function (id,fmt,fieldlabel,color) { 201 var o=jQuery('#'+id+"_cont div.uploadQueue")[0]; 202 var nb=jQuery(o).find('div.uploadCancel').length; 203 var tocol=jQuery(o).find('div.uploadQueueItem'); 204 if(nb>0) { 205 TZR.setElementErrorState(o,false,color,tocol); 206 TZR.isFormOk=false; 207 return false; 208 } else { 209 TZR.setElementErrorState(o,true,color,tocol); 210 return true; 211 } 212} 213TZR.isFileValid = function (id,fmt,fieldlabel,color,browsemods,allow_externalfile) { 214 var o = document.getElementById(id); 215 var tocol = o; 216 o.isValid = false; 217 if (o.value != '' || document.getElementById(id+'-old').value != '') 218 o.isValid = true; 219 else if (browsemods && document.getElementById(id+'-from').value != '') 220 o.isValid = true; 221 else if (allow_externalfile && document.getElementById(id+'-external').value != '') 222 o.isValid = true; 223 else if (jQuery('#'+id+'_cont').length) { 224 tocol = jQuery('#'+id+'_cont'); 225 if(jQuery('#'+id+'_cont div.uploadQueueItem.uploadComplete:first').length) 226 o.isValid = true; 227 } 228 TZR.setElementErrorStyle(o,color,tocol); 229 if (!o.isValid) { 230 TZR.isFormOk = false; 231 } 232 return o.isValid; 233} 234TZR.setElementErrorState=function(o,state,color,tocol){ 235 o.isValid=state; 236 TZR.setElementErrorStyle(o,color,tocol); 237} 238TZR.setElementErrorStyle=function(o,color,tocol){ 239 if(!tocol) tocol=o; 240 tocol=jQuery(tocol); 241 if(!tocol[0]) return; 242 243 if(o.isValid==false){ 244 if(tocol[0].isError) return; 245 tocol[0].isError=true; 246 if(color.charAt(0)=='#') { 247 tocol[0].obackgroundColor=tocol[0].style.backgroundColor; 248 tocol.css('background-color',color); 249 } else { 250 tocol.addClass(color); 251 } 252 } else { 253 if(!tocol[0].isError) return; 254 tocol[0].isError=false; 255 if(color.charAt(0)=='#') { 256 if(tocol[0].obackgroundColor) tocol.css('background-color',tocol[0].obackgroundColor); 257 else tocol.css('background-color',''); 258 } else { 259 tocol.removeClass(color); 260 } 261 } 262} 263TZR.isFormValidWithAjax=function(f,method,overlay_target,color,callback){ 264 if(typeof f!=='object') f=document.getElementById(f); 265 // Vide les erreurs précédentes 266 var error_el=jQuery('div.error',f); 267 error_el.html(''); 268 // Prepare les données 269 var data=jQuery(f).serializeArray(); 270 for(var i in data){ 271 if(data[i].name=="function" || data[i].name=="_function") data[i].value=method; 272 if(data[i].name=="uniqid") delete data[i]; 273 } 274 // Overlay 275 if(overlay_target){ 276 if(overlay_target=='module-container') overlay_target=jQuery(f).parents('div.cv8-module-container'); 277 else overlay_target=jQuery(overlay_target); 278 var overlay=TZR.setOverlay(overlay_target); 279 }else{ 280 var overlay=null; 281 } 282 // Envoi 283 var ok=false; 284 jQuery.ajax({ 285 url:f.action, 286 data:data, 287 async:false, 288 type:f.method 289 }).done(function(data){ 290 if(overlay) TZR.unsetOverlay(overlay); 291 if(data.status=="success"){ 292 ok=true; 293 if(callback) callback(true,data); 294 }else{ 295 TZR.isFormOk=false; 296 if(callback){ 297 if(callback(false,data)===false) return; 298 } 299 if(data.error){ 300 for(var i in data.error){ 301 error_el.append('<div class="error_message">'+data.error[i]+'</div>'); 302 } 303 error_el.show(); 304 } 305 } 306 }); 307 return ok; 308} 309TZR.isIntervalValid = function (id,fmt,fieldlabel,color) { 310 var hiddenField = document.getElementById(id); 311 var pictoCalendar = jQuery('#pictoCalendar' + id); 312 var phrase = hiddenField.value; 313 var resultat = fmt.test(phrase); 314 if (!resultat) { 315 pictoCalendar.css("border", "1px solid red"); 316 TZR.isFormOk = false;
317 return false; 318 } 319 pictoCalendar.css("border", ""); 320 return true; 321} 322TZR.actualizeCaptcha=function(url,id){ 323 document.getElementById('cimg'+id).src=url+"?id="+id+"&"+(new Date()).getTime(); 324} 325TZR.getUrlTitle=function(url,color){ 326 var urlu=document.getElementById("url"+url); 327 var urll=document.getElementById("label"+url); 328 urlu.style.backgroundImage="url('/tzr/templates/ico/general/indicator.gif')"; 329 urlu.style.backgroundPosition="right center"; 330 urlu.style.backgroundRepeat="no-repeat"; 331 var reg=/^(((?!mailto)(?!\[)).+)$/; 332 if(!reg.test(urlu.value)){ 333 urlu.obackgroundColor=urlu.style.backgroundColor; 334 urlu.style.backgroundColor=color; 335 }else{ 336 var title=TZR.file_get_contents(TZR._sharescripts+'ajax8.php?function=xurldef_getPageTitle&class=XUrlDef&url='+escape(urlu.value)); 337 if(title=="error"){ 338 urlu.obackgroundColor=urlu.style.backgroundColor; 339 urlu.style.backgroundColor=color; 340 }else{ 341 if(urlu.obackgroundColor) urlu.style.backgroundColor=urlu.obackgroundColor; 342 else urlu.style.backgroundColor=''; 343 urll.value=title; 344 } 345 } 346 urlu.style.backgroundImage=""; 347 urlu.style.backgroundPosition=""; 348 urlu.style.backgroundRepeat=""; 349} 350TZR.openPopup = function(url){ 351 window.open(url,'','menubar=no,status=no,resizable=1,scrollbars=1,width=700,height=500'); 352 return false; 353} 354TZR.validFormInPopup = function(f){ 355 var ret=TZR.isFormValidWithFocus(f,true); 356 if(ret){ 357 window.opener.name=TZR.uniqid('TZR'); 358 document.editform.target=window.opener.name; 359 f.submit(); 360 self.close(); 361 return false; 362 }else{ 363 return false; 364 } 365} 366TZR.isFormValid = function (f) { 367 return TZR.isFormValidWithFocus(f,false); 368} 369TZR.isFormValidWithFocus=function(f,foc) { 370 TZR.isFormOk=true; 371 TZR.errorGiveFocus=true; 372 for(var i=0;i<TZR.validator.length;i++){ 373 if(typeof TZR.validator[i][0]!=='object') var o=document.getElementById(TZR.validator[i][0]); 374 else var o=TZR.validator[i][0]; 375 if(o!=null && (o==f || o.form==f) && !jQuery(o).prop('data-disabled')) { 376 if(TZR.validator[i][99]){ 377 TZR.isIdxValid(i); 378 if(foc) { 379 if(!TZR.isFormOk) { 380 if(!TZR.errorGiveFocus) return false; 381 if(TZR.validator[i][5]){ 382 if(typeof TZR.validator[i][5]=='string') o=document.getElementById(TZR.validator[i][5]); 383 else o=TZR.validator[i][5]; 384 } 385 jQuery(o).parents('fieldset.fieldsetAccordionClose').find('>legend').click(); 386 var tabid = jQuery(o).parents('.tzr-tabcontent').attr('id'); 387 if (typeof(tabid) != "undefined" ){ 388 jQuery('li>a[href="#'+tabid+'"]').click(); 389 } 390 jQuery(o).focus(); 391 if(jQuery(o).is(':not(:input),:hidden')) scrollToElement(jQuery(o).closest(':visible')); 392 return false; 393 } 394 } 395 } 396 }else if(!o){ 397 TZR.validator.splice(i,1); 398 i--; 399 } 400 } 401 nb=TZR.onsubmit.length; 402 for(i=0; i<nb; i++) { 403 eval(TZR.onsubmit[i]); 404 } 405 if(!TZR.isFormOk) { 406 if(typeof(TZR.customValid)!='undefined') 407 return TZR.customValid(f); 408 else 409 return confirm('Some data are not valid. Save anyway ?'); 410 } 411 return true; 412} 413TZR.isIdxValid = function (i) { 414 var isValid=false; 415 var val=TZR.validator[i]; 416 if(val[4]=='Form') 417 isValid=TZR.isFormValidWithAjax(val[0],val[1],val[2],val[3],val[6]); 418 else if(val[4]=='XShortTextDef') 419 isValid=TZR.isShortTextValid(val[0],val[1],val[2],val[3]); 420 else if(val[4]=='XRealDef') 421 isValid=TZR.isShortTextValid(val[0],val[1],val[2],val[3]); 422 else if(val[4]=='XEvalDef') 423 isValid=TZR.isEvalValid(val[0],val[1],val[2],val[3]); 424 else if(val[4]=='XPasswdDef'){ 425 isValid=TZR.isShortTextValid(val[0],val[1],val[2],val[3]); 426 if(isValid && document.getElementById(val[0]+'_HID')){ 427 isValid=TZR.isShortTextValid(val[0]+'_HID',new RegExp('^'+document.getElementById(val[0]).value+'$'),val[2],val[3]); 428 } 429 }else if(val[4]=='XDocumentDef') 430 isValid=TZR.isShortTextValid(val[0],val[1],val[2],val[3],val[5]); 431 else if(val[4]=='XLinkDef') 432 isValid=TZR.isLinkValid(val[0],val[1],val[2],val[3],val[5],val[6]); 433 else if(val[4]=='XStringSetDef') 434 isValid=TZR.isLinkValid(val[0],val[1],val[2],val[3],val[5],val[6]); 435 else if(val[4]=='XThesaurusDef') 436 isValid=TZR.isThesaurusValid(val[0],val[1],val[2],val[3]); 437 else if(val[4]=='Captcha') 438 isValid=TZR.isCaptchaValid(val[0],val[1],val[2],val[3]); 439 else if(val[4]=='XFileUploader') 440 isValid=TZR.isUploaderValid(val[0],val[1],val[2],val[3]); 441 else if(val[4]=='XFileDef') 442 isValid=TZR.isFileValid(val[0],val[1],val[2],val[3],val[6],val[7]); 443 else if(val[4]=='XIntervalDef') 444 isValid=TZR.isIntervalValid(val[0],val[1],val[2],val[3],val[6],val[7]); 445 return isValid; 446} 447TZR.autoCompleteCache = {}; 448TZR.addAutoComplete=function(id) { 449 var acfield = jQuery("#_INPUT" + id), hiddenfield; 450 if (acfield.length) { 451 hiddenfield = document.getElementById(id); 452 } else { // cas shorttext edit 453 acfield = jQuery("#" + id); 454 } 455 // init/empty cache 456 TZR.autoCompleteCache[acfield.attr('id')] = {}; 457 acfield.keydown(function(event) { 458 if(event.keyCode!=13 && event.keyCode!=9 && hiddenfield) 459 hiddenfield.value=""; 460 }).autocomplete({ 461 autoFocus: true, 462 delay: 500, 463 minLength: 3, 464 source : function(request, response) { 465 var autocomplete = this.element.data('autocomplete'); 466 // check cache 467 var term = request.term.toLowerCase().trim(), 468 cache = TZR.autoCompleteCache[acfield.attr('id')]; 469 470 if (cache && cache[term]) { 471 response(cache[term]); 472 return; 473 } 474 for (cachedTerm in cache) { 475 var regexp = new RegExp((autocomplete.params.prefixSearch ? '^' : '') + cachedTerm); 476 if (regexp.test(term) && !cache[cachedTerm]) { 477 response(); 478 return false;
479 } 480 } 481 482 jQuery.ajax({ 483 url: autocomplete.url + '&q=' + request.term, 484 dataType: "json", 485 data: autocomplete.params, 486 success: function(data) { 487 TZR.autoCompleteCache[acfield.attr('id')][term] = data; 488 response(data); 489 } 490 }); 491 }, 492 select : function(event, ui) { 493 var autocomplete = jQuery(this).data('autocomplete'); 494 if (autocomplete.callback && typeof autocomplete.callback == 'function') { 495 autocomplete.callback(autocomplete.params.id, ui.item.value, ui.item.label); 496 } else { 497 if (hiddenfield) { 498 hiddenfield.value = ui.item.value; 499 } 500 acfield.val(ui.item.label); 501 } 502 jQuery(hiddenfield).change(); 503 return false; // job done 504 }, 505 open: function() { 506 jQuery('.ui-autocomplete').css({width: '300px'}); 507 }, 508 focus: function( event, ui ) { 509 event.preventDefault(); 510 } 511 }); 512} 513TZR.autoCompleteMultipleValue=function(id,oid,v){ 514 if(jQuery('#table'+id).find('input[value="'+oid+'"]').length>0) return; 515 var tr=TZR.addTableLine("table"+id,[undefined,v],0,false); 516 jQuery('input',tr.cells[0]).val(oid); 517 jQuery(tr).show(); 518 jQuery('#_INPUT'+id).val(''); 519} 520TZR.autoCompleteMultipleFields = function (id, oid, v) { 521 var autocomplete = jQuery('#' + id).data('autocomplete'), 522 relatedFields = autocomplete.params.relatedFields.split(','), 523 _values = v.split(', '); 524 jQuery('#' + id).val(_values[0]); 525 for (key in relatedFields) { 526 jQuery(':input[name="' + relatedFields[key] + '"]').val(_values[parseInt(key) + 1]); 527 } 528} 529TZR.isIdValid = function (id) { 530 found=false; 531 nb=TZR.validator.length; 532 for(i=0;i<nb;i++) { 533 if(id==TZR.validator[i][0]) { 534 if(!TZR.isIdxValid(i)){ 535 var valmess = jQuery("#"+id).data('pattern-error-message'); 536 if (typeof valmess != "undefined") 537 TZR.setCustomValidityMess(id, valmess); 538 else 539 TZR.setCustomValidityMess(id, ""); 540 return false; 541 } else { 542 TZR.setCustomValidityMess(id, ""); 543 } 544 } 545 } 546 if(typeof(TZR.customOnBlur)!='undefined') 547 return TZR.customOnBlur(id); 548 return true; 549} 550TZR.setCustomValidityMess = function(id, valmess){ 551 try{ 552 document.getElementById(id).setCustomValidity(valmess); 553 } catch(except){ 554 // IE9 555 } 556} 557TZR.copyDivToHidden = function (idsrc, iddst) { 558 var objsrc = document.getElementById(idsrc); 559 var objdst = document.getElementById(iddst); 560 if(objsrc.innerHTML=="...") objdst.value=""; 561 else objdst.value = objsrc.innerHTML; 562 return true; 563} 564 565TZR.addOnSubmit=function (src) { 566 nb=TZR.onsubmit.length; 567 TZR.onsubmit[nb]=src; 568} 569TZR.addValidator=function(src){ 570 if(typeof src[0]!=='object') var o=document.getElementById(src[0]); 571 else var o=src[0]; 572 if(!o) return false; 573 if(!src[5] && src[4]=='Form') src[5]=jQuery('div.error:visible:first',o); 574 if(src[99]===undefined) src[99]=true; 575 var v=jQuery(o).data('validators'); 576 if(!v) v=[src]; 577 else v.push(src); 578 jQuery(o).data('validators',v); 579 TZR.validator.push(src); 580 return true; 581} 582TZR.changeValidatorsState=function(id,active){ 583 if(!active) active=false; 584 var vs=jQuery('#'+id+',#url'+id).data('validators'); 585 if(vs){ 586 for(var i in vs){ 587 vs[i][99]=active; 588 } 589 } 590} 591TZR.editSec=function (selfu, moid, oid, selectedfrom, _function) { 592 if (typeof _function == 'undefined') { 593 _function = 'secEditSimple'; 594 } 595 596 if(typeof(selectedfrom)!='undefined'){ 597 if(typeof(selectedfrom)=='object'){ 598 var f=document.forms['browse'+selectedfrom.uniqid]; 599 }else{ 600 var f=document.forms[selectedfrom]; 601 } 602 if(!f || !TZR.checkBoxesIsChecked(f)){ 603 if(oid){ 604 oid="oid="+oid; 605 }else{ 606 alert(TZR._noobjectselected); 607 return; 608 } 609 }else{ 610 oid=jQuery(f).find('input:checked[name^=_selected]').serialize()+'&_selectedok=ok'; 611 } 612 }else{ 613 oid="oid="+oid; 614 } 615 window.open(selfu+'&function='+_function+'&template=xmodule/edit-sec.html&moid='+moid+'&tplentry=br&'+oid, 616 'SecBrowser','width=600,height=350,resizable=yes,scrollbars=yes,dependent=yes'); 617 return false; 618} 619 620TZR.autocomplete_cb = function (suggestion) { 621 if ( suggestion ) { 622 var inp = TZR.autocomplete_field; 623 var inp_enc = TZR.autocomplete_encoded_field; 624 inp_enc.value=suggestion[0]; 625 // IE 626 if ( document.selection ) { 627 var sel = document.selection.createRange(); 628 sel.text = suggestion[1]; 629 sel.move( 'character', -suggestion[1].length ); 630 sel.findText( suggestion[1] ); 631 sel.select(); 632 } else { 633 var preLength = inp.value.length; 634 inp.value += suggestion[1]; 635 inp.selectionStart = preLength; 636 inp.selectionEnd = inp.value.length; 637 } 638 } 639} 640 641TZR.autocomplete_running=false; 642TZR.autocomplete_precheck = function ( tab, field, myform, e ) { 643 // Check for alpha numeric keys 644 TZR.autocomplete_field = myform.elements[field+'_HID']; 645 TZR.autocomplete_encoded_field = myform.elements[field]; 646 if ( ( e.keyCode >= 48 && e.keyCode <= 57 ) || ( e.keyCode >= 65 && e.keyCode <= 90 ) ) { 647 x_xlinkdef_autocomplete( tab, field, TZR.autocomplete_field.value, TZR.autocomplete_cb); 648 } 649} 650 651// Inverse la coche de toutes les checkbox d'un formulaire 652TZR.toggleCheckBoxes = function(src,startn,endn) { 653 if(!startn) startn='selectstart'; 654 var start=false; 655 for(var i=0;i<src.elements.length;i++) { 656 if(endn){ 657 if(src.elements[i].value==endn) break; 658 } 659 if(start) src.elements[i].checked = !src.elements[i].checked; 660 if(src.elements[i].value==startn) start=true; 661 } 662} 663// Coche ou decoche toutes les checkbox d'un formulaire 664TZR.checkBoxes = function(src,value,startn,endn) { 665 if(!startn) startn='selectstart'; 666 var start=false; 667 for(var i=0;i<src.elements.length;i++) { 668 if(endn){ 669 if(src.elements[i].value==endn) break; 670 } 671 if(start && (src.elements[i].type=='checkbox')) src.elements[i].checked=value; 672 if(src.elements[i].value==startn) start=true; 673 } 674} 675// Retourne vrai si au moins une checkbox est coché dans le formulaire 676TZR.checkBoxesIsChecked = function(src,startn,endn,nameregex) { 677 if(!startn) startn='selectstart'; 678 var start=false; 679 for(var i=0;i<src.elements.length;i++) { 680 if(endn){ 681 if(src.elements[i].value==endn) break; 682 } 683 if(src.elements[i].value==startn){ 684 start=true; 685 continue; 686 } 687 if(nameregex && !nameregex.test(src.elements[i].name)) continue; 688 if(start && src.elements[i].checked) return true; 689 } 690 return false;
691} 692 693TZR.referer = function(markers,lang) { 694 var maintenant = new Date(); 695 var msg=maintenant.toLocaleString(); 696 var n1=new Image(); 697 n1.src=TZR._sharescripts+'marker.php?_marks='+markers+'&_lang='+lang+'&alea='+msg; 698} 699TZR.refererWithTotalOn = function(markers,lang,totalon) { 700 var maintenant = new Date(); 701 var msg=maintenant.toLocaleString(); 702 var n1=new Image(); 703 n1.src=TZR._sharescripts+'marker.php?_marks='+markers+'&_lang='+lang+'&_total='+totalon+'&alea='+msg; 704} 705 706TZR.setDateEmpty = function(id) { 707 document.getElementById(id).value=''; 708 return false; 709} 710 711TZR.selectDocument=function(selfu,moid,id,showfiles){ 712 if(typeof(showfiles)=='undefined') showfiles=1; 713 var w=window.open(selfu+'&function=index2Light&nosess=1&template=xmoddocmgt/poptree.html&moid='+moid+ 714 '&tplentry=br&showfiles='+showfiles+'&_raw=1&_silent=1&action=selectDoc&target='+id, 715 'DocumentBrowser','width=400,height=600,resizable=yes,scrollbars=yes,dependent=yes'); 716} 717 718TZR.setDocumentEmpty = function(id) { 719 document.getElementById("id_"+id).value=''; 720 document.getElementById("id_INPUT"+id).value=''; 721 return false; 722} 723 724TZR.selectTopic = function(moid, selectedTopicOid, onUnloadCallback) { 725 var params = { 726 'function': 'home', 727 'template': 'xmodinfotree/popaction.html', 728 'moid': moid, 729 'tplentry': 'mit', 730 'do': 'showtree', 731 'action': 'selectTopic', 732 'maxlevel': '5', 733 '_selected': {} 734 }; 735 if (typeof(selectedTopicOid) == 'string' && selectedTopicOid.length > 0) 736 params._selected[selectedTopicOid] = '1'; 737 var w = window.open(window.location.pathname+'?'+jQuery.param(params),'TreeBrowser','width=400,height=600,resizable=yes,scrollbars=yes,dependent=yes'); 738 if (typeof(onUnloadCallback) == 'function') 739 w.onunload = onUnloadCallback; 740} 741 742TZR.applySelected=function(func,form,message,template,tplentry,noselect) { 743 if(TZR.checkBoxesIsChecked(form)){ 744 form.target='_self'; 745 form._function.value=func; 746 form.message.value=message; 747 if(template!==false){ 748 form.template.value=template; 749 form._next.value=""; 750 } 751 if(tplentry!==false) form.tplentry.value=tplentry; 752 if(!form.onsubmit || form.onsubmit()) form.submit(); 753 }else{ 754 alert(noselect); 755 return; 756 } 757} 758 759TZR.doubleAdd = function(src,dst,morder) { 760 var i=0; 761 if(morder) { 762 if (jQuery(dst).find('optgroup').length > 0) { // grouped options 763 for (i=0; i<src.options.length; i++) { 764 if (src.options[i].selected) { 765 order = parseInt(jQuery(src.options[i]).attr('order')); 766 groupId = src.options[i].parentNode.id.replace(/(unselected_)?(.*)/, "$2"); 767 dstGroup = jQuery(dst).find('optgroup[id$="'+groupId+'"]'); 768 opts = jQuery(dstGroup).find('option'); 769 for (j=0; j<opts.length; j++) { 770 if (parseInt(jQuery(opts[j]).attr('order')) > order) 771 break; 772 } 773 if (opts[j]) 774 jQuery(opts[j]).before(src.options[i]); 775 else 776 jQuery(dstGroup).append(src.options[i]); 777 i--; 778 } 779 } 780 } else { // non grouped options 781 for (i=0; i<src.options.length; i++) { 782 if (src.options[i].selected) { 783 order = parseInt(jQuery(src.options[i]).attr('order')); 784 for (j=0; j<dst.options.length; j++) { 785 if (parseInt(jQuery(dst.options[j]).attr('order')) > order) 786 break; 787 } 788 if (dst.options[j]) 789 jQuery(dst.options[j]).before(src.options[i]); 790 else 791 jQuery(dst).append(src.options[i]); 792 i--; 793 } 794 } 795 } 796 } else { 797 for (i=src.options.length-1; i>=0; i--) { 798 if (src.options[i].selected) { 799 jQuery(dst).append(src.options[i]); 800 } 801 } 802 } 803 jQuery(src).val(''); 804 jQuery(dst).val(''); 805 // trigger the change event for additionnal control (FO usage) 806 jQuery(dst).change(); 807} 808 809TZR.idxidx=10; 810TZR.addTableLine = function(tableid,td,trtoclone,del) { 811 if(td[1]=='--') return; 812 if(typeof(trtoclone)=='undefined') trtoclone=0; 813 if(typeof(del)=='undefined') del=true; 814 var table = document.getElementById(tableid); 815 var tbody = table.tBodies[0]; 816 var tr = tbody.rows[trtoclone].cloneNode(true); 817 if(del){ 818 for(i=0;i<tr.cells.length; i++) { 819 tr.cells[i].innerHTML=""; 820 } 821 } 822 table.tBodies[0].appendChild(tr); 823 var td3; 824 for(i=0;i<td.length; i++) { 825 if(td[i]!=undefined){ 826 td3=td[i].replace(/xidxid/g,'xid'+TZR.idxidx); 827 jQuery(tr.cells[i]).html(td3); 828 } 829 } 830 TZR.idxidx++; 831 return tr; 832} 833 834/* ajout d'une valeur a partir d'une combo */ 835TZR.addValueToShortText = function(text, multi, sep) { 836 var text1 = document.getElementById(text); 837 var combo1 = document.getElementById(text+'_H'); 838 if(combo1.selectedIndex==0) return; 839 if(multi) { 840 if(text1.value=='') sep=''; 841 text1.value+=sep+combo1.options[combo1.selectedIndex].text; 842 } else { 843 text1.value=combo1.options[combo1.selectedIndex].text; 844 } 845 jQuery(text1).trigger('change'); 846 return; 847} 848 849/* trouve le tag "parentTagName" parent de "element" */ 850TZR.getParent = function(element, parentTagName) { 851 if ( ! element ) return null; 852 else if ( element.nodeType == 1 && element.tagName.toLowerCase() == parentTagName.toLowerCase() ) return element; 853 else return TZR.getParent(element.parentNode, parentTagName); 854} 855 856/* supprimer une ligne dans un tableau */ 857TZR.delLine = function(link) { 858 var td = link.parentNode; 859 var table = TZR.getParent(td, 'TABLE'); 860 var tbody = table.tBodies[0]; 861 tbody.removeChild(TZR.getParent(td, 'TR')); 862} 863 864// Recupere le contenu d'une url via ajax en synchrone 865TZR.file_get_contents=function(url,nocache){ 866 var req = null; 867 try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { 868 try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { 869 try { req = new XMLHttpRequest(); } catch(e) {} 870 } 871 } 872 if (req == null) throw new Error('XMLHttpRequest not supported'); 873 if(typeof(nocache)!='undefined'){
874 url += (url.match(/[?]+/) ? '&' : '?' ) + 'uniqid=' + TZR.uniqid(); 875 } 876 req.open("GET", url, false); 877 req.send(null); 878 return req.responseText; 879} 880TZR.winEditor = null; 881TZR.openhtmlfileeditor = function(options){ 882 var url = options.url+'&formid='+options.uniqid+'&editflag='+escape(options.editflag)+'&uploader='+escape(options.uploader)+'&downloader='+escape(options.downloader); 883 try{ 884 if(TZR.winEditor.closed) throw "Closed"; 885 TZR.winEditor.location = url; 886 TZR.winEditor.focus(); 887 } catch(e){ 888 TZR.winEditor = window.open(url, 'file editor', 'width=800px,height=700px;') 889 } 890} 891// Génére un identifiant unique avec un prefix eventuel 892TZR.uniqid=function(prefix){ 893 if(typeof(prefix)=='undefined') prefix=""; 894 var alea=Math.random()*1000000000; 895 return prefix+alea.toString(); 896} 897TZR.addDependency=function(ftype,fd,f,vd,v,op,s,nochange){ 898 if(typeof(TZR.dependency[fd])=='undefined'){ 899 TZR.dependency[fd]=new Object(); 900 TZR.dependency[fd]['_depfields']=new Object(); 901 TZR.dependency[fd]['_=']=new Object(); 902 TZR.dependency[fd]['_!=']=new Object(); 903 } 904 if(vd=='') vd='_empty'; 905 if(op=='='){ 906 if(typeof(TZR.dependency[fd]['_='][vd])=='undefined') 907 TZR.dependency[fd]['_='][vd]=new Object(); 908 }else{ 909 if(typeof(TZR.dependency[fd]['_!='][vd])=='undefined') 910 TZR.dependency[fd]['_!='][vd]=new Object(); 911 } 912 TZR.dependency[fd]['_depfields'][f]=1; 913 if(op=='=') 914 TZR.dependency[fd]['_='][vd][f]={field:f,ftype:ftype,value:v,style:s,op:op,nochange:nochange}; 915 else 916 TZR.dependency[fd]['_!='][vd][f]={field:f,ftype:ftype,value:v,style:s,op:op,nochange:nochange}; 917} 918TZR.activeDependency=function(f){ 919 jQuery(f).find('select').bind('change',{form:f},TZR.checkDependency); 920 jQuery(f).find(':checkbox,:radio').bind("click",{form:f},TZR.checkDependency); 921 var els=jQuery(f).find('select'); 922 for(var i=0;i<els.length;i++){ 923 var fd = jQuery(els[i]).attr('name'); 924 if(fd) fd = fd.replace("[]",""); 925 if(typeof(TZR.dependency[fd])!='undefined') 926 jQuery(els[i]).triggerHandler("change"); 927 } 928 var oks=new Object(); 929 var els=jQuery(f).find(':checkbox:checked,:radio:checked'); 930 for(var i=0;i<els.length;i++){ 931 jQuery(els[i]).triggerHandler("click"); 932 oks[els[i].name]=1; 933 } 934 var els=jQuery(f).find(':checkbox,:radio'); 935 for(var i=0;i<els.length;i++){ 936 if(els[i].checked || oks[els[i].name]==1) continue; 937 jQuery(els[i]).triggerHandler("click"); 938 oks[els[i].name]=1; 939 } 940 // voir un generique tzrload ... (voir jcp) 941 // + correction dans xmodtable/edit 942 if (TZR.linkedfields != undefined) 943 TZR.linkedfields.init(f); 944} 945// Dependance uniquement sur select simple, select multiple, radio et checkbox de booleen 946TZR.checkDependency=function(e){ 947 var t=e.target; 948 var n=t.name; 949 var valList=[].concat(jQuery(t).val()); 950 951 if(typeof(n)=='undefined' || n=="") return; 952 if(t.type=="hidden") return; 953 if(t.type=="radio" && !t.checked) valList=[]; 954 if(t.type=="checkbox"){ 955 n=n.replace(/(\[.+\])$/g,""); 956 n=n.replace(/(_HID)$/g,""); 957 if(t.checked) valList=["1"]; 958 else valList=["2"]; 959 } 960 if(t.type=="select-multiple"){ 961 n=n.replace("[]",""); 962 } 963 if(valList.length==0 || (valList.length==1 && !valList[0])) valList=['_empty']; 964 if(typeof(TZR.dependency[n])=='undefined') return; 965 966 for(var v in TZR.dependency[n]['_=']) { 967 // Si la valeur dépendante (v) est dans la liste des val sélectionnées 968 if(valList.indexOf(v)!=-1){ 969 for(var i in TZR.dependency[n]['_='][v]){ 970 var dep=TZR.dependency[n]['_='][v][i]; 971 TZR.setDependencyValue(e.data.form,dep.field,dep.ftype,dep.value,dep.nochange); 972 if(!e.data.nostyle) TZR.setDependencyStyle(dep.field,dep.style); 973 } 974 } 975 } 976 977 for(var v2 in TZR.dependency[n]['_!=']){ 978 // Si la valeur dépendante (v2) n'est pas dans la liste des val sélectionnées 979 if(valList.indexOf(v2)==-1){ 980 for(var i in TZR.dependency[n]['_!='][v2]){ 981 var dep=TZR.dependency[n]['_!='][v2][i]; 982 TZR.setDependencyValue(e.data.form,dep.field,dep.ftype,dep.value,dep.nochange); 983 if(!e.data.nostyle) TZR.setDependencyStyle(dep.field,dep.style); 984 } 985 } 986 } 987} 988 989TZR.setDependencyStyle=function(field,style){ 990 var toStyle=document.getElementById('cont-'+field); 991 if(typeof(toStyle)=='undefined' || !toStyle){ 992 toStyle=document.getElementById('cv8d-displayobj-field-'+field); 993 } 994 if(typeof(toStyle)!='undefined' && toStyle){ 995 if(style=='hidden'){ 996 toStyle.style.display='none'; 997 jQuery(toStyle).find(":input").prop('data-disabled',true); 998 }else if(style=="invalid"){ 999 jQuery(toStyle).find(":input").attr('disabled',true); 1000 jQuery(toStyle).find(":input").prop('data-disabled',true); 1001 }else{ 1002 jQuery(toStyle).find(":input").attr('disabled',false); 1003 jQuery(toStyle).find(":input").prop('data-disabled',false); 1004 toStyle.style.display=''; 1005 } 1006 TZR.checkFieldsGroupsVisibility(toStyle); 1007 } 1008} 1009TZR.setDependencyValue=function(form,field,ftype,value,nochange){ 1010 if(!nochange || nochange=="0"){ 1011 TZR.setValue(form,field,ftype,value); 1012 if(typeof(TZR.dependency[field])=='undefined') return; 1013 TZR.checkDependency({target:{name:field,value:value},data:{nostyle:false,form:form}}); 1014 } 1015} 1016TZR.checkFieldsGroupsVisibility = function(field){
1017 var group = jQuery(field).parents('fieldset.fieldsetAccordion'); 1018 var conts = jQuery("*[id^='cont-']", jQuery(group)); 1019 if (conts.length > 0) { 1020 var show = false; 1021 conts.each(function(ii, o){ 1022 if (jQuery(o).css('display') != 'none'){ 1023 show = true; 1024 } 1025 }); 1026 if (show){ 1027 jQuery(group).show(); 1028 } else { 1029 jQuery(group).hide(); 1030 } 1031 } 1032} 1033TZR.setValue=function(form,field,ftype,value){ 1034 if(typeof(field)=='string' && !form){ 1035 fid=document.getElementById(field); 1036 field=fid.name; 1037 form=fid.form; 1038 }else if(typeof(field)=='string' && typeof(form)=='string'){ 1039 form=jQuery('form[name='+form+']').get(0); 1040 } 1041 1042 if(ftype=="XLinkDef" || ftype=="XThesaurusDef") TZR.setLinkValue(form,field,value); 1043 else TZR.setTextValue(form,field,value); 1044} 1045 1046// form (objet), field (string) 1047TZR.setLinkValue=function(form,field,value){ 1048 var cont=document.getElementById('cont-'+field); 1049 if(typeof(cont)=='undefined' || !cont){ 1050 cont=document.getElementById('cv8d-displayobj-field-'+field); 1051 } 1052 1053 var ret=jQuery(cont).find(":radio[name='"+field+"']").val([value]); 1054 if(ret.length==0) var ret=jQuery(cont).find("select[name='"+field+"']").val(value); 1055 if(ret.length==0) var ret=jQuery(cont).find("select[name='"+field+"[]']").val(value); 1056 if(ret.length==0) var ret=jQuery(cont).find(":checkbox[name^='"+field+"[']").val([value]); 1057 if(!value && ret.length==0) var ret=jQuery(cont).find("tr:not('.model') a.xthesaurus-del").click(); 1058} 1059TZR.setTextValue=function(form,field,value){ 1060 if(form.elements[field]) form.elements[field].value=value; 1061} 1062 1063// Affiche du contenu centré dans l'écran avec une div d'arriere plan pleine page 1064// content est soit du texte, soit l'id d'un objet deja existant 1065TZR.dispFullScreenContent=function(content,color,op){ 1066 if(!color) color="#000000"; 1067 if(!op) op=0.2; 1068 1069 var div=document.getElementById('fsoverlay'); 1070 if(!div){ 1071 jQuery("body").append('<div id="fsoverlay"></div>'); 1072 jQuery("#fsoverlay").css({position:"absolute", zIndex:99998, padding:0, margin:0, top:0, left:0, background:color, 1073 opacity:op, width:"100%", height:jQuery(document).height()}); 1074 } 1075 if(content.substr(0,1)!="#"){ 1076 jQuery("#fscontent").remove(); 1077 jQuery("body").append('<div id="fscontent"></div>'); 1078 jQuery("#fscontent").css({position:"absolute", zIndex:99999, padding:0, margin:0, top:0, left:0}); 1079 jQuery("#fscontent").html(content); 1080 jQuery("#fscontent").css({top:(jQuery(window).height()-jQuery("#fscontent").outerHeight())/2+jQuery(window).scrollTop(), 1081 left:(jQuery(window).width()-jQuery("#fscontent").outerWidth())/2, visibility:"visible"}); 1082 }else{ 1083 jQuery(content).css({visibility:"visible", display:"block"}); 1084 jQuery(content).css({position:"absolute", zIndex:99999, padding:0, margin:0, 1085 top:(jQuery(window).height()-jQuery(content).outerHeight())/2+jQuery(window).scrollTop(), 1086 left:(jQuery(window).width()-jQuery(content).outerWidth())/2}); 1087 } 1088} 1089TZR.hideFullScreenContent=function(content){ 1090 jQuery("#fsoverlay").remove(); 1091 if(content!=undefined && content.substr(0,1)=="#"){ 1092 jQuery(content).css('display','none'); 1093 }else{ 1094 jQuery("#fscontent").remove(); 1095 } 1096} 1097 1098/* Fonctions pour faciliter la gestion des champs préremplis avec leur libellé */ 1099// Initialise les différentes propiétés du champ (o=objet, l=libellé) 1100function inputInit(o,l,cpltblur){ 1101 if(cpltblur==undefined) cpltblur=true; 1102 if(typeof o=="string") { o=document.getElementById(o); } 1103 if(o.type=="text" || o.type=="textarea" || o.type=="password"){ 1104 o.cpltblur=cpltblur; 1105 o.ovalue=l; 1106 if(o.value=="") o.value=l; 1107 o.onfocus=delValue; 1108 o.onblur=retablishValue; 1109 o.onchange=function(){}; 1110 }else if(o.type=="select-one"){ 1111 o.options[0].text=l; 1112 } 1113} 1114// Efface le contenu d'un champ (o=objet (se renseigne automatiquement sur un onfocus)) 1115function delValue(o){ 1116 if(o==undefined || o.type=="focus") o=this; 1117 if(o.value==o.ovalue){ 1118 o.value=""; 1119 }else{ 1120 var r=new RegExp("^"+o.ovalue+" : ",""); 1121 o.value=o.value.replace(r,""); 1122 } 1123} 1124// Rétabli le libellé si necessaire lors de la perte du focus (o=objet (se renseigne automatiquement sur un onblur)) 1125function retablishValue(o){ 1126 if(o==undefined || o.type=="blur") o=this; 1127 if(o.value==""){ 1128 o.value=o.ovalue; 1129 }else if(o.cpltblur){ 1130 o.value=o.ovalue+" : "+o.value; 1131 } 1132} 1133// A appeller sur le submit pour vider les champs non saisis 1134function checkFields(f){ 1135 l=f.elements.length; 1136 for(i=0;i<l;i++){ 1137 if((f.elements[i].type=="text" || f.elements[i].type=="textarea")){ 1138 if(f.elements[i].value==f.elements[i].ovalue){ 1139 f.elements[i].value = ""; 1140 }else{ 1141 var r = new RegExp("^" + f.elements[i].ovalue + " : ", ""); 1142 f.elements[i].value = f.elements[i].value.replace(r, ""); 1143 } 1144 } 1145 } 1146} 1147 1148/* Fonctions pour formater les champs date et heure/durée (besoin de jquery.ui.datepicker)*/ 1149TZR.formatDate=function(obj,fmt){ 1150 if(obj.value[0]=='=') return; 1151 if(fmt==undefined) fmt=jQuery(obj).datepicker('option','dateFormat'); 1152 var val=obj.value; 1153 if(val=='') return false;
1154 // traitement interval 1155 fmt_re = fmt.replace(new RegExp('dd|mm|y','g'), '\\d{1,2}').replace(new RegExp('\/','g'),'[\/.-]'); 1156 range_pattern = new RegExp('('+fmt_re+')\\s*\<\>\\s*('+fmt_re+')'); 1157 matches = val.match(range_pattern); 1158 if (matches != null && matches.length == 3) 1159 dates = new Array(matches[1], matches[2]); 1160 else 1161 dates = new Array(val); 1162 values = new Array(); 1163 var fmttab=fmt.split(/[\/.-]/); 1164 for (i=0; i<dates.length; i++) { 1165 var tab=dates[i].split(/[\/.-]/); 1166 var date = jQuery(obj).datepicker('getDate'); 1167 for (j=0; j<fmttab.length; j++){ 1168 if((fmttab[j]=='dd' || fmttab[j]=='d') && tab[j]!=undefined && tab[j]!='') date.setDate(tab[j]); 1169 if((fmttab[j]=='mm' || fmttab[j]=='m') && tab[j]!=undefined && tab[j]!='') date.setMonth(tab[j]-1); 1170 if((fmttab[j]=='yy' || fmttab[j]=='y') && tab[j]!=undefined && tab[j]!=''){ 1171 if(tab[j].length==1) date.setYear("200"+tab[j]); 1172 else if(tab[j].length==2) date.setYear("20"+tab[j]); 1173 else if(tab[j].length==3) date.setYear("2"+tab[j]); 1174 else date.setYear(tab[j]); 1175 } 1176 } 1177 values[i] = jQuery.datepicker.formatDate(fmt,date); 1178 } 1179 obj.value = values.join(' <> '); 1180} 1181TZR.format2dates=function(obj,b,e,fmt){ 1182 if(fmt==undefined) fmt=jQuery.datepicker._defaults.dateFormat; 1183 var form=obj.form; 1184 var b=form.elements[b]; 1185 var e=form.elements[e]; 1186 TZR.formatDate(obj); 1187 var begindate=jQuery.datepicker.parseDate(fmt,b.value); 1188 var enddate=jQuery.datepicker.parseDate(fmt,e.value); 1189 if(obj==b && begindate>enddate) e.value=b.value; 1190 else if(obj==e && begindate>enddate) b.value=e.value; 1191} 1192TZR.formatHour=function(obj,n){ 1193 val=obj.value; 1194 tab=val.split(":"); 1195 var rtab=new Array(); 1196 1197 if(/^[0-9]$/.test(tab[0])) { 1198 rtab[0]="0"+tab[0]; 1199 }else if(/^[0-9]{2}$/.test(tab[0])) { 1200 rtab[0]=tab[0]; 1201 }else{ 1202 return; 1203 } 1204 if(n>1){ 1205 if(!tab[1]){ 1206 rtab[1]="00"; 1207 }else if(/^[0-9]$/.test(tab[1])){ 1208 rtab[1]="0"+tab[1]; 1209 }else if(/^[0-9]{2}$/.test(tab[1])) { 1210 rtab[1]=tab[1]; 1211 }else{ 1212 return; 1213 } 1214 } 1215 if(n>2){ 1216 if(!tab[2]){ 1217 rtab[2]="00"; 1218 }else if(/^[0-9]$/.test(tab[2])){ 1219 rtab[2]="0"+tab[2]; 1220 }else if(/^[0-9]{2}$/.test(tab[2])) { 1221 rtab[2]=tab[2]; 1222 }else{ 1223 return; 1224 } 1225 } 1226 obj.value=rtab.join(":"); 1227} 1228 1229TZR.format2hours=function(obj,n,b,e,bd,ed){ 1230 var form=obj.form; 1231 b=form.elements[b]; 1232 e=form.elements[e]; 1233 if(bd!=undefined) bd=form.elements[bd]; 1234 if(ed!=undefined) ed=form.elements[ed]; 1235 TZR.formatHour(obj,n); 1236 var reg=/^[0-9]{2}(:[0-9]{2})?(:[0-9]{2})?$/; 1237 var tab=obj.value.split(":"); 1238 if(obj.value==""){ 1239 b.value=""; 1240 e.value=""; 1241 }else if(obj==b && b.value>e.value && (bd==undefined || ed==undefined || bd.value==ed.value) && reg.test(b.value)){ 1242 var hour=parseFloat(tab[0]); 1243 var minute=parseFloat(tab[1]); 1244 if(hour==23) e.value="23:59"; 1245 else e.value=(hour+1)+":"+minute; 1246 TZR.formatHour(e,n); 1247 }else if(obj==e && b.value>e.value && (bd==undefined || ed==undefined || bd.value==ed.value) && reg.test(e.value)){ 1248 var hour=parseFloat(tab[0]); 1249 var minute=parseFloat(tab[1]); 1250 if(hour==0) b.value="00:00"; 1251 else b.value=(hour-1)+":"+minute; 1252 TZR.formatHour(b,n); 1253 } 1254} 1255 1256 1257/* Fonction du champ couleur */ 1258function colourPickerCallback(acolor){ 1259 TZR.ColourPicker.setFieldColor(acolor); 1260} 1261function colourPickerClose(acolor){ 1262 TZR.ColourPicker.hide(); 1263} 1264 1265TZR.ColourPicker = { 1266 parent:null, 1267 target:null, 1268 control:null, 1269 lastColor:'#7f7f7f', 1270 myAppName:'ColourPicker', 1271 myfield:null, 1272 init:function(target){ 1273 if(!this.target){ 1274 this.target=target; 1275 this.parent=document.getElementById(target).parentNode; 1276 swfobject.embedSWF('/tzr/templates/flash/Colourpicker.swf',target,"435","220","8.0.0",null,{},{menu:false,allowScriptAccess:"sameDomain"},{name:this.myAppName,id:this.myAppName}); 1277 } 1278 }, 1279 initField:function(field){ 1280 var value; 1281 if(field) this.myField = field; 1282 else field=this.myField; 1283 TZR.ColourPicker.show(field); 1284 var swf=this.getMyApp(); 1285 if(swf.setColour){ 1286 if(field.value) value=field.value; 1287 else value=this.lastColor; 1288 swf.setColour(value, field.name); 1289 }else{ 1290 setTimeout("TZR.ColourPicker.initField()", 250); 1291 } 1292 }, 1293 show:function(field){ 1294 coor=jQuery(field).offset(); 1295 this.parent.style.left = (coor.left+field.clientWidth+10)+"px"; 1296 this.parent.style.top = coor.top+"px"; 1297 if(this.control) clearInterval(this.control); 1298 this.control=setInterval("if(!document.getElementById('"+field.id+"')) TZR.ColourPicker.hide();",1000); 1299 }, 1300 hide:function(){ 1301 this.parent.style.top = '-500px'; 1302 clearInterval(this.control); 1303 this.control=null; 1304 }, 1305 setFieldColor:function(acolor){
1306 TZR.ColourPicker.hide(); 1307 this.lastColor=acolor; 1308 document.getElementById('col'+this.myField.id).style.backgroundColor=acolor; 1309 this.myField.value=acolor; 1310 }, 1311 getMyApp:function () { 1312 if (navigator.appName.indexOf ("Microsoft") !=-1) { 1313 return window[this.myAppName]; 1314 } else { 1315 return document[this.myAppName]; 1316 } 1317 } 1318} 1319// fonctions des champs de geodesiccoordinates 1320TZR.geodesic = { 1321 geoSearch:null, 1322 dms2dd:function(inid, outid){ 1323 var dms = document.getElementById(inid).value; 1324 var exp = new RegExp(/[ ]*([0-9]{1,2})° ([0-9]{1,2})' ([0-9]{1,2}\.[0-9]{0,3})'' ([NS]{1})[ ]+([0-9]{1,3})° ([0-9]{1,2})' ([0-9]{1,2}\.[0-9]{0,3})'' ([WOE]{1})/); 1325 if (exp.test(dms)){ 1326 var dd = document.getElementById(outid); 1327 var dlng = RegExp.$5; 1328 var mlng = RegExp.$6; 1329 var slng = RegExp.$7; 1330 var lng = RegExp.$8; 1331 var dlat = RegExp.$1; 1332 var mlat = RegExp.$2; 1333 var slat = RegExp.$3; 1334 var lat = RegExp.$4; 1335 if (lat == 'S'){ 1336 lat = '-'; 1337 } else { 1338 lat = ''; 1339 } 1340 if (lng == 'W' || lng == 'O'){ 1341 lng = '-'; 1342 } else { 1343 lng = ''; 1344 } 1345 var ddlat = parseInt(dlat) + parseFloat(mlat/60) + parseFloat(slat/3600); 1346 var ddlng = parseInt(dlng) + parseFloat(mlng/60) + parseFloat(slng/3600); 1347 dd.value = lat+ddlat+';'+lng+ddlng; 1348 }else{ 1349 // var dd = document.getElementById('dd').value='####'; 1350 } 1351 }, 1352 setPointCoordinates:function(field, rawvalue, dmsvalue){ 1353 document.getElementById(field.fid).value = rawvalue; 1354 document.getElementById('dms'+field.fid).value = dmsvalue; 1355 document.getElementById(field.fid+'_autogc').checked = false; 1356 this.geocodeauto(document.getElementById(field.fid+'_autogc'), field.fid); 1357 }, 1358 geocodeauto:function(cb, fid){ 1359 if (cb.checked){ 1360 document.getElementById(fid+'_b1').style.display='block'; 1361 document.getElementById(fid+'_b2').style.display='block'; 1362 } else { 1363 document.getElementById(fid+'_b1').style.display='none'; 1364 document.getElementById(fid+'_b2').style.display='none'; 1365 document.getElementById(fid+'_unchanged').value = '0'; 1366 document.getElementById(fid+'_accuracy1').innerHTML = ''; 1367 document.getElementById(fid+'_upd').innerHTML = ''; 1368 document.getElementById(fid+'_accuracy2').value = 'N/A'; 1369 } 1370 1371 }, 1372 openGeoSearch:function( url, fname, fid, ftable, foptions){ 1373 var v = document.getElementById(fid).value; 1374 if (v != ';'){ 1375 var c = v.split(';'); 1376 var newp = false; 1377 var lat = c[0]; 1378 var lng = c[1]; 1379 } else { 1380 var newp = true; 1381 var lat = 0; 1382 var lng = 0; 1383 } 1384 try{ 1385 TZR.geodesic.geoSearch.setPoint({table:ftable, name:fname, id:fid, newpoint:newp, lat:lat, lng:lng, options:foptions}); 1386 TZR.geodesic.geoSearch.focus(); 1387 }catch(e){ 1388 var foptionsu = ''; 1389 for(o in foptions){ 1390 foptionsu = '&foptions['+o+']='+escape(foptions[o]); 1391 } 1392 TZR.geodesic.geoSearch = window.open(url+'&fid='+fid+'&ftable='+ftable+'&fname='+fname+'&flatlng='+escape(v)+foptionsu, 'GeoSearch',"resizable=no,width=700,height=530,left=100,top=100"); 1393 TZR.geodesic.geoSearch.focus(); 1394 } 1395 }, 1396 clear:function(fid){ 1397 document.getElementById(fid).value=''; 1398 document.getElementById('dms'+fid).value=''; 1399 document.getElementById(fid).value=''; 1400 document.getElementById(fid+'_accuracy1').innerHTML = ''; 1401 document.getElementById(fid+'_upd').innerHTML = ''; 1402 document.getElementById(fid+'_accuracy2').value = 'N/A'; 1403 }, 1404 openGeoView:function(coordstring, url, fname, fid, ftable, foptions){ 1405 var v = coordstring; 1406 if (v != ';'){ 1407 var c = v.split(';'); 1408 var newp = false; 1409 var lat = c[0]; 1410 var lng = c[1]; 1411 } else { 1412 var newp = true; 1413 var lat = 0; 1414 var lng = 0; 1415 } 1416 try{ 1417 TZR.geoSearch.setPoint({table:ftable, name:fname, id:fid, newpoint:newp, lat:lat, lng:lng, foptions:foptions}); 1418 TZR.geoSearch.focus(); 1419 }catch(e){ 1420 var foptionsu = ''; 1421 for(o in foptions){ 1422 foptionsu = '&foptions['+o+']='+escape(foptions[o]); 1423 } 1424 TZR.geoSearch = window.open(url+'&fid='+fid+'&ftable='+ftable+'&fname='+fname+'&flatlng='+escape(v)+foptionsu, 'GeoView',"resizable=no,width=700,height=530,left=100,top=100"); 1425 TZR.geoSearch.focus(); 1426 } 1427 } 1428}; 1429 1430// Applique une popup a des objets (obj est un objet jQuery) 1431TZR.applyHottip=function(obj,param){ 1432 param=jQuery.extend(true,{fill:'#F9F9F9',strokeStyle:'#4b4b4b',spikeLength:10,spikeGirth:10,padding:8,cornerRadius:0, 1433 cssStyles:{fontFamily:'"lucida grande",tahoma,verdana,arial,sans-serif',fontSize:'11px'}, 1434 closeWhenOthersOpen:true,closeButton:0,ajaxPath:["$(this).attr('bt-xpath')"],offsetParent:'body',overlap:-2},param); 1435 obj.bt(param); 1436 return obj; 1437} 1438 1439function scrollToElement(o,offset){ 1440 var dTop=jQuery(o).offset().top; 1441 var sTop=jQuery(window).scrollTop(); 1442 var wHeight=jQuery(window).height(); 1443 if(!offset) offset=20; 1444 if(sTop>dTop) jQuery(window).scrollTop(dTop-offset); 1445 else if(sTop+wHeight<dTop) jQuery(window).scrollTop(dTop-wHeight+jQuery(o).height()+offset); 1446} 1447 1448function showObj(objid){ 1449 var o = document.getElementById(objid); 1450 if(o){ 1451 o.style.visibility = "visible"; 1452 o.style.position = "relative"; 1453 } 1454} 1455function hideObj(objid){ 1456 var o = document.getElementById(objid); 1457 if(o){ 1458 o.style.visibility = "hidden"; 1459 o.style.position = "absolute"; 1460 } 1461} 1462function showHide(objid){ 1463 var o = document.getElementById(objid); 1464 if(o){ 1465 if(o.style.visibility == "hidden"){ 1466 o.style.visibility = "visible"; 1467 o.style.position = "relative"; 1468 }else{ 1469 o.style.visibility = "hidden"; 1470 o.style.position = "absolute"; 1471 } 1472 } 1473} 1474 1475// Function appelé à la fin du chargment de la page 1476function onLoadComplete(){ 1477 // Correction des PNG sous IE 1478 if(window.attachEvent && window.correctPNG) correctPNG(); 1479} 1480 1481window.onload=onLoadComplete;
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.