// Cauldron Web Script
// Martin EX Hornak
// 22-10-2009


var xmlUrl = "scripts/cauldron.xml";
var xmlDoc;
var defaultActive = "news";
var globalID = "";
var thumbsFolder = "thumbs/";
var shadowBoxY = 600;


function initPage() {

    document.getElementById('dBase').style.display = 'none';
    document.getElementById('loading').style.display = 'block';

    if (msieOld || netscape) {
        document.getElementById('loading').style.display = 'block';
        document.getElementById('loading').innerHTML = "<p style=\"margin-top: 0px; color: white\"><br><br><br>Sorry, your browser is no longer supported...<br><b>Please, use updated version of browsers.</b></p>" +
        "<p><img src='images/layout/chrome_64.png' width='32px'><img src='images/layout/firefox_64.png' width='32px'><img src='images/layout/safari_64.png' width='32px'><img src='images/layout/ie_64.png' width='32px' alt='IE7+'><img src='images/layout/opera_64.png' width='32px' alt='Opera 9+'></p>";
        
        //window.location = "http://www.cauldron.sk";       
    } else {
        loadXMLDoc();
    }

    if (opera) document.getElementById('dCursor').style.display = '';

    document.getElementById('viewerContainer').style.height = shadowBoxY;
	
}

function core(id) {

    document.getElementById('title').className = "titleArea title_" + id;
    document.getElementById('logo').className = "logoSettings logo_" + id;
    document.getElementById('art').className = "art_" + id;

//    if (id == "links") {
//        document.getElementById('art').style.height = "380px";
//    } else {
//        document.getElementById('art').style.height = "480px";
//    }
    

    glowButton(id);
    getPageEnv();

    if (pageEnvStats == 0) {
        document.getElementById('contentOffset').style.height = "280px";
        document.getElementById('overview').className = "bold ov_" + id;
        globalID = id;
        stripArrayIndex = 0;
        projector("screenshots");
        eval((msie8 || msie7) ? readXMLGameContent(id, 'overview', "contentText") : readXML(id, 1, "contentText"));
        eval((msie8 || msie7) ? readXMLGameContent(id, 'info', "contentInfo") : readXML(id, 9, "contentInfo"));
        eval((msie8 || msie7) ? readXMLGameContent(id, 'download', "contentDownload") : readXML(id, 11, "contentDownload"));
    } else {
        document.getElementById('contentOffset').style.height = "200px";
        eval((msie8 || msie7) ? readXML(id, 'text', "contentText") : readXML(id, 1, "contentText"));
    }

	//hide jobs according jobs_config.js
	//alert(programmer);

	elem = document.getElementById("programmer");
	if (programmer && elem )
	{	elem.style.display="none";
	}
	elem = document.getElementById("graphic3d");
	if (graphic3d && elem )
	{	elem.style.display="none";
	}
	elem = document.getElementById("animator");
	if (animator && elem )
	{	elem.style.display="none";
	}

	selectDot(id);
    resize();
	
}

var pageEnvStats = 1;
// onClick
function setPageEnv(setStatus) {
    pageEnvStats = setStatus;
}

function getPageEnv() {
    if (pageEnvStats) {
        document.getElementById('contentOffset').style.display = 'block';
        document.getElementById('overview').style.display = 'none';
        document.getElementById('gallery').style.display = 'none';
    } else {
        document.getElementById('contentOffset').style.display = 'block';
        document.getElementById('overview').style.display = '';
        document.getElementById('gallery').style.display = 'block';
    }
}

function readXML(xmlTag, childID, place) {
    var element = document.getElementById(place);

    if (msie8 || msie7) {
        x = xmlDoc.getElementsByTagName(xmlTag)[0].getElementsByTagName(childID)[0].text;
    } else {
        x = xmlDoc.getElementsByTagName(xmlTag)[0].childNodes[childID].textContent;
    }

    //fill = xmlDoc.getElementsByTagName(xmlTag)[0].firstChild.data;
    //fill = xmlDoc.getElementsByTagName(xmlTag)[0].attributes.getNamedItem("id").nodeValue;

    element.innerHTML = x;
}

function readXMLGameContent(game, gameNode, place) {
    var element = document.getElementById(place);

    element.innerHTML = xmlDoc.getElementsByTagName(game)[0].getElementsByTagName(gameNode)[0].text;

}

