var tabinterfaceElement = null;
var options_tab_authorized = true;
var tabs_loading = new Array();
var tabs_names	= new Array();
var tabs_loadingIds = new Array();
var tabs_currentLoad = null;
var favoritesTabs = null;

function ddtabcontent(tabinterfaceid){
	this.tabinterfaceid=tabinterfaceid //ID of Tab Menu main container
	this.tabs=document.getElementById(tabinterfaceid).getElementsByTagName("li") //Get all tab links within container
	this.enabletabpersistence=false
	this.hottabspositions=[] //Array to store position of tabs that have a "rel" attr defined, relative to all tab links, within container
	this.currentTabIndex=0 //Index of currently selected hot tab (tab with sub content) within hottabspositions[] array
	this.subcontentids=[] //Array to store ids of the sub contents ("rel" attr values)
	this.revcontentids=[] //Array to store ids of arbitrary contents to expand/contact as well ("rev" attr values)
	this.selectedClassTarget="link" //keyword to indicate which target element to assign "selected" CSS class ("linkparent" or "link")
	this.selectedtab = -1;
	tabinterfaceElement = this;
}

ddtabcontent.getCookie=function(Name){
	var re=new RegExp(Name+"=[^;]+", "i"); //construct RE to search for target name/value pair
	if (document.cookie.match(re)) //if cookie found
	return document.cookie.match(re)[0].split("=")[1] //return its value
	return ""
}

ddtabcontent.setCookie=function(name, value){
	document.cookie = name+"="+value+";path=/" //cookie value is domain wide (path=/)
}

