/*
 * Rich HTML Ticker- by JavaScript Kit (http://www.javascriptkit.com)
 * Freeware. Created Sept 13th, 08'
 * This credit must stay intact for use
 */

var richhtmlticker = {
    loadingtext: '<em>Fetching Ticker Contents. Please wait...</em>', //Loading text if content is being fetched via Ajax

    getajaxcontent:function($, config) {
        config.$ticker.html(this.loadingtext);
        $.ajax({
            url: config.msgsource,
            error:function(ajaxrequest) {
                config.$ticker.html('Error fetching content.<br />Server Response: ' + ajaxrequest.responseText);
            },
            success:function(content) {
                config.$ticker.html(content);
                richhtmlticker.setupticker(config);
            }
        });
    },

    rotate:function(config) {
        if (config.$ticker.get(0)._hoverstate == "over") {
            setTimeout(function() {
                richhtmlticker.rotate(config);
            }, config.rotatespeed);
        }
        else {
            config.$messages.eq(config.currentmsg).fadeOut(config.animateduration, function() {
                config.currentmsg = (config.currentmsg < config.$messages.length - 1) ? config.currentmsg + 1 : 0;
                config.$messages.eq(config.currentmsg).fadeIn(config.animateduration, function() {
                    setTimeout(function() {
                        richhtmlticker.rotate(config);
                    }, config.rotatespeed);
                });
            });
        }
    },

    getCookie:function(Name) {
        var re = new RegExp(Name + "=[^;]+", "i"); //construct RE to search for target name/value pair
        if (document.cookie.match(re)) //if cookie found
            return document.cookie.match(re)[0].split("=")[1]; //return its value
        return null;
    },

    setCookie:function(name, value) {
        document.cookie = name + "=" + value;
    },

    setupticker:function(config) {
        config.$messages = config.$ticker.find('div.' + config.msgclass).hide();
        config.currentmsg = Math.min(parseInt(richhtmlticker.getCookie(config.id) || 0), config.$messages.length - 1);
        config.$messages.hide().eq(config.currentmsg).fadeIn(config.animateduration);
        setTimeout(function() {
            richhtmlticker.rotate(config);
        }, config.rotatespeed);
        $(window).bind('unload', function() {
            richhtmlticker.cleanup(config);
        });
    },

    define:function(config) {
        jQuery(document).ready(function($) {
            config.$ticker = $('#' + config.id);
            if (config.$ticker.length == 0)
                return;
            config.$ticker.css({overflow:'hidden'}).hover(
                    function() {
                        this._hoverstate = "over";
                    },
                    function() {
                        this._hoverstate = "out";
                    }
                    );
            if (config.msgsource == "inline") {
                richhtmlticker.setupticker(config);
            }
            else {
                richhtmlticker.getajaxcontent($, config);
            }
        });
    },

    cleanup:function(config) {
        this.setCookie(config.id, config.currentmsg);
    }

}; //end richhtmlticker object




//////////// Declare instance of Rich HTML Ticker (invoked when page has loaded): ///////////////////////////

richhtmlticker.define({
    id: "news_panel", //main ticker DIV id
    msgclass: "news_div", //CSS class of DIVs containing each ticker message
    msgsource: "inline", //Where to look for the messages: "inline", or "path_to_file_on_your_server"
    rotatespeed: 4000, //pause in milliseconds between rotation
    animateduration: 1000 //duration of fade animation in milliseconds
});