
// XML Object
/*
	Add these properties into tag title of item:
	
	<title link="../pc-55-1-world-clock-and-weather-web-part.aspx" top="96" left="570" class="stylenew" nodescription="true">sadfasdfastfhdf</title>

	this is a sample stylesheet for linking 
	
	A.stylenew
	{
	}
	A.stylenew:hover
	{
	}

	A.stylenew:visited
	{
	}
*/

var msie;
var mozilla;
var xmlDoc;

var nodeObject;
var toggle = true;
var forFirstTime = false;
var timerChangeBackGround = 15000;
var timerStillImage = 10000;
var timerInterval = 10;
var oInterval;
var beforeNode = 0;
var capacity = 0;
var currentNode = 0;

function loadXMLDoc(dname) {


    msie = (window.ActiveXObject) ? true : false;

    mozilla = (document.implementation && document.implementation.createDocument) ? true : false;
    try //Internet Explorer
  	{
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    }
    catch (e) {
        try //Firefox, Mozilla, Opera, etc.
    	{
            xmlDoc = document.implementation.createDocument("", "", null);
        }
        catch (e) {
            alert(e.message);
        }
    }
    try {
        xmlDoc.async = false;
        xmlDoc.load(dname);
        return (xmlDoc);
    }
    catch (e) {
        try //Google Chrome
        {
            var xmlhttp = new window.XMLHttpRequest();
            xmlhttp.open("GET", dname, false);
            xmlhttp.send(null);
            xmlDoc = xmlhttp.responseXML;
            return (xmlDoc);
        }
        catch (e) {
            alert(e.message);
        }
    }
    return (null);
}

function hideText(isHide) {
    var newLink = document.getElementById("linkNoDescription");

    if (newLink == null) {
        newLink = document.createElement("A");
    }

    newLink.href = nodeObject.link;
    newLink.id = "linkNoDescription";
    newLink.className = nodeObject.className;
    newLink.style.position = "relative";
    newLink.style.top = nodeObject.top.toString().indexOf("px") > 0 ? nodeObject.top : (nodeObject.top.toString() + "px");
    newLink.style.left = nodeObject.left.toString().indexOf("px") > 0 ? nodeObject.left : (nodeObject.left.toString() + "px");
    newLink.style.zIndex = 999;
    newLink.style.display = isHide ? "block" : "none";
    newLink.innerHTML = nodeObject.title;

/*    var MainImage = document.getElementById("MainImage");

    var childTable = MainImage.getElementsByTagName("TABLE");

    if (msie) {
        childTable[0].parentElement.insertAdjacentElement("beforeEnd", newLink);
    }
    else {
        childTable[0].parentNode.appendChild(newLink);
    }

    for (var idx = 0; idx < childTable[0].rows.length; idx++) {
        childTable[0].rows[idx].style.display = isHide ? "none" : "block";
    }
	*/
}