ddtabcontent.prototype={

	expandit:function(tabid_or_position){ //PUBLIC function to select a tab either by its ID or position(int) within its peers
		this.cancelautorun() //stop auto cycling of tabs (if running)
		var tabref="";
		this.selectedtab = tabid_or_position;
		try{
			if (typeof tabid_or_position=="string" && document.getElementById(tabid_or_position).getAttribute("rel")) //if specified tab contains "rel" attr
			tabref=document.getElementById(tabid_or_position)
			else if (parseInt(tabid_or_position)!=NaN && this.tabs[tabid_or_position].getAttribute("rel")) //if specified tab contains "rel" attr
			tabref=this.tabs[tabid_or_position]
		}
		catch(err){alert("Invalid Tab ID or position entered!")}
		if (tabref!="") //if a valid tab is found based on function parameter
		{
			this.expandtab(tabref) //expand this tab
		}
	},

	cycleit:function(dir, autorun){ //PUBLIC function to move foward or backwards through each hot tab (tabinstance.cycleit('foward/back') )
		if (dir=="next"){
			var currentTabIndex=(this.currentTabIndex<this.hottabspositions.length-1)? this.currentTabIndex+1 : 0
		}
		else if (dir=="prev"){
			var currentTabIndex=(this.currentTabIndex>0)? this.currentTabIndex-1 : this.hottabspositions.length-1
		}
		if (typeof autorun=="undefined") //if cycleit() is being called by user, versus autorun() function
		this.cancelautorun() //stop auto cycling of tabs (if running)
		this.expandtab(this.tabs[this.hottabspositions[currentTabIndex]])
	},

	setpersist:function(bool){ //PUBLIC function to toggle persistence feature
		this.enabletabpersistence=bool
	},

	setselectedClassTarget:function(objstr){ //PUBLIC function to set which target element to assign "selected" CSS class ("linkparent" or "link")
		this.selectedClassTarget=objstr || "link"
	},

	getselectedClassTarget:function(tabref){ //Returns target element to assign "selected" CSS class to
		return (this.selectedClassTarget==("linkparent".toLowerCase()))? tabref.parentNode : tabref
	},

	urlparamselect:function(tabinterfaceid){
		var result=window.location.search.match(new RegExp(tabinterfaceid+"=(\\d+)", "i")) //check for "?tabinterfaceid=2" in URL
		return (result==null)? null : parseInt(RegExp.$1) //returns null or index, where index (int) is the selected tab's index
	},

	expandtab:function(tabref){
		var subcontentid=tabref.getAttribute("rel") //Get id of subcontent to expand
		//Get "rev" attr as a string of IDs in the format ",john,george,trey,etc," to easily search through
		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++){ //Loop through all tabs, and assign only the selected tab the CSS class "selected"
			this.getselectedClassTarget(this.tabs[i]).className=(this.tabs[i].getAttribute("rel")==subcontentid)? "selected" : ""
		}*/
		if (this.enabletabpersistence) //if persistence enabled, save selected tab position(int) relative to its peers
		ddtabcontent.setCookie(this.tabinterfaceid, tabref.tabposition)
		this.setcurrenttabindex(tabref.tabposition) //remember position of selected tab within hottabspositions[] array
		{
			//mise a jour des styles des onglets.
			for (var i = 0; i < tabArray.length; i++)
			{
				if (tabArray[i].dbid != -1)
				{
					var display = document.getElementById(this.subcontentids[i]).style.display;
					if (display == "block")
					{
						if (tabArray[i].open)
							tabArray[i].parentNode.id = "editing";
						else
							tabArray[i].parentNode.id = "current";
					}
					else
					{
						tabArray[i].parentNode.id = "";
					}
				}
			}
		}
	},

	expandsubcontent:function(subcontentid){
		for (var i=0; i<this.subcontentids.length; i++){
			var subcontent=document.getElementById(this.subcontentids[i]) //cache current subcontent obj (in for loop)
			//alert(this.subcontentids[i]);
			subcontent.style.display=(subcontent.id==subcontentid)? "block" : "none" //"show" or hide sub content based on matching id attr value
		}
	},

	expandrevcontent:function(associatedrevids){
		var allrevids=this.revcontentids
		for (var i=0; i<allrevids.length; i++){ //Loop through rev attributes for all tabs in this tab interface
			//if any values stored within associatedrevids matches one within allrevids, expand that DIV, otherwise, contract it
			document.getElementById(allrevids[i]).style.display=(associatedrevids.indexOf(","+allrevids[i]+",")!=-1)? "block" : "none"
		}
	},

	setcurrenttabindex:function(tabposition){ //store current position of tab (within hottabspositions[] array)
		for (var i=0; i<this.hottabspositions.length; i++){
			if (tabposition==this.hottabspositions[i]){
				this.currentTabIndex=i
				break
			}
		}
	},

	autorun:function(){ //function to auto cycle through and select tabs based on a set interval
		this.cycleit('next', true)
	},

	cancelautorun:function(){
		if (typeof this.autoruntimer!="undefined")
		clearInterval(this.autoruntimer)
	},

	init:function(automodeperiod){
		var persistedtab=ddtabcontent.getCookie(this.tabinterfaceid) //get position of persisted tab (applicable if persistence is enabled)
		this.selectedtab=-1 //Currently selected tab index (-1 meaning none)
		var selectedtabfromurl=this.urlparamselect(this.tabinterfaceid) //returns null or index from: tabcontent.htm?tabinterfaceid=index
		this.automodeperiod=automodeperiod || 0
		for (var i=0; i<this.tabs.length; i++){
			this.tabs[i].tabposition=i //remember position of tab relative to its peers
			if (this.tabs[i].getAttribute("rel")){
				var tabinstance=this
				this.hottabspositions[this.hottabspositions.length]=i //store position of "hot" tab ("rel" attr defined) relative to its peers
				this.subcontentids[this.subcontentids.length]=this.tabs[i].getAttribute("rel") //store id of sub content ("rel" attr value)
				this.tabs[i].onclick=Tab_Click;/*function(e){
					var target = COMMON_GetTarget(e);
					if (target.nodeName == "IMG"
						|| target.nodeName == "INPUT")
						return false;
					target = TAB_GetMainComponent(COMMON_GetTarget(e));
					if (COMMON_GetClass(target) == 'loadingTab')
					{
						AW_Show(g_lang_tab_loading, false);
						COMMON_StopPropagation(e);
						return false;
					}
					//window.location.hash = COMMON_GetHashFromURL(target.getElementsByTagName('a')[0].href);
					tabinstance.expandtab(this);
					tabinstance.cancelautorun() //stop auto cycling of tabs (if running)
					return false;
				}*/
				if (this.tabs[i].getAttribute("rev")){ //if "rev" attr defined, store each value within "rev" as an array element
					this.revcontentids=this.revcontentids.concat(this.tabs[i].getAttribute("rev").split(/\s*,\s*/))
				}
				if (this.getselectedClassTarget(this.tabs[i]).id=="editing"
					|| this.getselectedClassTarget(this.tabs[i]).id=="current")
				{
					this.selectedtab=i //Selected tab index, if found
				}
/*				if (selectedtabfromurl==i
						|| this.enabletabpersistence
						&& this.selectedtab==-1 && parseInt(persistedtab)==i 
						|| !this.enabletabpersistence 
						&& this.selectedtab==-1 && this.getselectedClassTarget(this.tabs[i]).id=="current"
					)
				{
					this.selectedtab=i //Selected tab index, if found
				}*/
			}
		} //END for loop
		if (this.selectedtab!=-1) //if a valid default selected tab index is found
		{
			this.expandtab(this.tabs[this.selectedtab]) //expand selected tab (either from URL parameter, persistent feature, or class="selected" class)
		}
		else //if no valid default selected index found
		{
			this.expandtab(this.tabs[this.hottabspositions[0]]) //Just select first tab that contains a "rel" attr
		}
		if (parseInt(this.automodeperiod)>500 && this.hottabspositions.length>1){
			this.autoruntimer=setInterval(function(){tabinstance.autorun()}, this.automodeperiod)
		}

	} //END int() function
	,
	reinitTab:function()
	{
		this.tabs=document.getElementById(this.tabinterfaceid).getElementsByTagName("li"); //Get all tab links within container
		this.subcontentids.splice(0, this.subcontentids.length);
	}

} //END Prototype assignment

