//constants
var ARRAY_LENGTH = 5;
var CELL_HEIGHT  = 1.8;
var TEXT_COLOR_OVER     = '#0000FF';
var TEXT_COLOR_OUT      = '#999999';
//var TEXT_COLOR_OUT_SUB  = '#CCCCCC';
var TEXT_COLOR_OUT_SUB  = '#999999';
var DIV_NOTI_SCHED_MINIMUM = 4;
var DIV_NOTI_SCHED_MAX = 26.5;

//arrays
var aNameList = new Array('Home','Aikido','Instructors','Classes','Schedule');
var displaySize = new Array(ARRAY_LENGTH);   //clip size on open
var timerCollapse = new Array(ARRAY_LENGTH); //menu order to close
var timerExpand = new Array(ARRAY_LENGTH);   //menu order to close
var isHover = new Array(ARRAY_LENGTH);       //hover status
var subElements = new Array(ARRAY_LENGTH);   //opacity level on close
var subMaxSize  = new Array(ARRAY_LENGTH);   //max size in em of each drop down menu
var timer;

//variables
var dDate;
//var iBGWidth = 0;
var iBGWidth = 100;
var iMapFade = 15;

var isEventOpen = true;
var isScheduleOpen = false;
var timerEventExpand, timerEventCollapse;

///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
function finalSetup()
{
    if ((isIE) && (iBrowserVersion<7))
        alert("This site does not support Internet Explorer 6 or older.\n"
            +"You may experience difficulties viewing this site properly.");
    initArrays();
    updatePage("Home",0);
    setNotiSize();
    setSchedSize();
    setTimeDisplay();
    setQuoteDisplay();
}
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////


///////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
///////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////


function adjustFrameSize(sID)
{
    var obj = document.getElementById(sID);
    obj.style['height']=sID+'em';
}
///////////////////////////////////////////////////////////////////////////////

function arrowClick(sID,isOpen)
{
    //var IMG_MOVE = 0.56*1;
    var IMG_MOVE = 0.56;
    var iCurr;
    var oImg = document.getElementById(sID);
    if (isOpen)
        iCurr=0;
    else
        iCurr=IMG_MOVE*-1;
    //iCurr=getNumericStyleValue(oImg.style['left']);
    //alert(iCurr);
    //oImg.style['left']=((iCurr*-1) -IMG_MOVE)+'em';
    oImg.style['left']=iCurr+'em';
}
///////////////////////////////////////////////////////////////////////////////

function arrowHover(sID)
{
    var oImg = document.getElementById(sID);
    oImg.style['top']='-0.56em';
}
///////////////////////////////////////////////////////////////////////////////

function arrowHoverOut(sID)
{
    var oImg = document.getElementById(sID);
    oImg.style['top']='0em';
}
///////////////////////////////////////////////////////////////////////////////

function checkSideBar(obj)
{
    var iSize, iMisc;
    var oSizes = getSideBarSizes();
    //var sAlt;
    iMisc = 2+1+1;
    switch (obj.id)
    {
        case 'divNotiFrame':
            //sAlt = 'divScheduleFrame';
            iSize = oSizes.sizeContent-oSizes.sizeSched-iMisc;
            break;
        case 'divScheduleFrame':
            //sAlt = 'divNotiFrame';
            iSize = oSizes.sizeContent-oSizes.sizeNoti-iMisc;
            break;
    }
    if (iSize > DIV_NOTI_SCHED_MAX)
        iSize = DIV_NOTI_SCHED_MAX;
    else if (iSize < DIV_NOTI_SCHED_MINIMUM)
    {
        if (isFramesClosed())
        {
            alert('error');
            return false;
        }
        else
        {
            alert('closeFrames');
            closeFrames();
            checkSideBar(obj);
        }
    }
    obj.style['height']=iSize+'em';
    return true;
}
///////////////////////////////////////////////////////////////////////////////

