/**
 * Change the name of the class used for an element
 * @param element element for which class is changed
 * @param className new class name
 */
function changeClass(element, className) {
    element.className = className;
}

/**
 * Submit login data when user press enter
 * @param myfield
 * @param e
 */
function submitEnter(myfield, e)
{
    var keycode;
    if (window.event) {
        keycode = window.event.keyCode;
    } else if (e) {
        keycode = e.which;
    } else return true;

    if (keycode == 13) {
        document.getElementById(myfield).click();
        return false;
    } else return true;
}

/**
 * This function forwards user to the correct URL for selecetd open id
 */
function addOpenIdValue(text) {
    var openid = $("#openid_identifier").attr("value");
    if (openid.indexOf("http") == -1) {
        alert(text);
        return;
    } else {
        while (openid.indexOf("/") != -1) {
            openid = openid.replace("/", "@");
        }

        window.open(CONTEXT_PATH + "/openIdAuthentication?openid=" + openid, "OpenIdWindow", "status=1,scrollbars=1,width=700,height=600,resizable=1");
    }
}

/**
 * Add zoom feature to games images
 */
function enhanceGameImages() {
    $(".gameDetailsImgDiv").mouseenter(function() {
        var zoomDivId = "imageZoomDiv";
        var currentImage = $(this);
        var offset = currentImage.offset();

        $(".MainDiv").append('<div id="' + zoomDivId + '">' + currentImage.html() + '</div>');

        var zoomDiv = $("#" + zoomDivId);
        zoomDiv.css("width", "216px");
        zoomDiv.css("height", "306px");
        zoomDiv.css("top", offset.top - 30);
        zoomDiv.css("left", offset.left - 30);

        var zoomImage = $(".gameDetailsImg", zoomDiv);
        zoomImage.css("width", "216px");
        zoomImage.css("height", "306px");

        zoomDiv.fadeIn("slow");

        zoomDiv.mouseleave(function() {
            $(this).remove();
        });
    });
}

/**
 * Add on mouse over functionality to voting stars. On mouse over stars before it get filled.
 */
function enhanceVotingStars() {
    $(".gameDetailsVoteStar").mouseenter(function() {
        changeImages($(this), "images/star.png");
    }).mouseleave(function() {
        changeImages($(this), "images/emptyStar.png");
    });
}

/**
 * This function changes the image for all star controls before the given one, with the new value
 * @param control star control
 * @param newImage new image
 */
function changeImages(control, newImage) {
    var fullId = control.attr("id");
    fullId = fullId.replace(/:/g, "\\:");
    var index = fullId.substring(fullId.length - 1);
    var partialId = fullId.substring(0, fullId.length - 1);

    for (var i = 1; i <= index; i++) {
        $("#" + partialId + i).attr("src", newImage);
    }
}

/**
 * Add zoom feature to demoGame images
 */
function enhanceDemoGame() {
    $("#fileImageDiv").mouseenter(function() {

        var zoomDivId = "imageZoomDiv";
        var currentImage = $(this);
        var offset = currentImage.offset();

        if (currentImage.html().indexOf("empty.jpg") < 0) {
            $(".mainTableDiv").append('<div id="' + zoomDivId + '">' + currentImage.html() + '</div>');

            var zoomDiv = $("#" + zoomDivId);
            zoomDiv.css("width", "216px");
            zoomDiv.css("height", "306px");
            zoomDiv.css("top", offset.top - 50);
            zoomDiv.css("left", offset.left - 50);

            var zoomImage = $(".fileImageInt", zoomDiv);
            zoomImage.css("width", "216px");
            zoomImage.css("height", "306px");

            zoomDiv.fadeIn("slow");

            zoomDiv.mouseleave(function() {
                $(this).remove();
            });
        }
    });
}

function changeSortImage() {
    var arrowImg = document.createElement('img');
    arrowImg.className = "sortImage";

    $("th.tdheader").each(function() {
        if ($(this).text().indexOf("\u2191") > 0) {
            arrowImg.src = "images/ascendingArrow.png";
            $(this).html($(this).html().replace("\u2191", ""));
            $(this).append(arrowImg);
        }
        else if ($(this).text().indexOf("\u2193") > 0) {
            arrowImg.src = "images/descendingArrow.png";
            $(this).html($(this).html().replace("\u2193", ""));
            $(this).append(arrowImg);
        }
    });
}

function openAppletClient(params) {
    href = 'appletClient.faces';
    if (params != null && params.length > 0) {
        href = href + '?' + params
    }
    window.open(href, '_blank', 'height=450, width=350, scrollbars=no, toolbar=no, status=no, copyhistory=no, menubar=no, directories=no, resizable=no, location=no');
    return false;
}

function agreeClass() {
    var elem = $("#uploadBtn");
    if (elem.attr("disabled")) {
        elem.removeAttr("disabled");
        elem.attr("class", "filterbutton2");
    } else {
        elem.attr("disabled", "disabled");
        elem.attr("class", "filterbutton2Disable");
    }
}

function enable() {
    if ($("#userInput").attr("disabled") != null) {
        $("#userInput").removeAttr("disabled");
        $("#passwordInput").removeAttr("disabled");
        $("#rememberMeChk").removeAttr("disabled");
    }
}

function setOpenIdValue() {
    $("#passwordInput").css('color', '#D0ECC4');
    $("#userInput").attr("value", " ");
    $("#passwordInput").attr("value", " ");
}

function linkClick(buttonId, actionValue) {
    enable();
    setOpenIdValue();
    $(buttonId).action = actionValue;
}

function openIdLogin() {
    $("#jollyxAccountId").click();
    $("#__idselector_button").attr("disabled", "disabled");
    if ($("#userInput").attr("value") == " ") {
        $("#userInput").removeAttr("value");
        $("#passwordInput").removeAttr("value");
        $("#passwordInput").css('color', '#17360C');
    }
}

function jollyxAccountLogin() {
    loginMd = 0;
    enable();
    $("#openid_identifier").attr("disabled", "disabled");
    $("#__idselector_button").attr("disabled", "disabled");
}

function openIdAccountLogin() {
    loginMd = 1;
    $("#userInput").attr("disabled", "disabled");
    $("#passwordInput").attr("disabled", "disabled");
    $("#rememberMeChk").attr("disabled", "disabled");
    $("#openid_identifier").removeAttr("disabled");
    $("#__idselector_button").removeAttr("disabled");
}

function loginAction(text) {
    if (loginMd == "1") {
        enable();
        setOpenIdValue();
        addOpenIdValue(text);
    }
}