//changes done by Renuka to show tooltip

var isNetscape = ( navigator.appName == "Netscape" );

var pageBegin
var pageEnd

pageBegin = '<table width="100%" cellspacing="0" cellpadding="0" border="0"><tr><td class="lefttop" width="10px" height="10px"></td><td class="horizontaltop" height="10px"></td><td class="righttop" width="10px" height="10px"></td></tr>';
pageBegin += '<tr><td class="leftvertical" width="10px"></td><td>';

pageEnd = '</td><td class="rightvertical" width="10px"></td></tr>';
pageEnd += '<tr><td class="leftbottom" width="10px" height="10px"></td><td class="horizontalbottom" height="10px"></td><td class="rightbottom" width="10px" height="10px"></td></tr></table>';


function writeAndCloseAt( div, x, y, text ) {
div.style.left = x;
div.style.top  = y;
div.innerHTML = text;
}

function showHelp( HelpText, e, e1){

	x = isNetscape ? e.pageX + window.scrollX: e.clientX + document.documentElement.scrollLeft + document.body.scrollLeft - 45;
  //y = isNetscape ? e.pageY + window.scrollY: (ie5)?e.clientY + document.documentElement.scrollTop - 150 :e.clientY + document.documentElement.scrollTop + document.body.scrollTop;
	y = isNetscape ? e.pageY + window.scrollY: (ie5)?e.clientY + document.documentElement.scrollTop - 215 :e.clientY + document.documentElement.scrollTop;

//alert('y 1:' + y + ' : ' + (e.clientY) + ' : ' + (e.clientY + document.documentElement.scrollTop + document.documentElement.scrollTop) + ' ; ' + (document.documentElement.scrollTop));
	HelpTextHTML = "<TABLE CELLPADDING=3 CELLSPACING=0 BORDER=1 BGCOLOR=white><TR><TD CLASS=regular><b>" + HelpText + "</b></TD></TR></TABLE>";
//alert('in showHelp 2: ' + HelpTextHTML);
	if( isNetscape ) {	
		
	newToolTipElement('tooltip');
    var ToolTipNew = document.getElementById('tooltip');
	ToolTipNew.innerHTML = HelpTextHTML
	ToolTipNew.style.display = '';
    ToolTipNew.style.position = 'absolute';
	document.onmousemove = getToolTipMousePosition;
	}
	else {
//alert('in showHelp 3: ' + x + ' : ' + y);
		HelpWindow.style.pixelLeft   = x + 10;
		HelpWindow.style.pixelTop    = y + 10;
		HelpWindow.innerHTML         = HelpTextHTML;
	} 
} 

function eraseHelp(e1){
if( isNetscape ) {
ToolTipExit();
}
else {
HelpWindow.innerHTML = "";
}
}

var offsetx = 15;
var offsety = 10;
var ie5 = (document.getElementById && document.all); 
var ns6 = (document.getElementById && !document.all); 
var ua = navigator.userAgent.toLowerCase();
var isapple = (ua.indexOf('applewebkit') != -1 ? 1 : 0);

function getToolTipMousePosition(evt){
	//alert('in getToolTipMousePosition: ' + evt.x);
    if(document.getElementById){
		
        var iebody=(document.compatMode && document.compatMode != 'BackCompat') ? 
        		document.documentElement : document.body;
        pagex = (isapple == 1 ? 0:(ie5)?iebody.scrollLeft:window.pageXOffset);
        pagey = (isapple == 1 ? 0:(ie5)?iebody.scrollTop:window.pageYOffset);
        mousex = (ie5)?event.x:(ns6)?clientX = evt.clientX:false;
        mousey = (ie5)?event.y:(ns6)?clientY = evt.clientY:false;

        var ToolTipNew = document.getElementById('tooltip');

		if ((mousex+offsetx+ToolTipNew.clientWidth+5) > document.body.clientWidth) {
		ToolTipNew.style.left = ((document.body.scrollLeft+document.body.clientWidth) - (ToolTipNew.clientWidth*2));
		}

		else { ToolTipNew.style.left = (mousex+pagex+offsetx); }

		if ((mousey+offsety+ToolTipNew.clientHeight+5) > document.body.clientHeight) {
		ToolTipNew.style.top = ((document.documentElement.scrollTop+document.body.clientHeight) - (ToolTipNew.clientHeight*2));
		}

		else { ToolTipNew.style.top = (mousey+pagey+offsety); } 
	
    }
	
}

