// ***************************************************
//
// writer by geato 2010-01-15
// mail:fairyprince@163.com , free_getao@hotmail.com
//
// ***************************************************

function TabCardItem(caption,cardID,userData,alwaysSel,url,target)
{
	this.caption = caption;
	this.cardID = cardID;
	this.userData = userData;

	this.alwaysSel = false;
	if(typeof alwaysSel != 'undefined')
	{
		this.alwaysSel = alwaysSel;
	}

	this.url = "";
	if(typeof url == 'string')
	{
		this.url = url;
	}

	this.target = "";
	if(typeof target == 'string')
	{
		this.target = target;
	}
}

function TabCard(own,id,style,autoSelect,eventFun)
{
	this.ID = id;
	this.style = style;
	this.ItemList = new Array();
	this.eventFun = eventFun;
	this.own = own;
	this.currentShowIndex = 0;
	this.lastShowIndex = -1;

	this.AutoSelect = true;
	if(typeof autoSelect != 'undefined')
	{
		this.AutoSelect = autoSelect;
	}
}

TabCard.prototype.AddItem = function (caption,cardID,userData,alwaysSel,url,target) {
	var itemobj = new TabCardItem(caption,cardID,userData,alwaysSel,url,target);
	this.ItemList.push(itemobj);
	itemobj = null;
}

TabCard.prototype.GetItemCount = function () {
	return this.ItemList.size();
}

TabCard.prototype.GetItem = function (index) {
	var c = this.ItemList.size();
	if(index < 0 || index >= c)
		return null;
	return this.ItemList[index];
}

TabCard.prototype.getHtml = function (defaultIndex) {
	var html = new strcat();
	html.append('<div id="' + this.ID + '" class="' + this.style + '">');
	html.append('<ul class="' + this.style + '_ul"></span>');
	var c = this.ItemList.size();
	var i = 0;

	for(i = 0 ; i < c ; i ++)
	{
		if(this.AutoSelect)
		{
			if(i < c-1)
			{
				if(this.ItemList[i].url != "")
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_li"><a href="' + this.ItemList[i].url + '" onMouseOver="' + this.own + '.ShowCard(' + i + ',\'moveover\');" target="' + this.ItemList[i].target + '">' + this.ItemList[i].caption + '</a></li>');
				}
				else
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_li"><a href="' + this.ItemList[i].caption + '" onMouseOver="' + this.own + '.ShowCard(' + i + ',\'moveover\');" onClick="' + this.own + '.ShowCard(' + i + ',\'click\');return false;">' + this.ItemList[i].caption + '</a></li>');
				}
			}
			else
			{
				if(this.ItemList[i].url != "")
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_lilast"><a href="' + this.ItemList[i].url + '" onMouseOver="' + this.own + '.ShowCard(' + i + ',\'moveover\');" target="' + this.ItemList[i].target + '">' + this.ItemList[i].caption + '</a></li>');
				}
				else
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_lilast"><a href="' + this.ItemList[i].caption + '" onMouseOver="' + this.own + '.ShowCard(' + i + ',\'moveover\');" onClick="' + this.own + '.ShowCard(' + i + ',\'click\');return false;">' + this.ItemList[i].caption + '</a></li>');
				}
			}
		}
		else
		{
			if(i < c-1)
			{
				if(this.ItemList[i].url != "")
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_li"><a href="' + this.ItemList[i].url + '" target="' + this.ItemList[i].target + '">' + this.ItemList[i].caption + '</a></li>');
				}
				else
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_li"><a href="' + this.ItemList[i].caption + '"  onClick="' + this.own + '.onClick(' + i + ',\'click\');return false;">' + this.ItemList[i].caption + '</a></li>');
				}
			}
			else
			{
				if(this.ItemList[i].url != "")
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_lilast"><a href="' + this.ItemList[i].url + '" target="' + this.ItemList[i].target + '">' + this.ItemList[i].caption + '</a></li>');
				}
				else
				{
					html.append('<li id="' + this.ID + '_item' + i + '" class="' + this.style + '_lilast"><a href="' + this.ItemList[i].caption + '" onClick="' + this.own + '.onClick(' + i + ',\'click\');return false;">' + this.ItemList[i].caption + '</a></li>');
				}
			}
		}
	}
	html.append('</ul></div>');
	return html.toString();
}

TabCard.prototype.writeHtml = function (defaultIndex) {
	document.write(this.getHtml(defaultIndex));
}

TabCard.prototype.ShowCard = function (index,eventName) {
	var c = this.ItemList.size();
	if(index < 0 || index >= c || this.lastShowIndex == index)
	{
		if(eventName == 'click')
		{
			if(typeof this.eventFun != 'undefined')
				this.eventFun(this,index,eventName);
		}
		return;
	}

	if(this.lastShowIndex != index && this.lastShowIndex != -1)
	{
		var oldcard = $(this.ItemList[this.lastShowIndex].cardID);
		if(oldcard != null && typeof oldcard == 'object')
		{
			oldcard.hide();
		}
		oldcard = null;
		
		if(!this.ItemList[this.lastShowIndex].alwaysSel)
		{
			var liobj = $(this.ID + '_item' + this.lastShowIndex);
			if(liobj != null && typeof liobj == 'object')
			{
				liobj.removeClassName(this.style + '_li_sel');
				liobj.toggleClassName(this.style + '_li_nosel');
				liobj = null;
			}
		}
	}
	
	var liobj = $(this.ID + '_item' + index);
	if(liobj != null && typeof liobj == 'object')
	{
		if(this.ItemList[index].alwaysSel)
		{
			if(!liobj.hasClassName(this.style + '_li_sel'))
			{
				liobj.removeClassName(this.style + '_li_nosel');
				liobj.toggleClassName(this.style + '_li_sel');
			}
		}
		else
		{
			liobj.removeClassName(this.style + '_li_nosel');
			liobj.toggleClassName(this.style + '_li_sel');
		}
	}
	liobj = null;

	var card = $(this.ItemList[index].cardID);
	if(card != null && typeof card == 'object')
	{
		card.show();
	}
	card = null;

	this.lastShowIndex = index;
	this.currentShowIndex = index;
	if(typeof this.eventFun != 'undefined')
	{
		this.eventFun(this,index,eventName);
	}
}

TabCard.prototype.onClick = function (index,eventName) {
	if(typeof this.eventFun != 'undefined')
	{
		this.eventFun(this,index,eventName);
	}
}

