var help_state = 0; //0 for closed, 1 for open
function get_window_height() {
    var windowHeight=0;
    if (typeof(window.innerHeight)=='number') {
        windowHeight = window.innerHeight;
    } else {
        if (document.documentElement && document.documentElement.clientHeight) {
            windowHeight = document.documentElement.clientHeight;
        } else {
            if (document.body && document.body.clientHeight) {
                windowHeight = document.body.clientHeight;
            }
        }
    }
    return windowHeight;
}

function reset_content_height() {
    var doc2 = document.getElementById("doc2");
    var wh = get_window_height();
    if( doc2.offsetHeight <  wh) {
        doc2.style.height = wh+"px";
    }
}

function show_help() {
    if(help_state == 0) {
//         help_overlay.show();
        YAHOO.util.Dom.removeClass(document.getElementById("help-inner"), "hidden");
        help_state = 1;
        YAHOO.util.Dom.addClass(document.getElementById("help-disclosure"), "close");
    } else {
//         help_overlay.hide();
        help_state = 0;
        YAHOO.util.Dom.addClass(document.getElementById("help-inner"), "hidden");
        YAHOO.util.Dom.removeClass(document.getElementById("help-disclosure"), "close");
    }
}

/**
* A pre-configured ContainerEffect instance that can be used for sliding an overlay in and out.
* @method SLIDE
* @static
* @param {Overlay}  overlay The Overlay object to animate
* @param {Number}   dur The duration of the animation
* @return {ContainerEffect} The configured ContainerEffect object
*/
help_slide = function(overlay, dur) {
    var x = overlay.cfg.getProperty("x") || YAHOO.util.Dom.getX(overlay.element);
    var y = overlay.cfg.getProperty("y") || YAHOO.util.Dom.getY(overlay.element);

    var clientWidth = YAHOO.util.Dom.getClientWidth();
    var offsetWidth = overlay.element.offsetWidth;

    var slide = new YAHOO.widget.ContainerEffect(overlay, {
                                                            attributes:{ points: { to:[x, y] } },
                                                            duration:dur,
                                                            method:YAHOO.util.Easing.easeIn
                                                        },
                                                        {
                                                            attributes:{ points: { to:[(-25-offsetWidth), y] } },
                                                            duration:dur,
                                                            method:YAHOO.util.Easing.easeOut
                                                        },
                                                        overlay.element,
                                                        YAHOO.util.Motion);


    slide.handleStartAnimateIn = function(type,args,obj) {
        obj.overlay.element.style.left = (-25-offsetWidth) + "px";
        obj.overlay.element.style.top  = y + "px";
    };

    slide.handleTweenAnimateIn = function(type, args, obj) {


        var pos = YAHOO.util.Dom.getXY(obj.overlay.element);

        var currentX = pos[0];
        var currentY = pos[1];

        if (YAHOO.util.Dom.getStyle(obj.overlay.element, "visibility") == "hidden" && currentX < x) {
            YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "visible");

        }

        obj.overlay.cfg.setProperty("xy", [currentX,currentY], true);
        obj.overlay.cfg.refireEvent("iframe");
    };

    slide.handleCompleteAnimateIn = function(type, args, obj) {
        obj.overlay.cfg.setProperty("xy", [x,y], true);
        obj.startX = x;
        obj.startY = y;
        obj.overlay.cfg.refireEvent("iframe");
        obj.animateInCompleteEvent.fire();
    };

    slide.handleStartAnimateOut = function(type, args, obj) {
        var vw = YAHOO.util.Dom.getViewportWidth();

        var pos = YAHOO.util.Dom.getXY(obj.overlay.element);

        var yso = pos[1];

        var currentTo = obj.animOut.attributes.points.to;
        obj.animOut.attributes.points.to = [(-25-offsetWidth), yso];
    };

    slide.handleTweenAnimateOut = function(type, args, obj) {
        var pos = YAHOO.util.Dom.getXY(obj.overlay.element);

        var xto = pos[0];
        var yto = pos[1];

        obj.overlay.cfg.setProperty("xy", [xto,yto], true);
        obj.overlay.cfg.refireEvent("iframe");
    };

    slide.handleCompleteAnimateOut = function(type, args, obj) {
        YAHOO.util.Dom.setStyle(obj.overlay.element, "visibility", "hidden");

        obj.overlay.cfg.setProperty("xy", [x,y]);
        obj.animateOutCompleteEvent.fire();
    };

    slide.init();
    return slide;
};

function AjaxAdObject(data) {
    this.data = data;
}

AjaxAdObject.prototype = {

    success:function(o){
        eval(o.responseText);
    },

    failure:function(o){
        // Failure handler
    },

    processResult:function(o){
    },

    startRequest:function() {
        var post = "data="+this.data[0];
        for(var i = 1; i < this.data.length; i++) {
            post += "&data="+this.data[i];
        }
        YAHOO.util.Connect.asyncRequest('POST', "/directory/ad-for/", this, post);
    }

};

// Start the transaction.
function load_ads() {
    var elements = YAHOO.util.Dom.getElementsByClassName("ad", "div")
    var data = [];
    for(z=0; z<elements.length; z++ ){
        var element = elements[z];
        if(element.firstChild) {
            element.removeChild(element.firstChild);
        }

        var categories = element.getAttribute("categories");
        if( categories == "{book}") {
            categories = book;
        }
        var size = element.getAttribute("adsize");
        data.push(element.id+"-"+categories+"-"+size);

    }
    if(elements.length > 0) {
        var ad = new AjaxAdObject(data);
        ad.startRequest();
    }
}

var ads_timer = false;
function cycle_ads(){
  load_ads();
  if(ads_timer)
    clearInterval(ads_timer);
  ads_timer = setInterval(load_ads, 45000);
}

function init_utils() {
//     reset_content_height();

//     help_overlay = new YAHOO.widget.Overlay("help-inner", {
//                                             width:"300px",
//                                             visible:false,
//                                             effect:{effect: help_slide,duration:0.25} } );
    YAHOO.util.Event.addListener("help-disclosure", "click", show_help);
    YAHOO.util.Event.addListener("help-close", "click", show_help);
    load_ads();
}

function hideJSMessage() {
    YAHOO.util.Dom.setStyle(document.getElementById('js-detect'), "display", "none");
}
        
YAHOO.util.Event.addListener(window, "load", init_utils);

window.addEvent('domready', hideJSMessage);

/**
 * News Feed Ticker
 * uses http://ryanflorence.com/slideshow/1.0/#introduction
**/

// for some reason, using 'domready' didn't work on the test server, but
// 'load' did.
window.addEvent('load', function(){
    var ticker = new SlideShow('blog-entries', {
        transition: 'pushUp',
        autoplay: true,
        delay: 5000,
        selector: 'div.newsitem_group'
    });
    
    ticker.addEvents({
        mouseenter: function(){
            ticker.pause();
        },
        mouseleave: function(){
            ticker.showNext().play();
        }
    });
});

