/******************************************************************************
** What's New JS Library
******************************************************************************/
function getTodayString() {
    var now = new Date();
    var ret = (now.getMonth()+1) + "/" + now.getDate() + "/" + now.getFullYear();
    return ret;
}

function WhatsNewItem(message, href, target, expiration) {
    this.message = message;
    this.href = href;
    this.target = target;
    this.expiration = expiration;
    
    WhatsNewItem.prototype.getDisplay = function() {
        var display = "<p><strong>";
        
        if (this.href != null) {
            display += "<a href=\"" + this.href + "\"";
            
            if (this.target != null) {
                display += " target=\"" + this.target + "\"";
            }
            display += " title=\"Learn more.\">";
        }
        
        display += this.message;
        
        if (this.href != null) {
            display += "</a>";
        }
        
        display += "</strong></p>";
    
        return display;
    }
    
    WhatsNewItem.prototype.isExpired = function() {
        var isExpired = false;
        
        if (this.expiration != null) {        
            var today = new Date(getTodayString());
            var expire = new Date(this.expiration);
            if (today > expire) {
                isExpired = true;
            }
        }
        
        return isExpired;
    }
    
    WhatsNewItem.prototype.toString = function() {
        alert("message: " + this.message + "\n" 
        + "href: " + this.href + "\n" 
        + "target: " + this.target + "\n" 
        + "expiration: " + this.expiration + "\n");
    }
}

function loadItems() {
    var items = null;
    var itemData = readItemData();
    if (itemData != null) {
        var count = 0;
        for (var i = 0; i < itemData.length; i++) {
            messageNode = itemData[i].getElementsByTagName("message")[0];
            if (messageNode != undefined) {
                message = messageNode.childNodes[0].nodeValue;
            } else {
                message = null;
            }
            
            hrefNode = itemData[i].getElementsByTagName("href")[0];
            if (hrefNode != undefined) {
                href = hrefNode.childNodes[0].nodeValue;
            } else {
                href = null;
            }
            
            targetNode = itemData[i].getElementsByTagName("target")[0];
            if (targetNode != undefined) {
                target = targetNode.childNodes[0].nodeValue;
            } else {
                target = null;
            }
            
            expirationNode = itemData[i].getElementsByTagName("expiration")[0];
            if (expirationNode != undefined && expirationNode != null) {
                expiration = expirationNode.childNodes[0].nodeValue;
            } else {
                expiration = null;
            }
            
            whatsNewItem = new WhatsNewItem(message, href, target, expiration); 
            if (!whatsNewItem.isExpired()) {
                if (items == null) {
                    items = new Array();
                }
                items[count] = whatsNewItem;
                count++;
            }
        }
    }
    
    return items;
}

function readItemData() {
    var itemData = null;
    
    var xmlDoc = null;
    if (window.ActiveXObject) {
        // code for IE
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    } else if (document.implementation.createDocument) {
        // code for Mozilla, Firefox, Opera, etc.
        xmlDoc = document.implementation.createDocument("", "", null);
    }

    if (xmlDoc != null) {
        xmlDoc.async=false;
        xmlDoc.load("news/whatsnew.xml");
        itemData = xmlDoc.getElementsByTagName("item");
     }
     
     return itemData;
}

var whatsNewItems = loadItems();

frame=10; // 10 frames fading process
var delay=3000; //set delay between message change (in miliseconds)
var fadescheme=0; //set 0 to fade text color from (light to dark), 1 for (dark to light)
var fadelinks=1;  //should links inside scroller content also fade like text? 0 for no, 1 for yes.

var hex1=(fadescheme==0)? 255 : 51;
var hex2=(fadescheme==0)? 255 : 0;
var hex3=(fadescheme==0)? 255 : 102;
var startcolor=(fadescheme==0)? "rgb(255,255,255)" : "rgb(51,0,102)";
var endcolor=(fadescheme==0)? "rgb(51,0,102)" : "rgb(255,255,255)";

var ie4=document.all&&!document.getElementById;
var DOM2=document.getElementById;
var faderdelay=0;
var index=0;

if (DOM2) {
    faderdelay=2000;
}

//function to change content
function displayWhatsNew() {
    display = "none";
    if (whatsNewItems.length > 0) {
        display = "inline";
    }
    
    document.getElementById("whatsnew").style.display = display;
    
    if (index >= whatsNewItems.length) {
        index = 0;
    }
    
    if (whatsNewItems[index].isExpired()) {
        index++;
        setTimeout("displayWhatsNew();",0);
    } else {
        if (DOM2) {
            document.getElementById("item").style.color=startcolor;
            document.getElementById("item").innerHTML=whatsNewItems[index].getDisplay();
            linksobj=document.getElementById("item").getElementsByTagName("A");
            if (fadelinks) {
                linkcolorchange(linksobj);
                colorfade();
            }
        } else if (ie4) {
            document.all.item.innerHTML=whatsNewItems[index];
        }
        
        if (whatsNewItems.length > 1) {
            index++;
            setTimeout("displayWhatsNew();",delay+faderdelay);
        }
    }
}
	
function linkcolorchange(obj){
    if (obj.length>0) {
        for (i=0;i<obj.length;i++) {
            obj[i].style.color="rgb("+hex1+","+hex2+","+hex3+")";
        }
    }
}

function colorfade() {
    if (frame>0) {	
        hex1=(fadescheme==0)? hex1-12 : hex1+12 // increase or decrease color value depd on fadescheme
        hex2=(fadescheme==0)? hex2-24 : hex2+24 // increase or decrease color value depd on fadescheme
        hex3=(fadescheme==0)? hex3-6 : hex3+6 // increase or decrease color value depd on fadescheme		
        document.getElementById("item").style.color="rgb("+hex1+","+hex2+","+hex3+")"; // Set color value.
        if (fadelinks) {
            linkcolorchange(linksobj);
        }
        frame--;
        setTimeout("colorfade();",20);	
    } else {
        document.getElementById("item").style.color=endcolor;
        frame=10;
        hex1=(fadescheme==0)? 255 : 51;
        hex2=(fadescheme==0)? 255 : 0;
        hex3=(fadescheme==0)? 255 : 102;
    }   
}