window.onload = function () {
    startRotatingLogo();
};

function startRotatingLogo() {
    var rand = Math.floor(Math.random() * 5) //0-4
    document.getElementById("rotatingLogoFG").style.backgroundPosition = "0px " + (rand * -32) + "px";
    document.getElementById("rotatingLogo").style.backgroundPosition = "0px " + (rand * -32) + "px";
    setInterval("fadeOut()", 5000);
}

function setOpacity(level) {
    document.getElementById("rotatingLogoFG").style.opacity = level;
    document.getElementById("rotatingLogoFG").style.MozOpacity = level;
    document.getElementById("rotatingLogoFG").style.KhtmlOpacity = level;
    document.getElementById("rotatingLogoFG").style.filter = "alpha(opacity=" + (level * 100) + ");";
}

function fadeOut() { 
    var loc = Number(document.getElementById("rotatingLogo").style.backgroundPosition.toString().split(' ')[1].split('p')[0]);
    document.getElementById("rotatingLogo").style.backgroundPosition = "0px " + (loc - 32) + "px";

    for (i = 0; i <= 1; i = i + 0.05) {
        setTimeout("setOpacity(" + (1 - i) + ")", i * 1000);
    }
    setTimeout("rotateLogo()", 1000);
}

function rotateLogo() {
    var loc = Number(document.getElementById("rotatingLogoFG").style.backgroundPosition.toString().split(' ')[1].split('p')[0]);
    document.getElementById("rotatingLogoFG").style.backgroundPosition = "0px " + (loc - 32) + "px";
    setOpacity(1);
}

function showMore(id) { document.getElementById(id).style.display = "block"; }
function hideMore(id) { document.getElementById(id).style.display = "none"; }

function setShareLinks() {
    var title = document.title;
    var link = location.href;

    document.getElementById("twitter").href = "http://twitter.com/home?status=" + title + ": " + link;
    document.getElementById("facebook").href = "http://www.facebook.com/share.php?u=" + link;
    document.getElementById("linkedin").href = "http://www.linkedin.com/shareArticle?mini=true&url=" + link + "&title=" + title + "&source=Intertech";
    document.getElementById("email").href = "http://api.addthis.com/oexchange/0.8/forward/email/offer?url=" + link + "&title=" + title + "&pco=bkm-152&pubid=internal";
    document.getElementById("google").href = "https://www.google.com/bookmarks/mark?op=add&bkmk=" + link + "&title=" + title + "&annotation=";
    document.getElementById("digg").href = "http://digg.com/submit?partner=addthis&url=" + link + "&title=" + title + "&bodytext=";
    document.getElementById("reddit").href = "http://www.reddit.com/submit?url=" + link + "&title=" + title;
}

//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//Image Swapper (Instantiated on the Home Page)
//Tom Faltesek 02/03/2011
//Used to replace flash on home page with jquery/js
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//This is the image object
function objImage(alt, time, file, link, transition) {
    this.alt = alt;
    this.time = time;
    this.file = file;
    this.link = link;
    this.transition = transition;
}

//This is the slide object
function objSlide(images) {
    this.images = images;
    this.imgIndex = 0;
    this.getNextImgIndex = function () {
        if (this.imgIndex == this.images.length - 1) {
            return 0;
        }
        else { return this.imgIndex + 1; }
    }
}

