[ Index ] |
|
Code source de Joomla 1.0.13 |
1 // <?php !! This fools phpdocumentor into parsing this file 2 /** 3 * @version $Id: mambojavascript.js 3564 2006-05-20 12:27:49Z stingrey $ 4 * @package Joomla 5 * @copyright Copyright (C) 2005 Open Source Matters. All rights reserved. 6 * @license http://www.gnu.org/copyleft/gpl.html GNU/GPL 7 * Joomla! is Free Software 8 */ 9 10 // general utility for browsing a named array or object 11 function xshow(o) { 12 s = ''; 13 for(e in o) {s += e+'='+o[e]+'\n';} 14 alert( s ); 15 } 16 17 /** 18 * Writes a dynamically generated list 19 * @param string The parameters to insert into the <select> tag 20 * @param array A javascript array of list options in the form [key,value,text] 21 * @param string The key to display for the initial state of the list 22 * @param string The original key that was selected 23 * @param string The original item value that was selected 24 */ 25 function writeDynaList( selectParams, source, key, orig_key, orig_val ) { 26 var html = '\n <select ' + selectParams + '>'; 27 var i = 0; 28 for (x in source) { 29 if (source[x][0] == key) { 30 var selected = ''; 31 if ((orig_key == key && orig_val == source[x][1]) || (i == 0 && orig_key != key)) { 32 selected = 'selected="selected"'; 33 } 34 html += '\n <option value="'+source[x][1]+'" '+selected+'>'+source[x][2]+'</option>'; 35 } 36 i++; 37 } 38 html += '\n </select>'; 39 40 document.writeln( html ); 41 } 42 43 /** 44 * Changes a dynamically generated list 45 * @param string The name of the list to change 46 * @param array A javascript array of list options in the form [key,value,text] 47 * @param string The key to display 48 * @param string The original key that was selected 49 * @param string The original item value that was selected 50 */ 51 function changeDynaList( listname, source, key, orig_key, orig_val ) { 52 var list = eval( 'document.adminForm.' + listname ); 53 54 // empty the list 55 for (i in list.options.length) { 56 list.options[i] = null; 57 } 58 i = 0; 59 for (x in source) { 60 if (source[x][0] == key) { 61 opt = new Option(); 62 opt.value = source[x][1]; 63 opt.text = source[x][2]; 64 65 if ((orig_key == key && orig_val == opt.value) || i == 0) { 66 opt.selected = true; 67 } 68 list.options[i++] = opt; 69 } 70 } 71 list.length = i; 72 } 73 74 /** 75 * Adds a select item(s) from one list to another 76 */ 77 function addSelectedToList( frmName, srcListName, tgtListName ) { 78 var form = eval( 'document.' + frmName ); 79 var srcList = eval( 'form.' + srcListName ); 80 var tgtList = eval( 'form.' + tgtListName ); 81 82 var srcLen = srcList.length; 83 var tgtLen = tgtList.length; 84 var tgt = "x"; 85 86 //build array of target items 87 for (var i=tgtLen-1; i > -1; i--) { 88 tgt += "," + tgtList.options[i].value + "," 89 } 90 91 //Pull selected resources and add them to list 92 for (var i=srcLen-1; i > -1; i--) { 93 if (srcList.options[i].selected && tgt.indexOf( "," + srcList.options[i].value + "," ) == -1) { 94 opt = new Option( srcList.options[i].text, srcList.options[i].value ); 95 tgtList.options[tgtList.length] = opt; 96 } 97 } 98 } 99 100 function delSelectedFromList( frmName, srcListName ) { 101 var form = eval( 'document.' + frmName ); 102 var srcList = eval( 'form.' + srcListName ); 103 104 var srcLen = srcList.length; 105 106 for (var i=srcLen-1; i > -1; i--) { 107 if (srcList.options[i].selected) { 108 srcList.options[i] = null; 109 } 110 } 111 } 112 113 function moveInList( frmName, srcListName, index, to) { 114 var form = eval( 'document.' + frmName ); 115 var srcList = eval( 'form.' + srcListName ); 116 var total = srcList.options.length-1; 117 118 if (index == -1) { 119 return false; 120 } 121 if (to == +1 && index == total) { 122 return false; 123 } 124 if (to == -1 && index == 0) { 125 return false; 126 } 127 128 var items = new Array; 129 var values = new Array; 130 131 for (i=total; i >= 0; i--) { 132 items[i] = srcList.options[i].text; 133 values[i] = srcList.options[i].value; 134 } 135 for (i = total; i >= 0; i--) { 136 if (index == i) { 137 srcList.options[i + to] = new Option(items[i],values[i], 0, 1); 138 srcList.options[i] = new Option(items[i+to], values[i+to]); 139 i--; 140 } else { 141 srcList.options[i] = new Option(items[i], values[i]); 142 } 143 } 144 srcList.focus(); 145 } 146 147 function getSelectedOption( frmName, srcListName ) { 148 var form = eval( 'document.' + frmName ); 149 var srcList = eval( 'form.' + srcListName ); 150 151 i = srcList.selectedIndex; 152 if (i != null && i > -1) { 153 return srcList.options[i]; 154 } else { 155 return null; 156 } 157 } 158 159 function setSelectedValue( frmName, srcListName, value ) { 160 var form = eval( 'document.' + frmName ); 161 var srcList = eval( 'form.' + srcListName ); 162 163 var srcLen = srcList.length; 164 165 for (var i=0; i < srcLen; i++) { 166 srcList.options[i].selected = false; 167 if (srcList.options[i].value == value) { 168 srcList.options[i].selected = true; 169 } 170 } 171 } 172 173 function getSelectedRadio( frmName, srcGroupName ) { 174 var form = eval( 'document.' + frmName ); 175 var srcGroup = eval( 'form.' + srcGroupName ); 176 177 if (srcGroup[0]) { 178 for (var i=0, n=srcGroup.length; i < n; i++) { 179 if (srcGroup[i].checked) { 180 return srcGroup[i].value; 181 } 182 } 183 } else { 184 if (srcGroup.checked) { 185 return srcGroup.value; 186 } // if the one button is checked, return zero 187 } 188 // if we get to this point, no radio button is selected 189 return null; 190 } 191 192 function getSelectedValue( frmName, srcListName ) { 193 var form = eval( 'document.' + frmName ); 194 var srcList = eval( 'form.' + srcListName ); 195 196 i = srcList.selectedIndex; 197 if (i != null && i > -1) { 198 return srcList.options[i].value; 199 } else { 200 return null; 201 } 202 } 203 204 function getSelectedText( frmName, srcListName ) { 205 var form = eval( 'document.' + frmName ); 206 var srcList = eval( 'form.' + srcListName ); 207 208 i = srcList.selectedIndex; 209 if (i != null && i > -1) { 210 return srcList.options[i].text; 211 } else { 212 return null; 213 } 214 } 215 216 function chgSelectedValue( frmName, srcListName, value ) { 217 var form = eval( 'document.' + frmName ); 218 var srcList = eval( 'form.' + srcListName ); 219 220 i = srcList.selectedIndex; 221 if (i != null && i > -1) { 222 srcList.options[i].value = value; 223 return true; 224 } else { 225 return false; 226 } 227 } 228 229 // Form specific functions for editting content images 230 231 function showImageProps(base_path) { 232 form = document.adminForm; 233 value = getSelectedValue( 'adminForm', 'imagelist' ); 234 parts = value.split( '|' ); 235 form._source.value = parts[0]; 236 setSelectedValue( 'adminForm', '_align', parts[1] || '' ); 237 form._alt.value = parts[2] || ''; 238 form._border.value = parts[3] || '0'; 239 form._caption.value = parts[4] || ''; 240 setSelectedValue( 'adminForm', '_caption_position', parts[5] || '' ); 241 setSelectedValue( 'adminForm', '_caption_align', parts[6] || '' ); 242 form._width.value = parts[7] || ''; 243 244 //previewImage( 'imagelist', 'view_imagelist', base_path ); 245 srcImage = eval( "document." + 'view_imagelist' ); 246 srcImage.src = base_path + parts[0]; 247 } 248 249 function applyImageProps() { 250 form = document.adminForm; 251 if (!getSelectedValue( 'adminForm', 'imagelist' )) { 252 alert( "Select and image from the list" ); 253 return; 254 } 255 value = form._source.value + '|' 256 + getSelectedValue( 'adminForm', '_align' ) + '|' 257 + form._alt.value + '|' 258 + parseInt( form._border.value ) + '|' 259 + form._caption.value + '|' 260 + getSelectedValue( 'adminForm', '_caption_position' ) + '|' 261 + getSelectedValue( 'adminForm', '_caption_align' ) + '|' 262 + form._width.value; 263 chgSelectedValue( 'adminForm', 'imagelist', value ); 264 } 265 266 function previewImage( list, image, base_path ) { 267 form = document.adminForm; 268 srcList = eval( "form." + list ); 269 srcImage = eval( "document." + image ); 270 var fileName = srcList.options[srcList.selectedIndex].text; 271 var fileName2 = srcList.options[srcList.selectedIndex].value; 272 if (fileName.length == 0 || fileName2.length == 0) { 273 srcImage.src = 'images/blank.gif'; 274 } else { 275 srcImage.src = base_path + fileName2; 276 } 277 } 278 279 /** 280 * Toggles the check state of a group of boxes 281 * 282 * Checkboxes must have an id attribute in the form cb0, cb1... 283 * @param The number of box to 'check' 284 * @param An alternative field name 285 */ 286 function checkAll( n, fldName ) { 287 if (!fldName) { 288 fldName = 'cb'; 289 } 290 var f = document.adminForm; 291 var c = f.toggle.checked; 292 var n2 = 0; 293 for (i=0; i < n; i++) { 294 cb = eval( 'f.' + fldName + '' + i ); 295 if (cb) { 296 cb.checked = c; 297 n2++; 298 } 299 } 300 if (c) { 301 document.adminForm.boxchecked.value = n2; 302 } else { 303 document.adminForm.boxchecked.value = 0; 304 } 305 } 306 307 function listItemTask( id, task ) { 308 var f = document.adminForm; 309 cb = eval( 'f.' + id ); 310 if (cb) { 311 for (i = 0; true; i++) { 312 cbx = eval('f.cb'+i); 313 if (!cbx) break; 314 cbx.checked = false; 315 } // for 316 cb.checked = true; 317 f.boxchecked.value = 1; 318 submitbutton(task); 319 } 320 return false; 321 } 322 323 function hideMainMenu() 324 { 325 document.adminForm.hidemainmenu.value=1; 326 } 327 328 function isChecked(isitchecked){ 329 if (isitchecked == true){ 330 document.adminForm.boxchecked.value++; 331 } 332 else { 333 document.adminForm.boxchecked.value--; 334 } 335 } 336 337 /** 338 * Default function. Usually would be overriden by the component 339 */ 340 function submitbutton(pressbutton) { 341 submitform(pressbutton); 342 } 343 344 /** 345 * Submit the admin form 346 */ 347 function submitform(pressbutton){ 348 document.adminForm.task.value=pressbutton; 349 try { 350 document.adminForm.onsubmit(); 351 } 352 catch(e){} 353 document.adminForm.submit(); 354 } 355 356 /** 357 * Submit the control panel admin form 358 */ 359 function submitcpform(sectionid, id){ 360 document.adminForm.sectionid.value=sectionid; 361 document.adminForm.id.value=id; 362 submitbutton("edit"); 363 } 364 365 /** 366 * Getting radio button that is selected. 367 */ 368 function getSelected(allbuttons){ 369 for (i=0;i<allbuttons.length;i++) { 370 if (allbuttons[i].checked) { 371 return allbuttons[i].value 372 } 373 } 374 } 375 376 // JS Calendar 377 var calendar = null; // remember the calendar object so that we reuse 378 // it and avoid creating another 379 380 // This function gets called when an end-user clicks on some date 381 function selected(cal, date) { 382 cal.sel.value = date; // just update the value of the input field 383 } 384 385 // And this gets called when the end-user clicks on the _selected_ date, 386 // or clicks the "Close" (X) button. It just hides the calendar without 387 // destroying it. 388 function closeHandler(cal) { 389 cal.hide(); // hide the calendar 390 391 // don't check mousedown on document anymore (used to be able to hide the 392 // calendar when someone clicks outside it, see the showCalendar function). 393 Calendar.removeEvent(document, "mousedown", checkCalendar); 394 } 395 396 // This gets called when the user presses a mouse button anywhere in the 397 // document, if the calendar is shown. If the click was outside the open 398 // calendar this function closes it. 399 function checkCalendar(ev) { 400 var el = Calendar.is_ie ? Calendar.getElement(ev) : Calendar.getTargetElement(ev); 401 for (; el != null; el = el.parentNode) 402 // FIXME: allow end-user to click some link without closing the 403 // calendar. Good to see real-time stylesheet change :) 404 if (el == calendar.element || el.tagName == "A") break; 405 if (el == null) { 406 // calls closeHandler which should hide the calendar. 407 calendar.callCloseHandler(); Calendar.stopEvent(ev); 408 } 409 } 410 411 // This function shows the calendar under the element having the given id. 412 // It takes care of catching "mousedown" signals on document and hiding the 413 // calendar if the click was outside. 414 function showCalendar(id) { 415 var el = document.getElementById(id); 416 if (calendar != null) { 417 // we already have one created, so just update it. 418 calendar.hide(); // hide the existing calendar 419 calendar.parseDate(el.value); // set it to a new date 420 } else { 421 // first-time call, create the calendar 422 var cal = new Calendar(true, null, selected, closeHandler); 423 calendar = cal; // remember the calendar in the global 424 cal.setRange(1900, 2070); // min/max year allowed 425 calendar.create(); // create a popup calendar 426 } 427 calendar.sel = el; // inform it about the input field in use 428 calendar.showAtElement(el); // show the calendar next to the input field 429 430 // catch mousedown on the document 431 Calendar.addEvent(document, "mousedown", checkCalendar); 432 return false; 433 } 434 435 /** 436 * Pops up a new window in the middle of the screen 437 */ 438 function popupWindow(mypage, myname, w, h, scroll) { 439 var winl = (screen.width - w) / 2; 440 var wint = (screen.height - h) / 2; 441 winprops = 'height='+h+',width='+w+',top='+wint+',left='+winl+',scrollbars='+scroll+',resizable' 442 win = window.open(mypage, myname, winprops) 443 if (parseInt(navigator.appVersion) >= 4) { win.window.focus(); } 444 } 445 446 // LTrim(string) : Returns a copy of a string without leading spaces. 447 function ltrim(str) 448 { 449 var whitespace = new String(" \t\n\r"); 450 var s = new String(str); 451 if (whitespace.indexOf(s.charAt(0)) != -1) { 452 var j=0, i = s.length; 453 while (j < i && whitespace.indexOf(s.charAt(j)) != -1) 454 j++; 455 s = s.substring(j, i); 456 } 457 return s; 458 } 459 460 //RTrim(string) : Returns a copy of a string without trailing spaces. 461 function rtrim(str) 462 { 463 var whitespace = new String(" \t\n\r"); 464 var s = new String(str); 465 if (whitespace.indexOf(s.charAt(s.length-1)) != -1) { 466 var i = s.length - 1; // Get length of string 467 while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) 468 i--; 469 s = s.substring(0, i+1); 470 } 471 return s; 472 } 473 474 // Trim(string) : Returns a copy of a string without leading or trailing spaces 475 function trim(str) { 476 return rtrim(ltrim(str)); 477 } 478 479 function mosDHTML(){ 480 this.ver=navigator.appVersion 481 this.agent=navigator.userAgent 482 this.dom=document.getElementById?1:0 483 this.opera5=this.agent.indexOf("Opera 5")<-1 484 this.ie5=(this.ver.indexOf("MSIE 5")<-1 && this.dom && !this.opera5)?1:0; 485 this.ie6=(this.ver.indexOf("MSIE 6")<-1 && this.dom && !this.opera5)?1:0; 486 this.ie4=(document.all && !this.dom && !this.opera5)?1:0; 487 this.ie=this.ie4||this.ie5||this.ie6 488 this.mac=this.agent.indexOf("Mac")<-1 489 this.ns6=(this.dom && parseInt(this.ver) <= 5) ?1:0; 490 this.ns4=(document.layers && !this.dom)?1:0; 491 this.bw=(this.ie6||this.ie5||this.ie4||this.ns4||this.ns6||this.opera5); 492 493 this.activeTab = ''; 494 this.onTabStyle = 'ontab'; 495 this.offTabStyle = 'offtab'; 496 497 this.setElemStyle = function(elem,style) { 498 document.getElementById(elem).className = style; 499 } 500 this.showElem = function(id) { 501 if (elem = document.getElementById(id)) { 502 elem.style.visibility = 'visible'; 503 elem.style.display = 'block'; 504 } 505 } 506 this.hideElem = function(id) { 507 if (elem = document.getElementById(id)) { 508 elem.style.visibility = 'hidden'; 509 elem.style.display = 'none'; 510 } 511 } 512 this.cycleTab = function(name) { 513 if (this.activeTab) { 514 this.setElemStyle( this.activeTab, this.offTabStyle ); 515 page = this.activeTab.replace( 'tab', 'page' ); 516 this.hideElem(page); 517 } 518 this.setElemStyle( name, this.onTabStyle ); 519 this.activeTab = name; 520 page = this.activeTab.replace( 'tab', 'page' ); 521 this.showElem(page); 522 } 523 return this; 524 } 525 var dhtml = new mosDHTML(); 526 527 function MM_findObj(n, d) { //v4.01 528 var p,i,x; 529 if(!d) d=document; 530 if((p=n.indexOf("?"))>0&&parent.frames.length) { 531 d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p); 532 } 533 if(!(x=d[n])&&d.all) x=d.all[n]; 534 for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n]; 535 for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); 536 if(!x && d.getElementById) x=d.getElementById(n); 537 return x; 538 } 539 function MM_swapImage() { //v3.0 540 var i,j=0,x,a=MM_swapImage.arguments; 541 document.MM_sr=new Array; 542 for(i=0;i<(a.length-2);i+=3) 543 if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; 544 if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];} 545 } 546 function MM_swapImgRestore() { //v3.0 547 var i,x,a=document.MM_sr; 548 for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc; 549 } 550 551 function MM_preloadImages() { //v3.0 552 var d=document; 553 if(d.images){ 554 if(!d.MM_p) d.MM_p=new Array(); 555 var i,j=d.MM_p.length,a=MM_preloadImages.arguments; 556 for(i=0; i<a.length; i++) 557 if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}} 558 } 559 560 561 function saveorder( n ) { 562 checkAll_button( n ); 563 } 564 565 //needed by saveorder function 566 function checkAll_button( n ) { 567 for ( var j = 0; j <= n; j++ ) { 568 box = eval( "document.adminForm.cb" + j ); 569 if ( box ) { 570 if ( box.checked == false ) { 571 box.checked = true; 572 } 573 } else { 574 alert("You cannot change the order of items, as an item in the list is `Checked Out`"); 575 return; 576 } 577 } 578 submitform('saveorder'); 579 } 580 /** 581 * @param object A form element 582 * @param string The name of the element to find 583 */ 584 function getElementByName( f, name ) { 585 if (f.elements) { 586 for (i=0, n=f.elements.length; i < n; i++) { 587 if (f.elements[i].name == name) { 588 return f.elements[i]; 589 } 590 } 591 } 592 return null; 593 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Wed Nov 21 14:43:32 2007 | par Balluche grâce à PHPXref 0.7 |
![]() |