﻿var elOnStage;
var transitionSpeed = .8;
var firstSection = 'section10';
var workSection = 'section20';
var header = 'header';
var nav = 'nav';
var subNav = 'subNav';
var stageOffset = 1000;
var activeClass = 'active';

function Init() {
    var sections = YAHOO.util.Dom.getElementsBy(CheckSection,'li','sections',CreateSection);
    SetContactLink();
}
function Resize() {
    if (elOnStage) {
        var position = GetElementAttr(elOnStage);
        YAHOO.util.Dom.setY(elOnStage, position[0]);  
        YAHOO.util.Dom.setX(elOnStage, position[1]);  
    }
}
function CheckSection(el) {
    if (el.className == 'section') {
        return true;
    }
    return false;
}
function CreateSection(el) {
    YAHOO.util.Dom.setStyle(el, 'display', 'block');
    YAHOO.util.Dom.setStyle(el, 'position', 'absolute');
    YAHOO.util.Dom.setY(el, -(stageOffset)); 
}
function Goto(section) {
    HighlightNav(section);   
    ToggleSubNav(section); 
    
    if (elOnStage) {
        var direction = elOnStage.replace('section','') - section.replace('section','');
        ChangeStage(section, direction);
    }
    else {
        ChangeStage(section, 0);
    }
}
function HandleClick(section) {
    var newState, currentState;
 
    newState = section;

    try {
        currentState = YAHOO.util.History.getCurrentState("section");
        if (newState != currentState) {
            YAHOO.util.History.navigate("section", newState);
        }
    } 
    catch (e) {
        alert('Oops, there seems to be a problem.  Please try again.');
    }
}
function ChangeStage(el, direction) {
    var offscreenDistance = YAHOO.util.Dom.getViewportWidth() + stageOffset;
    
    if (direction < 0)
        offscreenDistance = -(offscreenDistance);
   
    ExitStage(el, offscreenDistance);
}
function ToggleSubNav(el) {
    var sectionNum = el.replace('section','');
    
    if (sectionNum >= 20 && sectionNum < 30) 
    {
        YAHOO.util.Dom.addClass(subNav, activeClass); 
    }
    else
    {
        YAHOO.util.Dom.removeClass(subNav, activeClass); 
    }
}
function HighlightNav(section) {
    var navlink_prefix = 'goto';
    var subnavlink_prefix = 'gotosub';
    var sectionNum = section.replace('section','');
    var workSectionNum = workSection.replace('section','');

    RemoveHighlight(nav);
    
    if (sectionNum == workSectionNum) {
        RemoveHighlight(subNav);
        HighlightLink(navlink_prefix + workSection);
        HighlightFirstLink(subNav);
    }
    else if (sectionNum > 20 && sectionNum < 30) {
        RemoveHighlight(subNav);
        HighlightLink(navlink_prefix + workSection)
        HighlightLink(subnavlink_prefix + section);
    }
    else {
        HighlightLink(navlink_prefix + section);
    }
}
function RemoveHighlight(el) {
    var links = YAHOO.util.Dom.getElementsBy(function(){return true},'li',el,function(el){YAHOO.util.Dom.removeClass(el, 'active')});
}
function HighlightFirstLink(el) {
    var links = YAHOO.util.Dom.getElementsBy(function(){return true},'li',el);
    if (links)
        HighlightLink(links[0]);
}
function HighlightLink(link) {
    YAHOO.util.Dom.addClass(link, activeClass); 
}
function ExitStage(el, distance) {
    YAHOO.util.Dom.setStyle(document.body, 'overflow', 'hidden');
    var slider = new YAHOO.util.Anim(elOnStage, { left: { to: distance } }, transitionSpeed, YAHOO.util.Easing.easeInStrong);
    slider.onComplete.subscribe(function() {EnterStage(el, distance)}); 
    slider.animate();
}   
function EnterStage(el, distance) {
    YAHOO.util.Dom.setStyle(el, 'display', 'block');
    
    var position = GetElementAttr(el);
    YAHOO.util.Dom.setX(el, -(distance)); 
    YAHOO.util.Dom.setY(el, position[0]);  
    
    var attr = { left: { to: position[1] } };
    var slider = new YAHOO.util.Anim(el, attr, transitionSpeed, YAHOO.util.Easing.easeOutStrong);
    slider.onComplete.subscribe(function() {CleanStage(el)}); 
    slider.animate();   
}   
function CleanStage(el) {
    YAHOO.util.Dom.setStyle(elOnStage, 'display', 'none');
    YAHOO.util.Dom.setStyle(document.body, 'overflow', 'auto');
    elOnStage = el;
}
function GetElementAttr(el) {
    var viewportHeight = YAHOO.util.Dom.getViewportHeight();
    var viewportWidth = YAHOO.util.Dom.getViewportWidth();
    var elRegion = YAHOO.util.Dom.getRegion(el);
    var elHeight = elRegion.bottom - elRegion.top;
    var elWidth = elRegion.right - elRegion.left;
    var headerRegion = YAHOO.util.Dom.getRegion('header');
    var headerHeight = headerRegion.bottom - headerRegion.top;
    var headerWidth = headerRegion.right - headerRegion.left;

    var top = (viewportHeight - elHeight + headerHeight)/2 ;
    var left = (viewportWidth - elWidth)/2;
    
    var spacer = 20;
    var topMin = headerHeight + spacer;
    if (top < topMin)
        top = topMin;
    if (left < spacer)
        left = spacer;

    return [top, left, elWidth, elHeight];
}
function SetContactLink() {
    var coded = 'UryyH@RH4HyHfTrY.gHD';
    var key = '3GMU6ZBPzfY7DvKN2xTIet0bEkFln5qcW4dujCoLrS9wQhpyR8Xgsam1VJHAiO';
    var shift = coded.length;
    var ltr=''
    var link='';
    for (i=0; i<coded.length; i++) {
        if (key.indexOf(coded.charAt(i))==-1) {
          ltr = coded.charAt(i)
          link += (ltr)
        }
        else {     
          ltr = (key.indexOf(coded.charAt(i))-shift+key.length) % key.length
          link += (key.charAt(ltr))
        }
    }
    var address = YAHOO.util.Dom.get('address');
    address.href = 'mailto:' + link;
    address.innerHTML = link;
}
function ChangePhase(el, id) {
    var phasesNav = 'phasesNav';
    var links = YAHOO.util.Dom.getElementsBy(function (el) {return true;},'a',phasesNav,function (el) {YAHOO.util.Dom.removeClass(el, activeClass)});
    YAHOO.util.Dom.addClass(el, activeClass);
    
    var phase = 'phase';
    var phases = 'phases';
    var divs = YAHOO.util.Dom.getElementsByClassName(phase,'div',phases,HidePhase);
    ShowPhase(id);
}
function HidePhase(el) {
    YAHOO.util.Dom.replaceClass(el, 'visible', 'invisible');
}
function ShowPhase(el) {
    YAHOO.util.Dom.replaceClass(el, 'invisible', 'visible');
}
function ChangeService(el, id) {
    var optionsBar = 'service-options-bar';
    var options = YAHOO.util.Dom.getElementsBy(function (el) {return true;},'a',optionsBar,function (el) {YAHOO.util.Dom.removeClass(el, activeClass)});
    
    YAHOO.util.Dom.addClass(el, activeClass);
    
    var services = 'service-options';
    var service = YAHOO.util.Dom.getElementsBy(function (el) {return true;},'li',services,function (el) {YAHOO.util.Dom.removeClass(el, activeClass)});
    
    YAHOO.util.Dom.addClass(id, activeClass);
}