function closeFrames()
{
/*
    document.getElementById('divNotiFrame').style['height']=DIV_NOTI_SCHED_MINIMUM+'em';
    document.getElementById('notiFrame').style['height']='0';
    isEventOpen=false;
    document.getElementById('divScheduleFrame').style['height']=DIV_NOTI_SCHED_MINIMUM+'em';
    isScheduleOpen=false;
*/
    closeNotiFrame();
    closeSchedFrame();
}
///////////////////////////////////////////////////////////////////////////////

function closeNotiFrame()
{
    //var obj = document.getElementById('divNotiFrame');
    //if (isEventOpen)
    //{
        document.getElementById('divNotiFrame').style['height']=DIV_NOTI_SCHED_MINIMUM+'em';
        document.getElementById('notiFrame').style['height']='0';
        isEventOpen=false;
        arrowClick("arrowNotifications",isEventOpen);
    //}
}
///////////////////////////////////////////////////////////////////////////////

function closeSchedFrame()
{
    //if (isScheduleOpen)
    //{
        document.getElementById('divScheduleFrame').style['height']=DIV_NOTI_SCHED_MINIMUM+'em';
        isScheduleOpen=false;
        arrowClick("arrowSchedule",isScheduleOpen);
    //}
}
///////////////////////////////////////////////////////////////////////////////

function collapseSubMenu(i)
{
    if (! isHover[i])
    {
        //var oSub;
        try {
            clearTimeout(timerExpand[i]); }
        catch (err) {}
        if (displaySize[i]>0.0)
        {
            displaySize[i]-=0.1;
            if (displaySize[i]<0.0)
                displaySize[i]=0.0;
            sizeSubMenu(i);
            timerCollapse[i]=setTimeout('collapseSubMenu('+i+')',15);
        }
        else
        {
            clearTimeout(timerCollapse[i]);
            if (displaySize[i]<0.0)
                displaySize[i]=0.0;
            //oSub = document.getElementById(aNameList[i]+'SubMenu');
            hideObject(document.getElementById(aNameList[i]+'SubMenu'));
        }
    }
}
///////////////////////////////////////////////////////////////////////////////

function expandMapBG()
{
    if (iBGWidth<100)
    {
        iBGWidth+=5;
        document.getElementById('MapFrameBG').style['width']=iBGWidth+'%';
        setTimeout('expandMapBG()',25);
    }
    else
    {
        //var oMap = document.getElementById('Map');
        document.getElementById('Map').innerHTML=top.bgContent.document.getElementById('Map').value;
        setTimeout('showMap()',250);
    }
}
///////////////////////////////////////////////////////////////////////////////

function expandSubMenu(i)
{
    //var max = (subElements[i]*CELL_HEIGHT);
    if ((displaySize[i]<subMaxSize[i]) && (isHover[i]))
    {
        displaySize[i]+=0.1;
        if (displaySize[i]>subMaxSize[i])
            displaySize[i]=subMaxSize[i];
        sizeSubMenu(i);
        timerExpand[i]=setTimeout('expandSubMenu('+i+')',15);
    }
    else
    {
        clearTimeout(timerExpand[i]);
        if (displaySize[i]>subMaxSize[i])
            displaySize[i]=subMaxSize[i];
    }
}
///////////////////////////////////////////////////////////////////////////////

function fadeMapIn()
{
    if (iMapFade<100)
    {
        iMapFade+=5;
        setMapOpacity();
        setTimeout('fadeMapIn()',50);
    }        
}
///////////////////////////////////////////////////////////////////////////////

function getAvailableHeight(obj)
{
    return getNumericStyleValue(obj.parentNode.style['height']);
}
///////////////////////////////////////////////////////////////////////////////

function getDayName(day,abbr)
{
    switch (day)
    {
        case 0:
            return (abbr)?('Sun'):('Sunday');
            break;
        case 1:
            return (abbr)?('Mon'):('Monday');
            break;
        case 2:
            return (abbr)?('Tues'):('Tuesday');
            break;
        case 3:
            return (abbr)?('Wed'):('Wednesday');
            break;
        case 4:
            return (abbr)?('Thur'):('Thursday');
            break;
        case 5:
            return (abbr)?('Fri'):('Friday');
            break;
        case 6:
            return (abbr)?('Sat'):('Saturday');
            break;
    }
}
///////////////////////////////////////////////////////////////////////////////