function readXMLVideo(game, indexVideo) {

    if (msie8 || msie7) {
        return xmlDoc.getElementsByTagName(game)[0].getElementsByTagName("video")[0].getElementsByTagName("source")[indexVideo].text;
    } else {
        return xmlDoc.getElementsByTagName(game)[0].getElementsByTagName("video")[0].getElementsByTagName("source")[indexVideo].textContent;
    }
}

function getRequestObject() {

    var requestObject = null;
    if (typeof XMLHttpRequest != "undefined") requestObject = new XMLHttpRequest();

    if (!requestObject && typeof ActiveXObject != "undefined") {

        try { requestObject = new ActiveXObject("Msxml2.XMLHTTP"); }
        catch (error) {

            try { requestObject = new ActiveXObject("Microsoft.XMLHTTP"); }
            catch (error2) {

                try { requestObject = new ActiveXObject("Msxml2.XMLHTTP.4.0"); }
                catch (error3) { requestObject = null; }
            }
        }
    }

    if (!requestObject) alert("Can't create AJAX handler - maybe incompatible browser...");
    return requestObject;
}

//function loadXML() {

//    try {

//        xhttp = getRequestObject();
//        xhttp.open('GET', xmlUrl, false);
//        xhttp.onreadystatechange = function() {
//            if (xhttp.readyState == 4) {

//                // toto ti zbehne ked sa xml-ko nahra,
//                // takze sem mozes pripadne daco este vlozit ...
//            }
//        }
//        xhttp.send(null);
//        xmlDoc = xhttp.responseXML;

//        //document.getElementById('dBase').style.display = 'visible';
//        document.getElementById('loading').style.display = 'none';

//        core(defaultActive);   // Site Init
//        readXML("footer", 1, "contentFooter"); // read Footer Text

//    } catch (e) {
//        alert('Error during requesting data : ' + e.description + '\n Try refresh(F5).');
//    }
//}

function loadXMLDoc() {

    if (window.XMLHttpRequest) {
        xhttp = new window.XMLHttpRequest();
        xhttp.open("GET", xmlUrl, false);
        xhttp.send("");
        //return xhttp.responseXML;
        xmlDoc = xhttp.responseXML;
    }
    // IE
    else if (ActiveXObject("Microsoft.XMLDOM")) {
        xhttp = new ActiveXObject("Msxml2.XMLHTTP");
        xhttp.async = false;
        xhttp.loadXML(xmlUrl);
        //return xmlDoc;
        xmlDoc = xhttp;
    } else {
        alert("Error loading document");
        //return null;
    }

    //xmlDoc = xhttp.responseXML;

    document.getElementById('dBase').style.display = 'block';
    document.getElementById('loading').style.display = 'none';

    core(defaultActive);   // Site Init
    eval((msie8 || msie7) ? readXML("footer", 'text', "contentFooter") : readXML("footer", 1, "contentFooter"));  // read Footer Text
}

/* - - - menu buttons hover-selected - - - */
function glowButton(id) {

    // OFF
    document.getElementById(defaultActive).className = "btn_" + defaultActive;
    // ON
    document.getElementById(id).className = "btn_" + id + "_active";
    defaultActive = id;
}
// TODO : upratat do CSS
var divTag = document.createElement("div");
divTag.id = "selected";
divTag.innerHTML = "<img src=\"images/layout/btn_selected.gif\" border=\"0\">";
divTag.style.position = "absolute";
divTag.style.left = "-9px";
divTag.style.width = "32px";
function selectDot(id) {

    if (!pageEnvStats) {
        divTag.style.top = "-5px";
        divTag.style.left = "-9px";
    } else {
        divTag.style.top = "0px";
        divTag.style.left = "-6px";
    }

    document.getElementById(id).appendChild(divTag);
}

function navOver(slotID) {
    if (slotID != defaultActive && slotID != defaultTab) {
        document.getElementById(slotID).className = "cursorNav btn_" + slotID + "_active";
    }
}

function navOut(slotID) {
    if (slotID != defaultActive && slotID != defaultTab) {
        document.getElementById(slotID).className = "cursorNav btn_" + slotID;
    }
}