function newToolTipElement(newid){ 

    if(document.createElement){ 
        var el = document.createElement('div'); 
        el.id = newid;     
        with(el.style)
        { 
            display = 'none';
            position = 'absolute';
        } 
        el.innerHTML = '&nbsp;'; 
        document.body.appendChild(el); 
    } 
} 

function ToolTipCreate(ToolTipText){

    if(!document.getElementById('tooltip')) newToolTipElement('tooltip');
    var ToolTipNew = document.getElementById('tooltip');
    ToolTipNew.innerHTML = '<TABLE CELLPADDING=3 CELLSPACING=0 BORDER=1 BGCOLOR=white><TR><TD CLASS=regular><b>' + ToolTipText + '</b></TD></TR></TABLE>';
    ToolTipNew.style.display = '';
    ToolTipNew.style.position = 'absolute';
    ToolTipNew.style.filter = 'progid:DXImageTransform.Microsoft.Alpha(Opacity=70) progid:DXImageTransform.Microsoft.dropshadow(OffX=5, OffY=5, Color=gray, Positive=true)';
    document.onmousemove = getToolTipMousePosition;

}



function ToolTipExit(){

    document.getElementById('tooltip').style.display = 'none';

}


//changes end


var bustcachevar=1 //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadstatustext="<img src='/system/ajaxtabs/loading.gif' /> Requesting content..."
var enabletabpersistence=0 //enable tab persistence via session only cookies, so selected tab is remembered (1=yes, 0=no)?

////NO NEED TO EDIT BELOW////////////////////////
var loadedobjects=""
var defaultcontentarray=new Object()
var bustcacheparameter=""

function ajaxpage(url, containerid, targetobj, subcontainerid){
//debugger;
var page_request = false
if (window.XMLHttpRequest) // if Mozilla, IE7, Safari etc
page_request = new XMLHttpRequest()
else if (window.ActiveXObject){ // if IE
try {
page_request = new ActiveXObject("Msxml2.XMLHTTP")
} 
catch (e){
try{
page_request = new ActiveXObject("Microsoft.XMLHTTP")
}
catch (e){}
}
}
else
return false
var ullist=targetobj.parentNode.parentNode.getElementsByTagName("li")
for (var i=0; i<ullist.length; i++)
ullist[i].className=""  //deselect all tabs
targetobj.parentNode.className="selected active"  //highlight currently clicked on tab
//debugger;
if (url.indexOf("#default")!=-1) { //if simply show default content within container (verus fetch it via ajax)
if (url.indexOf("|")==-1 && url.indexOf("~")==-1){
//if (defaultcontentarray[containerid].indexOf(pageBegin) >= 0)
	document.getElementById(containerid).innerHTML= defaultcontentarray[containerid];
/*else
	document.getElementById(containerid).innerHTML= pageBegin + defaultcontentarray[containerid] + pageEnd;*/

var inHTML = document.getElementById(containerid).innerHTML;

if (inHTML.indexOf('</td><td class="rightvertical"') < 0)
{
//alert('in ajaxtabs replace');
	if (inHTML.indexOf('<td class="lefttop"') < 0)
	{
		inHTML = pageBegin + inHTML + pageEnd;
		document.getElementById(containerid).innerHTML = inHTML;
	}else
	{
		inHTML = inHTML.replace('<td class="rightvertical"', '</td><td class="rightvertical"');
		document.getElementById(containerid).innerHTML = inHTML;
	}
}

return
}
}
document.getElementById(containerid).innerHTML=loadstatustext
page_request.onreadystatechange=function(){
loadpage(page_request, containerid, subcontainerid)
}
if (bustcachevar) //if bust caching of external page
bustcacheparameter=(url.indexOf("?")!=-1)? "&"+new Date().getTime() : "?"+new Date().getTime()
page_request.open('GET', url+bustcacheparameter, true)
page_request.send(null)
}

