TV20.js
资源名称:Shopping.rar [点击查看]
上传用户:lsj999sz
上传日期:2022-06-15
资源大小:4717k
文件大小:15k
源码类别:
ICQ/即时通讯
开发平台:
Java
- //========================================
- //Envrionment to hold Listeners
- //========================================
- tv_listeners = new Array() ;
- function listener( type , handler ) {
- this.type = type ;
- this.handler = handler ;
- this.id = tv_listeners.length ;
- tv_listeners[ tv_listeners.length ] = this ;
- }
- function addListener( type , handler ) {
- new listener( type , handler ) ;
- }
- //=== END =====
- //=========================================
- // Hold the top item
- //=========================================
- tv_topnodeitem = null ;
- //===== END =======
- //=========================================
- //Hold nodeitems , and supply a nodeitem Register
- //=========================================
- nodeitems = new Array() ;
- function nodeitemRegister( obj ) {
- nodeitems[ nodeitems.length ] = obj ;
- return nodeitems.length - 1 ;
- }
- //=== END =======
- //=================================
- //Custom a stack
- //Class : stack
- //metheds : get()
- // put( obj )
- //=================================
- function stack() {
- this.value = new Array() ;
- this.cursor = 0 ;
- }
- function stack_get() {
- this.cursor = this.cursor - 1 ;
- return this.value[ this.cursor ] ;
- }
- function stack_put( obj ) {
- this.value[ this.cursor ] = obj ;
- this.cursor = this.cursor + 1 ;
- }
- stack.prototype.get = stack_get ;
- stack.prototype.put = stack_put ;
- //=======END ==========
- //=========================================
- // Define a public stack
- //=========================================
- userstack = new stack() ;
- //====== END ===========
- //=========================================
- //Image List
- //=========================================
- treeview_box_0_none = "../images/4_clos.gif" ;
- treeview_box_0_line = "../images/4_none.gif" ;
- treeview_box_2_open = "../images/2_open.gif" ;
- treeview_box_2_none = "../images/2_none.gif" ;
- treeview_box_2_close = "../images/2_clos.gif" ;
- treeview_box_1_open = "../images/3_open.gif" ;
- treeview_box_1_none = "../images/3_none.gif" ;
- treeview_box_1_close = "../images/3_clos.gif" ;
- //===============================================
- //Class : nodeitem
- //status------------------------1:two-direction 0:nobox 0: disactivite
- // 2:three-0direction 1:close-box 1: activite
- // 2:open-box
- //===============================================
- function nodeitem( parentkey , key , lable , img ) {
- this.lable = lable ;
- this.key = key ;
- this.parent = findNode( parentkey ) ;
- if( this.parent != null ) {
- aa = this.parent.status ;
- if( aa.substring( 1 , 2 ) == "0" )
- this.parent.status = aa.substring( 0 , 1 ) + "1" + aa.substring( 2 , 3 ) ;
- if( this.parent.maxsubitem != null )
- this.parent.maxsubitem.status = "2" + this.parent.maxsubitem.status.substring( 1 , 3 ) ;
- this.parent.subitems[ this.parent.subitems.length ] = this ;
- this.parent.maxsubitem = this ;
- }
- else {
- if( tv_topnodeitem != null ) {
- alert( "不能有两个顶项!" ) ;
- return ;
- }
- tv_topnodeitem = this ;
- }
- this.img = img ;
- this.tag = null ;
- this.status = "100" ;
- this.subitems = new Array() ;
- this.maxsubitem = null ;
- this.id = nodeitemRegister( this ) ;
- //**********************
- this.questionId = 0;
- this.description = "";
- //this.url = null;
- //**********************
- //added by msb for the sort and move up/down
- /*if ( this == tv_topnodeitem )
- {
- this.nodeIndex = 0;
- } else {
- this.nodeIndex = this.parent.subitems.length;
- }*/
- //end added
- }
- //added by msb for the sort and move up/down
- function nodeitem_moveUp() {
- if (this == tv_topnodeitem) return; //topitem
- ssubitems = this.parent.subitems;
- for ( i=0; i<ssubitems.length; i++ ) {
- if( ssubitems[i] == this ) {
- break;
- }
- }
- if (i==0) return;
- ssubitems[i] = ssubitems[i-1];
- ssubitems[i-1] = this;
- if (i==ssubitems.length-1) {
- ssubitems[i-1].status = "2" + ssubitems[i-1].status.substring(1, 3);
- ssubitems[i].status = "1" + ssubitems[i].status.substring(1, 3);
- }
- /*
- itemTemp = this;
- ssubitems[this.nodeIndex-1] */
- /* for ( i=0; i<ssubitems.length; i++ ) {
- if( ssubitems[i] != null && ssubitems[i].nodeIndex == (this.nodeIndex-1) )
- previousitem = ssubitems[i]
- }
- previousitem.nodeIndex = this.nodeIndex;
- this.nodeIndex = this.nodeIndex -1;
- swap(this,previousitem);
- */
- //label_on_click(this.id);
- this.parent.refresh();
- lable_on_click(this.id);
- }//moveUp()
- function nodeitem_moveDown() {
- if (this == tv_topnodeitem) return; //topitem
- ssubitems = this.parent.subitems;
- for ( i=0; i<ssubitems.length; i++ ) {
- if( ssubitems[i] == this ) {
- break;
- }
- }
- if (i==ssubitems.length-1) return;
- ssubitems[i] = ssubitems[i+1];
- ssubitems[i+1] = this;
- if (i==ssubitems.length-2) {
- ssubitems[i+1].status = "1" + ssubitems[i+1].status.substring(1, 3);
- ssubitems[i].status = "2" + ssubitems[i].status.substring(1, 3);
- }
- this.parent.refresh();
- lable_on_click(this.id);
- }//moveDown()
- /*function swap (item1, item2) {
- nodeitems[item1.id] = item2;
- nodeitems[item2.id] = item1;
- idTemp = item1.id;
- item1.id = item2.id;
- item2.id = idTemp;
- }*/
- //end added
- function nodeitem_setTag( obj ) {
- this.tag = obj ;
- }
- function nodeitem_getTag() {
- return this.tag ;
- }
- function nodeitem_show() {
- str = "<span id = 'preface" + this.id + "'><table border='0' cellspacing='0' cellpadding='0'><tr><td>" ;
- str_f = "" ;
- for( j = this.parent ; j != null ; j = j.parent ) {
- if( j.status.substring( 0 , 1 ) == 1 )
- str_f = "<img src = '" + treeview_box_0_none + "' align='absmiddle'>" + str_f ;
- else
- str_f = "<img src = '" + treeview_box_0_line + "' align='absmiddle'>" + str_f ;
- }
- str = str + str_f ;
- str += "<img id = 'box" + this.id + "' nodeid = '" + this.id + "' src = '" ;
- switch( this.status.substring( 0 , 2 ) ) {
- case "10" : str += treeview_box_1_none ; break ;
- case "11" : str += treeview_box_1_close ; break ;
- case "12" : str += treeview_box_1_open ; break ;
- case "20" : str += treeview_box_2_none ; break ;
- case "21" : str += treeview_box_2_close ; break ;
- case "22" : str += treeview_box_2_open ; break ;
- }
- str += "' align='absmiddle' onclick='box_on_click(this)'>" ;
- if( this.img == "" )
- str += this.img ;
- else
- str += "<img src = '" + this.img + "' align='absmiddle' width='16' height='16'>" ;
- str += "</td><td><table border='0' cellspacing='1' cellpadding='1' style='font-size:9pt; color:#333333' id='lablePanel" + this.id + "'><tr><td ondblclick = 'lable_on_dblclick(" + this.id + ")' onclick='lable_on_click(" + this.id + ")' style='cursor:hand' id='f_lablePanel" + this.id + "' nowrap>" + this.lable + "</td></tr></table></td></tr></table>" ;
- str += "</span><span id = 'tv_panel_" + this.id + "' style='display:" ;
- if( this.status.substring( 1 , 2 ) == '2' )
- str += "" ;
- else
- str += "none" ;
- str += "'></span>" ;
- if( this.parent == null )
- for(var i in document.all){
- if (document.all[i].tagName == "BODY")
- {
- document.all[i].insertAdjacentHTML( "AfterBegin" , str ) ;
- break
- }
- }
- else
- document.all( "tv_panel_" + this.parent.id ).insertAdjacentHTML( "BeforeEnd" , str ) ;
- //alert("before id " + this.id);
- for( m = 0 ; m < this.subitems.length ; m ++ ) {
- // alert("after id " + this.id);
- if( this.subitems[ m ] != null ) {
- userstack.put( m ) ;
- this.subitems[ m ].show() ;
- m = userstack.get() ;
- }
- }
- }
- function nodeitem_refresh() {
- str = "<table border='0' cellspacing='0' cellpadding='0'><tr><td>" ;
- str_f = "" ;
- for( j = this.parent ; j != null ; j = j.parent ) {
- if( j.status.substring( 0 , 1 ) == 1 )
- str_f = "<img src = '" + treeview_box_0_none + "' align='absmiddle'>" + str_f ;
- else
- str_f = "<img src = '" + treeview_box_0_line + "' align='absmiddle'>" + str_f ;
- }
- str = str + str_f ;
- str += "<img id = 'box" + this.id + "' nodeid = '" + this.id + "' src = '" ;
- switch( this.status.substring( 0 , 2 ) ) {
- case "10" : str += treeview_box_1_none ; break ;
- case "11" : str += treeview_box_1_close ; break ;
- case "12" : str += treeview_box_1_open ; break ;
- case "20" : str += treeview_box_2_none ; break ;
- case "21" : str += treeview_box_2_close ; break ;
- case "22" : str += treeview_box_2_open ; break ;
- }
- str += "' align='absmiddle' onclick='box_on_click(this)'>" ;
- if( this.img == "" )
- str += this.img ;
- else
- str += "<img src = '" + this.img + "' align='absmiddle' width='16' height='16'>" ;
- str += "</td><td><table border='0' cellspacing='1' cellpadding='1' style='font-size:9pt; color:#333333' id='lablePanel" + this.id + "'><tr><td ondblclick = 'lable_on_dblclick(" + this.id + ")' onclick='lable_on_click(" + this.id + ")' style='cursor:hand' id='f_lablePanel" + this.id + "' nowrap>" + this.lable + "</td></tr></table></td></tr></table>" ;
- document.all( "preface" + this.id ).innerHTML = str ;
- document.all( "tv_panel_" + this.id ).innerHTML = "" ;
- for( m = 0 ; m < this.subitems.length ; m ++ )
- if( this.subitems[ m ] != null ) {
- userstack.put( m ) ;
- this.subitems[ m ].show() ;
- m = userstack.get() ;
- }
- }
- function nodeitem_remove() {
- pparent = this.parent ;
- if( pparent == null ) {
- removenodeitem( this.id ) ;
- for(var i in document.all){
- if (document.all[i].tagName == "BODY")
- {
- document.all[i].innerHTML = "" ;
- break
- }
- }
- return ;
- }
- lastsubitem = null ;
- for( i = 0 ; i < pparent.subitems.length ; i ++ )
- if( pparent.subitems[ i ] != null )
- if ( pparent.subitems[ i ] == this )
- pparent.subitems[ i ] = null ;
- else
- lastsubitem = pparent.subitems[ i ] ;
- pparent.maxsubitem = lastsubitem ;
- if( lastsubitem == null )
- pparent.status = pparent.status.substring( 0 , 1 ) + "0" + pparent.status.substring( 2 , 3 ) ;
- else
- pparent.maxsubitem.status = "1" + pparent.maxsubitem.status.substring( 1 , 3 ) ;
- removenodeitem( this.id ) ;
- //added by msb for move up/down
- arrTemp = new Array();
- j = 0;
- for ( i=0; i<pparent.subitems.length; i++ ) {
- if ( pparent.subitems[i] != null ) {
- arrTemp[j] = pparent.subitems[i];
- j++;
- }
- }
- this.parent.subitems = arrTemp;
- //end added
- pparent.refresh() ;
- //tv_topnodeitem.refresh() ;
- }
- function removenodeitem( id ) {
- curitem = nodeitems[ id ] ;
- nodeitems[ id ] = null ;
- for( m = 0 ; m < curitem.subitems.length ; m ++ )
- if( curitem.subitems[ m ] != null ) {
- userstack.put( m ) ;
- removenodeitem( curitem.subitems[ m ].id ) ;
- m = userstack.get() ;
- }
- }
- function nodeitem_boxclick() {
- if( this.status.substring( 1 ,2 ) == "0" )
- return ;
- if( this.status.substring( 1 ,2 ) == "1" )
- this.open() ;
- else
- this.close() ;
- }
- function nodeitem_close() {
- this.status = this.status.substring( 0 , 1 ) + "1" + this.status.substring( 2 , 3 ) ;
- document.all( "tv_panel_" + this.id ).style.display = "none" ;
- eval( "document.all( 'box' + this.id ).src = treeview_box_" + this.status.substring( 0 , 1 ) +"_close" ) ;
- }
- function nodeitem_open() {
- this.status = this.status.substring( 0 , 1 ) + "2" + this.status.substring( 2 , 3 ) ;
- document.all( "tv_panel_" + this.id ).style.display = "" ;
- eval( "document.all( 'box' + this.id ).src = treeview_box_" + this.status.substring( 0 , 1 ) +"_open" ) ;
- }
- //added by msb for the move up/down
- nodeitem.prototype.moveUp = nodeitem_moveUp;
- nodeitem.prototype.moveDown = nodeitem_moveDown;
- //end added
- nodeitem.prototype.show = nodeitem_show ;
- nodeitem.prototype.refresh = nodeitem_refresh ;
- nodeitem.prototype.boxclick = nodeitem_boxclick ;
- nodeitem.prototype.close = nodeitem_close ;
- nodeitem.prototype.open = nodeitem_open ;
- nodeitem.prototype.remove = nodeitem_remove ;
- nodeitem.prototype.setTag = nodeitem_setTag ;
- nodeitem.prototype.getTag = nodeitem_getTag ;
- //==========================================================
- // Public Methods
- //==========================================================
- function showTV() {
- tv_topnodeitem.show() ;
- }
- function findNode( key ) {
- pppp = null;
- for( i = 0 ; i < nodeitems.length ; i ++ ) {
- if( nodeitems[ i ] != null ) {
- if( nodeitems[ i ].key == key ) {
- pppp = nodeitems[ i ] ;
- }
- }
- }
- return pppp ;
- }
- function addNode( parentkey , key , lable , img ) {
- return new nodeitem( parentkey , key , lable , img ) ;
- }
- function deleteNode( key ) {
- curNode = findNode( key ) ;
- if( curNode == null )
- return false ;
- curNode.remove() ;
- return true ;
- }
- //====== END ================
- //===========================================================
- // Events
- //===========================================================
- function box_on_click( obj ) {
- nodeitems[ obj.nodeid ].boxclick() ;
- }
- tv_curlable = null ;
- tv_curlable_f = null ;
- function lable_on_click( id ) {
- key = nodeitems[ id ].key ;
- if( nodeitems[ id ].parent == null )
- parentkey = "" ;
- else
- parentkey = nodeitems[ id ].parent.key ;
- if( tv_curlable != null ) {
- tv_curlable.bgColor = "transparent" ;
- tv_curlable.style.color = "#333333" ;
- tv_curlable_f.bgColor = "transparent" ;
- }
- tv_curlable = document.all("lablePanel"+id) ;
- tv_curlable.bgColor = "#000000" ;
- tv_curlable.style.color = "#FFFFFF" ;
- tv_curlable_f = document.all("f_lablePanel"+id) ;
- tv_curlable_f.bgColor = "#888888" ;
- for( i = 0 ; i < tv_listeners.length ; i ++ )
- if( tv_listeners[ i ].type == "click" ) {
- h = tv_listeners[ i ].handler ;
- eval( h + "( '" + key + "' , '" + parentkey + "' ) ; " ) ;
- }
- }
- function lable_on_dblclick( id ) {
- key = nodeitems[ id ].key ;
- if( nodeitems[ id ].parent == null )
- parentkey = "" ;
- else
- parentkey = nodeitems[ id ].parent.key ;
- if( tv_curlable != null ) {
- tv_curlable.bgColor = "transparent" ;
- tv_curlable.style.color = "#333333" ;
- tv_curlable_f.bgColor = "transparent" ;
- }
- tv_curlable = document.all("lablePanel"+id) ;
- tv_curlable.bgColor = "#000000" ;
- tv_curlable.style.color = "#FFFFFF" ;
- tv_curlable_f = document.all("f_lablePanel"+id) ;
- tv_curlable_f.bgColor = "#888888" ;
- for( i = 0 ; i < tv_listeners.length ; i ++ )
- if( tv_listeners[ i ].type == "dblclick" ) {
- h = tv_listeners[ i ].handler ;
- eval( h + "( '" + key + "' , '" + parentkey + "' ) ; " ) ;
- }
- }