var tabArray = new Array();
var tabIndex = 0;
function Tab_Rename(e, inputObj)
{
	if(document.all)e = event;
	if(!inputObj)inputObj=this;

	if (inputObj.open == false)
	{
		inputObj.open = true;
		inputObj.oldValue = inputObj.innerHTML;
		// Hide the actual content
		var width = inputObj.getElementsByTagName("a")[0].offsetWidth;
		inputObj.getElementsByTagName("a")[0].style.display = "none";
		inputObj.innerHTML = inputObj.innerHTML + "<input class=\"inputTab\" type=\"text\" value=\"" + inputObj.getElementsByTagName("a")[0].innerHTML + "\" maxlength='14' onkeydown='if (keyboard_isEnter(event)) closeAndSaveTabTitle(this, true); else { if (keyboard_isEscape(event)) closeAndSaveTabTitle(this, false);}' size='10'>";
		inputObj.getElementsByTagName('input')[0].focus();
		inputObj.getElementsByTagName('input')[0].style.width = width;
		TAB_HideMenu();
		inputObj.getElementsByTagName('input')[0].select();
		inputObj.parentNode.id = "editing";
	}
	else
	{
		COMMON_StopPropagation(e);
	}
}

function Tab_RenameMenuClick(e)
{
	if (tabTarget != null)
	{
		Tab_RenameChangeContent(tabTarget.parentNode);
		//TAB_HideMenu();
	}
}

function Tab_RenameChangeContent(inputObj)
{
	target = TAB_GetMainComponent(COMMON_GetTarget(inputObj));
	if (target && COMMON_GetClass(target) == 'loadingTab')
	{
		AW_Show(g_lang_tab_loading, false);
		COMMON_StopPropagation(e);
		return false;
	}
	if (inputObj.open == false)
	{
		inputObj.open = true;
		TAB_HideMenu();
		inputObj.oldValue = inputObj.innerHTML;
		// Hide the actual content
		var width = inputObj.getElementsByTagName("a")[0].offsetWidth;
		inputObj.getElementsByTagName("a")[0].style.display = "none";
		inputObj.innerHTML = inputObj.innerHTML + "<input class=\"inputTab\" type=\"text\" value=\"" + inputObj.getElementsByTagName("a")[0].innerHTML + "\" maxlength='14' onkeydown='if (keyboard_isEnter(event)) closeAndSaveTabTitle(this, true); else { if (keyboard_isEscape(event)) closeAndSaveTabTitle(this, false);}' size='10'>";
		inputObj.getElementsByTagName('input')[0].focus();
		inputObj.getElementsByTagName('input')[0].style.width = width;
		inputObj.parentNode.id = "editing";
		inputObj.getElementsByTagName('input')[0].select();
	}
}

