if (typeof Gran == "undefined") { Gran = {}; }

Gran.getFirstChild = function(el, tag) {
  if (!el) { return null;  }
  el = el.firstChild;
  if (!el) {  return null;  }
  if (el.nodeType == 1 && (el.tagName.toLowerCase() == tag )) { return el; } 	
  el = el.nextSibling;
  while (el) {
	if (el.nodeType == 1 && (el.tagName.toLowerCase() == tag )) {return el;	}
	el = el.nextSibling;
  }
  return el;
};

Gran.removeClass = function(el, className) {
	if (!(el && el.className)) { return; }
	var cls = el.className.split(" ");
	var ar = [];
	for (var i = cls.length; i > 0;) 
    	{ if (cls[--i] != className) { ar[ar.length] = cls[i]; } }
	el.className = ar.join(" ");
};

Gran.addClass = function(el, className) {
	Gran.removeClass(el, className);
	el.className += " " + className;
};

Gran.Tab = function(objArgs) {
  this.linkNode = null;
  this.container = null;
  this.index = null;
  var objTabs = objArgs.tabs;
  this.container = objArgs.content;
  this.container.style.display = "none";
  this.id = this.container.getAttribute("id");
  if (typeof this.id == "string") { this.container.removeAttribute("id"); }
  this.linkNode = window.self.document.createElement("a");
  this.linkNode.setAttribute('onclick', 'javascript:this.changeTab(this.id)');
//  this.linkNode.setAttribute("href", "#" + this.id);
  this.linkNode.innerHTML = '<span><span> ' + objArgs.innerHTML +'</span></span>';
  if (objArgs.accessKey) { this.linkNode.accessKey = objArgs.accessKey; }
  if (objArgs.title) { this.linkNode.setAttribute("title", objArgs.title); }
  var self = this;
  this.linkNode.onclick = function() {
    objTabs.changeTab(self.id);
    return true; 
  };
  this.linkNode.tabIndex = Gran.Tab.tabIndex;
  Gran.Tab.tabIndex += 2;
  this.linkNode.onfocus = function() {
    objTabs.changeTab(self.id);
    return true;
  };
  objTabs.tabBar.appendChild(this.linkNode);
  this.index = objTabs.tabsArray.length;
  objTabs.tabsArray[this.index] = this;
  objTabs.tabs[this.id] = this;
};

Gran.Tab.tabIndex = 1000;

Gran.Tabs = function(objArgs) {
  this.tabBar = document.getElementById(objArgs.tabBar);
  this.tabss = document.getElementById(objArgs.tabs);
  var claname="zpTabsRed";
  Gran.addClass(this.tabBar, claname);
  claname += "Content";
  Gran.addClass(this.tabss, claname );
  this.tabs = {};
  this.tabsArray = [];
  var objSource = this.tabss; 
  var iLen = objSource.childNodes.length;	
  for (var iChild = 0; iChild < iLen; iChild++) {
    var objChild = objSource.childNodes[iChild];
    if (objChild.nodeType == 1) { 
      var objLabel =Gran.getFirstChild(objChild, "label");
      if (!objLabel) { continue; }
      var objTab = new Gran.Tab({
        tabs: this,
        innerHTML: objLabel.innerHTML,
        accessKey: objLabel.getAttribute("accesskey"),
        title: objLabel.getAttribute("title"),
        content: objChild
      });
      objTab.container.setAttribute("id", objTab.id);
      objLabel.parentNode.removeChild(objLabel);
    }
  }
  this.currentIndex = -1;
  this.changeTab(this.tabsArray[0].id);
};

Gran.Tabs.prototype.changeTab = function(strNewTabId) {
  var el  = document.getElementById('actualtab');
  if (el) {ed.value=strNetTabId);
  var strCurrTabId = null;  
  var objTab = null;
  if (this.tabsArray[this.currentIndex]) {
    strCurrTabId = this.tabsArray[this.currentIndex].id;
    objTab = this.tabsArray[this.currentIndex];
  }
  if (strCurrTabId != strNewTabId) {
    if (objTab) {
      objTab.container.style.display = "none";
      Gran.removeClass(objTab.linkNode, "zpTabsActive");
    }
    objTab = this.tabs[strNewTabId];
    objTab.container.style.display = "block";
    Gran.addClass(objTab.linkNode, "zpTabsActive");
    this.currentIndex = objTab.index;	
  }
  
};

Gran.Tabs.prototype.nextTab = function() {
  var n=this.currentIndex + 1;
  if (this.currentIndex >= this.tabsArray.length - 1) { n=0; }
  this.changeTab(this.tabsArray[n].id);
};

Gran.Tabs.prototype.prevTab = function() {
  var n=this.currentIndex - 1; 
  if (this.currentIndex <= 0)  { n=this.tabsArray.length - 1; }
  this.changeTab(this.tabsArray[n].id);
};