function getMonthName(mon,abbr)
{
    switch (mon)
    {
        case 0:
            return (abbr)?('Jan'):('January');
            break;
        case 1:
            return (abbr)?('Feb'):('February');
            break;
        case 2:
            return (abbr)?('Mar'):('March');
            break;
        case 3:
            return (abbr)?('Apr'):('April');
            break;
        case 4:
            return (abbr)?('May'):('May');
            break;
        case 5:
            return (abbr)?('Jun'):('June');
            break;
        case 6:
            return (abbr)?('Jul'):('July');
            break;
        case 7:
            return (abbr)?('Aug'):('August');
            break;
        case 8:
            return (abbr)?('Sep'):('September');
            break;
        case 9:
            return (abbr)?('Oct'):('October');
            break;
        case 10:
            return (abbr)?('Nov'):('November');
            break;
        case 11:
            return (abbr)?('Dec'):('December');
            break;
    }
}
///////////////////////////////////////////////////////////////////////////////

function getNumericStyleValue(sStyle)
{
    var iTmp;
    for (var i=sStyle.length-1;i>=0;i--)
    {
        if (! isNaN(sStyle.substr(i,1)))
            return new Number(sStyle.substr(0,i+1));
    }
    return -999;
}
///////////////////////////////////////////////////////////////////////////////

function getSideBarSizes()
{
    var oCnt = document.getElementById('divContentFrame');
    var oNot = document.getElementById('divNotiFrame');
    var oSch = document.getElementById('divScheduleFrame');
    return {sizeContent:getNumericStyleValue(oCnt.style['height']), sizeNoti:getNumericStyleValue(oNot.style['height']), sizeSched: getNumericStyleValue(oSch.style['height'])};
}
///////////////////////////////////////////////////////////////////////////////

function hideObject(obj)
{
    obj.style['visibility']='hidden';
    obj.style['display']='none';   
}
///////////////////////////////////////////////////////////////////////////////

function hideObjectByID(id)
{
    document.getElementById(id).style['visibility']='hidden';
    document.getElementById(id).style['display']='none';   
}
///////////////////////////////////////////////////////////////////////////////

function hideMap()
{
    //var obj = document.getElementById('Map');
    hideObject(document.getElementById('Map'));
    if (! isMobile)
        iMapFade=0;
}
///////////////////////////////////////////////////////////////////////////////

function hideMapFrame()
{
    //var obj = document.getElementById('MapFrame');
    hideObject(document.getElementById('MapFrame'));
    //iBGWidth=0;
    hideMap();
}
///////////////////////////////////////////////////////////////////////////////

//initialize arrays
function initArrays()
{
    for (var x=1; x<ARRAY_LENGTH; x++)
    {
        displaySize[x] = 0.0;
        timerCollapse[x] = null;
        timerExpand[x] = null;
        isHover[x] = false;
        //alert(document.getElementById(aNameList[x]+'SubElements').value);
        subElements[x] = new Number(document.getElementById(aNameList[x]+'SubElements').value);
        subMaxSize[x]=subElements[x]*CELL_HEIGHT;
    }
}
///////////////////////////////////////////////////////////////////////////////

function isFramesClosed()
{
    if (isEventOpen || isScheduleOpen)
        return false;
    return true;
}
///////////////////////////////////////////////////////////////////////////////

function linkHover(obj)
{
    obj.style['color']='#0099ff';
    //obj.style['backgroundColor']='#0099ff';
}
///////////////////////////////////////////////////////////////////////////////

function linkHoverOut(obj)
{
    obj.style['color']='#000066';
}
///////////////////////////////////////////////////////////////////////////////