function parseResponseText(responseText)
{
	if (responseText.indexOf('<!-- #default begins here -->') > 0 && responseText.indexOf('<div id="ajaxcontentarea"') > 0)
	{
		//we are in the "default" tab where we are re-querying the server instead of simply copying from saved default contents
		var defaultStartPos = responseText.indexOf('<!-- #default begins here -->');
		var defaultLength = responseText.length - defaultStartPos - 1;

		if (responseText.indexOf('<!-- #default ends here -->') > 0)
		{
			defaultLength = responseText.indexOf('<!-- #default ends here -->') - defaultStartPos
		}
		var returnText = responseText.substr(defaultStartPos, defaultLength);
		return returnText;
	}else
	{
		return responseText;
	}
}

function loadpage(page_request, containerid, subcontainerid){
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
	//document.getElementById(containerid).innerHTML= pageBegin + page_request.responseText + pageEnd;
	document.getElementById(containerid).innerHTML= parseResponseText(page_request.responseText);
if (document.getElementById(subcontainerid)!=null)
startajaxtabs(subcontainerid)
}

var inHTML = document.getElementById(containerid).innerHTML;
if (inHTML != 'NULL' && inHTML.indexOf('Requesting content') < 0 && inHTML.indexOf('</td><td class="rightvertical"') < 0)
{
//alert('in ajaxtabs replace');
	if (inHTML.indexOf('<td class="lefttop"') < 0)
	{
		inHTML = pageBegin + inHTML + pageEnd;
		document.getElementById(containerid).innerHTML = inHTML;
	}else
	{
		inHTML = inHTML.replace('<td class="rightvertical"', '</td><td class="rightvertical"');
		document.getElementById(containerid).innerHTML = inHTML;
	}
}
}

function loadobjs(revattribute){
if (revattribute!=null && revattribute!=""){ //if "rev" attribute is defined (load external .js or .css files)
var objectlist=revattribute.split(/\s*,\s*/) //split the files and store as array
for (var i=0; i<objectlist.length; i++){
var file=objectlist[i]
var fileref=""
if (loadedobjects.indexOf(file)==-1){ //Check to see if this object has not already been added to page before proceeding
if (file.indexOf(".js")!=-1){ //If object is a js file
fileref=document.createElement('script')
fileref.setAttribute("type","text/javascript");
fileref.setAttribute("src", file);
}
else if (file.indexOf(".css")!=-1){ //If object is a css file
fileref=document.createElement("link")
fileref.setAttribute("rel", "stylesheet");
fileref.setAttribute("type", "text/css");
fileref.setAttribute("href", file);
}
}
if (fileref!=""){
document.getElementsByTagName("head").item(0).appendChild(fileref)
loadedobjects+=file+" " //Remember this object as being already added to page
}
}
}
}

function expandtab(tabcontentid, tabnumber,pagenum,order){ //interface for selecting a tab (plus expand corresponding content)

var thetab=document.getElementById(tabcontentid).getElementsByTagName("a")[tabnumber]
if(thetab.href.indexOf("#default")>0 && tabnumber == 0)
{
	var ref = thetab.getAttribute("href").split("#");
	thetab.href = ref[0];
}
if (thetab.getAttribute("rel")){
  if (order == '')
	{	
		if ((thetab.href.indexOf("~")>0) && (thetab.href.indexOf("|")>0))
			{ 
				if ((thetab.href.indexOf("~")) > (thetab.href.indexOf("|")))
				{
					var hrefbase = thetab.getAttribute("href").split("|");
					var hrefadd = hrefbase[1].split("~");
					thetab.href = hrefbase[0] +'|'+ pagenum + '~' + hrefadd[1];
				}
				else
				{
					var hrefbase = thetab.getAttribute("href").split("~");
					var hrefadd = hrefbase[1].split("|");
					thetab.href = hrefbase[0] +'|'+ pagenum + '~' + hrefadd[0];
				}
			} 
		else
			{
				if (thetab.href.indexOf("|")>0)
				{
					var href = thetab.getAttribute("href").split("|");
					thetab.href = href[0] +'|'+pagenum; 
				}
				else
				{
					thetab.href = thetab.getAttribute("href")+'|'+pagenum; 
				}
			}
	}
  else
	{
	if (thetab.href.indexOf("~")>0)
		{
			var href = thetab.getAttribute("href").split("~");
			thetab.href = href[0] +'~'+order; 
		}
	else
		{
			thetab.href = thetab.getAttribute("href")+'~'+order;
		}
	}
/*if(ref[1].length > 0 && tabnumber == 0)
{
	thetab.href = thetab.getAttribute("href") +'#'+ ref[1];
}*/
ajaxpage(thetab.getAttribute("href"), thetab.getAttribute("rel"), thetab);
loadobjs(thetab.getAttribute("rev"));
}
}