function Tab_DeleteMenuClick()
{
	if (tabTarget != null)
	{
		var tab = document.getElementById("myeasyfavtab");
		var children = tab.getElementsByTagName("SPAN");
		if(children.length == 2)
		{
			alert(g_lang_tab_kill_not_last);
			return;
		}

		if (confirm(g_lang_tab_kill))
		{
			DB_deleteTab(tabTarget.parentNode.dbid);
			TAB_HideMenu();
		}
	}
}

function Tab_AddPlus(e, inputObj)
{
	LINK_HideMenu();
	TAB_HideMenu();
	BOX_HideMenu();
	var iButton = COMMON_GetButtonClicked(e);
	if (iButton != COMMON_MouseLeftClickValue())
		return;
	AW_Show(g_lang_tab_adding, false);
	DB_addNewTab();
}

function Tab_Click(e, inputObj)
{
	if (window.event) // IE
	{
		if (window.event.button==2)
		return;
	}
	else if (e.which == 3) // OTEHRS
	return;
	//alert(e.button);
	realTarget = COMMON_GetTarget(e);
	target = TAB_GetMainComponent(realTarget);
	if (COMMON_GetClass(target) == 'loadingTab')
	{
		AW_Show(g_lang_tab_loading, false);
		COMMON_StopPropagation(e);
		return false;
	}
	if(document.all)e = event;
	if(!inputObj)inputObj=this;

	if (realTarget.nodeName == "IMG"
		|| realTarget.nodeName == "INPUT")
		return;
	while (inputObj.nodeName != "LI")
		inputObj = inputObj.parentNode;
	
	inputObj = target.getAttribute('rel');
	closeAndSaveTabTitle(inputObj, false);
	{
		for (var i = 0; i < tabArray.length; i++)
		{
			if (inputObj == tabArray[i].parentNode.getAttribute('rel'))
			{
				tabinterfaceElement.expandit(i);
				if (tabArray[i].open == false && COMMON_GetClass(tabArray[i]) != "selected")
				{
					if (options_tab_authorized)
					{
						DB_selectTab(tabArray[i].dbid);
						TAB_HideMenu();
					}
					else
					{
						LINK_HideMenu();
						BOX_HideMenu();
					}
					closeAndSaveBoxTitle(false);
					COMMON_StopPropagation(e);
					return;
				}
				else
				{
					COMMON_StopPropagation(e);
				}
				return;
			}
		}
	}
}

function	closeAndSaveTabTitle(inputObj, bSave)
{
	var bRename = false;
	for (var i = 0; i < tabArray.length; i++)
	{
		if (tabArray[i].open == true && inputObj != tabArray[i])
		{
			tabArray[i].open = false;
			if (bSave && options_tab_authorized)
			{
				var oldValue = tabArray[i].getElementsByTagName("input")[0].value;
				if (oldValue.length != 0)
				{
					tabArray[i].innerHTML = tabArray[i].oldValue;
					var obj = document.getElementById("myeasyfavtab_span"+ tabArray[i].dbid);
					sShownValue = String_htmlentities(oldValue, 'HTML_ENTITIES');
					obj.getElementsByTagName("a")[0].innerHTML = sShownValue;
					DB_modifyBoxTab(obj.dbid, oldValue);
				}
				else
				{
					tabArray[i].innerHTML = tabArray[i].oldValue;
				}
			}
			else
			{
				tabArray[i].innerHTML = tabArray[i].oldValue;
			}
			// Register event again
			var a = tabArray[i].getElementsByTagName('A')[0];
			a.onmouseover = checkDragBox;
			a.onmouseout 	= onTabOut;
			a.onclick = function (e) {
				return false;
			}
			tabinterfaceElement.init();
			var imgOption = tabArray[i].getElementsByTagName('IMG')[0];
			imgOption.onclick=function(e, inputObj)
			{
				ShowTabOptionsMenu(this);
			}
			Image_AddHoverChangeSrc(imgOption, "./img/link_options.png", "./img/link_options_hover.png")
			bRename = true;
			break;
		}
	}
	return bRename;
}


