//Change Log:
//* Updated: July 11th, 07: Fixed bug with persistence not working. Doh.
//* Updated: July 9th, 07: Added session only persistence to tabs (set "enabletabpersistence" var below). Only .js file changed.
//* Updated Nov 8th, 06. Ability to select a tab dynamically, by calling a method (ie: via a link). Only .js file changed.

var port = "5052";
var bustcachevar=0; //bust potential caching of external pages after initial request? (1=yes, 0=no)
var loadstatustext="<img src='images/loading.gif' /> Requesting content please wait...";
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) {
    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";  //highlight currently clicked on tab
    if (url.indexOf("#default")!=-1) { //if simply show default content within container (verus fetch it via ajax)
        //document.getElementById(containerid).innerHTML=defaultcontentarray[containerid];
        replaceContainer(containerid, defaultcontentarray[containerid]);
        return;
    }
 
    //document.getElementById(containerid).innerHTML=loadstatustext;
    replaceContainer(containerid, loadstatustext);
    page_request.onreadystatechange=function() {
        loadpage(page_request, containerid);
    }
    page_request.open('GET', url, true);
    page_request.send(null);
}

function loadpage(page_request, containerid){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
        try {            
            var from = page_request.responseText.indexOf("<span id=\"lblView\">");
            var to = page_request.responseText.indexOf("<span class=\"endtext\"></span>");
            var responseText = page_request.responseText.substring(from, to);
            //document.getElementById(containerid).innerHTML= responseText;
            replaceContainer(containerid, responseText);
        } catch(e){
            //document.getElementById(containerid).innerHTML= "";
            replaceContainer(containerid, "");
        }
    }
}

function savedefaultcontent(contentid){// save default ajax tab content
     if (typeof defaultcontentarray[contentid]=="undefined") //if default content hasn't already been saved
            defaultcontentarray[contentid]=document.getElementById(contentid).innerHTML;
}

function startajaxtabs(){
    containerheight = null;
    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)? parseInt(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")) {
                savedefaultcontent(ulistlink.getAttribute("rel")); //save default ajax tab content
                ulistlink.onclick=function() {
                    ajaxpage(this.getAttribute("href"), this.getAttribute("rel"), this);
                    return false;
                }
                
                if ((enabletabpersistence==1 && persisttabindex<ulist.length && x==persisttabindex) || (enabletabpersistence==0 && ulist[x].className=="selected")){
                    ajaxpage(ulistlink.getAttribute("href"), ulistlink.getAttribute("rel"), ulistlink); //auto load currenly selected tab content
                }
            }
        }
    }
}

////////////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=/)
}

function replaceContainer(containerid, content) {
    var el = document.getElementById(containerid);
    el.innerHTML = content;
    if (containerheight == null || el.scrollHeight > containerheight) {
        containerheight = el.scrollHeight;
        el.style.minHeight = containerheight;
    }
}

var containerheight;
