function randint(m,n)//产生m-n之间的随机整数
{
	return Math.random()*(n-m)+m;
}
function IfNull(a,dv)
{
	return typeof(a) =="undefined"?dv:a;
}

var TabPaneConfig = {
    idPrefix: "tab-panel-object-",
    idCounter: 0,
    getId: function(){ return this.idPrefix+this.idCounter++;},
    tabHeadId: "tabHead",
    tabHeadClass: "tab-head tab-border",
    tabBodyId: "tabBody",
    tabBodyClass: "tab-border"
}

function TabPane(id,changeTabInterval,isAutoChangeTab){
    this.id = id;
    this.height = "100%";
    this.width = "100%";
    
    this.tabPages = 0;
    this.head = null;
    this.body = null;  
    
    this.changeTabInterval=IfNull(changeTabInterval,10);
    this.isAutoChangeTab=IfNull(isAutoChangeTab,true);  
    this.changeTabTimerId = null;      
}

TabPane.prototype.init = function(){    
    var r = document.getElementById(this.id);
    if(!r.style.overflow)    r.style.overflow = "auto";
    r.className = "tab";
    
    //create head
    var div = document.createElement("div");
    div.id = TabPaneConfig.tabHeadId;
    div.className = TabPaneConfig.tabHeadClass;
    
    r.appendChild(div);
    this.head = div;
    
    var ul = document.createElement("ul");
    div.appendChild(ul);
    
    //create body
    div = document.createElement("div");
    div.id = TabPaneConfig.tabBodyId;
    div.className = TabPaneConfig.tabBodyClass;
    
    r.appendChild(div);    
    this.body = div;
    
    if(this.isAutoChangeTab)
    {
	    var tabPane = this;
	    this.changeTabTimerId = setInterval(function(){onChangeTabTimer(tabPane);},this.changeTabInterval*1000);    
    }  
}

TabPane.prototype.stopChangeTabTimer = function ()
{
	if(this.isAutoChangeTab)
  {
    clearInterval(this.changeTabTimerId);
  }
}

TabPane.prototype.addTabPage = function(obj)
{
    if(!document.getElementById(obj.panel)) return;
    if(!this.tabPages)  this.init();    
        
    this.head.firstChild.appendChild(this.createTabTitle(obj));
    this.body.appendChild(document.getElementById(obj.panel));    
    this.tabPages++;
}

TabPane.prototype.createTabTitle = function(obj){
    var li = document.createElement("li");
    li.id = TabPaneConfig.getId();    
    li.data = obj.panel;
    var tabPane = this;
    li.onclick=function(){tabOnClick(tabPane,li)};
    li.style.width = obj.width;
    
    if(this.tabPages)
    {
        li.className="";
        document.getElementById(obj.panel).style.display="none";    
    }
    else
    {
        li.className="hover";
        document.getElementById(obj.panel).style.display="block";    
    }
        
    var textNode = document.createTextNode(obj.title);
    li.appendChild(textNode);    
    return li;
}

//得到所有Tab页的Li元素
TabPane.prototype.getLiArr = function()
{
	return this.head.firstChild.children;
}

TabPane.prototype.getAcitveLi = function()
{
	var liArr = this.getLiArr();
  for(var i=0; i<liArr.length; i++)
  {
  	if(liArr[i].className=="hover")
  	{
  		return liArr[i];
  	}
  }	
}

//切换到指定的li对应的Tab页
TabPane.prototype.changeToTab = function (li)
{
    var liArr = this.getLiArr();
    for(var i=0; i<liArr.length; i++)
    {
        liArr[i].className="";
        document.getElementById(liArr[i].data).style.display="none";
    }
    li.className="hover";    
    document.getElementById(li.data).style.display="block";	
}

//得到v在数组arr中的序号
function indexOf(arr,v)
{
	for(var i = arr.length; i-- && arr[i] !== v;); 
	return i; 	
}

function onChangeTabTimer(tabPane)
{
var liArr = tabPane.getLiArr();
  var activeLi = tabPane.getAcitveLi();
  var i = indexOf(liArr,activeLi);
  var nexti = (i+1+liArr.length)%liArr.length;
  var nextLi = liArr[nexti];
  tabPane.changeToTab(nextLi);
}

function tabOnClick(tabPane,li)
{    
	  tabPane.stopChangeTabTimer();
		tabPane.changeToTab(li);
}