function menuHover(i)
{
    //var oSub = document.getElementById(aNameList[i]+'SubMenu');
    isHover[i]=true;
    try {
        clearTimeout(timerCollapse[i]); }
    catch (err) {}
    showObject(document.getElementById(aNameList[i]+'SubMenu'));
    if (! isMobile)
        expandSubMenu(i);
    else
    {
        displaySize[i]=subMaxSize[i]
        sizeSubMenu(i);
    }
}
///////////////////////////////////////////////////////////////////////////////

function menuHoverOut(i)
{
    isHover[i]=false;
    if (! isMobile)
        timerCollapse[i]=setTimeout('collapseSubMenu('+i+')',500);
    else
    {
        displaySize[i]=0.0;
        sizeSubMenu(i);
        hideObject(document.getElementById(aNameList[i]+'SubMenu'));
    }
}
///////////////////////////////////////////////////////////////////////////////

function menuMouseOut(i)
{
    var oImg = document.getElementById(aNameList[i]+'Button');
    var oTxt = document.getElementById(aNameList[i]+'Text');
    var oGlw = document.getElementById(aNameList[i]+'Glow');
    oImg.className = 'MenuButton opacityMid';
    //oImg.style['top'] = '-2.82em';
    oImg.style['top'] = '-2.5em';
    oGlw.className = 'MenuButtonGlow opacityLow';
    oGlw.style['top'] = '-3.3em';
    oTxt.style['color'] = TEXT_COLOR_OUT;}
///////////////////////////////////////////////////////////////////////////////

function menuMouseOver(i)
{
    var oImg = document.getElementById(aNameList[i]+'Button');
    var oTxt = document.getElementById(aNameList[i]+'Text');
    var oGlw = document.getElementById(aNameList[i]+'Glow');
    oImg.style['top'] = '0em';
    oImg.className = 'MenuButton opacityHigh';
    oGlw.className = 'MenuButtonGlow opacityMid';
    oGlw.style['top'] = '-0.50em';
    oTxt.style['color'] = TEXT_COLOR_OVER;
}
///////////////////////////////////////////////////////////////////////////////

function nextPageHover(obj)
{
    obj.style['border']='0.06em #66ccff solid';
    obj.style['backgroundColor']='#0099ff';
}
///////////////////////////////////////////////////////////////////////////////

function nextPageHoverOut(obj)
{
    obj.style['border']='0.06em transparent solid';
    obj.style['backgroundColor']='transparent';
}
///////////////////////////////////////////////////////////////////////////////

function refreshSideBar()
{
    isEventOpen=(!isEventOpen);
    isScheduleOpen=(!isScheduleOpen);
    setNotiSize();
    setSchedSize();
}
///////////////////////////////////////////////////////////////////////////////

function setMapOpacity()
{
    setOpacity(document.getElementById('Map'),iMapFade);
    setOpacity(document.getElementById('MapLblClose'),iMapFade);
    setOpacity(document.getElementById('MapiFrame'),iMapFade);
    setOpacity(document.getElementById('MapAnchor'),iMapFade);
}
///////////////////////////////////////////////////////////////////////////////

function setNotiSize()
{
    var oNoti = document.getElementById('divNotiFrame');
    var oNotiFr = document.getElementById('notiFrame');
    var iNew;
    if (isEventOpen)
    {
        closeNotiFrame();
    }
    else
    {
        if (checkSideBar(oNoti))
        {
            if ((iNew = getNumericStyleValue(oNoti.style['height'])-6.25) < 0)
                iNew=0;
            oNotiFr.style['height']=iNew+'em';
            isEventOpen=true;
            arrowClick("arrowNotifications",isEventOpen);
        }
    }
}
///////////////////////////////////////////////////////////////////////////////

function setSchedSize()
{
    var oSched = document.getElementById('divScheduleFrame');
    if (isScheduleOpen)
    {
        closeSchedFrame();
    }
    else
    {
        if (checkSideBar(oSched))
        {
            isScheduleOpen=true;
            arrowClick("arrowSchedule",isScheduleOpen);
        }
    }
}
///////////////////////////////////////////////////////////////////////////////