function getNodeByIndex(nodeIndex) {
    var node;
    var currentNode = new Object();
    currentNode.title = "";
    currentNode.link = "";
    currentNode.bgImage = "";
    currentNode.description = new Array();
    currentNode.top = 0;
    currentNode.left = 0;
    currentNode.className = "";
    currentNode.nodescription = false;
    currentNode.showbutton = "";
    currentNode.showbutton1 = "";
    currentNode.showbutton2 = "";
    currentNode.showbutton3 = "";
    currentNode.showbutton4 = "";

    if (msie) {
        node = xmlDoc.documentElement.childNodes(nodeIndex);

        for (var iNode = 0; iNode < node.childNodes.length; iNode++) {
            if (node.childNodes[iNode].tagName == "title") {
                //alert(node.childNodes[iNode].attributes.getNamedItem("nodescription") ? node.childNodes[iNode].attributes.getNamedItem("nodescription").text : "none");
                currentNode.title = node.childNodes[iNode].text;
                currentNode.link = node.childNodes[iNode].attributes.getNamedItem("link").text;

                //document.getElementById('lkLearnMore').href = node.childNodes[iNode].attributes.getNamedItem("link").text;

                currentNode.top = node.childNodes[iNode].attributes.getNamedItem("top") ? node.childNodes[iNode].attributes.getNamedItem("top").text : 0;
                currentNode.left = node.childNodes[iNode].attributes.getNamedItem("left") ? node.childNodes[iNode].attributes.getNamedItem("left").text : 0;
                currentNode.className = node.childNodes[iNode].attributes.getNamedItem("class") ? node.childNodes[iNode].attributes.getNamedItem("class").text : 0;
                currentNode.nodescription = node.childNodes[iNode].attributes.getNamedItem("nodescription") ? (node.childNodes[iNode].attributes.getNamedItem("nodescription").text == "true") : false;
            }
            else if (node.childNodes[iNode].tagName == "showbutton") {
                currentNode.showbutton = node.childNodes[iNode].text;
            }
            else if (node.childNodes[iNode].tagName == "showbutton1") {
                currentNode.showbutton1 = node.childNodes[iNode].text;
            }
            else if (node.childNodes[iNode].tagName == "showbutton2") {
                currentNode.showbutton2 = node.childNodes[iNode].text;
            }
            else if (node.childNodes[iNode].tagName == "showbutton3") {
                currentNode.showbutton3 = node.childNodes[iNode].text;
            }
            else if (node.childNodes[iNode].tagName == "showbutton4") {
                currentNode.showbutton4 = node.childNodes[iNode].text;
            }
		
            else if (node.childNodes[iNode].tagName == "ImagePath") {
                currentNode.bgImage = node.childNodes[iNode].text;
            }
            else if (node.childNodes[iNode].tagName.indexOf("Description") == 0) {
                currentNode.description.push(node.childNodes[iNode].text);
            }
        }
    }
    else if (mozilla) {

        nodeIndex = (nodeIndex + 1) * 2 - 1;

        node = xmlDoc.documentElement.childNodes[nodeIndex];

        for (var iNode = 0; iNode < node.childNodes.length; iNode++) {

            if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "title") {
                //alert( node.childNodes[iNode].attributes.getNamedItem("nodescription") ?  node.childNodes[iNode].attributes.getNamedItem("nodescription").textContent : "none");

                currentNode.title = node.childNodes[iNode].textContent;
                currentNode.link = node.childNodes[iNode].attributes.getNamedItem("link").textContent;

                //document.getElementById('lkLearnMore').href = node.childNodes[iNode].attributes.getNamedItem("link").textContent;

                currentNode.top = node.childNodes[iNode].attributes.getNamedItem("top") ? node.childNodes[iNode].attributes.getNamedItem("top").textContent : 0;
                currentNode.left = node.childNodes[iNode].attributes.getNamedItem("left") ? node.childNodes[iNode].attributes.getNamedItem("left").textContent : 0;
                currentNode.className = node.childNodes[iNode].attributes.getNamedItem("class") ? node.childNodes[iNode].attributes.getNamedItem("class").textContent : 0;
                currentNode.nodescription = node.childNodes[iNode].attributes.getNamedItem("nodescription") ? (node.childNodes[iNode].attributes.getNamedItem("nodescription").textContent == "true") : false;
            }
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "showbutton") {
                currentNode.showbutton = node.childNodes[iNode].textContent;
            }
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "showbutton1") {
                currentNode.showbutton1 = node.childNodes[iNode].textContent;
            }
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "showbutton2") {
                currentNode.showbutton2 = node.childNodes[iNode].textContent;
            }
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "showbutton3") {
                currentNode.showbutton3 = node.childNodes[iNode].textContent;
            }
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "showbutton4") {
                currentNode.showbutton4 = node.childNodes[iNode].textContent;
            }
			
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName == "ImagePath") {
                currentNode.bgImage = node.childNodes[iNode].textContent;
            }
            else if (node.childNodes[iNode].nodeType == 1 && node.childNodes[iNode].tagName.indexOf("Description") == 0) {
                currentNode.description.push(node.childNodes[iNode].textContent);
            }
        }
    }
    return currentNode;
}

function getChildNodesLength() {
    return xmlDoc.getElementsByTagName("item").length;
}

function sliceShowImage() {

    xmlDoc = loadXMLDoc('/BambooMainWeb/Source/ImageInfo.xml');
    //xmlDoc = loadXMLDoc('ImageInfo.xml'); 

    var maxNodes = msie ? getChildNodesLength() : Math.round(((xmlDoc.documentElement.childNodes.length - 1) / 2));

    nodeObject = getNodeByIndex(currentNode);
    currentNode = (currentNode == maxNodes - 1) ? 0 : currentNode + 1;

    if (!forFirstTime) {
        fadingObject();
        fadingObject();
        forFirstTime = !forFirstTime;
        setTimeout("sliceShowImage();", timerChangeBackGround / 10);
    }
    else {
        fadingObject();
        setTimeout("sliceShowImage();", timerChangeBackGround);
    }


}