function	closeAndSaveTabTitleWithoutInput(bSave)
{
	var bRename = false;
	for (var i = 0; i < tabArray.length; i++)
	{
		if (tabArray[i].open == true)
		{
			tabArray[i].open = false;
			if (bSave && options_tab_authorized)
			{
				var oldValue = tabArray[i].childNodes[0].value;
				tabArray[i].innerHTML = tabArray[i].oldValue;
				var obj = document.getElementById("myeasyfavtab_span"+ tabArray[i].dbid);
				obj.childNodes[0].innerHTML = oldValue;
				DB_modifyBoxTab(obj.dbid, oldValue);
			}
			else
			{
				tabArray[i].innerHTML = tabArray[i].oldValue;
			}
			tabinterfaceElement.init();
			bRename = true;
			break;
		}
	}
	return bRename;
}

function Tab_Add(name, relName, dbid, _bProgressiveLoad)
{
	var main = document.getElementById("myeasyfavtab");
	var li = document.createElement("LI");
	if (dbid != -1)
		li.setAttribute("rel", relName);
	if (_bProgressiveLoad)
	{
		COMMON_SetClass(li, "loadingTab");
		//li.setAttribute("loadingTab", "1");
		//li.id = 'loadingTab';
	}
	var span = document.createElement("SPAN");
	span.open = false;
	span.dbid = dbid;
	span.id = "myeasyfavtab_span"+ dbid;
	
	/*if (dbid != -1)
	{
		var img = document.createElement("IMG");
		img.realsrc = "./img/tab_options.png";
//		if (_bProgressiveLoad)
		{
			img.src = "./img/loading_tab.gif";
			img.id = "loading_tab";
		}
		//img.setAttribute("rel","lightboxicons");
		span.appendChild(img);	
	}*/

	var a = document.createElement("A");
	a.href	=	window.location.hash;//window.location.hash + COMMON_GetHashFromName(name);
	a.onclick = function (){
		return false;
	}
	a.innerHTML = name;
	a.dbid = dbid;
	span.appendChild(a);
	li.appendChild(span);
	if (dbid != -1 && options_tab_authorized)
	{
		var imgOption = document.createElement("IMG");
		imgOption.src = "./img/tab_options.png";
		//imgOption.style.cssText = "float:right;padding-left:5px;";
		imgOption.style.cursor = "pointer";
		imgOption.onclick=function(e, inputObj)
		{
			ShowTabOptionsMenu(this);
		}
		Image_AddHoverChangeSrc(imgOption, "./img/link_options.png", "./img/link_options_hover.png")
		span.appendChild(imgOption);
	}

	if (dbid != -1)
	{
		//span.onmouseup = Tab_Click;
		span.rel	=	relName;
		if (options_tab_authorized)
		span.ondblclick = Tab_Rename;
		a.onmouseover = checkDragBox;
		a.onmouseout 	= onTabOut;
		//a.onmouseup = Tab_Click;
		a.rel	=	relName;
		span.rel = relName;
		tabArray[tabIndex] = span;
		tabIndex++;
	}
	else
	{
		// + Tab
		li.id = "tabAdd";
		span.onmouseup = Tab_AddPlus;
	}

	// + tab
	var plusTab = document.getElementById("myeasyfavtab_span-1");
	if (plusTab != null)
	{
		main.insertBefore(li, plusTab.parentNode);
		Tab_RenameChangeContent(span);
		span.getElementsByTagName('input')[0].select();
	}
	else
	{
		main.appendChild(li);
	}
}

function Tab_InitNormalTabArray(name)
{
	tabArray = new Array();
	var tab_list = document.getElementById(name).getElementsByTagName("span");
	for (var i = 0; i < tab_list.length; i++)
	{
		if (tab_list[i].dbid != '-1')
			tabArray[i] = tab_list[i];		
	}
}