//This is the slide collection obj
function objSwapper(slides) {
    this.slides = slides;
    this.slideIndex = 0;
    var self = this; //create a global reference to this
    this.timer = null;
    this.clearTimer = function () {
        if (this.timer) clearTimeout(this.timer);
    }
    this.setTimer = function () {
        if (this.timer) clearTimeout(this.timer);
        this.timer = setTimeout(self.transition, this.getCurrentImg().time);
    }
    this.getNextSlideIndex = function () {
        if (this.slideIndex == this.slides.length - 1) {
            return 0;
        }
        else { return this.slideIndex + 1; }
    }

    this.getNextImg = function () {
        //if the current img is the last in its slide, go to the first img of the next slide.
        if (this.getCurrentSlide().getNextImgIndex() == 0) {
            return this.slides[this.getNextSlideIndex()].images[0];
        }
        else { return this.getCurrentSlide().images[this.getCurrentSlide().getNextImgIndex()]; }
    }

    this.getCurrentSlide = function () {
        return this.slides[this.slideIndex];
    }

    this.getCurrentImg = function () {
        return this.getCurrentSlide().images[this.getCurrentSlide().imgIndex];
    }

    this.moveToSlide = function (newIndex) {
        this.clearTimer();
        this.getCurrentSlide().imgIndex = 0;    //reset current slide.
        this.slideIndex = newIndex;             //switch to selected slide.
        this.updateUI();
        this.setTimer();
    }

    this.changeImg = function () {
        //if last img in the slide, reset index and then switch slides.
        if (this.getCurrentSlide().getNextImgIndex() == 0) {
            this.getCurrentSlide().imgIndex = 0;
            this.slideIndex = this.getNextSlideIndex();
        }
        //otherwise get the next image in the current slide.
        else {
            this.getCurrentSlide().imgIndex = this.getCurrentSlide().getNextImgIndex();
        }
    }

    this.updateUI = function () {
        for (var i = 0; i < this.slides.length; i++)
            $("#link" + i).css('color', '#dcdbdc');

        $("#link" + this.slideIndex).css('color', '#000');

        $("#swap-img").attr("src", this.getCurrentImg().file);
        $("#swap-img").attr("alt", this.getCurrentImg().alt);
        $("#img-link").attr("href", this.getCurrentImg().link);
        $("#img-link").attr("title", this.getCurrentImg().alt);
    }

    this.transition = function () {
        //fade img out, switch, fade image in.
        if (self.getCurrentImg().transition == "fade") {
            $("#swap-img").animate({ "opacity": 0 }, 1000, function () {
                self.changeImg();
                self.updateUI();
                $("#swap-img").animate({ "opacity": 1 }, 1000, function () {
                    self.setTimer();
                });
            });
        }
        //switch background, fade out main, switch main, turn main on, reset background to blank.
        else if (self.getCurrentImg().transition == "appear") {
            $("#img-link").css("background-image", "url(" + self.getNextImg().file + ")");
            $("#swap-img").animate({ "opacity": 0 }, 1000, function () {
                self.changeImg();
                self.updateUI();
                $("#swap-img").css("opacity", 1);
                $("#img-link").css("background-image", "none");
                self.setTimer();
            });
        }
    }
} //end of imgSwapper

//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//End Image Swapper
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

/* MENU***********************************************************************************
FREESTYLE MENUS v1.0 RC (c) 2001-2006 Angus Turnbull, http://www.twinhelix.com
Altering this notice or redistributing this file is prohibited.
Intertech did not make this menu code:
*/

var isDOM = document.getElementById ? 1 : 0,
    isIE = document.all ? 1 : 0,
    isNS4 = navigator.appName == 'Netscape' && !isDOM ? 1 : 0,
    isOp = self.opera ? 1 : 0,
    isDyn = isDOM || isIE || isNS4;

function getRef(i, p) {
    p = !p ? document : p.navigator ? p.document : p;
    return isIE ? p.all[i] : isDOM ? (p.getElementById ? p : p.ownerDocument).getElementById(i) : isNS4 ? p.layers[i] : null
};

function getSty(i, p) {
    var r = getRef(i, p);
    return r ? isNS4 ? r : r.style : null
};
if (!self.LayerObj) var LayerObj = new Function('i', 'p', 'this.ref=getRef(i,p);this.sty=getSty(i,p);return this');

function getLyr(i, p) {
    return new LayerObj(i, p)
};

