//------------------------------------------------------------------------------ // IPS JS: HIERARCHICAL DISPLAY FUNCTIONS // (c) 2005 Invision Power Services, Inc. // http://www.invisionpower.com // Matt Mecham (13/12/05) //------------------------------------------------------------------------------ function hierarchical() { /** * Class variables. * * @var string Cookie name * @var string Refresh display URL * @var string First part of the image ID title string */ this.cookie_name = ''; this.location_url = ''; this.toggle_image_id_name = 'hier-toggle'; /** * INIT: Grabs IDs from the HTML and * sets up the various functions */ this.init = function() { //----------------------------------------- // Do DIVs //----------------------------------------- var divs = document.getElementsByTagName('IMG'); //---------------------------------- // Sort through and grab links //---------------------------------- for ( var i = 0 ; i < divs.length ; i++ ) { try { if ( ! divs[i].id ) { continue; } } catch(error) { continue; } var divid = divs[i].id; var divname = ipsclass.get_name_from_text( divid ); var divnum = ipsclass.get_id_from_text( divid ); //---------------------------------- // Work with it? //---------------------------------- if ( divname == this.toggle_image_id_name ) { divs[i].style.cursor = 'pointer'; divs[i].toggle_image_id_name = this.toggle_image_id_name; divs[i].location_url = this.location_url; divs[i].cookie_name = this.cookie_name; divs[i].toggle_id = divnum; divs[i].onclick = hierarchical_events.prototype.toggle_folder; } } }; } /** * Wrapper function */ function hierarchical_events() { } /** * Toggle Folder Action * @param object Event Object */ hierarchical_events.prototype.toggle_folder = function( e ) { //----------------------------------------- // Check.. //----------------------------------------- if ( ! this.cookie_name ) { return false; } //----------------------------------------- // Cancel event bubbling //----------------------------------------- e = ipsclass.cancel_bubble(e, true); //----------------------------------------- // Set up //----------------------------------------- var saved = new Array(); var clean = new Array(); var found_id = 0; //----------------------------------- // Get any saved info //----------------------------------- if ( tmp = ipsclass.my_getcookie( this.cookie_name ) ) { saved = tmp.split(","); } //----------------------------------- // Remove bit if exists //----------------------------------- for( i = 0 ; i < saved.length; i++ ) { if ( saved[i] != this.toggle_id && saved[i] != "" ) { clean[clean.length] = saved[i]; } else if ( saved[i] == this.toggle_id ) { found_id = 1; } } //----------------------------------- // Not found the ID, so add it //----------------------------------- if ( ! found_id ) { clean[ clean.length ] = this.toggle_id; } ipsclass.my_setcookie( this.cookie_name, clean.join(','), 1 ); ipsclass.location_jump( this.location_url, true ); };