var eTabOn = null;
var tabTarget = null;
function checkDragBox(e)
{
	if (isDraggingBox())
	{
	}
	else
	{
	}
}

function TAB_HideMenu()
{
	if (options_tab_authorized == false)
	return;
	eTabOn = null;
	if (!$("#tab_menu").hasClass('hidden')) {
		$("#tab_menu").animate({height: 'toggle', opacity: 0}, 100).addClass('hidden');
	}	
}

function TAB_DivOnMouseOut(e)
{
	/*if (tabMenuTimeoutObject)
	clearTimeout(tabMenuTimeoutObject);
	tabMenuTimeoutObject = setTimeout('TAB_HideMenu()', 1000);*/
}

function TAB_DivOnMouseOver(e)
{
}

function onTabOut(e)
{
	/*if (COMMON_GetClass(COMMON_GetTarget(e)) == "selected")
	{
		if (tabMenuTimeoutObject)
		clearTimeout(tabMenuTimeoutObject);
		tabMenuTimeoutObject = setTimeout('TAB_HideMenu()', 1000);
	}*/
}

// Without relName
function Tab_AddResponse(name, dbid)
{
	var relName = "tab" + (tabArray.length);
	Tab_Add(name, relName, dbid);
	initNumberOfTabs(tabArray.length);

	var tabContainer = document.getElementById("tabcontainer");
	var div = document.createElement("DIV");
	div.setAttribute("id", relName);
	div.setAttribute("dbid", dbid);

	var footer = document.getElementById("footer");
	tabContainer.insertBefore(div,footer);

	tabinterfaceElement.reinitTab();
	tabinterfaceElement.init();
	initDragableBoxesScript(relName);

	tabinterfaceElement.expandit(tabArray.length - 1);
	//DB_selectTab(tabArray[tabArray.length - 1].dbid);
}
/************************************
******** TAB FUNCTIONS **************
***********************************/
function DB_addNewTab()
{
	closeAndSaveTabTitleWithoutInput(false);
	AJAX_SendRequest('./ajax/tab.php?addNewTab&iduniverse=' + g_iCurrentUniverse);
}

function DB_responseAddNewTab(title, dbid)
{
	Tab_AddResponse(title, dbid);
	DB_addNewBox(dbid);
}

function DB_modifyBoxTab(_iTabId, _sTitle)
{
	AJAX_SendRequest('./ajax/tab.php?modifyTitleTab&id=' + _iTabId + '&title=' + _sTitle);
}

function DB_selectTab(_iTabId)
{
	LINK_HideMenu();
	BOX_HideMenu();
	TAB_HideMenu();
	AJAX_SendRequest('./ajax/tab.php?selectTab&id=' + _iTabId);
}

function DB_deleteTab(_iTabDBId)
{
	TAB_HideMenu();
	LINK_HideMenu();
	BOX_HideMenu();
	AJAX_SendRequest('./ajax/tab.php?deleteTab&id=' + _iTabDBId);
	DB_responseDeleteTab(_iTabDBId);
}

function DB_responseDeleteTab(_iTabDBId)
{
	var tab = document.getElementById("myeasyfavtab");
	var children = tab.getElementsByTagName("SPAN");
	for (var i = 0; i < children.length; i++)
	{
		if (children[i].dbid == _iTabDBId)
		{
			// Remove div associated to the tab
			var tabContainer = document.getElementById("tab" + i);
			deleteColumns("tab" + i);
			tabContainer.parentNode.removeChild(tabContainer);
			// rename tabs
			// rename relName
			var spanList = document.getElementById("myeasyfavtab").getElementsByTagName("SPAN");
			var aList = document.getElementById("myeasyfavtab").getElementsByTagName("A");
			var liList = document.getElementById("myeasyfavtab").getElementsByTagName("LI");
			for (var j = i + 1; j < children.length; j++)
			{
				if (spanList[j].dbid != -1)
				{
					renameColumns("tab" + j, "tab" + (j - 1));
					document.getElementById("tab" + j).id = "tab" + (j - 1);
					liList[j].setAttribute("rel", "tab" + (j - 1));
					spanList[j].rel = "tab" + (j - 1);
					aList[j].rel = "tab" + (j - 1);
				}
			}

			children[i].parentNode.parentNode.removeChild(children[i].parentNode);
			tabArray.splice(i, 1);
			tabIndex--;

			var iTab = tabinterfaceElement.selectedtab - 1;
			if (iTab < 0)
				iTab = 0;
			tabinterfaceElement.reinitTab();
			tabArray[iTab].parentNode.id = "current";
			tabinterfaceElement.init();
			DB_selectTab(tabArray[iTab].dbid);
			return;
		}
	}
}