function LyrFn(n, f) {
    LayerObj.prototype[n] = new Function('var a=arguments,p=a[0],px=isNS4||isOp?0:"px";with(this){' + f + '}')
};
LyrFn('x', 'if(!isNaN(p))sty.left=p+px;else return parseInt(sty.left)');
LyrFn('y', 'if(!isNaN(p))sty.top=p+px;else return parseInt(sty.top)');
if (typeof addEvent != 'function') {
    var addEvent = function (o, t, f, l) {
        var d = 'addEventListener',
                n = 'on' + t,
                rO = o,
                rT = t,
                rF = f,
                rL = l;
        if (o[d] && !l) return o[d](t, f, false);
        if (!o._evts) o._evts = {};
        if (!o._evts[t]) {
            o._evts[t] = o[n] ? {
                b: o[n]
            } : {};
            o[n] = new Function('e', 'var r=true,o=this,a=o._evts["' + t + '"],i;for(i in a){o._f=a[i];r=o._f(e||window.event)!=false&&r;o._f=null}return r');
            if (t != 'unload') addEvent(window, 'unload', function () {
                removeEvent(rO, rT, rF, rL)
            })
        }
        if (!f._i) f._i = addEvent._i++;
        o._evts[t][f._i] = f
    };
    addEvent._i = 1;
    var removeEvent = function (o, t, f, l) {
        var d = 'removeEventListener';
        if (o[d] && !l) return o[d](t, f, false);
        if (o._evts && o._evts[t] && f._i) delete o._evts[t][f._i]
    }
}
function FSMenu(myName, nested, cssProp, cssVis, cssHid) {
    this.myName = myName;
    this.nested = nested;
    this.cssProp = cssProp;
    this.cssVis = cssVis;
    this.cssHid = cssHid;
    this.cssLitClass = 'highlighted';
    this.menus = {
        root: new FSMenuNode('root', true, this)
    };
    this.menuToShow = [];
    this.mtsTimer = null;
    this.showDelay = 0;
    this.switchDelay = 125;
    this.hideDelay = 500;
    this.showOnClick = 0;
    this.hideOnClick = true;
    this.animInSpeed = 0.2;
    this.animOutSpeed = 0.2;
    this.animations = []
};
FSMenu.prototype.show = function (mN) {
    with (this) {
        menuToShow.length = arguments.length;
        for (var i = 0; i < arguments.length; i++) menuToShow[i] = arguments[i];
        clearTimeout(mtsTimer);
        if (!nested) mtsTimer = setTimeout(myName + '.menus.root.over()', 10)
    }
};
FSMenu.prototype.hide = function (mN) {
    with (this) {
        clearTimeout(mtsTimer);
        if (menus[mN]) menus[mN].out()
    }
};
FSMenu.prototype.hideAll = function () {
    with (this) {
        for (var m in menus) if (menus[m].visible && !menus[m].isRoot) menus[m].hide(true)
    }
};