function getRandomIndex(maxNodes, beforeNode) {
    //get Random node
    var idx = Math.round(Math.random() * maxNodes);
    while (idx >= maxNodes || idx == Math.round(beforeNode)) {
        idx = Math.round(Math.random() * maxNodes);
    }
    return idx;
    //End get random node

    //    currentNode = currentNode == maxNodes ? 0 : currentNode + 1;
    //    return currentNode;
}

function SetObjectValue() {
    //background
//    document.getElementById("MainImage").style.background = "url(" + nodeObject.bgImage + ") no-repeat left top";

    //showbutton
    document.getElementById("buttonLink").style.display = nodeObject.showbutton;
    document.getElementById("buttonLink1").style.display = nodeObject.showbutton1;
    document.getElementById("buttonLink2").style.display = nodeObject.showbutton2;
    document.getElementById("buttonLink3").style.display = nodeObject.showbutton3;
    document.getElementById("buttonLink4").style.display = nodeObject.showbutton4;
    //title
//    document.getElementById("atitle").href = nodeObject.link;
//    document.getElementById("atitle").innerHTML = nodeObject.title;

    hideText(nodeObject.nodescription);
    //description
    /*for (var iDes = 0; iDes < 4; iDes++) {
        if (nodeObject.description.length > 0 && iDes < nodeObject.description.length) {
            if (msie) {
                document.getElementById('tdinfor' + iDes).innerText = nodeObject.description[iDes];
            }
            else {
                document.getElementById('tdinfor' + iDes).textContent = nodeObject.description[iDes];
            }
            document.getElementById('trinfor' + iDes).style.display = "";
        }
        else {
            document.getElementById('trinfor' + iDes).style.display = "none";
        }
    }*/
}

function fadingObject() {
    if (msie) {
        oInterval = window.setInterval(msIE, timerInterval);
        setTimeout("changeToggle();", timerStillImage);
    }
    else {
        oInterval = window.setInterval(mozFF, timerInterval);
        setTimeout("changeToggle();", timerStillImage);
    } 
}

function msIE() {
/*    if (toggle) {
        if (capacity > 0) {
            capacity -= 1;
            document.getElementById("MainImage").filters[0].Opacity = capacity;
        }
        else {
            SetObjectValue();
            window.clearInterval(oInterval);
            toggle = !toggle;
        }
    }
    else {
        if (capacity < 100) {
            capacity += 1;
            document.getElementById("MainImage").filters[0].Opacity = capacity;
        }
        else {
            window.clearInterval(oInterval);
            //toggle = !toggle;
        }
    }*/
}


function mozFF() {
/*    if (toggle) //Fade out
    {

        if (capacity > 0) {
            capacity -= 1;
            //window.status = "I: " + capacity / 100;
            if (document.getElementById("MainImage").style.MozOpacity)
                document.getElementById("MainImage").style.MozOpacity = capacity / 100;
            else
                document.getElementById("MainImage").style.opacity = capacity / 100;
        }
        else {
            SetObjectValue();
            clearInterval(oInterval);
            toggle = !toggle;
        }
    }
    else    //Fade In
    {
        if (capacity < 100) {
            capacity += 1;
            //window.status = "O: " + capacity / 100;
            if (document.getElementById("MainImage").style.MozOpacity)
                document.getElementById("MainImage").style.MozOpacity = capacity / 100;
            else
                document.getElementById("MainImage").style.opacity = capacity / 100;
        }
        else {
            clearInterval(oInterval);
        }
    }*/
}


function Chrome() {
    if (toggle) //Fade out
    {

        if (capacity > 0) {
            capacity -= 1;
            //window.status = "I: " + capacity / 100;
            
        }
        else {
            SetObjectValue();
            clearInterval(oInterval);
            toggle = !toggle;
        }
    }
    else    //Fade In
    {
        if (capacity < 100) {
            capacity += 1;
            //window.status = "O: " + capacity / 100;
            document.getElementById("MainImage").style.opacity = capacity / 100;
        }
        else {
            clearInterval(oInterval);
        }
    }
}


function changeToggle() {
    toggle = !toggle;
}

//End-->
