//
//Author: dper4mer@yahoo.com (c) 2007
//Company: www.Jump2top.com
//

var gUIds = new Array(); var gTabHandle = new Object(); var gPageHandle = new Object(); var gIDCount = 0; var gPreviousID = 0; var gActiveTab = new Object(); var gRightTab = new Object(); var gActivePage = new Object(); var gTabStatus = new Array(); var gClosable = new Array(); var gTabHandleWidth = 0; var gLastI = 1; var gMaxTab = 14; var gPrevAutoCloseID = 0; var gCloseTabLen = 0; var gMaxTitleLen = 0; var gPrevCmd = ""; var gHomePid = "";  function gInitTabPage(tab_handle,page_handle,emptyhandle) { 	var otc = document.createElement("div"); 	var tc = document.createElement("div"); 	var lm = document.createElement("span"); 	var rm = document.createElement("span"); 	var ctab = document.createElement("span"); 	var gTabHandle_Tmp = document.getElementById(tab_handle); 	gPageHandle = document.getElementById(page_handle);		 	gTabHandleWidth = gTabHandle_Tmp.offsetWidth; 	tc.className = "gTabInnerStyle"; 	otc.className = "gTabHandleStyle"; 	lm.innerHTML = '&nbsp;<span id="btn_scroll" class="BtnScrollEnactive"><a href="#" class="BtnCloseStyle">&laquo;</a> <a href="#" class="BtnCloseStyle">&raquo;</a></span>'; 	lm.className = "Tab_LM_Style"; 	rm.innerHTML = gRepChar("&nbsp;",Math.floor(gTabHandle_Tmp.offsetWidth)); 	rm.className = "Tab_RM_Style"; 	tc.appendChild(lm); 	tc.appendChild(ctab); 	tc.appendChild(rm);		 	tc.id = "inner_handle"; 	otc.appendChild(tc); 	otc.id = "outer_handle"; 	gTabHandle_Tmp.appendChild(otc); 	gTabHandle = ctab; 	if(emptyhandle) 	gPageHandle.innerHTML = ""; }  function gSetTabVisibility() { 	var oh = document.getElementById("outer_handle"); 	if(gActiveTabCount()>1) { 		oh.style.display = ""; 	} else { 		oh.style.display = "none"; 	}	 }  function gAddTabPage(id,title,url,param,closable,firstpage) { 	var fid = gFindTabPageId(id); 	var tab = document.createElement("span"); 	var href = document.createElement("a"); 	var page = document.createElement("div");  	if(fid) { 		gTabStatus[fid] = 1;	 		gActivateTabPage(fid); 		return; 	} 	gPreviousID = gIDCount; 	gIDCount++; 	if(id=="FRONTPAGE") gHomePid = "gpage."+gIDCount; 	gUIds[gIDCount] = id; 	gTabStatus[gIDCount] = 1; 	gClosable[gIDCount] = closable; 	if (title.length>gMaxTitleLen) gMaxTitleLen  = title.length; 	tab.innerHTML = '<span title="'+title+'" id="tab_caption'+gIDCount+'">'+title+'&nbsp;</span>'; 	tab.title = title; 	tab.className = "ActiveTabStyle"; 	tab.id = "gtab."+gIDCount; 	tab.onclick = function() { 		gActivateTabPage(tab.id.split(".")[1]); 	}; 	href.id = "link."+gIDCount; 	href.title = "Close"; 	href.href = "#"; 	href.innerHTML = "x"; 	href.className = "BtnCloseStyle"; 	href.onclick = function() { 		gPrevCmd = "x"; 		gCloseTabPage(href.id.split(".")[1]); 	}; 	if(closable) tab.appendChild(href); 	page.id = "gpage."+gIDCount; 	page.className = "ActivePageStyle";	 	if(firstpage) { 		page.innerHTML = gPageHandle.innerHTML; 		gPageHandle.innerHTML = ""; 	} else { 		page.innerHTML = "Loading page..."+gIDCount; 	} 	if(gActiveTab) gActiveTab.className = "EnactiveTabStyle"; 	if(gActivePage) gActivePage.className = "EnactivePageStyle"; 	gActiveTab = tab; 	gActivePage = page;	 	gTabHandle.appendChild(tab); 	gPageHandle.appendChild(page); 	gSetTabVisibility(); 	gAutoCloseTab(); 	gAdjTabWidth();	 	if(gRightTab) { 		if(gRightTab.id) 		if(gTabStatus[gRightTab.id.split(".")[1]]) 		gRightTab.className = "EnactiveTabStyle"; 	} 	if(url!="")	{ 		if(typeof(id)!="number") {	 			if(id.indexOf("New Story")==0) gPageLoad_Story(url, param, page.id, ""); 			else if(id.indexOf("Edit Story")==0) gPageLoad_Story(url, param, page.id, id.split("Edit Story")[1]); 			else gPageLoad(url, param, page.id); 		} else { 			gPageLoad(url, param, page.id); 		}; 	}; }  function gActivateTabPage(id) { 	if(gTabStatus[id]==0 || !gTabStatus[id]) { 		return; 	} 	var te = document.getElementById("gtab."+id); 	var rte = document.getElementById("gtab."+(Math.floor(id)+1)); 	var pe = document.getElementById("gpage."+id); 	if(te.id == gActiveTab.id) { 		return; 	} 	gPreviousID = gActiveTab.id.split(".")[1]; 	if(gTabStatus[gPreviousID]==1) { 		gActiveTab.className = "EnactiveTabStyle"; 		gActivePage.className = "EnactivePageStyle";	 	} 	if(gRightTab) { 		if(gRightTab.id) 		if(gTabStatus[gRightTab.id.split(".")[1]]) 		gRightTab.className = "EnactiveTabStyle"; 	}  	var i2 = Math.floor(id)+1; 	for(var i=i2;i<=gIDCount;i++) { 		if(gTabStatus[i]) { 			gRightTab = document.getElementById("gtab."+i); 			if(gRightTab.id) 			if(gTabStatus[gRightTab.id.split(".")[1]]) 			gRightTab.className = "EnactiveTabStyle2";			 			break; 		} 	}  	te.className = "ActiveTabStyle"; 	pe.className = "ActivePageStyle";	 	gActiveTab = te; 	gActivePage = pe; 	gAutoCloseTab(); 	gAdjTabWidth();	 	gSetTabVisibility(); }  function gCloseTabPage(id) { 	gTabStatus[id] = 0; 	var te = document.getElementById("gtab."+id); 	var pe = document.getElementById("gpage."+id);	 	te.className = "HideTabStyle"; 	pe.className = "EnactivePageStyle"; 	if(te.id == gActiveTab.id) { 		var i2 = Math.floor(id)-1; 		for(var i=i2;i>0;i--) { 			if(gTabStatus[i]==1) {  				gActivateTabPage(i); 				break; 			} 		} 	}	 	if(gActiveTabCount()>1) 	gIncTabTitle(1); 	gSetTabVisibility(); }  function gCloseTabPage2(id) { 	gTabStatus[id] = 0; 	var te = document.getElementById("gtab."+id); 	var pe = document.getElementById("gpage."+id);	 	te.className = "HideTabStyle"; 	pe.className = "EnactivePageStyle"; 	gPreviousID=1; }  function gAutoCloseTab() { 	while(gIsMaxTab()) { 		if(gPrevAutoCloseID==0) gPrevAutoCloseID=2;  		else gPrevAutoCloseID++; 		while(gTabStatus[gPrevAutoCloseID]==0) { 			gPrevAutoCloseID++; 		} 		gCloseTabPage2(gPrevAutoCloseID); 		gCloseTabLen = document.getElementById("gtab."+gPrevAutoCloseID).innerHTML.length; 	}	 	if(gPrevAutoCloseID==gIDCount) gPrevAutoCloseID=2;  }  function gIsMaxTab() { 	var isMax = false; 	var nact = 0; 	for(var i=1;i<=gIDCount;i++) { 		if(gTabStatus[i] > 0) nact++;	 	} 	if(nact==gMaxTab) isMax = true;  	return isMax; }  function gActiveTabCount() { 	var nact = 0; 	for(var i=1;i<=gIDCount;i++) { 		if(gTabStatus[i] > 0) nact++;	 	} 	return nact; }  function gFindTabPageId(id) { 	for(i=0;i<gUIds.length;i++) { 		if(gUIds[i]==id) { 			return i; 		} 	} 	return false; }  function gTabContWidth() { 	var tlen = 0; 	for(var i=1;i<=gIDCount;i++) { 		var t = document.getElementById("gtab."+i); 		if(gTabStatus[i]!=0) { 			tlen+=Math.floor(t.offsetWidth); 		} 	} 	return tlen; }  function gIncTabTitle(nchar) { 	var isexit = false; 	var winc = 25; 	while(!isexit) { 		var modified = true; 		gMaxTitleLen+=nchar; 		for(var i=2;i<=gIDCount;i++) { 		  if(gTabStatus[i] == 1) { 			var t = document.getElementById("tab_caption"+i); 			var ntitle = t.title.substr(0,gMaxTitleLen); 			if(t.title.length < gMaxTitleLen) { 				modified = false; 			} 			t.innerHTML = ntitle+'&nbsp;'; 		  } 		  if(gTabContWidth()+winc>gTabHandleWidth) { 			isexit = true; 			break; 		  } 		}	 		if(!modified) { 			isexit = true; 			break;			 		}		 		if(isexit) break; 	} }  function gTrimTabTitle(nchar) { 	var winc = 15; 	while(gTabContWidth()+winc>gTabHandleWidth) { 		var isexit = true; 		gMaxTitleLen-=nchar; 		for(var i=1;i<=gIDCount;i++) { 		  if(gTabStatus[i] == 1) { 			var t = document.getElementById("tab_caption"+i); 			var ntitle = t.title.substr(0,gMaxTitleLen); 			if(ntitle.length>1 && i>1) { 				t.innerHTML = ntitle+'&nbsp;'; 				isexit = false; 			}  		  } 		}	 		if(isexit) break; 	} }  function gTrimTabTitle2(nchar) { 	var winc = 15; 	while(gTabContWidth()+winc>gTabHandleWidth) { 		if(gLastI>=gIDCount) gLastI = 1; 		if(gLastI==1) { var isexit = true; } 		for(var i=gLastI;i<=gIDCount;i++) { 		  if(gTabStatus[i] == 1) { 			var t = document.getElementById("tab_caption"+i); 			var ntitle = t.innerHTML.substr(0,t.innerHTML.length-(nchar+6)); 			if(ntitle.length>1 && i>1) { 				t.innerHTML = ntitle+'&nbsp;'; 				isexit = false; 			}  			gLastI = i+1; 			if(gTabContWidth()+winc<gTabHandleWidth) { 				break; 			} 		  } 		}	 		if(isexit) break; 	} }  function gAdjTabWidth() { 	if(gTabContWidth()>gTabHandleWidth) { 		gTrimTabTitle(1); 	} }  function gToggleScrollBtn() { 	var se = document.getElementById("btn_scroll"); 	if(gTabContWidth()+20>gTabHandleWidth) { 		se.className = "BtnScrollActive"; 	} else { 		se.className = "BtnScrollEnactive"; 	} }  function gRepChar(ch,cnt) { 	var rstr = ""; 	for(var i=0;i<cnt;i++) { 		rstr += "&nbsp;"; 	} 	return rstr; }  function gAdjTabPos() { 	var innerh = document.getElementById("inner_handle"); 	var toff = Math.floor(gActiveTab.offsetLeft)+Math.floor(gActiveTab.offsetWidth); 	var diff = toff - gTabHandleWidth; 	if(diff > 0) { 		innerh.left = Math.floor(innerh.offsetLeft)-diff; 		alert(toff+" = "+gTabHandleWidth); 	} }
