var NAVIGATION_CURRENT_ACTIVE_DIVPAGE;
var NAVIGATION_PREVIOUS_ACTIVE_DIVPAGE;
var NAVIGATION_ENABLED = false;

function Navigation_ActivatePreviousDIVPage()
{
    Navigation_ActivateDIVPage(NAVIGATION_PREVIOUS_ACTIVE_DIVPAGE);
}

function Navigation_ActivateDIVPage(div_id, max_opacity)
{
    if(!NAVIGATION_ENABLED)
        return;
        
    if(document.getElementById(div_id).style.display == "block")
    {
        //We dont care to show this message if they are on the main page,
        //and they try to navigate to the main page again, we ignore this 
        //because a popup box MAY disturb the animation transition sequence
        return;
    }
        
    Navigation_DeactiveAllDivPages();
    
    if(!max_opacity)
        max_opacity = 100;
    
    NAVIGATION_PREVIOUS_ACTIVE_DIVPAGE = NAVIGATION_CURRENT_ACTIVE_DIVPAGE;
    NAVIGATION_CURRENT_ACTIVE_DIVPAGE = div_id;

    DIV_OpenAnimated(div_id, max_opacity);    

    Navigation_SetNavigationTab(div_id);
    if(Navigation_Activated)
        Navigation_Activated(div_id);
    //ImageReflection_AddImageReflections();
}

function Navigation_DeactiveAllDivPages()
{
    if(!NAVIGATION_TAB_IDS)
        NAVIGATION_TAB_IDS = new Array();
        
    var all_divs = NAVIGATION_TAB_IDS;
    for(i = 0; i < all_divs.length; i++)
    {
        DIV_Close(all_divs[i]);
        //DIV_CloseAnimated(all_divs[i]);
        if(Navigation_Deactivated)
            Navigation_Deactivated(all_divs[i]);
    }
}

function Navigation_SetNavigationTab(div_id)
{
    var i = 0;
    for(i = 0; i < NAVIGATION_TAB_IDS.length; i++)
    {
        if(document.getElementById("nav_item_" + NAVIGATION_TAB_IDS[i]))
            document.getElementById("nav_item_" + NAVIGATION_TAB_IDS[i]).className = "nav_title_item_inactive";
        if(document.getElementById("nav_item_text_" + NAVIGATION_TAB_IDS[i]))
            document.getElementById("nav_item_text_" + NAVIGATION_TAB_IDS[i]).className = "nav_title_item_inactive_text";            
    }
    
    if(document.getElementById("nav_item_" + div_id))
        document.getElementById("nav_item_" + div_id).className = "nav_title_item_active";   
    if(document.getElementById("nav_item_text_" + div_id))
        document.getElementById("nav_item_text_" + div_id).className = "nav_title_item_active_text";  
}


/***/
  
var DIV_TIMER_LENGTH = 1;
var DIV_ANIMATION_LENGTH = 600;

var DIV_ACTION_OPEN = "OPEN";
var DIV_ACTION_CLOSE = "CLOSE";

var DIV_TimerIDArray = new Array();
var DIV_StartTimeArray = new Array();
var DIV_ObjectArray = new Array();
var DIV_FinalHeightArray = new Array();
var DIV_InMotionArray = new Array();
var DIV_MotionActionArray = new Array();
var DIV_OpacityCurrentArray = new Array();
var DIV_OpacityMaxArray = new Array();
var DIV_OpacityAnimationTimeArray = new Array();

function DIV_OpenAnimated(div_id, max_opacity)
{
    if(DIV_InMotionArray[div_id])
        return;
    if(document.getElementById(div_id).style.display != "none")
        return;
        
    if(!max_opacity)
        max_opacity = 100;        

    DIV_InMotionArray[div_id] = true;
    DIV_MotionActionArray[div_id] = DIV_ACTION_OPEN;
    DIV_OpacityMaxArray[div_id] = max_opacity;

    DIV_StartAnimatedMotion(div_id);
}