function setOpacity(obj,val)
{
    if (obj.filters)
        obj.style['filter'] = 'alpha(opacity='+val+')';
    else if (obj.style['-moz-opacity'])
        obj.style['-moz-opacity'] = (val/100);
    else if (obj.style['-khtml-opacity'])
        obj.style['-khtml-opacity'] = (val/100);
    else
        obj.style['opacity'] = (val/100);
} // end fadeObj()
///////////////////////////////////////////////////////////////////////////////

function setTimeDisplay()
{
    dDate = new Date();
    var str;
    var lblDate = document.getElementById('lblDateTime');
    str = getDayName(dDate.getDay(),false)+', '+getMonthName(dDate.getMonth(),false)+' '+dDate.getDate()+', '+dDate.getFullYear()+' '
        +dDate.getHours()+':'+((dDate.getMinutes()<10)?('0'+dDate.getMinutes()):(dDate.getMinutes()))
        +(isMobile?'':(':'+((dDate.getSeconds()<10)?('0'+dDate.getSeconds()):(dDate.getSeconds()))));
    //if (isMobile)
    lblDate.innerHTML=str;
    if (! isMobile)
    {
        //str+=':'+((dDate.getSeconds()<10)?('0'+dDate.getSeconds()):(dDate.getSeconds()));
        //lblDate.innerHTML=getDayName(dDate.getDay(),false)+', '+getMonthName(dDate.getMonth(),false)+' '+dDate.getDate()+', '+dDate.getFullYear()+' '
        //    +dDate.getHours()+':'+((dDate.getMinutes()<10)?('0'+dDate.getMinutes()):(dDate.getMinutes()))+':'+((dDate.getSeconds()<10)?('0'+dDate.getSeconds()):(dDate.getSeconds()));
        //lblDate.innerHTML=str;
        setTimeout('setTimeDisplay()',1000);
    }
    //alert('timerset');
}
///////////////////////////////////////////////////////////////////////////////

function showObject(obj)
{
    obj.style['visibility']='visible';
    obj.style['display']='block';
}
///////////////////////////////////////////////////////////////////////////////

function showObjectByID(id)
{
    document.getElementById(id).style['visibility']='visible';
    document.getElementById(id).style['display']='block';
}
///////////////////////////////////////////////////////////////////////////////

function showMap()
{
    //var obj = document.getElementById('Map');
    showObject(document.getElementById('Map'));
    if (! isMobile)
        fadeMapIn();
    else
    {
        iMapFade=100;
        setMapOpacity();
    }
}
///////////////////////////////////////////////////////////////////////////////

function showMapFrame()
{
    //var oFrm = document.getElementById('MapFrame');
    showObject(document.getElementById('MapFrame'));
    expandMapBG();
}
///////////////////////////////////////////////////////////////////////////////

function sizeSubMenu(i)
{
    document.getElementById(aNameList[i]+'InnerBlock').style['height']=displaySize[i]+'em';
}
///////////////////////////////////////////////////////////////////////////////

function subMenuMouseOut(obj)
{
    var oHiLi = obj.getElementsByTagName('img')[1];
    var oText = obj.getElementsByTagName('a')[0];
    oHiLi.style['top']='10em';
    oText.style['color'] = TEXT_COLOR_OUT_SUB;
}
///////////////////////////////////////////////////////////////////////////////

function subMenuMouseOver(obj)
{
    var oHiLi = obj.getElementsByTagName('img')[1];
    var oText = obj.getElementsByTagName('a')[0];
    oHiLi.style['top']='-0.06em';
    oText.style['color'] = TEXT_COLOR_OVER;
}
///////////////////////////////////////////////////////////////////////////////

function updatePage(sSrc,iPg)
{
    top.bgContent.updateContent(sSrc,iPg);
    refreshSideBar();
}
///////////////////////////////////////////////////////////////////////////////