/* - - - GALLERY PROjECTOR - - - */
var defaultTab = "screenshots";
function projector(tabID) {
    //document.getElementById('strip_' + defaultTab).style.display = 'none';
    //document.getElementById('strip_' + id).style.display = 'block';

    document.getElementById(defaultTab).className = 'btn_' + defaultTab;
    document.getElementById(tabID).className = 'btn_' + tabID + '_active';

    switch (tabID) {
        case 'screenshots':
            document.getElementById('tab').style.left = '16px';
            try { fillStripArray(globalID, tabID, 'img'); } catch (e) { };
            stripArrayIndex = 0;
            initSlots(tabID);
            break;

        case 'artworks':
            document.getElementById('tab').style.left = '144px';
            try { fillStripArray(globalID, tabID, 'img'); } catch (e) { };
            stripArrayIndex = 0;
            initSlots(tabID);
            break;

        case 'video':
            document.getElementById('tab').style.left = '272px';
            try { fillStripArray(globalID, tabID, 'source'); } catch (e) { };
            stripArrayIndex = 0;
            initSlots(tabID);
            break;
    }

    defaultTab = tabID;
}

var stripArray = new Array();
function fillStripArray(game, source, xmlTagName) {
    stripArray = [];
    var xmlNode = xmlDoc.getElementsByTagName(game)[0].getElementsByTagName(source)[0];
    var listLength = (msie8 || msie7 || safari3) ? xmlNode.childNodes.length : xmlNode.childElementCount;

    var i = 0;
    try {
        while (i <= listLength) {
            stripArray[i] = xmlNode.getElementsByTagName(xmlTagName)[i].attributes.getNamedItem('src').nodeValue;
            i++;
        }
    } catch (e) {
        //...
    }
}

function initSlots(tab) {

    var counter = 0;
    while (counter < 4) {
        if (stripArrayIndex < stripArray.length) {
            document.getElementById('slot' + counter);
            document.getElementById('slot' + counter).className = "slot cursorNav";
            document.getElementById('slot' + counter).style.border = "1px solid #505050";
            if (tab != "video") {
                document.getElementById('slot' + counter).innerHTML = "<img src=\"images/pictures/" + thumbsFolder + stripArray[stripArrayIndex] + "\" border=\"0\" onclick=\"showEXViewer('" + stripArray[stripArrayIndex] + "', '" + stripArrayIndex + "', '" + tab + "');\" width=\"164px\" height=\"120px\">";
            } else {
                document.getElementById('slot' + counter).innerHTML = "<img src=\"" + stripArray[stripArrayIndex] + "\" border=\"0\" onclick=\"showEXViewer('" + stripArray[stripArrayIndex] + "', '" + stripArrayIndex + "', '" + tab + "');\" width=\"164px\" height=\"120px\">";
            }

        } else {
            document.getElementById('slot' + counter);
            document.getElementById('slot' + counter).className = "slot";
            document.getElementById('slot' + counter).style.border = "1px solid #202020";
            document.getElementById('slot' + counter).innerHTML = "<img src=\"images/layout/bcg_gallery_empty.gif\">";
        }
        stripArrayIndex++;
        counter++;
    }

    // arrows hide/show
    if (stripArrayIndex <= 4) {
        document.getElementById('navLeft').style.visibility = 'hidden';
    } else {
        document.getElementById('navLeft').style.visibility = 'visible';
    }

    if (stripArrayIndex >= stripArray.length) {
        document.getElementById('navRight').style.visibility = 'hidden';
    } else {
        document.getElementById('navRight').style.visibility = 'visible';
    }
    //document.getElementById('footer').innerHTML = index; // DEBUG iNFO
}

var stripArrayIndex = 0;

function stripRight() {
    if (stripArrayIndex < stripArray.length) {
        initSlots(defaultTab);
    }
}

function stripLeft() {
    if (stripArrayIndex > 4) {
        stripArrayIndex -= 8;
        initSlots(defaultTab);
    }
}

/* - - - EX Viewer - - - */