function DIV_CloseAnimated(div_id)
{
    if(DIV_InMotionArray[div_id])
        return;
    if(document.getElementById(div_id).style.display == "none")
        return;
    DIV_InMotionArray[div_id] = true;
    DIV_MotionActionArray[div_id] = DIV_ACTION_CLOSE;
    DIV_StartAnimatedMotion(div_id);
}


function DIV_StartAnimatedMotion(div_id)
{
    DIV_ObjectArray[div_id] = document.getElementById(div_id);
    DIV_FinalHeightArray[div_id] = parseInt(DIV_ObjectArray[div_id].style.height);
    DIV_StartTimeArray[div_id] = (new Date()).getTime();
    DIV_OpacityAnimationTimeArray[div_id] = (new Date()).getTime();
    DIV_OpacityCurrentArray[div_id] = 0;

    if(DIV_MotionActionArray[div_id] == DIV_ACTION_OPEN)
    {        
        DIV_ObjectArray[div_id].style.height = "1px";
        DIV_SetOpacity(div_id, DIV_OpacityCurrentArray[div_id], 
                             DIV_OpacityMaxArray[div_id]);
    }

    DIV_ObjectArray[div_id].style.display = "block";
    DIV_TimerIDArray[div_id] = setInterval('DIV_AnimationTick(\'' + 
                                                 div_id + '\');',
                                                 DIV_TIMER_LENGTH);
}

function DIV_AnimationTick(div_id)
{    
    var timeElapsed = (new Date()).getTime() - DIV_StartTimeArray[div_id];
    var opacityTimeElapsed = (new Date()).getTime() - DIV_OpacityAnimationTimeArray[div_id];

    if (timeElapsed > DIV_ANIMATION_LENGTH)
        DIV_StopAnimatedMotion(div_id);
    else 
    {
        var d =Math.round(timeElapsed / DIV_ANIMATION_LENGTH * DIV_FinalHeightArray[div_id]);
        if(DIV_MotionActionArray[div_id] == DIV_ACTION_CLOSE)
            d = DIV_FinalHeightArray[div_id] - d;
            
        if(d >= 0)
        {
            DIV_ObjectArray[div_id].style.height = d + "px";
        }
        if(opacityTimeElapsed > 
           DIV_TIMER_LENGTH * DIV_ANIMATION_LENGTH / DIV_OpacityMaxArray[div_id])
        {
            DIV_OpacityCurrentArray[div_id] += 2;
            DIV_SetOpacity(div_id, DIV_OpacityCurrentArray[div_id], 
                                 DIV_OpacityMaxArray[div_id]);
            DIV_OpacityAnimationTimeArray[div_id] = DIV_OpacityAnimationTimeArray[div_id] + 
                                                          opacityTimeElapsed;                
        }        
    }
    return;
}

function DIV_StopAnimatedMotion(div_id)
{
    if(DIV_MotionActionArray[div_id] == DIV_ACTION_CLOSE)
            DIV_ObjectArray[div_id].style.display = "none";
                
    clearInterval(DIV_TimerIDArray[div_id]);

    DIV_ObjectArray[div_id].style.height = DIV_FinalHeightArray[div_id] + "px";
    DIV_SetOpacity(div_id, DIV_OpacityMaxArray[div_id],DIV_OpacityMaxArray[div_id]);

    delete(DIV_InMotionArray[div_id]);
    delete(DIV_TimerIDArray[div_id]);
    delete(DIV_StartTimeArray[div_id]);
    delete(DIV_FinalHeightArray[div_id]);
    delete(DIV_ObjectArray[div_id]);
    delete(DIV_MotionActionArray[div_id]);
    delete(DIV_OpacityCurrentArray[div_id]);
    delete(DIV_OpacityMaxArray[div_id]);
    delete(DIV_OpacityAnimationTimeArray[div_id]);    

    return;
}

function DIV_Open(div_id)
{
    if(document.getElementById(div_id))
        document.getElementById(div_id).style.display = "block";
}

