var myTabnavi_list = new Array();

function myTabnavi(arg,theme){
	var tabItems = newElem("div");
	addStyle(tabItems, {fontFamily: "Arial", fontSize:"14px", color:"#9f9f9f", position:"relative"});
	//tabItems.className = "navi2Items";
	this.tabItems = tabItems;

	this.theme = {};
	if(theme == 1){
		this.theme["active"] = "tabnavi/tab_set_02.jpg";
		this.theme["inactive"] = "tabnavi/tab_set_01.jpg";
		this.theme["disabled"] = "tabnavi/tab_set_01.jpg";
	}else{
		this.theme["active"] = "tabnavi/tab_set_04.jpg";
		this.theme["inactive"] = "tabnavi/tab_set_03.jpg";
		this.theme["disabled"] = "tabnavi/tab_set_03.jpg";
	}

	//this.id = (getElem(arg.id)) ? arg.id : newElem("div", {id:uniqueId()}).id;
	this.id = arg;
	//this.parent = (arg.parent) ? arg.parent : 0;
	//this.x = (arg.x) ? arg.x : 0;
	//this.y = (arg.y) ? arg.y : 0;
	//this.z = (arg.z) ? arg.z : 0;

	//this.tabs = (arg.tabs) ? arg.tabs : [];
	//for(i in tabs){
	//}

	this.container = getElem(this.id);
	//this.tab = tab;

	this.actions = new Array();
	this.tabList = new Array();

	this.tabCount = 0;

	//this.init();
	return this;
}
myTabnavi.prototype = {
	init: function(){
		this.container.appendChild(this.tabItems);
	},
	hide: function(){

	},
	show: function(){

	},
	createTab: function(data){
		var tabNum = this.tabCount;
		var tab = newElem("div");
		data.disabled = (data.disabled) ? 1 : 0;
		data.active = (data.active) ? 1 : 0;

		tab.data = data;
		tab.num = tabNum;
		tab.name = "tab_"+tabNum;

		addStyle(tab, {display: "block", cursor: "pointer", cssFloat:"left", styleFloat:"left", border:"0px solid blue", position:"relative"});
		//tab.style.cssFloat = "left";
		//tab.className = "navi2Item";
		this.tabItems.appendChild(tab);

		var left = newElem("div");
		addStyle(left, {backgroundImage:"url("+this.theme["inactive"]+")", cssFloat:"left", styleFloat:"left", height:"28px", width:"8px", display:"block", border:"0px solid red", position:"relative", backgroundPosition:"0px 0px"});
		//left.className = "navi2item_left";

		var center = newElem("div", {innerHTML: data.text});
		addStyle(center, {backgroundImage:"url("+this.theme["inactive"]+")", cssFloat:"left", styleFloat:"left", height:"21px", display:"block", paddingTop:"7px", paddingLeft:"3px", paddingRight:"3px", border:"0px solid red", position:"relative", backgroundPosition:"top center"});
		//center.className = "navi2item_center";

		var right = newElem("div");
		addStyle(right, {backgroundImage: "url("+this.theme["inactive"]+")", cssFloat:"left", styleFloat:"left", height:"28px",width:"8px",display:"block",marginRight:"2px", border:"0px solid red", position:"relative", backgroundPosition:"-293px 0px"});
		//right.className = "navi2item_right";

		tab.appendChild(left);
		tab.appendChild(center);
		tab.appendChild(right);
		tab["elem"] = {};
		tab.elem["left"] = left;
		tab.elem["center"] = center;
		tab.elem["right"] = right;

		this.tabList[tabNum] = tab;

		var thisI = this;
		this.tabCount++;
		
		this.setDefaultAction(tabNum);
		if(data.disabled) this.disableTab(tabNum);
		if(data.active) this.activateTab(tabNum);
		//if(data.action)	this.setAction(tabNum, data.action);
		//alert(tabNum+": "+typeof(data.action)+": "+data.action.toString());
		this.actions[tabNum] = data.action;
		
		return tab;
	},
	setAction2: function(num, action){
		thisI = this;
		tab = this.tabList[num];
		if(typeof(action) == "string"){
			eval("var ac="+action+";");
			action = ac;
		}
		tab.data.action = action;
		//addEvent(tab, "mouseup", action);
	},
	removeAction: function(num){
		tab = this.tabList[num];
		if(tab.data.action){
			removeEvent(tab, "mouseup", tab.data.action);
		}
	},
	setDefaultAction: function(num){
		var thisI = this;
		tab = this.tabList[num];
		f = function(e){thisI.tabClick(e,num)};
		addEvent(tab, "mouseup", f);
		//alert("set: "+f);
	},
	tabClick: function(e,num){
		e = fixE(e);
		//alert(num);
		tab = this.tabList[num];
		if(tab.data.disabled == 0){
			//alert(tab.name);
			this.activateTab(num);
			//alert(typeof(tab.data.action));
			//tab.data.action();
			action = this.actions[num];
			//alert(typeof(action)+": "+action);
			if(action){
				//action = "function(){void(0);}";
				eval("var f="+action+";");
				f();
			}
			//if(typeof(action) == "object"){
			//	action();
			//}		
		}
	},
	activateTab: function(num){
		tab = this.tabList[num];
		//if(tab.data.disabled == 0){
			//this.deactivateAll();
			tab.elem.left.style.backgroundImage = "url("+this.theme["active"]+")";
			tab.elem.center.style.backgroundImage = "url("+this.theme["active"]+")";
			tab.elem.right.style.backgroundImage = "url("+this.theme["active"]+")";
			setOpacity(tab.elem.left, 100);
			setOpacity(tab.elem.center, 100);
			setOpacity(tab.elem.right, 100);
			//alert("act: "+num+": "+tab.data.disabled);

		for(var i = 0; i <= this.tabList.length - 1; i++){
			if(i != num) this.deactivateTab(i);
		}		
		//}
	},
	deactivateAll: function(){
		for(var i = 0; i <= this.tabList.length - 1; i++){
			this.deactivateTab(i);
		}	
	},
	deactivateTab: function(num){
		tab = this.tabList[num];
		if(tab.data.disabled == 0){
			//alert("deac: "+num);
			tab.elem.left.style.backgroundImage = "url("+this.theme["inactive"]+")";
			tab.elem.center.style.backgroundImage = "url("+this.theme["inactive"]+")";
			tab.elem.right.style.backgroundImage = "url("+this.theme["inactive"]+")";
			setOpacity(tab.elem.left, 100);
			setOpacity(tab.elem.center, 100);
			setOpacity(tab.elem.right, 100);
		}
	},
	disableTab: function(num){
		tab = this.tabList[num];
		tab.data.disabled = 1;
		tab.elem.left.style.backgroundImage = "url("+this.theme["disabled"]+")";
		tab.elem.center.style.backgroundImage = "url("+this.theme["disabled"]+")";
		tab.elem.right.style.backgroundImage = "url("+this.theme["disabled"]+")";
		setOpacity(tab.elem.left, 50);
		setOpacity(tab.elem.center, 50);
		setOpacity(tab.elem.right, 50);
		this.removeAction(num);
	},
	restoreTab: function(num){
		tab = this.tabList[num];
		tab.data.disabled = 0;
		this.deactivateTab(num);
		//this.setDefaultAction(num);
		if(tab.data.action){
			//this.setAction(num, tab.data.action);
			//alert(tab.data.action);
		}
	},
	tabText: function(num, text){
		tab = this.tabList[num];
		tab.elem.center.innerHTML = text;
	}
}
function myTabnavi_parse(){
	var myTabnavi_objects = getElementsByName("div", "myTabnavi");

	for(var x = 0; x <= myTabnavi_objects.length - 1; x++){
		var myTabnavi_obj = myTabnavi_objects[x];
		var id = myTabnavi_obj.id;
		myTabnavi_obj.name = id;
		setAttribute(myTabnavi_obj, "name", "");
		//alert("id: "+id+" "+getAttribute(myTabnavi_obj, "name"));
		theme = getAttribute(myTabnavi_obj, "theme");
		var newInstance = new myTabnavi(id,theme);
		var childs = myTabnavi_obj.childNodes;
		var tabs = new Array();
		var c = childs.length-1;
		var removeList = [];
		for(var i = 0; i <= c; i++){
			var tab = childs[i];
			if(tab.nodeName == "DIV"){
				var text = tab.innerHTML;
				active = parseInt(getAttribute(tab,"active"));
				//alert("active: "+active);
				disabled = getAttribute(tab, "disabled");
				action = getAttribute(tab, "action");
				if(action) action = action.replaceAll("this", "myTabnavi_list["+x+"]");
				tabs.push( {text:text, active:active, disabled:disabled, action:action} );
				removeList.push(tab);
			}
		}
		for(var r = 0; r <= removeList.length - 1; r++){
			myTabnavi_obj.removeChild(removeList[r]);
		}
		for(var t = 0; t <= tabs.length - 1; t++){
			newInstance.createTab(tabs[t]);
		}
		newInstance.init();
		myTabnavi_list[x] =  newInstance;
	}
}