function initTabMenu()
{
	var iTab = tabinterfaceElement.selectedtab;
	if (iTab == -1)
		iTab = 0;
	tabTarget = tabArray[iTab].getElementsByTagName("A")[0];
}

// DRAG And Drop des onglets

function initDragDropTab(e)
{
	dragDropCounter = 1;
	if(document.all)e = event;

	if (e.target) source = e.target;
	else if (e.srcElement) source = e.srcElement;
	if (source.nodeType == 3) // defeat Safari bug
	source = source.parentNode;

	mouse_x = e.clientX;
	mouse_y = e.clientY;
	var numericId = this.id.replace(/[^0-9-]/g,'');
	el_x = getLeftPos(this.parentNode.parentNode)/1;
	el_y = getTopPos(this.parentNode.parentNode)/1 - document.body.scrollTop;

	dragObject = this.parentNode.parentNode;

	documentScrollHeight = document.documentElement.scrollHeight + 100 + dragObject.offsetHeight;

	if(dragObject.nextSibling){
		dragObjectNextSibling = dragObject.nextSibling;
		if(dragObjectNextSibling.tagName!='DIV')dragObjectNextSibling = dragObjectNextSibling.nextSibling;
	}
	dragObjectParent = dragableBoxesArray[numericId]['parentObj'];

	dragDropCounter = 0;
	initDragDropBoxTimer();
	closeAndSaveBoxTitle(false);
	document.body.style.MozUserSelect='none';
	LINK_HideMenu();
	BOX_HideMenu();
	return true;
}
function TAB_NewBoxFromMenu(e, inputObj)
{
	DB_addNewBox();
	TAB_HideMenu();
}
function TAB_RenameFromMenu(e, inputObj)
{
	if (tabTarget != null)
		Tab_RenameChangeContent(tabTarget.parentNode);	
}
function TAB_DeleteFromMenu(e, inputObj)
{
	if (tabTarget != null)
		Tab_DeleteMenuClick();	
}
function TAB_MoveLeftFromMenu(e, inputObj)
{
	if (tabTarget != null)
	{
		var li = tabTarget.parentNode.parentNode;
		var previous = null;
		var ulMain = document.getElementById("myeasyfavtab");
		var liList = ulMain.getElementsByTagName('li');
		for (var i = 0; i < liList.length; i++)
		{
			if (liList[i] == li)
			{
				if (i == 0)
				{
					// Pas possible c'est celui de gauche
					AW_Show(g_lang_tab_max_left, true);
					return;
				}
				previous = liList[i - 1];
				break;
			}
		}
		
		if (previous)
		{
			ulMain.removeChild(li);
			ulMain.insertBefore(li, previous);
			for (var i = 0; i < tabArray.length; i++)
			{
				if (tabArray[i].parentNode == li)
				{
					value = tabArray[i];
					tabArray[i] = tabArray[i - 1];
					tabArray[i - 1] = value;
					break;
				}
			}
			tabinterfaceElement.reinitTab();
			tabinterfaceElement.init();

			AJAX_SendRequest('./ajax/tab.php?moveLeft&id=' + tabTarget.parentNode.dbid);
			// Tab Position -1; moveLeft
			TAB_HideMenu();
		}
	}	
}
function TAB_MoveRightFromMenu(e, inputObj)
{
	if (tabTarget != null)
	{
		var li = tabTarget.parentNode.parentNode;
		if (li.nextSibling)
		{
			if (li.nextSibling.id == "tabAdd")
			{
				AW_Show(g_lang_tab_max_right, true);
				return;
			}
			var ulMain = document.getElementById("myeasyfavtab");
			var liNextSibling = li.nextSibling;
			ulMain.removeChild(liNextSibling);
			ulMain.insertBefore(liNextSibling, li);
			for (var i = 0; i < tabArray.length; i++)
			{
				if (tabArray[i].parentNode == li)
				{
					value = tabArray[i];
					tabArray[i] = tabArray[i + 1];
					tabArray[i + 1] = value;
					break;
				}
			}
			tabinterfaceElement.reinitTab();
			tabinterfaceElement.init();

			AJAX_SendRequest('./ajax/tab.php?moveRight&id=' + tabTarget.parentNode.dbid);
			TAB_HideMenu();
		}
	}
}