function DIV_Close(div_id)
{
    if(document.getElementById(div_id))
        document.getElementById(div_id).style.display = "none";
}

function DIV_IsAnyDivInMotion()
{
    for(i = 0; i < DIV_InMotionArray.length; i++)
    {
        if(DIV_InMotionArray[i] == true)
            return true;
    }
    return false;
}

function DIV_SetOpacity(div_id, i, max)
{
    if(i <= max)
    {
        //Internet Explorer
        document.getElementById(div_id).style.filter = "Alpha(Opacity=" + i + ")";
        //Firefox & Other Browsers
        document.getElementById(div_id).style.opacity = i/100;
    }
}






function API_GetObjectWidth(obj)
{
    var value;
    try
    {  
        var element;
        if(!obj.style)
        {
            element = document.getElementById(obj);
            if(element == null || !element.style)
                throw "Argument not a valid HTML UI element";
        }
        else
        {
            element = obj;
        }
        
        if(element.style.display == 'none')
        {
            //save CSS visibility and display attributes
            holdDisplay = element.style.display;
            holdVisibility = element.style.visibility;
            
            element.style.visibility = 'hidden';
            element.style.display = 'block';
            
            value = element.offsetWidth;

            //restore CSS visibility and display attributes
            element.style.visibility = holdVisibility;
            element.style.display = holdDisplay;           
        }
        else
        {
            value = element.offsetWidth;
        }
    }
    catch(e)
    {
        value = -1;
    }
    
    return value;
}

function API_GetObjectHeight(obj)
{
    var value;
    try
    {  
        var element;
        if(!obj.style)
        {
            element = document.getElementById(obj);
            if(element == null || !element.style)
                throw "Argument not a valid HTML UI element";
        }
        else
        {
            element = obj;
        }
        
        if(element.style.display == 'none')
        {
            //save CSS visibility and display attributes
            holdDisplay = element.style.display;
            holdVisibility = element.style.visibility;
            
            element.style.visibility = 'hidden';
            element.style.display = 'block';
            
            value = element.offsetHeight;

            //restore CSS visibility and display attributes
            element.style.visibility = holdVisibility;
            element.style.display = holdDisplay;           
        }
        else
        {
            value = element.offsetHeight;
        }
    }
    catch(e)
    {
        value = -1;
    }
    
    return value;
}


function API_GetObjectLeft(obj)
{
    var value;
    try
    {  
        var element;
        if(!obj.style)
        {
            element = document.getElementById(obj);
            if(element == null || !element.style)
                throw "Argument not a valid HTML UI element";
        }
        else
        {
            element = obj;
        }
        
        if(element.style.display == 'none')
        {
            //save CSS visibility and display attributes
            holdDisplay = element.style.display;
            holdVisibility = element.style.visibility;
            
            element.style.visibility = 'hidden';
            element.style.display = 'block';
            
            value = element.offsetLeft;

            //restore CSS visibility and display attributes
            element.style.visibility = holdVisibility;
            element.style.display = holdDisplay;           
        }
        else
        {
            value = element.offsetLeft;
        }
    }
    catch(e)
    {
        value = 0;
    }
    
    return value;
}

function API_GetObjectTop(obj)
{
    var value;
    try
    {  
        var element;
        if(!obj.style)
        {
            element = document.getElementById(obj);
            if(element == null || !element.style)
                throw "Argument not a valid HTML UI element";
        }
        else
        {
            element = obj;
        }
        
        if(element.style.display == 'none')
        {
            //save CSS visibility and display attributes
            holdDisplay = element.style.display;
            holdVisibility = element.style.visibility;
            
            element.style.visibility = 'hidden';
            element.style.display = 'block';
            
            value = element.offsetTop;

            //restore CSS visibility and display attributes
            element.style.visibility = holdVisibility;
            element.style.display = holdDisplay;           
        }
        else
        {
            value = element.offsetTop;
        }
    }
    catch(e)
    {
        value = 0;
    }
    
    return value;
}