function savedefaultcontent(contentid){// save default ajax tab content
	if (typeof defaultcontentarray[contentid]=="undefined") //if default content hasnt already been saved
	{	
		defaultcontentarray[contentid]= document.getElementById(contentid).innerHTML;
	}
	/*if (defaultcontentarray[contentid].indexOf(pageBegin) < 0)
	{
		var innHTML = document.getElementById(contentid).innerHTML;
		if (innHTML != 'NULL' && innHTML.indexOf('Requesting content') < 0 && innHTML.indexOf('</td><td class="rightvertical"') < 0)
		{
		//alert('in ajaxtabs replace');
			if (innHTML.indexOf('<td class="lefttop"') < 0)
			{
				innHTML = pageBegin + innHTML + pageEnd;
				document.getElementById(contentid).innerHTML = innHTML;
			}else
			{
				innHTML = innHTML.replace('<td class="rightvertical"', '</td><td class="rightvertical"');
				document.getElementById(contentid).innerHTML = innHTML;
			}
		}
		defaultcontentarray[contentid]= document.getElementById(contentid).innerHTML;
	}*/
	
}

function startajaxtabs(){
for (var i=0; i<arguments.length; i++){ //loop through passed UL ids
var ulobj=document.getElementById(arguments[i])
var ulist=ulobj.getElementsByTagName("li") //array containing the LI elements within UL
var persisttabindex=(enabletabpersistence==1)? getCookie(arguments[i]) : "" //get index of persisted tab (if applicable)
var isvalidpersist=(persisttabindex<ulist.length)? true : false //check if persisted tab index falls within range of defined tabs
for (var x=0; x<ulist.length; x++){ //loop through each LI element
var ulistlink=ulist[x].getElementsByTagName("a")[0]
ulistlink.index=x
if (ulistlink.getAttribute("rel")){
var modifiedurl=ulistlink.getAttribute("href").replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
ulistlink.setAttribute("href", modifiedurl) //replace URL's root domain with dynamic root domain, for ajax security sake
savedefaultcontent(ulistlink.getAttribute("rel")) //save default ajax tab content
ulistlink.onclick=function(){
//var enabletabpersistence=(url.indexOf("external")!=-1)? 1 : 0
enabletabpersistence=1;
ajaxpage(this.getAttribute("href"), this.getAttribute("rel"), this, ulistlink.getAttribute("subtabid"))
loadobjs(this.getAttribute("rev"))
saveselectedtabindex(this.parentNode.parentNode.id, this.index)
return false
}

//if (ulist[x].className=="selected" && modifiedurl.indexOf("#default")==-1){
if ((enabletabpersistence==1 && persisttabindex<ulist.length && x==persisttabindex) || (enabletabpersistence==1 && persisttabindex=="" && ulist[x].className=="selected") || (enabletabpersistence==0 && ulist[x].className=="selected")){
ajaxpage(ulistlink.getAttribute("href"), ulistlink.getAttribute("rel"), ulistlink, ulistlink.getAttribute("subtabid")) //auto load currenly selected tab content
loadobjs(ulistlink.getAttribute("rev")) //auto load any accompanying .js and .css files
}
/*else if (ulist[x].className=="selected active" && modifiedurl.indexOf("#default") >= 0) {
	var inHTML = document.getElementById(ulistlink.getAttribute("rel")).innerHTML;
	inHTML = pageBegin + inHTML + pageEnd;
	document.getElementById(ulistlink.getAttribute("rel")).innerHTML = inHTML;
}
*/
}
}
}
}


////////////Persistence related functions//////////////////////////

function saveselectedtabindex(ulid, index){ //remember currently selected tab (based on order relative to other tabs)
if (enabletabpersistence==1) //if persistence feature turned on
setCookie(ulid, index)
}

function getCookie(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 ""
}

function setCookie(name, value){
document.cookie = name+"="+value //cookie value is domain wide (path=/)
}
