﻿var currentID = 0;
var timeInterval = 0;
var fadeOutInterval = 0;
var fadeInInterval = 0;
var strServiceLoc = "http://" + location.hostname + "/wsvc/service1.asmx";
var arrID = new Array();
var t;
var fOut;
var fIn;
var bBroken = false;
var bPaused = false;

var xmlDoc;
var arrNodes = new Array();

getXML(); //GET ALL ID OF NEWS

function getXML() {

    var xmlhttp;
    var responseIDs;
    if (window.XMLHttpRequest) {    //All new browsers
        xmlhttp = new XMLHttpRequest();
    } else {    //IE6
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.open("POST", strServiceLoc, false);
    xmlhttp.setRequestHeader("Content-Type", "text/xml");
    console.log("about to send request");
    xmlhttp.send('<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><GetNewsXML xmlns="http://tempuri.org/" /></soap:Body></soap:Envelope>');

    console.log("about to try parse xml");
    arrNodes = parseXML(xmlhttp.responseText);
}


function parseXML(strXML) {
    txt = "";
    console.log("Object passed: ");
    xmlDocP = new DOMParser();
    xmlDoc1 = xmlDocP.parseFromString(strXML, 'text/xml');
    //console.log(xmlDoc1);
    //x = xmlDoc1.selectNodes("/soap:envelope/soap:body/getnewsxmlresponse/getnewsxmlresult");
    x = xmlDoc1.getElementsByTagName("GetNewsXMLResult");
    //console.debug(x[0].firstChild.nodeValue);
    //alert(x[0].firstChild.nodeValue);
    //var answer = Encoder.htmlDecode(x[0].firstChild.nodeValue);
    var answer = x[0].firstChild.nodeValue;
    console.log("decoded: ", answer);
    xmlDoc = createXMLDocument(answer);

    arrNodes = xmlDoc.getElementsByTagName("NewsElement");
    arrID = xmlDoc.getElementsByTagName("News_ID");
    return arrNodes
}

function createXMLDocument(str) {
    var xmlDoc;

    if (window.DOMParser) {
       
        parser = new DOMParser();
        xmlDoc = parser.parseFromString(str, "text/xml");
    }
    else // Internet Explorer
    {
        xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
        xmlDoc.async = "false";
        xmlDoc.loadXML(str);
    }
    return xmlDoc;
}
//=====================================================================================
//========================== GETTING NEXT NEWS =========================================

function getNextNews() {
    if (!bBroken) {
        var arrValues = new Array();
        //var arrID = new Array(); //arrID = getIDs();

        if (currentID >= arrID.length) {
            currentID = 0;
        }

        recordID = arrID[currentID].text;

        // GETTING ASSOC ARRAY OF VALUES FROM DATABASE
        arrValues = requestNextNews(recordID);
        currentID++;

        // DISPLAY VALUES
        displayNextNews(arrValues);
    }
}

function gotoNews(id) {
    var arrValues = new Array();

    if (id > 0)
        currentID = id;
    else
        currentID = id;

    recordID = arrID[currentID].text;

    // GETTING ASSOC ARRAY OF VALUES FROM DATABASE
    arrValues = requestNextNews(recordID);
    currentID++;

    // DISPLAY VALUES
    displayNextNews(arrValues);

}

function requestNextNews(id) {
    for (i = 0; i < arrNodes.length; i++) {
        var xmlDocument = createXMLDocument(arrNodes[i].nodeValue);
        var lArrID = xmlDocument.getElementsByTagName("News_ID");
        var ID = lArrID[0].text;
        var arrValues = new Array();
        var arrChildren;

        if (ID == id) {
            var arrChildrenHolder = xmlDocument.childNodes;
            arrChildren = arrChildrenHolder[0].childNodes;

            arrValues = parseValues(arrChildren);
            return arrValues;
        }

    }

    return arrValues;

}


function parseValues(arrXmlNodes) {
    var values = new Array();
    var i;
    Encoder.EncodeType = "entity";
    //x = xmlObj.getElementsByTagName("string");
    for (i = 0; i < arrXmlNodes.length; i++) {

        //val = x[i].childNodes[0].nodeValue;
        val = arrXmlNodes[i].xml;
        if (val.search("<News_title>") > -1) {
            valTitle = val;
            valTitle = valTitle.replace("<News_title>", "");
            valTitle = valTitle.replace("</News_title>", "");
            values["title"] = Encoder.htmlDecode(valTitle);
        }
        if (val.search("<News_description>") > -1) {
            valDescription = val;
            valDescription = valDescription.replace("<News_description>", "");
            valDescription = valDescription.replace("</News_description>", "");
            values["description"] = Encoder.htmlDecode(Encoder.htmlDecode(valDescription));
        }
        if (val.search("<News_image>") > -1) {
            valImage = val;
            valImage = valImage.replace("<News_image>", "");
            valImage = valImage.replace("</News_image>", "");
            values["image"] = valImage;
        }
        if (val.search("<News_thumbnail>") > -1) {
            valThumbnail = val;
            valThumbnail = valThumbnail.replace("<News_thumbnail>", "");
            valThumbnail = valThumbnail.replace("</News_thumbnail>", "");
            values["thumbnail"] = valThumbnail;
        }
        if (val.search("<News_content>") > -1) {
            valContent = val;
            valContent = valContent.replace("<News_content>", "");
            valContent = valContent.replace("</News_content>", "");
            values["content"] = Encoder.htmlDecode(valContent);
        }
        if (val.search("<News_Url>") > -1) {
            valContent = val;
            valContent = valContent.replace("<News_Url>", "");
            valContent = valContent.replace("</News_Url>", "");
            values["url"] = Encoder.htmlDecode(valContent);
        }

    }
    return values;
}


//==================== TIMER ===============================
//var t;

function timedCount() {
    testIsBroken();
    if (!bBroken && !bPaused) {
        getNextNews();
        $("#image img").hide();
        t = setTimeout("timedCount()", timeInterval);
        //$("#image img").fadeOut(1);
        fOut = setTimeout("timerFadeOut()", timeInterval - 200);
        fIn = setTimeout("timerFadeIn()", 1);
    } else {
        t = setTimeout("timedCount()", timeInterval);
    }

}

function testIsBroken() {

    //  Write debug to console

    if (arrID.length == undefined) {
        bBroken = true;
    } else {
        if (arrID.length > 0) {
            bBroken = false;
        } else {
            bBroken = true;
        }
    }

}

function timerFadeOut() {
    if (!bPaused) {
        $("#image img").fadeOut('normal');
    } else {
        fOut = setTimeout("timerFadeOut()", timeInterval - 200);
    }
}
function timerFadeIn() {
    if (!bPaused) {
        $("#image img").fadeIn('normal');
    } else {
        fIn = setTimeout("timerFadeIn()", 1);
    }
}

function doTimer(timeMls) {
    timeInterval = timeMls;

    fadeOutInterval = 1000;
    fadeInInterval = 1000;
    timedCount();

}

function gotoNewsOverall(id) {

    clearTimeout(t);
    clearTimeout(fOut);
    clearTimeout(fIn);
    gotoNews(id);
    doTimer(timeInterval);

}

function displayNextNews(arr) {
    document.getElementById("title").innerHTML = arr["title"];
    document.getElementById("description").innerHTML = arr["description"];
    document.getElementById("image").innerHTML = "<a href=\"" + arr["url"] + "\"><img style=\"position: absolute;\" onmouseover='javascript: bPaused=true;' onmouseout='javascript: bPaused=false;'   width=\"467\" height=\"260\" src=\"" + arr["image"] + "\" /></a>";


    //============change button==========
    //draw buttons
    if (document.getElementById("buttonView").innerHTML == "") {
        for (i = 0; i < arrID.length; i++) {

            if (i == 0) {
                //  Updated to include hyperlink system
                document.getElementById("buttonView").innerHTML += "<a href='javascript:void(0);' onmouseover='javascript: bPaused=true;' onmouseout='javascript: bPaused=false;' onclick='javascript: gotoNewsOverall(" + i + ");'><img id=\"imgView_" + i + "\"  src=\"buttons/feature_button_on.png \" style=\"border:none;text-decoration:none;\" /></a>";
            }
            else { document.getElementById("buttonView").innerHTML += "<a href='javascript:void(0);' onmouseover='javascript: bPaused=true;' onmouseout='javascript: bPaused=false;' onclick='javascript: gotoNewsOverall(" + i + ");'><img id=\"imgView_" + i + "\"  src=\"buttons/feature_button_off.png\" width=\"25px\" height=\"25px\" style=\"border:none;text-decoration:none;\" /></a>"; }

        }
    } else {
        //change button highlighted
        for (i = 0; i < arrID.length; i++) {

            document.getElementById("imgView_" + (i)).setAttribute("src", "buttons/feature_button_off.png");
            if (i == arrID.length - 1) {
                document.getElementById("imgView_" + (currentID - 1)).setAttribute("src", "buttons/feature_button_on.png");
            }
        }
    }

}
    