function FSMenuNode(id, isRoot, obj) {
    this.id = id;
    this.isRoot = isRoot;
    this.obj = obj;
    this.lyr = this.child = this.par = this.timer = this.visible = null;
    this.args = [];
    var node = this;
    this.over = function (evt) {
        with (node) with (obj) {
            if (isNS4 && evt && lyr.ref) lyr.ref.routeEvent(evt);
            clearTimeout(timer);
            clearTimeout(mtsTimer);
            if (!isRoot && !visible) node.show();
            if (menuToShow.length) {
                var a = menuToShow,
                    m = a[0];
                if (!menus[m] || !menus[m].lyr.ref) menus[m] = new FSMenuNode(m, false, obj);
                var c = menus[m];
                if (c == node) {
                    menuToShow.length = 0;
                    return
                }
                clearTimeout(c.timer);
                if (c != child && c.lyr.ref) {
                    c.args.length = a.length;
                    for (var i = 0; i < a.length; i++) c.args[i] = a[i];
                    var delay = child ? switchDelay : showDelay;
                    c.timer = setTimeout('with(' + myName + '){menus["' + c.id + '"].par=menus["' + node.id + '"];menus["' + c.id + '"].show()}', delay ? delay : 1)
                }
                menuToShow.length = 0
            }
            if (!nested && par) par.over()
        }
    };
    this.out = function (evt) {
        with (node) with (obj) {
            if (isNS4 && evt && lyr && lyr.ref) lyr.ref.routeEvent(evt);
            clearTimeout(timer);
            if (!isRoot && hideDelay >= 0) {
                timer = setTimeout(myName + '.menus["' + id + '"].hide()', hideDelay);
                if (!nested && par) par.out()
            }
        }
    };
    if (this.id != 'root') with (this) with (lyr = getLyr(id)) if (ref) {
        if (isNS4) ref.captureEvents(Event.MOUSEOVER | Event.MOUSEOUT);
        addEvent(ref, 'mouseover', this.over);
        addEvent(ref, 'mouseout', this.out);
        if (obj.nested) {
            addEvent(ref, 'focus', this.over);
            addEvent(ref, 'click', this.over);
            addEvent(ref, 'blur', this.out)
        }
    }
};
FSMenuNode.prototype.show = function (forced) {
    with (this) with (obj) {
        if (!lyr || !lyr.ref) return;
        if (par) {
            if (par.child && par.child != this) par.child.hide();
            par.child = this
        }
        var offR = args[1],
            offX = args[2],
            offY = args[3],
            lX = 0,
            lY = 0,
            doX = '' + offX != 'undefined',
            doY = '' + offY != 'undefined';
        if (self.page && offR && (doX || doY)) {
            with (page.elmPos(offR, par.lyr ? par.lyr.ref : 0)) lX = x, lY = y;
            if (doX) lyr.x(lX + eval(offX));
            if (doY) lyr.y(lY + eval(offY))
        }
        if (offR) lightParent(offR, 1);
        visible = 1;
        if (obj.onshow) obj.onshow(id);
        lyr.ref.parentNode.style.zIndex = '2';
        setVis(1, forced)
    }
};
FSMenuNode.prototype.hide = function (forced) {
    with (this) with (obj) {
        if (!lyr || !lyr.ref || !visible) return;
        if (isNS4 && self.isMouseIn && isMouseIn(lyr.ref)) return show();
        if (args[1]) lightParent(args[1], 0);
        if (child) child.hide();
        if (par && par.child == this) par.child = null;
        if (lyr) {
            visible = 0;
            if (obj.onhide) obj.onhide(id);
            lyr.ref.parentNode.style.zIndex = '1';
            setVis(0, forced)
        }
    }
};
FSMenuNode.prototype.lightParent = function (elm, lit) {
    with (this) with (obj) {
        if (!cssLitClass || isNS4) return;
        if (lit) elm.className += (elm.className ? ' ' : '') + cssLitClass;
        else elm.className = elm.className.replace(new RegExp('(\\s*' + cssLitClass + ')+$'), '')
    }
};
FSMenuNode.prototype.setVis = function (sh, forced) {
    with (this) with (obj) {
        if (lyr.forced && !forced) return;
        lyr.forced = forced;
        lyr.timer = lyr.timer || 0;
        lyr.counter = lyr.counter || 0;
        with (lyr) {
            clearTimeout(timer);
            if (sh && !counter) sty[cssProp] = cssVis;
            var speed = sh ? animInSpeed : animOutSpeed;
            if (isDOM && speed < 1) for (var a = 0; a < animations.length; a++) animations[a](ref, counter, sh);
            counter += speed * (sh ? 1 : -1);
            if (counter > 1) {
                counter = 1;
                lyr.forced = false
            } else if (counter < 0) {
                counter = 0;
                sty[cssProp] = cssHid;
                lyr.forced = false
            } else if (isDOM) {
                timer = setTimeout(myName + '.menus["' + id + '"].setVis(' + sh + ',' + forced + ')', 50)
            }
        }
    }
};
//FSMenu.animSwipeDown = function (ref, counter, show) {
//    if (show && (counter == 0)) {
//        ref._fsm_styT = ref.style.top;
//        ref._fsm_styMT = ref.style.marginTop;
//        ref._fsm_offT = ref.offsetTop || 0
//    }
//    var cP = Math.pow(Math.sin(Math.PI * counter / 2), 0.75);
//    var clipY = ref.offsetHeight * (1 - cP);
//    ref.style.clip = (counter == 1 ? ((window.opera || navigator.userAgent.indexOf('KHTML') > -1) ? '' : 'rect(auto,auto,auto,auto)') : 'rect(' + clipY + 'px,' + ref.offsetWidth + 'px,' + ref.offsetHeight + 'px,0)');
//    if (counter == 1 || (counter < 0.01 && !show)) {
//        ref.style.top = ref._fsm_styT;
//        ref.style.marginTop = ref._fsm_styMT
//    } else {
//        ref.style.top = ((0 - clipY) + (ref._fsm_offT)) + 'px';
//        ref.style.marginTop = '0'
//    }
//};
//FSMenu.animFade = function (ref, counter, show) {
//    var done = (counter == 1);
//    if (ref.filters) {
//        var alpha = !done ? ' alpha(opacity=' + parseInt(counter * 100) + ')' : '';
//        if (ref.style.filter.indexOf("alpha") == -1) ref.style.filter += alpha;
//        else ref.style.filter = ref.style.filter.replace(/\s*alpha\([^\)]*\)/i, alpha)
//    } else ref.style.opacity = ref.style.MozOpacity = counter / 1.001
//};
//FSMenu.animClipDown = function (ref, counter, show) {
//    var cP = Math.pow(Math.sin(Math.PI * counter / 2), 0.75);
//    ref.style.clip = (counter == 1 ? ((window.opera || navigator.userAgent.indexOf('KHTML') > -1) ? '' : 'rect(auto,auto,auto,auto)') : 'rect(0,' + ref.offsetWidth + 'px,' + (ref.offsetHeight * cP) + 'px,0)')
//};
FSMenu.prototype.activateMenu = function (id, subInd) {
    with (this) {
        if (!isDOM || !document.documentElement) return;
        var fsmFB = getRef('fsmenu-fallback');
        if (fsmFB) {
            fsmFB.rel = 'alternate stylesheet';
            fsmFB.disabled = true
        }
        var a, ul, li, parUL, mRoot = getRef(id),
            nodes, count = 1;
        var lists = mRoot.getElementsByTagName('ul');
        for (var i = 0; i < lists.length; i++) {
            li = ul = lists[i];
            while (li) {
                if (li.nodeName.toLowerCase() == 'li') break;
                li = li.parentNode
            }
            if (!li) continue;
            parUL = li;
            while (parUL) {
                if (parUL.nodeName.toLowerCase() == 'ul') break;
                parUL = parUL.parentNode
            }
            a = null;
            for (var j = 0; j < li.childNodes.length; j++) if (li.childNodes[j].nodeName.toLowerCase() == 'a') a = li.childNodes[j];
            if (!a) continue;
            var menuID = myName + '-id-' + count++;
            if (ul.id) menuID = ul.id;
            else ul.setAttribute('id', menuID);
            var sOC = (showOnClick == 1 && li.parentNode == mRoot) || (showOnClick == 2);
            var evtProp = navigator.userAgent.indexOf('Safari') > -1 || isOp ? 'safRtnVal' : 'returnValue';
            var eShow = new Function('with(' + myName + '){var m=menus["' + menuID + '"],pM=menus["' + parUL.id + '"];' + (sOC ? 'if((pM&&pM.child)||(m&&m.visible))' : '') + ' show("' + menuID + '",this)}');
            var eHide = new Function('e', 'if(e.' + evtProp + '!=false)' + myName + '.hide("' + menuID + '")');
            addEvent(a, 'mouseover', eShow);
            addEvent(a, 'focus', eShow);
            addEvent(a, 'mouseout', eHide);
            addEvent(a, 'blur', eHide);
            if (sOC) addEvent(a, 'click', new Function('e', myName + '.show("' + menuID + '",this);if(e.cancelable&&e.preventDefault)e.preventDefault();e.' + evtProp + '=false;return false'));
            if (subInd) a.insertBefore(subInd.cloneNode(true), a.firstChild)
        }
        if (isIE && !isOp) {
            var aNodes = mRoot.getElementsByTagName('a');
            for (var i = 0; i < aNodes.length; i++) {
                addEvent(aNodes[i], 'focus', new Function('e', 'var node=this.parentNode;while(node){if(node.onfocus)node.onfocus(e);node=node.parentNode}'));
                addEvent(aNodes[i], 'blur', new Function('e', 'var node=this.parentNode;while(node){if(node.onblur)node.onblur(e);node=node.parentNode}'))
            }
        }
        if (hideOnClick) addEvent(mRoot, 'click', new Function(myName + '.hideAll()'));
        menus[id] = new FSMenuNode(id, true, this)
    }
};
//var page = {
//    win: self,
//    minW: 0,
//    minH: 0,
//    MS: isIE && !isOp,
//    db: document.compatMode && document.compatMode.indexOf('CSS') > -1 ? 'documentElement' : 'body'
//};
//page.elmPos = function (e, p) {
//    var x = 0,
//        y = 0,
//        w = p ? p : this.win;
//    e = e ? (e.substr ? (isNS4 ? w.document.anchors[e] : getRef(e, w)) : e) : p;
//    if (isNS4) {
//        if (e && (e != p)) {
//            x = e.x;
//            y = e.y
//        };
//        if (p) {
//            x += p.pageX;
//            y += p.pageY
//        }
//    }
//    if (e && this.MS && navigator.platform.indexOf('Mac') > -1 && e.tagName == 'A') {
//        e.onfocus = new Function('with(event){self.tmpX=clientX-offsetX;self.tmpY=clientY-offsetY}');
//        e.focus();
//        x = tmpX;
//        y = tmpY;
//        e.blur()
//    } else while (e) {
//        x += e.offsetLeft;
//        y += e.offsetTop;
//        e = e.offsetParent
//    }
//    return {
//        x: x,
//        y: y
//    }
//};
//if (isNS4) {
//    var fsmMouseX, fsmMouseY, fsmOR = self.onresize,
//        nsWinW = innerWidth,
//        nsWinH = innerHeight;
//    document.fsmMM = document.onmousemove;
//    self.onresize = function () {
//        if (fsmOR) fsmOR();
//        if (nsWinW != innerWidth || nsWinH != innerHeight) location.reload()
//    };
//    document.captureEvents(Event.MOUSEMOVE);
//    document.onmousemove = function (e) {
//        fsmMouseX = e.pageX;
//        fsmMouseY = e.pageY;
//        return document.fsmMM ? document.fsmMM(e) : document.routeEvent(e)
//    };

//    function isMouseIn(sty) {
//        with (sty) return ((fsmMouseX > left) && (fsmMouseX < left + clip.width) && (fsmMouseY > top) && (fsmMouseY < top + clip.height))
//    }
//}