function 	TABS_Load()
{
	if (tabs_loading.length)
	{
		if (!tabs_currentLoad)
			tabs_currentLoad = tabs_loadingIds[0];
		
		eval(tabs_loading[0]);
		tabs_loading.shift();
		tabs_loadingIds.shift();
		COMMON_SetClass(document.getElementById(tabs_currentLoad).parentNode, "");
		if (tabs_loading.length != 0)
		{
			if (tabs_currentLoad != tabs_loadingIds[0])
			{
				COMMON_SetClass(document.getElementById(tabs_currentLoad).parentNode, "");
				document.getElementById(tabs_currentLoad).getElementsByTagName("A")[0].setAttribute('id', "");
				/*var img = document.getElementById(tabs_currentLoad).getElementsByTagName("IMG")[0];
				if (img)
				{
					img.parentNode.removeChild(img);
				}*/
			}
			tabs_currentLoad = tabs_loadingIds[0];
			setTimeout(TABS_Load, 30);
		}
		else
		{
			if (tabs_currentLoad)
			{
				COMMON_SetClass(document.getElementById(tabs_currentLoad).parentNode, "");
				document.getElementById(tabs_currentLoad).getElementsByTagName("A")[0].setAttribute('id', "");
				/*var img = document.getElementById(tabs_currentLoad).getElementsByTagName("IMG")[0];
				if (img)
				{
					img.parentNode.removeChild(img);
				}*/
			}
			// Loading successful
			for (var i = 0; i < tabs_names.length; i++)
			{
				var imgList = document.getElementById(tabs_names[i]).getElementsByTagName("IMG");
				for (var j = 0; j < imgList.length; j++)
				{
					var img = imgList[j];
					/*if (img.id == "loading_tab")
					{
						document.getElementById(tabs_names[i]).getElementsByTagName("A")[0].setAttribute('id', "");
						img.parentNode.removeChild(img);
					}*/
				}
				COMMON_SetClass(document.getElementById(tabs_names[i]).parentNode, "");
			}
			AW_Show(g_lang_page_loaded, false);
			initLightbox();
			initLightboxForVideo();
			initLightboxForComments();
			registerCard("floatingFriendsContainer");
		}
	}
	else
	{
		// Loading successful
		for (var i = 0; i < tabs_names.length; i++)
		{
			var imgList = document.getElementById(tabs_names[i]).getElementsByTagName("IMG");
			for (var j = 0; j < imgList.length; j++)
			{
				var img = imgList[j];
				/*if (img.id == "loading_tab")
				{
					document.getElementById(tabs_names[i]).getElementsByTagName("A")[0].setAttribute('id', "");
					img.parentNode.removeChild(img);
				}*/
				COMMON_SetClass(document.getElementById(tabs_names[i]).parentNode, "");
			}
		}
		AW_Show(g_lang_page_loaded, false);
		initLightbox();
		initLightboxForVideo();
		initLightboxForComments();
		registerCard("floatingFriendsContainer");
	}
}

function TAB_GetMainComponent(target)
{
	if (!target)
		return null;
	if (target.nodeName != "LI")
	{
		if (target.nodeName == "SPAN")
			target = target.parentNode;
		else
			target = target.parentNode.parentNode;
	}
	return target;
}