var shadowBox;
var viewerStripArrayPosition;
function showEXViewer(imageName, indexStrip, tab) {

    getCanvasTopOffset();
    shadowBox = document.getElementById('shadowBox');
    var header = document.getElementById('viewerHeader');
    var container = document.getElementById('viewerContainer');
    var containerVideo = document.getElementById('viewerContainerVideo');

    shadowBox.className = "shadowBoxPanel";
    shadowBox.style.display = "block";
    shadowBox.style.position = "absolute";
    shadowBox.style.left = "0px";
    shadowBox.style.top = "0px";
    shadowBox.style.zIndex = "2000";
    shadowBox.style.textAlign = "center";
    resize();
    header.innerHTML = "<img src=\"images/layout/title_" + defaultActive + ".gif\">";

    if (tab != "video") {
        container.style.display = '';
        containerVideo.style.display = 'none';
        getBigImage(indexStrip);
        //document.getElementById('viewImage').style.left = (document.getElementById('dBase').offsetWidth / 2) + "px";
        shadowBox.removeAttribute('onclick');
        shadowBox.removeAttribute('onmousemove');
        //shadowBox.setAttribute('onmousemove', 'changeBigImageCursor()');
        //shadowBox.setAttribute('onclick', 'changeBigImage()');
        //container.setAttribute("onmousemove", "changeBigImageCursor();");
        //container.setAttribute("onclick", "changeBigImage();");

    } else {
        container.style.display = 'none';
        containerVideo.style.display = '';
        containerVideo.style.height = 100 + "%";
        containerVideo.innerHTML = readXMLVideo(globalID, indexStrip);

        //container.removeAttribute('onmousemove');
        //container.removeAttribute('onclick');
        //shadowBox.removeAttribute('onclick');
        shadowBox.setAttribute("onclick", "closeShadowBox();");

        if (opera) {
            document.getElementById('dCursor').className = 'viewerCursorCloseOpera';
            shadowBox.setAttribute('onmousemove', 'changeBigImageCursorOpera()');
        } else {
            shadowBox.className = eval((msie8 || msie7)) ? "shadowBoxPanel viewerCursorCloseIco" : "shadowBoxPanel viewerCursorClose";
        }
        closeViewer = true;
    }
    viewerStripArrayPosition = indexStrip;
}

function getCanvasTopOffset() {
    var temp = getScrollXY();
    setScrollY(0);

    var scrollPos = getScrollXY();
    var offsetCanvas = 34;

    document.getElementById('viewerCanvas').style.top = (scrollPos[1] + offsetCanvas) + "px";
}

function setScrollY(y) {
    window.scrollTo(0, y);
}

function getBigImage(bigImageIndex) {
    document.getElementById('bigImage').src = "images/pictures/" + stripArray[bigImageIndex];
}

function getImgSize() {
    var pic = document.getElementById('bigImage');
    var shadowBoxYTemp = pic.offsetHeight;
    //var w = pic.offsetWidth;

    if (shadowBoxY < shadowBoxYTemp || shadowBoxY > shadowBoxYTemp) {
        shadowBoxY = shadowBoxYTemp;
    }
    
    document.getElementById('viewerContainer').style.height = shadowBoxY + "px";
    
    //alert('The image size is ' + w + '*' + h);
}

function nextImage() {
    if (viewerStripArrayPosition < stripArray.length - 1) {
        viewerStripArrayPosition++;
    } else {
        viewerStripArrayPosition = 0;
    }
    getCanvasTopOffset();
    getBigImage(viewerStripArrayPosition);
    
}

function prevImage() {
    if (viewerStripArrayPosition > 0) {
        viewerStripArrayPosition--;
    } else {
        viewerStripArrayPosition = stripArray.length - 1;
    }
    getCanvasTopOffset();
    getBigImage(viewerStripArrayPosition);
}

/* - - - Big Image Navigation - - - */
var closeOffset = 80;
var screenCenter;
var closeViewer = false;
function changeBigImage() {

    if (screenCenter < mousePosX) {
        nextImage();
    } else {
        prevImage();
    }

    if (closeViewer) {
        closeShadowBox();
    }
}

function changeBigImageCursorOpera() {
    document.getElementById('dCursor').style.top = (mousePosY + 16) + "px";
    document.getElementById('dCursor').style.left = (mousePosX - 16) + "px";
}

