function onclick_menupont(menu) {
    var linkName = "main.php?content=";
    if (menu == "hirek") document.location.href = linkName + "hirek";
    else if (menu == "kepek") document.location.href = linkName + "kepek";
    else if (menu == "koncert") document.location.href = linkName + "koncert";
    else if (menu == "bio") document.location.href = linkName + "bio";
    else if (menu == "diszko") document.location.href = linkName + "diszko";
    else if (menu == "vendeg") document.location.href = linkName + "vendeg";
    else if (menu == "zenekar") document.location.href = linkName + "zenekar";
    else if (menu == "forum") document.location.href = linkName + "forum";
    else if (menu == "linkek") document.location.href = linkName + "linkek";
    else if (menu == "letoltes") document.location.href = linkName + "letoltes";
    else alert("Hibás érték!!!");
}

function emailEllenorzes(data) {
    if ((data.indexOf("@") == -1) || (data.indexOf(".") == -1)) {
        alert("Hibás e-mail cím!");
        return false;
    }
    return true;
}

function createHTTPRequestObject(remoteFileName, readyFunctionName) {
    var requestObject = null;
    var readyFunction = readyFunctionName;
    var async = true;
    var stateChangeFunction = function (readyState) {};

    this.remoteFile = remoteFileName;

    if (arguments[2] != undefined) async = arguments[2];
    if (arguments[3] != undefined) stateChangeFunction = arguments[3];

    try	{
        requestObject = new XMLHttpRequest();
    }
    catch (error) {
        try {
            requestObject = new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch (error) {
            try {
                requestObject = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (error) {
                requestObject = null;
                return false;
            }
        }
    }

    this.dataSendByPost = function (data) {
        if ((requestObject == null) || ((requestObject.readyState != 0) && (requestObject.readyState != 4))) return false;
        requestObject.open("POST", this.remoteFile, async);
        requestObject.onreadystatechange = this.dataReceive;
        requestObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
        requestObject.send(data);

        if (async == false) {
            if (requestObject.responseXML != null) readyFunction(requestObject.responseXML);
            else readyFunction(requestObject.responseText);
        }

        return true;
    }

    this.dataSendByGet = function (data) {
        if ((requestObject == null) || ((requestObject.readyState != 0) && (requestObject.readyState != 4))) return false;
        if (data != "") getData = "?" + data;
        else getData = "";
        requestObject.open("GET", this.remoteFile + getData, async);
        requestObject.onreadystatechange = this.dataReceive;
        requestObject.send("");

        if (async == false) {
            if (requestObject.responseXML != null) readyFunction(requestObject.responseXML);
            else readyFunction(requestObject.responseText);
        }

        return true;
    }

    this.dataReceive = function () {
        stateChangeFunction(requestObject.readyState);
        if (requestObject.readyState == 4) {
            try {
                if (requestObject.status == 200) {
                    if (requestObject.responseXML != null) readyFunction(requestObject.responseXML);
                    else readyFunction(requestObject.responseText);
                } else if (requestObject.status != 0) {
                    return requestObject.status;
                }
            }
            catch (error) {
                return false;
            }
        } else {
        }

        return 0;
    }

    this.getReadyState = function () {
        if (requestObject == null) return false;
        else return requestObject.readyState;
    }

}


function simpleHTTPRequest() {

    function send(url, sendMethod, callback, data) {
        var req = new createHTTPRequestObject(url, callback);

        if (req != false) {
            if (sendMethod.toLowerCase() == "post") req.dataSendByPost(data);
            else if (sendMethod.toLowerCase() == "get") req.dataSendByGet(data);
        }
    }

    this.sendPOST = function(url, data, callback) {
        send(url, "POST", callback, data);
    }

    this.sendGET = function(url, callback, args) {
        send(url, "GET", callback, args);
    }
}


function XMLRPC_Client() {
    var requestObject = null;
    var requestXML = "";
    var responseXML = null;
    var responseValue = null;
    var receiveFunctionName = null;

    this.init = function (remoteFileName, receiveFunction, async) {
        requestObject = new createHTTPRequestObject(remoteFileName, receiveResponse, async); // async nem működik !!!
        receiveFunctionName = receiveFunction;
    }

    function dataTypeOf(variable) {
        var myType = typeof(variable);

        myType = myType.toLowerCase();
        switch (myType) {
            case "number":  if (Math.round(variable) == variable) myType = "i4";
                            else myType = "double";
                            break;
            case "object":  var con = variable.constructor;
                            if (con == Date) myType = "date";
                            else if (con == Array) myType = "array";
                            else myType = "struct";
                            break;
        }
        return myType;
    }

    function doValueXML(myType, data) {
        var xml = "<" + myType + ">" + data + "</" + myType + ">";

        return xml;
    }

    function doBooleanXML(data) {
        var value = (data==true)?1:0;
        var xml = "<boolean>" + value + "</boolean>";

        return xml;
    }

    function doDateXML(data) {
        var xml = "<dateTime.iso8601>";
        xml += dateToISO8601(data);
        xml += "</dateTime.iso8601>";

        return xml;
    }

    function doArrayXML(data) {
        var xml = "<array><data>\n";
        for (var i = 0; i < data.length; i++){
            xml += "<value>" + this.getParamXML(this.dataTypeOf(data[i]), data[i]) + "</value>\n";
        }
        xml += "</data></array>\n";

        return xml;
    }

    function doStructXML(data) {
        var xml = "<struct>\n";
        for (var i in data) {
            xml += "<member>\n";
            xml += "<name>" + i + "</name>\n";
            xml += "<value>" + getParamXML(dataTypeOf(data[i]), data[i]) + "</value>\n";
            xml += "</member>\n";
        }
        xml += "</struct>\n";

        return xml;
    }

    function dateToISO8601(date) {
        var year = new String(date.getYear());
        var month = leadingZero(new String(date.getMonth()));
        var day = leadingZero(new String(date.getDate()));
        var time = leadingZero(new String(date.getHours())) + ":" + leadingZero(new String(date.getMinutes())) + ":" + leadingZero(new String(date.getSeconds()));

        var converted = year + month + day + "T" + time;
        return converted;
    }

    function leadingZero(n) {
        if (n.length == 1) n = "0" + n;
        return n;
    }

    function getParamXML(myType, data) {
        var xml;

        switch (myType) {
            case "date":    xml = doDateXML(data);
                            break;
            case "array":   xml = doArrayXML(data);
                            break;
            case "struct":  xml = doStructXML(data);
                            break;
            case "boolean": xml = doBooleanXML(data);
                            break;
            default:    xml = doValueXML(myType, data);
                        break;
        }
        return xml;
    }

    this.createRequest = function (functionName) {
        var xml = "";

        xml += "<?xml version=\"1.0\" ?>\n";
        xml += "<methodCall>\n";
        xml += "<methodName>" + functionName + "</methodName>\n";
        xml += "<params>\n";

        for (var i = 1; i < arguments.length; i++){
            var data = arguments[i];

            xml += "<param>\n";
            xml += "<value>" + getParamXML(dataTypeOf(data), data) + "</value>\n";
            xml += "</param>\n";
        }

        xml += "</params>\n";
        xml += "</methodCall>";

        requestXML = xml;
    }

    this.functionCall = function () {
        if (requestObject == null) return false;
        requestObject.dataSendByPost(requestXML);
    }

    this.getRequestXML = function () {
        return requestXML;
    }

    this.getResponseXML = function () {
        return responseXML;
    }

    function getScalarValue(response) {
        var responseType = "";
        var responseValue = "";

        value = response;
        for (var i = 0; i < value.childNodes.length; i++) {
            if (value.childNodes[i].nodeType == 1) {
                responseType = value.childNodes[i].nodeName;
                responseValue = value.childNodes[i].firstChild.nodeValue;
            }
        }

        switch (responseType.toLowerCase()) {
            case "string":
                            retValue = new String(responseValue);
                            break;
            case "i4":
            case "int":
            case "double":
                            retValue = new Number(responseValue);
                            break;
            case "boolean":
                            retValue = new Boolean(responseValue?true:false);
                            break;
            case "datetime.iso8601":
                            retValue = new Date(responseValue.substr(0, 4), responseValue.substr(4, 2), responseValue.substr(6, 2), responseValue.substr(9, 2), responseValue.substr(12, 2), responseValue.substr(15, 2));
                            break;
            case "base64":
                            retValue = new String(window.atob(responseValue));
                            break;
        }

        return retValue;
    }

    function getArrayValue(response) {
        var data = response.getElementsByTagName("data");
        var responseArray = new Array();

        for (var i = 0; i < data[0].childNodes.length; i++) {
            if (data[0].childNodes[i].nodeType == 1) responseArray.push(getScalarValue(data[0].childNodes[i]));
        }

        return responseArray;
    }

    function getStructValue(response) {
        var member = response.getElementsByTagName("member");
        var responseStruct = new Object();
        var name = "";
        var value = null;

        for (var i = 0; i < member.length; i++) {
            name = member[i].getElementsByTagName("name")[0].childNodes[0].nodeValue;
            for (var j = 0; j < member[i].childNodes.length; j++) {
                if (member[i].childNodes[j].nodeName == "value") value = getScalarValue(member[i].childNodes[j]);
            }
            eval("responseStruct." + name + " = value;");
        }

        return responseStruct;
    }

    function getFaultValue(response) {
        var member = response.getElementsByTagName("struct");
        var responseFault = null;

        responseFault = getStructValue(member);
        return responseFault;
    }

    function receiveResponse(response) {
        var returnValue = null;

        if (response.getElementsByTagName("methodResponse").length == 0);
// Hibajelzés küldése !!!

        if (response.getElementsByTagName("array").length != 0) returnValue = getArrayValue(response);
        else if (response.getElementsByTagName("struct").length != 0) returnValue = getStructValue(response);
        else if (response.getElementsByTagName("fault").length != 0) returnValue = getFaultValue(response);
        else if (response.getElementsByTagName("params").length != 0) {
            paramNode = response.getElementsByTagName("param");
            for (var i = 0; i < paramNode[0].childNodes.length; i++)
                if (paramNode[0].childNodes[i].nodeType == 1) valueNode = paramNode[0].childNodes[i];
            returnValue = getScalarValue(valueNode);
        }

        responseXML = response;

        receiveFunctionName(returnValue);
    }
}

function pageParameters () {

    this.getPageScrollX = function () {

        var xScroll;

        if (self.pageYOffset) {
            if (self.pageXOffset != "undefined") xScroll = self.pageXOffset;
            else xScroll = 0;
        } else if ((document.documentElement) && (document.documentElement.scrollTop)) {
        // Explorer 6 Strict
            xScroll = document.documentElement.scrollLeft;
        } else if (document.body) {
        // all other Explorers
            xScroll = document.body.scrollLeft;
        }

        return xScroll;
    }

    this.getPageScrollY = function () {

        var yScroll;

        if (self.pageYOffset) {
            yScroll = self.pageYOffset;
        } else if ((document.documentElement) && (document.documentElement.scrollTop)) {
        // Explorer 6 Strict
            yScroll = document.documentElement.scrollTop;
        } else if (document.body) {
        // all other Explorers
            yScroll = document.body.scrollTop;
        }

        return yScroll;
    }

    this.getPageSizeX = function () {

        var xScroll;

        if ((window.innerHeight) && (window.scrollMaxY)) {
            xScroll = document.body.scrollWidth;
        } else if (document.body.scrollHeight > document.body.offsetHeight) {
        // all but Explorer Mac
            xScroll = document.body.scrollWidth;
        } else {
        // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
            xScroll = document.body.offsetWidth;
        }

        return xScroll;
    }

    this.getPageSizeY = function () {

        var yScroll;

        if ((window.innerHeight) && (window.scrollMaxY)) {
            yScroll = window.innerHeight + window.scrollMaxY;
        } else if (document.body.scrollHeight > document.body.offsetHeight) {
        // all but Explorer Mac
            yScroll = document.body.scrollHeight;
        } else {
        // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
            yScroll = document.body.offsetHeight;
        }

        return yScroll;
    }

    this.getWindowWidth = function () {
        var windowWidth;

        if (self.innerHeight) {
        // all except Explorer
            windowWidth = self.innerWidth;
        } else if ((document.documentElement) && (document.documentElement.clientHeight)) {
        // Explorer 6 Strict Mode
            windowWidth = document.documentElement.clientWidth;
        } else if (document.body) {
        // other Explorers
            windowWidth = document.body.clientWidth;
        }
/*
        // for small pages with total height less then height of the viewport
        if (yScroll < windowHeight) {
            pageHeight = windowHeight;
        } else {
            pageHeight = yScroll;
        }

        // for small pages with total width less then width of the viewport
        if (xScroll < windowWidth) {
            pageWidth = windowWidth;
        } else {
            pageWidth = xScroll;
        }
*/
        return windowWidth;
    }

    this.getWindowHeight = function () {
        var windowHeight;

        if (self.innerHeight) {
        // all except Explorer
            windowHeight = self.innerHeight;
        } else if ((document.documentElement) && (document.documentElement.clientHeight)) {
        // Explorer 6 Strict Mode
            windowHeight = document.documentElement.clientHeight;
        } else if (document.body) {
        // other Explorers
            windowHeight = document.body.clientHeight;
        }

        return windowHeight;
    }
}

var pageData = new pageParameters();
var bg = document.createElement("DIV");
bg.id = "pictureBgID";

var textDiv = document.createElement("DIV");
textDiv.style.position = "absolute";
textDiv.style.textAlign = "center";
textDiv.style.color = "white";

var waitImage = new Image();
waitImage.src = "./pic/loading.gif";
waitImage.style.position = "absolute";

waitImage.onload = function () {
    waitImage.style.top = pageData.getPageScrollY() + (Math.floor(pageData.getWindowHeight() - waitImage.height) / 2);
    waitImage.style.left = pageData.getPageScrollX() + (Math.floor(pageData.getWindowWidth() - waitImage.width) / 2);
}

var button = document.createElement("INPUT");
button.type = "button";
button.value = "Bezár";
button.style.position = "absolute";
button.style.border = "none";
button.style.backgroundColor = "darkgray";
button.style.fontWeight = 600;
button.style.width = 80;

var xmlrpc = new XMLRPC_Client();

var data = document.createElement("DIV");

function pictureOut(picturePath, text, page) {
    bg.style.width = pageData.getPageSizeX();
    bg.style.height = pageData.getPageSizeY();

    var componentParent = document.getElementsByTagName("BODY");
    componentParent[0].appendChild(bg);

    button.onclick = function () {
        delete image;
        bg.removeChild(image);
        bg.removeChild(button);
        if (page == "bandinfo") bg.removeChild(data);
        componentParent[0].removeChild(bg);
    }

    bg.style.display = "block";
    bg.appendChild(waitImage);

    var image = new Image();
    image.id = "imageID";

    image.onload = function () {
        var ratio = 1;
        if (page == "gallery") {
            if ((image.height > pageData.getWindowHeight() - 150) || (image.width > pageData.getWindowWidth())) {
                ratio = (pageData.getWindowHeight() - 150) / image.height;
                image.width = image.width * (ratio);
                image.height = pageData.getWindowHeight() - 150;
            }
        } else {
            if (pageData.getWindowHeight() < 600) {
                ratio = (pageData.getWindowHeight() - 10) / image.height;
                image.width = image.width * (ratio);
                image.height = pageData.getWindowHeight() - 10;
            }
        }

        image.style.top = pageData.getPageScrollY() + (Math.floor(pageData.getWindowHeight() - image.height) / 2);
        image.style.left = pageData.getPageScrollX() + (Math.floor(pageData.getWindowWidth() - image.width) / 2);

        if (page == "gallery") {
            textDiv.style.top = parseInt(image.style.top) + image.height + 10;
            textDiv.style.left = image.style.left;
            textDiv.style.width = image.width;
            textDiv.innerHTML = text;
        }

        if (page == "gallery") {
            button.style.top = parseInt(image.style.top) + image.height + 40;
            button.style.left = pageData.getPageScrollX() + (Math.floor(pageData.getWindowWidth() - parseInt(button.style.width)) / 2);
        } else if (page == "bandinfo") {
            button.style.top = parseInt(image.style.top) + 2;
            button.style.left = parseInt(image.style.left) + image.width - parseInt(button.style.width) + 2;

            data.style.position = "absolute";
            data.style.textAlign = "left";
            data.style.top = parseInt(image.style.top) + 115 * ratio;
            data.style.left = parseInt(image.style.left) + 20;
            data.style.width = 500 * ratio;
            data.style.height = image.height - parseInt(data.style.top) - 10;
        }

        bg.removeChild(waitImage);
        image.style.display = "block";

        if (page == "gallery") bg.appendChild(textDiv);
        bg.appendChild(button);

        return false;
    }

    bg.appendChild(image);
    image.src = picturePath;

}

function bandInfo(name) {
    var attributeNames = null;
    var attributeValues = null;

    function namesReady(response) {
        attributeNames = response;
    }

    function valuesReady(response) {
        attributeValues = response;

        html = "";
        for (var i = 0; i < attributeNames.length; i++) {
            html = html + "<span style='color: white;'><span style='font-style: italic; text-decoration: underline;'>" + attributeNames[i] + "</span>: " + attributeValues[i] + "</span><br>";
        }

        data.innerHTML = html;
        bg.appendChild(data);
    }

    data.setAttribute("class", "overflowBlock");

    pictureOut("./pic/" + name + ".jpg", "", "bandinfo");

    xmlrpc.init("memberdata.php", namesReady, false);
    xmlrpc.createRequest("getAttributeNames", name);
    xmlrpc.functionCall();

    xmlrpc.init("memberdata.php", valuesReady, false);
    xmlrpc.createRequest("getAttributeValues", name);
    xmlrpc.functionCall();
}


