function ddtabcontent(tabinterfaceid)
	{
		this.tabinterfaceid = tabinterfaceid;
		this.tabs = document.getElementById(tabinterfaceid).getElementsByTagName("a");
		this.enabletabpersistence = true;
		this.hottabspositions = [];
		this.subcontentids = [];
		this.revcontentids = [];
		this.selectedClassTarget = "link";
	}

ddtabcontent.getCookie=function(Name)
 { 
	 var re = new RegExp(Name+"=[^;]+", "i");
	 if(document.cookie.match(re))
		 return document.cookie.match(re)[0].split("=")[1];
	 return "";
 }

ddtabcontent.setCookie = function(name, value)
 {
	 document.cookie = name+"="+value+";path=/";
 }

ddtabcontent.prototype = 
 {
		expandit:function(tabid_or_position)
		 {
				this.cancelautorun();
				var tabref = "";
				try
				 {
					 if(typeof tabid_or_position == "string" && document.getElementById(tabid_or_position).getAttribute("rel"))
						 tabref = document.getElementById(tabid_or_position);
					 else if(parseInt(tabid_or_position) != NaN && this.tabs[tabid_or_position].getAttribute("rel"))
						 tabref = this.tabs[tabid_or_position];
				 }
				catch(err)
				 {
					 alert("Invalid Tab ID or position entered!");
					}
				
				if(tabref != "")
					this.expandtab(tabref);
			},
	 
		setpersist:function(bool)
		 {
			 this.enabletabpersistence = bool;
	  },

		setselectedClassTarget:function(objstr)
		 {
		  this.selectedClassTarget = objstr || "link";
	  },

	 getselectedClassTarget:function(tabref)
		 {
		  return (this.selectedClassTarget == ("linkparent".toLowerCase())) ? tabref.parentNode : tabref;
	  },

	 expandtab:function(tabref)
		 {
		  var subcontentid = tabref.getAttribute("rel");
  		var associatedrevids = (tabref.getAttribute("rev")) ? "," + tabref.getAttribute("rev").replace(/\s+/, "") + "," : "";
		  this.expandsubcontent(subcontentid);
		  this.expandrevcontent(associatedrevids);
		  
				for(var i = 0; i < this.tabs.length; i++)
				 {
			   this.getselectedClassTarget(this.tabs[i]).className = (this.tabs[i].getAttribute("rel") == subcontentid) ? "selected" : "";
		   }
		  
				if(this.enabletabpersistence)
			  ddtabcontent.setCookie(this.tabinterfaceid, tabref.tabposition);
	  },

	 expandsubcontent:function(subcontentid)
	  {
		  for(var i = 0; i < this.subcontentids.length; i++)
				 {
			   var subcontent = document.getElementById(this.subcontentids[i]);
			   subcontent.style.display = (subcontent.id == subcontentid) ? "block" : "none";
		   }
	  },

	 expandrevcontent:function(associatedrevids)
		 {
		  var allrevids = this.revcontentids;
		  for(var i = 0; i < allrevids.length; i++)
				 {
 			  document.getElementById(allrevids[i]).style.display = (associatedrevids.indexOf("," + allrevids[i] + ",") != -1) ? "block" : "none";
		   }
	  },

	 autorun:function()
		 {
				var currentTabIndex = this.automode_currentTabIndex;
				var hottabspositions = this.hottabspositions;
				this.expandtab(this.tabs[hottabspositions[currentTabIndex]]);
				this.automode_currentTabIndex = (currentTabIndex < hottabspositions.length - 1) ? currentTabIndex + 1 : 0;
	  },

	 cancelautorun:function()
		 {
		  if(typeof this.autoruntimer != "undefined")
			  clearInterval(this.autoruntimer);
	  },

	 init:function(automodeperiod)
		 {
		  var persistedtab = ddtabcontent.getCookie(this.tabinterfaceid);
		  var persisterror = true;
		  this.automodeperiod = automodeperiod || 0;
		  
				for(var i = 0; i < this.tabs.length; i++)
				 {
			   this.tabs[i].tabposition = i;
			   if(this.tabs[i].getAttribute("rel"))
						 {
				    var tabinstance = this;
				    this.hottabspositions[this.hottabspositions.length] = i;
				    this.subcontentids[this.subcontentids.length] = this.tabs[i].getAttribute("rel");
				    this.tabs[i].onclick = function()
								 {
					     tabinstance.expandtab(this);
					     tabinstance.cancelautorun();
					     return false;
				     }
				    
								if(this.tabs[i].getAttribute("rev"))
								 {
					     this.revcontentids = this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/\s*,\s*/));
				     }
				    
								if(this.enabletabpersistence && parseInt(persistedtab) == i || !this.enabletabpersistence && this.getselectedClassTarget(this.tabs[i]).className == "selected")
 								{
	     				this.expandtab(this.tabs[i]);
					     persisterror = false;
										this.automode_currentTabIndex = (i > 0) ? 0 : 1;
				     }
			    }
		   }
		  
				if(persisterror)
			  this.expandtab(this.tabs[this.hottabspositions[0]]);
		  
				if(parseInt(this.automodeperiod) > 500 && this.hottabspositions.length > 1)
				 {
			   this.automode_currentTabIndex = this.automode_currentTabIndex || 0;
			   this.autoruntimer = setInterval(function(){tabinstance.autorun()}, this.automodeperiod);
		   }
	  }
 }
