⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 telligent_tabset.js

📁 community server 源码
💻 JS
字号:
function Telligent_TabSet(varName,containerId,stateId,cssClass,tabCssClasses,tabSelectedCssClasses,tabHoverCssClasses,onTabSetResizeFunction,enableResizing,tabs){this._variableName=varName;this._container=document.getElementById(containerId);this._state=document.getElementById(stateId);this.CssClass=cssClass;this.TabCssClasses=tabCssClasses;this.TabSelectedCssClasses=tabSelectedCssClasses;this.TabHoverCssClasses=tabHoverCssClasses;this.OnTabSetResizeFunction=onTabSetResizeFunction;this._selectedTab=null;this._selectedTabRow=null;this._tabs=new Array();this._tabRows=new Array();this._resizeCheckHandle=null;this._isRendered=false;this.EnableResizing=enableResizing;this._originalWindowOnUnload=null;if(window.onunload)this._originalWindowOnUnload=window.onunload;window.onunload=new Function(this._variableName+'._windowOnUnload();');this.ParseTabs(tabs,this._getStateValue('selected'));if(this._tabs.length>0)this.Refresh();}Telligent_TabSet.prototype._setStateValue=function(key,value){if(!this._state)return;var newValue='';var values=this._state.value.split(/\?/);var found=false;for(var i=0;i<values.length;i++){if(newValue!='')newValue+='?';var keyValue=values[i].split(/\:/,2);if(keyValue.length==2&&keyValue[0]==key){newValue+=key+':'+value;found=true;}elsenewValue+=values[i];}if(!found){if(newValue!='')newValue+='?';newValue+=key+':'+value;}this._state.value=newValue;}Telligent_TabSet.prototype._getStateValue=function(key){if(this._state&&this._state.value){var values=this._state.value.split(/\?/);for(var i=0;i<values.length;i++){var keyValue=values[i].split(/\:/,2);if(keyValue.length==2&&keyValue[0]==key)return keyValue[1];}}return'';}Telligent_TabSet.prototype._windowOnUnload=function(){this.Dispose();if(this._originalWindowOnUnload)this._originalWindowOnUnload();}Telligent_TabSet.prototype.Dispose=function(){this._disposeNodes();this._container=null;this._state=null;}Telligent_TabSet.prototype._disposeNodes=function(){for(var i=0;i<this._tabRows.length;i++){if(this._tabRows[i]&&this._tabRows[i]._element){if(this._tabRows[i]._element.childNodes[0]&&this._tabRows[i]._element.childNodes[0].childNodes[0]){var tr=this._tabRows[i]._element.childNodes[0].childNodes[0];for(var j=0;j<tr.childNodes.length;j++){if(tr.childNodes[j]&&tr.childNodes[j]._tab){tr.childNodes[j]._tab._element=null;tr.childNodes[j]._tab=null;tr.childNodes[j].onclick=null;tr.childNodes[j].onmouseover=null;tr.childNodes[j].onmouseout=null;}}}this._tabRows[i]._element=null;}}}Telligent_TabSet.prototype._setCssClasses=function(element,classes){if(typeof(classes)=='object'){var i=0;while(element&&i<classes.length){element.className=classes[i];i++;element=element.childNodes[0];}}else if(element)element.className=classes;}Telligent_TabSet.prototype._tabMouseOver=function(tab){if(tab!=this._selectedTab)this._setCssClasses(tab._element.childNodes[0],this.TabHoverCssClasses);return false;}Telligent_TabSet.prototype._tabMouseOut=function(tab){if(tab!=this._selectedTab)this._setCssClasses(tab._element.childNodes[0],this.TabCssClasses);return false;}Telligent_TabSet.prototype._tabClick=function(tab){if(tab.ClientScript){hadHandler=true;if((tab.ClientScript(this,tab))==false)return false;}if(tab!=this._selectedTab){if(this._selectedTab)this._setCssClasses(this._selectedTab._element.childNodes[0],this.TabCssClasses);this._selectedTab=tab;this._setCssClasses(tab._element.childNodes[0],this.TabSelectedCssClasses);if(this._tabRows.length>1){var found;this._selectedTabRow=null;for(var i=0;i<this._tabRows.length;i++){found=false;for(var j=0;j<this._tabRows[i]._tabs.length;j++){if(this._tabRows[i]._tabs[j]==this._selectedTab){this._selectedTabRow=this._tabRows[i];break;}}if(this._selectedTabRow)break;}if(this._selectedTabRow){this._container.childNodes[0].removeChild(this._selectedTabRow._element);this._container.childNodes[0].appendChild(this._selectedTabRow._element);}}elsethis._selectedTabRow=this._tabRows[0];this._setStateValue('selected',this._selectedTab.ID);}if(tab.NavigateUrl)window.location=tab.NavigateUrl;return false;}Telligent_TabSet.prototype.Refresh=function(){this._isRendered=false;this._disposeNodes();hiddenContainer=document.createElement('div');hiddenContainer.style.visibility='hidden';hiddenContainer.style.position='absolute';this._container.appendChild(hiddenContainer);while(hiddenContainer.childNodes.length>0)hiddenContainer.removeChild(hiddenContainer.childNodes[0]);var table=document.createElement('table');table.cellPadding='0';table.border='0';table.cellSpacing='0';table.appendChild(document.createElement('tbody'));table.childNodes[0].appendChild(document.createElement('tr'));hiddenContainer.appendChild(table);var elementDepth=1;if(typeof(this.TabHoverCssClasses)=="object"&&this.TabHoverCssClasses.length>elementDepth)elementDepth=this.TabHoverCssClasses.length;if(typeof(this.TabSelectedCssClasses)=="object"&&this.TabSelectedCssClasses.length>elementDepth)elementDepth=this.TabSelectedCssClasses.length;if(typeof(this.TabCssClasses)=="object"&&this.TabCssClasses.length>elementDepth)elementDepth=this.TabCssClasses.length;var totalWidth=0;var maxWidth=0;for(var i=0;i<this._tabs.length;i++){var cell=document.createElement('td');var element=cell;for(var j=0;j<elementDepth;j++){element.appendChild(document.createElement('div'));element=element.childNodes[0];}element.innerHTML=this._tabs[i].Text;table.childNodes[0].childNodes[0].appendChild(cell);cell._tab=this._tabs[i];this._tabs[i]._element=cell;this._setCssClasses(cell.childNodes[0],this.TabHoverCssClasses);cell._tab._maxWidth=cell.offsetWidth;this._setCssClasses(cell.childNodes[0],this.TabSelectedCssClasses);if(cell._tab._maxWidth<cell.offsetWidth)cell._tab._maxWidth=cell.offsetWidth;this._setCssClasses(cell.childNodes[0],this.TabCssClasses);if(cell._tab._maxWidth<cell.offsetWidth)cell._tab._maxWidth=cell.offsetWidth;totalWidth+=cell._tab._maxWidth;if(cell._tab._maxWidth>maxWidth)maxWidth=cell._tab._maxWidth;}var numRows=Math.ceil((((totalWidth*3)/this._container.offsetWidth)+((maxWidth*this._tabs.length)/this._container.offsetWidth))/4);var maxTabsPerRow=Math.ceil(this._tabs.length/numRows);if(maxTabsPerRow<1)maxTabsPerRow=1;while(this._container.childNodes.length>0)this._container.removeChild(this._container.childNodes[0]);this._container.className=this.CssClass;var container=document.createElement('div');if(this.EnableResizing){container.style.width='100%';container.style.overflow='hidden';}this._container.appendChild(container);this._tabRows=new Array();var selectedTab=this._selectedTab;this._selectedTabRow=null;this._selectedTab=null;var j=-1;for(var i=0;i<this._tabs.length;i++){if(j==-1||(this.EnableResizing&&(this._tabRows[j]._tabs.length==maxTabsPerRow||(this._tabRows[j]._element.offsetWidth+this._tabs[i]._maxWidth>container.offsetWidth&&this._tabRows[j]._tabs.length>0)))){var table=document.createElement('table');table.cellPadding='0';table.border='0';table.cellSpacing='0';table.appendChild(document.createElement('tbody'));table.childNodes[0].appendChild(document.createElement('tr'));container.appendChild(table);j++;this._tabRows[j]=new Telligent_TabSetRow(table);}this._tabRows[j]._element.childNodes[0].childNodes[0].appendChild(this._tabs[i]._element);this._tabRows[j]._tabs[this._tabRows[j]._tabs.length]=this._tabs[i];this._tabs[i]._tabRow=this._tabRows[j];this._tabs[i]._element.onclick=new Function('return '+this._variableName+'._tabClick(this._tab, '+j+');');this._tabs[i]._element.onmouseover=new Function('return '+this._variableName+'._tabMouseOver(this._tab, '+j+');');;this._tabs[i]._element.onmouseout=new Function('return '+this._variableName+'._tabMouseOut(this._tab, '+j+');');;if(this._tabs[i]==selectedTab){this._selectedTab=this._tabs[i];this._selectedTabRow=this._tabRows[j];this._setCssClasses(this._tabs[i]._element.childNodes[0],this.TabSelectedCssClasses);}}if(this._tabRows.length>1){for(var i=0;i<this._tabRows.length;i++){this._tabRows[i]._element.style.width='100%';}if(this._selectedTabRow){container.removeChild(this._selectedTabRow._element);container.appendChild(this._selectedTabRow._element);}}if(this._selectedTab)this._setStateValue('selected',this._selectedTab.ID);elsethis._setStateValue('selected','');this._isRendered=true;if(this._tabs.length>0){if(this._resizeCheckHandle)window.clearTimeout(this._resizeCheckHandle);this._resizeCheckHandle=window.setTimeout(new Function(this._variableName+'._resizeCheck();'),49);}}Telligent_TabSet.prototype.ParseTabs=function(tabs,selectedTabId){if(typeof(selectedTabId)=='undefined'&&this._selectedTab)selectedTabId=this._selectedTab.ID;this._tabs=new Array();if(!tabs||tabs.length==0)return;for(var i=0;i<tabs.length;i++){this._tabs[i]=new Telligent_TabSetTab(tabs[i][0],tabs[i][1]);this._tabs[i].NavigateUrl=tabs[i][2];this._tabs[i].ClientScript=tabs[i][3];this._tabs[i]._tabSet=this;if(this._tabs[i].ID==selectedTabId)this._selectedTab=this._tabs[i];}}Telligent_TabSet.prototype._resizeCheck=function(){if(this._resizeCheckHandle)window.clearTimeout(this._resizeCheckHandle);if(this.EnableResizing&&this._isRendered&&this._container.offsetWidth!=this._previousContainerOffsetWidth){this.Refresh();this._previousContainerOffsetWidth=this._container.offsetWidth;if(this.OnTabSetResizeFunction)this.OnTabSetResizeFunction(this);}this._resizeCheckHandle=window.setTimeout(new Function(this._variableName+'._resizeCheck();'),999);}Telligent_TabSet.prototype.AddTab=function(tab){this.RemoveTab(tab);if(tab){tab._tabSet=this;this._tabs[this._tabs.length]=tab;}}Telligent_TabSet.prototype.RemoveTab=function(tab){var tabs=new Array();var found=false;for(var i=0;i<this._tabs.length;i++){if(this._tabs[i]==tab)found=true;elsetabs[tabs.length]=this._tabs[i];}if(found)this._tabs=tabs;}Telligent_TabSet.prototype.ClearTabs=function(){this._tabs=new Array();}Telligent_TabSet.prototype.InsertTab=function(tab,index){this.RemoveTab(tab);var tabs=new Array();var inserted=false;for(var i=0;i<this._tabs.length;i++){if(i==index){inserted=true;tab._tabSet=this;tabs[tabs.length]=tab;}tabs[tabs.length]=this._tabs[i];}if(!inserted)tabs[tabs.length]=tab;this._tabs=tabs;}Telligent_TabSet.prototype.GetTabById=function(id){for(var i=0;i<this._tabs.length;i++){if(this._tabs[i].ID==id)return this._tabs[i];}return null;}Telligent_TabSet.prototype.GetTabsByText=function(text){var tabs=new Array();for(var i=0;i<this._tabs.length;i++){if(this._tabs[i].Text==text)tabs[tabs.length]=this._tabs[i];}return tabs;}Telligent_TabSet.prototype.GetTabAtIndex=function(index){if(index>=0&&index<this._tabs.length)return this._tabs[index];elsereturn null;}Telligent_TabSet.prototype.GetTabCount=function(){return this._tabs.length;}Telligent_TabSet.prototype.SelectTab=function(tab){if(tab&&tab._tabSet==this)this._tabClick(tab);}Telligent_TabSet.prototype.GetSelectedTab=function(){return this._selectedTab;}function Telligent_TabSetTab(id,text){this.ID=id;this.Text=text;this.NavigateUrl=null;this.ClientScript=null;this._maxWidth=0;this._element=null;this._tabSet=null;this._tabSetRow=null;}Telligent_TabSetTab.prototype.GetTabSet=function(){return this._tabSet;}function Telligent_TabSetRow(element){this._element=element;this._tabs=new Array();this._tabSet=null;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -