gCurTimer = "";
var gTargetTab;
gFamPg_bRefreshCal = false;

function changeTab(targetDiv, crvClass, effect) {      
    if (calBoard != null) {
        if (targetDiv != "famCalDiv") {
            calBoard.ignoreEvents = true; // ignore calander mouse over events while in transition
        }
        else {
            calBoard.ignoreEvents = false;
        }
    }
    var elem = $(targetDiv);
    //if frame is showing something else then change it
    if (elem.style.visibility != 'visible') {
        $("tctb").className = crvClass;                    
        $("tctb_crb2").className = "crb2 " + crvClass;                    
        $("tctb_crb3").className = "crb3 " + crvClass;                    
        $("tctb_crb4").className = "crb4 " + crvClass;                    
        $("tcbb").className = crvClass;
        $("tcbb_crb2b").className = "crb2b " + crvClass;                    
        $("tcbb_crb3b").className = "crb3b " + crvClass;                    
        $("tcbb_crb4b").className = "crb4b " + crvClass;                    
        
        elem.style.visibility = 'visible';
        
        gTargetTab = targetDiv;
        
        /* //Sticky tabs
        var ck = new $Ck();
        if (ck.accepts()) {
            ck.set("famPageTab", targetDiv);
        }
        */
        var duration = 1;
        if (!effect) {
            duration = 0;
        }
        //Note tab z-Index order is (top) Photo, (middle) Cal, and (bottom) Tree. Fading need to be controlled by tab that is higher up in z-order.
        
        var fadingAnim;
        if (targetDiv == "famPhotoDiv") {
            fadingAnim = new YAHOO.util.Anim("famPhotoDiv", { opacity: {to: 1 } }, duration);
        }
        else if ($("famPhotoDiv").style.visibility == 'visible') { //i.e. current active div is photoDiv
            fadingAnim = new YAHOO.util.Anim("famPhotoDiv", { opacity: {to: 0 } }, duration);
            if (targetDiv == "famCalDiv") {
                fadingAnim2 = new YAHOO.util.Anim("famCalDiv", { opacity: {to: 1 } }, 0);
                fadingAnim2.animate();
            }
        }
        else if (targetDiv == "famCalDiv") {
            fadingAnim = new YAHOO.util.Anim("famCalDiv", { opacity: {to: 1 } }, duration);
        }
        else if ($("famCalDiv").style.visibility == 'visible') { //i.e. current active div is famCalDiv
            fadingAnim = new YAHOO.util.Anim("famCalDiv", { opacity: {to: 0 } }, duration);
        }
        else {
            //it should never come here..
        }
        fadingAnim.onComplete.subscribe(onTabAnimComplete);
        fadingAnim.animate();   

        //hide popin frame if visible
        gPopinFrame.hide();
        hidePopin("famtreeToolbar");
        hidePopin("calCellPopin");
        
    }
}

function onTabAnimComplete() {
    //hide other tabs
    if ("famPhotoDiv" != gTargetTab) {
        $("famPhotoDiv").style.visibility = 'hidden';
    }
    else {
        //start slideTimer
        startPhotoSlideTimer();
    }
    
    if ("famCalDiv" != gTargetTab) {
        $("famCalDiv").style.visibility = 'hidden';
    }
    if ($("famCalDiv").style.visibility == 'visible') {
        if (calBoard != null) {
            calBoard.ignoreEvents = false;
        }
    }
    
    if ("famTreeDiv" != gTargetTab) {
        $("famTreeDiv").style.visibility = 'hidden';
    }
    else {
        try {
            gFamTree.autoToolbar();
        } catch(ex) {
            //ignore it
        }
    }

    if (gFamPg_bRefreshCal && gTargetTab == "famCalDiv") {
        calBoard.reloadCalendar(0);
        gFamPg_bRefreshCal = false;
    }

}

function onMouseOverTab(targetDiv, crvClass) {
    //alert("over");
    gCurTimer = window.setTimeout("changeTab('" + targetDiv + "', '" + crvClass + "', true)", 500);
}

function onMouseOutTab() {
    clearTimeout(gCurTimer);
}
        
function startPhotoSlideTimer() {
    if (famPhotoCount > 1) {
        setTimeout(photoSlide, 10000);
    }
}
function photoSlide() {
    //If photo div is visible then only change image
    if ($("famPhotoDiv").style.visibility != 'hidden') {
        $("famPhoto").src = famPhotos[Math.floor(Math.random() * 100) % famPhotoCount];
        startPhotoSlideTimer();
    }
}

function ftAddPersonListener() {
    //listener that a new person is added in the tree. Meaning calander will have to be refreshed.
    gFamPg_bRefreshCal = true;
}