function changeBigImageCursor() {
    var screenSize = getScreenSize();
    screenCenter = screenSize[0] / 2;

    closeViewer = false;

    if (screenCenter < mousePosX) {
        if (opera) {
            document.getElementById('dCursor').className = 'viewerCursorNextOpera';
            document.getElementById('dCursor').style.top = (mousePosY + 16) + "px";
            document.getElementById('dCursor').style.left = (mousePosX - 16) + "px";
        } else {
            document.getElementById('viewerContainer').className = eval((msie8 || msie7)) ? "bcgBLACK viewerCursorNextIco" : "bcgBLACK viewerCursorNext";
        }
    } else {
        if (opera) {
            document.getElementById('dCursor').className = 'viewerCursorPrevOpera';
            document.getElementById('dCursor').style.top = (mousePosY + 16) + "px";
            document.getElementById('dCursor').style.left = (mousePosX - 16) + "px";
        } else {
            document.getElementById('viewerContainer').className = eval((msie8 || msie7)) ? "bcgBLACK viewerCursorPrevIco" : "bcgBLACK viewerCursorPrev";
        }
    }

    if ((screenCenter - closeOffset) < mousePosX && (screenCenter + closeOffset) > mousePosX) {
        if (opera) {
            document.getElementById('dCursor').className = 'viewerCursorCloseOpera';
            document.getElementById('dCursor').style.top = (mousePosY + 16) + "px";
            document.getElementById('dCursor').style.left = (mousePosX - 16) + "px";
        } else {
            document.getElementById('viewerContainer').className = eval((msie8 || msie7)) ? "bcgBLACK viewerCursorCloseIco" : "bcgBLACK viewerCursorClose";
        }
        closeViewer = true;
    }
}


function resize() {
    var dBase = document.getElementById('dBase');

    if (shadowBox) {
        shadowBox.style.width = dBase.offsetWidth + "px";
        shadowBox.style.height = dBase.offsetHeight + "px";
    }

    if (dBase.offsetHeight < getScreenSize()[1]) {
        document.getElementById('dynamicFooter').style.display = '';
        document.getElementById('dynamicFooter').style.height = (getScreenSize()[1] - dBase.offsetHeight) + "px";
        if (shadowBox) shadowBox.style.height = ((getScreenSize()[1] - dBase.offsetHeight) + dBase.offsetHeight) + "px";
    } else {
        document.getElementById('dynamicFooter').style.display = 'none';
    }
}

function closeShadowBox() {
    if (closeViewer) {

        setScrollY(5000);

        document.getElementById('shadowBox').style.display = 'none';
    }
}

var mousePosX, mousePosY;
document.onmousemove = function(evt) {
    var mousePos = (!evt) ? window.event : evt;

    if (msie8 || msie7) {
        mousePosX = mousePos.clientX;
        mousePosY = mousePos.clientY;
    } else {
        mousePosX = mousePos.pageX;
        mousePosY = mousePos.pageY;
    }
}


/* - - - o - - - */

function getScreenSize() {
    var width = 0, height = 0;
    if (typeof (window.innerWidth) == 'number') {
        //Non-IE
        width = window.innerWidth;
        height = window.innerHeight;
    } else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
        //IE 6+ in 'standards compliant mode'
        width = document.documentElement.clientWidth;
        height = document.documentElement.clientHeight;
    } else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
        //IE 4 compatible
        width = document.body.clientWidth;
        height = document.body.clientHeight;
    }

    return [width, height];
}

function getScrollXY() {

    var scrOfX = 0, scrOfY = 0;

    if (typeof (window.pageYOffset) == 'number') {
        //Netscape compliant
        scrOfY = window.pageYOffset;
        scrOfX = window.pageXOffset;
    } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
        //DOM compliant
        scrOfY = document.body.scrollTop;
        scrOfX = document.body.scrollLeft;
    } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
        //IE6 standards compliant mode
        scrOfY = document.documentElement.scrollTop;
        scrOfX = document.documentElement.scrollLeft;
    }
    return [scrOfX, scrOfY];
}

//function setScrollTop(y) {
//    if (typeof (window.pageYOffset) == 'number') {
//        //Netscape compliant
//        window.pageYOffset = y;
//        //scrOfX = window.pageXOffset;
//    } else if (document.body && (document.body.scrollLeft || document.body.scrollTop)) {
//        //DOM compliant
//        document.body.scrollTop = y;
//        //scrOfX = document.body.scrollLeft;
//    } else if (document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
//        //IE6 standards compliant mode
//        document.documentElement.scrollTop = y;
//        //scrOfX = document.documentElement.scrollLeft;
//    }
//}

function toggle_readmore()
{
	var element = document.getElementById('read_more')
	element.style.display = "block";
	document.getElementById('read_more_button').style.display = "none";
}
